Commit Graph

228 Commits (33b0a69e90f4c2e22fe0e0c812836a2eb661c6d2)

Author SHA1 Message Date
Joey Hess 4e9db780d5 whitespace 2009-03-29 14:52:29 -04:00
Joey Hess c84b4cefcc minor code changes 2009-03-29 14:31:32 -04:00
intrigeri 8cfe428a28 rename hook: run once per file to be renamed
... as Joey suggested on todo/need_global_renamepage_hook

This hook is applied recursively to returned additional rename
hashes, so that it handles the case where two plugins use the hook:
plugin A would see when plugin B adds a new file to be renamed.

The full set of rename hashes can no longer be changed by hook functions, that
are only allowed to return any additional rename hashes it wants to add.
Rationale: the correct behavior of the recursion would be hard, if not
impossible, to define, if already considered pages were changing on the run.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-03-08 11:44:00 +01:00
intrigeri ea753782b2 po: remove all dependencies on nicepagetitle
... as my meta branch probably won't be merged before the po plugin is, contrary
to what I was originally supposing.

This implies removing the po_translation_status_in_links and
po_strictly_refresh_backlinks options.

Added a note to the TODO section to think of bringing these features back later,
as they really enhance user experience on a translatable wiki.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-27 17:52:32 +01:00
intrigeri 51badc960d rename hook: instead of modifying the passed-by-name array, return a copy
This is intended to solve Joey's concerns expressed on
http://ikiwiki.info/todo/need_global_renamepage_hook/, i.e. the need to make it
possible to use this hook from external plugins.

A plugin using this hook still can add/modify/remove elements of the
@torename array.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-27 17:08:55 +01:00
intrigeri ca9e45c3ba po: make the "backlinks involve dependencies" feature optional
It can now be configured with the po_strictly_refresh_backlinks setting.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-27 00:25:46 +01:00
intrigeri 8915d2553c po: bring back a useful use of scalar
... that was removed in 68869d664b

Without this scalar, a two-cells array is passed to $template->param, which
builds a hash with an odd number of elements.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-26 23:21:14 +01:00
intrigeri 78a095aa42 only pass named parameters to the canremove hook
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-26 23:07:19 +01:00
intrigeri f02672c113 only pass named parameters to the canrename hook
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-26 23:02:31 +01:00
intrigeri e0e94d4716 po(formbuilder): stop hunting down non-existent cases
After some thinking about it, I can't find why the type of a page being created
in the CGI could be restricted to po. So the previous case seems enough.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-26 22:54:40 +01:00
Joey Hess 9750f929ad remove redundant use
use is file-scoped so warnings and strict are already enabled
inside the second package, and IkiWiki is already loaded
(though not imported into this context)
2009-01-26 13:35:50 -05:00
Joey Hess 9e3dc0af60 non-code changes 2009-01-26 13:33:02 -05:00
Joey Hess aff9bf5a7a more unnecessary parens 2009-01-26 13:28:57 -05:00
Joey Hess 093f8534f1 avoid keeping running if a DOS attack is possible 2009-01-26 13:25:05 -05:00
Joey Hess 98f0d672df remove unnecessary parens 2009-01-26 13:24:33 -05:00
Joey Hess c5642119f7 another useless use of scalar
scalar(undef) is undef, so using scalar here had no effect.
Instead make the function return "", probably avoiding an uninitialized
value warning.
2009-01-26 13:21:33 -05:00
Joey Hess 68869d664b remove useless uses of scalar
if (scalar @array) is written idiomatically in perl as
if (@array).
2009-01-26 13:20:56 -05:00
Joey Hess 526d9dbe10 improve some english
I'm still not happy with the clarity of this warning message.
I don't understand when it could happen or why a warning is needed.
2009-01-26 13:15:29 -05:00
Joey Hess 8e738066bc avoid standalone -e or foo syntax
I prefer to use either of the other two syntaxes perl offers, and not this
one.
2009-01-26 13:10:37 -05:00
intrigeri f8c306a21b remove cansave plugin, now replaced by Joey's checkcontent one
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-19 19:53:32 +01:00
intrigeri df82b5e62a po: when possible, disable use of Text::WrapI18N in po4a; else warn about too old po4a
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-16 15:07:05 +01:00
intrigeri 523718b181 po(change): re-render all rendered files in one corner case
All meta titles are first extracted at scan time, i.e. before we turn
PO files back into translated markdown; escaping of double-quotes in
PO files breaks the meta plugin's parsing enough to save ugly titles
to %pagestate at this time.

