reported my need for a global renamepage hook

Signed-off-by: intrigeri <intrigeri@boum.org>
intrigeri 2008-11-13 04:32:02 +01:00
parent 699aa79c2e
commit 408d483dc2
1 changed files with 42 additions and 0 deletions

View File

@ -0,0 +1,42 @@
As documented in [[plugins/write]], the current `renamepage` hook is
heavily oriented towards updating links in pages' content: it is run
once per page linking to the renamed page.
That's fine, but it can't be used to trigger more general actions on
page rename. E.g. it won't be run at all if the page being renamed is
an orphan one.
This is a real issue for the [[plugins/contrib/po]] development: what
I'm about to achieve is:
- when a master page is renamed, the plugin takes notice of it (using
the `rename` hook), and later renames the translation pages
accordingly (in the `change` hook)
- when a master page is deleted, the plugin deletes its translations
(using the `delete` hook)
With the current `renamepage` hook behavior, combining these two goals
has an annoying drawback: a plugin can't notice an orphan master page
has been renamed, so instead of renaming (and preserving) its
translations, it considers the oldpage as deleted, and deletes its
translations. Game over.
It may seem like a corner case, but I want to be very careful when
deleting files automatically in `srcdir`, which is not always under
version control.
As an sad workaround, I can still disable any deletion in `srcdir`
when it is not under version control. But I think ikiwiki deserves
a global `renamepage` hook that would be run once per rename
operation.
My proposal is thus:
- keep the documented `renamepage` hook as it is
- use something inspired by the trick `preprocess` uses: when `hook`
is passed an optional "global" parameter, set to a true value, the
declared `renamepage` hook is run once per rename operation, and is
passed named parameters: `src`, `srcfile`, `dest` and `destfile`.
I'm of course volunteering to implement this, or anything related that
would solve my problem. Hmmm? --[[intrigeri]]