More change ideas can be found on the Cadre Bugfest.
- OBJECTIVE CADRE/OCTAVIA.
Core variable i/o for live data.
Function calling through live data? Should work in theory, not yet tested.
Function-style syntax for calling modes.
Make variable sigils optional.
Pointers to other live objects.
Prevent members of live objects from being arrays (not storable in database currently).
- Sorting and querying by live fields.
- Add modes for using parent references in an article's name for index.star lookups. e.g. "Parent/Page", "Grandparent/Parent/Page", and "page=title&parent=id" formats. Development: "page=title&origin=id" and "page=title§ion=id"; these are the most convenient/natural forms that don't clash with anything existing, and should go for the page nearest to the indicated ancestor.
- Externally-meaningful user groups:
replace UID < 3 with a global that defines a group to which you must belong
- More work on installation script: due to externally-meaningful user groups, we now need a script that creates the
first user and the first group.
Rename template_maker to something maintenance-related — it's now used to indicate automatic full permissions, something that shouldn't be left up to a mere EMUG (And furthermore, making templates should be left to a mere EMUG.) Discourage permanent use by giving it a lowly name, though, like 'janitor' or 'maintenance mode'. Renamed in interface. Renamed in code to 'janitor'.
Statistics tracking—user agents? Or at least hits/page! - actually, this would be a mess due to transclusion. Stats tracking should just be managed by an external framework, even if there's some bad data due to multiple ways of referring to the same page.
Make sure lists can display all entries in tree mode (even abandoned orphans) Implemented orphanage instead.
Comments for news posts (simple template work really)
Replace new_page with an in-database script? Hugely circumstantial. Have implemented one, though, built into a 404 page, just to see what it's like (hint: it's great)
Some kind of fancy AJAX stuff to speed things up—Holy cats, it's Paralogue!
- But still, add that contentEditable thing.
Proper system 'about' page. Cadre builds have so far not even used a version number.
- RSS parsing?
RSS-to-entry conversion functions for Badru
Better solution: a pair of query + query_run functions. No entry ever actually needs to exist! Done, but need to add way more features to show(); it's equivalent to index right now in terms of its features—lack of pagination is especially lame.
- In the distant future, this solution might be useful for other data sources and an
extensions interface. But what about assigning some system of reference IDs so they can be easily recalled? The templates can and should be responsible for reifying articles. They have all they need already!
Bare templates without any header or footer (this would permit e.g. archival mode and RSS feeds) — it's called suppress_template()
Get HTTP referrer, contents of page at URL (for Badru again) used to great success in LL 404 page and template sync interface
How can the anonymous post comments safely? (Think blogs) Maybe a flag that's part of an entry record which determines whether anonymous is considered public or read only IMUGs: anonymous can be added to the entry's group. The 'c' permission is treated as '-' in the fourth (public) register for anonymous users, but not the third (group).
- Temporary solution: Comments Permitted
Still need a method for mutating new entries during their creation! user 0 can't be the owner of anything, to prevent wiki-like abuse. Kind of a big deal. Done: called CREATOR_RIGHTS. Like natural rights, but more convincing.
- Proper solution:
user groups. Add a grouping for anonymous and use the group permissions for everything. Done.
Still need a UI for creating 'public commenting' groups.
- How can we sync templates between Cadre installs without remote code execution vulnerabilities?
Consider administrative console where synced scripts can be created, version numbers for telling them all apart Dates of last modification instead. Read those subtitles!
- User verification of matched MD5 hashes
- N.B.
don't forget to write the syncing script.
- Good enough for now: let the user review what they're importing before hitting the 'overwrite' button. Done. Half-done. Still need to uniquely identify cognates via subtitle.
- cron-like execution of scripts? Checking for version updates to the above.
- Most edit modes are nearly identical. Create more functions to make them easy to throw together.
Replace/augment [show modes: ...] with a set for each permission bit. This will make it easier to cleanly hide edit and info links, especially when they're not named edit and info. (Open question: define relationship between permissions and actually using the modes? e.g. 'view' mode requires the 'read' permission to access. This could either be very smart, very tedious, or very redundant. I'm guessing this would be an acceptable burden on template authors if they can be inherited, but we'll need more efficient inheritance models if that's the case.) This has been implemented without recursion, but with fundamental defaults hard-coded instead. But we don't have anything to test it on right now!
Site theme footers current have a "return to $parent" link as standard, but this doesn't always make sense for some very complex page templates, such as a dictionary or blogs built into user profiles. Templates should be allowed to override this, just like they can suppress_title() and suppress_template() if they're the top-level requested document. Added override_title(title, subtitle) and override_parent(url, caption).
Similarly, override_title() for sub-pages and things.
Pagination of indices: requires three functions: (not actually implemented this way, but these parts also exist)
Get list of the page numbers of which children() or index() would return the contents (line-break-delimited) (use children("id", $_id) or index("id", $_id)—maybe this should be a built-in mode)
Function to select a range of elements from a string-delimited string
Function to get page contents for a list of page numbers (foreach() would be annoying and slow here) It doesn't appear to be!