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
updated dependencies to the latest versions
also took a swing at rendering performance, which was pretty basic. it
was fine for sites with not that many pages, but it gets a bit stick
above 50
as of right now, performance has been improved slighthy by forcing some
garbage collection, rendering 65 pages in under 30 seconds with 256MB
available.
the issue seems to the speed of initial page collections from the
directories and then converting them to objects that the system can use.
going to explore some options to optimize that particular script
also removed page load from PageRepository instantion because when the
app loads, it was calling that class as part of the start of process and
loading pages everytime no matter what page was being looked at.
removing that made non page sections snappier
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
new floating text formatter had some reveal state issues, some styling
wonkyness and didn't have any bounding rules, so all of that has been
addressed.
also removed css references to a component that has been removed.
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!
there were a couple of glaring issues with the responsiveness of the new
page ui layout, so some of the bigger ones have been addressed
there's was also a bug where the sub-menu options weren't getting picked
up when being assigned in the script. fixed
the label for uploading files in the meta ui was not accessible by
keyboard, so that element was changed to a button that can be tabbed to
and clicked to open the file upload ui
there were also so minor css issues with the options toolbar, so those
have been tweaked
the bold, italic and strikethrough options now function as toggles for
formatting options and removes them rather than just replacing text
the options buttons under the meta ui now communicate their status
through use of the 'aria pressed' attribute so they can be properly read
by assitive technologies like screen readers
there were some nagging space issues in the new meta ui layout, so those
were addressed. it'll will probably change a billion more times, but
it's starting from a solid place
the text editor ui now only display when text is selected and goes away
after an operation has been completed or when text is deselected, making
the overall page editing experience streamlined
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
there was a generic place holder that defaulted to the default page
template to render pages. that's been fixed so it refers to the pages
layout to know what template to use
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