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]]
What I had in mind was more like tag_autocreate_transient => 1
or
autoindex_transient => 1
; you might conceivably want tags to be
checked in but autoindices to be transient, and it's fine for each
plugin to make its own decision. Going from that to one boolean
(or just always-transient if people don't think that's too
astonishing) would be trivial, though.
I don't think relocating the transient underlay really makes sense,
except for prototyping: you only want one, and .ikiwiki
is as good
a place as any (ikiwiki already needs to be able to write there).
For [[plugins/contrib/album]] I think I'd just make the photo viewer
pages always-transient - you can always make a transient page
permanent by editing it, after all.
Do you think this approach has enough potential that I should
continue to hack on it? Any thoughts on the implementation? --[[smcv]]