Then, at render time, every page's passes on row through the Great
Rendering Chain (filter->preprocess->linkify->htmlize), and the meta
plugin's preprocess hook is this time in a position to correctly
extract the titles from slave pages.

This is, unfortunately, too late: if the page A, linking to the page B,
is rendered before B, it will display the wrongly-extracted meta title
as the link text to B.

On the one hand, such a corner case only happens on rebuild: on
refresh, every rendered page is fixed to contain correct meta titles.
On the other hand, it can take some time to get every page fixed.
We therefore re-render every rendered page after a rebuild to fix them
at once. As this more or less doubles the time needed to rebuild the
wiki, we do so only when really needed.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-16 01:33:07 +01:00
intrigeri 3ba976d1d3 po: pages in underlay dirs are not translatable
Fixes build break due to read-only underlay dirs, e.g. basewiki.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-15 23:04:57 +01:00
intrigeri 9abda92324 po(_istranslation): fix unitialized value
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-15 22:45:45 +01:00
intrigeri 5c59ad63df po: fix broken links from slave pages
... by overriding cgiurl.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-15 21:49:32 +01:00
intrigeri 196f03a987 po: do not add translation status to parentlinks
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-13 13:03:30 +01:00
intrigeri 4fd2807886 po(isvalidpo): more meaningful error message
... explaining how to go on with edit.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-02 18:57:50 +01:00
intrigeri 4ad871810d po: back to the cansave hook, as the form validation is not sufficient
Form validation works, but after trying to save invalid PO content, the user is
brought back to the page he/she was editing, without any single clue to explain
why it was not saved. The dedicated cansave hook is thus necessary.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-02 18:51:32 +01:00
intrigeri 7ef0c19cdf po: first attempt to replace cansave hook with form validate tweaks
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-02 17:51:17 +01:00
intrigeri 33f9eeb4fb po/i18n: move the function names out of the translatable strings
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-02 17:24:54 +01:00
intrigeri da26603e07 po: updated copyright years
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-02 16:54:03 +01:00
intrigeri fae3cef41a po(formbuilder_setup): remove the rename/remove buttons on slave pages
This has to be done after the rename/remove plugins have added
their buttons, so we set this hook to be run last.

The canrename/canremove hooks already ensure this is forbidden
at the backend level, so this is only UI sugar.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-02 16:02:25 +01:00
intrigeri e5222db332 po: avoid warnings and possible bugs with nested named subroutines
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-02 15:14:58 +01:00
intrigeri 14a79751e3 po: gettext-ize error messages
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-02 15:00:34 +01:00
intrigeri 724dbabc4a po: do not allow to create pages of type po
The main reason to do so is to bypass the "favor the type of linking page on
page creation" logic, which is unsuitable when a broken link is clicked on
a slave (PO) page.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-02 14:09:34 +01:00
intrigeri d1642e4cd9 po: cosmetic changes to percent translated display
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-02 12:36:07 +01:00
intrigeri f58cb48f1f po(formbuilder_setup): use a template to display the warning
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-02 12:27:10 +01:00
intrigeri 0f89ef0579 po: test formbuilder_setup hook to warn about new master page's language
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-02 12:15:21 +01:00
intrigeri 876808568e po: require ikiwiki plugin interface 3.0
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-02 11:22:54 +01:00
intrigeri 949c4c0c3a po: send msgfmt output to /dev/null, else it creates messages.mo files
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-01 23:33:16 +01:00
intrigeri d0c9c21687 po: fix error messages
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-01 23:32:52 +01:00
intrigeri c821cee108 po(cansave): check PO validity using new isvalidpo function
... because Po4a's parser does not care about malformed PO data.
Use gettext's msgfmt program instead.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-01 23:12:08 +01:00
intrigeri 1d3da099b4 po(cansave): use po_to_markup to check PO validity
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-01 22:16:43 +01:00
intrigeri 5ebb42494d po: move most of filter code to its own function
Allow this new po_to_markup function to run in non-fatal mode,
we need this in our cansave hook.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-01 22:16:07 +01:00
intrigeri 41eca80e25 po: register a (dummy) cansave hook
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-01 19:48:48 +01:00
intrigeri e895157397 Pass src, srcfile, dest and destfile to the canrename hook.
This is not needed by the use I'm doing of it, but seems more consistent to me.
Future users of this hook may need this data to make their mind.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-01 18:04:37 +01:00
intrigeri 131d2d4e7c po: bugfix
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-01 17:56:51 +01:00
intrigeri 80a630a3fb po: fix canrename hook
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-01 17:49:10 +01:00
intrigeri b24f236dfa po: use the new canrename hook to prevent translation renames in the CGI
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-01 16:52:43 +01:00
intrigeri 741b26aa17 remove: implemented a new canremove hook; use it in the po plugin
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-01 16:44:39 +01:00
intrigeri 5412a95fd0 po(myurlto): more robust run_by_editpage logic
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-01 01:14:06 +01:00
intrigeri 37b8822762 po: some code/comments refactoring
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-01 01:08:40 +01:00
intrigeri 856de5734d po: follow new coding style (removed Vim folding markers
)
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-01 01:08:35 +01:00
intrigeri 85f865b5d9 po: added postscan hook, to make pages depend on the pages linking to them
... so that nicepagetitle hook's effects, such as translation status displayed
in links, are updated when the linked page changes.

