the theme color for the dashboard was incorrect, so that has been
updated and the responsive sticky for the text formatter in the page
editor went funky with posts that had a lot of text so that's been
adjusted so it behaves as it should when it has to resize and stick
page preview from editor was not working because it was not passing the
page uuid correctly so it can be identified and rendered unto the theme
viewer.
small bug where links in the archive and tag templates where being
rendered as url encoded strings, so that needed to be decoded so it
displays as normal text
there was a minor bug that was preventing uploaded files to be removed
from the editor page even thought the remove button was pressed.
found and fixed
the theme controller was grabbing the index by its page name, which was
bad because that might change. that was replaced with a getById function
since the index id will always be 0 since it's the first page. this is a
seperate function from getByUuid which is a unique indentifier for each
page which was being used interchangably before the fix. all of those
references have been cleaned up to reference which type of id is needed
there was also a bug that happened on rendering when there were special
characters in the title. this was solved by saving the title as a
urlencoded string and then just decodded when it was needed for display
on the front end
the module used to sanitize html is no longer maintained, so updated
that methodology to use symfony's very sexy sanitizer
checked to make sure render on save was working as well.
app was erroring out because classes in the upkeep directory could not
be found due to a case mix up where 'Upkeep' and 'UpKeep' were both
being used causing a path error because the actual directory is 'Upkeep.'
Made a md file for the contribution guide to give guidance to people who
want to help with the project.
It's a living document, so changes will be made as needed.
updated the README to detail what the project is and its goals. it's the
first draft so it will change over time, but it provides a bit more
insight into what Fipamo is
the first part of the setting API has been restored, with the methods
sync, publish and nav-sync restored to working order under the new API
pattern. Documentation for the API will be completed after the upgrade
is complete.
There was also a script error when trying to edit a page from the link
menu on the dashboard, so that has been fixed as well
there was an error when reordering menu items due to a missing variable
to a service class, so that was patched
also removed unecessary code from api url definitions and settings
service class
page tasks have been changed to accept JSON data for the sake of
consistency across the API. The only API method that will accept form
data is file uploads.
Also restored the post, put and delete pattern for better organization
and clarity describing what each page method is for
API accessible tasks (create, update, delete) have been updated to the
new format.
The controller needs to be cleaned up because it's a bit heavy and the
new API flow still needs to be properly documented, but it's a good
start
API Security has been reworked to check if request is secure, verifies
the API token created on site setup given to every member, and then
confirms the system is accepting API requests by way of the API enabled
toggle in settings
API usage is now only meant for backend use, so this needs to be noted
in the docs
removed all remaining API requests from the front end and removed the
FipamoAdminAPI js file, changing it to ContentRequest as it now handles
posting data to the system directly, authenticating it self by checking
the embedded CSRF token that regulary rotates
also renamed MaintenanceManager to Maintenance request and moved it to
the same dir as ContentRequest as they are both libraries that connect
to the backend
The first part of improving the API is removing all admin functions from
the front end so those no admin methods will be available client side.
The urls in the FipamoAdmin js file have been changed to post directly to the
system and they are handled from there. To account for this change
controller routes for every standard method have been created for better
organization and readability.
The FipamoAdmin js file will be integrated with the rest of the front
end code and will not be seperate library
the current restore process only restored images and not the additional
file types that are allowed, so that has been added
also tweaked the reset request to include the correct token so the
request does not fail API authorization
the current file backup included images, but the additional asset types
such as sound files, video and docs were not being added if they
existed, so those have been added.
also tweaked the front end script to include the correct token for the
API so the backup request doesn't fail the auth check
when creating new ui elements for uploaded files, the 'data-source'
attribute was being created to store the upload path for the file which
is used to save that info in the page doc.
that attribute should be 'data-id' as that is what sortablejs looks for
when sorting element data into arrays
regrouped api calls for better organization and to add a bit more
security. it now checks to make sure the incoming token matches the
current session to authorize requests
content restore was already enabled, so the last step was completing
file restorartion if there was a file archive uploaded
now that this has been added, full site restore from backup archives now
works.
Patch for a bug that was deleteting the subdirectories of the theme css
folder holding additional theme assets when being published and tested in the theme kit.
also removed an unneccessary helper script and organized directory
actions in their own helper file to keep it all tidy
added a post install script to the composer.json file to automate the
creation of the .env file which hold app specific configs
also added a helper function to create new keys in the future
theme controller class was using hard coded uuids to find and display
page data, so that's been tweaked so that is no longer needed and finds
what it needs based on what time of view is being requested
also connected it the the preview 👁️ button in the page edit screen so
page layouts based on the current theme can be seen before they are
published
data sorting needed a new variable to differentiate between index page
rendering and standard page rendering, so that was added to the return
as well as updating the render script to include the variable that
wasn't being added for tags
also updated the git ignore file to ignore global images that are not
used by the base system. the script theme folder needs to be ignore as
well as that is going to updated by the theme itself for front end
coding and not used by the system
when pages where being unpinned from the main menu, there was an error
resulting from a missing method reference in the class
also rearranged some path references in the asset service class for the
sake of better organization
When testing themes, the script wasn't moving all assets that were in
subdirectories of the theme css folder, so that's been fixed so it moves
everything when testing a theme and rendering the site
there was also an issue with saving settings options because the script
was referencing email data that was no longer being provided from the
front end, so it was erroring out trying to save it. those references
have been removed so it's smooth sailing
in the restore init process, there is a space that restores assets from
a previous install but grabbing them directly from the site and saving
them to the install.
a check was added so this script only runs if that url has been set in
the init restore form
there were places in the codebase where path to fipamo specific paths
and file were hard-coded into the system, reducing flexibility and
customozation for people that want to define their own path.
those hard-coded elements have been removed and replaced with references
to the env file so those paths can be changed to whatever is needed
the .env.example file has also been updated to contain default paths for
easier installation.
Removed email settings from settings.json and moved them to the .env
file to use Laravel's mailer functionality.
references to the old mailer has been removed from settings.json,
data sorting class and the settings template file
the front end script has also been updated to accomodate different
message types, starting with a test message so members can make sure the
settings defined in the .env are working
when sorting tags on a fresh install, a fatal error happens when the tag
array is empty because it looks for a var that doesn't exist yet. that's
been patched
the settings json file was still referencing the old version of the base
theme, so it was crashing because it doesn't exist anymore. updating it
to the new theme name clears this error
the settings page was failing to load because it was referencing a
parameter in the mail config data array that did not exist.
that's been fixed so the page loads properly
the init process was erroring out because instead of re-running the
script to make a valid token, it was not capturing the correct error, so
it would just fail
also the folder for saving config files needed to be created to save
them, so that addition was made as well
there was a fatal error in the init process because it was looking for a
class that had been moved but the reference had not been updated, which
is now corrected
uploading new member avatar and background images weren't uploading to
the correct location and the approprate files weren't being updated, so
that was been fixed.
the folks template in the init directory also needed be updated because
the system was looking for 'avatar' instead of 'avi' which was resulting
in some mismatch calls that were resulting in not found errors. the
variable is now 'avatar' everywhere for the sake of consistency.
found a minor bug that was preventing file uploads, so that was fixed.
also commented out some buttons that are for features that have not been
added just yet
ripped out all of the old responsive styles from the setting layou and
plugged in the new format.
still needs some polish but the new structure is in place, so progress
will be easier
some script got removed during the restruction that included the js
handler for the mobile menu, so that was replaced with a css toggle to
keep it simple
the themes tab has been brought into alignment with the new design, so
the only thing that remains is redoing responsive styles for the
settings page
whew
redid the css for the member profile tab under settings.
responsive style still need to be addressed, but that will happen after
all tabs have been converted to the new layout
setting sync is working but member data was not being updated in the
folks file or in the current active session, so that's been addressed
still need to turn on avatar updating as well, but that is tied to
updating the settings page, so that will be handled when image uploads
for that area are reactivated
a class for members was needed for long term handling of member
functions like login, update, status checking, etc so that class was
created and the AuthService class was removed as it was redundant and
it's functionaity moved to the member class
service classes are beginning to swell as there functionality is being
fleshed out, so a new organizational structure was needed to make sure
class sizes don't become too large and to increase site managability and
legibilty as more features get added and the code base grows.
data is for retrieving, managing site information, assets interact with external files
and upkeep is for maintenance.
some additional tweaks were also made to the options menu template to
prep it for it's transition to a toolbar component
logo images did not have an alt tag, so they've been added
buttons on the options menu were generic, so an interactive description
was added through the use of aria labels
cleaned up the controller directory and renamed files to more approriate
names.
made the appropriate changes to RouteController as well as tweaking the
routing so it's simpler and easier to follow
had some comments referencng a the idea for a refactor of routing, but
decided to stick with RouteController for now becuase of the
flexibility.
if improvements are to be made, they will be made in that class.
added some labels to login and set up forms for better accesibility and
clarity about what info is being requested.
found a bug in setting where the site would error out if it can't find
the correct config files instead of going to set up, so when config
files aren't present, it loads template files to continue to process.
still thinking about a better fix for this
also discovered that the init files needed for a fresh install had been
removed, so those are back in place
main navigation had buttons nested inside of href tags to house previous
font icons that were removed, so the nesting is no longer needed and it
could introduce accessibility propblems, so it needed to be cleande up
now they are hrefs styled as the previous buttons so there is no visual
change in the UI
the route to show menu order was erroring because it was calling a
misspelled method, so that was fixed
also added some notes to improve the StartController
html page rendering works, so the next step was to get dynamic page
rendering up and running, meaning instead of pages being exported to
html, they are instead rendered on the fly when the corresponding URL is
hit.
the StartController that handles page routing needs to be organized a
bit better as there is some confusion between index and regular page
files so it's clear where requests are going and what is the expected
response
routing needed more nuance than what was possible in the web routing
controller, so a new RouteContoller was created to identify requests and
then sending them to the correct controller to get the appropriatie page
this was necessary because routing the previous was erroring out because
when the system was looking for pages to display with dynamic page
creation it would get confused with prexisting routes and choose to
display whatever the Start Controller was capturing, ignoring routes
defined in the web controller.
but that's been cleaned up without having to re-write everything and
continues to use existing controllers
a basic preview engine has been added to ease the process of editing
pages. currently it previews all basic templates and custom created
pages
this is will replace the external fipamo theme kit tool, which will be
archived
conversion of markdown files to html works fine, but the coresponding
css, js and image assets were not being moved, so the class responsible
for moving them was edited so theme assets are moved to their
appropriate directories when the site is published.
also made some css and image edits, and removed a legacy css files that
were no longer in use
the default theme included with fipamo was a bit janky, so that's been
cleaned to bring it more inline with current accessiblility standards,
an updated mobile friendly menu, updated the logo and plugged in the
fresh colors.
the layout is still a bit boring but the main purpose of the default is
to show how templating works, so it needs to be kept as simple as
possible
but it still has some room for making it pop a bit more.
the back up process did not include saving document and video assets so
that needed to be updated to save all of those references along with
images
once that was done, the restore process had to be updated to look for
docs and videos and create the corresponding directories to move them
too
the script responsible for moving those assets was also streamlined so a
seperate process was not needed for each asset type.
the last update date in the settings template was displaying
incorrectly, so that was fixed as well.
rather than make a massive downloadable archive file for ever image on
the site (which still may happen), a method has been added to make
copies of imags from an external site and store them on the fresh
install based on the image list saved in the created back up file
it's clean but some additional error checking is needed so the process
does not crash out when a file can't be located and upon completion the
user can be notified of what images did not make it over in the process
laraval had a milestone update to version 11, so the codebase needed an
updgrade.
there was one package that wasn't needed that was blocking the upgrade
because it was attached to a hard coded dependency in an older version
of laravel so it was removed.
this changed required an edit of some template files, so those changes
were made as well
ported over the backup functionality from the old build to the new while
making few tweaks
instead of packaging up all files in the site to create massive zip
files, now a list of files is created for the user and blog directories
that the system will use to download and put them in the appropriate
directories, resulting in a such slimmer backup file.
archiving images my be added at a later date, but will be kept seperate
from the current back up process
decided to keep the sorting service class as is and remix how it works to
return data objects rather than just settings information to render
pages.
the overall size of the class is still large but now there are
some opportunites to move around some methodolgy to reduce it.
also made the necessary changes in the render service class and the
theme controller to use the new methodology
moved methods of string service to helper function and got rid of the
string service class
still messing around with the sorter helper to see how dependecies work.
sorting as a helper may be a bit too complex for what help functions are
supposed to be
some serivce classes are getting to heavy, so some functionality will be
offloaded to custom helper function for better manageability and
readability.
a couple of place holders have been added to demonstrate how helpers
will be organized
improperly used role attributes have been removed from navigation edit
template
there was also a duplicate class attribute error in notifications that
has been fixed
the role attribute is being used incorrectly through out the site, which
is bad for screen reader, so they need to be removed and replaced with
the class attribute
the page editor was the biggest culprit, so that one has been converted
first
there were some random logos in the global images folder, so that was
cleaned up and replaced with primary and secondary options according to
the current color palette for the sake of flexibility
found a nice repo of svg icons, so experimented with adding one to the
sprite sheet to see if it works, which it does
the last ui page that needed to be added was managing the main
navigation menu for rendered pages, so that's been turned on. menu
items can be added by pinning pages to the menu when editing them and
can be removed by unpinning them or deleting them from the navigation
edit ui
it touched quite a few systems so all of those classes needed to be
edited as well tweaking the front end script to work with the new
modular script format
the notifications and page editor ui elements where the only remaining
space that still contained font icons, so they've been removed and
replaced with svg
some styling tweaks are still needed so that will handlded as the css
edits continue
a quick test to see if more svg icons can be added to the base sprite
file to keep them all in the same place
it worked, so additional icons will be added to sprite file
using a font for icons isn't great for site accessibility, so all font
icons will be removed and replaced with svgs.
nav and sub nav, page options and recent meta have been replaced
turned on the abiity to save settings to config file via the settings
page
the current member session needs to updated by the data coming in but
that will be handled by a specific member service that hasn't been built
yet, so just commenting it out for now
also fixed a minor bug that was stopping the save on render toggle from
working correctly, so now it's saving and updating the status properly
now
with the setting page set up, now the the settings api can be added,
beginning with the ability to render all files from settings.
the base settings api class is set up, so now the rest of the methods
can be added
it's time to get the setting api running so site options can be editied
so the first step is to get the settings page up and running.
the sorting class is getting a bit heavy, but it will hold the method
for gathering settings page info for now.
added a controller class to handle what is being served when the browser
hits the root directory.
very basic to start as it is just a placeholder until it's filled out
page rendering for tags, archives and markdown pages is now up and
running and being exported to html when requested.
currently it only works when saving a page, so now the settings page
needs to be plugged in so those features can be activated and toggled
through that UI
error checking will probably be added in the near future just in case
something unforeseen happens in the render process, resulting in the
site erroring out.
theme controller was getting top heavy, so an asset service class was
plugged in to handle moving assets around for theme testing and
eventually to production when HTML rendering is set up
with the archive template up and running a bug with page creation and
editing was revealed which was certain options were not being set
correctly due to property not being set correctly when an markdown page
was being edited.
also added a null state check for page submissions that do not have a
layout set, so it defaults to 'page'
also patched theme service class to look for blade templates instead of
twig, which it was still doing
the remaining base template pages have beeen converted to blade as well
as filling out the data they need to render being added to the sorting
service class
theming controller and and sorting service still need to be optimized
but they work so now they can be refined
once they have been cleaned up, the render service is class is ready to
be finished
to complete page rendering, the default theme needed to be converted to
use blade templating. rather than update the theme kit as a seperate
progress, it will be integrated into this codebase so themes can be
developed and tested in app.
the basics for the theme kit are in place, so now conversion of the
defualt theme can be completed.
once the that is done, it can then be used to complete the rendering
engine to export HTML files
plugged in sorting class to gather the info necessary for the render
class to convert markown files to html and move them to the correct
location in the public diretory
editing page works but making new pages was still wonky, so that was
fixed and now page creation works fine
made some minor tweaks to prettier config for css formatting
ported over the new file uploader from the old build and made it a
service make for from some additonal file processing
i.e. image optimization or video converstion before it is saved to the system
the first part of the page editing API is working again after porting it over
form the old fipamo build. a few changes where made to make the code a
big more managable, but the end to end process works for updating pages.
the remaining page editing methods will be activated after the rendering
engine is in place because that's going to be a pretty siginficant
effort.
but this is a big step.
start building out the new version of the page editing api while making
some changes to the original scripts for added flexibility and using the
full range of HTTP methods that weren't being used before.
currenlty, it's just an end to end test to make sure the plumbing works
as it should data is being passed and can be processed.
now that it all works, the guts of page editing can be completed
update sortablejs to the latest since it's been awhile and got rid of
the old version
so there was an error when trying to use services for API controllers
that was happening because the api middleware didn't pass the same info
as web middleware, resulting in session info not being passed to
controllers used in the api
after a bit of reading discovered necessary middleware could be added to
api routing so session data is available in in api routing
whew
Got the first part of the API working, which checks to see if there is a
valid session active to set up requests
also some small changes to get the favicon working, yeah, yeah, but it's
cool looking...
seperated dash controllers for api controllers in the controller
directory to make them easier to manage
also added middleware to check authorization when accessing dash pages
dropped in js from the old site to begin the process of wiring up the
API, but this time around, scripts will be served directly in browswer
rather than being transpiled through NPM/Babel, eliminating the need for
NPM.
also scripting will new modularized and served specifically for the
requirements of the page loading it. no more front loading everything.
only script that is needed for that page will be retrieved. if no
scripting is needed, none will be loaded.
The only casualty so far has been syntax highlighting due to prismjs
still being a common js module, but either this will be replaced with
another library or a custom syntax enginge will be created at a later
date
page editing was missing the selector to choose what template the page
was using, so a theme class was created to handle retrieving and sorting
what classes where avaiable in the themes directory
still looking for twig files because themes haven't been converted over
yet, but one step at a time
expanded the auth service class to store member info in the current
session so validation is easier
also added a token to session data that expires every hour so people
won't be logged in forever and take breaks
hey, you matter too
There are some spacing issues that need to be addressed but the page
editor template has been added and the CSS all lines up
scripting is still an issue as the backend that handles content still
isn't in place, but the front facing piece is in place so now those
components can be built
scripting is going to get an overhaul anyway, so this is a good place to
start that process
plugged in classes for a page repository to handle editing and
retrieving page content and an interface class for the controller to talk to to
keep the methodoloy seperate from the controller to keep it all clean
now whatever changes that need to be made won't bother the controller
because it will always be looking for the same functions. super sweet
moved the page listing template over and made all of the apropriate
changes so the CSS lines up as it should
there was also a minor issue that was keeping the sub menu for the start
pages from displaying so that was fixed
plugged in the dash index template which required grabbing markdown
pages and converting them to data the system can use and then pagination
that is used to sort content into pages
start page now switches from login screen to index based on session, but
that might be changes so it's a bit more clean to work with middleware
Added controller to handle the login process and session management
that stores information about the person that has logged in so that info
is available through out the app when logged in
Brought over a template from the old build to see how the conversion
process would go (it's not bad) and see if the CSS would still stick (it
did)
The wiring will be finished when the auth class is completed
Plugged in a basic auth classs for verifying members and a setting class
to retrieve site settings and return necessary info.
Very bare bones to start just to get it working and prep for the
additional features
Added the folder containg Fipamo markdown files to set up a basic route
for the start of the dashboard and quick test to make sure the file
paths can be read
also added CSS files that will style the new template system, which is
currenlty in twig but will be convereted to blade
Removed the Slim Framework from the codebase and installed the latest
Laravel version to be the new foundation for the project moving forward.
Code from the old version will now be ported to the new version.
There were some outstanding changes made a few months ago that haven't
been checked in, so getting those as the final commit before the
transition to Laravel
Cleaned up the settings page by removing the improper usage of the role
tag and replaced it with class to maintain current design integrity.
Also updated the script files that was referencing the old role tags
Began the process of removing all invalid role attributes starting with the header, login, and notifications components. Updated the corresponding scripts as well.
Made a few structural changes to the header to simply it and then tested it to ensure notification still worked.