summaryrefslogtreecommitdiff
path: root/doc/todo/transient_in-memory_pages.mdwn
blob: 816e95c382dd64c51783cd549ca343194d3dfaab (plain)

On [[todo/auto-create_tag_pages_according_to_a_template]], [[chrysn]] suggests:

Instead of creating a file that gets checked in into the RCS, the source files could be left out and the output files be written as long as there is no physical source file (think of a virtual underlay). Something similar would be required to implement alias directive, which couldn't be easily done by writing to the RCS as the page's contents can change depending on which other pages claim it as an alias.

add_autofile could be adapted to do this, or a similar API could be added.

This would also be useful for autoindex, as suggested on [[plugins/autoindex/discussion]]. I'd also like to use it for [[plugins/contrib/album]].

One refinement I'd suggest is that if the transient page is edited, its transient contents are evaluated and used as the initial content for the edit box; after that, it'd become a static page. --[[smcv]]


[[!template id=gitbranch branch=smcv/transient author="[[smcv]]"]] [[!tag patch]]

I had a look at implementing this. It turns out to be harder than I thought to have purely in-memory pages (several plugins want to be able to access the source file as a file), but I did get this proof-of-concept branch to write tag and autoindex pages into an underlay.

This loses the ability to delete the auto-created pages (although they don't clutter up git this way, at least), and a lot of the code in autoindex is probably now redundant, so this is probably not quite ready for merge, but I'd welcome opinions.

Usage: set tag_underlay and/or autoindex_underlay to an absolute path, which you must create beforehand. I suggest srcdir + /.ikiwiki/transient.

Refinements that could be made if this approach seems reasonable:

  • make these options boolean, and have the path always be .ikiwiki/transient
  • improve the remove plugin so it also deletes from this special underlay

Perhaps it should be something more generic, so that other plugins could use it (such as "album" mentioned above). The .ikiwiki/transient would suit this, but instead of saying "tag_underlay" or "autoindex_underlay" have "use_transient_underlay" or something like that? Or to make it more flexible, have just one option "transient_underlay" which is set to an absolute path, and if it is set, then one is using a transient-underlay. --[[KathrynAndersen]]