The replacement of 'my %backlinks' with 'our %backlinks' in Render.pm made this
work: previously, every postscan hook was called with an almost empty
%backlinks, which defeated all my attempts to implement this feature.

This feature hits performance a bit. Its cost was quite small in my real-world
use-cases (a few percents bigger refresh time), but could be bigger in worst
cases. Time will tell.

NB: this hack could also be used by my meta branch. It may even be a ikiwiki
optional feature.

Signed-off-by: intrigeri <intrigeri@boum.org>
2009-01-01 01:08:10 +01:00
intrigeri 885e4b607a po: new po_translation_status_in_links option
... to make configurable the last implemented feature.

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-12-31 16:45:55 +01:00
intrigeri be092e5639 po(nicepagetitle): forgot to display %
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-12-31 16:34:08 +01:00
intrigeri 63c2bf57cb po(percenttranslated): fix issue with leading /
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-12-31 16:31:18 +01:00
intrigeri 0d874f0b69 po(nicepagetitle): append translation status to links to translated pages
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-12-31 15:45:05 +01:00
intrigeri 805e16ec65 po: inject our own (currently a no-op) nicepagetitle function
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-12-31 15:40:32 +01:00
intrigeri 149a3e65a7 po: fix redirect after edit, using a somehow tricky hack
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-12-31 13:02:48 +01:00
intrigeri bd10381103 po: delete translations of deleted master pages
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-12-31 11:47:18 +01:00
intrigeri cd62acfb47 po: remove debug statements 2008-12-30 23:10:12 +01:00
intrigeri f586eafe90 po: remove renamed pages special handling, not needed anymore
Thanks to the new rename hook behaviour, the whole renaming work is now done
by the rename plugin, and we don't need to remember which pages were renamed.
2008-12-30 23:00:46 +01:00
intrigeri 5738f30a29 the rename hook can now change the list of pages to rename
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-12-30 22:55:04 +01:00
intrigeri c01485ae1a renamed the renamepage hook to renamelink, added rename hook
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-12-30 21:36:40 +01:00
intrigeri 5eed0fd97d po(change): reset renamed pages status at a better time
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-13 04:37:26 +01:00
intrigeri d795a295c9 po: initial infrastructure to deal with renamed master page
This is a skeleton that does nothing yet.
See the comments in the code for an overview of the issue that arises, due to
the renamepage hook never being called globally.

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-13 03:55:55 +01:00
intrigeri c390056eb2 po(delete): added hook, and function skeleton
Not implemented yet, 'cos the renamepage hook has to come first.
Else translations would be deleted on rename, what a shame.

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-13 01:38:22 +01:00
intrigeri cb1fe44f5d po(change): avoid losing information before guessing the same...
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-13 01:07:52 +01:00
intrigeri 8745d67f06 po(istranslatablefile): extracted this from istranslatable
... will need this soon to deal with master file deletion.

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-13 00:56:23 +01:00
intrigeri 190c641c8a po(otherlanguages): return pages that should exist
... instead of already existing ones.
This fixes the "missing otherlanguages links on master pages just created via
the CGI" bug.

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-12 23:27:30 +01:00
intrigeri 36312b13b4 po: memoized istranslatable, eventually
And enjoy a 10% rebuild time enhancement on a complex wiki full of maps and
other pseudo-dynamic content, with some other costly plugins enabled. So it
could well mean 20% on a more usual wiki.

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-12 22:32:47 +01:00
intrigeri 10c4e858b8 po(change): flush Memoize cache, to fix bug after rename/remove
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-12 21:18:48 +01:00
intrigeri c440a39ba4 po(htmlize): ignore PO files not managed by this plugin
This way, the po plugin will not appropriate PO files it is not responsible for,
and PO files existing before this plugin was enabled can coexist peacefully with
our own ones.

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-12 18:06:04 +01:00
intrigeri 2f27eb9693 po: ooops, fixed just introduced bug
(I just removed in istranslation and _istranslation the dependency on
istranslatable... which broke things in a subtle way, hard to see at the first
glance.)

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-12 17:52:00 +01:00
intrigeri aed42eb34a po: fix istranslation/istranslatable for pages starting with /
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-12 17:29:12 +01:00
intrigeri f4815e3b12 po(mybestlink): fixed when fed with path beginning with /
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-12 16:54:51 +01:00
intrigeri eba2dee941 po: compute internal links from a slave page relative to its master page
e.g. a link appearing on a slave page links to its masterpage's subpages.

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-12 15:04:50 +01:00
intrigeri 40ffc92953 po: fixed bug when a new translatable page is created
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-11 23:04:58 +01:00
intrigeri 2b4e76a961 po: change a bit the way links are generated
This will soon enable usage of translated page titles in link.

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-11 22:29:47 +01:00
intrigeri f0abaa9fc9 po: fixed link to home page when po_link_to=negotiated, added testcase
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-11 18:42:14 +01:00
intrigeri f0e796d9a1 po(change): fix uninitialized variables when running IkiWiki::refresh()
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-11 16:04:40 +01:00
intrigeri 43a1d36378 po: added HOMEPAGEURL template variable, documented when to use it
Hopefully all links should now be consistent with the chosen linking behavior,
but who knows...

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-11 15:27:39 +01:00
intrigeri cfe101fff9 po: fixed link to homepage from non-translation page
Added testcases for this bug.
It remains broken when generated from <TMPL_VAR BASEURL>, though.

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-11 15:06:26 +01:00
intrigeri 6b82ef44b0 po: some code simplification/clarification
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-11 14:11:34 +01:00
intrigeri 0d8cbfc5e0 po(scan): make more clear what's being done
Mostly comments, and also a small code change: simplification and implementation
details hiding.

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-11 04:32:20 +01:00
intrigeri d57ef86380 po: reorder nearly all of the module code
It has grown up incrementally and new helper functions were added right in the
middle of the hooks, most often near the place they were used, which is
practical when doing initial development, but quite ugly afterwards, when helper
functions are useful to separate logic and implementation details.

