aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2007-12-08 17:40:50 -0500
committerJoey Hess <joey@kitenet.net>2007-12-08 17:40:50 -0500
commit055179cb4cc9b8bc9b204e1a9f83b1f59e13824e (patch)
tree1a48f2f93684238180b355df67f2aa48dcfb1be4
parent2fbca21390d2752a89a2e1167fe33d4d201359cf (diff)
downloadikiwiki-055179cb4cc9b8bc9b204e1a9f83b1f59e13824e.tar
ikiwiki-055179cb4cc9b8bc9b204e1a9f83b1f59e13824e.tar.gz
* Finally implemented a simple per-page data storage mechanism for plugins,
via the %pagestate hash. * Use pagestate in meta to detect potential redir loops.
-rw-r--r--.gitignore1
-rw-r--r--IkiWiki.pm24
-rw-r--r--IkiWiki/Plugin/external.pm18
-rw-r--r--IkiWiki/Plugin/meta.pm7
-rw-r--r--debian/changelog3
-rw-r--r--doc/plugins/write.mdwn14
-rw-r--r--doc/plugins/write/external.mdwn5
-rw-r--r--doc/todo/plugin_data_storage.mdwn26
-rw-r--r--po/bg.po26
-rw-r--r--po/cs.po26
-rw-r--r--po/da.po26
-rw-r--r--po/es.po26
-rw-r--r--po/fr.po26
-rw-r--r--po/gu.po26
-rw-r--r--po/ikiwiki.pot16
-rw-r--r--po/pl.po26
-rw-r--r--po/sv.po26
-rw-r--r--po/vi.po26
18 files changed, 240 insertions, 108 deletions
diff --git a/.gitignore b/.gitignore
index 7ca6ac2a9..ae9a17e5c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
Makefile
+Makefile.old
blib/*
doc/.ikiwiki/*
html/*
diff --git a/IkiWiki.pm b/IkiWiki.pm
index d64f4e688..ab94f8622 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -10,15 +10,16 @@ use POSIX;
use open qw{:utf8 :std};
use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase
- %renderedfiles %oldrenderedfiles %pagesources %destsources
- %depends %hooks %forcerebuild $gettext_obj};
+ %pagestate %renderedfiles %oldrenderedfiles %pagesources
+ %destsources %depends %hooks %forcerebuild $gettext_obj};
use Exporter q{import};
our @EXPORT = qw(hook debug error template htmlpage add_depends pagespec_match
bestlink htmllink readfile writefile pagetype srcfile pagename
displaytime will_render gettext urlto targetpage
add_underlay
- %config %links %renderedfiles %pagesources %destsources);
+ %config %links %pagestate %renderedfiles
+ %pagesources %destsources);
our $VERSION = 2.00; # plugin interface version, next is ikiwiki version
our $version='unknown'; # VERSION_AUTOREPLACE done by Makefile, DNE
my $installdir=''; # INSTALLDIR_AUTOREPLACE done by Makefile, DNE
@@ -868,6 +869,10 @@ sub loadindex () { #{{{
$destsources{$_}=$page foreach @{$items{dest}};
$renderedfiles{$page}=[@{$items{dest}}];
$pagecase{lc $page}=$page;
+ foreach my $k (grep /_/, keys %items) {
+ my ($id, $key)=split(/_/, $k, 2);
+ $pagestate{$page}{decode_entities($id)}{decode_entities($key)}=$items{$k};
+ }
}
$oldrenderedfiles{$page}=[@{$items{dest}}];
$pagectime{$page}=$items{ctime}[0];
@@ -878,6 +883,12 @@ sub loadindex () { #{{{
sub saveindex () { #{{{
run_hooks(savestate => sub { shift->() });
+ my %hookids;
+ foreach my $type (keys %hooks) {
+ $hookids{encode_entities($_)}=1 foreach keys %{$hooks{$type}};
+ }
+ my @hookids=sort keys %hookids;
+
if (! -d $config{wikistatedir}) {
mkdir($config{wikistatedir});
}
@@ -895,6 +906,13 @@ sub saveindex () { #{{{
if (exists $depends{$page}) {
$line.=" depends=".encode_entities($depends{$page}, " \t\n");
}
+ if (exists $pagestate{$page}) {
+ foreach my $id (@hookids) {
+ foreach my $key (keys %{$pagestate{$page}{$id}}) {
+ $line.=' '.$id.'_'.encode_entities($key)."=".encode_entities($pagestate{$page}{$id}{$key});
+ }
+ }
+ }
print $out $line."\n" || error("failed writing to $newfile: $!", $cleanup);
}
close $out || error("failed saving to $newfile: $!", $cleanup);
diff --git a/IkiWiki/Plugin/external.pm b/IkiWiki/Plugin/external.pm
index f76b42c99..8d1baa587 100644
--- a/IkiWiki/Plugin/external.pm
+++ b/IkiWiki/Plugin/external.pm
@@ -132,6 +132,24 @@ sub setvar ($$$;@) { #{{{
return $ret;
} #}}}
+sub getstate ($$$$) { #{{{
+ my $plugin=shift;
+ my $page=shift;
+ my $id=shift;
+ my $key=shift;
+
+ return $IkiWiki::pagestate{$page}{$id}{$key};
+} #}}}
+
+sub setstate ($$$$;@) { #{{{
+ my $plugin=shift;
+ my $page=shift;
+ my $id=shift;
+ my $key=shift;
+
+ return $IkiWiki::pagestate{$page}{$id}{$key}=@_;
+} #}}}
+
sub inject ($@) { #{{{
# Bind a given perl function name to a particular RPC request.
my $plugin=shift;
diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm
index ac8890795..968e6ccee 100644
--- a/IkiWiki/Plugin/meta.pm
+++ b/IkiWiki/Plugin/meta.pm
@@ -24,6 +24,7 @@ sub filter (@) { #{{{
my %params=@_;
$meta{$params{page}}='';
+ delete $pagestate{$params{page}}{meta}{redir};
return $params{content};
} # }}}
@@ -72,10 +73,16 @@ sub preprocess (@) { #{{{
elsif ($key eq 'redir') {
my $safe=0;
if ($value !~ /^\w+:\/\//) {
+ add_depends($page, $value);
my $link=bestlink($page, $value);
if (! length $link) {
return "[[meta ".gettext("redir page not found")."]]";
}
+ $pagestate{$page}{meta}{redir}=$link;
+ if ($pagestate{$link}{meta}{redir}) {
+ # TODO: real cycle detection
+ return "[[meta ".gettext("redir not allowed to point to a page that contains a redir")."]]";
+ }
$value=urlto($link, $destpage);
$safe=1;
}
diff --git a/debian/changelog b/debian/changelog
index b96ae08c5..7fc48ed51 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,6 +6,9 @@ ikiwiki (2.16) UNRELEASED; urgency=low
* Redirs added for moved basewiki pages. These will be removed in a future
release.
* Remove .otl file from sandbox to avoid build ugliness. Closes: #454181
+ * Finally implemented a simple per-page data storage mechanism for plugins,
+ via the %pagestate hash.
+ * Use pagestate in meta to detect potential redir loops.
-- Joey Hess <joeyh@debian.org> Mon, 03 Dec 2007 14:47:36 -0500
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index 3ed0a3017..1cb26a076 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -313,6 +313,20 @@ A plugin can access the wiki's configuration via the `%config`
hash. The best way to understand the contents of the hash is to look at
[[ikiwiki.setup]], which sets the hash content to configure the wiki.
+### %pagestate
+
+The `%pagestate` hash can be used by plugins to save state that they will need
+next time ikiwiki is run. The hash holds per-page state, so to set a value,
+use `%pagestate{$page}{$id}{$key}=$value`, and to retrieve the value,
+use `%pagestate{$page}{$id}{$key}`.
+
+`$key` can be any string you like, but `$id` must be the same as the "id"
+parameter passed to `hook()` when registering the plugin. This is so
+ikiwiki can know when to delete pagestate for plugins that are no longer
+used.
+
+When pages are deleted, ikiwiki automatically deletes their pagestate too.
+
### Other variables
If your plugin needs to access data about other pages in the wiki. It can
diff --git a/doc/plugins/write/external.mdwn b/doc/plugins/write/external.mdwn
index 0abc9b0a0..a1a3811dc 100644
--- a/doc/plugins/write/external.mdwn
+++ b/doc/plugins/write/external.mdwn
@@ -49,6 +49,11 @@ to access any such global hash. To get the "url" configuration value,
call `getvar("config", "url")`. To set it, call
`setvar("config", "url", "http://example.com/)`.
+The `%pagestate` is a special hash with a more complex format. To access
+it, external plugins can use the `getstate` and `setstate` RPCs. To access
+stored state, call `getstate("page", "id", "key")`, and to store state,
+call `setstate("page", "id", "key", "value")`.
+
## Notes on function parameters
The [[plugin_interface_documentation|write]] talks about functions that take
diff --git a/doc/todo/plugin_data_storage.mdwn b/doc/todo/plugin_data_storage.mdwn
index 7078a6ed3..21e925b5b 100644
--- a/doc/todo/plugin_data_storage.mdwn
+++ b/doc/todo/plugin_data_storage.mdwn
@@ -66,3 +66,29 @@ which pages have a calendar for the current time. Then ensure they are
rebuilt at least once a day. Currently, it needs a cron job to rebuild
the *whole* wiki every day; with this enhancement, the cron job would only
rebuild the few pages that really need it.
+
+
+---
+
+New design:
+
+`%Ikiwiki::state` is an exported hash that stores per-page state.
+Set with `$state{$page}{id}{key}=$value`. The `id` is the same `id` passed
+to `hook()`.
+
+This is stored in the index like:
+
+src=foo.mdwn dest=bar.mdwn id_key=value [...]
+
+The underscore ensures that there's no conflict with ikiwiki's own
+state variables. (Note that `id` and `key` need to be encoded here.)
+
+Plugins are reponsible for deleting old state info, though ikiwiki will
+handle deleting it if a page is removed.
+
+Ikiwiki needs to know when it can drop state for plugins that are no longer
+enabled. This is done via `hook()` -- if a plugin registers a hook
+ikiwiki knows it's still active, and preserves the state for the hook id.
+If not, that state will be dropped.
+
+[[done]]!! Now to use it..
diff --git a/po/bg.po b/po/bg.po
index 964bacf05..8281dd8cb 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki-bg\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-12-08 15:22-0500\n"
+"POT-Creation-Date: 2007-12-08 17:15-0500\n"
"PO-Revision-Date: 2007-01-12 01:19+0200\n"
"Last-Translator: Damyan Ivanov <dam@modsodtsys.com>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
@@ -42,29 +42,29 @@ msgstr "Предпочитанията са запазени."
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/CGI.pm:441 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:443 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:230 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:99
#: ../IkiWiki/Render.pm:179
msgid "discussion"
msgstr "дискусия"
-#: ../IkiWiki/CGI.pm:487
+#: ../IkiWiki/CGI.pm:489
#, perl-format
msgid "creating %s"
msgstr "създаване на %s"
-#: ../IkiWiki/CGI.pm:505 ../IkiWiki/CGI.pm:524 ../IkiWiki/CGI.pm:534
-#: ../IkiWiki/CGI.pm:567 ../IkiWiki/CGI.pm:615
+#: ../IkiWiki/CGI.pm:507 ../IkiWiki/CGI.pm:526 ../IkiWiki/CGI.pm:536
+#: ../IkiWiki/CGI.pm:569 ../IkiWiki/CGI.pm:617
#, perl-format
msgid "editing %s"
msgstr "промяна на %s"
-#: ../IkiWiki/CGI.pm:709
+#: ../IkiWiki/CGI.pm:711
msgid "You are banned."
msgstr "Достъпът ви е забранен."
-#: ../IkiWiki/CGI.pm:729
+#: ../IkiWiki/CGI.pm:731
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
@@ -233,7 +233,11 @@ msgstr ""
msgid "redir page not found"
msgstr "шаблонът „%s” не е намерен"
-#: ../IkiWiki/Plugin/meta.pm:113
+#: ../IkiWiki/Plugin/meta.pm:82
+msgid "redir not allowed to point to a page that contains a redir"
+msgstr ""
+
+#: ../IkiWiki/Plugin/meta.pm:118
#, fuzzy
msgid "stylesheet not found"
msgstr "шаблонът „%s” не е намерен"
@@ -636,13 +640,13 @@ msgstr "формат: ikiwiki [опции] източник местоназна
msgid "usage: --set var=value"
msgstr ""
-#: ../IkiWiki.pm:128
+#: ../IkiWiki.pm:129
msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
"При използване на пареметъра „--cgi” е необходимо да се укаже и "
"местоположението на уикито чрез параметъра „--url”"
-#: ../IkiWiki.pm:197 ../IkiWiki.pm:198
+#: ../IkiWiki.pm:198 ../IkiWiki.pm:199
msgid "Error"
msgstr "Грешка"
@@ -650,7 +654,7 @@ msgstr "Грешка"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:721
+#: ../IkiWiki.pm:722
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr "открита е циклична завидимост при %s на „%s” на дълбочина %i"
diff --git a/po/cs.po b/po/cs.po
index 24bec8633..59c2719b2 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-12-08 15:22-0500\n"
+"POT-Creation-Date: 2007-12-08 17:15-0500\n"
"PO-Revision-Date: 2007-05-09 21:21+0200\n"
"Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
@@ -40,29 +40,29 @@ msgstr "Nastavení uloženo."
msgid "%s is not an editable page"
msgstr "%s není editovatelná stránka"
-#: ../IkiWiki/CGI.pm:441 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:443 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:230 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:99
#: ../IkiWiki/Render.pm:179
msgid "discussion"
msgstr "diskuse"
-#: ../IkiWiki/CGI.pm:487
+#: ../IkiWiki/CGI.pm:489
#, perl-format
msgid "creating %s"
msgstr "vytvářím %s"
-#: ../IkiWiki/CGI.pm:505 ../IkiWiki/CGI.pm:524 ../IkiWiki/CGI.pm:534
-#: ../IkiWiki/CGI.pm:567 ../IkiWiki/CGI.pm:615
+#: ../IkiWiki/CGI.pm:507 ../IkiWiki/CGI.pm:526 ../IkiWiki/CGI.pm:536
+#: ../IkiWiki/CGI.pm:569 ../IkiWiki/CGI.pm:617
#, perl-format
msgid "editing %s"
msgstr "upravuji %s"
-#: ../IkiWiki/CGI.pm:709
+#: ../IkiWiki/CGI.pm:711
msgid "You are banned."
msgstr "Jste vyhoštěni."
-#: ../IkiWiki/CGI.pm:729
+#: ../IkiWiki/CGI.pm:731
msgid "login failed, perhaps you need to turn on cookies?"
msgstr "přihlášení selhalo; možná si musíte povolit cookies?"
@@ -223,7 +223,11 @@ msgstr ""
msgid "redir page not found"
msgstr "zdroj nebyl nalezen"
-#: ../IkiWiki/Plugin/meta.pm:113
+#: ../IkiWiki/Plugin/meta.pm:82
+msgid "redir not allowed to point to a page that contains a redir"
+msgstr ""
+
+#: ../IkiWiki/Plugin/meta.pm:118
msgid "stylesheet not found"
msgstr "styl nebyl nalezen"
@@ -614,11 +618,11 @@ msgstr "použití: ikiwiki [volby] zdroj cíl"
msgid "usage: --set var=value"
msgstr ""
-#: ../IkiWiki.pm:128
+#: ../IkiWiki.pm:129
msgid "Must specify url to wiki with --url when using --cgi"
msgstr "Při použití --cgi musíte pomocí --url zadat url k wiki"
-#: ../IkiWiki.pm:197 ../IkiWiki.pm:198
+#: ../IkiWiki.pm:198 ../IkiWiki.pm:199
msgid "Error"
msgstr "Chyba"
@@ -626,7 +630,7 @@ msgstr "Chyba"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:721
+#: ../IkiWiki.pm:722
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr "Byla rozpoznána smyčka direktivy %s na %s v hloubce %i"
diff --git a/po/da.po b/po/da.po
index b45c9099f..c6b24768a 100644
--- a/po/da.po
+++ b/po/da.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-12-08 15:22-0500\n"
+"POT-Creation-Date: 2007-12-08 17:15-0500\n"
"PO-Revision-Date: 2007-10-16 23:07+0100\n"
"Last-Translator: Jonas Smedegaard <dr@jones.dk>\n"
"Language-Team: Danish <dansk@klid.dk>\n"
@@ -43,29 +43,29 @@ msgstr "Indstillinger gemt"
msgid "%s is not an editable page"
msgstr "%s er ikke en redigérbar side"
-#: ../IkiWiki/CGI.pm:441 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:443 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:230 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:99
#: ../IkiWiki/Render.pm:179
msgid "discussion"
msgstr "diskussion"
-#: ../IkiWiki/CGI.pm:487
+#: ../IkiWiki/CGI.pm:489
#, perl-format
msgid "creating %s"
msgstr "opretter %s"
-#: ../IkiWiki/CGI.pm:505 ../IkiWiki/CGI.pm:524 ../IkiWiki/CGI.pm:534
-#: ../IkiWiki/CGI.pm:567 ../IkiWiki/CGI.pm:615
+#: ../IkiWiki/CGI.pm:507 ../IkiWiki/CGI.pm:526 ../IkiWiki/CGI.pm:536
+#: ../IkiWiki/CGI.pm:569 ../IkiWiki/CGI.pm:617
#, perl-format
msgid "editing %s"
msgstr "redigerer %s"
-#: ../IkiWiki/CGI.pm:709
+#: ../IkiWiki/CGI.pm:711
msgid "You are banned."
msgstr "Du er banlyst."
-#: ../IkiWiki/CGI.pm:729
+#: ../IkiWiki/CGI.pm:731
msgid "login failed, perhaps you need to turn on cookies?"
msgstr "Pålogning fejlede, måske skal du tillade infokager (cookies)?"
@@ -227,7 +227,11 @@ msgstr ""
msgid "redir page not found"
msgstr "fødning ikke fundet"
-#: ../IkiWiki/Plugin/meta.pm:113
+#: ../IkiWiki/Plugin/meta.pm:82
+msgid "redir not allowed to point to a page that contains a redir"
+msgstr ""
+
+#: ../IkiWiki/Plugin/meta.pm:118
msgid "stylesheet not found"
msgstr "stilsnit (stylesheet) ikke fundet"
@@ -616,11 +620,11 @@ msgstr "brug: ikiwiki [valg] kilde mål"
msgid "usage: --set var=value"
msgstr "brug: --set var=værdi"
-#: ../IkiWiki.pm:128
+#: ../IkiWiki.pm:129
msgid "Must specify url to wiki with --url when using --cgi"
msgstr "Skal angive url til wiki med --url når der bruges --cgi"
-#: ../IkiWiki.pm:197 ../IkiWiki.pm:198
+#: ../IkiWiki.pm:198 ../IkiWiki.pm:199
msgid "Error"
msgstr "Fejl"
@@ -628,7 +632,7 @@ msgstr "Fejl"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:721
+#: ../IkiWiki.pm:722
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr "%s forudberegningssløkke fundet på %s ved dybde %i"
diff --git a/po/es.po b/po/es.po
index adb9e8026..163a047ad 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: es\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-12-08 15:22-0500\n"
+"POT-Creation-Date: 2007-12-08 17:15-0500\n"
"PO-Revision-Date: 2007-04-28 22:01+0200\n"
"Last-Translator: Víctor Moral <victor@taquiones.net>\n"
"Language-Team: Spanish <es@li.org>\n"
@@ -40,29 +40,29 @@ msgstr "Las preferencias se han guardado."
msgid "%s is not an editable page"
msgstr "la página %s no es modificable"
-#: ../IkiWiki/CGI.pm:441 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:443 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:230 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:99
#: ../IkiWiki/Render.pm:179
msgid "discussion"
msgstr "comentarios"
-#: ../IkiWiki/CGI.pm:487
+#: ../IkiWiki/CGI.pm:489
#, perl-format
msgid "creating %s"
msgstr "creando página %s"
-#: ../IkiWiki/CGI.pm:505 ../IkiWiki/CGI.pm:524 ../IkiWiki/CGI.pm:534
-#: ../IkiWiki/CGI.pm:567 ../IkiWiki/CGI.pm:615
+#: ../IkiWiki/CGI.pm:507 ../IkiWiki/CGI.pm:526 ../IkiWiki/CGI.pm:536
+#: ../IkiWiki/CGI.pm:569 ../IkiWiki/CGI.pm:617
#, perl-format
msgid "editing %s"
msgstr "modificando página %s"
-#: ../IkiWiki/CGI.pm:709
+#: ../IkiWiki/CGI.pm:711
msgid "You are banned."
msgstr "Ha sido expulsado."
-#: ../IkiWiki/CGI.pm:729
+#: ../IkiWiki/CGI.pm:731
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
"registro fallido, ¿ tal vez necesita activar las cookies en el navegador ?"
@@ -228,7 +228,11 @@ msgstr ""
msgid "redir page not found"
msgstr "fuente de datos no encontrada"
-#: ../IkiWiki/Plugin/meta.pm:113
+#: ../IkiWiki/Plugin/meta.pm:82
+msgid "redir not allowed to point to a page that contains a redir"
+msgstr ""
+
+#: ../IkiWiki/Plugin/meta.pm:118
msgid "stylesheet not found"
msgstr "hoja de estilo no encontrada "
@@ -621,13 +625,13 @@ msgstr "uso: ikiwiki [opciones] origen destino"
msgid "usage: --set var=value"
msgstr "uso: --set variable=valor"
-#: ../IkiWiki.pm:128
+#: ../IkiWiki.pm:129
msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
"Es obligatorio especificar un url al wiki con el parámetro --url si se "
"utiliza el parámetro --cgi"
-#: ../IkiWiki.pm:197 ../IkiWiki.pm:198
+#: ../IkiWiki.pm:198 ../IkiWiki.pm:199
msgid "Error"
msgstr "Error"
@@ -635,7 +639,7 @@ msgstr "Error"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:721
+#: ../IkiWiki.pm:722
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr ""
diff --git a/po/fr.po b/po/fr.po
index bfe136e59..036cc47e5 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-12-08 15:22-0500\n"
+"POT-Creation-Date: 2007-12-08 17:15-0500\n"
"PO-Revision-Date: 2007-08-28 21:05+0200\n"
"Last-Translator: Cyril Brulebois <cyril.brulebois@enst-bretagne.fr>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
@@ -42,29 +42,29 @@ msgstr "Les préférences ont été enregistrées."
msgid "%s is not an editable page"
msgstr "%s n'est pas une page éditable"
-#: ../IkiWiki/CGI.pm:441 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:443 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:230 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:99
#: ../IkiWiki/Render.pm:179
msgid "discussion"
msgstr "Discussion"
-#: ../IkiWiki/CGI.pm:487
+#: ../IkiWiki/CGI.pm:489
#, perl-format
msgid "creating %s"
msgstr "Création de %s"
-#: ../IkiWiki/CGI.pm:505 ../IkiWiki/CGI.pm:524 ../IkiWiki/CGI.pm:534
-#: ../IkiWiki/CGI.pm:567 ../IkiWiki/CGI.pm:615
+#: ../IkiWiki/CGI.pm:507 ../IkiWiki/CGI.pm:526 ../IkiWiki/CGI.pm:536
+#: ../IkiWiki/CGI.pm:569 ../IkiWiki/CGI.pm:617
#, perl-format
msgid "editing %s"
msgstr "Édition de %s"
-#: ../IkiWiki/CGI.pm:709
+#: ../IkiWiki/CGI.pm:711
msgid "You are banned."
msgstr "Vous avez été banni."
-#: ../IkiWiki/CGI.pm:729
+#: ../IkiWiki/CGI.pm:731
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
"Échec de l'identification, vous devriez peut-être autoriser les cookies."
@@ -229,7 +229,11 @@ msgstr ""
msgid "redir page not found"
msgstr "Flux introuvable "
-#: ../IkiWiki/Plugin/meta.pm:113
+#: ../IkiWiki/Plugin/meta.pm:82
+msgid "redir not allowed to point to a page that contains a redir"
+msgstr ""
+
+#: ../IkiWiki/Plugin/meta.pm:118
msgid "stylesheet not found"
msgstr "Feuille de style introuvable "
@@ -621,13 +625,13 @@ msgstr "Syntaxe : ikiwiki [options] source destination"
msgid "usage: --set var=value"
msgstr "Syntaxe : -- set var=valeur"
-#: ../IkiWiki.pm:128
+#: ../IkiWiki.pm:129
msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
"Vous devez indiquer une URL vers le wiki par --url lors de l'utilisation de "
"--cgi"
-#: ../IkiWiki.pm:197 ../IkiWiki.pm:198
+#: ../IkiWiki.pm:198 ../IkiWiki.pm:199
msgid "Error"
msgstr "Erreur"
@@ -635,7 +639,7 @@ msgstr "Erreur"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:721
+#: ../IkiWiki.pm:722
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr ""
diff --git a/po/gu.po b/po/gu.po
index 72e9a5cc6..b99c6c88d 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki-gu\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-12-08 15:22-0500\n"
+"POT-Creation-Date: 2007-12-08 17:15-0500\n"
"PO-Revision-Date: 2007-01-11 16:05+0530\n"
"Last-Translator: Kartik Mistry <kartik.mistry@gmail.com>\n"
"Language-Team: Gujarati <team@utkarsh.org>\n"
@@ -41,29 +41,29 @@ msgstr "પ્રાથમિકતાઓ સંગ્રહાઇ."
msgid "%s is not an editable page"
msgstr "%s એ સુધારી શકાય તેવું પાનું નથી"
-#: ../IkiWiki/CGI.pm:441 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:443 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:230 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:99
#: ../IkiWiki/Render.pm:179
msgid "discussion"
msgstr "ચર્ચા"
-#: ../IkiWiki/CGI.pm:487
+#: ../IkiWiki/CGI.pm:489
#, perl-format
msgid "creating %s"
msgstr "%s બનાવે છે"
-#: ../IkiWiki/CGI.pm:505 ../IkiWiki/CGI.pm:524 ../IkiWiki/CGI.pm:534
-#: ../IkiWiki/CGI.pm:567 ../IkiWiki/CGI.pm:615
+#: ../IkiWiki/CGI.pm:507 ../IkiWiki/CGI.pm:526 ../IkiWiki/CGI.pm:536
+#: ../IkiWiki/CGI.pm:569 ../IkiWiki/CGI.pm:617
#, perl-format
msgid "editing %s"
msgstr "%s સુધારે છે"
-#: ../IkiWiki/CGI.pm:709
+#: ../IkiWiki/CGI.pm:711
msgid "You are banned."
msgstr "તમારા પર પ્રતિબંધ છે."
-#: ../IkiWiki/CGI.pm:729
+#: ../IkiWiki/CGI.pm:731
msgid "login failed, perhaps you need to turn on cookies?"
msgstr "પ્રવેશ નિષ્ફળ, કદાચ તમારી કુકીઓ સક્રિય બનાવવી પડશે?"
@@ -223,7 +223,11 @@ msgstr "Markdown.pm પર્લ મોડ્યુલ (%s) અથવા /usr/bi
msgid "redir page not found"
msgstr "ફીડ મળ્યું નહી"
-#: ../IkiWiki/Plugin/meta.pm:113
+#: ../IkiWiki/Plugin/meta.pm:82
+msgid "redir not allowed to point to a page that contains a redir"
+msgstr ""
+
+#: ../IkiWiki/Plugin/meta.pm:118
msgid "stylesheet not found"
msgstr "સ્ટાઇલશીટ મળ્યું નહી"
@@ -612,11 +616,11 @@ msgstr "ઉપયોગ: ikiwiki [વિકલ્પો] source dest"
msgid "usage: --set var=value"
msgstr ""
-#: ../IkiWiki.pm:128
+#: ../IkiWiki.pm:129
msgid "Must specify url to wiki with --url when using --cgi"
msgstr "જ્યારે --cgi ઉપયોગ કરતાં હોય ત્યારે વીકીનું યુઆરએલ સ્પષ્ટ કરવું જ પડશે"
-#: ../IkiWiki.pm:197 ../IkiWiki.pm:198
+#: ../IkiWiki.pm:198 ../IkiWiki.pm:199
msgid "Error"
msgstr "ક્ષતિ"
@@ -624,7 +628,7 @@ msgstr "ક્ષતિ"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:721
+#: ../IkiWiki.pm:722
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr "%s પર શોધાયેલ લુપ %s પર ચલાવે છે %i ઉંડાણ પર"
diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot
index ded390439..66659457a 100644
--- a/po/ikiwiki.pot
+++ b/po/ikiwiki.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-12-08 16:00-0500\n"
+"POT-Creation-Date: 2007-12-08 17:38-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -218,11 +218,15 @@ msgstr ""
msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
msgstr ""
-#: ../IkiWiki/Plugin/meta.pm:77
+#: ../IkiWiki/Plugin/meta.pm:79
msgid "redir page not found"
msgstr ""
-#: ../IkiWiki/Plugin/meta.pm:113
+#: ../IkiWiki/Plugin/meta.pm:84
+msgid "redir not allowed to point to a page that contains a redir"
+msgstr ""
+
+#: ../IkiWiki/Plugin/meta.pm:120
msgid "stylesheet not found"
msgstr ""
@@ -606,11 +610,11 @@ msgstr ""
msgid "usage: --set var=value"
msgstr ""
-#: ../IkiWiki.pm:128
+#: ../IkiWiki.pm:129
msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
-#: ../IkiWiki.pm:197 ../IkiWiki.pm:198
+#: ../IkiWiki.pm:198 ../IkiWiki.pm:199
msgid "Error"
msgstr ""
@@ -618,7 +622,7 @@ msgstr ""
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:721
+#: ../IkiWiki.pm:722
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr ""
diff --git a/po/pl.po b/po/pl.po
index 0d141e6df..36f36c3cf 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 1.51\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-12-08 15:22-0500\n"
+"POT-Creation-Date: 2007-12-08 17:15-0500\n"
"PO-Revision-Date: 2007-04-27 22:05+0200\n"
"Last-Translator: Pawel Tecza <ptecza@net.icm.edu.pl>\n"
"Language-Team: Debian L10n Polish <debian-l10n-polish@lists.debian.org>\n"
@@ -42,29 +42,29 @@ msgstr "Preferencje zapisane."
msgid "%s is not an editable page"
msgstr "Strona %s nie może być edytowana"
-#: ../IkiWiki/CGI.pm:441 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:443 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:230 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:99
#: ../IkiWiki/Render.pm:179
msgid "discussion"
msgstr "dyskusja"
-#: ../IkiWiki/CGI.pm:487
+#: ../IkiWiki/CGI.pm:489
#, perl-format
msgid "creating %s"
msgstr "tworzenie %s"
-#: ../IkiWiki/CGI.pm:505 ../IkiWiki/CGI.pm:524 ../IkiWiki/CGI.pm:534
-#: ../IkiWiki/CGI.pm:567 ../IkiWiki/CGI.pm:615
+#: ../IkiWiki/CGI.pm:507 ../IkiWiki/CGI.pm:526 ../IkiWiki/CGI.pm:536
+#: ../IkiWiki/CGI.pm:569 ../IkiWiki/CGI.pm:617
#, perl-format
msgid "editing %s"
msgstr "edycja %s"
-#: ../IkiWiki/CGI.pm:709
+#: ../IkiWiki/CGI.pm:711
msgid "You are banned."
msgstr "Twój dostęp został zabroniony przez administratora."
-#: ../IkiWiki/CGI.pm:729
+#: ../IkiWiki/CGI.pm:731
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
"Nieudane logowanie. Proszę sprawdzić czy w przeglądarce włączone są "
@@ -236,7 +236,11 @@ msgstr ""
msgid "redir page not found"
msgstr "nieznaleziony kanał RSS"
-#: ../IkiWiki/Plugin/meta.pm:113
+#: ../IkiWiki/Plugin/meta.pm:82
+msgid "redir not allowed to point to a page that contains a redir"
+msgstr ""
+
+#: ../IkiWiki/Plugin/meta.pm:118
#, fuzzy
msgid "stylesheet not found"
msgstr "nieznaleziony szablon ze stylami CSS"
@@ -641,13 +645,13 @@ msgstr "użycie: ikiwiki [parametry] źródło cel"
msgid "usage: --set var=value"
msgstr ""
-#: ../IkiWiki.pm:128
+#: ../IkiWiki.pm:129
msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
"Użycie parametru --cgi wymaga podania adresu URL do wiki za pomocą parametru "
"--url"
-#: ../IkiWiki.pm:197 ../IkiWiki.pm:198
+#: ../IkiWiki.pm:198 ../IkiWiki.pm:199
msgid "Error"
msgstr "Błąd"
@@ -655,7 +659,7 @@ msgstr "Błąd"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:721
+#: ../IkiWiki.pm:722
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr "polecenie preprocesora %s wykryte w %s na głębokości %i"
diff --git a/po/sv.po b/po/sv.po
index ac73d21d3..1bfadd088 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-12-08 15:22-0500\n"
+"POT-Creation-Date: 2007-12-08 17:15-0500\n"
"PO-Revision-Date: 2007-01-10 23:47+0100\n"
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -41,29 +41,29 @@ msgstr "Inställningar sparades."
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/CGI.pm:441 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:443 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:230 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:99
#: ../IkiWiki/Render.pm:179
msgid "discussion"
msgstr "diskussion"
-#: ../IkiWiki/CGI.pm:487
+#: ../IkiWiki/CGI.pm:489
#, perl-format
msgid "creating %s"
msgstr "skapar %s"
-#: ../IkiWiki/CGI.pm:505 ../IkiWiki/CGI.pm:524 ../IkiWiki/CGI.pm:534
-#: ../IkiWiki/CGI.pm:567 ../IkiWiki/CGI.pm:615
+#: ../IkiWiki/CGI.pm:507 ../IkiWiki/CGI.pm:526 ../IkiWiki/CGI.pm:536
+#: ../IkiWiki/CGI.pm:569 ../IkiWiki/CGI.pm:617
#, perl-format
msgid "editing %s"
msgstr "redigerar %s"
-#: ../IkiWiki/CGI.pm:709
+#: ../IkiWiki/CGI.pm:711
msgid "You are banned."
msgstr "Du är bannlyst."
-#: ../IkiWiki/CGI.pm:729
+#: ../IkiWiki/CGI.pm:731
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
@@ -229,7 +229,11 @@ msgstr ""
msgid "redir page not found"
msgstr "mallen %s hittades inte"
-#: ../IkiWiki/Plugin/meta.pm:113
+#: ../IkiWiki/Plugin/meta.pm:82
+msgid "redir not allowed to point to a page that contains a redir"
+msgstr ""
+
+#: ../IkiWiki/Plugin/meta.pm:118
#, fuzzy
msgid "stylesheet not found"
msgstr "mallen %s hittades inte"
@@ -632,11 +636,11 @@ msgstr "användning: ikiwiki [flaggor] källa mål"
msgid "usage: --set var=value"
msgstr ""
-#: ../IkiWiki.pm:128
+#: ../IkiWiki.pm:129
msgid "Must specify url to wiki with --url when using --cgi"
msgstr "Måste ange url till wiki med --url när --cgi används"
-#: ../IkiWiki.pm:197 ../IkiWiki.pm:198
+#: ../IkiWiki.pm:198 ../IkiWiki.pm:199
msgid "Error"
msgstr "Fel"
@@ -644,7 +648,7 @@ msgstr "Fel"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:721
+#: ../IkiWiki.pm:722
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr "%s förbehandlingsslinga detekterades på %s, djup %i"
diff --git a/po/vi.po b/po/vi.po
index 642749e2d..066d9c341 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-12-08 15:22-0500\n"
+"POT-Creation-Date: 2007-12-08 17:15-0500\n"
"PO-Revision-Date: 2007-01-13 15:31+1030\n"
"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
@@ -42,29 +42,29 @@ msgstr "Tùy thích đã được lưu."
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/CGI.pm:441 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:443 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:230 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:99
#: ../IkiWiki/Render.pm:179
msgid "discussion"
msgstr "thảo luận"
-#: ../IkiWiki/CGI.pm:487
+#: ../IkiWiki/CGI.pm:489
#, perl-format
msgid "creating %s"
msgstr "đang tạo %s"
-#: ../IkiWiki/CGI.pm:505 ../IkiWiki/CGI.pm:524 ../IkiWiki/CGI.pm:534
-#: ../IkiWiki/CGI.pm:567 ../IkiWiki/CGI.pm:615
+#: ../IkiWiki/CGI.pm:507 ../IkiWiki/CGI.pm:526 ../IkiWiki/CGI.pm:536
+#: ../IkiWiki/CGI.pm:569 ../IkiWiki/CGI.pm:617
#, perl-format
msgid "editing %s"
msgstr "đang sửa %s"
-#: ../IkiWiki/CGI.pm:709
+#: ../IkiWiki/CGI.pm:711
msgid "You are banned."
msgstr "Bạn bị cấm ra."
-#: ../IkiWiki/CGI.pm:729
+#: ../IkiWiki/CGI.pm:731
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
@@ -230,7 +230,11 @@ msgstr "lỗi nạp mô-đun perl Markdown.pm (%s) hay « /usr/bin/markdown » (
msgid "redir page not found"
msgstr "không tìm thấy mẫu %s"
-#: ../IkiWiki/Plugin/meta.pm:113
+#: ../IkiWiki/Plugin/meta.pm:82
+msgid "redir not allowed to point to a page that contains a redir"
+msgstr ""
+
+#: ../IkiWiki/Plugin/meta.pm:118
#, fuzzy
msgid "stylesheet not found"
msgstr "không tìm thấy mẫu %s"
@@ -630,12 +634,12 @@ msgstr "cách sử dụng: ikiwiki [tùy chọn] nguồn đích"
msgid "usage: --set var=value"
msgstr ""
-#: ../IkiWiki.pm:128
+#: ../IkiWiki.pm:129
msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
"Cần phải xác định địa chỉ URL tới wiki với « --url » khi dùng « --cgi »"
-#: ../IkiWiki.pm:197 ../IkiWiki.pm:198
+#: ../IkiWiki.pm:198 ../IkiWiki.pm:199
msgid "Error"
msgstr "Lỗi"
@@ -643,7 +647,7 @@ msgstr "Lỗi"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:721
+#: ../IkiWiki.pm:722
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr "vòng lặp tiền xử lý %s được phát hiện trên %s ở độ sâu %i"