aboutsummaryrefslogtreecommitdiff
path: root/doc/todo/auto_rebuild_on_template_change.mdwn
blob: cde19700c3de83c9d9a509b32e0da3b7d742035e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
If `page.tmpl` is changed, it would be nice if ikiwiki automatically
noticed, and rebuilt all pages. If `inlinepage.tmpl` is changed, a rebuild
of all pages using it in an inline would be stellar.

This would allow setting:

	templatedir => "$srcdir/templates",

.. and then the [[wikitemplates]] are managed like other wiki files; and
like other wiki files, a change to them automatically updates dependent
pages.

Originally, it made good sense not to have the templatedir inside the wiki.
Those templates can be used to bypass the htmlscrubber, and you don't want
just anyone to edit them. But the same can be said of `style.css` and
`ikiwiki.js`, which *are* in the wiki. We rely on `allowed_attachments`
being set to secure those to prevent users uploading replacements. And we
assume that users who can directly (non-anon) commit *can* edit them, and
that's ok.

So, perhaps the easiest way to solve this [[wishlist]] would be to
make templatedir *default* to "$srcdir/templates/, and make ikiwiki
register dependencies on `page.tmpl`, `inlinepage.tmpl`, etc, as they're
used. Although, having every page declare an explicit dep on `page.tmpl`
is perhaps a bit much; might be better to implement a special case for that
one. Also, having the templates be copied to `destdir` is not desirable.

The risk is that a site might have `allowed_attachments` set to
`templates/*` or `*.tmpl` something like that. I think such a configuration
is the *only* risk, and it's unlikely enough that a NEWS warning should
suffice.

(This would also help to clear up the tricky disctinction between
wikitemplates and in-wiki templates.)

> But would this require that templates be parseable as wiki pages?  Because that would be a nuisance. --[[KathrynAndersen]]

>> It would be better for them not to be rendered separately at all.
>> --[[Joey]]