Today's refactoring commits have brought the code to a much more maintainable
state, IMHO.

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-11 04:05:39 +01:00
intrigeri a7d329c173 po(match_lang, match_currentlang): use the lang() function
... now that it exists, instead of duplicating it.

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-10 21:30:06 +01:00
intrigeri b4ab0d0b9e po: rewrote otherlanguagesloop()
It is now more elegant IMHO, and the output is now sorted according to the
language name (instead of code).

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-10 21:19:21 +01:00
intrigeri c5513548c9 po: factorize extraction of a slave page's masterpage and lang
The very same code was repeated at dozens of places.

NB: the real work is now done is _istranslation(), which is memoized,
so the additional function calls overhead should be compensated.

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-10 20:40:44 +01:00
intrigeri 864bc2d9d0 po(otherlanguagesloop): start factorizing
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-10 18:38:25 +01:00
intrigeri 1255acc02c po: finish abstracting %filtered by putting it into a blackbox
i.e. it is invisible for everyone but its accessors/mutators

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-10 15:30:49 +01:00
intrigeri 38cdda66d7 po: actually use pofiles() function, to enhance code clarity
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-10 15:09:56 +01:00
intrigeri 5575786803 po: abstract "doing something for the same page in every other language"
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-10 14:55:21 +01:00
intrigeri 532ec56a5f po: abstract implementation details for %translations building and resetting
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-10 13:56:46 +01:00
intrigeri 3174b4c6f3 po: abstract %filtered implementation details
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-10 13:51:00 +01:00
intrigeri 00732f19b9 po: clarify error messages
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-10 13:22:50 +01:00
intrigeri 6fc898df75 po: clarify code with some comments
Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-10 13:14:42 +01:00
intrigeri aef1b0f503 po: prevent a slave page to depend on itself
It has never caused harm yet, but it might in the future.

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-10 12:48:27 +01:00
intrigeri 646d7bf6a3 po(refreshpot): define the input charset before read()'ing
... to prevent the use of Encode::Guess::guess_encoding() in
Locale::Po4a::Transtractor (just a minor security measure, dependent on po4a
internals, but we have no reason to think Encode::Guess is not safe).

Signed-off-by: intrigeri <intrigeri@boum.org>
2008-11-08 21:32:04 +01:00