cleaned up the code to get a massive boost to publishing and page
rendering speeds
the issue was related to pages being collected and transformed into
objects the system could use multiple times, resulting in sluggish
rendering due to available memory getting drained to accomodate a long
script running more than it was needed. edited the rendering process so
the script is only called one and the data is passed to the respective
functions that require that data.
also plugged in some minor manual garbage collection that speed up the
process a bit more
there was also a bug with rendering the tags file that was resulting in
the `tags.json` file being unusually large. the issue was tags were
getting replicated in the process resulting in adding duplicates to the
tag file everytime it was run. go rid of the unnecessary function that
was calling the replicate tags array and now the tags file is it's
appropriate size
whew, this turned out to be a big one that wasn't meant to be, but the
peformance boost was worth it
still finding bugs related to the big routing rewrite, this one being an
error when starting a new set up.
fortunately, it was just a matter of getting the redirects pointing to
where they should, so it's a small fix
plugged in a simple rss component so fipamo sites can be subscribed to
through feed reeders.
routing needed a bit of updating to make it work, so it's been edited to
accomodate any new url that deviate from created pages.
long live RSS
Member authorization got moved to the member repo class a long time ago,
so AuthController was a leftover when that process was handled by
something else
moved dashboard login/logout to DashController and got rid of
AuthController as it's not necessary anymore
previously all the of the page routing was handlede through controller
organized by CRUD methods. it worked, but organizing by CRUD and not
purpose resulted in more time spent looking for a specific task through
controllers, so it turned out not to an effecient way of organizing.
so routing has been completely reorganized into laravel's web routing
section and methods have been moved to their appropriate controller so
tasks are much easier to find
front facing page routing turned out to be a bit more tricky that
anticipated do the overap of routing paths, but it only affects dynamic
page rendering and there's a patch in place that handles that issue
until a better solution is found. Rendered HTML pages works fine.
whew!
moved page meta data to it's own ui to clean up the page editing
experience as it was becoming a bit crowded.
also moved to saving and deleting buttons to title bar so they are
always available
added a note to web routes to reorganize them within the web routes file
to reduce the confusion present by having them in their own Controllers.
it's just an extra layer that's not needed
cleaned up the page edit template a bit to make it easier to convert to
the new editor UI.
php formatting also needed to be updated, so the php cs fixer file was
updated and added some setting to prettier to handle blade files
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.
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
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.'
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
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.
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 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
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
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
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
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
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.
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
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