I have a few Plone sites which contain "structured documents" (built from folders and documents), in which you can step forwards and backwards, and skip to a certain numbered page, exchanging only the content, and leaving the menu etc. in place, while the page URL is updated. Nothing very unusual, I'd say.
However, the existing homebrew solution is somewhat suboptimal; I have at least three different Javascript files which contain similar functionality (with subtle differences) and use several global variables; not very state-of-the-art, not very stable, and faulty, I'm afraid.
So, is there a standard functionality or package I could use?
What I have in mind:
A Javascript API function which would be initialized with a JSON tree of lists of UIDs, created in the root of a structure (which could be the site as well); it would be able to easily get the position (and number) of the current page, the previous, next and possibly parent page from this information.
More needed information:
** id of the DOM element to be filled
** perhaps another element contains the breadcrumbs?
** name of the view template to use
** perhaps more
Let's see, I try to sort this out.
OK, I found pat-inject. The Javascript project is on Github, but I couldn't find a Plone integration yet. This could be desirable, e.g. because of jQuery version issues; Plone 4.3.15 still uses jQuery 1.7 (I have 1.8.3 which is very slightly less ancient), but they intend to update to jQuery 3 which is (sadly) incompatible with some of my Javascript code. Thus, is might be a way to go in the long run, but it is no drop-in-solution.
Right, you didn't say it would be.
As for using this as the technical base, it looks to me like there I'd need to add data- attributes in server-side code to have Patternslib do its magic.
In https://github.com/collective, I found Solgema.NavigationPortlet which (from a quick look at it) creates a tree navigation viewlet, but there is no hint about AJAX navigation or previous/next page links.
Thank you for the very verbose answer!
Unfortunately, plone.patternslib is for Plone 5, and I have 4.3.15; I'm not ready to switch (yet).
The same seems to be true for collective.multitheme (cutting-edge, not yet no PyPI).