From fa59bfad847a9895a37803bc21fb28a27f0fc368 Mon Sep 17 00:00:00 2001 From: "http://www.google.com/profiles/lingo.t.l.chen" Date: Sat, 9 Jan 2010 13:56:39 +0000 Subject: --- doc/bugs/utf-8_bug_in_websetup.pm.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/bugs/utf-8_bug_in_websetup.pm.mdwn b/doc/bugs/utf-8_bug_in_websetup.pm.mdwn index efa2c9ffe..c3a5262cd 100644 --- a/doc/bugs/utf-8_bug_in_websetup.pm.mdwn +++ b/doc/bugs/utf-8_bug_in_websetup.pm.mdwn @@ -1,4 +1,4 @@ -[[!tag patch]] +[[!tag patch bugs]] I type chinese characters into the fields. After press "save setup" button the characters turn into gibberish. -- cgit v1.2.3 From a8258dea709c801b148635feaa78bf99e077c5a6 Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawn1lGvpPZ8dpuLSPLPa-jqpMef2KqeB1qI" Date: Sat, 9 Jan 2010 19:47:32 +0000 Subject: new forum thread --- .../link_to_an_image_inside_the_wiki_without_inlining_it.mdwn | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn diff --git a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn new file mode 100644 index 000000000..2ec18d3a5 --- /dev/null +++ b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn @@ -0,0 +1,9 @@ +how can I create a link to an image which is part of the wiki, without having it inserted in my page? + +I tought this: + +[[look at this|img/lolcat.png]] + +would work, but it doesn't. + +Any hints? -- cgit v1.2.3 From 3d729ee170ef7a3c1ac5210fd1b648ea1128f73d Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawn1lGvpPZ8dpuLSPLPa-jqpMef2KqeB1qI" Date: Sat, 9 Jan 2010 19:48:19 +0000 Subject: corrected wikilink text --- doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn index 2ec18d3a5..ce7baba50 100644 --- a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn +++ b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn @@ -2,7 +2,7 @@ how can I create a link to an image which is part of the wiki, without having it I tought this: -[[look at this|img/lolcat.png]] + \[[look at this|img/lolcat.png]] would work, but it doesn't. -- cgit v1.2.3 From a0e06556db4a5c67f1fdf6f6dc4b6d275137b996 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 9 Jan 2010 15:50:40 -0500 Subject: response --- ..._image_inside_the_wiki_without_inlining_it.mdwn | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn index ce7baba50..f58b6b359 100644 --- a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn +++ b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn @@ -7,3 +7,35 @@ I tought this: would work, but it doesn't. Any hints? + +> Well, currently the syntax above will display the image +> inline with the specified link text used as an alt attribute. Although +> that does not seem to be documented anywhere. +> +> A few places that use that (found with `git grep '\[\[' | egrep 'png|gif|jpeg|jpg' |grep \|`): +> +> * [[logos]] uses it to provide useful alt texts for the logos. (This +> could easily be changed to use [[ikiwiki/directives/img]] though.) +> * The `change.tmpl` template uses it to display +> the [[diff|wikiicons/diff.png]] with a very useful "diff" alt text. +> Using [[ikiwiki/directives/img]] here would mean that the +> [[ikiwiki/plugins/recentchanges]] plugin would depend upon the img +> plugin. +> +> I do like your suggestion, it makes more sense than the current behavior. +> I'm not sure the transition pain to get from here to there is worth it, +> though. +> +> More broadly, if I were writing ikiwiki now, I might choose to leave out the +> auto-inlining of images altogether. In practice, it has added a certian level +> of complexity to ikiwiki, with numerous plugins needing to specify +> `noimageinline` to avoid accidentially inlining an image. And there has not +> been a lot of payoff from having the auto-inlining feature implicitly +> available most places. And the img directive allows much needed control over +> display, so it would be better for users to not have to worry about its +> lesser cousin. But the transition from here to *there* would be another order +> of pain. +> +> Anyway, the cheap and simple answer to your question is to use html +> or markdown instead of a [[ikiwiki/wikilink]]. Ie, +> `[look at this](img/lolcat.jpg)`. --[[Joey]] -- cgit v1.2.3 From fb0524bd9be5f47cd71d89e2443665dd65d66c0f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 9 Jan 2010 15:51:31 -0500 Subject: links --- doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn index f58b6b359..91573d4b5 100644 --- a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn +++ b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn @@ -14,12 +14,12 @@ Any hints? > > A few places that use that (found with `git grep '\[\[' | egrep 'png|gif|jpeg|jpg' |grep \|`): > -> * [[logos]] uses it to provide useful alt texts for the logos. (This +> * [[logo]] uses it to provide useful alt texts for the logos. (This > could easily be changed to use [[ikiwiki/directives/img]] though.) > * The `change.tmpl` template uses it to display > the [[diff|wikiicons/diff.png]] with a very useful "diff" alt text. > Using [[ikiwiki/directives/img]] here would mean that the -> [[ikiwiki/plugins/recentchanges]] plugin would depend upon the img +> [[plugins/recentchanges]] plugin would depend upon the img > plugin. > > I do like your suggestion, it makes more sense than the current behavior. -- cgit v1.2.3 From 9d673e31e755a0e1595d3472de12937517d3a24a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 9 Jan 2010 15:51:52 -0500 Subject: links --- doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn index 91573d4b5..8a7fd7a29 100644 --- a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn +++ b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn @@ -15,10 +15,10 @@ Any hints? > A few places that use that (found with `git grep '\[\[' | egrep 'png|gif|jpeg|jpg' |grep \|`): > > * [[logo]] uses it to provide useful alt texts for the logos. (This -> could easily be changed to use [[ikiwiki/directives/img]] though.) +> could easily be changed to use [[ikiwiki/directive/img]] though.) > * The `change.tmpl` template uses it to display > the [[diff|wikiicons/diff.png]] with a very useful "diff" alt text. -> Using [[ikiwiki/directives/img]] here would mean that the +> Using [[ikiwiki/directive/img]] here would mean that the > [[plugins/recentchanges]] plugin would depend upon the img > plugin. > -- cgit v1.2.3 From 6a0af02d3f30103196b9452077b5a68177c9fde4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 9 Jan 2010 16:07:01 -0500 Subject: make decode_form_utf8 safe for arrays --- IkiWiki/CGI.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 866711a71..cd4a5574c 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -65,8 +65,9 @@ sub decode_form_utf8 ($) { if ($] >= 5.01) { my $form = shift; foreach my $f ($form->field) { + my @value=map { decode_utf8($_) } $form->field($f); $form->field(name => $f, - value => decode_utf8($form->field($f)), + value => \@value, force => 1, ); } -- cgit v1.2.3 From d249f674161bcee5ee7387dfe2600e9e20292bc8 Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawn1lGvpPZ8dpuLSPLPa-jqpMef2KqeB1qI" Date: Sat, 9 Jan 2010 21:11:25 +0000 Subject: --- doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn index 8a7fd7a29..67bb7f85f 100644 --- a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn +++ b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn @@ -6,7 +6,7 @@ I tought this: would work, but it doesn't. -Any hints? +Any hints? --[[jerojasro]] > Well, currently the syntax above will display the image > inline with the specified link text used as an alt attribute. Although @@ -39,3 +39,6 @@ Any hints? > Anyway, the cheap and simple answer to your question is to use html > or markdown instead of a [[ikiwiki/wikilink]]. Ie, > `[look at this](img/lolcat.jpg)`. --[[Joey]] + +> > thanks a lot, that's a quite straightforward solution. I actually wrote a +> > broken plugin to do that, and now I can ditch it --[[jerojasro]] -- cgit v1.2.3 From fe0f6866841d6fb6e85dec42e88c56114d98e7f4 Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawn1lGvpPZ8dpuLSPLPa-jqpMef2KqeB1qI" Date: Sat, 9 Jan 2010 21:12:00 +0000 Subject: --- doc/users/jerojasro.mdwn | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/users/jerojasro.mdwn diff --git a/doc/users/jerojasro.mdwn b/doc/users/jerojasro.mdwn new file mode 100644 index 000000000..4b331a0b9 --- /dev/null +++ b/doc/users/jerojasro.mdwn @@ -0,0 +1 @@ +Javier Rojas -- cgit v1.2.3 From 59d929d6b1271c84c6d17ffbff65b57bf67d49e6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 9 Jan 2010 16:20:09 -0500 Subject: websetup: Fix utf-8 problems. --- IkiWiki/Plugin/websetup.pm | 9 +++++++-- debian/changelog | 1 + doc/bugs/utf-8_bug_in_websetup.pm.mdwn | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/websetup.pm b/IkiWiki/Plugin/websetup.pm index 9edd22d26..75aa3681c 100644 --- a/IkiWiki/Plugin/websetup.pm +++ b/IkiWiki/Plugin/websetup.pm @@ -139,7 +139,11 @@ sub showfields ($$$@) { my $value=$config{$key}; if ($info{safe} && (ref $value eq 'ARRAY' || ref $info{example} eq 'ARRAY')) { - $value=[(ref $value eq 'ARRAY' ? @{$value} : ""), "", ""]; # blank items for expansion + $value=[(ref $value eq 'ARRAY' ? map { Encode::encode_utf8($_) } @{$value} : ""), + "", ""]; # blank items for expansion + } + else { + $value=Encode::encode_utf8($value); } if ($info{type} eq "string") { @@ -290,7 +294,6 @@ sub showform ($$) { shift->(form => $form, cgi => $cgi, session => $session, buttons => $buttons); }); - IkiWiki::decode_form_utf8($form); my %fields=showfields($form, undef, undef, IkiWiki::getsetup()); @@ -308,6 +311,8 @@ sub showform ($$) { $fields{$_}=$shown{$_} foreach keys %shown; } } + + IkiWiki::decode_form_utf8($form); if ($form->submitted eq "Cancel") { IkiWiki::redirect($cgi, $config{url}); diff --git a/debian/changelog b/debian/changelog index 4f7c1a60c..5d5cdd564 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,7 @@ ikiwiki (3.20100104) UNRELEASED; urgency=low are disabled. * comments: Fix permalinks for comments using new conflict-free filenames. * img: Support alignment of images with captions. (Giuseppe Bilotta) + * websetup: Fix utf-8 problems. -- Joey Hess Mon, 04 Jan 2010 12:53:24 -0500 diff --git a/doc/bugs/utf-8_bug_in_websetup.pm.mdwn b/doc/bugs/utf-8_bug_in_websetup.pm.mdwn index c3a5262cd..debedb01c 100644 --- a/doc/bugs/utf-8_bug_in_websetup.pm.mdwn +++ b/doc/bugs/utf-8_bug_in_websetup.pm.mdwn @@ -4,6 +4,8 @@ I type chinese characters into the fields. After press "save setup" button the c I submit a patch that solve the problem for me. --Lingo +> Fully fixing it is slightly more complex, but now [[done]] --[[Joey]] + ---- --- websetup.pm 2009-12-02 05:07:46.000000000 +0800 -- cgit v1.2.3 From 1f51af907e93ee45b01a4a7f6015575522a3105d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 9 Jan 2010 16:27:08 -0500 Subject: websetup: Fix bug in array change detection. --- IkiWiki/Plugin/websetup.pm | 6 +++++- debian/changelog | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/websetup.pm b/IkiWiki/Plugin/websetup.pm index 75aa3681c..e477bcc20 100644 --- a/IkiWiki/Plugin/websetup.pm +++ b/IkiWiki/Plugin/websetup.pm @@ -362,7 +362,11 @@ sub showform ($$) { @value=sort grep { length $_ } @value; my @oldvalue=sort grep { length $_ } (defined $config{$key} ? @{$config{$key}} : ()); - if ((@oldvalue) == (@value)) { + my $same=(@oldvalue) == (@value); + for (my $x=0; $same && $x < @value; $x++) { + $same=0 if $value[$x] ne $oldvalue[$x]; + } + if ($same) { delete $rebuild{$field}; } else { diff --git a/debian/changelog b/debian/changelog index 5d5cdd564..bd638b36f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,7 @@ ikiwiki (3.20100104) UNRELEASED; urgency=low * comments: Fix permalinks for comments using new conflict-free filenames. * img: Support alignment of images with captions. (Giuseppe Bilotta) * websetup: Fix utf-8 problems. + * websetup: Fix bug in array change detection. -- Joey Hess Mon, 04 Jan 2010 12:53:24 -0500 -- cgit v1.2.3 From cebf8784f02d4706de4b98b76a8153cc32ff09b9 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 9 Jan 2010 16:30:26 -0500 Subject: followup --- .../link_to_an_image_inside_the_wiki_without_inlining_it.mdwn | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn index 67bb7f85f..045f8cc68 100644 --- a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn +++ b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn @@ -42,3 +42,14 @@ Any hints? --[[jerojasro]] > > thanks a lot, that's a quite straightforward solution. I actually wrote a > > broken plugin to do that, and now I can ditch it --[[jerojasro]] + +>>> The plugin approach is not a bad idea if you want either the ability +>>> to: +>>> +>>> * Have things that are wikilink-aware (like [[plugins/brokenlinks]] +>>> treat your link to the image as a wikilink. +>>> * Use standard wikilink path stuff (and not have to worry about +>>> a raw html link breaking if the page it's on is inlined, for +>>> example). +>>> +>>> I can help you bang that plugin into shape if need be. --[[Joey]] -- cgit v1.2.3 From 10ca7c8f8ac2801ce50a362c58a3561add0b057e Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawn1lGvpPZ8dpuLSPLPa-jqpMef2KqeB1qI" Date: Sat, 9 Jan 2010 21:33:05 +0000 Subject: details about user jerojasro --- doc/users/jerojasro.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/users/jerojasro.mdwn b/doc/users/jerojasro.mdwn index 4b331a0b9..e2e620d3f 100644 --- a/doc/users/jerojasro.mdwn +++ b/doc/users/jerojasro.mdwn @@ -1 +1,3 @@ Javier Rojas + +I keep a personal [wiki](http://devnull.li/~jerojasro/wiki) and my [blog](http://devnull.li/~jerojasro/blog) in ikiwiki. -- cgit v1.2.3 From cf7d03ec80e168ad18d65a90842773da353ee060 Mon Sep 17 00:00:00 2001 From: intrigeri Date: Sat, 9 Jan 2010 22:57:11 +0100 Subject: fixed bug in my po branch, please pull --- doc/todo/Fix_selflink_in_po_plugin.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/todo/Fix_selflink_in_po_plugin.mdwn b/doc/todo/Fix_selflink_in_po_plugin.mdwn index ae59e14c2..55968e3d7 100644 --- a/doc/todo/Fix_selflink_in_po_plugin.mdwn +++ b/doc/todo/Fix_selflink_in_po_plugin.mdwn @@ -2,3 +2,5 @@ Using the po plugin, a link to /bla is present in the sidebar. When viewing /bla in the default language, this link is detected as a selflink. When viewing a translation of /bla, it isn't. --[[intrigeri]] + +Fixed in my po branch => [[!tag patch]]. --[[intrigeri]] -- cgit v1.2.3 From 62a67e161bccba431b8b8a501967ba7acf6e197a Mon Sep 17 00:00:00 2001 From: intrigeri Date: Sat, 9 Jan 2010 22:59:46 +0100 Subject: wiki syntax fix --- doc/todo/Fix_selflink_in_po_plugin.mdwn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/todo/Fix_selflink_in_po_plugin.mdwn b/doc/todo/Fix_selflink_in_po_plugin.mdwn index 55968e3d7..87fa38911 100644 --- a/doc/todo/Fix_selflink_in_po_plugin.mdwn +++ b/doc/todo/Fix_selflink_in_po_plugin.mdwn @@ -3,4 +3,6 @@ When viewing /bla in the default language, this link is detected as a selflink. When viewing a translation of /bla, it isn't. --[[intrigeri]] -Fixed in my po branch => [[!tag patch]]. --[[intrigeri]] +Fixed in my po branch. --[[intrigeri]] + +[[!tag patch]] -- cgit v1.2.3 From f00b15cc369e1e3b7949a10a6fa9d8688f60a82f Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawn1lGvpPZ8dpuLSPLPa-jqpMef2KqeB1qI" Date: Sat, 9 Jan 2010 23:00:00 +0000 Subject: help request with plugin draft --- .../link_to_an_image_inside_the_wiki_without_inlining_it.mdwn | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn index 045f8cc68..2b91cd856 100644 --- a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn +++ b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn @@ -53,3 +53,10 @@ Any hints? --[[jerojasro]] >>> example). >>> >>> I can help you bang that plugin into shape if need be. --[[Joey]] + +>>>> both my plugin and your suggestion yield broken html links when inlining the page +>>>> +>>>> I thought using the `bestlink` function would take care of that, but alas, it doesn't. +>>>> Get the "plugin" [here](http://devnull.li/~jerojasro/files/linktoimgonly.pm), see the broken +>>>> links generated [here](http://devnull.li/~jerojasro/blog/posts/job_offers/) and the source +>>>> file for that page [here](http://git.devnull.li/cgi-bin/gitweb.cgi?p=blog-jerojasro.git;a=blob;f=posts/job_offers.mdwn;hb=HEAD) --[[jerojasro]] -- cgit v1.2.3 From fc760812130b2acfad6105d8444af730d3785cbe Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawn1lGvpPZ8dpuLSPLPa-jqpMef2KqeB1qI" Date: Sat, 9 Jan 2010 23:50:23 +0000 Subject: --- doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn index 2b91cd856..3b19bab15 100644 --- a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn +++ b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn @@ -54,7 +54,7 @@ Any hints? --[[jerojasro]] >>> >>> I can help you bang that plugin into shape if need be. --[[Joey]] ->>>> both my plugin and your suggestion yield broken html links when inlining the page +>>>> both my plugin and your suggestion yield broken html links when inlining the page (although propably that's what is expected from your suggestion (`[]()`)) >>>> >>>> I thought using the `bestlink` function would take care of that, but alas, it doesn't. >>>> Get the "plugin" [here](http://devnull.li/~jerojasro/files/linktoimgonly.pm), see the broken -- cgit v1.2.3 From a23d3b6547b80064f8e9af94076aa43798cf6558 Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawn1lGvpPZ8dpuLSPLPa-jqpMef2KqeB1qI" Date: Sat, 9 Jan 2010 23:50:45 +0000 Subject: --- doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn index 3b19bab15..53544e2c4 100644 --- a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn +++ b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn @@ -54,7 +54,7 @@ Any hints? --[[jerojasro]] >>> >>> I can help you bang that plugin into shape if need be. --[[Joey]] ->>>> both my plugin and your suggestion yield broken html links when inlining the page (although propably that's what is expected from your suggestion (`[]()`)) +>>>> both my plugin and your suggestion yield broken html links when inlining the page (although probably that's what is expected from your suggestion (`[]()`)) >>>> >>>> I thought using the `bestlink` function would take care of that, but alas, it doesn't. >>>> Get the "plugin" [here](http://devnull.li/~jerojasro/files/linktoimgonly.pm), see the broken -- cgit v1.2.3 From 149e8e1c62a11d73f2fbea4e653cff7f3460c8f2 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 9 Jan 2010 21:25:37 -0500 Subject: response --- .../link_to_an_image_inside_the_wiki_without_inlining_it.mdwn | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn index 53544e2c4..e92cc1b1c 100644 --- a/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn +++ b/doc/forum/link_to_an_image_inside_the_wiki_without_inlining_it.mdwn @@ -49,7 +49,7 @@ Any hints? --[[jerojasro]] >>> * Have things that are wikilink-aware (like [[plugins/brokenlinks]] >>> treat your link to the image as a wikilink. >>> * Use standard wikilink path stuff (and not have to worry about ->>> a raw html link breaking if the page it's on is inlined, for +>>> a relative html link breaking if the page it's on is inlined, for >>> example). >>> >>> I can help you bang that plugin into shape if need be. --[[Joey]] @@ -60,3 +60,10 @@ Any hints? --[[jerojasro]] >>>> Get the "plugin" [here](http://devnull.li/~jerojasro/files/linktoimgonly.pm), see the broken >>>> links generated [here](http://devnull.li/~jerojasro/blog/posts/job_offers/) and the source >>>> file for that page [here](http://git.devnull.li/cgi-bin/gitweb.cgi?p=blog-jerojasro.git;a=blob;f=posts/job_offers.mdwn;hb=HEAD) --[[jerojasro]] + +>>>>> Use this --[[Joey]] + + return htmllink($params{page}, $params{destpage}, $params{"img"}, + linktext => $params{text}, + noimageinline => 1); + -- cgit v1.2.3 From 9dc5685de44760d2c06a0376c97eb699de2f2964 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 9 Jan 2010 23:10:26 -0500 Subject: linkmap: Simplify and improve browser compatability by using an img, not object tag. I noticed that chromium was not hyperlinking the areas in the object-based linkmap, while img works ok. Dunno why, but img based is nicer anyway since it is allowed right through the htmlscrubber with no workarounds. --- IkiWiki/Plugin/linkmap.pm | 30 ++++-------------------------- debian/changelog | 2 ++ 2 files changed, 6 insertions(+), 26 deletions(-) diff --git a/IkiWiki/Plugin/linkmap.pm b/IkiWiki/Plugin/linkmap.pm index 28acbda32..68eb6c8c6 100644 --- a/IkiWiki/Plugin/linkmap.pm +++ b/IkiWiki/Plugin/linkmap.pm @@ -9,7 +9,6 @@ use IPC::Open2; sub import { hook(type => "getsetup", id => "linkmap", call => \&getsetup); hook(type => "preprocess", id => "linkmap", call => \&preprocess); - hook(type => "format", id => "linkmap", call => \&format); } sub getsetup () { @@ -21,34 +20,13 @@ sub getsetup () { } my $mapnum=0; -my %maps; sub preprocess (@) { my %params=@_; $params{pages}="*" unless defined $params{pages}; - # Can't just return the linkmap here, since the htmlscrubber - # scrubs out all tags (with good reason!) - # Instead, insert a placeholder tag, which will be expanded during - # formatting. $mapnum++; - $maps{$mapnum}=\%params; - return "
"; -} - -sub format (@) { - my %params=@_; - - $params{content}=~s/
<\/div>/genmap($1)/eg; - - return $params{content}; -} - -sub genmap ($) { - my $mapnum=shift; - return "" unless exists $maps{$mapnum}; - my %params=%{$maps{$mapnum}}; my $connected=IkiWiki::yesno($params{connected}); # Get all the items to map. @@ -102,10 +80,10 @@ sub genmap ($) { close OUT || error gettext("failed to run dot"); local $/=undef; - my $ret="\n". - . - ""; + my $ret="\"".gettext("linkmap").\n". + ; close IN || error gettext("failed to run dot"); waitpid $pid, 0; diff --git a/debian/changelog b/debian/changelog index bd638b36f..55213df9c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,8 @@ ikiwiki (3.20100104) UNRELEASED; urgency=low * img: Support alignment of images with captions. (Giuseppe Bilotta) * websetup: Fix utf-8 problems. * websetup: Fix bug in array change detection. + * linkmap: Simplify and improve browser compatability by using an img, + not object tag. -- Joey Hess Mon, 04 Jan 2010 12:53:24 -0500 -- cgit v1.2.3 From 0c89eabcf5a7f9dd881abc8a8cb5f2271ec4e01e Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Wed, 13 Jan 2010 00:37:56 +0000 Subject: more options for field configuration, additional pagespec test --- doc/plugins/contrib/field.mdwn | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/doc/plugins/contrib/field.mdwn b/doc/plugins/contrib/field.mdwn index a43bf24b2..09646d28a 100644 --- a/doc/plugins/contrib/field.mdwn +++ b/doc/plugins/contrib/field.mdwn @@ -13,6 +13,9 @@ IkiWiki::Plugin::field - front-end for per-page record fields. # simple registration field_register => [qw{meta}], + # allow the config to be queried as a field + field_allow_config => 1, + ## DESCRIPTION This plugin is meant to be used in conjunction with other plugins @@ -32,8 +35,17 @@ a given page. This can be used in three ways: The following options can be set in the ikiwiki setup file. +**field_allow_config** + + field_allow_config => 1, + +Allow the $config hash to be queried like any other field; the +keys of the config hash are the field names. + **field_register** + field_register => [qw{meta}], + A list of plugin-IDs to register. This assumes that the plugins in question store data in the %pagestatus hash using the ID of that plugin, and thus the field values are looked for there. @@ -46,12 +58,17 @@ registered with the "field" plugin. The "field" PageSpec function can be used to match the value of a field for a page. -field(*name* *glob*) +**field(*name* *glob*)** For example: field(bar Foo*) will match if the "bar" field starts with "Foo". +**destfield(*name* *glob*)** + +is the same, except that it tests the destination page (that is, in cases +when the source page is being included in another page). + ## FUNCTIONS ### field_register -- cgit v1.2.3 From 9ccd1ba41bff43c1a5d06197b454c8748224e30f Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Wed, 13 Jan 2010 02:20:34 +0000 Subject: ymlfront: backend for structured data --- doc/plugins/contrib/ymlfront.mdwn | 99 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 doc/plugins/contrib/ymlfront.mdwn diff --git a/doc/plugins/contrib/ymlfront.mdwn b/doc/plugins/contrib/ymlfront.mdwn new file mode 100644 index 000000000..f4438f23c --- /dev/null +++ b/doc/plugins/contrib/ymlfront.mdwn @@ -0,0 +1,99 @@ +[[!template id=plugin name=ymlfront author="[[rubykat]]"]] +[[!tag type/meta]] +[[!toc]] +## NAME + +IkiWiki::Plugin::ymlfront - add YAML-format data to a page + +## SYNOPSIS + + # activate the plugin + add_plugins => [qw{goodstuff ymlfront ....}], + +## DESCRIPTION + +This plugin provides a way of adding arbitrary meta-data (data fields) to any +page by prefixing the page with a YAML-format document. This provides a way to +create per-page structured data, where each page is treated like a record, and +the structured data are fields in that record. This can include the meta-data +for that page, such as the page title. + +This plugin is meant to be used in conjunction with the [[field]] plugin. + +## DETAILS + +The YAML-format data in a page must be placed at the start of the page +and delimited by lines containing precisely three dashes. The "normal" +content of the page then follows. + +For example: + + --- + title: Foo does not work + Urgency: High + Status: Assigned + AssignedTo: Fred Nurk + Version: 1.2.3 + --- + When running on the Sprongle system, the Foo function returns incorrect data. + +What will normally be displayed is everything following the second line of dashes. +That will be htmlized using the page-type of the page-file. + +### Accessing the Data + +There are three ways to access the data given in the YAML section. + +* [[getfield]] plugin + + The **getfield** plugin can display the data as individual variable values. + + For example: + + --- + title: Foo does not work + Urgency: High + Status: Assigned + AssignedTo: Fred Nurk + Version: 1.2.3 + --- + # {{$title}} + + **Urgency:** {{$Urgency}}\\ + **Status:** {{$Status}}\\ + **Assigned To:** {{$AssignedTo}}\\ + **Version:** {{$Version}} + + When running on the Sprongle system, the Foo function returns incorrect data. + +* [[ftemplate]] plugin + + The **ftemplate** plugin is like the [[plugins/template]] plugin, but it is also aware of [[field]] values. + + For example: + + --- + title: Foo does not work + Urgency: High + Status: Assigned + AssignedTo: Fred Nurk + Version: 1.2.3 + --- + \[[!ftemplate id="bug_display_template"]] + + When running on the Sprongle system, the Foo function returns incorrect data. + +* write your own plugin + + In conjunction with the [[field]] plugin, you can write your own plugin to access the data. + +## PREREQUISITES + + IkiWiki + IkiWiki::Plugin::field + YAML::Any + +## DOWNLOAD + +* browse at GitHub: +* git repo at git://github.com/rubykat/ikiplugins.git -- cgit v1.2.3 From ccc8e8868269bf2751596e04f792c388acb85c12 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Wed, 13 Jan 2010 02:27:59 +0000 Subject: getfield: query field (meta-data) values --- doc/plugins/contrib/getfield.mdwn | 85 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 doc/plugins/contrib/getfield.mdwn diff --git a/doc/plugins/contrib/getfield.mdwn b/doc/plugins/contrib/getfield.mdwn new file mode 100644 index 000000000..ed03dc439 --- /dev/null +++ b/doc/plugins/contrib/getfield.mdwn @@ -0,0 +1,85 @@ +[[!template id=plugin name=getfield author="[[rubykat]]"]] +[[!tag type/meta]] +[[!toc]] +## NAME + +IkiWiki::Plugin::getfield - query the values of fields + +## SYNOPSIS + + # activate the plugin + add_plugins => [qw{goodstuff getfield ....}], + +## DESCRIPTION + +This plugin provides a way of querying the meta-data (data fields) of a page +inside the page content (rather than inside a template) This provides a way to +use per-page structured data, where each page is treated like a record, and the +structured data are fields in that record. This can include the meta-data for +that page, such as the page title. + +This plugin is meant to be used in conjunction with the B plugin. + +### USAGE + +One can get the value of a field by using special markup in the page. +This does not use directive markup, in order to make it easier to +use the markup inside other directives. There are two forms: + +* {{$*fieldname*}} + + This queries the value of *fieldname* for the source page. + + For example: + + \[[!meta title="My Long and Complicated Title With Potential For Spelling Mistakes"]] + # {{$title}} + + When the page is processed, this will give you: + +

My Long and Complicated Title With Potential For Spelling Mistakes

+ +* {{+$*fieldname*+}} + + This queries the value of *fieldname* for the destination page; that is, + the value when this page is included inside another page. + + For example: + + On PageA: + + \[[!meta title="I Am Page A"]] + # {{+$title+}} + + Stuff about A. + + On PageB: + + \[[!meta title="I Am Page B"]] + \[[!inline pagespec="PageA"]] + + When PageA is displayed: + +

I Am Page A

+

Stuff about A.

+ + When PageB is displayed: + +

I Am Page B

+

Stuff about A.

+ +### More Examples + +Listing all the sub-pages of the current page: + + \[[!map pages="{{$page}}/*"]] + +### LIMITATIONS + +One cannot query the values of fields on pages other than the current +page or the destination page. + +## DOWNLOAD + +* browse at GitHub: +* git repo at git://github.com/rubykat/ikiplugins.git -- cgit v1.2.3 From 7d997f1007b240c14c04ff73b09a2a62fa3e64ad Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Wed, 13 Jan 2010 02:36:28 +0000 Subject: ftemplate: field-aware structured template plugin --- doc/plugins/contrib/ftemplate.mdwn | 94 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 doc/plugins/contrib/ftemplate.mdwn diff --git a/doc/plugins/contrib/ftemplate.mdwn b/doc/plugins/contrib/ftemplate.mdwn new file mode 100644 index 000000000..bcc6f2c67 --- /dev/null +++ b/doc/plugins/contrib/ftemplate.mdwn @@ -0,0 +1,94 @@ +[[!template id=plugin name=ftemplate author="[[rubykat]]"]] +[[!tag type/meta type/format]] +[[!toc]] +## NAME + +IkiWiki::Plugin::ftemplate - field-aware structured template plugin + +## SYNOPSIS + + # activate the plugin + add_plugins => [qw{goodstuff ftemplate ....}], + +## DESCRIPTION + +This plugin provides the **ftemplate** directive. This is like +the [[ikiwiki/directive/template]] directive, with the addition that one does not +have to provide all the values in the call to the template, +because ftemplate can query structured data ("fields") using +the [[field]] plugin. + +Templates are files that can be filled out and inserted into pages in +the wiki, by using the ftemplate directive. The directive has an id +parameter that identifies the template to use. + +Additional parameters can be used to fill out the template, in +addition to the "field" values. Passed-in values override the +"field" values. + +There are two places where template files can live. One is, as with the +[[plugins/template]] plugin, in the /templates directory on the wiki. These +templates are wiki pages, and can be edited from the web like other wiki +pages. + +The second place where template files can live is in the global +templates directory (the same place where the page.tmpl template lives). +This is a useful place to put template files if you want to prevent +them being edited from the web, and you don't want to have to make +them work as wiki pages. + +### EXAMPLES + +#### Example 1 + +PageA: + + [[!meta title="I Am Page A"]] + [[!meta description="A is for Apple."]] + [[!meta author="Fred Nurk"]] + [[!ftemplate id="mytemplate"]] + +Template "mytemplate": + + # + by + + **Summary:** + +This will give: + +

I Am Page A

+

by Fred Nurk

+

Summary: A is for Apple. + +#### Example 2: Overriding values + +PageB: + + [[!meta title="I Am Page B"]] + [[!meta description="B is for Banana."]] + [[!meta author="Fred Nurk"]] + [[!ftemplate id="mytemplate" title="Bananananananas"]] + +This will give: + +

Bananananananas

+

by Fred Nurk

+

Summary: B is for Banana. + +### LIMITATIONS + +One cannot query the values of fields on pages other than the current +page. + +## PREREQUISITES + + IkiWiki + IkiWiki::Plugin::field + HTML::Template + Encode + +## DOWNLOAD + +* browse at GitHub: +* git repo at git://github.com/rubykat/ikiplugins.git -- cgit v1.2.3 From a3527672769b93eeb4a70fbe9f316c986706c375 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Wed, 13 Jan 2010 02:37:27 +0000 Subject: fixed title --- doc/plugins/contrib/ftemplate.mdwn | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/plugins/contrib/ftemplate.mdwn b/doc/plugins/contrib/ftemplate.mdwn index bcc6f2c67..fba51e1c2 100644 --- a/doc/plugins/contrib/ftemplate.mdwn +++ b/doc/plugins/contrib/ftemplate.mdwn @@ -43,10 +43,10 @@ them work as wiki pages. PageA: - [[!meta title="I Am Page A"]] - [[!meta description="A is for Apple."]] - [[!meta author="Fred Nurk"]] - [[!ftemplate id="mytemplate"]] + \[[!meta title="I Am Page A"]] + \[[!meta description="A is for Apple."]] + \[[!meta author="Fred Nurk"]] + \[[!ftemplate id="mytemplate"]] Template "mytemplate": @@ -65,10 +65,10 @@ This will give: PageB: - [[!meta title="I Am Page B"]] - [[!meta description="B is for Banana."]] - [[!meta author="Fred Nurk"]] - [[!ftemplate id="mytemplate" title="Bananananananas"]] + \[[!meta title="I Am Page B"]] + \[[!meta description="B is for Banana."]] + \[[!meta author="Fred Nurk"]] + \[[!ftemplate id="mytemplate" title="Bananananananas"]] This will give: -- cgit v1.2.3 From 2cbf60a431d41b3cb0767f1c0fb1ecf50103bcb0 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Wed, 13 Jan 2010 02:38:33 +0000 Subject: correcting link --- doc/plugins/contrib/getfield.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plugins/contrib/getfield.mdwn b/doc/plugins/contrib/getfield.mdwn index ed03dc439..5e6b01113 100644 --- a/doc/plugins/contrib/getfield.mdwn +++ b/doc/plugins/contrib/getfield.mdwn @@ -81,5 +81,5 @@ page or the destination page. ## DOWNLOAD -* browse at GitHub: +* browse at GitHub: * git repo at git://github.com/rubykat/ikiplugins.git -- cgit v1.2.3 From 39e1524e9e12e538b439310a20325064657f5979 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Wed, 13 Jan 2010 02:45:44 +0000 Subject: more progress on this approach --- doc/forum/an_alternative_approach_to_structured_data.mdwn | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc/forum/an_alternative_approach_to_structured_data.mdwn b/doc/forum/an_alternative_approach_to_structured_data.mdwn index fb007f7e9..eb6ee4445 100644 --- a/doc/forum/an_alternative_approach_to_structured_data.mdwn +++ b/doc/forum/an_alternative_approach_to_structured_data.mdwn @@ -1,3 +1,5 @@ +## First Pass + Looking at the discussion about [[todo/structured_page_data]], it looks a bit like folks are bogged down in figuring out what *markup* to use for structured page data, something I doubt that people will really agree on. And thus, little progress is made. I propose that, rather than worry about what the data looks like, that we take a similar approach @@ -15,3 +17,13 @@ I think it could be really powerful and useful, especially if it becomes part of --[[KathrynAndersen]] > It looks like an interesting idea. I don't have time right now to look at it in depth, but it looks interesting. -- [[Will]] + +## Second Pass + +I have written additional plugins which integrate with the [[plugins/contrib/field]] plugin to both set and get structured page data. + +* [[plugins/contrib/getfield]] - query field values inside a page using {{$*fieldname*}} markup +* [[plugins/contrib/ftemplate]] - like [[plugins/template]] but uses "field" data as well as passed-in data +* [[plugins/contrib/ymlfront]] - looks for YAML-format data at the front of a page; this is just one possible back-end for the structured data + +--[[KathrynAndersen]] -- cgit v1.2.3 From f90827f29bc1682bf3682375972f5cc836049dc7 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Wed, 13 Jan 2010 02:47:59 +0000 Subject: this is sort of format too --- doc/plugins/contrib/getfield.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plugins/contrib/getfield.mdwn b/doc/plugins/contrib/getfield.mdwn index 5e6b01113..302569f4b 100644 --- a/doc/plugins/contrib/getfield.mdwn +++ b/doc/plugins/contrib/getfield.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=getfield author="[[rubykat]]"]] -[[!tag type/meta]] +[[!tag type/meta type/format]] [[!toc]] ## NAME -- cgit v1.2.3 From f2b8f358652e76e4047f4e304870e25cac51b681 Mon Sep 17 00:00:00 2001 From: parade Date: Thu, 14 Jan 2010 14:25:56 +0000 Subject: --- doc/index.mdwn | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/doc/index.mdwn b/doc/index.mdwn index 732cf7a89..13e7564ea 100644 --- a/doc/index.mdwn +++ b/doc/index.mdwn @@ -1,28 +1 @@ -Ikiwiki is a **wiki compiler**. It converts wiki pages into HTML pages -suitable for publishing on a website. Ikiwiki stores pages and history in a -[[revision_control_system|rcs]] such as [[Subversion|rcs/svn]] or [[rcs/Git]]. -There are many other [[features]], including support for -[[blogging|blog]], as well as a large array of [[plugins]]. - -[[!template id=links]] - -## using ikiwiki - -[[Setup]] has a tutorial for setting up ikiwiki, or you can read the -[[man_page|usage]]. There are some [[examples]] of things you can do -with ikiwiki, and some [[tips]]. - -All wikis are supposed to have a [[SandBox]], so this one does too. - -This site generally runs the latest release of ikiwiki; currently, it runs -ikiwiki [[!version ]]. - -## developer resources - -The [[RoadMap]] describes where the project is going. -The [[forum]] is open for discussions. -[[Bugs]], [[TODO]] items, [[wishlist]] items, and [[patches|patch]] -can be submitted and tracked using this wiki. - -ikiwiki is developed by [[Joey]] and many contributors, -and is [[FreeSoftware]]. +o -- cgit v1.2.3 From b3036541674cc90b1c48203244dd711e399ce9d7 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Thu, 14 Jan 2010 16:29:09 +0100 Subject: Restore page. This reverts commit f2b8f358652e76e4047f4e304870e25cac51b681. --- doc/index.mdwn | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/doc/index.mdwn b/doc/index.mdwn index 13e7564ea..732cf7a89 100644 --- a/doc/index.mdwn +++ b/doc/index.mdwn @@ -1 +1,28 @@ -o +Ikiwiki is a **wiki compiler**. It converts wiki pages into HTML pages +suitable for publishing on a website. Ikiwiki stores pages and history in a +[[revision_control_system|rcs]] such as [[Subversion|rcs/svn]] or [[rcs/Git]]. +There are many other [[features]], including support for +[[blogging|blog]], as well as a large array of [[plugins]]. + +[[!template id=links]] + +## using ikiwiki + +[[Setup]] has a tutorial for setting up ikiwiki, or you can read the +[[man_page|usage]]. There are some [[examples]] of things you can do +with ikiwiki, and some [[tips]]. + +All wikis are supposed to have a [[SandBox]], so this one does too. + +This site generally runs the latest release of ikiwiki; currently, it runs +ikiwiki [[!version ]]. + +## developer resources + +The [[RoadMap]] describes where the project is going. +The [[forum]] is open for discussions. +[[Bugs]], [[TODO]] items, [[wishlist]] items, and [[patches|patch]] +can be submitted and tracked using this wiki. + +ikiwiki is developed by [[Joey]] and many contributors, +and is [[FreeSoftware]]. -- cgit v1.2.3 From 4f25d90ebc2d3ff2ad7a5d7bd8578a6c4d673aa8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 14 Jan 2010 18:56:05 -0500 Subject: mention that lighttpd does support this. Example needed. --- doc/plugins/po.mdwn | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/doc/plugins/po.mdwn b/doc/plugins/po.mdwn index f3b70b5f7..da85636ec 100644 --- a/doc/plugins/po.mdwn +++ b/doc/plugins/po.mdwn @@ -129,11 +129,10 @@ For details, see [Apache's documentation](http://httpd.apache.org/docs/2.2/conte lighttpd -------- -lighttpd unfortunately does not support content negotiation. - -**FIXME**: does `mod_magnet` provide the functionality needed to - emulate this? +Recent versions of lighttpd should be able to use +`$HTTP["language"]` to configure the translatted pages to be served. +TODO: Example Usage ===== -- cgit v1.2.3 From 65db2f47acfe5815952bb0bfbdbe15b5cf5ce7be Mon Sep 17 00:00:00 2001 From: Spida Date: Fri, 15 Jan 2010 00:15:33 +0000 Subject: --- doc/plugins/po.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/plugins/po.mdwn b/doc/plugins/po.mdwn index da85636ec..576d36ec1 100644 --- a/doc/plugins/po.mdwn +++ b/doc/plugins/po.mdwn @@ -132,6 +132,8 @@ lighttpd Recent versions of lighttpd should be able to use `$HTTP["language"]` to configure the translatted pages to be served. +See [Lighttpd Issue](http://redmine.lighttpd.net/issues/show/1119) + TODO: Example Usage -- cgit v1.2.3 From a1138ae820d3ea121cbd28552a3300631179b0a5 Mon Sep 17 00:00:00 2001 From: simonraven Date: Sat, 16 Jan 2010 05:19:42 +0000 Subject: the pod bold thingy didn't work, making it a markdown one --- doc/plugins/contrib/getfield.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plugins/contrib/getfield.mdwn b/doc/plugins/contrib/getfield.mdwn index 302569f4b..929f70485 100644 --- a/doc/plugins/contrib/getfield.mdwn +++ b/doc/plugins/contrib/getfield.mdwn @@ -18,7 +18,7 @@ use per-page structured data, where each page is treated like a record, and the structured data are fields in that record. This can include the meta-data for that page, such as the page title. -This plugin is meant to be used in conjunction with the B plugin. +This plugin is meant to be used in conjunction with the **field** plugin. ### USAGE -- cgit v1.2.3 From 353f722dc439a14d7e74dab9ca2818f955ff4d41 Mon Sep 17 00:00:00 2001 From: simonraven Date: Sat, 16 Jan 2010 05:29:53 +0000 Subject: --- doc/plugins/contrib/getfield/discussion.mdwn | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 doc/plugins/contrib/getfield/discussion.mdwn diff --git a/doc/plugins/contrib/getfield/discussion.mdwn b/doc/plugins/contrib/getfield/discussion.mdwn new file mode 100644 index 000000000..61b9f5378 --- /dev/null +++ b/doc/plugins/contrib/getfield/discussion.mdwn @@ -0,0 +1,3 @@ +## Templating, and other uses + +Like you mentioned in [[ftemplate]] IIRC, it'll only work on the same page. If it can be made to work anywhere, or from a specific place in the wiki - configurable, possibly - you'll have something very similar to mediawiki's templates. I can already think of a few uses for this combined with [[template]] ;) . --[[SR|users/simonraven]] -- cgit v1.2.3 From 3b2772967fdb125bb8160f968729681b7af13269 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Sat, 16 Jan 2010 08:08:46 +0000 Subject: responded to discussion --- doc/plugins/contrib/getfield/discussion.mdwn | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/plugins/contrib/getfield/discussion.mdwn b/doc/plugins/contrib/getfield/discussion.mdwn index 61b9f5378..78462197a 100644 --- a/doc/plugins/contrib/getfield/discussion.mdwn +++ b/doc/plugins/contrib/getfield/discussion.mdwn @@ -1,3 +1,12 @@ ## Templating, and other uses Like you mentioned in [[ftemplate]] IIRC, it'll only work on the same page. If it can be made to work anywhere, or from a specific place in the wiki - configurable, possibly - you'll have something very similar to mediawiki's templates. I can already think of a few uses for this combined with [[template]] ;) . --[[SR|users/simonraven]] + +> Yes, I mentioned "only current page" in the "LIMITATIONS" section. + +> What do you think would be a good syntax for querying other pages? +> It needs to resolve to a single page, though I guess using "bestlink" to find the closest page would mean that one didn't have to spell out the whole page. + +> I'm also working on a "report" plugin, which will basically apply a template like [[ftemplate]] does, but to a list of pages given from a pagespec, rather than the current page. + +> -- [[users/KathrynAndersen]] -- cgit v1.2.3 From e3a09318a0686a7e3d01206f56ca6019c3c198e0 Mon Sep 17 00:00:00 2001 From: simonraven Date: Sat, 16 Jan 2010 08:42:56 +0000 Subject: --- doc/plugins/contrib/getfield/discussion.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/plugins/contrib/getfield/discussion.mdwn b/doc/plugins/contrib/getfield/discussion.mdwn index 78462197a..f3c844e94 100644 --- a/doc/plugins/contrib/getfield/discussion.mdwn +++ b/doc/plugins/contrib/getfield/discussion.mdwn @@ -7,6 +7,10 @@ Like you mentioned in [[ftemplate]] IIRC, it'll only work on the same page. If i > What do you think would be a good syntax for querying other pages? > It needs to resolve to a single page, though I guess using "bestlink" to find the closest page would mean that one didn't have to spell out the whole page. +>> I don't know the internals very well, I think that's how other plugins do it. *goes to check* Usually it's a `foreach` loop, and use a `pagestate{foo}` to check the page's status/state. There's also some stuff like 'pagespec_match_list($params{page}` ... they do slightly different thing depending on need. --[[SR|users/simonraven]] + > I'm also working on a "report" plugin, which will basically apply a template like [[ftemplate]] does, but to a list of pages given from a pagespec, rather than the current page. > -- [[users/KathrynAndersen]] + +>> Ooh, sounds nice :) . --[[SR|users/simonraven]] -- cgit v1.2.3 From 354468d280354234d9c8c91333534c9784f427cf Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Sun, 17 Jan 2010 00:10:55 +0000 Subject: respond: markup, not internals --- doc/plugins/contrib/getfield/discussion.mdwn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/plugins/contrib/getfield/discussion.mdwn b/doc/plugins/contrib/getfield/discussion.mdwn index f3c844e94..37d65d851 100644 --- a/doc/plugins/contrib/getfield/discussion.mdwn +++ b/doc/plugins/contrib/getfield/discussion.mdwn @@ -9,6 +9,11 @@ Like you mentioned in [[ftemplate]] IIRC, it'll only work on the same page. If i >> I don't know the internals very well, I think that's how other plugins do it. *goes to check* Usually it's a `foreach` loop, and use a `pagestate{foo}` to check the page's status/state. There's also some stuff like 'pagespec_match_list($params{page}` ... they do slightly different thing depending on need. --[[SR|users/simonraven]] +>>> No, I meant what markup I should use; the actual implementation probably wouldn't be too difficult. + +>>> The current markup is {{$*fieldname*}}; what you're wanting, perhaps it should be represented like {{$*pagename*:*fieldname*}}, or {{$*pagename*::*fieldname*}} or something else... +>>> -- [[KathrynAndersen]] + > I'm also working on a "report" plugin, which will basically apply a template like [[ftemplate]] does, but to a list of pages given from a pagespec, rather than the current page. > -- [[users/KathrynAndersen]] -- cgit v1.2.3 From 1ddef7da7b170bb4bd7c816cba03e3e6338a50b2 Mon Sep 17 00:00:00 2001 From: "http://edrex.myopenid.com/" Date: Sun, 17 Jan 2010 07:22:03 +0000 Subject: --- doc/todo/svg.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/todo/svg.mdwn b/doc/todo/svg.mdwn index 0a15af4cd..f264f4107 100644 --- a/doc/todo/svg.mdwn +++ b/doc/todo/svg.mdwn @@ -3,6 +3,7 @@ We should support SVG. In particular: * We could support rendering SVGs to PNGs when compiling the wiki. Not all browsers support SVG yet. * We could support editing SVGs via the web interface. SVG can contain unsafe content such as scripting, so we would need to whitelist safe markup. + * I am interested in seeing [svg-edit](http://code.google.com/p/svg-edit/) integrated --[EricDrechsel]] --[[JoshTriplett]] -- cgit v1.2.3 From 5588abc2befbde83e43cf79f9717e323aa69da11 Mon Sep 17 00:00:00 2001 From: "http://edrex.myopenid.com/" Date: Sun, 17 Jan 2010 07:22:54 +0000 Subject: --- doc/todo/svg.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/todo/svg.mdwn b/doc/todo/svg.mdwn index f264f4107..89b183db6 100644 --- a/doc/todo/svg.mdwn +++ b/doc/todo/svg.mdwn @@ -3,7 +3,7 @@ We should support SVG. In particular: * We could support rendering SVGs to PNGs when compiling the wiki. Not all browsers support SVG yet. * We could support editing SVGs via the web interface. SVG can contain unsafe content such as scripting, so we would need to whitelist safe markup. - * I am interested in seeing [svg-edit](http://code.google.com/p/svg-edit/) integrated --[EricDrechsel]] + * I am interested in seeing [svg-edit](http://code.google.com/p/svg-edit/) integrated -- [[EricDrechsel]] --[[JoshTriplett]] -- cgit v1.2.3 From d652bf3ddf33505b540b46e6916d8a36cdeacc08 Mon Sep 17 00:00:00 2001 From: "http://edrex.myopenid.com/" Date: Sun, 17 Jan 2010 07:24:31 +0000 Subject: --- doc/users/ericdrechsel.mdwn | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/users/ericdrechsel.mdwn diff --git a/doc/users/ericdrechsel.mdwn b/doc/users/ericdrechsel.mdwn new file mode 100644 index 000000000..2efb7039c --- /dev/null +++ b/doc/users/ericdrechsel.mdwn @@ -0,0 +1 @@ +[My homewiki profile](http://wiki.shared.dre.am/people/eric/) -- cgit v1.2.3 From b3363aa89f840fd42b8a621b011326ef41b73513 Mon Sep 17 00:00:00 2001 From: simonraven Date: Sun, 17 Jan 2010 09:28:07 +0000 Subject: --- doc/plugins/contrib/getfield/discussion.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/plugins/contrib/getfield/discussion.mdwn b/doc/plugins/contrib/getfield/discussion.mdwn index 37d65d851..9f1337046 100644 --- a/doc/plugins/contrib/getfield/discussion.mdwn +++ b/doc/plugins/contrib/getfield/discussion.mdwn @@ -14,6 +14,8 @@ Like you mentioned in [[ftemplate]] IIRC, it'll only work on the same page. If i >>> The current markup is {{$*fieldname*}}; what you're wanting, perhaps it should be represented like {{$*pagename*:*fieldname*}}, or {{$*pagename*::*fieldname*}} or something else... >>> -- [[KathrynAndersen]] +>>>> Oh. Hmm. I like your idea actually, or alternately, in keeping more with other plugins, doing it like {{pagename/fieldname}}. The meaning is less clear that way, but avoids potential issues with filename clashes that have a colon in them. It also keeps a certain logic - at least to me. Either way, I think both are good choices. + > I'm also working on a "report" plugin, which will basically apply a template like [[ftemplate]] does, but to a list of pages given from a pagespec, rather than the current page. > -- [[users/KathrynAndersen]] -- cgit v1.2.3 From 2137d1f68c694af6135d0d84b59bbfbcffe36669 Mon Sep 17 00:00:00 2001 From: simonraven Date: Sun, 17 Jan 2010 09:31:07 +0000 Subject: --- doc/plugins/contrib/getfield/discussion.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plugins/contrib/getfield/discussion.mdwn b/doc/plugins/contrib/getfield/discussion.mdwn index 9f1337046..42338a3c7 100644 --- a/doc/plugins/contrib/getfield/discussion.mdwn +++ b/doc/plugins/contrib/getfield/discussion.mdwn @@ -14,7 +14,7 @@ Like you mentioned in [[ftemplate]] IIRC, it'll only work on the same page. If i >>> The current markup is {{$*fieldname*}}; what you're wanting, perhaps it should be represented like {{$*pagename*:*fieldname*}}, or {{$*pagename*::*fieldname*}} or something else... >>> -- [[KathrynAndersen]] ->>>> Oh. Hmm. I like your idea actually, or alternately, in keeping more with other plugins, doing it like {{pagename/fieldname}}. The meaning is less clear that way, but avoids potential issues with filename clashes that have a colon in them. It also keeps a certain logic - at least to me. Either way, I think both are good choices. +>>>> Oh. Hmm. I like your idea actually, or alternately, in keeping more with other plugins, doing it like {{pagename/fieldname}}. The meaning of the separator is less clear with /, but avoids potential issues with filename clashes that have a colon in them. It also keeps a certain logic - at least to me. Either way, I think both are good choices. [[SR|users/simonraven]] > I'm also working on a "report" plugin, which will basically apply a template like [[ftemplate]] does, but to a list of pages given from a pagespec, rather than the current page. -- cgit v1.2.3 From fc7a047a474cc19cc24a5a7d7119ef6f32f395b6 Mon Sep 17 00:00:00 2001 From: "http://oblomov.myopenid.com/" Date: Sun, 17 Jan 2010 09:55:07 +0000 Subject: --- doc/users/Oblomov.mdwn | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/users/Oblomov.mdwn diff --git a/doc/users/Oblomov.mdwn b/doc/users/Oblomov.mdwn new file mode 100644 index 000000000..be6e666cb --- /dev/null +++ b/doc/users/Oblomov.mdwn @@ -0,0 +1 @@ +Getting started with Ikiwiki, like the git backend a lot, would like to see a dynamic version of it. -- cgit v1.2.3 From fa0bbaab21a456f8115d9af508fef06443b8d275 Mon Sep 17 00:00:00 2001 From: "http://oblomov.myopenid.com/" Date: Sun, 17 Jan 2010 09:56:26 +0000 Subject: Suggest # as page-field separator --- doc/plugins/contrib/getfield/discussion.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/plugins/contrib/getfield/discussion.mdwn b/doc/plugins/contrib/getfield/discussion.mdwn index 42338a3c7..900ca65b2 100644 --- a/doc/plugins/contrib/getfield/discussion.mdwn +++ b/doc/plugins/contrib/getfield/discussion.mdwn @@ -16,6 +16,9 @@ Like you mentioned in [[ftemplate]] IIRC, it'll only work on the same page. If i >>>> Oh. Hmm. I like your idea actually, or alternately, in keeping more with other plugins, doing it like {{pagename/fieldname}}. The meaning of the separator is less clear with /, but avoids potential issues with filename clashes that have a colon in them. It also keeps a certain logic - at least to me. Either way, I think both are good choices. [[SR|users/simonraven]] +>>>>> What about using {{pagename#fieldname}}? The meaning of the hash in URLs sort of fits with what is needed here (reference to a 'named' thing within the page) and it won't conflict with actual hash usages (unless we expect different named parts of pages to define different values for the same field ...) +>>>>> -- [[Oblomov]] + > I'm also working on a "report" plugin, which will basically apply a template like [[ftemplate]] does, but to a list of pages given from a pagespec, rather than the current page. > -- [[users/KathrynAndersen]] -- cgit v1.2.3 From 9c0c8b57fb9ccaf21888a7eb9e93dc0d312773e0 Mon Sep 17 00:00:00 2001 From: simonraven Date: Sun, 17 Jan 2010 17:27:51 +0000 Subject: --- doc/plugins/contrib/getfield/discussion.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/plugins/contrib/getfield/discussion.mdwn b/doc/plugins/contrib/getfield/discussion.mdwn index 900ca65b2..ce6246034 100644 --- a/doc/plugins/contrib/getfield/discussion.mdwn +++ b/doc/plugins/contrib/getfield/discussion.mdwn @@ -18,6 +18,8 @@ Like you mentioned in [[ftemplate]] IIRC, it'll only work on the same page. If i >>>>> What about using {{pagename#fieldname}}? The meaning of the hash in URLs sort of fits with what is needed here (reference to a 'named' thing within the page) and it won't conflict with actual hash usages (unless we expect different named parts of pages to define different values for the same field ...) >>>>> -- [[Oblomov]] +>>>>>> That's a good one too. --[[simonraven]] + > I'm also working on a "report" plugin, which will basically apply a template like [[ftemplate]] does, but to a list of pages given from a pagespec, rather than the current page. -- cgit v1.2.3 From 97bc5d8bcacd482874d0050166ba3f7a87ef9fd1 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 18 Jan 2010 12:08:26 -0500 Subject: typos --- IkiWiki/CGI.pm | 2 +- debian/changelog | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index cd4a5574c..bb26add9a 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -52,7 +52,7 @@ sub redirect ($$) { } sub decode_cgi_utf8 ($) { - # decode_form_utf8 method is needed for 5.10 + # decode_form_utf8 method is needed for 5.01 if ($] < 5.01) { my $cgi = shift; foreach my $f ($cgi->param) { diff --git a/debian/changelog b/debian/changelog index 55213df9c..f17eed3e5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -262,7 +262,7 @@ ikiwiki (3.141592) unstable; urgency=low * Add new hooks: canremove, canrename, rename. (intrigeri) * rename: Refactor subpage rename handling code into rename hook. (intrigeri) - * po: New plugin, suporting translation of wiki pages using po files. + * po: New plugin, suporting translation of wiki pages using po files. (intrigeri) * Add build machinery to build po files to translate the underlay wikis, * Add further build machinery to generate translated underlays from -- cgit v1.2.3 From 461804a5e4e267dce332e0b953a164ba6b82a91e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 18 Jan 2010 12:09:54 -0500 Subject: clarify error --- IkiWiki/Plugin/remove.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/remove.pm b/IkiWiki/Plugin/remove.pm index 2b8cf0414..3c1e0c713 100644 --- a/IkiWiki/Plugin/remove.pm +++ b/IkiWiki/Plugin/remove.pm @@ -51,7 +51,7 @@ sub check_canremove ($$$) { IkiWiki::Plugin::attachment::check_canattach($session, $page, $file); } else { - error("renaming of attachments is not allowed"); + error("removal of attachments is not allowed"); } } -- cgit v1.2.3 From f072f3a9c57bc590b4fb754a7cf65b5f93684006 Mon Sep 17 00:00:00 2001 From: "http://apoca.myopenid.com/" Date: Mon, 18 Jan 2010 17:25:13 +0000 Subject: --- doc/bugs/removing_pages_with_utf8_characters.mdwn | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 doc/bugs/removing_pages_with_utf8_characters.mdwn diff --git a/doc/bugs/removing_pages_with_utf8_characters.mdwn b/doc/bugs/removing_pages_with_utf8_characters.mdwn new file mode 100644 index 000000000..a962a328a --- /dev/null +++ b/doc/bugs/removing_pages_with_utf8_characters.mdwn @@ -0,0 +1,18 @@ +I have a page with the name "umläute". When I try to remove it, ikiwiki says: + +Error: ?umläute does not exist + +I wrote the following patch, which seems to work on my machine. I'm running on FreeBSD 6.3-RELEASE with ikiwiki-3.20100102.3 and perl-5.8.9_3. + + --- remove.pm.orig 2009-12-14 23:26:20.000000000 +0100 + +++ remove.pm 2010-01-18 17:49:39.000000000 +0100 + @@ -193,6 +193,7 @@ + # and that the user is allowed to edit(/remove) it. + my @files; + foreach my $page (@pages) { + + $page = Encode::decode_utf8($page); + check_canremove($page, $q, $session); + + # This untaint is safe because of the + + -- cgit v1.2.3 From 32472c02ebcd646783855fcabd7f9f8c7f2bb4be Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 18 Jan 2010 12:33:25 -0500 Subject: brace style --- IkiWiki/CGI.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index bb26add9a..07369ac10 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -15,7 +15,8 @@ sub printheader ($) { if ($config{sslcookie}) { print $session->header(-charset => 'utf-8', -cookie => $session->cookie(-httponly => 1, -secure => 1)); - } else { + } + else { print $session->header(-charset => 'utf-8', -cookie => $session->cookie(-httponly => 1)); } -- cgit v1.2.3 From ccf14b185e37fad9b208b6a3d4490e1130ad9def Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 18 Jan 2010 12:34:19 -0500 Subject: brace style and layout --- IkiWiki/Plugin/git.pm | 5 ++++- IkiWiki/Plugin/monotone.pm | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/git.pm b/IkiWiki/Plugin/git.pm index c5c83a3a7..786c7b1f2 100644 --- a/IkiWiki/Plugin/git.pm +++ b/IkiWiki/Plugin/git.pm @@ -419,7 +419,10 @@ sub git_sha1 (;$) { '--', $file); if ($sha1) { ($sha1) = $sha1 =~ m/($sha1_pattern)/; # sha1 is untainted now - } else { debug("Empty sha1sum for '$file'.") } + } + else { + debug("Empty sha1sum for '$file'."); + } return defined $sha1 ? $sha1 : q{}; } diff --git a/IkiWiki/Plugin/monotone.pm b/IkiWiki/Plugin/monotone.pm index c717ceefb..9502804f1 100644 --- a/IkiWiki/Plugin/monotone.pm +++ b/IkiWiki/Plugin/monotone.pm @@ -558,7 +558,8 @@ sub rcs_recentchanges ($) { # from the changelog if ($cert->{key} eq $config{mtnkey}) { $committype = "web"; - } else { + } + else { $committype = "mtn"; } } elsif ($cert->{name} eq "date") { -- cgit v1.2.3 From 265b4f0576d5e6be61d80239db372430c52f31b7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 18 Jan 2010 12:38:05 -0500 Subject: response --- doc/bugs/removing_pages_with_utf8_characters.mdwn | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/bugs/removing_pages_with_utf8_characters.mdwn b/doc/bugs/removing_pages_with_utf8_characters.mdwn index a962a328a..77ec00575 100644 --- a/doc/bugs/removing_pages_with_utf8_characters.mdwn +++ b/doc/bugs/removing_pages_with_utf8_characters.mdwn @@ -2,6 +2,10 @@ I have a page with the name "umläute". When I try to remove it, ikiwiki says: Error: ?umläute does not exist +> I'm curious about the '?' in the "?umläute" message. Suggests that the +> filename starts with another strange character. Can I get a copy of a +> git repository or tarball containing this file? --[[Joey]] + I wrote the following patch, which seems to work on my machine. I'm running on FreeBSD 6.3-RELEASE with ikiwiki-3.20100102.3 and perl-5.8.9_3. --- remove.pm.orig 2009-12-14 23:26:20.000000000 +0100 @@ -16,3 +20,9 @@ I wrote the following patch, which seems to work on my machine. I'm running on F # This untaint is safe because of the +> The problem with this patch is that, in a recent fix to the same +> plugin, I made `@pages` come from `$form->field("page")`, and +> that, in turn is already run through `decode_form_utf8` just above the +> code you patched. So I need to understand why that is apparently not +> working for you. (It works fine for me, even when deleting a file named +> "umläute" --[[Joey]] -- cgit v1.2.3 From be523e7740339d7884dabfa915c7c2df8c60bf27 Mon Sep 17 00:00:00 2001 From: "http://www.google.com/profiles/schmonz" Date: Mon, 18 Jan 2010 19:13:00 +0000 Subject: response --- doc/bugs/anonok_vs._httpauth.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/bugs/anonok_vs._httpauth.mdwn b/doc/bugs/anonok_vs._httpauth.mdwn index e386a8d96..0a62164cb 100644 --- a/doc/bugs/anonok_vs._httpauth.mdwn +++ b/doc/bugs/anonok_vs._httpauth.mdwn @@ -54,3 +54,7 @@ and a whitelist of OpenIDs in `locked_pages`...) >>>>>> change. And then the Edit link for Discussion subpages could do >>>>>> as you suggest, adding one click for the httpauth user, who won't >>>>>> often need to edit those subpages. --[[schmonz]] + +>> On reflection, I've stopped being bothered by the +>> redirect-to-signin-page approach. (It only needs to happen once per +>> browser session, anyway.) Can we try that? --[[schmonz]] -- cgit v1.2.3 From 4a8389825ae0715ba68846881ddc8d25b3f9ccb8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 18 Jan 2010 18:00:10 -0500 Subject: update --- doc/bugs/removing_pages_with_utf8_characters.mdwn | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/doc/bugs/removing_pages_with_utf8_characters.mdwn b/doc/bugs/removing_pages_with_utf8_characters.mdwn index 77ec00575..2fa4efa8b 100644 --- a/doc/bugs/removing_pages_with_utf8_characters.mdwn +++ b/doc/bugs/removing_pages_with_utf8_characters.mdwn @@ -26,3 +26,24 @@ I wrote the following patch, which seems to work on my machine. I'm running on F > code you patched. So I need to understand why that is apparently not > working for you. (It works fine for me, even when deleting a file named > "umläute" --[[Joey]] + +---- + +> Update, having looked at the file in the src of the wiki that +> is causing trouble for remove, it is: `uml\303\203\302\244ute.mdwn` +> And that is not utf-8 encoded, which, represented the same +> would be: `uml\303\244ute.mdwn` +> +> I think it's doubly-utf-8 encoded, which perhaps explains why the above +> patch works around the problem (since the page name gets doubly-decoded +> with it). The patch doesn't fix related problems when using remove, etc. +> +> Apparently, on apoca's system, perl encodes filenames differently +> depending on locale settings. On mine, it does not. Ie, this perl +> program always creates a file named `uml\303\244ute`, no matter +> whether I run it with LANG="" or LANG="en_US.UTF-8": +> +> perl -e 'use IkiWiki; writefile("umläute", "./", "baz")' +> +> Remains to be seen if this is due to the older version of perl used +> there, or perhaps FreeBSD itself. --[[Joey]] -- cgit v1.2.3 From 30c5f62f741b8be4677b46b19a6c7ccb5963e101 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 18 Jan 2010 20:41:12 -0500 Subject: update --- doc/bugs/removing_pages_with_utf8_characters.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/bugs/removing_pages_with_utf8_characters.mdwn b/doc/bugs/removing_pages_with_utf8_characters.mdwn index 2fa4efa8b..0d96aa75f 100644 --- a/doc/bugs/removing_pages_with_utf8_characters.mdwn +++ b/doc/bugs/removing_pages_with_utf8_characters.mdwn @@ -47,3 +47,5 @@ I wrote the following patch, which seems to work on my machine. I'm running on F > > Remains to be seen if this is due to the older version of perl used > there, or perhaps FreeBSD itself. --[[Joey]] +> +> Update: Perl 5.10 fixed the problem. --[[Joey]] -- cgit v1.2.3 From 8bf2f5a31ae3569b0c1c5b139640f7e8356a90f4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 19 Jan 2010 23:42:04 -0500 Subject: handle git-notes breakage The new git-notes feature in git 1.6.6 changes git log output in a way that broke ikiwiki's parser if notes are added to commits. I decided to deal with this by disabling notes when ikiwiki uses git, by setting GIT_NOTES_REF="". AFAICS, looking up notes when dumping logs will only waste time, since it does not currently seem to make sense for ikiwiki to do anything with the notes. --- IkiWiki/Plugin/git.pm | 3 +++ debian/changelog | 3 +++ 2 files changed, 6 insertions(+) diff --git a/IkiWiki/Plugin/git.pm b/IkiWiki/Plugin/git.pm index 786c7b1f2..1eec6aee6 100644 --- a/IkiWiki/Plugin/git.pm +++ b/IkiWiki/Plugin/git.pm @@ -51,6 +51,9 @@ sub checkconfig () { wrappermode => (defined $config{git_wrappermode} ? $config{git_wrappermode} : "06755"), }; } + + # Avoid notes, parser does not handle and they only slow things down. + $ENV{GIT_NOTES_REF}=""; # Run receive test only if being called by the wrapper, and not # when generating same. diff --git a/debian/changelog b/debian/changelog index f17eed3e5..6fbbe0a23 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,9 @@ ikiwiki (3.20100104) UNRELEASED; urgency=low * websetup: Fix bug in array change detection. * linkmap: Simplify and improve browser compatability by using an img, not object tag. + * git: The new git-notes feature in git 1.6.6 changes git log output + in a way that broke ikiwiki's parser if notes are added to commits. + Deal with this. -- Joey Hess Mon, 04 Jan 2010 12:53:24 -0500 -- cgit v1.2.3 From ee9ae0a3149f04e9373a0b7b1fece99f5cc78e9c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 21 Jan 2010 15:23:25 -0500 Subject: po: avoid crash when page is empty Note that there is an associated po4a warning when a page is empty: Use of uninitialized value $file in substitution (s///) at /usr/share/perl5/Locale/Po4a/Text.pm line 205. I've filed a bug with po4a about that, but the important thing is fixing the crash here. --- IkiWiki/Plugin/po.pm | 12 ++---------- debian/changelog | 1 + 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 02fc4a89e..f8801185e 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -1057,11 +1057,8 @@ sub commit_and_refresh ($$) { IkiWiki::saveindex(); } -# on success, returns the filtered content. -# on error, if $nonfatal, warn and return undef; else, error out. -sub po_to_markup ($$;$) { +sub po_to_markup ($$) { my ($page, $content) = (shift, shift); - my $nonfatal = shift; $content = '' unless defined $content; $content = decode_utf8(encode_utf8($content)); @@ -1084,10 +1081,6 @@ sub po_to_markup ($$;$) { my $fail = sub ($) { my $msg = "po(po_to_markup) - $page : " . shift; - if ($nonfatal) { - warn $msg; - return undef; - } error($msg, sub { unlink $infile, $outfile}); }; @@ -1108,8 +1101,7 @@ sub po_to_markup ($$;$) { $doc->write($outfile) or return $fail->(sprintf(gettext("failed to write %s"), $outfile)); - $content = readfile($outfile) - or return $fail->(sprintf(gettext("failed to read %s"), $outfile)); + $content = readfile($outfile); # Unlinking should happen automatically, thanks to File::Temp, # but it does not work here, probably because of the way writefile() diff --git a/debian/changelog b/debian/changelog index 6fbbe0a23..91f5d7807 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,6 +13,7 @@ ikiwiki (3.20100104) UNRELEASED; urgency=low * git: The new git-notes feature in git 1.6.6 changes git log output in a way that broke ikiwiki's parser if notes are added to commits. Deal with this. + * po: Avoid crash when a page is empty. -- Joey Hess Mon, 04 Jan 2010 12:53:24 -0500 -- cgit v1.2.3 From 2e585ec001e5b593b14307f7a871e48891c606df Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Fri, 22 Jan 2010 07:36:24 +0000 Subject: query, help! --- ...e_than_one_dest_page_from_same_source_page.mdwn | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn diff --git a/doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn b/doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn new file mode 100644 index 000000000..db7b49ae4 --- /dev/null +++ b/doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn @@ -0,0 +1,23 @@ +Is it possible to render more than one destination page from the same source page? +That is, same source, slightly different presentation at the other end, needing a different output file. + +I have two problems that would be solved by being able to do this. + +1. "full" and "print" versions of a page. + +One has a page "foo", which is rendered into foo.html. +One also wants a foo-print.html page, which uses "page-print.tmpl" rather than "page.tmpl" as its template. + +I want to do this for every page on the site, automatically, so it isn't feasible to do it by hand. + +2. "en" and "en-us" versions of a page. + +My site is in non-US English. However, I want US-English people to find my site when they search for it when they use US spelling on certain search terms (such as "optimise" versus "optimize"). This requires a (crude) US-English version of the site where the spellings are changed automatically, and the LANG is "en-us" rather than "en". (No, don't tell me to use keywords; Google ignores keywords and has for a number of years). + +So I want the page "foo" to render to "foo.en.html" and "foo.en-us.html" where the content is the same, just some automated word-substitution applied before foo.en-us.html is written. And do this for every page on the site. + +I can't do this with the "po" plugin, as it considers "en-us" not to be a valid language. And the "po" plugin is probably overkill for what I want anyway. + +But I'm not sure how to achieve the result I need. + +-- [[KathrynAndersen]] -- cgit v1.2.3 From f24ca627ddf147491dfc987c99b7fda9d5a63f95 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Fri, 22 Jan 2010 07:38:12 +0000 Subject: formatting --- doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn b/doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn index db7b49ae4..73375938c 100644 --- a/doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn +++ b/doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn @@ -3,14 +3,16 @@ That is, same source, slightly different presentation at the other end, needing I have two problems that would be solved by being able to do this. -1. "full" and "print" versions of a page. +[[!toc startlevel=2]] + +##"full" and "print" versions of a page. One has a page "foo", which is rendered into foo.html. One also wants a foo-print.html page, which uses "page-print.tmpl" rather than "page.tmpl" as its template. I want to do this for every page on the site, automatically, so it isn't feasible to do it by hand. -2. "en" and "en-us" versions of a page. +##"en" and "en-us" versions of a page. My site is in non-US English. However, I want US-English people to find my site when they search for it when they use US spelling on certain search terms (such as "optimise" versus "optimize"). This requires a (crude) US-English version of the site where the spellings are changed automatically, and the LANG is "en-us" rather than "en". (No, don't tell me to use keywords; Google ignores keywords and has for a number of years). -- cgit v1.2.3 From d264164673fd64f2e15bd14fa8179d182afd03d7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 22 Jan 2010 15:54:00 -0500 Subject: response --- ...ore_than_one_dest_page_from_same_source_page.mdwn | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn b/doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn index 73375938c..e88c23b07 100644 --- a/doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn +++ b/doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn @@ -1,6 +1,17 @@ Is it possible to render more than one destination page from the same source page? That is, same source, slightly different presentation at the other end, needing a different output file. +> It's possible to render more than one output _file_ from a given source +> page. See, for example, the inline plugin's generation of rss files. +> This is done by calling `will_render()` and using `writefile()` to +> generate the additional files. Probably in a format hook if you want +> to generate html files. +> +> It's not possible for one source file to represent multiple wiki pages. +> There is a 1:1 mapping between source filenames and page names. The +> difference between wiki pages and output files is that you can use +> wikilinks to link to wiki pages, etc. --[[Joey]] + I have two problems that would be solved by being able to do this. [[!toc startlevel=2]] @@ -12,6 +23,12 @@ One also wants a foo-print.html page, which uses "page-print.tmpl" rather than " I want to do this for every page on the site, automatically, so it isn't feasible to do it by hand. +> Did you know that ikiwiki's `style.css` arranges for pages to display +> differently when printed out? Things like the Action bar are hidden in +> printouts (search for `@media print`). So I don't see a reason to need +> whole files for printing when you can use these style sheet tricks. +> --[[Joey]] + ##"en" and "en-us" versions of a page. My site is in non-US English. However, I want US-English people to find my site when they search for it when they use US spelling on certain search terms (such as "optimise" versus "optimize"). This requires a (crude) US-English version of the site where the spellings are changed automatically, and the LANG is "en-us" rather than "en". (No, don't tell me to use keywords; Google ignores keywords and has for a number of years). @@ -23,3 +40,6 @@ I can't do this with the "po" plugin, as it considers "en-us" not to be a valid But I'm not sure how to achieve the result I need. -- [[KathrynAndersen]] + +> Sounds like this could be considered a single page that generates two +> html files, so could be handled per above. --[[Joey]] -- cgit v1.2.3 From ac1b40643113893f9bc58bd92e23e2e94d475231 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 22 Jan 2010 16:25:22 -0500 Subject: releasing version 3.20100122 --- debian/changelog | 7 ++- ikiwiki.spec | 2 +- po/bg.po | 138 ++++++++++++++++++++++++++++--------------------------- po/cs.po | 137 +++++++++++++++++++++++++++--------------------------- po/da.po | 137 +++++++++++++++++++++++++++--------------------------- po/de.po | 137 +++++++++++++++++++++++++++--------------------------- po/es.po | 138 ++++++++++++++++++++++++++++--------------------------- po/fr.po | 137 +++++++++++++++++++++++++++--------------------------- po/gu.po | 138 ++++++++++++++++++++++++++++--------------------------- po/ikiwiki.pot | 89 ++++++++++++++++++----------------- po/it.po | 137 +++++++++++++++++++++++++++--------------------------- po/pl.po | 138 ++++++++++++++++++++++++++++--------------------------- po/sv.po | 138 ++++++++++++++++++++++++++++--------------------------- po/tr.po | 124 ++++++++++++++++++++++++------------------------- po/vi.po | 138 ++++++++++++++++++++++++++++--------------------------- 15 files changed, 886 insertions(+), 849 deletions(-) diff --git a/debian/changelog b/debian/changelog index 91f5d7807..4e76b1d69 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -ikiwiki (3.20100104) UNRELEASED; urgency=low +ikiwiki (3.20100122) unstable; urgency=low * inline: Avoid showing edit links if page editing is disabled. (Sjoerd) @@ -8,14 +8,13 @@ ikiwiki (3.20100104) UNRELEASED; urgency=low * img: Support alignment of images with captions. (Giuseppe Bilotta) * websetup: Fix utf-8 problems. * websetup: Fix bug in array change detection. - * linkmap: Simplify and improve browser compatability by using an img, + * linkmap: Simplify and improve browser compatibility by using an img, not object tag. * git: The new git-notes feature in git 1.6.6 changes git log output in a way that broke ikiwiki's parser if notes are added to commits. - Deal with this. * po: Avoid crash when a page is empty. - -- Joey Hess Mon, 04 Jan 2010 12:53:24 -0500 + -- Joey Hess Fri, 22 Jan 2010 16:02:36 -0500 ikiwiki (3.20100102.3) unstable; urgency=low diff --git a/ikiwiki.spec b/ikiwiki.spec index 78c32b962..044c7c033 100644 --- a/ikiwiki.spec +++ b/ikiwiki.spec @@ -1,5 +1,5 @@ Name: ikiwiki -Version: 3.20100102.3 +Version: 3.20100122 Release: 1%{?dist} Summary: A wiki compiler diff --git a/po/bg.po b/po/bg.po index 8f62d4652..810a16e95 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: 2009-10-31 18:31-0400\n" +"POT-Creation-Date: 2010-01-22 16:04-0500\n" "PO-Revision-Date: 2007-01-12 01:19+0200\n" "Last-Translator: Damyan Ivanov \n" "Language-Team: Bulgarian \n" @@ -16,46 +16,46 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" -#: ../IkiWiki/CGI.pm:114 +#: ../IkiWiki/CGI.pm:116 msgid "You need to log in first." msgstr "Първо трябва да влезете." -#: ../IkiWiki/CGI.pm:147 +#: ../IkiWiki/CGI.pm:149 msgid "" "probable misconfiguration: sslcookie is set, but you are attempting to login " "via http, not https" msgstr "" -#: ../IkiWiki/CGI.pm:150 +#: ../IkiWiki/CGI.pm:152 msgid "login failed, perhaps you need to turn on cookies?" msgstr "" -#: ../IkiWiki/CGI.pm:169 ../IkiWiki/CGI.pm:314 +#: ../IkiWiki/CGI.pm:171 ../IkiWiki/CGI.pm:320 msgid "Your login session has expired." msgstr "" -#: ../IkiWiki/CGI.pm:190 +#: ../IkiWiki/CGI.pm:192 msgid "Login" msgstr "" -#: ../IkiWiki/CGI.pm:191 +#: ../IkiWiki/CGI.pm:193 #, fuzzy msgid "Preferences" msgstr "Предпочитанията са запазени." -#: ../IkiWiki/CGI.pm:192 +#: ../IkiWiki/CGI.pm:194 msgid "Admin" msgstr "" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:234 msgid "Preferences saved." msgstr "Предпочитанията са запазени." -#: ../IkiWiki/CGI.pm:278 +#: ../IkiWiki/CGI.pm:284 msgid "You are banned." msgstr "Достъпът ви е забранен." -#: ../IkiWiki/CGI.pm:405 ../IkiWiki/CGI.pm:406 ../IkiWiki.pm:1282 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 msgid "Error" msgstr "Грешка" @@ -229,36 +229,36 @@ msgstr "" msgid "comments on page '%s' are closed" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:464 +#: ../IkiWiki/Plugin/comments.pm:467 msgid "comment stored for moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:466 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "Your comment will be posted after moderator review" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:479 +#: ../IkiWiki/Plugin/comments.pm:482 msgid "Added a comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:483 +#: ../IkiWiki/Plugin/comments.pm:486 #, perl-format msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:525 ../IkiWiki/Plugin/websetup.pm:236 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 msgid "you are not logged in as an admin" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:576 +#: ../IkiWiki/Plugin/comments.pm:579 msgid "Comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:615 +#: ../IkiWiki/Plugin/comments.pm:618 msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:766 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comments" msgstr "" @@ -328,38 +328,38 @@ msgstr "" msgid "fortune failed" msgstr "грешшка в приставката „fortune”" -#: ../IkiWiki/Plugin/getsource.pm:62 ../IkiWiki/Plugin/goto.pm:55 +#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 #, fuzzy msgid "missing page" msgstr "липсващ параметър „id” на шаблона" -#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 +#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 #, perl-format msgid "The page %s does not exist." msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:73 +#: ../IkiWiki/Plugin/getsource.pm:74 #, fuzzy msgid "not a page" msgstr "грешка при четене на „%s”: %s" -#: ../IkiWiki/Plugin/getsource.pm:75 +#: ../IkiWiki/Plugin/getsource.pm:76 #, perl-format msgid "%s is an attachment, not a page." msgstr "" -#: ../IkiWiki/Plugin/git.pm:651 ../IkiWiki/Plugin/git.pm:669 +#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:691 +#: ../IkiWiki/Plugin/git.pm:697 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:695 +#: ../IkiWiki/Plugin/git.pm:701 msgid "you are not allowed to change file modes" msgstr "" @@ -453,16 +453,21 @@ msgstr "" msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:598 +#: ../IkiWiki/Plugin/inline.pm:624 msgid "RPC::XML::Client not found, not pinging" msgstr "модулът „RPC::XML::Client” не е намерен; източникът не е проверен" -#: ../IkiWiki/Plugin/linkmap.pm:101 +#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 +#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 #, fuzzy msgid "failed to run dot" msgstr "приставката „linkmap”: грешка при изпълнение на „dot”" -#: ../IkiWiki/Plugin/lockedit.pm:47 +#: ../IkiWiki/Plugin/linkmap.pm:84 +msgid "linkmap" +msgstr "" + +#: ../IkiWiki/Plugin/lockedit.pm:48 #, fuzzy, perl-format msgid "%s is locked and cannot be edited" msgstr "" @@ -608,7 +613,7 @@ msgstr "" msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:638 +#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 #, fuzzy, perl-format msgid "building %s" msgstr "промяна на %s" @@ -662,23 +667,18 @@ msgstr "грешка при запис на файла „%s”: %s" msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1095 ../IkiWiki/Plugin/po.pm:1109 -#: ../IkiWiki/Plugin/po.pm:1149 +#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 +#: ../IkiWiki/Plugin/po.pm:1141 #, fuzzy, perl-format msgid "failed to write %s" msgstr "грешка при запис на файла „%s”: %s" -#: ../IkiWiki/Plugin/po.pm:1107 +#: ../IkiWiki/Plugin/po.pm:1100 #, fuzzy msgid "failed to translate" msgstr "приставката „linkmap”: грешка при изпълнение на „dot”" -#: ../IkiWiki/Plugin/po.pm:1112 -#, fuzzy, perl-format -msgid "failed to read %s" -msgstr "грешка при запис на файла „%s”: %s" - -#: ../IkiWiki/Plugin/po.pm:1161 +#: ../IkiWiki/Plugin/po.pm:1153 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -847,20 +847,20 @@ msgstr "обновяване на страницата „%s”" msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:247 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:250 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:347 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:571 +#: ../IkiWiki/Plugin/rename.pm:572 #, fuzzy, perl-format msgid "update for rename of %s to %s" msgstr "обновяване на страниците от уики „%s”: %s от потребител „%s”" @@ -998,30 +998,30 @@ msgstr "" msgid "enable %s?" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/websetup.pm:244 msgid "setup file for this wiki is not known" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:256 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "main" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:257 +#: ../IkiWiki/Plugin/websetup.pm:261 msgid "plugins" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:395 +#: ../IkiWiki/Plugin/websetup.pm:404 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:399 +#: ../IkiWiki/Plugin/websetup.pm:408 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:436 +#: ../IkiWiki/Plugin/websetup.pm:445 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1036,54 +1036,54 @@ msgstr "" msgid "bad file name %s" msgstr "пропускане на невалидното име на файл „%s”" -#: ../IkiWiki/Render.pm:150 +#: ../IkiWiki/Render.pm:153 #, perl-format msgid "scanning %s" msgstr "сканиране на „%s”" -#: ../IkiWiki/Render.pm:271 +#: ../IkiWiki/Render.pm:274 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "allow this" msgstr "" -#: ../IkiWiki/Render.pm:300 ../IkiWiki/Render.pm:327 +#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 #, perl-format msgid "skipping bad filename %s" msgstr "пропускане на невалидното име на файл „%s”" -#: ../IkiWiki/Render.pm:305 +#: ../IkiWiki/Render.pm:308 #, perl-format msgid "%s has multiple possible source pages" msgstr "" -#: ../IkiWiki/Render.pm:395 +#: ../IkiWiki/Render.pm:413 #, perl-format msgid "removing old page %s" msgstr "премахване на старата страница „%s”" -#: ../IkiWiki/Render.pm:471 +#: ../IkiWiki/Render.pm:486 #, fuzzy, perl-format msgid "building %s, which links to %s" msgstr "обновяване на страницата „%s”, съдържаща препратки към „%s”" -#: ../IkiWiki/Render.pm:480 +#: ../IkiWiki/Render.pm:495 #, fuzzy, perl-format msgid "removing %s, no longer built by %s" msgstr "премахване на „%s” понеже не се генерира от „%s”" -#: ../IkiWiki/Render.pm:603 +#: ../IkiWiki/Render.pm:618 #, fuzzy, perl-format msgid "building %s, which depends on %s" msgstr "обновяване на страницата „%s”, зависеща от „%s”" -#: ../IkiWiki/Render.pm:616 +#: ../IkiWiki/Render.pm:631 #, fuzzy, perl-format msgid "building %s, to update its backlinks" msgstr "обновяване на „%s” и осъвременяване на обратните връзки" -#: ../IkiWiki/Render.pm:679 +#: ../IkiWiki/Render.pm:696 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: неуспех при обновяване на страницата „%s”" @@ -1099,16 +1099,16 @@ msgstr "грешка при четене на „%s”: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:76 +#: ../IkiWiki/Setup/Automator.pm:79 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:102 +#: ../IkiWiki/Setup/Automator.pm:105 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:120 +#: ../IkiWiki/Setup/Automator.pm:123 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1181,25 +1181,25 @@ msgstr "" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1264 +#: ../IkiWiki.pm:1263 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "открита е циклична завидимост при %s на „%s” на дълбочина %i" -#: ../IkiWiki.pm:1863 +#: ../IkiWiki.pm:1862 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2006 +#: ../IkiWiki.pm:2005 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2017 +#: ../IkiWiki.pm:2016 #, perl-format msgid "unknown sort type %s" msgstr "непознат вид сортиране „%s”" -#: ../IkiWiki.pm:2036 +#: ../IkiWiki.pm:2035 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "грешка при четене на „%s”: %s" @@ -1224,6 +1224,10 @@ msgstr "" msgid "What is the domain name of the web server?" msgstr "" +#, fuzzy +#~ msgid "failed to read %s" +#~ msgstr "грешка при запис на файла „%s”: %s" + #~ msgid "discussion" #~ msgstr "дискусия" diff --git a/po/cs.po b/po/cs.po index 37374be28..399111069 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: 2009-10-31 18:31-0400\n" +"POT-Creation-Date: 2010-01-22 16:04-0500\n" "PO-Revision-Date: 2009-09-11 20:23+0200\n" "Last-Translator: Miroslav Kure \n" "Language-Team: Czech \n" @@ -15,11 +15,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../IkiWiki/CGI.pm:114 +#: ../IkiWiki/CGI.pm:116 msgid "You need to log in first." msgstr "Nejprve se musíte přihlásit." -#: ../IkiWiki/CGI.pm:147 +#: ../IkiWiki/CGI.pm:149 msgid "" "probable misconfiguration: sslcookie is set, but you are attempting to login " "via http, not https" @@ -27,35 +27,35 @@ msgstr "" "pravděpodobná chyba konfigurace: je nastavena proměnná sslcookie, ale " "Ezkoušíte se přihlásit přes http a ne přes https" -#: ../IkiWiki/CGI.pm:150 +#: ../IkiWiki/CGI.pm:152 msgid "login failed, perhaps you need to turn on cookies?" msgstr "přihlášení selhalo; možná si musíte povolit cookies?" -#: ../IkiWiki/CGI.pm:169 ../IkiWiki/CGI.pm:314 +#: ../IkiWiki/CGI.pm:171 ../IkiWiki/CGI.pm:320 msgid "Your login session has expired." msgstr "Vaše sezení expirovalo." -#: ../IkiWiki/CGI.pm:190 +#: ../IkiWiki/CGI.pm:192 msgid "Login" msgstr "Přihlášení" -#: ../IkiWiki/CGI.pm:191 +#: ../IkiWiki/CGI.pm:193 msgid "Preferences" msgstr "Předvolby" -#: ../IkiWiki/CGI.pm:192 +#: ../IkiWiki/CGI.pm:194 msgid "Admin" msgstr "Správce" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:234 msgid "Preferences saved." msgstr "Nastavení uloženo." -#: ../IkiWiki/CGI.pm:278 +#: ../IkiWiki/CGI.pm:284 msgid "You are banned." msgstr "Jste vyhoštěni." -#: ../IkiWiki/CGI.pm:405 ../IkiWiki/CGI.pm:406 ../IkiWiki.pm:1282 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 msgid "Error" msgstr "Chyba" @@ -227,36 +227,36 @@ msgstr "stránka „%s“ neexistuje, takže nemůžete komentovat" msgid "comments on page '%s' are closed" msgstr "komentáře na stránce „%s“ jsou uzamčeny" -#: ../IkiWiki/Plugin/comments.pm:464 +#: ../IkiWiki/Plugin/comments.pm:467 msgid "comment stored for moderation" msgstr "komentář uložen pro schválení" -#: ../IkiWiki/Plugin/comments.pm:466 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "Your comment will be posted after moderator review" msgstr "Váš komentář bude zobrazen po schválení moderátorem" -#: ../IkiWiki/Plugin/comments.pm:479 +#: ../IkiWiki/Plugin/comments.pm:482 msgid "Added a comment" msgstr "Přidán komentář" -#: ../IkiWiki/Plugin/comments.pm:483 +#: ../IkiWiki/Plugin/comments.pm:486 #, perl-format msgid "Added a comment: %s" msgstr "Přidán komentář: %s" -#: ../IkiWiki/Plugin/comments.pm:525 ../IkiWiki/Plugin/websetup.pm:236 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 msgid "you are not logged in as an admin" msgstr "nejste přihlášeni jako správce" -#: ../IkiWiki/Plugin/comments.pm:576 +#: ../IkiWiki/Plugin/comments.pm:579 msgid "Comment moderation" msgstr "Schvalování komentářů" -#: ../IkiWiki/Plugin/comments.pm:615 +#: ../IkiWiki/Plugin/comments.pm:618 msgid "comment moderation" msgstr "schvalování komentářů" -#: ../IkiWiki/Plugin/comments.pm:766 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comments" msgstr "Komentáře" @@ -323,36 +323,36 @@ msgstr "musíte zadat formát a text" msgid "fortune failed" msgstr "fortune selhal" -#: ../IkiWiki/Plugin/getsource.pm:62 ../IkiWiki/Plugin/goto.pm:55 +#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 msgid "missing page" msgstr "chybějící stránka" -#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 +#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 #, perl-format msgid "The page %s does not exist." msgstr "Stránka %s neexistuje." -#: ../IkiWiki/Plugin/getsource.pm:73 +#: ../IkiWiki/Plugin/getsource.pm:74 msgid "not a page" msgstr "není stránkou" -#: ../IkiWiki/Plugin/getsource.pm:75 +#: ../IkiWiki/Plugin/getsource.pm:76 #, perl-format msgid "%s is an attachment, not a page." msgstr "%s není ani příloha, ani stránka." -#: ../IkiWiki/Plugin/git.pm:651 ../IkiWiki/Plugin/git.pm:669 +#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "nejste oprávněni měnit %s" -#: ../IkiWiki/Plugin/git.pm:691 +#: ../IkiWiki/Plugin/git.pm:697 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "nemůžete pracovat se souborem s přístupovým oprávněními %s" -#: ../IkiWiki/Plugin/git.pm:695 +#: ../IkiWiki/Plugin/git.pm:701 msgid "you are not allowed to change file modes" msgstr "nejste oprávněni měnit přístupová oprávnění souborů" @@ -439,15 +439,20 @@ msgstr "Přidat nový příspěvek nazvaný:" msgid "nonexistant template %s" msgstr "neexistující šablona %s" -#: ../IkiWiki/Plugin/inline.pm:598 +#: ../IkiWiki/Plugin/inline.pm:624 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client nebyl nalezen, nepinkám" -#: ../IkiWiki/Plugin/linkmap.pm:101 +#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 +#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 msgid "failed to run dot" msgstr "nepodařilo se spustit dot" -#: ../IkiWiki/Plugin/lockedit.pm:47 +#: ../IkiWiki/Plugin/linkmap.pm:84 +msgid "linkmap" +msgstr "" + +#: ../IkiWiki/Plugin/lockedit.pm:48 #, perl-format msgid "%s is locked and cannot be edited" msgstr "Stránka %s je zamknutá a nelze ji měnit" @@ -589,7 +594,7 @@ msgstr "" msgid "rebuilding all pages to fix meta titles" msgstr "znovusestavuji všechny stránky, aby se opravily meta nadpisy" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:638 +#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 #, perl-format msgid "building %s" msgstr "sestavuji %s" @@ -647,22 +652,17 @@ msgstr "nepodařilo se přeložit %s" msgid "removed obsolete PO files" msgstr "odstraněny zastaralé PO soubory" -#: ../IkiWiki/Plugin/po.pm:1095 ../IkiWiki/Plugin/po.pm:1109 -#: ../IkiWiki/Plugin/po.pm:1149 +#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 +#: ../IkiWiki/Plugin/po.pm:1141 #, perl-format msgid "failed to write %s" msgstr "nepodařilo se zapsat %s" -#: ../IkiWiki/Plugin/po.pm:1107 +#: ../IkiWiki/Plugin/po.pm:1100 msgid "failed to translate" msgstr "překlad se nezdařil" -#: ../IkiWiki/Plugin/po.pm:1112 -#, perl-format -msgid "failed to read %s" -msgstr "nepodařilo se přečíst %s" - -#: ../IkiWiki/Plugin/po.pm:1161 +#: ../IkiWiki/Plugin/po.pm:1153 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" "neplatná gettext data, pro pokračování v úpravách se vraťte na předchozí " @@ -830,20 +830,20 @@ msgstr "přejmenování %s" msgid "Also rename SubPages and attachments" msgstr "Také přejmenovat podstránky a přílohy" -#: ../IkiWiki/Plugin/rename.pm:247 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "Najednou lze přejmenovat pouze jednu přílohu." -#: ../IkiWiki/Plugin/rename.pm:250 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "Vyberte přílohu, kterou chcete přejmenovat." -#: ../IkiWiki/Plugin/rename.pm:347 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "přejmenování %s na %s" -#: ../IkiWiki/Plugin/rename.pm:571 +#: ../IkiWiki/Plugin/rename.pm:572 #, perl-format msgid "update for rename of %s to %s" msgstr "aktualizace pro přejmenování %s na %s" @@ -971,24 +971,24 @@ msgstr "modul" msgid "enable %s?" msgstr "povolit %s?" -#: ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/websetup.pm:244 msgid "setup file for this wiki is not known" msgstr "konfigurační soubor této wiki je neznámý" -#: ../IkiWiki/Plugin/websetup.pm:256 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "main" msgstr "hlavní" -#: ../IkiWiki/Plugin/websetup.pm:257 +#: ../IkiWiki/Plugin/websetup.pm:261 msgid "plugins" msgstr "moduly" -#: ../IkiWiki/Plugin/websetup.pm:395 +#: ../IkiWiki/Plugin/websetup.pm:404 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "Níže uvedené změny v konfiguraci se projeví až po znovusestavení wiki." -#: ../IkiWiki/Plugin/websetup.pm:399 +#: ../IkiWiki/Plugin/websetup.pm:408 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." @@ -996,7 +996,7 @@ msgstr "" "Aby se níže uvedené změny v konfiguraci zcela projevily, budete možná muset " "znovusestavit wiki." -#: ../IkiWiki/Plugin/websetup.pm:436 +#: ../IkiWiki/Plugin/websetup.pm:445 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1013,12 +1013,12 @@ msgstr "nemohu určit identitu nedůvěryhodného uživatele %s" msgid "bad file name %s" msgstr "chybné jméno souboru %s" -#: ../IkiWiki/Render.pm:150 +#: ../IkiWiki/Render.pm:153 #, perl-format msgid "scanning %s" msgstr "prohledávám %s" -#: ../IkiWiki/Render.pm:271 +#: ../IkiWiki/Render.pm:274 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " @@ -1027,42 +1027,42 @@ msgstr "" "v cestě ke zdrojovému adresáři (%s) byl nalezen symbolický odkaz -- chcete-" "li to povolit, nastavte proměnnou allow_symlinks_before_srcdir" -#: ../IkiWiki/Render.pm:300 ../IkiWiki/Render.pm:327 +#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 #, perl-format msgid "skipping bad filename %s" msgstr "přeskakuji chybné jméno souboru %s" -#: ../IkiWiki/Render.pm:305 +#: ../IkiWiki/Render.pm:308 #, perl-format msgid "%s has multiple possible source pages" msgstr "%s má několik možných zdrojových stránek" -#: ../IkiWiki/Render.pm:395 +#: ../IkiWiki/Render.pm:413 #, perl-format msgid "removing old page %s" msgstr "odstraňuji starou stránku %s" -#: ../IkiWiki/Render.pm:471 +#: ../IkiWiki/Render.pm:486 #, perl-format msgid "building %s, which links to %s" msgstr "sestavuji %s, která odkazuje na %s" -#: ../IkiWiki/Render.pm:480 +#: ../IkiWiki/Render.pm:495 #, perl-format msgid "removing %s, no longer built by %s" msgstr "odstraňuji %s, již není sestavována pomocí %s" -#: ../IkiWiki/Render.pm:603 +#: ../IkiWiki/Render.pm:618 #, perl-format msgid "building %s, which depends on %s" msgstr "sestavuji %s, která závisí na %s" -#: ../IkiWiki/Render.pm:616 +#: ../IkiWiki/Render.pm:631 #, perl-format msgid "building %s, to update its backlinks" msgstr "sestavuji %s, aby se aktualizovaly zpětné odkazy" -#: ../IkiWiki/Render.pm:679 +#: ../IkiWiki/Render.pm:696 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: nelze sestavit %s" @@ -1078,16 +1078,16 @@ msgstr "nemohu číst %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "musíte zadat název wiki (který obsahuje alfanumerické znaky)" -#: ../IkiWiki/Setup/Automator.pm:76 +#: ../IkiWiki/Setup/Automator.pm:79 #, perl-format msgid "unsupported revision control system %s" msgstr "nepodporovaný systém pro správu verzí: %s" -#: ../IkiWiki/Setup/Automator.pm:102 +#: ../IkiWiki/Setup/Automator.pm:105 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "nepodařilo se nastavit repositář pomocí ikiwiki-makerepo" -#: ../IkiWiki/Setup/Automator.pm:120 +#: ../IkiWiki/Setup/Automator.pm:123 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "** Deaktivuji modul %s, protože selhává s touto hláškou:" @@ -1158,25 +1158,25 @@ msgstr "nelze použít několik rcs modulů" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "nepodařilo se nahrát externí modul vyžadovaný modulem %s: %s" -#: ../IkiWiki.pm:1264 +#: ../IkiWiki.pm:1263 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "Byla rozpoznána smyčka na %s v hloubce %i" -#: ../IkiWiki.pm:1863 +#: ../IkiWiki.pm:1862 msgid "yes" msgstr "ano" -#: ../IkiWiki.pm:2006 +#: ../IkiWiki.pm:2005 msgid "Sort::Naturally needed for title_natural sort" msgstr "Pro řazení pomocí title_natural je nutný modul Sort::Naturally" -#: ../IkiWiki.pm:2017 +#: ../IkiWiki.pm:2016 #, perl-format msgid "unknown sort type %s" msgstr "neznámý typ řazení %s" -#: ../IkiWiki.pm:2036 +#: ../IkiWiki.pm:2035 #, perl-format msgid "cannot match pages: %s" msgstr "nelze vybrat stránky: %s" @@ -1201,6 +1201,9 @@ msgstr "Který uživatel (wiki účet nebo openid) bude správce?" msgid "What is the domain name of the web server?" msgstr "Jaké je doménové jméno webového serveru?" +#~ msgid "failed to read %s" +#~ msgstr "nepodařilo se přečíst %s" + #~ msgid "Failed to parse url, cannot determine domain name" #~ msgstr "Nepodařilo se syntakticky rozebrat url, nelze určit doménová jméno." diff --git a/po/da.po b/po/da.po index 9801ca011..4bff9254c 100644 --- a/po/da.po +++ b/po/da.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.14159\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-10-31 18:31-0400\n" +"POT-Creation-Date: 2010-01-22 16:04-0500\n" "PO-Revision-Date: 2009-07-23 01:07+0200\n" "Last-Translator: Jonas Smedegaard \n" "Language-Team: None\n" @@ -19,11 +19,11 @@ msgstr "" "X-Poedit-Country: DENMARK\n" "X-Poedit-SourceCharset: utf-8\n" -#: ../IkiWiki/CGI.pm:114 +#: ../IkiWiki/CGI.pm:116 msgid "You need to log in first." msgstr "Du skal først logge på." -#: ../IkiWiki/CGI.pm:147 +#: ../IkiWiki/CGI.pm:149 msgid "" "probable misconfiguration: sslcookie is set, but you are attempting to login " "via http, not https" @@ -31,35 +31,35 @@ msgstr "" "mulig opsætningsfejl: sslcookie er sat, men du forsøger at logge på via " "http, ikke https" -#: ../IkiWiki/CGI.pm:150 +#: ../IkiWiki/CGI.pm:152 msgid "login failed, perhaps you need to turn on cookies?" msgstr "Pålogning mislykkedes, måske skal du tillade infokager (cookies)?" -#: ../IkiWiki/CGI.pm:169 ../IkiWiki/CGI.pm:314 +#: ../IkiWiki/CGI.pm:171 ../IkiWiki/CGI.pm:320 msgid "Your login session has expired." msgstr "Din kørsel (login session) er udløbet" -#: ../IkiWiki/CGI.pm:190 +#: ../IkiWiki/CGI.pm:192 msgid "Login" msgstr "Pålogning" -#: ../IkiWiki/CGI.pm:191 +#: ../IkiWiki/CGI.pm:193 msgid "Preferences" msgstr "Indstillinger" -#: ../IkiWiki/CGI.pm:192 +#: ../IkiWiki/CGI.pm:194 msgid "Admin" msgstr "Admin" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:234 msgid "Preferences saved." msgstr "Indstillinger gemt" -#: ../IkiWiki/CGI.pm:278 +#: ../IkiWiki/CGI.pm:284 msgid "You are banned." msgstr "Du er banlyst." -#: ../IkiWiki/CGI.pm:405 ../IkiWiki/CGI.pm:406 ../IkiWiki.pm:1282 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 msgid "Error" msgstr "Fejl" @@ -234,36 +234,36 @@ msgstr "siden '%s' eksisterer ikke, så du kan ikke kommentere" msgid "comments on page '%s' are closed" msgstr "kommentarer på side '%s' er lukket" -#: ../IkiWiki/Plugin/comments.pm:464 +#: ../IkiWiki/Plugin/comments.pm:467 msgid "comment stored for moderation" msgstr "kommentar gemt for moderering" -#: ../IkiWiki/Plugin/comments.pm:466 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "Your comment will be posted after moderator review" msgstr "Din kommentar vil blive tilføjet efter moderatorgenemsyn" -#: ../IkiWiki/Plugin/comments.pm:479 +#: ../IkiWiki/Plugin/comments.pm:482 msgid "Added a comment" msgstr "Tilføjede en kommentar" -#: ../IkiWiki/Plugin/comments.pm:483 +#: ../IkiWiki/Plugin/comments.pm:486 #, perl-format msgid "Added a comment: %s" msgstr "Tilføjede en kommentar: %s" -#: ../IkiWiki/Plugin/comments.pm:525 ../IkiWiki/Plugin/websetup.pm:236 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 msgid "you are not logged in as an admin" msgstr "du er ikke logget på som en administrator" -#: ../IkiWiki/Plugin/comments.pm:576 +#: ../IkiWiki/Plugin/comments.pm:579 msgid "Comment moderation" msgstr "Kommentarmoderering" -#: ../IkiWiki/Plugin/comments.pm:615 +#: ../IkiWiki/Plugin/comments.pm:618 msgid "comment moderation" msgstr "kommentarkoderering" -#: ../IkiWiki/Plugin/comments.pm:766 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comments" msgstr "Kommentarer" @@ -330,37 +330,37 @@ msgstr "skal angive format og tekst" msgid "fortune failed" msgstr "spådom (fortune) fejlede" -#: ../IkiWiki/Plugin/getsource.pm:62 ../IkiWiki/Plugin/goto.pm:55 +#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 msgid "missing page" msgstr "manglende side" -#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 +#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 #, perl-format msgid "The page %s does not exist." msgstr "Siden %s eksisterer ikke." -#: ../IkiWiki/Plugin/getsource.pm:73 +#: ../IkiWiki/Plugin/getsource.pm:74 #, fuzzy msgid "not a page" msgstr "kan ikke få sider til at passe sammen: %s" -#: ../IkiWiki/Plugin/getsource.pm:75 +#: ../IkiWiki/Plugin/getsource.pm:76 #, fuzzy, perl-format msgid "%s is an attachment, not a page." msgstr "%s er ikke en redigérbar side" -#: ../IkiWiki/Plugin/git.pm:651 ../IkiWiki/Plugin/git.pm:669 +#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "Du har ikke lov til at ændre %s" -#: ../IkiWiki/Plugin/git.pm:691 +#: ../IkiWiki/Plugin/git.pm:697 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "du kan ikke påvirke en fil med modus %s" -#: ../IkiWiki/Plugin/git.pm:695 +#: ../IkiWiki/Plugin/git.pm:701 msgid "you are not allowed to change file modes" msgstr "du har ikke lov til at ændre modus for filer" @@ -450,15 +450,20 @@ msgstr "Tilføj nyt indlæg med følgende titel:" msgid "nonexistant template %s" msgstr "ikke-eksisterende skabelon: %s" -#: ../IkiWiki/Plugin/inline.pm:598 +#: ../IkiWiki/Plugin/inline.pm:624 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client ikke fundet, pinger ikke" -#: ../IkiWiki/Plugin/linkmap.pm:101 +#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 +#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 msgid "failed to run dot" msgstr "dot-kørsel mislykkedes" -#: ../IkiWiki/Plugin/lockedit.pm:47 +#: ../IkiWiki/Plugin/linkmap.pm:84 +msgid "linkmap" +msgstr "" + +#: ../IkiWiki/Plugin/lockedit.pm:48 #, perl-format msgid "%s is locked and cannot be edited" msgstr "%s er låst og kan ikke redigeres" @@ -605,7 +610,7 @@ msgstr "" msgid "rebuilding all pages to fix meta titles" msgstr "gendanner alle sider for at korrigere meta titler" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:638 +#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 #, perl-format msgid "building %s" msgstr "danner %s" @@ -663,22 +668,17 @@ msgstr "oversættelse af %s mislykkedes" msgid "removed obsolete PO files" msgstr "forældede PO filer fjernet" -#: ../IkiWiki/Plugin/po.pm:1095 ../IkiWiki/Plugin/po.pm:1109 -#: ../IkiWiki/Plugin/po.pm:1149 +#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 +#: ../IkiWiki/Plugin/po.pm:1141 #, perl-format msgid "failed to write %s" msgstr "skrivning af %s mislykkedes" -#: ../IkiWiki/Plugin/po.pm:1107 +#: ../IkiWiki/Plugin/po.pm:1100 msgid "failed to translate" msgstr "oversættelse mislykkedes" -#: ../IkiWiki/Plugin/po.pm:1112 -#, perl-format -msgid "failed to read %s" -msgstr "læsning af %s mislykkedes" - -#: ../IkiWiki/Plugin/po.pm:1161 +#: ../IkiWiki/Plugin/po.pm:1153 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" "forkert gettext-data, gå tilbage til forrige side og fortsæt redigering" @@ -845,20 +845,20 @@ msgstr "omdøb %s" msgid "Also rename SubPages and attachments" msgstr "Omdøb også UnderSider og vedhæftninger" -#: ../IkiWiki/Plugin/rename.pm:247 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "Kun en vedhæftning kan blive omdøbt ad gangen." -#: ../IkiWiki/Plugin/rename.pm:250 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "Vælg vedhæftningen som skal omdøbes." -#: ../IkiWiki/Plugin/rename.pm:347 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "omdøb %s til %s" -#: ../IkiWiki/Plugin/rename.pm:571 +#: ../IkiWiki/Plugin/rename.pm:572 #, perl-format msgid "update for rename of %s to %s" msgstr "opdatering til omdøbning af %s til %s" @@ -986,26 +986,26 @@ msgstr "udvidelse" msgid "enable %s?" msgstr "aktivér %s?" -#: ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/websetup.pm:244 msgid "setup file for this wiki is not known" msgstr "opsætningsfilen for denne wiki er ukendt" -#: ../IkiWiki/Plugin/websetup.pm:256 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "main" msgstr "primær" -#: ../IkiWiki/Plugin/websetup.pm:257 +#: ../IkiWiki/Plugin/websetup.pm:261 msgid "plugins" msgstr "udvidelser" -#: ../IkiWiki/Plugin/websetup.pm:395 +#: ../IkiWiki/Plugin/websetup.pm:404 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" "Opsætningsændringerne vist nedenfor kræver wiki-genopbygning for at træde i " "kraft." -#: ../IkiWiki/Plugin/websetup.pm:399 +#: ../IkiWiki/Plugin/websetup.pm:408 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." @@ -1013,7 +1013,7 @@ msgstr "" "For at opsætningsændringerne vist nedenfor træder fuldt ud i kraft, skal du " "muligvis genopbygge wikien." -#: ../IkiWiki/Plugin/websetup.pm:436 +#: ../IkiWiki/Plugin/websetup.pm:445 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "Fejl: %s returnerede ikke-nul (%s). Dropper opsætningsændringer." @@ -1028,12 +1028,12 @@ msgstr "kan ikke afgøre id for ikke-tillidsfulde skribent %s" msgid "bad file name %s" msgstr "dårligt filnavn %s" -#: ../IkiWiki/Render.pm:150 +#: ../IkiWiki/Render.pm:153 #, perl-format msgid "scanning %s" msgstr "gennemlæser %s" -#: ../IkiWiki/Render.pm:271 +#: ../IkiWiki/Render.pm:274 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " @@ -1042,42 +1042,42 @@ msgstr "" "symbolsk lænke fundet i srcdir-sti (%s) -- sæt allow_symlinks_before_srcdir " "for at tillade dette" -#: ../IkiWiki/Render.pm:300 ../IkiWiki/Render.pm:327 +#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 #, perl-format msgid "skipping bad filename %s" msgstr "udelader forkert filnavn %s" -#: ../IkiWiki/Render.pm:305 +#: ../IkiWiki/Render.pm:308 #, perl-format msgid "%s has multiple possible source pages" msgstr "%s har flere mulige kildesider" -#: ../IkiWiki/Render.pm:395 +#: ../IkiWiki/Render.pm:413 #, perl-format msgid "removing old page %s" msgstr "fjerner gammel side %s" -#: ../IkiWiki/Render.pm:471 +#: ../IkiWiki/Render.pm:486 #, perl-format msgid "building %s, which links to %s" msgstr "danner %s, som henviser til %s" -#: ../IkiWiki/Render.pm:480 +#: ../IkiWiki/Render.pm:495 #, perl-format msgid "removing %s, no longer built by %s" msgstr "fjerner %s, ikke længere dannet af %s" -#: ../IkiWiki/Render.pm:603 +#: ../IkiWiki/Render.pm:618 #, perl-format msgid "building %s, which depends on %s" msgstr "danner %s, som afhænger af %s" -#: ../IkiWiki/Render.pm:616 +#: ../IkiWiki/Render.pm:631 #, perl-format msgid "building %s, to update its backlinks" msgstr "danner %s, for at opdatere dens krydshenvisninger (backlinks)" -#: ../IkiWiki/Render.pm:679 +#: ../IkiWiki/Render.pm:696 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: kan ikke danne %s" @@ -1093,16 +1093,16 @@ msgstr "kan ikke læse %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "du skal angive et wikinavn (som indeholder alfanumeriske tegn)" -#: ../IkiWiki/Setup/Automator.pm:76 +#: ../IkiWiki/Setup/Automator.pm:79 #, perl-format msgid "unsupported revision control system %s" msgstr "revisionskontrolsystem %s ikke understøttet" -#: ../IkiWiki/Setup/Automator.pm:102 +#: ../IkiWiki/Setup/Automator.pm:105 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "opsætning af depotet med ikiwiki-makerepo mislykkedes" -#: ../IkiWiki/Setup/Automator.pm:120 +#: ../IkiWiki/Setup/Automator.pm:123 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "** Deaktiverer udvidelse %s, da den fejler med denne besked:" @@ -1174,25 +1174,25 @@ msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" "indlæsning af ekstern udvidelse krævet af udvidelsen %s mislykkedes: %s" -#: ../IkiWiki.pm:1264 +#: ../IkiWiki.pm:1263 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "forudberegningssløkke fundet på %s ved dybde %i" -#: ../IkiWiki.pm:1863 +#: ../IkiWiki.pm:1862 msgid "yes" msgstr "ja" -#: ../IkiWiki.pm:2006 +#: ../IkiWiki.pm:2005 msgid "Sort::Naturally needed for title_natural sort" msgstr "Sort::Naturally krævet for title_natural sortering" -#: ../IkiWiki.pm:2017 +#: ../IkiWiki.pm:2016 #, perl-format msgid "unknown sort type %s" msgstr "ukendt sorteringsform %s" -#: ../IkiWiki.pm:2036 +#: ../IkiWiki.pm:2035 #, perl-format msgid "cannot match pages: %s" msgstr "kan ikke få sider til at passe sammen: %s" @@ -1217,6 +1217,9 @@ msgstr "Hvilken bruger (wiki konto eller openid) skal være administrator?" msgid "What is the domain name of the web server?" msgstr "Hvad er webserverens domænenavn?" +#~ msgid "failed to read %s" +#~ msgstr "læsning af %s mislykkedes" + #~ msgid "Failed to parse url, cannot determine domain name" #~ msgstr "Tolkning af URL mislykkedes, kan ikke afgøre domænenavn" diff --git a/po/de.po b/po/de.po index e4b5ed9c4..53d0db850 100644 --- a/po/de.po +++ b/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.14159\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-10-31 18:31-0400\n" +"POT-Creation-Date: 2010-01-22 16:04-0500\n" "PO-Revision-Date: 2009-07-23 01:07+0100\n" "Last-Translator: Kurt Gramlich \n" "Language-Team: German \n" @@ -15,11 +15,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../IkiWiki/CGI.pm:114 +#: ../IkiWiki/CGI.pm:116 msgid "You need to log in first." msgstr "Sie müssen sich zuerst anmelden." -#: ../IkiWiki/CGI.pm:147 +#: ../IkiWiki/CGI.pm:149 msgid "" "probable misconfiguration: sslcookie is set, but you are attempting to login " "via http, not https" @@ -27,36 +27,36 @@ msgstr "" "vermutliche Fehlkonfiguration: sslcookie ist gesetzt, aber Sie versuchen " "sich via http anzumelden, nicht https" -#: ../IkiWiki/CGI.pm:150 +#: ../IkiWiki/CGI.pm:152 msgid "login failed, perhaps you need to turn on cookies?" msgstr "" "Anmeldung fehlgeschlagen, möglicherweise müssen Sie zuvor Cookies aktivieren?" -#: ../IkiWiki/CGI.pm:169 ../IkiWiki/CGI.pm:314 +#: ../IkiWiki/CGI.pm:171 ../IkiWiki/CGI.pm:320 msgid "Your login session has expired." msgstr "Ihre Anmeldezeit ist abgelaufen." -#: ../IkiWiki/CGI.pm:190 +#: ../IkiWiki/CGI.pm:192 msgid "Login" msgstr "Anmelden" -#: ../IkiWiki/CGI.pm:191 +#: ../IkiWiki/CGI.pm:193 msgid "Preferences" msgstr "Einstellungen" -#: ../IkiWiki/CGI.pm:192 +#: ../IkiWiki/CGI.pm:194 msgid "Admin" msgstr "Administrator" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:234 msgid "Preferences saved." msgstr "Einstellungen gespeichert." -#: ../IkiWiki/CGI.pm:278 +#: ../IkiWiki/CGI.pm:284 msgid "You are banned." msgstr "Sie sind ausgeschlossen worden." -#: ../IkiWiki/CGI.pm:405 ../IkiWiki/CGI.pm:406 ../IkiWiki.pm:1282 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 msgid "Error" msgstr "Fehler" @@ -232,36 +232,36 @@ msgstr "" msgid "comments on page '%s' are closed" msgstr "Kommentare zur Seite %s sind gesperrt" -#: ../IkiWiki/Plugin/comments.pm:464 +#: ../IkiWiki/Plugin/comments.pm:467 msgid "comment stored for moderation" msgstr "Der Kommentar wurde zur Moderation gespeichert" -#: ../IkiWiki/Plugin/comments.pm:466 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "Your comment will be posted after moderator review" msgstr "Ihr Kommentar wird nach Moderation verschickt" -#: ../IkiWiki/Plugin/comments.pm:479 +#: ../IkiWiki/Plugin/comments.pm:482 msgid "Added a comment" msgstr "Kommentar hinzugefügt" -#: ../IkiWiki/Plugin/comments.pm:483 +#: ../IkiWiki/Plugin/comments.pm:486 #, perl-format msgid "Added a comment: %s" msgstr "Kommentar hinzugefügt: %s" -#: ../IkiWiki/Plugin/comments.pm:525 ../IkiWiki/Plugin/websetup.pm:236 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 msgid "you are not logged in as an admin" msgstr "Sie sind nicht als Administrator angemeldet" -#: ../IkiWiki/Plugin/comments.pm:576 +#: ../IkiWiki/Plugin/comments.pm:579 msgid "Comment moderation" msgstr "Kommentar-Moderation" -#: ../IkiWiki/Plugin/comments.pm:615 +#: ../IkiWiki/Plugin/comments.pm:618 msgid "comment moderation" msgstr "Kommentar-Moderation" -#: ../IkiWiki/Plugin/comments.pm:766 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comments" msgstr "Kommentare" @@ -328,37 +328,37 @@ msgstr "Format und Text müssen spezifiziert werden" msgid "fortune failed" msgstr "fortune fehlgeschlagen" -#: ../IkiWiki/Plugin/getsource.pm:62 ../IkiWiki/Plugin/goto.pm:55 +#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 msgid "missing page" msgstr "fehlende Seite" -#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 +#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 #, perl-format msgid "The page %s does not exist." msgstr "Die Seite %s existiert nicht." -#: ../IkiWiki/Plugin/getsource.pm:73 +#: ../IkiWiki/Plugin/getsource.pm:74 #, fuzzy msgid "not a page" msgstr "Kann die Seiten nicht zuordnen: %s" -#: ../IkiWiki/Plugin/getsource.pm:75 +#: ../IkiWiki/Plugin/getsource.pm:76 #, fuzzy, perl-format msgid "%s is an attachment, not a page." msgstr "Seite %s kann nicht bearbeitet werden" -#: ../IkiWiki/Plugin/git.pm:651 ../IkiWiki/Plugin/git.pm:669 +#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "Sie dürfen %s nicht verändern" -#: ../IkiWiki/Plugin/git.pm:691 +#: ../IkiWiki/Plugin/git.pm:697 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "Sie können eine Datei mit den Zugriffsrechten %s nicht nutzen" -#: ../IkiWiki/Plugin/git.pm:695 +#: ../IkiWiki/Plugin/git.pm:701 msgid "you are not allowed to change file modes" msgstr "Sie dürfen die Zugriffsrechte der Datei nicht ändern" @@ -450,15 +450,20 @@ msgstr "Füge einen neuen Beitrag hinzu. Titel:" msgid "nonexistant template %s" msgstr "nicht-vorhandene Vorlage %s" -#: ../IkiWiki/Plugin/inline.pm:598 +#: ../IkiWiki/Plugin/inline.pm:624 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client nicht gefunden, führe Ping nicht aus" -#: ../IkiWiki/Plugin/linkmap.pm:101 +#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 +#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 msgid "failed to run dot" msgstr "dot konnte nicht ausgeführt werden" -#: ../IkiWiki/Plugin/lockedit.pm:47 +#: ../IkiWiki/Plugin/linkmap.pm:84 +msgid "linkmap" +msgstr "" + +#: ../IkiWiki/Plugin/lockedit.pm:48 #, perl-format msgid "%s is locked and cannot be edited" msgstr "%s ist gesperrt und kann nicht bearbeitet werden" @@ -608,7 +613,7 @@ msgstr "" msgid "rebuilding all pages to fix meta titles" msgstr "um die meta-titeln zu reparieren werden alle Seiten neu erstellt" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:638 +#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 #, perl-format msgid "building %s" msgstr "erzeuge %s" @@ -666,22 +671,17 @@ msgstr "übersetzen von %s fehlgeschlagen" msgid "removed obsolete PO files" msgstr "überflüssige PO-Dateien wurden entfernt" -#: ../IkiWiki/Plugin/po.pm:1095 ../IkiWiki/Plugin/po.pm:1109 -#: ../IkiWiki/Plugin/po.pm:1149 +#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 +#: ../IkiWiki/Plugin/po.pm:1141 #, perl-format msgid "failed to write %s" msgstr "schreiben von %s fehlgeschlagen" -#: ../IkiWiki/Plugin/po.pm:1107 +#: ../IkiWiki/Plugin/po.pm:1100 msgid "failed to translate" msgstr "übersetzen fehlgeschlagen" -#: ../IkiWiki/Plugin/po.pm:1112 -#, perl-format -msgid "failed to read %s" -msgstr "lesen von %s fehlgeschlagen" - -#: ../IkiWiki/Plugin/po.pm:1161 +#: ../IkiWiki/Plugin/po.pm:1153 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" "ungültige gettext Datei, gehe zurück zur vorherigen Seite um weiter zu " @@ -851,20 +851,20 @@ msgstr "benenne %s um" msgid "Also rename SubPages and attachments" msgstr "Auch Unterseiten (SubPages) und Anhänge umbenennen" -#: ../IkiWiki/Plugin/rename.pm:247 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "Es kann immer nur ein Anhang gleichzeitig umbenannt werden." -#: ../IkiWiki/Plugin/rename.pm:250 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "Bitte wählen Sie den Anhang aus, der umbenannt werden soll." -#: ../IkiWiki/Plugin/rename.pm:347 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "benenne %s in %s um" -#: ../IkiWiki/Plugin/rename.pm:571 +#: ../IkiWiki/Plugin/rename.pm:572 #, perl-format msgid "update for rename of %s to %s" msgstr "aktualisiert zum Umbenennen von %s nach %s" @@ -992,26 +992,26 @@ msgstr "Erweiterung" msgid "enable %s?" msgstr "%s aktivieren?" -#: ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/websetup.pm:244 msgid "setup file for this wiki is not known" msgstr "Die Einrichtungsdatei für dieses Wiki ist unbekannt" -#: ../IkiWiki/Plugin/websetup.pm:256 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "main" msgstr "Hauptseite" -#: ../IkiWiki/Plugin/websetup.pm:257 +#: ../IkiWiki/Plugin/websetup.pm:261 msgid "plugins" msgstr "Erweiterungen" -#: ../IkiWiki/Plugin/websetup.pm:395 +#: ../IkiWiki/Plugin/websetup.pm:404 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" "Die unten aufgeführten Konfigurationsänderungen erfordern ein Neubau des " "Wikis, um wirksam zu werden." -#: ../IkiWiki/Plugin/websetup.pm:399 +#: ../IkiWiki/Plugin/websetup.pm:408 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." @@ -1019,7 +1019,7 @@ msgstr "" "Damit die unten aufgeführten Konfigurationsänderungen insgesamt wirksam " "werden, kann es notwendig sein, das Wikis neu zu bauen." -#: ../IkiWiki/Plugin/websetup.pm:436 +#: ../IkiWiki/Plugin/websetup.pm:445 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1037,12 +1037,12 @@ msgstr "" msgid "bad file name %s" msgstr "fehlerhafter Dateiname %s" -#: ../IkiWiki/Render.pm:150 +#: ../IkiWiki/Render.pm:153 #, perl-format msgid "scanning %s" msgstr "durchsuche %s" -#: ../IkiWiki/Render.pm:271 +#: ../IkiWiki/Render.pm:274 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " @@ -1051,42 +1051,42 @@ msgstr "" "symbolischer Verweis im srcdir Pfad (%s) gefunden -- setzen Sie " "allow_symlinks_before_srcdir, um dies zu erlauben" -#: ../IkiWiki/Render.pm:300 ../IkiWiki/Render.pm:327 +#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 #, perl-format msgid "skipping bad filename %s" msgstr "überspringe fehlerhaften Dateinamen %s" -#: ../IkiWiki/Render.pm:305 +#: ../IkiWiki/Render.pm:308 #, perl-format msgid "%s has multiple possible source pages" msgstr "%s hat mehrere mögliche Quellseiten" -#: ../IkiWiki/Render.pm:395 +#: ../IkiWiki/Render.pm:413 #, perl-format msgid "removing old page %s" msgstr "entferne alte Seite %s" -#: ../IkiWiki/Render.pm:471 +#: ../IkiWiki/Render.pm:486 #, perl-format msgid "building %s, which links to %s" msgstr "erzeuge %s, die auf %s verweist" -#: ../IkiWiki/Render.pm:480 +#: ../IkiWiki/Render.pm:495 #, perl-format msgid "removing %s, no longer built by %s" msgstr "entferne %s, wird nicht länger von %s erzeugt" -#: ../IkiWiki/Render.pm:603 +#: ../IkiWiki/Render.pm:618 #, perl-format msgid "building %s, which depends on %s" msgstr "erzeuge %s, die von %s abhängt" -#: ../IkiWiki/Render.pm:616 +#: ../IkiWiki/Render.pm:631 #, perl-format msgid "building %s, to update its backlinks" msgstr "erzeuge %s, um dessen Rückverweise zu aktualisieren" -#: ../IkiWiki/Render.pm:679 +#: ../IkiWiki/Render.pm:696 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: kann %s nicht erzeugen" @@ -1103,16 +1103,16 @@ msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" "Sie müssen einen Wiki-Namen eingeben (der alphanumerische Zeichen enthält)" -#: ../IkiWiki/Setup/Automator.pm:76 +#: ../IkiWiki/Setup/Automator.pm:79 #, perl-format msgid "unsupported revision control system %s" msgstr "nicht unterstütztes Versionskontrollsystem %s" -#: ../IkiWiki/Setup/Automator.pm:102 +#: ../IkiWiki/Setup/Automator.pm:105 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "erstellen des Depots mit ikiwiki-makerepo ist fehlgeschlagen" -#: ../IkiWiki/Setup/Automator.pm:120 +#: ../IkiWiki/Setup/Automator.pm:123 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1188,25 +1188,25 @@ msgstr "" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "Laden der für %s benötigten externen Erweiterung fehlgeschlagen: %s" -#: ../IkiWiki.pm:1264 +#: ../IkiWiki.pm:1263 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "Präprozessorschleife auf %s in Tiefe %i erkannt" -#: ../IkiWiki.pm:1863 +#: ../IkiWiki.pm:1862 msgid "yes" msgstr "ja" -#: ../IkiWiki.pm:2006 +#: ../IkiWiki.pm:2005 msgid "Sort::Naturally needed for title_natural sort" msgstr "Sort::Naturally wird benötigt für title_natural sort" -#: ../IkiWiki.pm:2017 +#: ../IkiWiki.pm:2016 #, perl-format msgid "unknown sort type %s" msgstr "Unbekannter Sortierungstyp %s" -#: ../IkiWiki.pm:2036 +#: ../IkiWiki.pm:2035 #, perl-format msgid "cannot match pages: %s" msgstr "Kann die Seiten nicht zuordnen: %s" @@ -1231,6 +1231,9 @@ msgstr "Wer (Wiki-Konto oder OpenID) soll Administrator sein?" msgid "What is the domain name of the web server?" msgstr "Wie lautet der Domainname des Webservers?" +#~ msgid "failed to read %s" +#~ msgstr "lesen von %s fehlgeschlagen" + #~ msgid "Failed to parse url, cannot determine domain name" #~ msgstr "" #~ "auswerten der URL fehlgeschlagen, konnte Domainnamen nicht feststellen" diff --git a/po/es.po b/po/es.po index ca26b0bf6..de85edbdf 100644 --- a/po/es.po +++ b/po/es.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: es\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-10-31 18:31-0400\n" +"POT-Creation-Date: 2010-01-22 16:04-0500\n" "PO-Revision-Date: 2009-06-14 12:32+0200\n" "Last-Translator: Victor Moral \n" "Language-Team: \n" @@ -18,11 +18,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" -#: ../IkiWiki/CGI.pm:114 +#: ../IkiWiki/CGI.pm:116 msgid "You need to log in first." msgstr "Antes es necesario identificarse." -#: ../IkiWiki/CGI.pm:147 +#: ../IkiWiki/CGI.pm:149 msgid "" "probable misconfiguration: sslcookie is set, but you are attempting to login " "via http, not https" @@ -31,36 +31,36 @@ msgstr "" "activa, pero está intentando registrarse en el sistema vía el protocolo " "'http' y no 'https'" -#: ../IkiWiki/CGI.pm:150 +#: ../IkiWiki/CGI.pm:152 msgid "login failed, perhaps you need to turn on cookies?" msgstr "" "registro fallido, ¿ tal vez necesita activar las cookies en el navegador ?" -#: ../IkiWiki/CGI.pm:169 ../IkiWiki/CGI.pm:314 +#: ../IkiWiki/CGI.pm:171 ../IkiWiki/CGI.pm:320 msgid "Your login session has expired." msgstr "Su registro en el sistema ha expirado." -#: ../IkiWiki/CGI.pm:190 +#: ../IkiWiki/CGI.pm:192 msgid "Login" msgstr "Identificación" -#: ../IkiWiki/CGI.pm:191 +#: ../IkiWiki/CGI.pm:193 msgid "Preferences" msgstr "Preferencias" -#: ../IkiWiki/CGI.pm:192 +#: ../IkiWiki/CGI.pm:194 msgid "Admin" msgstr "Administración" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:234 msgid "Preferences saved." msgstr "Las preferencias se han guardado." -#: ../IkiWiki/CGI.pm:278 +#: ../IkiWiki/CGI.pm:284 msgid "You are banned." msgstr "Ha sido expulsado." -#: ../IkiWiki/CGI.pm:405 ../IkiWiki/CGI.pm:406 ../IkiWiki.pm:1282 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 msgid "Error" msgstr "Error" @@ -236,36 +236,36 @@ msgstr "la página '%s' no existe, así que no se puede comentar sobre ella" msgid "comments on page '%s' are closed" msgstr "los comentarios para la página '%s' están cerrados" -#: ../IkiWiki/Plugin/comments.pm:464 +#: ../IkiWiki/Plugin/comments.pm:467 msgid "comment stored for moderation" msgstr "comentario guardado a la espera de aprobación" -#: ../IkiWiki/Plugin/comments.pm:466 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "Your comment will be posted after moderator review" msgstr "Su comentario será publicado después de que el moderador lo revise" -#: ../IkiWiki/Plugin/comments.pm:479 +#: ../IkiWiki/Plugin/comments.pm:482 msgid "Added a comment" msgstr "Añadir un comentario" -#: ../IkiWiki/Plugin/comments.pm:483 +#: ../IkiWiki/Plugin/comments.pm:486 #, perl-format msgid "Added a comment: %s" msgstr "Comentario añadido: %s" -#: ../IkiWiki/Plugin/comments.pm:525 ../IkiWiki/Plugin/websetup.pm:236 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 msgid "you are not logged in as an admin" msgstr "No está registrado como un administrador" -#: ../IkiWiki/Plugin/comments.pm:576 +#: ../IkiWiki/Plugin/comments.pm:579 msgid "Comment moderation" msgstr "Aprobación de comentarios" -#: ../IkiWiki/Plugin/comments.pm:615 +#: ../IkiWiki/Plugin/comments.pm:618 msgid "comment moderation" msgstr "aprobación de comentarios" -#: ../IkiWiki/Plugin/comments.pm:766 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comments" msgstr "Comentarios" @@ -332,37 +332,37 @@ msgstr "se deben especificar tanto el formato como el texto" msgid "fortune failed" msgstr "el programa fortune ha fallado" -#: ../IkiWiki/Plugin/getsource.pm:62 ../IkiWiki/Plugin/goto.pm:55 +#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 msgid "missing page" msgstr "página no encontrada" -#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 +#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 #, perl-format msgid "The page %s does not exist." msgstr "No existe la página %s." -#: ../IkiWiki/Plugin/getsource.pm:73 +#: ../IkiWiki/Plugin/getsource.pm:74 #, fuzzy msgid "not a page" msgstr "no encuentro páginas coincidentes: %s" -#: ../IkiWiki/Plugin/getsource.pm:75 +#: ../IkiWiki/Plugin/getsource.pm:76 #, fuzzy, perl-format msgid "%s is an attachment, not a page." msgstr "la página %s no es modificable" -#: ../IkiWiki/Plugin/git.pm:651 ../IkiWiki/Plugin/git.pm:669 +#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "No puede cambiar %s" -#: ../IkiWiki/Plugin/git.pm:691 +#: ../IkiWiki/Plugin/git.pm:697 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "no puede actuar sobre un archivo con permisos %s" -#: ../IkiWiki/Plugin/git.pm:695 +#: ../IkiWiki/Plugin/git.pm:701 msgid "you are not allowed to change file modes" msgstr "No puede cambiar los permisos de acceso de un archivo" @@ -454,15 +454,20 @@ msgstr "Añadir una entrada nueva titulada:" msgid "nonexistant template %s" msgstr "la plantilla %s no existe " -#: ../IkiWiki/Plugin/inline.pm:598 +#: ../IkiWiki/Plugin/inline.pm:624 msgid "RPC::XML::Client not found, not pinging" msgstr "No he encontrado el componente RPC::XML::Client, no envío señal alguna" -#: ../IkiWiki/Plugin/linkmap.pm:101 +#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 +#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 msgid "failed to run dot" msgstr "no he podido ejecutar el programa dot" -#: ../IkiWiki/Plugin/lockedit.pm:47 +#: ../IkiWiki/Plugin/linkmap.pm:84 +msgid "linkmap" +msgstr "" + +#: ../IkiWiki/Plugin/lockedit.pm:48 #, perl-format msgid "%s is locked and cannot be edited" msgstr "La página %s está bloqueada y no puede modificarse" @@ -609,7 +614,7 @@ msgstr "" msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:638 +#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 #, fuzzy, perl-format msgid "building %s" msgstr "Informaremos a %s" @@ -663,23 +668,18 @@ msgstr "dimensionamiento fallido: %s" msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1095 ../IkiWiki/Plugin/po.pm:1109 -#: ../IkiWiki/Plugin/po.pm:1149 +#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 +#: ../IkiWiki/Plugin/po.pm:1141 #, fuzzy, perl-format msgid "failed to write %s" msgstr "dimensionamiento fallido: %s" -#: ../IkiWiki/Plugin/po.pm:1107 +#: ../IkiWiki/Plugin/po.pm:1100 #, fuzzy msgid "failed to translate" msgstr "no he podido ejecutar el programa dot" -#: ../IkiWiki/Plugin/po.pm:1112 -#, fuzzy, perl-format -msgid "failed to read %s" -msgstr "no puedo leer de %s: %s " - -#: ../IkiWiki/Plugin/po.pm:1161 +#: ../IkiWiki/Plugin/po.pm:1153 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -845,20 +845,20 @@ msgstr "cambiando de nombre %s" msgid "Also rename SubPages and attachments" msgstr "También cambia de nombre las subpáginas y los adjuntos" -#: ../IkiWiki/Plugin/rename.pm:247 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "Únicamente un adjunto puede ser renombrado a la vez." -#: ../IkiWiki/Plugin/rename.pm:250 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "Por favor, seleccione el adjunto al que cambiar el nombre." -#: ../IkiWiki/Plugin/rename.pm:347 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "%s cambia de nombre a %s" -#: ../IkiWiki/Plugin/rename.pm:571 +#: ../IkiWiki/Plugin/rename.pm:572 #, perl-format msgid "update for rename of %s to %s" msgstr "actualizado el cambio de nombre de %s a %s" @@ -990,26 +990,26 @@ msgstr "complemento" msgid "enable %s?" msgstr "¿ activar %s ?" -#: ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/websetup.pm:244 msgid "setup file for this wiki is not known" msgstr "El archivo de configuración para este wiki es desconocido" -#: ../IkiWiki/Plugin/websetup.pm:256 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "main" msgstr "principal" -#: ../IkiWiki/Plugin/websetup.pm:257 +#: ../IkiWiki/Plugin/websetup.pm:261 msgid "plugins" msgstr "complementos" -#: ../IkiWiki/Plugin/websetup.pm:395 +#: ../IkiWiki/Plugin/websetup.pm:404 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" "Los cambios en la configuración que se muestran más abajo precisan una " "reconstrucción del wiki para tener efecto." -#: ../IkiWiki/Plugin/websetup.pm:399 +#: ../IkiWiki/Plugin/websetup.pm:408 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." @@ -1017,7 +1017,7 @@ msgstr "" "Para que los cambios en la configuración mostrados más abajo tengan efecto, " "es posible que necesite reconstruir el wiki." -#: ../IkiWiki/Plugin/websetup.pm:436 +#: ../IkiWiki/Plugin/websetup.pm:445 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1034,12 +1034,12 @@ msgstr "no puedo determinar el identificador de un usuario no fiable como %s" msgid "bad file name %s" msgstr "el nombre de archivo %s es erróneo" -#: ../IkiWiki/Render.pm:150 +#: ../IkiWiki/Render.pm:153 #, perl-format msgid "scanning %s" msgstr "explorando %s" -#: ../IkiWiki/Render.pm:271 +#: ../IkiWiki/Render.pm:274 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " @@ -1048,44 +1048,44 @@ msgstr "" "encontrado un enlace simbólico en la ruta del directorio fuente (%s) -- use " "la directiva allow_symlinks_before_srcdir para permitir la acción" -#: ../IkiWiki/Render.pm:300 ../IkiWiki/Render.pm:327 +#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 #, perl-format msgid "skipping bad filename %s" msgstr "ignorando el archivo %s porque su nombre no es correcto" -#: ../IkiWiki/Render.pm:305 +#: ../IkiWiki/Render.pm:308 #, perl-format msgid "%s has multiple possible source pages" msgstr "%s tiene mútiples páginas fuente posibles" -#: ../IkiWiki/Render.pm:395 +#: ../IkiWiki/Render.pm:413 #, perl-format msgid "removing old page %s" msgstr "eliminando la antigua página %s" -#: ../IkiWiki/Render.pm:471 +#: ../IkiWiki/Render.pm:486 #, fuzzy, perl-format msgid "building %s, which links to %s" msgstr "convirtiendo la página %s, la cual referencia a %s" -#: ../IkiWiki/Render.pm:480 +#: ../IkiWiki/Render.pm:495 #, fuzzy, perl-format msgid "removing %s, no longer built by %s" msgstr "eliminando la página %s puesto que ya no se deriva de %s" -#: ../IkiWiki/Render.pm:603 +#: ../IkiWiki/Render.pm:618 #, fuzzy, perl-format msgid "building %s, which depends on %s" msgstr "convirtiendo la página %s, la cual depende de %s" -#: ../IkiWiki/Render.pm:616 +#: ../IkiWiki/Render.pm:631 #, fuzzy, perl-format msgid "building %s, to update its backlinks" msgstr "" "convirtiendo la página %s para actualizar la lista de páginas que hacen " "referencia a ella." -#: ../IkiWiki/Render.pm:679 +#: ../IkiWiki/Render.pm:696 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: no puedo convertir la página %s" @@ -1101,16 +1101,16 @@ msgstr "no puedo leer el archivo %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "debe escribir un nombre wiki (que contiene caracteres alfanuméricos)" -#: ../IkiWiki/Setup/Automator.pm:76 +#: ../IkiWiki/Setup/Automator.pm:79 #, perl-format msgid "unsupported revision control system %s" msgstr "el sistema de control de versiones %s no está soportado" -#: ../IkiWiki/Setup/Automator.pm:102 +#: ../IkiWiki/Setup/Automator.pm:105 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "no he podido crear un repositorio con el programa ikiwiki-makerepo" -#: ../IkiWiki/Setup/Automator.pm:120 +#: ../IkiWiki/Setup/Automator.pm:123 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1185,29 +1185,29 @@ msgstr "no puedo emplear varios complementos rcs" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "no he podido cargar el complemento externo %s necesario para %s" -#: ../IkiWiki.pm:1264 +#: ../IkiWiki.pm:1263 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "" "se ha detectado en la página %s un bucle de preprocesado en la iteración " "número %i" -#: ../IkiWiki.pm:1863 +#: ../IkiWiki.pm:1862 msgid "yes" msgstr "si" -#: ../IkiWiki.pm:2006 +#: ../IkiWiki.pm:2005 msgid "Sort::Naturally needed for title_natural sort" msgstr "" "Se necesita el módulo Sort::Naturally para el tipo de ordenación " "title_natural" -#: ../IkiWiki.pm:2017 +#: ../IkiWiki.pm:2016 #, perl-format msgid "unknown sort type %s" msgstr "no conozco este tipo de ordenación %s" -#: ../IkiWiki.pm:2036 +#: ../IkiWiki.pm:2035 #, perl-format msgid "cannot match pages: %s" msgstr "no encuentro páginas coincidentes: %s" @@ -1235,6 +1235,10 @@ msgstr "" msgid "What is the domain name of the web server?" msgstr "¿ Cuál es el dominio para el servidor web ?" +#, fuzzy +#~ msgid "failed to read %s" +#~ msgstr "no puedo leer de %s: %s " + #~ msgid "Failed to parse url, cannot determine domain name" #~ msgstr "" #~ "Error en el análisis del URL, no puedo determinar el nombre del dominio" diff --git a/po/fr.po b/po/fr.po index fbfb49a88..5ba71d6cf 100644 --- a/po/fr.po +++ b/po/fr.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.141\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-10-31 18:31-0400\n" +"POT-Creation-Date: 2010-01-22 16:04-0500\n" "PO-Revision-Date: 2009-08-17 10:06+0200\n" "Last-Translator: Philippe Batailler \n" "Language-Team: French \n" @@ -17,11 +17,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../IkiWiki/CGI.pm:114 +#: ../IkiWiki/CGI.pm:116 msgid "You need to log in first." msgstr "Vous devez d'abord vous identifier." -#: ../IkiWiki/CGI.pm:147 +#: ../IkiWiki/CGI.pm:149 msgid "" "probable misconfiguration: sslcookie is set, but you are attempting to login " "via http, not https" @@ -29,35 +29,35 @@ msgstr "" "Erreur de configuration probable : sslcookie est positionné mais vous tentez " "de vous connecter avec http au lieu de https" -#: ../IkiWiki/CGI.pm:150 +#: ../IkiWiki/CGI.pm:152 msgid "login failed, perhaps you need to turn on cookies?" msgstr "Échec de l'identification, vous devez autoriser les cookies." -#: ../IkiWiki/CGI.pm:169 ../IkiWiki/CGI.pm:314 +#: ../IkiWiki/CGI.pm:171 ../IkiWiki/CGI.pm:320 msgid "Your login session has expired." msgstr "Session d'authentification expirée." -#: ../IkiWiki/CGI.pm:190 +#: ../IkiWiki/CGI.pm:192 msgid "Login" msgstr "S’identifier" -#: ../IkiWiki/CGI.pm:191 +#: ../IkiWiki/CGI.pm:193 msgid "Preferences" msgstr "Préférences" -#: ../IkiWiki/CGI.pm:192 +#: ../IkiWiki/CGI.pm:194 msgid "Admin" msgstr "Administrateur" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:234 msgid "Preferences saved." msgstr "Les préférences ont été enregistrées." -#: ../IkiWiki/CGI.pm:278 +#: ../IkiWiki/CGI.pm:284 msgid "You are banned." msgstr "Vous avez été banni." -#: ../IkiWiki/CGI.pm:405 ../IkiWiki/CGI.pm:406 ../IkiWiki.pm:1282 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 msgid "Error" msgstr "Erreur" @@ -229,36 +229,36 @@ msgstr "La page '%s' n'existe pas, commentaire impossible." msgid "comments on page '%s' are closed" msgstr "Le commentaire pour la page '%s' est terminé." -#: ../IkiWiki/Plugin/comments.pm:464 +#: ../IkiWiki/Plugin/comments.pm:467 msgid "comment stored for moderation" msgstr "Le commentaire a été enregistré, en attente de « modération »" -#: ../IkiWiki/Plugin/comments.pm:466 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "Your comment will be posted after moderator review" msgstr "Votre commentaire sera publié après vérification par le modérateur" -#: ../IkiWiki/Plugin/comments.pm:479 +#: ../IkiWiki/Plugin/comments.pm:482 msgid "Added a comment" msgstr "Commentaire ajouté" -#: ../IkiWiki/Plugin/comments.pm:483 +#: ../IkiWiki/Plugin/comments.pm:486 #, perl-format msgid "Added a comment: %s" msgstr "Commentaire ajouté : %s" -#: ../IkiWiki/Plugin/comments.pm:525 ../IkiWiki/Plugin/websetup.pm:236 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 msgid "you are not logged in as an admin" msgstr "Vous n'êtes pas authentifié comme administrateur" -#: ../IkiWiki/Plugin/comments.pm:576 +#: ../IkiWiki/Plugin/comments.pm:579 msgid "Comment moderation" msgstr "Modération du commentaire" -#: ../IkiWiki/Plugin/comments.pm:615 +#: ../IkiWiki/Plugin/comments.pm:618 msgid "comment moderation" msgstr "modération du commentaire" -#: ../IkiWiki/Plugin/comments.pm:766 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comments" msgstr "Commentaires" @@ -325,36 +325,36 @@ msgstr "le format et le texte doivent être indiqués" msgid "fortune failed" msgstr "Échec du lancement de « fortune »" -#: ../IkiWiki/Plugin/getsource.pm:62 ../IkiWiki/Plugin/goto.pm:55 +#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 msgid "missing page" msgstr "Page manquante" -#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 +#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 #, perl-format msgid "The page %s does not exist." msgstr "La page %s n'existe pas." -#: ../IkiWiki/Plugin/getsource.pm:73 +#: ../IkiWiki/Plugin/getsource.pm:74 msgid "not a page" msgstr "Ce n'est pas une page." -#: ../IkiWiki/Plugin/getsource.pm:75 +#: ../IkiWiki/Plugin/getsource.pm:76 #, perl-format msgid "%s is an attachment, not a page." msgstr "%s est une pièce jointe, pas une page." -#: ../IkiWiki/Plugin/git.pm:651 ../IkiWiki/Plugin/git.pm:669 +#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "Vous n'êtes pas autorisé à modifier %s" -#: ../IkiWiki/Plugin/git.pm:691 +#: ../IkiWiki/Plugin/git.pm:697 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "Vous ne pouvez pas modifier un fichier dont le mode est %s" -#: ../IkiWiki/Plugin/git.pm:695 +#: ../IkiWiki/Plugin/git.pm:701 msgid "you are not allowed to change file modes" msgstr "Vous n'êtes pas autorisé à modifier le mode des fichiers" @@ -446,15 +446,20 @@ msgstr "Ajouter un nouvel article dont le titre est :" msgid "nonexistant template %s" msgstr "Le modèle de page %s n'existe pas" -#: ../IkiWiki/Plugin/inline.pm:598 +#: ../IkiWiki/Plugin/inline.pm:624 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client introuvable, pas de réponse au ping" -#: ../IkiWiki/Plugin/linkmap.pm:101 +#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 +#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 msgid "failed to run dot" msgstr "Échec du lancement de dot" -#: ../IkiWiki/Plugin/lockedit.pm:47 +#: ../IkiWiki/Plugin/linkmap.pm:84 +msgid "linkmap" +msgstr "" + +#: ../IkiWiki/Plugin/lockedit.pm:48 #, perl-format msgid "%s is locked and cannot be edited" msgstr "%s est verrouillé et ne peut être modifié" @@ -607,7 +612,7 @@ msgstr "" "Reconstruction de toutes les pages pour corriger les titres (greffon " "« meta »)." -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:638 +#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 #, perl-format msgid "building %s" msgstr "construction de %s" @@ -665,22 +670,17 @@ msgstr "Impossible de traduire %s" msgid "removed obsolete PO files" msgstr "Fichiers PO obsolètes supprimés." -#: ../IkiWiki/Plugin/po.pm:1095 ../IkiWiki/Plugin/po.pm:1109 -#: ../IkiWiki/Plugin/po.pm:1149 +#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 +#: ../IkiWiki/Plugin/po.pm:1141 #, perl-format msgid "failed to write %s" msgstr "Impossible de modifier %s" -#: ../IkiWiki/Plugin/po.pm:1107 +#: ../IkiWiki/Plugin/po.pm:1100 msgid "failed to translate" msgstr "Impossible de traduire" -#: ../IkiWiki/Plugin/po.pm:1112 -#, perl-format -msgid "failed to read %s" -msgstr "Impossible de lire %s" - -#: ../IkiWiki/Plugin/po.pm:1161 +#: ../IkiWiki/Plugin/po.pm:1153 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" "Données gettext incorrectes, retour à la page précédente pour la poursuite " @@ -849,20 +849,20 @@ msgstr "%s renommé" msgid "Also rename SubPages and attachments" msgstr "« SubPages » et attachements renommés." -#: ../IkiWiki/Plugin/rename.pm:247 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "Modification de pièce jointe : une seule à la fois" -#: ../IkiWiki/Plugin/rename.pm:250 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "Veuillez sélectionner la pièce jointe à renommer" -#: ../IkiWiki/Plugin/rename.pm:347 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "Renomme %s en %s" -#: ../IkiWiki/Plugin/rename.pm:571 +#: ../IkiWiki/Plugin/rename.pm:572 #, perl-format msgid "update for rename of %s to %s" msgstr "mise à jour, suite au changement de %s en %s" @@ -990,26 +990,26 @@ msgstr "greffon" msgid "enable %s?" msgstr "activer %s ?" -#: ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/websetup.pm:244 msgid "setup file for this wiki is not known" msgstr "Le fichier de configuration de ce wiki n'est pas connu" -#: ../IkiWiki/Plugin/websetup.pm:256 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "main" msgstr "Partie principale" -#: ../IkiWiki/Plugin/websetup.pm:257 +#: ../IkiWiki/Plugin/websetup.pm:261 msgid "plugins" msgstr "Greffons" -#: ../IkiWiki/Plugin/websetup.pm:395 +#: ../IkiWiki/Plugin/websetup.pm:404 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" "Les changements de configuration ci-dessous nécessitent une recompilation du " "wiki pour prendre effet" -#: ../IkiWiki/Plugin/websetup.pm:399 +#: ../IkiWiki/Plugin/websetup.pm:408 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." @@ -1017,7 +1017,7 @@ msgstr "" "Pour que les changements de configuration ci-dessous prennent effet vous " "devez recompiler le wiki" -#: ../IkiWiki/Plugin/websetup.pm:436 +#: ../IkiWiki/Plugin/websetup.pm:445 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "Erreur : %s s'est terminé anormalement (%s). Modifications ignorées." @@ -1033,12 +1033,12 @@ msgstr "" msgid "bad file name %s" msgstr "Nom de fichier incorrect %s" -#: ../IkiWiki/Render.pm:150 +#: ../IkiWiki/Render.pm:153 #, perl-format msgid "scanning %s" msgstr "Examen de %s" -#: ../IkiWiki/Render.pm:271 +#: ../IkiWiki/Render.pm:274 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " @@ -1047,42 +1047,42 @@ msgstr "" "Lien symbolique trouvé dans l'adresse de srcdir (%s) -- pour l'autoriser, " "activez le paramètre « allow_symlinks_before_srcdir »." -#: ../IkiWiki/Render.pm:300 ../IkiWiki/Render.pm:327 +#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 #, perl-format msgid "skipping bad filename %s" msgstr "Omission du fichier au nom incorrect %s" -#: ../IkiWiki/Render.pm:305 +#: ../IkiWiki/Render.pm:308 #, perl-format msgid "%s has multiple possible source pages" msgstr "%s peut être associé à plusieurs pages source." -#: ../IkiWiki/Render.pm:395 +#: ../IkiWiki/Render.pm:413 #, perl-format msgid "removing old page %s" msgstr "Suppression de l'ancienne page %s" -#: ../IkiWiki/Render.pm:471 +#: ../IkiWiki/Render.pm:486 #, perl-format msgid "building %s, which links to %s" msgstr "Reconstruction de %s, qui est lié à %s" -#: ../IkiWiki/Render.pm:480 +#: ../IkiWiki/Render.pm:495 #, perl-format msgid "removing %s, no longer built by %s" msgstr "Suppression de %s, qui n'est plus rendu par %s" -#: ../IkiWiki/Render.pm:603 +#: ../IkiWiki/Render.pm:618 #, perl-format msgid "building %s, which depends on %s" msgstr "Reconstruction de %s, qui dépend de %s" -#: ../IkiWiki/Render.pm:616 +#: ../IkiWiki/Render.pm:631 #, perl-format msgid "building %s, to update its backlinks" msgstr "Reconstruction de %s, afin de mettre à jour ses rétroliens" -#: ../IkiWiki/Render.pm:679 +#: ../IkiWiki/Render.pm:696 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki : impossible de reconstruire %s" @@ -1100,16 +1100,16 @@ msgstr "" "Vous devez spécifier un nom de wiki (contenant des caractères " "alphanumériques)" -#: ../IkiWiki/Setup/Automator.pm:76 +#: ../IkiWiki/Setup/Automator.pm:79 #, perl-format msgid "unsupported revision control system %s" msgstr "Système de contrôle de version non reconnu : %s" -#: ../IkiWiki/Setup/Automator.pm:102 +#: ../IkiWiki/Setup/Automator.pm:105 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "Échec lors de la création du dépôt avec ikiwiki-makerepo" -#: ../IkiWiki/Setup/Automator.pm:120 +#: ../IkiWiki/Setup/Automator.pm:123 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1184,25 +1184,25 @@ msgstr "Impossible d'utiliser plusieurs systèmes de contrôle des versions" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "Impossible de charger le greffon externe nécessaire au greffon %s : %s" -#: ../IkiWiki.pm:1264 +#: ../IkiWiki.pm:1263 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "Une boucle de prétraitement a été détectée sur %s à hauteur de %i" -#: ../IkiWiki.pm:1863 +#: ../IkiWiki.pm:1862 msgid "yes" msgstr "oui" -#: ../IkiWiki.pm:2006 +#: ../IkiWiki.pm:2005 msgid "Sort::Naturally needed for title_natural sort" msgstr "Sort::Naturally est nécessaire pour un tri « title_natural »" -#: ../IkiWiki.pm:2017 +#: ../IkiWiki.pm:2016 #, perl-format msgid "unknown sort type %s" msgstr "Type de tri %s inconnu" -#: ../IkiWiki.pm:2036 +#: ../IkiWiki.pm:2035 #, perl-format msgid "cannot match pages: %s" msgstr "Impossible de trouver les pages %s" @@ -1227,6 +1227,9 @@ msgstr "Identifiant de l'administrateur (utilisateur du wiki ou openid) :" msgid "What is the domain name of the web server?" msgstr "Nom de domaine du serveur HTTP :" +#~ msgid "failed to read %s" +#~ msgstr "Impossible de lire %s" + #~ msgid "Failed to parse url, cannot determine domain name" #~ msgstr "Impossible d'analyser l'URL, pas de nom de domaine" diff --git a/po/gu.po b/po/gu.po index 96e9ad184..83afdef4c 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: 2009-10-31 18:31-0400\n" +"POT-Creation-Date: 2010-01-22 16:04-0500\n" "PO-Revision-Date: 2007-01-11 16:05+0530\n" "Last-Translator: Kartik Mistry \n" "Language-Team: Gujarati \n" @@ -15,46 +15,46 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../IkiWiki/CGI.pm:114 +#: ../IkiWiki/CGI.pm:116 msgid "You need to log in first." msgstr "તમારે પ્રથમ લોગ ઇન થવું પડશે." -#: ../IkiWiki/CGI.pm:147 +#: ../IkiWiki/CGI.pm:149 msgid "" "probable misconfiguration: sslcookie is set, but you are attempting to login " "via http, not https" msgstr "" -#: ../IkiWiki/CGI.pm:150 +#: ../IkiWiki/CGI.pm:152 msgid "login failed, perhaps you need to turn on cookies?" msgstr "પ્રવેશ નિષ્ફળ, કદાચ તમારી કુકીઓ સક્રિય બનાવવી પડશે?" -#: ../IkiWiki/CGI.pm:169 ../IkiWiki/CGI.pm:314 +#: ../IkiWiki/CGI.pm:171 ../IkiWiki/CGI.pm:320 msgid "Your login session has expired." msgstr "" -#: ../IkiWiki/CGI.pm:190 +#: ../IkiWiki/CGI.pm:192 msgid "Login" msgstr "" -#: ../IkiWiki/CGI.pm:191 +#: ../IkiWiki/CGI.pm:193 #, fuzzy msgid "Preferences" msgstr "પ્રાથમિકતાઓ સંગ્રહાઇ." -#: ../IkiWiki/CGI.pm:192 +#: ../IkiWiki/CGI.pm:194 msgid "Admin" msgstr "" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:234 msgid "Preferences saved." msgstr "પ્રાથમિકતાઓ સંગ્રહાઇ." -#: ../IkiWiki/CGI.pm:278 +#: ../IkiWiki/CGI.pm:284 msgid "You are banned." msgstr "તમારા પર પ્રતિબંધ છે." -#: ../IkiWiki/CGI.pm:405 ../IkiWiki/CGI.pm:406 ../IkiWiki.pm:1282 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 msgid "Error" msgstr "ક્ષતિ" @@ -227,36 +227,36 @@ msgstr "" msgid "comments on page '%s' are closed" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:464 +#: ../IkiWiki/Plugin/comments.pm:467 msgid "comment stored for moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:466 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "Your comment will be posted after moderator review" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:479 +#: ../IkiWiki/Plugin/comments.pm:482 msgid "Added a comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:483 +#: ../IkiWiki/Plugin/comments.pm:486 #, perl-format msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:525 ../IkiWiki/Plugin/websetup.pm:236 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 msgid "you are not logged in as an admin" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:576 +#: ../IkiWiki/Plugin/comments.pm:579 msgid "Comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:615 +#: ../IkiWiki/Plugin/comments.pm:618 msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:766 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comments" msgstr "" @@ -326,38 +326,38 @@ msgstr "" msgid "fortune failed" msgstr "ભવિષ્ય નિષ્ફળ" -#: ../IkiWiki/Plugin/getsource.pm:62 ../IkiWiki/Plugin/goto.pm:55 +#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 #, fuzzy msgid "missing page" msgstr "ખોવાયેલ કિંમતો" -#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 +#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 #, perl-format msgid "The page %s does not exist." msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:73 +#: ../IkiWiki/Plugin/getsource.pm:74 #, fuzzy msgid "not a page" msgstr "વાંચી શકાતી નથી %s: %s" -#: ../IkiWiki/Plugin/getsource.pm:75 +#: ../IkiWiki/Plugin/getsource.pm:76 #, fuzzy, perl-format msgid "%s is an attachment, not a page." msgstr "%s એ સુધારી શકાય તેવું પાનું નથી" -#: ../IkiWiki/Plugin/git.pm:651 ../IkiWiki/Plugin/git.pm:669 +#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:691 +#: ../IkiWiki/Plugin/git.pm:697 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:695 +#: ../IkiWiki/Plugin/git.pm:701 msgid "you are not allowed to change file modes" msgstr "" @@ -448,15 +448,20 @@ msgstr "આ શિર્ષકથી નવું પોસ્ટ ઉમેર msgid "nonexistant template %s" msgstr "અસ્તિત્વમાં ન હોય તેવું ટેમ્પલેટ %s" -#: ../IkiWiki/Plugin/inline.pm:598 +#: ../IkiWiki/Plugin/inline.pm:624 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client મળ્યું નહી, પિંગ કરવામાં આવતું નથી" -#: ../IkiWiki/Plugin/linkmap.pm:101 +#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 +#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 msgid "failed to run dot" msgstr "ડોટ ચલાવવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/lockedit.pm:47 +#: ../IkiWiki/Plugin/linkmap.pm:84 +msgid "linkmap" +msgstr "" + +#: ../IkiWiki/Plugin/lockedit.pm:48 #, fuzzy, perl-format msgid "%s is locked and cannot be edited" msgstr "%s એ %s દ્વારા તાળું મરાયેલ છે અને તેમાં સુધારો કરી શકાશે નહી" @@ -598,7 +603,7 @@ msgstr "" msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:638 +#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 #, fuzzy, perl-format msgid "building %s" msgstr "%s સુધારે છે" @@ -652,23 +657,18 @@ msgstr "માપ બદલવામાં નિષ્ફળ: %s" msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1095 ../IkiWiki/Plugin/po.pm:1109 -#: ../IkiWiki/Plugin/po.pm:1149 +#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 +#: ../IkiWiki/Plugin/po.pm:1141 #, fuzzy, perl-format msgid "failed to write %s" msgstr "%s લખવામાં નિષ્ફળ: %s" -#: ../IkiWiki/Plugin/po.pm:1107 +#: ../IkiWiki/Plugin/po.pm:1100 #, fuzzy msgid "failed to translate" msgstr "ડોટ ચલાવવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/po.pm:1112 -#, fuzzy, perl-format -msgid "failed to read %s" -msgstr "%s વાંચવામાં નિષ્ફળ: %s" - -#: ../IkiWiki/Plugin/po.pm:1161 +#: ../IkiWiki/Plugin/po.pm:1153 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -837,20 +837,20 @@ msgstr "રેન્ડર કરે છે %s" msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:247 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:250 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:347 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:571 +#: ../IkiWiki/Plugin/rename.pm:572 #, fuzzy, perl-format msgid "update for rename of %s to %s" msgstr "%s નો સુધારો %s નાં %s વડે" @@ -984,30 +984,30 @@ msgstr "" msgid "enable %s?" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/websetup.pm:244 msgid "setup file for this wiki is not known" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:256 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "main" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:257 +#: ../IkiWiki/Plugin/websetup.pm:261 msgid "plugins" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:395 +#: ../IkiWiki/Plugin/websetup.pm:404 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:399 +#: ../IkiWiki/Plugin/websetup.pm:408 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:436 +#: ../IkiWiki/Plugin/websetup.pm:445 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1022,54 +1022,54 @@ msgstr "" msgid "bad file name %s" msgstr "ખરાબ ફાઇલ નામ છોડી દે છે %s" -#: ../IkiWiki/Render.pm:150 +#: ../IkiWiki/Render.pm:153 #, perl-format msgid "scanning %s" msgstr "%s શોધે છે" -#: ../IkiWiki/Render.pm:271 +#: ../IkiWiki/Render.pm:274 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "allow this" msgstr "" -#: ../IkiWiki/Render.pm:300 ../IkiWiki/Render.pm:327 +#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 #, perl-format msgid "skipping bad filename %s" msgstr "ખરાબ ફાઇલ નામ છોડી દે છે %s" -#: ../IkiWiki/Render.pm:305 +#: ../IkiWiki/Render.pm:308 #, perl-format msgid "%s has multiple possible source pages" msgstr "" -#: ../IkiWiki/Render.pm:395 +#: ../IkiWiki/Render.pm:413 #, perl-format msgid "removing old page %s" msgstr "જુનાં પાનાં દૂર કરે છે %s" -#: ../IkiWiki/Render.pm:471 +#: ../IkiWiki/Render.pm:486 #, fuzzy, perl-format msgid "building %s, which links to %s" msgstr "રેન્ડર કરે છે %s, જે %s સાથે જોડાણ ધરાવે છે" -#: ../IkiWiki/Render.pm:480 +#: ../IkiWiki/Render.pm:495 #, fuzzy, perl-format msgid "removing %s, no longer built by %s" msgstr "દૂર કરે છે %s, હવે %s વડે રેન્ડર કરાતું નથી" -#: ../IkiWiki/Render.pm:603 +#: ../IkiWiki/Render.pm:618 #, fuzzy, perl-format msgid "building %s, which depends on %s" msgstr "રેન્ડર કરે છે %s, જે %s પર આધારિત છે" -#: ../IkiWiki/Render.pm:616 +#: ../IkiWiki/Render.pm:631 #, fuzzy, perl-format msgid "building %s, to update its backlinks" msgstr "રેન્ડર કરે છે %s, તેનાં પાછળનાં જોડાણો સુધારવા માટે" -#: ../IkiWiki/Render.pm:679 +#: ../IkiWiki/Render.pm:696 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: %s રેન્ડર કરી શકાતું નથી" @@ -1085,16 +1085,16 @@ msgstr "વાંચી શકાતી નથી %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:76 +#: ../IkiWiki/Setup/Automator.pm:79 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:102 +#: ../IkiWiki/Setup/Automator.pm:105 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:120 +#: ../IkiWiki/Setup/Automator.pm:123 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1165,25 +1165,25 @@ msgstr "" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1264 +#: ../IkiWiki.pm:1263 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "%s પર શોધાયેલ લુપ %s પર ચલાવે છે %i ઉંડાણ પર" -#: ../IkiWiki.pm:1863 +#: ../IkiWiki.pm:1862 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2006 +#: ../IkiWiki.pm:2005 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2017 +#: ../IkiWiki.pm:2016 #, perl-format msgid "unknown sort type %s" msgstr "અજાણ્યો ગોઠવણી પ્રકાર %s" -#: ../IkiWiki.pm:2036 +#: ../IkiWiki.pm:2035 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "વાંચી શકાતી નથી %s: %s" @@ -1208,6 +1208,10 @@ msgstr "" msgid "What is the domain name of the web server?" msgstr "" +#, fuzzy +#~ msgid "failed to read %s" +#~ msgstr "%s વાંચવામાં નિષ્ફળ: %s" + #~ msgid "discussion" #~ msgstr "ચર્ચા" diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index 38a464141..f4749b841 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: 2010-01-02 21:47-0500\n" +"POT-Creation-Date: 2010-01-22 16:04-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,45 +16,45 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: ../IkiWiki/CGI.pm:114 +#: ../IkiWiki/CGI.pm:116 msgid "You need to log in first." msgstr "" -#: ../IkiWiki/CGI.pm:147 +#: ../IkiWiki/CGI.pm:149 msgid "" "probable misconfiguration: sslcookie is set, but you are attempting to login " "via http, not https" msgstr "" -#: ../IkiWiki/CGI.pm:150 +#: ../IkiWiki/CGI.pm:152 msgid "login failed, perhaps you need to turn on cookies?" msgstr "" -#: ../IkiWiki/CGI.pm:169 ../IkiWiki/CGI.pm:318 +#: ../IkiWiki/CGI.pm:171 ../IkiWiki/CGI.pm:320 msgid "Your login session has expired." msgstr "" -#: ../IkiWiki/CGI.pm:190 +#: ../IkiWiki/CGI.pm:192 msgid "Login" msgstr "" -#: ../IkiWiki/CGI.pm:191 +#: ../IkiWiki/CGI.pm:193 msgid "Preferences" msgstr "" -#: ../IkiWiki/CGI.pm:192 +#: ../IkiWiki/CGI.pm:194 msgid "Admin" msgstr "" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:234 msgid "Preferences saved." msgstr "" -#: ../IkiWiki/CGI.pm:282 +#: ../IkiWiki/CGI.pm:284 msgid "You are banned." msgstr "" -#: ../IkiWiki/CGI.pm:409 ../IkiWiki/CGI.pm:410 ../IkiWiki.pm:1281 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 msgid "Error" msgstr "" @@ -241,7 +241,7 @@ msgstr "" msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:236 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 msgid "you are not logged in as an admin" msgstr "" @@ -338,18 +338,18 @@ msgstr "" msgid "%s is an attachment, not a page." msgstr "" -#: ../IkiWiki/Plugin/git.pm:651 ../IkiWiki/Plugin/git.pm:669 +#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:691 +#: ../IkiWiki/Plugin/git.pm:697 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:695 +#: ../IkiWiki/Plugin/git.pm:701 msgid "you are not allowed to change file modes" msgstr "" @@ -436,16 +436,20 @@ msgstr "" msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:621 +#: ../IkiWiki/Plugin/inline.pm:624 msgid "RPC::XML::Client not found, not pinging" msgstr "" -#: ../IkiWiki/Plugin/linkmap.pm:102 ../IkiWiki/Plugin/linkmap.pm:109 -#: ../IkiWiki/Plugin/linkmap.pm:113 ../IkiWiki/Plugin/linkmap.pm:116 +#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 +#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 msgid "failed to run dot" msgstr "" -#: ../IkiWiki/Plugin/lockedit.pm:47 +#: ../IkiWiki/Plugin/linkmap.pm:84 +msgid "linkmap" +msgstr "" + +#: ../IkiWiki/Plugin/lockedit.pm:48 #, perl-format msgid "%s is locked and cannot be edited" msgstr "" @@ -583,7 +587,7 @@ msgstr "" msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:652 +#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 #, perl-format msgid "building %s" msgstr "" @@ -637,22 +641,17 @@ msgstr "" msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1095 ../IkiWiki/Plugin/po.pm:1109 -#: ../IkiWiki/Plugin/po.pm:1149 +#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 +#: ../IkiWiki/Plugin/po.pm:1141 #, perl-format msgid "failed to write %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1107 +#: ../IkiWiki/Plugin/po.pm:1100 msgid "failed to translate" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1112 -#, perl-format -msgid "failed to read %s" -msgstr "" - -#: ../IkiWiki/Plugin/po.pm:1161 +#: ../IkiWiki/Plugin/po.pm:1153 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -959,30 +958,30 @@ msgstr "" msgid "enable %s?" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/websetup.pm:244 msgid "setup file for this wiki is not known" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:256 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "main" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:257 +#: ../IkiWiki/Plugin/websetup.pm:261 msgid "plugins" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:395 +#: ../IkiWiki/Plugin/websetup.pm:404 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:399 +#: ../IkiWiki/Plugin/websetup.pm:408 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:436 +#: ../IkiWiki/Plugin/websetup.pm:445 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -997,54 +996,54 @@ msgstr "" msgid "bad file name %s" msgstr "" -#: ../IkiWiki/Render.pm:150 +#: ../IkiWiki/Render.pm:153 #, perl-format msgid "scanning %s" msgstr "" -#: ../IkiWiki/Render.pm:271 +#: ../IkiWiki/Render.pm:274 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "allow this" msgstr "" -#: ../IkiWiki/Render.pm:300 ../IkiWiki/Render.pm:327 +#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 #, perl-format msgid "skipping bad filename %s" msgstr "" -#: ../IkiWiki/Render.pm:305 +#: ../IkiWiki/Render.pm:308 #, perl-format msgid "%s has multiple possible source pages" msgstr "" -#: ../IkiWiki/Render.pm:410 +#: ../IkiWiki/Render.pm:413 #, perl-format msgid "removing old page %s" msgstr "" -#: ../IkiWiki/Render.pm:483 +#: ../IkiWiki/Render.pm:486 #, perl-format msgid "building %s, which links to %s" msgstr "" -#: ../IkiWiki/Render.pm:492 +#: ../IkiWiki/Render.pm:495 #, perl-format msgid "removing %s, no longer built by %s" msgstr "" -#: ../IkiWiki/Render.pm:615 +#: ../IkiWiki/Render.pm:618 #, perl-format msgid "building %s, which depends on %s" msgstr "" -#: ../IkiWiki/Render.pm:628 +#: ../IkiWiki/Render.pm:631 #, perl-format msgid "building %s, to update its backlinks" msgstr "" -#: ../IkiWiki/Render.pm:693 +#: ../IkiWiki/Render.pm:696 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "" diff --git a/po/it.po b/po/it.po index 7e0d3dd90..3b0f45348 100644 --- a/po/it.po +++ b/po/it.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Ikiwiki\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-10-31 18:31-0400\n" +"POT-Creation-Date: 2010-01-22 16:04-0500\n" "PO-Revision-Date: 2009-08-16 11:01+0100\n" "Last-Translator: Luca Bruno \n" "Language-Team: Italian TP \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../IkiWiki/CGI.pm:114 +#: ../IkiWiki/CGI.pm:116 msgid "You need to log in first." msgstr "Occorre prima effettuare l'accesso." -#: ../IkiWiki/CGI.pm:147 +#: ../IkiWiki/CGI.pm:149 msgid "" "probable misconfiguration: sslcookie is set, but you are attempting to login " "via http, not https" @@ -25,35 +25,35 @@ msgstr "" "possibile errore di configurazione: sslcookie è impostato, ma si sta " "tentando un accesso via http, non https" -#: ../IkiWiki/CGI.pm:150 +#: ../IkiWiki/CGI.pm:152 msgid "login failed, perhaps you need to turn on cookies?" msgstr "errore nell'accesso, probabilmente i cookie sono disabilitati?" -#: ../IkiWiki/CGI.pm:169 ../IkiWiki/CGI.pm:314 +#: ../IkiWiki/CGI.pm:171 ../IkiWiki/CGI.pm:320 msgid "Your login session has expired." msgstr "La sessione è scaduta." -#: ../IkiWiki/CGI.pm:190 +#: ../IkiWiki/CGI.pm:192 msgid "Login" msgstr "Entra" -#: ../IkiWiki/CGI.pm:191 +#: ../IkiWiki/CGI.pm:193 msgid "Preferences" msgstr "Preferenze" -#: ../IkiWiki/CGI.pm:192 +#: ../IkiWiki/CGI.pm:194 msgid "Admin" msgstr "Amministrazione" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:234 msgid "Preferences saved." msgstr "Preferenze salvate." -#: ../IkiWiki/CGI.pm:278 +#: ../IkiWiki/CGI.pm:284 msgid "You are banned." msgstr "Avete ricevuto un ban." -#: ../IkiWiki/CGI.pm:405 ../IkiWiki/CGI.pm:406 ../IkiWiki.pm:1282 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 msgid "Error" msgstr "Errore" @@ -226,36 +226,36 @@ msgstr "la pagina «%s» non esiste, impossibile commentarla" msgid "comments on page '%s' are closed" msgstr "i commenti per la pagina «%s» sono chiusi" -#: ../IkiWiki/Plugin/comments.pm:464 +#: ../IkiWiki/Plugin/comments.pm:467 msgid "comment stored for moderation" msgstr "commento trattenuto per moderazione" -#: ../IkiWiki/Plugin/comments.pm:466 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "Your comment will be posted after moderator review" msgstr "Il commento sarà pubblicato dopo la verifica del moderatore" -#: ../IkiWiki/Plugin/comments.pm:479 +#: ../IkiWiki/Plugin/comments.pm:482 msgid "Added a comment" msgstr "Aggiunto commento" -#: ../IkiWiki/Plugin/comments.pm:483 +#: ../IkiWiki/Plugin/comments.pm:486 #, perl-format msgid "Added a comment: %s" msgstr "Aggiunto commento: %s" -#: ../IkiWiki/Plugin/comments.pm:525 ../IkiWiki/Plugin/websetup.pm:236 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 msgid "you are not logged in as an admin" msgstr "non siete autenticati come amministratore" -#: ../IkiWiki/Plugin/comments.pm:576 +#: ../IkiWiki/Plugin/comments.pm:579 msgid "Comment moderation" msgstr "Moderazione commenti" -#: ../IkiWiki/Plugin/comments.pm:615 +#: ../IkiWiki/Plugin/comments.pm:618 msgid "comment moderation" msgstr "moderazione commento" -#: ../IkiWiki/Plugin/comments.pm:766 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comments" msgstr "Commenti" @@ -322,36 +322,36 @@ msgstr "occorre specificare formato e testo" msgid "fortune failed" msgstr "errore nel fortune" -#: ../IkiWiki/Plugin/getsource.pm:62 ../IkiWiki/Plugin/goto.pm:55 +#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 msgid "missing page" msgstr "pagina mancante" -#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 +#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 #, perl-format msgid "The page %s does not exist." msgstr "La pagina %s non esiste." -#: ../IkiWiki/Plugin/getsource.pm:73 +#: ../IkiWiki/Plugin/getsource.pm:74 msgid "not a page" msgstr "non è una pagina" -#: ../IkiWiki/Plugin/getsource.pm:75 +#: ../IkiWiki/Plugin/getsource.pm:76 #, perl-format msgid "%s is an attachment, not a page." msgstr "%s è un allegato, non una pagina." -#: ../IkiWiki/Plugin/git.pm:651 ../IkiWiki/Plugin/git.pm:669 +#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "non è permesso modificare %s" -#: ../IkiWiki/Plugin/git.pm:691 +#: ../IkiWiki/Plugin/git.pm:697 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "non è permesso lavorare su un file in modalità %s" -#: ../IkiWiki/Plugin/git.pm:695 +#: ../IkiWiki/Plugin/git.pm:701 msgid "you are not allowed to change file modes" msgstr "non è permesso cambiare la modalità del file" @@ -441,15 +441,20 @@ msgstr "Aggiungere un nuovo articolo dal titolo:" msgid "nonexistant template %s" msgstr "modello %s non esistente" -#: ../IkiWiki/Plugin/inline.pm:598 +#: ../IkiWiki/Plugin/inline.pm:624 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client non trovato, impossibile inviare ping" -#: ../IkiWiki/Plugin/linkmap.pm:101 +#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 +#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 msgid "failed to run dot" msgstr "impossibile eseguire dot" -#: ../IkiWiki/Plugin/lockedit.pm:47 +#: ../IkiWiki/Plugin/linkmap.pm:84 +msgid "linkmap" +msgstr "" + +#: ../IkiWiki/Plugin/lockedit.pm:48 #, perl-format msgid "%s is locked and cannot be edited" msgstr "%s è bloccata e non può essere modificata" @@ -598,7 +603,7 @@ msgstr "" msgid "rebuilding all pages to fix meta titles" msgstr "rigenerazione di tutte le pagine per sistemare i meta-titoli" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:638 +#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 #, perl-format msgid "building %s" msgstr "compilazione di %s" @@ -656,22 +661,17 @@ msgstr "impossibile tradurre %s" msgid "removed obsolete PO files" msgstr "file PO obsoleti rimossi" -#: ../IkiWiki/Plugin/po.pm:1095 ../IkiWiki/Plugin/po.pm:1109 -#: ../IkiWiki/Plugin/po.pm:1149 +#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 +#: ../IkiWiki/Plugin/po.pm:1141 #, perl-format msgid "failed to write %s" msgstr "impossibile scrivere %s" -#: ../IkiWiki/Plugin/po.pm:1107 +#: ../IkiWiki/Plugin/po.pm:1100 msgid "failed to translate" msgstr "impossibile tradurre" -#: ../IkiWiki/Plugin/po.pm:1112 -#, perl-format -msgid "failed to read %s" -msgstr "impossibile leggere %s" - -#: ../IkiWiki/Plugin/po.pm:1161 +#: ../IkiWiki/Plugin/po.pm:1153 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" "dati gettext non validi, tornare alle pagina precedente per continuare le " @@ -841,20 +841,20 @@ msgstr "rinomina di %s" msgid "Also rename SubPages and attachments" msgstr "Rinomina anche SottoPagine e allegati" -#: ../IkiWiki/Plugin/rename.pm:247 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "Si può rinominare un solo allegato alla volta." -#: ../IkiWiki/Plugin/rename.pm:250 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "Selezionare l'allegato da rinominare." -#: ../IkiWiki/Plugin/rename.pm:347 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "rinomina %s in %s" -#: ../IkiWiki/Plugin/rename.pm:571 +#: ../IkiWiki/Plugin/rename.pm:572 #, perl-format msgid "update for rename of %s to %s" msgstr "aggiornamento per rinomina di %s in %s" @@ -982,26 +982,26 @@ msgstr "plugin" msgid "enable %s?" msgstr "abilitare %s?" -#: ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/websetup.pm:244 msgid "setup file for this wiki is not known" msgstr "il file di setup di questo wiki non è noto" -#: ../IkiWiki/Plugin/websetup.pm:256 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "main" msgstr "principale" -#: ../IkiWiki/Plugin/websetup.pm:257 +#: ../IkiWiki/Plugin/websetup.pm:261 msgid "plugins" msgstr "plugin" -#: ../IkiWiki/Plugin/websetup.pm:395 +#: ../IkiWiki/Plugin/websetup.pm:404 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" "Le sottostanti modifiche alla configurazione richiedono la ricompilazione " "del wiki." -#: ../IkiWiki/Plugin/websetup.pm:399 +#: ../IkiWiki/Plugin/websetup.pm:408 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." @@ -1009,7 +1009,7 @@ msgstr "" "Affinché le sottostanti modifiche alla configurazione abbiano effetto, " "occorre ricostruire il wiki." -#: ../IkiWiki/Plugin/websetup.pm:436 +#: ../IkiWiki/Plugin/websetup.pm:445 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "Errore: %s è terminato con errore (%s). Modifiche al setup scartate." @@ -1024,12 +1024,12 @@ msgstr "impossibile determinare l'id del committer non fidato %s" msgid "bad file name %s" msgstr "nome file %s scorretto" -#: ../IkiWiki/Render.pm:150 +#: ../IkiWiki/Render.pm:153 #, perl-format msgid "scanning %s" msgstr "scansione %s" -#: ../IkiWiki/Render.pm:271 +#: ../IkiWiki/Render.pm:274 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " @@ -1038,42 +1038,42 @@ msgstr "" "collegamento simbolico trovato nel percorso srcdir (%s) -- impostare " "allow_symlinks_before_srcdir per abilitare questa configurazione" -#: ../IkiWiki/Render.pm:300 ../IkiWiki/Render.pm:327 +#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 #, perl-format msgid "skipping bad filename %s" msgstr "ignorato il file dal nome scorretto %s" -#: ../IkiWiki/Render.pm:305 +#: ../IkiWiki/Render.pm:308 #, perl-format msgid "%s has multiple possible source pages" msgstr "%s ha diverse pagine sorgenti possibili" -#: ../IkiWiki/Render.pm:395 +#: ../IkiWiki/Render.pm:413 #, perl-format msgid "removing old page %s" msgstr "rimozione della vecchia pagina %s" -#: ../IkiWiki/Render.pm:471 +#: ../IkiWiki/Render.pm:486 #, perl-format msgid "building %s, which links to %s" msgstr "compilazione di %s, che è collegato a %s" -#: ../IkiWiki/Render.pm:480 +#: ../IkiWiki/Render.pm:495 #, perl-format msgid "removing %s, no longer built by %s" msgstr "rimozione di %s, non più richiesto da %s" -#: ../IkiWiki/Render.pm:603 +#: ../IkiWiki/Render.pm:618 #, perl-format msgid "building %s, which depends on %s" msgstr "compilazione di %s, che dipende da %s" -#: ../IkiWiki/Render.pm:616 +#: ../IkiWiki/Render.pm:631 #, perl-format msgid "building %s, to update its backlinks" msgstr "compilazione di %s, per aggiornare i collegamenti ai precedenti" -#: ../IkiWiki/Render.pm:679 +#: ../IkiWiki/Render.pm:696 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: impossibile compilare %s" @@ -1089,16 +1089,16 @@ msgstr "impossibile leggere %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "occorre inserire un wikiname (contente caratteri alfanumerici)" -#: ../IkiWiki/Setup/Automator.pm:76 +#: ../IkiWiki/Setup/Automator.pm:79 #, perl-format msgid "unsupported revision control system %s" msgstr "sistema di controllo di revisione %s non supportato" -#: ../IkiWiki/Setup/Automator.pm:102 +#: ../IkiWiki/Setup/Automator.pm:105 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "impossibile creare un repository tramite ikiwiki-makerepo" -#: ../IkiWiki/Setup/Automator.pm:120 +#: ../IkiWiki/Setup/Automator.pm:123 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1170,25 +1170,25 @@ msgstr "impossibile usare più plugin rcs" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "impossibile caricare il plugin esterno per il plugin %s: %s" -#: ../IkiWiki.pm:1264 +#: ../IkiWiki.pm:1263 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "ciclo del preprocessore individuato su %s alla profondità %i" -#: ../IkiWiki.pm:1863 +#: ../IkiWiki.pm:1862 msgid "yes" msgstr "sì" -#: ../IkiWiki.pm:2006 +#: ../IkiWiki.pm:2005 msgid "Sort::Naturally needed for title_natural sort" msgstr "Sort::Naturally è richiesto per l'ordinamento title_natural" -#: ../IkiWiki.pm:2017 +#: ../IkiWiki.pm:2016 #, perl-format msgid "unknown sort type %s" msgstr "ordinamento %s sconosciuto" -#: ../IkiWiki.pm:2036 +#: ../IkiWiki.pm:2035 #, perl-format msgid "cannot match pages: %s" msgstr "impossibile trovare pagine corrispondenti: %s" @@ -1213,6 +1213,9 @@ msgstr "Quale utente (openid o del wiki) sarà l'amministratore?" msgid "What is the domain name of the web server?" msgstr "Qual è il nome del dominio del server web?" +#~ msgid "failed to read %s" +#~ msgstr "impossibile leggere %s" + #~ msgid "Failed to parse url, cannot determine domain name" #~ msgstr "" #~ "Errore nell'interpretazione dell'URL, impossibile determinare il nome del " diff --git a/po/pl.po b/po/pl.po index 81addd8d9..203155cfb 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: 2009-10-31 18:31-0400\n" +"POT-Creation-Date: 2010-01-22 16:04-0500\n" "PO-Revision-Date: 2007-04-27 22:05+0200\n" "Last-Translator: Pawel Tecza \n" "Language-Team: Debian L10n Polish \n" @@ -16,48 +16,48 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../IkiWiki/CGI.pm:114 +#: ../IkiWiki/CGI.pm:116 msgid "You need to log in first." msgstr "Proszę najpierw zalogować się." -#: ../IkiWiki/CGI.pm:147 +#: ../IkiWiki/CGI.pm:149 msgid "" "probable misconfiguration: sslcookie is set, but you are attempting to login " "via http, not https" msgstr "" -#: ../IkiWiki/CGI.pm:150 +#: ../IkiWiki/CGI.pm:152 msgid "login failed, perhaps you need to turn on cookies?" msgstr "" "Nieudane logowanie. Proszę sprawdzić czy w przeglądarce włączone są " "ciasteczka (ang. cookies)" -#: ../IkiWiki/CGI.pm:169 ../IkiWiki/CGI.pm:314 +#: ../IkiWiki/CGI.pm:171 ../IkiWiki/CGI.pm:320 msgid "Your login session has expired." msgstr "" -#: ../IkiWiki/CGI.pm:190 +#: ../IkiWiki/CGI.pm:192 msgid "Login" msgstr "" -#: ../IkiWiki/CGI.pm:191 +#: ../IkiWiki/CGI.pm:193 #, fuzzy msgid "Preferences" msgstr "Preferencje zapisane." -#: ../IkiWiki/CGI.pm:192 +#: ../IkiWiki/CGI.pm:194 msgid "Admin" msgstr "" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:234 msgid "Preferences saved." msgstr "Preferencje zapisane." -#: ../IkiWiki/CGI.pm:278 +#: ../IkiWiki/CGI.pm:284 msgid "You are banned." msgstr "Twój dostęp został zabroniony przez administratora." -#: ../IkiWiki/CGI.pm:405 ../IkiWiki/CGI.pm:406 ../IkiWiki.pm:1282 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 msgid "Error" msgstr "Błąd" @@ -231,36 +231,36 @@ msgstr "" msgid "comments on page '%s' are closed" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:464 +#: ../IkiWiki/Plugin/comments.pm:467 msgid "comment stored for moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:466 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "Your comment will be posted after moderator review" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:479 +#: ../IkiWiki/Plugin/comments.pm:482 msgid "Added a comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:483 +#: ../IkiWiki/Plugin/comments.pm:486 #, perl-format msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:525 ../IkiWiki/Plugin/websetup.pm:236 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 msgid "you are not logged in as an admin" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:576 +#: ../IkiWiki/Plugin/comments.pm:579 msgid "Comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:615 +#: ../IkiWiki/Plugin/comments.pm:618 msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:766 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comments" msgstr "" @@ -330,38 +330,38 @@ msgstr "" msgid "fortune failed" msgstr "awaria fortunki" -#: ../IkiWiki/Plugin/getsource.pm:62 ../IkiWiki/Plugin/goto.pm:55 +#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 #, fuzzy msgid "missing page" msgstr "brakujące wartości" -#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 +#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 #, perl-format msgid "The page %s does not exist." msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:73 +#: ../IkiWiki/Plugin/getsource.pm:74 #, fuzzy msgid "not a page" msgstr "awaria w trakcie odczytu %s: %s" -#: ../IkiWiki/Plugin/getsource.pm:75 +#: ../IkiWiki/Plugin/getsource.pm:76 #, fuzzy, perl-format msgid "%s is an attachment, not a page." msgstr "Strona %s nie może być edytowana" -#: ../IkiWiki/Plugin/git.pm:651 ../IkiWiki/Plugin/git.pm:669 +#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:691 +#: ../IkiWiki/Plugin/git.pm:697 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:695 +#: ../IkiWiki/Plugin/git.pm:701 msgid "you are not allowed to change file modes" msgstr "" @@ -455,16 +455,21 @@ msgstr "Tytuł nowego wpisu" msgid "nonexistant template %s" msgstr "brakujący szablon %s" -#: ../IkiWiki/Plugin/inline.pm:598 +#: ../IkiWiki/Plugin/inline.pm:624 msgid "RPC::XML::Client not found, not pinging" msgstr "Nieznaleziony moduł RPC::XML::Client, brak możliwości pingowania" -#: ../IkiWiki/Plugin/linkmap.pm:101 +#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 +#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 #, fuzzy msgid "failed to run dot" msgstr "awaria w trakcie uruchamiania dot" -#: ../IkiWiki/Plugin/lockedit.pm:47 +#: ../IkiWiki/Plugin/linkmap.pm:84 +msgid "linkmap" +msgstr "" + +#: ../IkiWiki/Plugin/lockedit.pm:48 #, fuzzy, perl-format msgid "%s is locked and cannot be edited" msgstr "" @@ -611,7 +616,7 @@ msgstr "" msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:638 +#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 #, fuzzy, perl-format msgid "building %s" msgstr "edycja %s" @@ -665,23 +670,18 @@ msgstr "awaria w trakcie zmiany rozmiaru: %s" msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1095 ../IkiWiki/Plugin/po.pm:1109 -#: ../IkiWiki/Plugin/po.pm:1149 +#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 +#: ../IkiWiki/Plugin/po.pm:1141 #, fuzzy, perl-format msgid "failed to write %s" msgstr "awaria w trakcie zapisu %s: %s" -#: ../IkiWiki/Plugin/po.pm:1107 +#: ../IkiWiki/Plugin/po.pm:1100 #, fuzzy msgid "failed to translate" msgstr "awaria w trakcie uruchamiania dot" -#: ../IkiWiki/Plugin/po.pm:1112 -#, fuzzy, perl-format -msgid "failed to read %s" -msgstr "awaria w trakcie odczytu %s: %s" - -#: ../IkiWiki/Plugin/po.pm:1161 +#: ../IkiWiki/Plugin/po.pm:1153 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -852,20 +852,20 @@ msgstr "renderowanie %s" msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:247 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:250 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:347 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:571 +#: ../IkiWiki/Plugin/rename.pm:572 #, fuzzy, perl-format msgid "update for rename of %s to %s" msgstr "aktualizacja stron wiki %s: %s przez użytkownika %s" @@ -1006,30 +1006,30 @@ msgstr "" msgid "enable %s?" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/websetup.pm:244 msgid "setup file for this wiki is not known" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:256 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "main" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:257 +#: ../IkiWiki/Plugin/websetup.pm:261 msgid "plugins" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:395 +#: ../IkiWiki/Plugin/websetup.pm:404 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:399 +#: ../IkiWiki/Plugin/websetup.pm:408 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:436 +#: ../IkiWiki/Plugin/websetup.pm:445 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1044,54 +1044,54 @@ msgstr "" msgid "bad file name %s" msgstr "pomijanie nieprawidłowej nazwy pliku %s" -#: ../IkiWiki/Render.pm:150 +#: ../IkiWiki/Render.pm:153 #, perl-format msgid "scanning %s" msgstr "skanowanie %s" -#: ../IkiWiki/Render.pm:271 +#: ../IkiWiki/Render.pm:274 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "allow this" msgstr "" -#: ../IkiWiki/Render.pm:300 ../IkiWiki/Render.pm:327 +#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 #, perl-format msgid "skipping bad filename %s" msgstr "pomijanie nieprawidłowej nazwy pliku %s" -#: ../IkiWiki/Render.pm:305 +#: ../IkiWiki/Render.pm:308 #, perl-format msgid "%s has multiple possible source pages" msgstr "" -#: ../IkiWiki/Render.pm:395 +#: ../IkiWiki/Render.pm:413 #, perl-format msgid "removing old page %s" msgstr "usuwanie starej strony %s" -#: ../IkiWiki/Render.pm:471 +#: ../IkiWiki/Render.pm:486 #, fuzzy, perl-format msgid "building %s, which links to %s" msgstr "renderowanie %s z odnośnikiem do %s" -#: ../IkiWiki/Render.pm:480 +#: ../IkiWiki/Render.pm:495 #, fuzzy, perl-format msgid "removing %s, no longer built by %s" msgstr "usuwanie %s nie tworzonego już przez %s" -#: ../IkiWiki/Render.pm:603 +#: ../IkiWiki/Render.pm:618 #, fuzzy, perl-format msgid "building %s, which depends on %s" msgstr "renderowanie %s zależącego od %s" -#: ../IkiWiki/Render.pm:616 +#: ../IkiWiki/Render.pm:631 #, fuzzy, perl-format msgid "building %s, to update its backlinks" msgstr "renderowanie %s w celu aktualizacji powrotnych odnośników" -#: ../IkiWiki/Render.pm:679 +#: ../IkiWiki/Render.pm:696 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: awaria w trakcie tworzenia %s" @@ -1107,16 +1107,16 @@ msgstr "awaria w trakcie odczytu %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:76 +#: ../IkiWiki/Setup/Automator.pm:79 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:102 +#: ../IkiWiki/Setup/Automator.pm:105 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:120 +#: ../IkiWiki/Setup/Automator.pm:123 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1189,25 +1189,25 @@ msgstr "" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1264 +#: ../IkiWiki.pm:1263 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "polecenie preprocesora %s wykryte w %s na głębokości %i" -#: ../IkiWiki.pm:1863 +#: ../IkiWiki.pm:1862 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2006 +#: ../IkiWiki.pm:2005 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2017 +#: ../IkiWiki.pm:2016 #, perl-format msgid "unknown sort type %s" msgstr "nieznany sposób sortowania %s" -#: ../IkiWiki.pm:2036 +#: ../IkiWiki.pm:2035 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "awaria w trakcie odczytu %s: %s" @@ -1232,6 +1232,10 @@ msgstr "" msgid "What is the domain name of the web server?" msgstr "" +#, fuzzy +#~ msgid "failed to read %s" +#~ msgstr "awaria w trakcie odczytu %s: %s" + #~ msgid "discussion" #~ msgstr "dyskusja" diff --git a/po/sv.po b/po/sv.po index 21a65ae5d..49518e2a8 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: 2009-10-31 18:31-0400\n" +"POT-Creation-Date: 2010-01-22 16:04-0500\n" "PO-Revision-Date: 2007-01-10 23:47+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -15,46 +15,46 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../IkiWiki/CGI.pm:114 +#: ../IkiWiki/CGI.pm:116 msgid "You need to log in first." msgstr "Du måste logga in först." -#: ../IkiWiki/CGI.pm:147 +#: ../IkiWiki/CGI.pm:149 msgid "" "probable misconfiguration: sslcookie is set, but you are attempting to login " "via http, not https" msgstr "" -#: ../IkiWiki/CGI.pm:150 +#: ../IkiWiki/CGI.pm:152 msgid "login failed, perhaps you need to turn on cookies?" msgstr "" -#: ../IkiWiki/CGI.pm:169 ../IkiWiki/CGI.pm:314 +#: ../IkiWiki/CGI.pm:171 ../IkiWiki/CGI.pm:320 msgid "Your login session has expired." msgstr "" -#: ../IkiWiki/CGI.pm:190 +#: ../IkiWiki/CGI.pm:192 msgid "Login" msgstr "" -#: ../IkiWiki/CGI.pm:191 +#: ../IkiWiki/CGI.pm:193 #, fuzzy msgid "Preferences" msgstr "Inställningar sparades." -#: ../IkiWiki/CGI.pm:192 +#: ../IkiWiki/CGI.pm:194 msgid "Admin" msgstr "" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:234 msgid "Preferences saved." msgstr "Inställningar sparades." -#: ../IkiWiki/CGI.pm:278 +#: ../IkiWiki/CGI.pm:284 msgid "You are banned." msgstr "Du är bannlyst." -#: ../IkiWiki/CGI.pm:405 ../IkiWiki/CGI.pm:406 ../IkiWiki.pm:1282 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 msgid "Error" msgstr "Fel" @@ -228,36 +228,36 @@ msgstr "" msgid "comments on page '%s' are closed" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:464 +#: ../IkiWiki/Plugin/comments.pm:467 msgid "comment stored for moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:466 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "Your comment will be posted after moderator review" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:479 +#: ../IkiWiki/Plugin/comments.pm:482 msgid "Added a comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:483 +#: ../IkiWiki/Plugin/comments.pm:486 #, perl-format msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:525 ../IkiWiki/Plugin/websetup.pm:236 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 msgid "you are not logged in as an admin" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:576 +#: ../IkiWiki/Plugin/comments.pm:579 msgid "Comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:615 +#: ../IkiWiki/Plugin/comments.pm:618 msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:766 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comments" msgstr "" @@ -327,38 +327,38 @@ msgstr "" msgid "fortune failed" msgstr "fortune misslyckades" -#: ../IkiWiki/Plugin/getsource.pm:62 ../IkiWiki/Plugin/goto.pm:55 +#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 #, fuzzy msgid "missing page" msgstr "mall saknar id-parameter" -#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 +#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 #, perl-format msgid "The page %s does not exist." msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:73 +#: ../IkiWiki/Plugin/getsource.pm:74 #, fuzzy msgid "not a page" msgstr "kan inte läsa %s: %s" -#: ../IkiWiki/Plugin/getsource.pm:75 +#: ../IkiWiki/Plugin/getsource.pm:76 #, perl-format msgid "%s is an attachment, not a page." msgstr "" -#: ../IkiWiki/Plugin/git.pm:651 ../IkiWiki/Plugin/git.pm:669 +#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:691 +#: ../IkiWiki/Plugin/git.pm:697 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:695 +#: ../IkiWiki/Plugin/git.pm:701 msgid "you are not allowed to change file modes" msgstr "" @@ -450,16 +450,21 @@ msgstr "" msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:598 +#: ../IkiWiki/Plugin/inline.pm:624 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client hittades inte, pingar inte" -#: ../IkiWiki/Plugin/linkmap.pm:101 +#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 +#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 #, fuzzy msgid "failed to run dot" msgstr "linkmap misslyckades att köra dot" -#: ../IkiWiki/Plugin/lockedit.pm:47 +#: ../IkiWiki/Plugin/linkmap.pm:84 +msgid "linkmap" +msgstr "" + +#: ../IkiWiki/Plugin/lockedit.pm:48 #, fuzzy, perl-format msgid "%s is locked and cannot be edited" msgstr "%s är låst av %s och kan inte redigeras" @@ -604,7 +609,7 @@ msgstr "" msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:638 +#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 #, fuzzy, perl-format msgid "building %s" msgstr "redigerar %s" @@ -658,23 +663,18 @@ msgstr "misslyckades med att skriva %s: %s" msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1095 ../IkiWiki/Plugin/po.pm:1109 -#: ../IkiWiki/Plugin/po.pm:1149 +#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 +#: ../IkiWiki/Plugin/po.pm:1141 #, fuzzy, perl-format msgid "failed to write %s" msgstr "misslyckades med att skriva %s: %s" -#: ../IkiWiki/Plugin/po.pm:1107 +#: ../IkiWiki/Plugin/po.pm:1100 #, fuzzy msgid "failed to translate" msgstr "linkmap misslyckades att köra dot" -#: ../IkiWiki/Plugin/po.pm:1112 -#, fuzzy, perl-format -msgid "failed to read %s" -msgstr "misslyckades med att skriva %s: %s" - -#: ../IkiWiki/Plugin/po.pm:1161 +#: ../IkiWiki/Plugin/po.pm:1153 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -842,20 +842,20 @@ msgstr "ritar upp %s" msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:247 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:250 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:347 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:571 +#: ../IkiWiki/Plugin/rename.pm:572 #, fuzzy, perl-format msgid "update for rename of %s to %s" msgstr "uppdatering av %s, %s av %s" @@ -993,30 +993,30 @@ msgstr "" msgid "enable %s?" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/websetup.pm:244 msgid "setup file for this wiki is not known" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:256 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "main" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:257 +#: ../IkiWiki/Plugin/websetup.pm:261 msgid "plugins" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:395 +#: ../IkiWiki/Plugin/websetup.pm:404 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:399 +#: ../IkiWiki/Plugin/websetup.pm:408 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:436 +#: ../IkiWiki/Plugin/websetup.pm:445 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1031,54 +1031,54 @@ msgstr "" msgid "bad file name %s" msgstr "hoppar över felaktigt filnamn %s" -#: ../IkiWiki/Render.pm:150 +#: ../IkiWiki/Render.pm:153 #, perl-format msgid "scanning %s" msgstr "söker av %s" -#: ../IkiWiki/Render.pm:271 +#: ../IkiWiki/Render.pm:274 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "allow this" msgstr "" -#: ../IkiWiki/Render.pm:300 ../IkiWiki/Render.pm:327 +#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 #, perl-format msgid "skipping bad filename %s" msgstr "hoppar över felaktigt filnamn %s" -#: ../IkiWiki/Render.pm:305 +#: ../IkiWiki/Render.pm:308 #, perl-format msgid "%s has multiple possible source pages" msgstr "" -#: ../IkiWiki/Render.pm:395 +#: ../IkiWiki/Render.pm:413 #, perl-format msgid "removing old page %s" msgstr "tar bort gammal sida %s" -#: ../IkiWiki/Render.pm:471 +#: ../IkiWiki/Render.pm:486 #, fuzzy, perl-format msgid "building %s, which links to %s" msgstr "ritar upp %s, vilken länkar till %s" -#: ../IkiWiki/Render.pm:480 +#: ../IkiWiki/Render.pm:495 #, fuzzy, perl-format msgid "removing %s, no longer built by %s" msgstr "tar bort %s, som inte längre ritas upp av %s" -#: ../IkiWiki/Render.pm:603 +#: ../IkiWiki/Render.pm:618 #, fuzzy, perl-format msgid "building %s, which depends on %s" msgstr "ritar upp %s, vilken är beroende av %s" -#: ../IkiWiki/Render.pm:616 +#: ../IkiWiki/Render.pm:631 #, fuzzy, perl-format msgid "building %s, to update its backlinks" msgstr "ritar upp %s, för att uppdatera dess bakåtlänkar" -#: ../IkiWiki/Render.pm:679 +#: ../IkiWiki/Render.pm:696 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: kan inte rita upp %s" @@ -1094,16 +1094,16 @@ msgstr "kan inte läsa %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:76 +#: ../IkiWiki/Setup/Automator.pm:79 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:102 +#: ../IkiWiki/Setup/Automator.pm:105 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:120 +#: ../IkiWiki/Setup/Automator.pm:123 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1174,25 +1174,25 @@ msgstr "" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1264 +#: ../IkiWiki.pm:1263 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "%s förbehandlingsslinga detekterades på %s, djup %i" -#: ../IkiWiki.pm:1863 +#: ../IkiWiki.pm:1862 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2006 +#: ../IkiWiki.pm:2005 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2017 +#: ../IkiWiki.pm:2016 #, perl-format msgid "unknown sort type %s" msgstr "okänd sorteringstyp %s" -#: ../IkiWiki.pm:2036 +#: ../IkiWiki.pm:2035 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "kan inte läsa %s: %s" @@ -1217,6 +1217,10 @@ msgstr "" msgid "What is the domain name of the web server?" msgstr "" +#, fuzzy +#~ msgid "failed to read %s" +#~ msgstr "misslyckades med att skriva %s: %s" + #~ msgid "discussion" #~ msgstr "diskussion" diff --git a/po/tr.po b/po/tr.po index f3bce9f4f..113427f9b 100644 --- a/po/tr.po +++ b/po/tr.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.20091031\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 13:10-0500\n" +"POT-Creation-Date: 2010-01-22 16:04-0500\n" "PO-Revision-Date: 2009-11-08 03:04+0200\n" "Last-Translator: Recai Oktaş \n" "Language-Team: Turkish \n" @@ -13,45 +13,45 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../IkiWiki/CGI.pm:114 +#: ../IkiWiki/CGI.pm:116 msgid "You need to log in first." msgstr "Önce sisteme giriş yapmanız gerekiyor." -#: ../IkiWiki/CGI.pm:147 +#: ../IkiWiki/CGI.pm:149 msgid "" "probable misconfiguration: sslcookie is set, but you are attempting to login " "via http, not https" msgstr "" -#: ../IkiWiki/CGI.pm:150 +#: ../IkiWiki/CGI.pm:152 msgid "login failed, perhaps you need to turn on cookies?" msgstr "" -#: ../IkiWiki/CGI.pm:169 ../IkiWiki/CGI.pm:314 +#: ../IkiWiki/CGI.pm:171 ../IkiWiki/CGI.pm:320 msgid "Your login session has expired." msgstr "" -#: ../IkiWiki/CGI.pm:190 +#: ../IkiWiki/CGI.pm:192 msgid "Login" msgstr "Giriş" -#: ../IkiWiki/CGI.pm:191 +#: ../IkiWiki/CGI.pm:193 msgid "Preferences" msgstr "Tercihler" -#: ../IkiWiki/CGI.pm:192 +#: ../IkiWiki/CGI.pm:194 msgid "Admin" msgstr "Yönet" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:234 msgid "Preferences saved." msgstr "Tercihler kaydedildi." -#: ../IkiWiki/CGI.pm:278 +#: ../IkiWiki/CGI.pm:284 msgid "You are banned." msgstr "" -#: ../IkiWiki/CGI.pm:405 ../IkiWiki/CGI.pm:406 ../IkiWiki.pm:1281 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 msgid "Error" msgstr "Hata" @@ -221,36 +221,36 @@ msgstr "" msgid "comments on page '%s' are closed" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:464 +#: ../IkiWiki/Plugin/comments.pm:467 msgid "comment stored for moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:466 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "Your comment will be posted after moderator review" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:479 +#: ../IkiWiki/Plugin/comments.pm:482 msgid "Added a comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:483 +#: ../IkiWiki/Plugin/comments.pm:486 #, perl-format msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:525 ../IkiWiki/Plugin/websetup.pm:236 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 msgid "you are not logged in as an admin" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:576 +#: ../IkiWiki/Plugin/comments.pm:579 msgid "Comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:615 +#: ../IkiWiki/Plugin/comments.pm:618 msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:766 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comments" msgstr "" @@ -317,36 +317,36 @@ msgstr "" msgid "fortune failed" msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:62 ../IkiWiki/Plugin/goto.pm:55 +#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 msgid "missing page" msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 +#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 #, perl-format msgid "The page %s does not exist." msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:73 +#: ../IkiWiki/Plugin/getsource.pm:74 msgid "not a page" msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:75 +#: ../IkiWiki/Plugin/getsource.pm:76 #, perl-format msgid "%s is an attachment, not a page." msgstr "" -#: ../IkiWiki/Plugin/git.pm:651 ../IkiWiki/Plugin/git.pm:669 +#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:691 +#: ../IkiWiki/Plugin/git.pm:697 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:695 +#: ../IkiWiki/Plugin/git.pm:701 msgid "you are not allowed to change file modes" msgstr "" @@ -433,15 +433,20 @@ msgstr "" msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:621 +#: ../IkiWiki/Plugin/inline.pm:624 msgid "RPC::XML::Client not found, not pinging" msgstr "" -#: ../IkiWiki/Plugin/linkmap.pm:101 +#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 +#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 msgid "failed to run dot" msgstr "" -#: ../IkiWiki/Plugin/lockedit.pm:47 +#: ../IkiWiki/Plugin/linkmap.pm:84 +msgid "linkmap" +msgstr "" + +#: ../IkiWiki/Plugin/lockedit.pm:48 #, perl-format msgid "%s is locked and cannot be edited" msgstr "" @@ -579,7 +584,7 @@ msgstr "" msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:652 +#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 #, perl-format msgid "building %s" msgstr "" @@ -633,22 +638,17 @@ msgstr "" msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1095 ../IkiWiki/Plugin/po.pm:1109 -#: ../IkiWiki/Plugin/po.pm:1149 +#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 +#: ../IkiWiki/Plugin/po.pm:1141 #, perl-format msgid "failed to write %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1107 +#: ../IkiWiki/Plugin/po.pm:1100 msgid "failed to translate" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1112 -#, perl-format -msgid "failed to read %s" -msgstr "" - -#: ../IkiWiki/Plugin/po.pm:1161 +#: ../IkiWiki/Plugin/po.pm:1153 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -814,20 +814,20 @@ msgstr "" msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:247 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:250 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:347 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:571 +#: ../IkiWiki/Plugin/rename.pm:572 #, perl-format msgid "update for rename of %s to %s" msgstr "" @@ -955,30 +955,30 @@ msgstr "" msgid "enable %s?" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/websetup.pm:244 msgid "setup file for this wiki is not known" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:256 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "main" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:257 +#: ../IkiWiki/Plugin/websetup.pm:261 msgid "plugins" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:395 +#: ../IkiWiki/Plugin/websetup.pm:404 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:399 +#: ../IkiWiki/Plugin/websetup.pm:408 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:436 +#: ../IkiWiki/Plugin/websetup.pm:445 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -993,54 +993,54 @@ msgstr "" msgid "bad file name %s" msgstr "" -#: ../IkiWiki/Render.pm:150 +#: ../IkiWiki/Render.pm:153 #, perl-format msgid "scanning %s" msgstr "" -#: ../IkiWiki/Render.pm:271 +#: ../IkiWiki/Render.pm:274 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "allow this" msgstr "" -#: ../IkiWiki/Render.pm:300 ../IkiWiki/Render.pm:327 +#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 #, perl-format msgid "skipping bad filename %s" msgstr "" -#: ../IkiWiki/Render.pm:305 +#: ../IkiWiki/Render.pm:308 #, perl-format msgid "%s has multiple possible source pages" msgstr "" -#: ../IkiWiki/Render.pm:410 +#: ../IkiWiki/Render.pm:413 #, perl-format msgid "removing old page %s" msgstr "" -#: ../IkiWiki/Render.pm:483 +#: ../IkiWiki/Render.pm:486 #, perl-format msgid "building %s, which links to %s" msgstr "" -#: ../IkiWiki/Render.pm:492 +#: ../IkiWiki/Render.pm:495 #, perl-format msgid "removing %s, no longer built by %s" msgstr "" -#: ../IkiWiki/Render.pm:615 +#: ../IkiWiki/Render.pm:618 #, perl-format msgid "building %s, which depends on %s" msgstr "" -#: ../IkiWiki/Render.pm:628 +#: ../IkiWiki/Render.pm:631 #, perl-format msgid "building %s, to update its backlinks" msgstr "" -#: ../IkiWiki/Render.pm:693 +#: ../IkiWiki/Render.pm:696 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "" @@ -1056,16 +1056,16 @@ msgstr "" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:76 +#: ../IkiWiki/Setup/Automator.pm:79 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:102 +#: ../IkiWiki/Setup/Automator.pm:105 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:120 +#: ../IkiWiki/Setup/Automator.pm:123 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" diff --git a/po/vi.po b/po/vi.po index 03ff3bf76..9fccf87b5 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: 2009-10-31 18:31-0400\n" +"POT-Creation-Date: 2010-01-22 16:04-0500\n" "PO-Revision-Date: 2007-01-13 15:31+1030\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" @@ -16,46 +16,46 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: LocFactoryEditor 1.6fc1\n" -#: ../IkiWiki/CGI.pm:114 +#: ../IkiWiki/CGI.pm:116 msgid "You need to log in first." msgstr "Trước tiên bạn cần phải đăng nhập." -#: ../IkiWiki/CGI.pm:147 +#: ../IkiWiki/CGI.pm:149 msgid "" "probable misconfiguration: sslcookie is set, but you are attempting to login " "via http, not https" msgstr "" -#: ../IkiWiki/CGI.pm:150 +#: ../IkiWiki/CGI.pm:152 msgid "login failed, perhaps you need to turn on cookies?" msgstr "" -#: ../IkiWiki/CGI.pm:169 ../IkiWiki/CGI.pm:314 +#: ../IkiWiki/CGI.pm:171 ../IkiWiki/CGI.pm:320 msgid "Your login session has expired." msgstr "" -#: ../IkiWiki/CGI.pm:190 +#: ../IkiWiki/CGI.pm:192 msgid "Login" msgstr "" -#: ../IkiWiki/CGI.pm:191 +#: ../IkiWiki/CGI.pm:193 #, fuzzy msgid "Preferences" msgstr "Tùy thích đã được lưu." -#: ../IkiWiki/CGI.pm:192 +#: ../IkiWiki/CGI.pm:194 msgid "Admin" msgstr "" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:234 msgid "Preferences saved." msgstr "Tùy thích đã được lưu." -#: ../IkiWiki/CGI.pm:278 +#: ../IkiWiki/CGI.pm:284 msgid "You are banned." msgstr "Bạn bị cấm ra." -#: ../IkiWiki/CGI.pm:405 ../IkiWiki/CGI.pm:406 ../IkiWiki.pm:1282 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 msgid "Error" msgstr "Lỗi" @@ -229,36 +229,36 @@ msgstr "" msgid "comments on page '%s' are closed" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:464 +#: ../IkiWiki/Plugin/comments.pm:467 msgid "comment stored for moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:466 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "Your comment will be posted after moderator review" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:479 +#: ../IkiWiki/Plugin/comments.pm:482 msgid "Added a comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:483 +#: ../IkiWiki/Plugin/comments.pm:486 #, perl-format msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:525 ../IkiWiki/Plugin/websetup.pm:236 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 msgid "you are not logged in as an admin" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:576 +#: ../IkiWiki/Plugin/comments.pm:579 msgid "Comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:615 +#: ../IkiWiki/Plugin/comments.pm:618 msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:766 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comments" msgstr "" @@ -328,38 +328,38 @@ msgstr "" msgid "fortune failed" msgstr "fortune bị lỗi" -#: ../IkiWiki/Plugin/getsource.pm:62 ../IkiWiki/Plugin/goto.pm:55 +#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 #, fuzzy msgid "missing page" msgstr "mẫu thiếu tham số id" -#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 +#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 #, perl-format msgid "The page %s does not exist." msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:73 +#: ../IkiWiki/Plugin/getsource.pm:74 #, fuzzy msgid "not a page" msgstr "không thể đọc %s: %s" -#: ../IkiWiki/Plugin/getsource.pm:75 +#: ../IkiWiki/Plugin/getsource.pm:76 #, perl-format msgid "%s is an attachment, not a page." msgstr "" -#: ../IkiWiki/Plugin/git.pm:651 ../IkiWiki/Plugin/git.pm:669 +#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:691 +#: ../IkiWiki/Plugin/git.pm:697 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:695 +#: ../IkiWiki/Plugin/git.pm:701 msgid "you are not allowed to change file modes" msgstr "" @@ -453,16 +453,21 @@ msgstr "" msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:598 +#: ../IkiWiki/Plugin/inline.pm:624 msgid "RPC::XML::Client not found, not pinging" msgstr "Không tìm thấy RPC::XML::Client nên không gửi gói tin ping" -#: ../IkiWiki/Plugin/linkmap.pm:101 +#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 +#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 #, fuzzy msgid "failed to run dot" msgstr "linkmap không chạy dot được" -#: ../IkiWiki/Plugin/lockedit.pm:47 +#: ../IkiWiki/Plugin/linkmap.pm:84 +msgid "linkmap" +msgstr "" + +#: ../IkiWiki/Plugin/lockedit.pm:48 #, fuzzy, perl-format msgid "%s is locked and cannot be edited" msgstr "%s bị %s khoá nên không thể sửa được" @@ -605,7 +610,7 @@ msgstr "" msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:638 +#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 #, fuzzy, perl-format msgid "building %s" msgstr "đang sửa %s" @@ -659,23 +664,18 @@ msgstr "lỗi ghi %s: %s" msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1095 ../IkiWiki/Plugin/po.pm:1109 -#: ../IkiWiki/Plugin/po.pm:1149 +#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 +#: ../IkiWiki/Plugin/po.pm:1141 #, fuzzy, perl-format msgid "failed to write %s" msgstr "lỗi ghi %s: %s" -#: ../IkiWiki/Plugin/po.pm:1107 +#: ../IkiWiki/Plugin/po.pm:1100 #, fuzzy msgid "failed to translate" msgstr "linkmap không chạy dot được" -#: ../IkiWiki/Plugin/po.pm:1112 -#, fuzzy, perl-format -msgid "failed to read %s" -msgstr "lỗi ghi %s: %s" - -#: ../IkiWiki/Plugin/po.pm:1161 +#: ../IkiWiki/Plugin/po.pm:1153 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -843,20 +843,20 @@ msgstr "đang vẽ %s" msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:247 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:250 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:347 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:571 +#: ../IkiWiki/Plugin/rename.pm:572 #, fuzzy, perl-format msgid "update for rename of %s to %s" msgstr "cập nhật %2$s của %1$s bởi %3$s" @@ -994,30 +994,30 @@ msgstr "" msgid "enable %s?" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/websetup.pm:244 msgid "setup file for this wiki is not known" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:256 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "main" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:257 +#: ../IkiWiki/Plugin/websetup.pm:261 msgid "plugins" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:395 +#: ../IkiWiki/Plugin/websetup.pm:404 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:399 +#: ../IkiWiki/Plugin/websetup.pm:408 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:436 +#: ../IkiWiki/Plugin/websetup.pm:445 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1032,54 +1032,54 @@ msgstr "" msgid "bad file name %s" msgstr "đang bỏ qua tên tập tin sai %s" -#: ../IkiWiki/Render.pm:150 +#: ../IkiWiki/Render.pm:153 #, perl-format msgid "scanning %s" msgstr "đang quét %s" -#: ../IkiWiki/Render.pm:271 +#: ../IkiWiki/Render.pm:274 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "allow this" msgstr "" -#: ../IkiWiki/Render.pm:300 ../IkiWiki/Render.pm:327 +#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 #, perl-format msgid "skipping bad filename %s" msgstr "đang bỏ qua tên tập tin sai %s" -#: ../IkiWiki/Render.pm:305 +#: ../IkiWiki/Render.pm:308 #, perl-format msgid "%s has multiple possible source pages" msgstr "" -#: ../IkiWiki/Render.pm:395 +#: ../IkiWiki/Render.pm:413 #, perl-format msgid "removing old page %s" msgstr "đang gỡ bỏ trang cũ %s" -#: ../IkiWiki/Render.pm:471 +#: ../IkiWiki/Render.pm:486 #, fuzzy, perl-format msgid "building %s, which links to %s" msgstr "đang vẽ %s mà liên kết tới %s" -#: ../IkiWiki/Render.pm:480 +#: ../IkiWiki/Render.pm:495 #, fuzzy, perl-format msgid "removing %s, no longer built by %s" msgstr "đang gỡ bỏ %s, không còn được vẽ lại bởi %s" -#: ../IkiWiki/Render.pm:603 +#: ../IkiWiki/Render.pm:618 #, fuzzy, perl-format msgid "building %s, which depends on %s" msgstr "đang vẽ %s mà phụ thuộc vào %s" -#: ../IkiWiki/Render.pm:616 +#: ../IkiWiki/Render.pm:631 #, fuzzy, perl-format msgid "building %s, to update its backlinks" msgstr "đang vẽ %s để cập nhật các liên kết ngược của nó" -#: ../IkiWiki/Render.pm:679 +#: ../IkiWiki/Render.pm:696 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: không thể vẽ %s" @@ -1095,16 +1095,16 @@ msgstr "không thể đọc %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:76 +#: ../IkiWiki/Setup/Automator.pm:79 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:102 +#: ../IkiWiki/Setup/Automator.pm:105 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:120 +#: ../IkiWiki/Setup/Automator.pm:123 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1175,25 +1175,25 @@ msgstr "" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1264 +#: ../IkiWiki.pm:1263 #, fuzzy, perl-format msgid "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" -#: ../IkiWiki.pm:1863 +#: ../IkiWiki.pm:1862 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2006 +#: ../IkiWiki.pm:2005 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2017 +#: ../IkiWiki.pm:2016 #, perl-format msgid "unknown sort type %s" msgstr "kiểu sắp xếp không rõ %s" -#: ../IkiWiki.pm:2036 +#: ../IkiWiki.pm:2035 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "không thể đọc %s: %s" @@ -1218,6 +1218,10 @@ msgstr "" msgid "What is the domain name of the web server?" msgstr "" +#, fuzzy +#~ msgid "failed to read %s" +#~ msgstr "lỗi ghi %s: %s" + #~ msgid "discussion" #~ msgstr "thảo luận" -- cgit v1.2.3 From 450f8b78b87e18374a0c0f4d7461ed29a4d8cdcb Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 22 Jan 2010 16:26:31 -0500 Subject: add news item for ikiwiki 3.20100122 --- doc/news/version_3.20091031.mdwn | 13 ------------- doc/news/version_3.20100122.mdwn | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 13 deletions(-) delete mode 100644 doc/news/version_3.20091031.mdwn create mode 100644 doc/news/version_3.20100122.mdwn diff --git a/doc/news/version_3.20091031.mdwn b/doc/news/version_3.20091031.mdwn deleted file mode 100644 index bb77bfa31..000000000 --- a/doc/news/version_3.20091031.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -ikiwiki 3.20091031 released with [[!toggle text="these changes"]] -[[!toggleable text=""" - * po: Fix breakage caused by changes to render code. - * mdwn: Avoid trying to use multimarkdown if it is not installed. - * moderatedcomments: New plugin to allow comment moderation w/o relying - on blogspam.net. - * When redirecting to a page, ie, after editing, ensure that the - url is uri-encoded. Most browsers other than MSIE don't care, but it's - the right thing to do. - * Add a spec file to allow building rpm from the source package. - * google: Pass the whole wiki url to google, not just the domain, - so that search works correctly for wikis that are located in - subdirectories of domains."""]] \ No newline at end of file diff --git a/doc/news/version_3.20100122.mdwn b/doc/news/version_3.20100122.mdwn new file mode 100644 index 000000000..11051fad8 --- /dev/null +++ b/doc/news/version_3.20100122.mdwn @@ -0,0 +1,15 @@ +ikiwiki 3.20100122 released with [[!toggle text="these changes"]] +[[!toggleable text=""" + * inline: Avoid showing edit links if page editing is disabled. + (Sjoerd) + * signinedit: Auto-disable the plugin when all authentication methods + are disabled. + * comments: Fix permalinks for comments using new conflict-free filenames. + * img: Support alignment of images with captions. (Giuseppe Bilotta) + * websetup: Fix utf-8 problems. + * websetup: Fix bug in array change detection. + * linkmap: Simplify and improve browser compatibility by using an img, + not object tag. + * git: The new git-notes feature in git 1.6.6 changes git log output + in a way that broke ikiwiki's parser if notes are added to commits. + * po: Avoid crash when a page is empty."""]] \ No newline at end of file -- cgit v1.2.3 From 6c5f9b914a067056e1d42921e639515507b34302 Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawn1lGvpPZ8dpuLSPLPa-jqpMef2KqeB1qI" Date: Fri, 22 Jan 2010 22:46:31 +0000 Subject: new forum thread - file navigation --- ...of_wiki_pages_on_local_filesystem_with_vim.mdwn | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn new file mode 100644 index 000000000..1f67a041d --- /dev/null +++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn @@ -0,0 +1,72 @@ +I wrote a vim function to help me navigate the wiki when I'm editing it. It extends the 'gf' (goto file) functionality. Once installed, you place the cursor on a wiki page name and press 'gf' (without the quotes); if the file exists, it gets loaded. + +This function takes into account the ikiwiki linking rules when deciding which file to go to. + +let me know what you think + +To enable this functionality, paste the code below in your `.vim/ftplugin/ikiwiki.vim` file + + " returns the directory which can be considered the root of the wiki the + " current buffer belongs to, or an empty string if we are not inside an + " ikiwiki wiki + " + " NOTE: the root of the wiki is considered the first directory that contains a + " .ikiwiki folder, except $HOME/.ikiwiki (the usual ikiwiki libdir) + " + " if you can think of a better heuristic to get ikiwiki's root, let me know! + function! GetWikiRootDir() + let check_str = '%:p:h' + let pos_wiki_root = expand(check_str) + while pos_wiki_root != '/' + if isdirectory(pos_wiki_root . '/.ikiwiki') && pos_wiki_root != $HOME + return pos_wiki_root + endif + let check_str = check_str . ':h' + let pos_wiki_root = expand(check_str) + endwhile + if isdirectory('/.ikiwiki') + return '/' + endif + return '' + endfunction + + " This function searches for a .mdwn file (.mdwn) using the ikiwiki + " WikiLink rules and returns its full path. + " + " The rules are the following + " + " if the filename starts with '/', use as base dir the root directory of the + " wiki + " + " if not: + " + " try first .//.mdwn + " then for ./.mdwn + " then for /.mdwn + " + " return the first one that exists + " + " the base path (. above) is the directory that contains the current buffer + " + function! FileForWikiLink(name) + let target_fname=a:name . ".mdwn" + let wikiroot_dir = GetWikiRootDir() + if match(target_fname, '^/') >= 0 + return wikiroot_dir . target_fname + endif + let subdir_file = expand('%:p:r') . "/" . target_fname + let currdir_file = expand('%:p:h') . "/" . target_fname + let wikiroot_file = wikiroot_dir . "/" . target_fname + if filewritable(subdir_file) + return subdir_file + endif + if filewritable(currdir_file) + return currdir_file + endif + if filewritable(wikiroot_file) + return wikiroot_file + endif + return a:name + endfunction + + setlocal includeexpr=FileForWikiLink(v:fname) -- cgit v1.2.3 From cefcf60843968389ad85c232ecbf38dff19a4b67 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Fri, 22 Jan 2010 23:24:20 +0000 Subject: --- .../Render_more_than_one_dest_page_from_same_source_page.mdwn | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn b/doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn index e88c23b07..e7362c903 100644 --- a/doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn +++ b/doc/forum/Render_more_than_one_dest_page_from_same_source_page.mdwn @@ -6,7 +6,9 @@ That is, same source, slightly different presentation at the other end, needing > This is done by calling `will_render()` and using `writefile()` to > generate the additional files. Probably in a format hook if you want > to generate html files. -> + +>> Thanks for the tip, I'll take a look at that. -- [[KathrynAndersen]] + > It's not possible for one source file to represent multiple wiki pages. > There is a 1:1 mapping between source filenames and page names. The > difference between wiki pages and output files is that you can use @@ -29,6 +31,8 @@ I want to do this for every page on the site, automatically, so it isn't feasibl > whole files for printing when you can use these style sheet tricks. > --[[Joey]] +>>Fair enough. --[[KathrynAndersen]] + ##"en" and "en-us" versions of a page. My site is in non-US English. However, I want US-English people to find my site when they search for it when they use US spelling on certain search terms (such as "optimise" versus "optimize"). This requires a (crude) US-English version of the site where the spellings are changed automatically, and the LANG is "en-us" rather than "en". (No, don't tell me to use keywords; Google ignores keywords and has for a number of years). @@ -43,3 +47,5 @@ But I'm not sure how to achieve the result I need. > Sounds like this could be considered a single page that generates two > html files, so could be handled per above. --[[Joey]] + +>>Thanks! --[[KathrynAndersen]] -- cgit v1.2.3 From b3b2402647e1628cea76922f5a6dc12adaa5a2b7 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Fri, 22 Jan 2010 23:36:17 +0000 Subject: discovered a wrinkle --- .../discussion.mdwn | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn new file mode 100644 index 000000000..183a8ef55 --- /dev/null +++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn @@ -0,0 +1,10 @@ + " NOTE: the root of the wiki is considered the first directory that contains a + " .ikiwiki folder, except $HOME/.ikiwiki (the usual ikiwiki libdir) + +That's not going to work in all situations; for example, with an ikiwiki which uses git as the backend, the normal setup is that one has + +* a bare git repository +* a git repository which ikiwiki builds the wiki from (which has a .ikiwiki directory in it) +* an *additional* git repository cloned from the bare repository, which is used for making changes from the command-line rather than the web. It is this repository in which one would be editing files with vim, and *this* repository does not have a .ikiwiki directory in it. It does have a .git directory in the root, however, so I suppose you could use that as a method of detection of a root directory, but of course that would only work for git repositories. + +-- [[KathrynAndersen]] -- cgit v1.2.3 From d0a06e6952f13a9a0c7d2959e393f700ee66c192 Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawn1lGvpPZ8dpuLSPLPa-jqpMef2KqeB1qI" Date: Sat, 23 Jan 2010 16:37:42 +0000 Subject: update about wiki page navigation --- .../navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn index 1f67a041d..9545fda53 100644 --- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn +++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn @@ -2,6 +2,14 @@ I wrote a vim function to help me navigate the wiki when I'm editing it. It exte This function takes into account the ikiwiki linking rules when deciding which file to go to. +> 'gf' gets in the way when there are directories with the same name of a wiki page. The +> function below doesn't implement the linking rules properly (test the link (ignoring case), +> if there is no match ascend the dir. hierarchy and start over, until we reach the root of +> the wiki). I'm rewriting it to follow these rules properly +> +> I think the page for [[LinkingRules|ikiwiki/subpage/linkingrules]] should say that ikiwiki **ascends** +> the dir. hierarchy when looking for a wikilink, not that it **descends** it. Am I correct? --[[jerojasro]] + let me know what you think To enable this functionality, paste the code below in your `.vim/ftplugin/ikiwiki.vim` file -- cgit v1.2.3 From 5456f720cd6fca6c5d8ec2d7da3dd745799ea26c Mon Sep 17 00:00:00 2001 From: "http://www.google.com/profiles/gsvick" Date: Sat, 23 Jan 2010 19:03:32 +0000 Subject: --- doc/forum/Error:_bad_page_name.mdwn | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 doc/forum/Error:_bad_page_name.mdwn diff --git a/doc/forum/Error:_bad_page_name.mdwn b/doc/forum/Error:_bad_page_name.mdwn new file mode 100644 index 000000000..59974ca00 --- /dev/null +++ b/doc/forum/Error:_bad_page_name.mdwn @@ -0,0 +1,5 @@ +I'm trying to use ikiwiki for the first time. In the start, I had problems with installing the package, because I don't have a root account on my server. + +When I solved this, I finally set up my wiki, but whenever I try to edit a page, I get an error: “Error: bad page name”. + +What am I doing wrong? The wiki is at , the setupfile I used at . -- cgit v1.2.3 From 8b2977ea7a78556ace2e14a5d30b48e455e37ad0 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 23 Jan 2010 14:14:34 -0500 Subject: response --- doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn index 9545fda53..14f592fd7 100644 --- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn +++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn @@ -10,6 +10,9 @@ This function takes into account the ikiwiki linking rules when deciding which f > I think the page for [[LinkingRules|ikiwiki/subpage/linkingrules]] should say that ikiwiki **ascends** > the dir. hierarchy when looking for a wikilink, not that it **descends** it. Am I correct? --[[jerojasro]] +>> Conventionally, the root directory is considered to be lower than other +>> directories, so I think the current wording is correct. --[[Joey]] + let me know what you think To enable this functionality, paste the code below in your `.vim/ftplugin/ikiwiki.vim` file -- cgit v1.2.3 From dcc70ca629cf999b43bf32d38980df6381f8f282 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 23 Jan 2010 14:34:31 -0500 Subject: response --- doc/forum/Error:_bad_page_name.mdwn | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/doc/forum/Error:_bad_page_name.mdwn b/doc/forum/Error:_bad_page_name.mdwn index 59974ca00..a16decedb 100644 --- a/doc/forum/Error:_bad_page_name.mdwn +++ b/doc/forum/Error:_bad_page_name.mdwn @@ -1,5 +1,21 @@ -I'm trying to use ikiwiki for the first time. In the start, I had problems with installing the package, because I don't have a root account on my server. +I'm trying to use ikiwiki for the first time. In the start, I had problems +with installing the package, because I don't have a root account on my +server. -When I solved this, I finally set up my wiki, but whenever I try to edit a page, I get an error: “Error: bad page name”. +When I solved this, I finally set up my wiki, but whenever I try to edit a +page, I get an error: “Error: bad page name”. -What am I doing wrong? The wiki is at , the setupfile I used at . +What am I doing wrong? The wiki is at +, the setupfile I used at +. + +> This means that one of the checks that ikiwiki uses to prevent +> editing files with strange or insecure names has fired incorrectly. +> Your setup file seems fine. +> We can figure out what is going wrong through a series of tests: +> +> * Test if your perl has a problem with matching alphanumerics: +> `perl -le 'print int "index"=~/^([-[:alnum:]+\/.:_]+)$/'` +> * Check if something is breaking pruning of disallowed files: +> `perl -le 'use IkiWiki; %config=IkiWiki::defaultconfig(); print ! IkiWiki::file_pruned("index")'` +> --[[Joey]] -- cgit v1.2.3 From a94039601a46c9679aa81ee01f6462f67652b114 Mon Sep 17 00:00:00 2001 From: "http://www.google.com/profiles/gsvick" Date: Sat, 23 Jan 2010 19:55:06 +0000 Subject: --- doc/forum/Error:_bad_page_name.mdwn | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/forum/Error:_bad_page_name.mdwn b/doc/forum/Error:_bad_page_name.mdwn index a16decedb..17979fd13 100644 --- a/doc/forum/Error:_bad_page_name.mdwn +++ b/doc/forum/Error:_bad_page_name.mdwn @@ -19,3 +19,10 @@ What am I doing wrong? The wiki is at > * Check if something is breaking pruning of disallowed files: > `perl -le 'use IkiWiki; %config=IkiWiki::defaultconfig(); print ! IkiWiki::file_pruned("index")'` > --[[Joey]] + +>>Both seem to run fine: + + onderka@atrey:~$ perl -le 'print int "index"=~/^([-[:alnum:]+\/.:_]+)$/' + 1 + onderka@atrey:~$ perl -le 'use IkiWiki; %config=IkiWiki::defaultconfig(); print ! IkiWiki::file_pruned("index")' + 1 -- cgit v1.2.3 From ce6432128253310dd65dea35a6f7f0a258eb621b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 23 Jan 2010 15:26:12 -0500 Subject: response --- doc/forum/Error:_bad_page_name.mdwn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/forum/Error:_bad_page_name.mdwn b/doc/forum/Error:_bad_page_name.mdwn index 17979fd13..a1d6890a6 100644 --- a/doc/forum/Error:_bad_page_name.mdwn +++ b/doc/forum/Error:_bad_page_name.mdwn @@ -26,3 +26,8 @@ What am I doing wrong? The wiki is at 1 onderka@atrey:~$ perl -le 'use IkiWiki; %config=IkiWiki::defaultconfig(); print ! IkiWiki::file_pruned("index")' 1 + +>>> Try installing this [instrumented +>>> version](http://kitenet.net/~joey/tmp/editpage.pm) of +>>> `IkiWiki/Plugin/editpage.pm`, which will add some debugging info +>>> to the error message. --[[Joey]] -- cgit v1.2.3 From c301ce26a4d5d58a6b57b22fc184a763b310b257 Mon Sep 17 00:00:00 2001 From: "http://www.google.com/profiles/gsvick" Date: Sat, 23 Jan 2010 20:46:58 +0000 Subject: --- doc/forum/Error:_bad_page_name.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/forum/Error:_bad_page_name.mdwn b/doc/forum/Error:_bad_page_name.mdwn index a1d6890a6..54fb83532 100644 --- a/doc/forum/Error:_bad_page_name.mdwn +++ b/doc/forum/Error:_bad_page_name.mdwn @@ -31,3 +31,7 @@ What am I doing wrong? The wiki is at >>> version](http://kitenet.net/~joey/tmp/editpage.pm) of >>> `IkiWiki/Plugin/editpage.pm`, which will add some debugging info >>> to the error message. --[[Joey]] + +>>>>When I tried to `make` ikiwiki with this file, I got the error + + ../IkiWiki/Plugin/editpage.pm:101: invalid variable interpolation at "$" -- cgit v1.2.3 From 58eaf27137f57b9a58cec114280125a2c00357e9 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 23 Jan 2010 18:33:13 -0500 Subject: response --- doc/forum/Error:_bad_page_name.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/forum/Error:_bad_page_name.mdwn b/doc/forum/Error:_bad_page_name.mdwn index 54fb83532..401815f7c 100644 --- a/doc/forum/Error:_bad_page_name.mdwn +++ b/doc/forum/Error:_bad_page_name.mdwn @@ -35,3 +35,5 @@ What am I doing wrong? The wiki is at >>>>When I tried to `make` ikiwiki with this file, I got the error ../IkiWiki/Plugin/editpage.pm:101: invalid variable interpolation at "$" + +>>>>> Sorry about that, I've corrected the above file. --[[Joey]] -- cgit v1.2.3 From 5bcbb584134cf5a52dedd498a973691a2a45d10f Mon Sep 17 00:00:00 2001 From: "http://www.google.com/profiles/gsvick" Date: Sun, 24 Jan 2010 00:03:08 +0000 Subject: --- doc/forum/Error:_bad_page_name.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/forum/Error:_bad_page_name.mdwn b/doc/forum/Error:_bad_page_name.mdwn index 401815f7c..23b5e7262 100644 --- a/doc/forum/Error:_bad_page_name.mdwn +++ b/doc/forum/Error:_bad_page_name.mdwn @@ -37,3 +37,5 @@ What am I doing wrong? The wiki is at ../IkiWiki/Plugin/editpage.pm:101: invalid variable interpolation at "$" >>>>> Sorry about that, I've corrected the above file. --[[Joey]] + +>>>>>> Hmm, funny. Now that I reinstalled it with your changed file, it started working. I didn't remember how exactly did I install it the last time, so this time, it seems I did it correctly. Thank you very much for your help. -- cgit v1.2.3 From 4affa37f8b5fdc61e2e07cfb7c8190041a4ffa4e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 23 Jan 2010 21:13:29 -0500 Subject: response --- doc/forum/Error:_bad_page_name.mdwn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/forum/Error:_bad_page_name.mdwn b/doc/forum/Error:_bad_page_name.mdwn index 23b5e7262..70277a1e4 100644 --- a/doc/forum/Error:_bad_page_name.mdwn +++ b/doc/forum/Error:_bad_page_name.mdwn @@ -39,3 +39,8 @@ What am I doing wrong? The wiki is at >>>>> Sorry about that, I've corrected the above file. --[[Joey]] >>>>>> Hmm, funny. Now that I reinstalled it with your changed file, it started working. I didn't remember how exactly did I install it the last time, so this time, it seems I did it correctly. Thank you very much for your help. + +>>>>>>> Well, this makes me suspect you installed an older version of +>>>>>>> ikiwiki and my file, which is from the latest version, included a +>>>>>>> fix for whatever bug you were seeing. If I were you, I'd ensure +>>>>>>> that I have a current version of ikiwiki installed. --[[Joey]] -- cgit v1.2.3 From bcde9b74120d0572d41447d798917ae02134e059 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Sun, 24 Jan 2010 02:52:57 +0000 Subject: new report plugin --- doc/plugins/contrib/report.mdwn | 166 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 doc/plugins/contrib/report.mdwn diff --git a/doc/plugins/contrib/report.mdwn b/doc/plugins/contrib/report.mdwn new file mode 100644 index 000000000..7130bcb5f --- /dev/null +++ b/doc/plugins/contrib/report.mdwn @@ -0,0 +1,166 @@ +[[!template id=plugin name=report author="[[rubykat]]"]] +[[!tag type/meta type/format]] +[[!toc]] +## NAME + +IkiWiki::Plugin::report - Produce templated reports from page field data. + +## SYNOPSIS + + # activate the plugin + add_plugins => [qw{goodstuff report ....}], + + \[[!report template="blog_summary" + pages="blog/*" + sort="mtime"]] + +## DESCRIPTION + +This plugin provides the **report** directive. This enables one to report on +the structured data ("field" values) of multiple pages; the output is formatted +via a template. This depends on the "field" plugin. + +The pages to report on are selected by a PageSpec given by the "pages" +parameter. The template is given by the "template" parameter. +The template expects the data from a single page; it is applied +to each matching page separately, one after the other. + +Additional parameters can be used to fill out the template, in +addition to the "field" values. Passed-in values override the +"field" values. + +There are two places where template files can live. One, as with the +[[plugins/template]] plugin, is in the /templates directory on the wiki. These +templates are wiki pages, and can be edited from the web like other wiki +pages. + +The second place where template files can live is in the global +templates directory (the same place where the page.tmpl template lives). +This is a useful place to put template files if you want to prevent +them being edited from the web, and you don't want to have to make +them work as wiki pages. + +## OPTIONS + +**template**: The template to use for the report. + +**pages**: A PageSpec to determine the pages to report on. + +**sort**: How the matching pages should be sorted. Sorting criteria are separated by spaces. + +The possible values for sorting are: + +* **page**: Sort by the full page ID. +* **pagename**: Sort by the base page name. +* **pagename_natural**: Sort by the base page name, using Sort::Naturally if it is installed. +* **mtime**: Sort by the page modification time. +* **age**: Sort by the page creation time, newest first. + +Any other value is taken to be a field name to sort by. +If a sort value begins with a minus (-) then the order for that field is reversed. + +### Headers + +An additional option is the "headers" option. This is a space-separated +list of field names which are to be used as headers in the report. This +is a way of getting around one of the limitations of HTML::Template, that +is, not being able to do tests such as +"if this-header is not equal to previous-header". + +Instead, that logic is performed inside the plugin. The template is +given parameters "HEADER1", "HEADER2" and so on, for each header. +If the value of a header field is the same as the previous value, +then HEADER**N** is set to be empty, but if the value of the header +field is new, then HEADER**N** is given that value. + +#### Example + +Suppose you're writing a blog in which you record "moods", and you +want to display your blog posts by mood. + + \[[!report template="mood_summary" + pages="blog/*" + sort="Mood Date title" + headers="Mood"]] + +The "mood_summary" template might be like this: + + + ## + + ### + () \[[ + +### Advanced Options + +The following options are used to improve efficiency when dealing +with large numbers of pages; most people probably won't need them. + +**trail**: + +A page or pages to use as a "trail" page. When a trail page is used, +the matching pages are limited to (a subset of) the pages which that +page links to; the "pages" pagespec in this case, rather than selecting +pages from the entire wiki, will select pages from within the set of pages +given by the trail page. + +**doscan**: + +Whether this report should be called in "scan" mode; if it is, then +the pages which match the pagespec are added to the list of links from +this page. This can be used by *another* report by setting this +page to be a "trail" page in *that* report. +It is not possible to use "trail" and "doscan" at the same time. +By default, "doscan" is false. + +## TEMPLATE PARAMETERS + +The templates are in HTML::Template format, just as [[plugins/template]] and +[[ftemplate]] are. The parameters passed in to the template are as follows: + +***fields***: + +The structured data from the current matching page. This includes +"title" and "description" if they are defined. + +***common values***: + +Values known for all pages: "page", "destpage". Also "basename" (the base name of the page). + +***passed-in values***: + +Any additional parameters to the report directive are passed to the +template; a parameter will override the matching "field" value. +For example, if you have a "Mood" field, and you pass Mood="bad" to +the report, then that will be the Mood which is given for the whole +report. + +Generally this is useful if one wishes to make a more generic +template and hide or show portions of it depending on what +values are passed in the report directive call. + +For example, one could have a "hide_mood" parameter which would hide +the "Mood" section of your template when it is true, which one could +use when the Mood is one of the headers. + +***headers***: + +See the section on Headers. + +***first and last***: + +If this is the first page-record in the report, then "first" is true. +If this is the last page-record in the report, then "last" is true. + +## PREREQUISITES + + IkiWiki + IkiWiki::Plugin::field + HTML::Template + Encode + +## DOWNLOAD + +* browse at GitHub: +* git repo at git://github.com/rubykat/ikiplugins.git -- cgit v1.2.3 From 27d2d7115df82908396d460d92857fd0990c556d Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Sun, 24 Jan 2010 02:59:11 +0000 Subject: note that report is now released --- doc/plugins/contrib/getfield/discussion.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/plugins/contrib/getfield/discussion.mdwn b/doc/plugins/contrib/getfield/discussion.mdwn index ce6246034..015e9f5a1 100644 --- a/doc/plugins/contrib/getfield/discussion.mdwn +++ b/doc/plugins/contrib/getfield/discussion.mdwn @@ -26,3 +26,6 @@ Like you mentioned in [[ftemplate]] IIRC, it'll only work on the same page. If i > -- [[users/KathrynAndersen]] >> Ooh, sounds nice :) . --[[SR|users/simonraven]] + +>>> I've now released the [[plugins/contrib/report]] plugin. I've been using it on my site; the holdup on releasing was because I hadn't yet written the docs for it. I hope you find it useful. +>>> -- [[users/KathrynAndersen]] -- cgit v1.2.3 From 29c475af4da5a50a857b94ff131313a05b1d7221 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Sun, 24 Jan 2010 03:06:06 +0000 Subject: link to site --- doc/users/KathrynAndersen.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/users/KathrynAndersen.mdwn b/doc/users/KathrynAndersen.mdwn index 14fabbb01..16cb390c4 100644 --- a/doc/users/KathrynAndersen.mdwn +++ b/doc/users/KathrynAndersen.mdwn @@ -1,6 +1,7 @@ * aka [[rubykat]] * Currently an active [PmWiki](http://www.pmwiki.org) user, but investigating changing over to ikiwiki (if I can write the plugins I need). * +* * Has written the following plugins: -- cgit v1.2.3 From f6b2edef642ccda83a4c96aeeb2e146202707a67 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Sun, 24 Jan 2010 09:38:40 +0000 Subject: new release of getfield; can now get values from other pages as well as current page --- doc/plugins/contrib/getfield.mdwn | 60 ++++++++++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 7 deletions(-) diff --git a/doc/plugins/contrib/getfield.mdwn b/doc/plugins/contrib/getfield.mdwn index 929f70485..0a92894f1 100644 --- a/doc/plugins/contrib/getfield.mdwn +++ b/doc/plugins/contrib/getfield.mdwn @@ -18,13 +18,13 @@ use per-page structured data, where each page is treated like a record, and the structured data are fields in that record. This can include the meta-data for that page, such as the page title. -This plugin is meant to be used in conjunction with the **field** plugin. +This plugin is meant to be used in conjunction with the [[field]] plugin. ### USAGE One can get the value of a field by using special markup in the page. This does not use directive markup, in order to make it easier to -use the markup inside other directives. There are two forms: +use the markup inside other directives. There are four forms: * {{$*fieldname*}} @@ -39,6 +39,26 @@ use the markup inside other directives. There are two forms:

My Long and Complicated Title With Potential For Spelling Mistakes

+* {{$*pagename*#*fieldname*}} + + This queries the value of *fieldname* for the page *pagename*. + + For example: + + On PageFoo: + + \[[!meta title="I Am Page Foo"]] + + Stuff about Foo. + + On PageBar: + + For more info, see \[[{{$PageFoo#title}}|PageFoo]]. + + When PageBar is displayed: + + <p>For more info, see <a href="PageFoo">I Am Page Foo</a>.</p> + * {{+$*fieldname*+}} This queries the value of *fieldname* for the destination page; that is, @@ -68,17 +88,43 @@ use the markup inside other directives. There are two forms:

I Am Page B

Stuff about A.

+* {{+$*pagename*#*fieldname*+}} + + This queries the value of *fieldname* for the page *pagename*; the + only difference between this and {{$*pagename*#*fieldname*}} is + that the full name of *pagename* is calculated relative to the + destination page rather than the source page. + + I can't really think of a reason why this should be needed, but + this format has been added for completeness. + +### No Value Found + +If no value is found for the given field, then the field name is returned. + +For example: + +On PageFoo: + + \[[!meta title="Foo"]] + My title is {{$title}}. + + My description is {{$description}}. + +When PageFoo is displayed: + +

My title is Foo.

+ +

My description is description.

+ +This is because "description" hasn't been defined for that page. + ### More Examples Listing all the sub-pages of the current page: \[[!map pages="{{$page}}/*"]] -### LIMITATIONS - -One cannot query the values of fields on pages other than the current -page or the destination page. - ## DOWNLOAD * browse at GitHub: -- cgit v1.2.3 From e9ee3d7d85e792ee6720696abe62f25cdd7f945a Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Sun, 24 Jan 2010 09:41:44 +0000 Subject: note new version of getfield --- doc/plugins/contrib/getfield/discussion.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/plugins/contrib/getfield/discussion.mdwn b/doc/plugins/contrib/getfield/discussion.mdwn index 015e9f5a1..5f7fffead 100644 --- a/doc/plugins/contrib/getfield/discussion.mdwn +++ b/doc/plugins/contrib/getfield/discussion.mdwn @@ -19,6 +19,7 @@ Like you mentioned in [[ftemplate]] IIRC, it'll only work on the same page. If i >>>>> What about using {{pagename#fieldname}}? The meaning of the hash in URLs sort of fits with what is needed here (reference to a 'named' thing within the page) and it won't conflict with actual hash usages (unless we expect different named parts of pages to define different values for the same field ...) >>>>> -- [[Oblomov]] >>>>>> That's a good one too. --[[simonraven]] +>>>>>>> Done! I used {{$*pagename*#*fieldname*}} for the format. -- [[users/KathrynAndersen]] > I'm also working on a "report" plugin, which will basically apply a template like [[ftemplate]] does, but to a list of pages given from a pagespec, rather than the current page. -- cgit v1.2.3 From 2f4ae4fa057bd46001453b5e70f56b4e2ad77b83 Mon Sep 17 00:00:00 2001 From: HelenOliver Date: Mon, 25 Jan 2010 04:21:27 +0000 Subject: added references --- doc/blog.mdwn | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/blog.mdwn b/doc/blog.mdwn index c4a379fdb..222351498 100644 --- a/doc/blog.mdwn +++ b/doc/blog.mdwn @@ -1,4 +1,8 @@ -Ikiwiki allows turning any page into a weblog, by using the +Ikiwiki allows turning any page into a weblog, or any information reflected on a [research paper](http://www.superiorpapers.com/) by using the [[ikiwiki/directive/inline]] [[ikiwiki/directive]]. For example: \[[!inline pages="blog/* and !*/Discussion" show="10" rootpage="blog"]] + +For additional information or [homework help](http://www.superiorpapers.com/homework.php) about ikiwiki, consult these online information: +1. [Ikiwiki on Wikipedia](http://en.wikipedia.org/wiki/Ikiwiki) +2. [Debian package of ikiwiki](http://packages.debian.org/sid/ikiwiki) -- cgit v1.2.3 From f89b6f49d021762de8a260e92a4a3787cbf89b32 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 24 Jan 2010 23:32:19 -0500 Subject: Revert spam --- doc/blog.mdwn | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/doc/blog.mdwn b/doc/blog.mdwn index 222351498..c4a379fdb 100644 --- a/doc/blog.mdwn +++ b/doc/blog.mdwn @@ -1,8 +1,4 @@ -Ikiwiki allows turning any page into a weblog, or any information reflected on a [research paper](http://www.superiorpapers.com/) by using the +Ikiwiki allows turning any page into a weblog, by using the [[ikiwiki/directive/inline]] [[ikiwiki/directive]]. For example: \[[!inline pages="blog/* and !*/Discussion" show="10" rootpage="blog"]] - -For additional information or [homework help](http://www.superiorpapers.com/homework.php) about ikiwiki, consult these online information: -1. [Ikiwiki on Wikipedia](http://en.wikipedia.org/wiki/Ikiwiki) -2. [Debian package of ikiwiki](http://packages.debian.org/sid/ikiwiki) -- cgit v1.2.3 From 73253d6925ef84f9dd9e72919f8a136b93a0d277 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 26 Jan 2010 22:26:50 -0500 Subject: template: Preprocess parameters before htmlizing. Consider a template like: [[!template type=note text=""" [[!inline pages="*foo*"]] """]] The text parameter is htmlized before being passed into the template (in case the template wraps it in a that prevents markdown from htmlizing it later). But, when markdown sees "*foo*", it turns that into foo. Later, when preprocessing the inline directive, that leads to suprising results. To fix this, I made template parameters be preprocessed (and filtered) before being htmlized. Note that I left in the preprocessing (and filtering) of the template output at the end. That's still relevant when the template itself contains preprocessor directives. --- IkiWiki/Plugin/template.pm | 19 +++++++++++-------- debian/changelog | 6 ++++++ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/IkiWiki/Plugin/template.pm b/IkiWiki/Plugin/template.pm index b6097bb49..39d9667f9 100644 --- a/IkiWiki/Plugin/template.pm +++ b/IkiWiki/Plugin/template.pm @@ -25,6 +25,10 @@ sub getsetup () { sub preprocess (@) { my %params=@_; + # This needs to run even in scan mode, in order to process + # links and other metadata included via the template. + my $scan=! defined wantarray; + if (! exists $params{id}) { error gettext("missing id parameter") } @@ -58,24 +62,23 @@ sub preprocess (@) { $params{basename}=IkiWiki::basename($params{page}); foreach my $param (keys %params) { + my $value=IkiWiki::preprocess($params{page}, $params{destpage}, + IkiWiki::filter($params{page}, $params{destpagea}, + $params{$param}), $scan); if ($template->query(name => $param)) { $template->param($param => IkiWiki::htmlize($params{page}, $params{destpage}, pagetype($pagesources{$params{page}}), - $params{$param})); + $value)); } if ($template->query(name => "raw_$param")) { - $template->param("raw_$param" => $params{$param}); + $template->param("raw_$param" => $value); } } - # This needs to run even in scan mode, in order to process - # links and other metadata includes via the template. - my $scan=! defined wantarray; - return IkiWiki::preprocess($params{page}, $params{destpage}, - IkiWiki::filter($params{page}, $params{destpage}, - $template->output), $scan); + IkiWiki::filter($params{page}, $params{destpage}, + $template->output), $scan); } 1 diff --git a/debian/changelog b/debian/changelog index 4e76b1d69..0ec696d3c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +ikiwiki (3.20100123) UNRELEASED; urgency=low + + * template: Preprocess parameters before htmlizing. + + -- Joey Hess Tue, 26 Jan 2010 22:25:33 -0500 + ikiwiki (3.20100122) unstable; urgency=low * inline: Avoid showing edit links if page editing is disabled. -- cgit v1.2.3 From e269fbd7af187b986c9e52ae8459b57d70c64bcd Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 28 Jan 2010 04:35:58 -0500 Subject: new repo --- doc/git.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/git.mdwn b/doc/git.mdwn index 5167ad004..30fed6afc 100644 --- a/doc/git.mdwn +++ b/doc/git.mdwn @@ -56,7 +56,7 @@ into [[Joey]]'s working tree. This is recommended. :-) * [[ktf]] `git://github.com/ktf/ikiwiki.git` * [[tove]] `git://github.com/tove/ikiwiki.git` * [[GiuseppeBilotta]] `git://git.oblomov.eu/ikiwiki` - +* [[roktas]] `git://github.com/roktas/ikiwiki.git`` ## branches -- cgit v1.2.3 From bcf74bd8f8b72abb6466fef1b6848dc4cb5eb7b2 Mon Sep 17 00:00:00 2001 From: MariaJackson Date: Thu, 28 Jan 2010 09:58:20 +0000 Subject: --- doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn b/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn index 683a3f8ac..8e1ab2e56 100644 --- a/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn +++ b/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn @@ -8,6 +8,7 @@ there are some variations on the approach that might be useful: * Or, querying the mysql back-end to get the names * using WWW::MediaWiki for importing/exporting pages from the wiki, instead of Special::Export + * use pool covers Also, some detail on converting mediawiki transclusion to ikiwiki inlines... -- cgit v1.2.3 From 7f462b658953c7907d942e71a17b53a678b2ccc6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 28 Jan 2010 05:23:28 -0500 Subject: revert spam --- doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn b/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn index 8e1ab2e56..683a3f8ac 100644 --- a/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn +++ b/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn @@ -8,7 +8,6 @@ there are some variations on the approach that might be useful: * Or, querying the mysql back-end to get the names * using WWW::MediaWiki for importing/exporting pages from the wiki, instead of Special::Export - * use pool covers Also, some detail on converting mediawiki transclusion to ikiwiki inlines... -- cgit v1.2.3 From f91d79f469956c423373c8747c92218c668f0ba8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 28 Jan 2010 21:07:23 -0500 Subject: img: Fix a bug that could taint @links with undef values. --- IkiWiki/Plugin/img.pm | 4 ++++ debian/changelog | 1 + 2 files changed, 5 insertions(+) diff --git a/IkiWiki/Plugin/img.pm b/IkiWiki/Plugin/img.pm index c1048d3c9..82db15a7e 100644 --- a/IkiWiki/Plugin/img.pm +++ b/IkiWiki/Plugin/img.pm @@ -26,6 +26,10 @@ sub preprocess (@) { my ($image) = $_[0] =~ /$config{wiki_file_regexp}/; # untaint my %params=@_; + if (! defined $image) { + error("bad image filename"); + } + if (exists $imgdefaults{$params{page}}) { foreach my $key (keys %{$imgdefaults{$params{page}}}) { if (! exists $params{$key}) { diff --git a/debian/changelog b/debian/changelog index 0ec696d3c..5d27b7af0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low * template: Preprocess parameters before htmlizing. + * img: Fix a bug that could taint @links with undef values. -- Joey Hess Tue, 26 Jan 2010 22:25:33 -0500 -- cgit v1.2.3 From 5ba9a0ae9797ad5e147985f3ea450a21bfe28667 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 28 Jan 2010 22:41:06 -0500 Subject: added Anna and Mark's bevvy of websites --- doc/ikiwikiusers.mdwn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 0ebab313d..aa4d9b96a 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -50,6 +50,7 @@ Projects & Organizations * [The XCB library](http://xcb.freedesktop.org/) * [The Philolexian Society of Columbia University](http://www.columbia.edu/cu/philo/) * [Fachschaft Informatik HU Berlin](http://fachschaft.informatik.hu-berlin.de/) +* [Wetknee Books](http://www.wetknee.com/) Personal sites and blogs ======================== @@ -131,6 +132,10 @@ Personal sites and blogs * [Jimmy Tang - personal blog and wiki](http://www.sgenomics.org/~jtang) * [Nico Schottelius' homepage](http://www.nico.schottelius.org) * [Andreas Zwinkaus homepage](http://beza1e1.tuxen.de) +* [Walden Effect](http://waldeneffect.org) +* [Avian Aqua Miser](http://www.avianaquamiser.com/) +* [Cosmic Cookout](http://www.cosmiccookout.com/) +* [Backyard Deer Deterrents](http://www.backyarddeer.com/) Please feel free to add your own ikiwiki site! -- cgit v1.2.3 From 3f822ed95fec3a9396cd4afe384ccf5067b82f2c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 28 Jan 2010 22:41:35 -0500 Subject: iainmclaren.com not using ikiwiki now --- doc/ikiwikiusers.mdwn | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index aa4d9b96a..153a7fd92 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -82,7 +82,6 @@ Personal sites and blogs * [Proper Treatment 正當作法](http://conway.rutgers.edu/~ccshan/wiki/) * [lost scraps](http://web.mornfall.net), pages/blog of Petr Ročkai aka mornfall * [Ronan Le Hy's blog](http://bayesien.org), in French. -* . * [formorers blog and website](http://www.formorer.de/webwiki/) * [Mark Jaroski's blog](http://movemearound.org/) * I keep my personal project notes and specs in a private ikiwiki - it's the perfect tool for this task. - [the daniel](http://neoglam.com) -- cgit v1.2.3 From ca76d8f38beccfeba40d52e1d8fd2362cada3197 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 28 Jan 2010 22:43:23 -0500 Subject: oh, we didn't convert this one yet. --- doc/ikiwikiusers.mdwn | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 153a7fd92..f750fb4b0 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -134,7 +134,6 @@ Personal sites and blogs * [Walden Effect](http://waldeneffect.org) * [Avian Aqua Miser](http://www.avianaquamiser.com/) * [Cosmic Cookout](http://www.cosmiccookout.com/) -* [Backyard Deer Deterrents](http://www.backyarddeer.com/) Please feel free to add your own ikiwiki site! -- cgit v1.2.3 From a2ee2aa9c733b2a8df1fc564e5634abe7d209c05 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 29 Jan 2010 16:05:45 -0500 Subject: note on filtering --- doc/tips/add_chatterbox_to_blog.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/tips/add_chatterbox_to_blog.mdwn b/doc/tips/add_chatterbox_to_blog.mdwn index aa35b9331..e07e36b07 100644 --- a/doc/tips/add_chatterbox_to_blog.mdwn +++ b/doc/tips/add_chatterbox_to_blog.mdwn @@ -18,4 +18,7 @@ from there, like I have on [my blog](http://kitenet.net/~joey/blog/) show=5 feeds=no]] """]] +* To filter out `@-replies`, append "and !*@*" to the [[ikiwiki/PageSpec]]. + The same technique can be used for other filtering. + Note: Works best with ikiwiki 3.10 or better. -- cgit v1.2.3 From e9b349fdb0d9bcd3ff8389b4cbf6d5f14e84a740 Mon Sep 17 00:00:00 2001 From: Javier Rojas Date: Sat, 30 Jan 2010 21:30:14 -0500 Subject: testing push --- .../discussion.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn index 183a8ef55..62f853f8c 100644 --- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn +++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn @@ -8,3 +8,5 @@ That's not going to work in all situations; for example, with an ikiwiki which u * an *additional* git repository cloned from the bare repository, which is used for making changes from the command-line rather than the web. It is this repository in which one would be editing files with vim, and *this* repository does not have a .ikiwiki directory in it. It does have a .git directory in the root, however, so I suppose you could use that as a method of detection of a root directory, but of course that would only work for git repositories. -- [[KathrynAndersen]] + + -- cgit v1.2.3 From a4611bdebdf8f55bd163b7b3d38366cd2998d931 Mon Sep 17 00:00:00 2001 From: Javier Rojas Date: Sat, 30 Jan 2010 21:35:12 -0500 Subject: reply to forum discussion --- .../discussion.mdwn | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn index 62f853f8c..99e83b50f 100644 --- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn +++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn @@ -9,4 +9,12 @@ That's not going to work in all situations; for example, with an ikiwiki which u -- [[KathrynAndersen]] +You are completely right; all of my wikis are compiled both locally and +remotely, and so the local repo also has a `.ikiwiki` folder. And that's not the +"usual" setup. +checking for a `.git` dir would not work when the wiki's source files aren't +located at the root of the repo. + +So, besides of doing a `touch .ikiwiki` at the root of the wiki in your local +repo, do you see any alternative? -- cgit v1.2.3 From 91cb8d75de2c0a8a57d79935aab7bde381c70b3b Mon Sep 17 00:00:00 2001 From: Javier Rojas Date: Sat, 30 Jan 2010 21:38:47 -0500 Subject: missing signature --- .../discussion.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn index 99e83b50f..7b323860b 100644 --- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn +++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn @@ -18,3 +18,5 @@ located at the root of the repo. So, besides of doing a `touch .ikiwiki` at the root of the wiki in your local repo, do you see any alternative? + +-- [[jerojasro]] -- cgit v1.2.3 From 03bb16cf180f0d3af713b4b54a71787aa13fb9af Mon Sep 17 00:00:00 2001 From: Javier Rojas Date: Sun, 31 Jan 2010 11:35:33 -0500 Subject: moved discussion to the forum main page --- ...of_wiki_pages_on_local_filesystem_with_vim.mdwn | 22 ++++++++++++++++++++++ .../discussion.mdwn | 22 ---------------------- 2 files changed, 22 insertions(+), 22 deletions(-) delete mode 100644 doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn index 14f592fd7..fd9f67ee4 100644 --- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn +++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn @@ -15,6 +15,28 @@ This function takes into account the ikiwiki linking rules when deciding which f let me know what you think +> " NOTE: the root of the wiki is considered the first directory that contains a +> " .ikiwiki folder, except $HOME/.ikiwiki (the usual ikiwiki libdir) +> +> That's not going to work in all situations; for example, with an ikiwiki which uses git as the backend, the normal setup is that one has +> +> * a bare git repository +> * a git repository which ikiwiki builds the wiki from (which has a .ikiwiki directory in it) +> * an *additional* git repository cloned from the bare repository, which is used for making changes from the command-line rather than the web. It is this repository in which one would be editing files with vim, and *this* repository does not have a .ikiwiki directory in it. It does have a .git directory in the root, however, so I suppose you could use that as a method of detection of a root directory, but of course that would only work for git repositories. +> +> -- [[KathrynAndersen]] +> +>> You are completely right; all of my wikis are compiled both locally and +>> remotely, and so the local repo also has a `.ikiwiki` folder. And that's not the +>> "usual" setup. +>> +>> checking for a `.git` dir would not work when the wiki's source files aren't +>> located at the root of the repo. +>> +>> So, besides of doing a `touch .ikiwiki` at the root of the wiki in your local +>> repo, do you see any alternative? +>> +>> -- [[jerojasro]] To enable this functionality, paste the code below in your `.vim/ftplugin/ikiwiki.vim` file " returns the directory which can be considered the root of the wiki the diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn deleted file mode 100644 index 7b323860b..000000000 --- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim/discussion.mdwn +++ /dev/null @@ -1,22 +0,0 @@ - " NOTE: the root of the wiki is considered the first directory that contains a - " .ikiwiki folder, except $HOME/.ikiwiki (the usual ikiwiki libdir) - -That's not going to work in all situations; for example, with an ikiwiki which uses git as the backend, the normal setup is that one has - -* a bare git repository -* a git repository which ikiwiki builds the wiki from (which has a .ikiwiki directory in it) -* an *additional* git repository cloned from the bare repository, which is used for making changes from the command-line rather than the web. It is this repository in which one would be editing files with vim, and *this* repository does not have a .ikiwiki directory in it. It does have a .git directory in the root, however, so I suppose you could use that as a method of detection of a root directory, but of course that would only work for git repositories. - --- [[KathrynAndersen]] - -You are completely right; all of my wikis are compiled both locally and -remotely, and so the local repo also has a `.ikiwiki` folder. And that's not the -"usual" setup. - -checking for a `.git` dir would not work when the wiki's source files aren't -located at the root of the repo. - -So, besides of doing a `touch .ikiwiki` at the root of the wiki in your local -repo, do you see any alternative? - --- [[jerojasro]] -- cgit v1.2.3 From 1e0b724bac67d3f31bfb3620876937ec4291a326 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 31 Jan 2010 14:03:19 -0500 Subject: document that state variables are not available in the checkconfig hook --- doc/plugins/write.mdwn | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 45f083b42..082f0e38f 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -68,20 +68,21 @@ In roughly the order they are called. This allows for plugins to perform their own processing of command-line options and so add options to the ikiwiki command line. It's called during -command line processing, with @ARGV full of any options that ikiwiki was +command line processing, with `@ARGV` full of any options that ikiwiki was not able to process on its own. The function should process any options it -can, removing them from @ARGV, and probably recording the configuration -settings in %config. It should take care not to abort if it sees +can, removing them from `@ARGV`, and probably recording the configuration +settings in `%config`. It should take care not to abort if it sees an option it cannot process, and should just skip over those options and -leave them in @ARGV. +leave them in `@ARGV`. ### checkconfig hook(type => "checkconfig", id => "foo", call => \&checkconfig); This is useful if the plugin needs to check for or modify ikiwiki's -configuration. It's called early in the startup process. The -function is passed no values. It's ok for the function to call +configuration. It's called early in the startup process. `%config` +is populated at this point, but other state has not yet been loaded. +The function is passed no values. It's ok for the function to call `error()` if something isn't configured right. ### refresh -- cgit v1.2.3 From 541406818b0ebc0023600db2d6e3fadaec7f9b41 Mon Sep 17 00:00:00 2001 From: "http://jmtd.livejournal.com/" Date: Mon, 1 Feb 2010 11:09:27 +0000 Subject: also potwiki --- doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn index fd9f67ee4..c29985497 100644 --- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn +++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn @@ -103,3 +103,5 @@ To enable this functionality, paste the code below in your `.vim/ftplugin/ikiwik endfunction setlocal includeexpr=FileForWikiLink(v:fname) + +> Interesting. I was at one point looking at "potwiki.vim", which implements a local wiki and follows CamelCase links, creating new files where necessary etc., to see if it could be adapted for ikiwiki (See [[tips/vim syntax highlighting/discussion]]). I didn't get anywhere. -- [[Jon]] -- cgit v1.2.3 From 438cb249a3f2bc9e04ea4b50d247daa7a43c281d Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawn1lGvpPZ8dpuLSPLPa-jqpMef2KqeB1qI" Date: Mon, 1 Feb 2010 14:32:21 +0000 Subject: --- ...of_wiki_pages_on_local_filesystem_with_vim.mdwn | 85 +++++----------------- 1 file changed, 20 insertions(+), 65 deletions(-) diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn index c29985497..261f1579f 100644 --- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn +++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn @@ -37,71 +37,26 @@ let me know what you think >> repo, do you see any alternative? >> >> -- [[jerojasro]] -To enable this functionality, paste the code below in your `.vim/ftplugin/ikiwiki.vim` file - " returns the directory which can be considered the root of the wiki the - " current buffer belongs to, or an empty string if we are not inside an - " ikiwiki wiki - " - " NOTE: the root of the wiki is considered the first directory that contains a - " .ikiwiki folder, except $HOME/.ikiwiki (the usual ikiwiki libdir) - " - " if you can think of a better heuristic to get ikiwiki's root, let me know! - function! GetWikiRootDir() - let check_str = '%:p:h' - let pos_wiki_root = expand(check_str) - while pos_wiki_root != '/' - if isdirectory(pos_wiki_root . '/.ikiwiki') && pos_wiki_root != $HOME - return pos_wiki_root - endif - let check_str = check_str . ':h' - let pos_wiki_root = expand(check_str) - endwhile - if isdirectory('/.ikiwiki') - return '/' - endif - return '' - endfunction - - " This function searches for a .mdwn file (.mdwn) using the ikiwiki - " WikiLink rules and returns its full path. - " - " The rules are the following - " - " if the filename starts with '/', use as base dir the root directory of the - " wiki - " - " if not: - " - " try first .//.mdwn - " then for ./.mdwn - " then for /.mdwn - " - " return the first one that exists - " - " the base path (. above) is the directory that contains the current buffer - " - function! FileForWikiLink(name) - let target_fname=a:name . ".mdwn" - let wikiroot_dir = GetWikiRootDir() - if match(target_fname, '^/') >= 0 - return wikiroot_dir . target_fname - endif - let subdir_file = expand('%:p:r') . "/" . target_fname - let currdir_file = expand('%:p:h') . "/" . target_fname - let wikiroot_file = wikiroot_dir . "/" . target_fname - if filewritable(subdir_file) - return subdir_file - endif - if filewritable(currdir_file) - return currdir_file - endif - if filewritable(wikiroot_file) - return wikiroot_file - endif - return a:name - endfunction - - setlocal includeexpr=FileForWikiLink(v:fname) +well. I've rewritten the whole thing, to take into account: + + * file matching ignoring case (MyPage matches mypage.mdwn) + * checking all the way down (up) to the root of the wiki (if there is a link `\[[foo]]` on `a/b/page`), + try `a/b/page/foo`, then `a/b/foo`, and so on, up to `foo` + * the alternate name for a page: when looking for the file for `\[[foo]]`, try both `foo.mdwn` and `foo/index.mdwn` + +you can find the file [here](http://git.devnull.li/cgi-bin/gitweb.cgi?p=vim-jerojasro.git;a=blob;f=.vim/ftplugin/ikiwiki_nav.vim;hb=HEAD). To use it, place it in `$HOME/.vim/ftplugin`. After that, hitting `` (Enter) in normal mode over a wikilink will take you to that page, if it exists. + +the plugin has, as of now, two problems: + + * doesn't work with wikilinks that take more than one line (though this isn't really that bad) + * it assumes that the root of the wiki is the first directory down the filesystem hierarchy that + has a `.ikiwiki` folder on it. If your copy of the wiki doesn't have it, you must create it for + the plugin to work + +-- [[jerojasro]] > Interesting. I was at one point looking at "potwiki.vim", which implements a local wiki and follows CamelCase links, creating new files where necessary etc., to see if it could be adapted for ikiwiki (See [[tips/vim syntax highlighting/discussion]]). I didn't get anywhere. -- [[Jon]] + +>> when I wrote the plugin I also considered the possibility of creating files (and their dirs, if necessary) +>> from new wikilinks; the changes needed to get that working are fairly small -- [[jerojasro]] -- cgit v1.2.3 From 49d8c5b821743355fa60b30e1b2b456c44aaa221 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 1 Feb 2010 15:18:53 -0500 Subject: setup automator: Configure Term::Readline to use bold for prompt, rather than default underline. Closes: #517656 --- IkiWiki/Setup/Automator.pm | 1 + debian/changelog | 2 ++ 2 files changed, 3 insertions(+) diff --git a/IkiWiki/Setup/Automator.pm b/IkiWiki/Setup/Automator.pm index 7af93e73c..9fee4dcb7 100644 --- a/IkiWiki/Setup/Automator.pm +++ b/IkiWiki/Setup/Automator.pm @@ -15,6 +15,7 @@ sub ask ($$) { my ($question, $default)=@_; my $r=Term::ReadLine->new("ikiwiki"); + $r->ornaments("md,me"); $r->readline(encode_utf8($question)." ", $default); } diff --git a/debian/changelog b/debian/changelog index 5d27b7af0..8e01950a8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,8 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low * template: Preprocess parameters before htmlizing. * img: Fix a bug that could taint @links with undef values. + * setup automator: Configure Term::Readline to use bold for prompt, rather + than default underline. Closes: #517656 -- Joey Hess Tue, 26 Jan 2010 22:25:33 -0500 -- cgit v1.2.3 From f963700a4f418f3498c8d855b5ce88d951391867 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 1 Feb 2010 15:34:10 -0500 Subject: ready to pull, and thoughts --- ...of_wiki_pages_on_local_filesystem_with_vim.mdwn | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn index 261f1579f..1cb5ed27e 100644 --- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn +++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn @@ -60,3 +60,36 @@ the plugin has, as of now, two problems: >> when I wrote the plugin I also considered the possibility of creating files (and their dirs, if necessary) >> from new wikilinks; the changes needed to get that working are fairly small -- [[jerojasro]] + +> Seems about ready for me to think about pulling it into ikiwiki +> alongside [[tips/vim_syntax_highlighting/ikiwiki.vim]]. If you'll +> please slap a license on it. :) --[[Joey]] +> +> Also, I have a possible other approach for finding ikiwiki's root. One +> could consider that any subdirectory of an ikiwiki wiki is itself +> a standalone wiki, though probably one missing a toplevel index page. +> The relative wikilinks work such that this assumption makes sense; +> you can build any subdirectory with ikiwiki and probably get something +> reasonable with links that work, etc. +> +> So, if that's the case, then one could say that the directory that the +> user considers to be the toplevel of their wiki is really also a subwiki, +> enclosed in a succession of parents that go all the way down to the root +> directory (or alternatively, to the user's home directory). I think that +> logically makes some sense. +> +> And if that's the case, you can resolve an absolute link by looking for +> the page closest to the root that matches the link. +> +> It may even make sense to change ikiwiki's own handling of "absolute" +> links to work that way. But even without changing ikiwiki, I think it +> would be a reasonable thing for vim to do. It would only fail in two +> unusual circumstances: +> +> 1. There is a file further down, outside what the user considers +> the wiki, that matches. Say a `$HOME/index.mdwn` +> 2. An absolute link is broken in that the page linked to does +> not exist in the root of the wiki. But it does exist in a subdir, +> and vim would go to that file. +> +> --[[Joey]] -- cgit v1.2.3 From b30fd6327966c4591c76041968b375b04c7e8982 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 1 Feb 2010 16:06:51 -0500 Subject: thanks schmonz for your kind donation --- doc/tipjar.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/tipjar.mdwn b/doc/tipjar.mdwn index 87a497fd1..b725a2eff 100644 --- a/doc/tipjar.mdwn +++ b/doc/tipjar.mdwn @@ -15,6 +15,7 @@ Thanks to the following people for their kind contributions: * Mick Pollard * Nico Schottelius * Jon Dowland +* Amitai Schlair (Note that this page is locked to prevent anyone from tampering with the PayPal button. If you prefer your donation *not* be listed here, let [[Joey]] know.) -- cgit v1.2.3 From deb0bc8bd57bc74709ecb12de36a9cb96c684a93 Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Tue, 2 Feb 2010 02:56:06 -0800 Subject: New todo item for wrapperuser configuration option --- doc/todo/wrapperuser.mdwn | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 doc/todo/wrapperuser.mdwn diff --git a/doc/todo/wrapperuser.mdwn b/doc/todo/wrapperuser.mdwn new file mode 100644 index 000000000..4c42b046f --- /dev/null +++ b/doc/todo/wrapperuser.mdwn @@ -0,0 +1,7 @@ +ikiwiki's .setup file can specify wrappergroup, and ikiwiki will set the group +of the wrappers accordingly. Having had people encounter difficulty before +when trying to do the same thing with users (for instance, making all wrappers +6755 ikiwiki:ikiwiki), I think it would help to have "wrapperuser". This could +only actually take effect if building the wrappers as root (not really the best +plan), but ikiwiki could at least warn if wrapperuser does not match the user +the wrapper will end up with. -- cgit v1.2.3 From 05b99e3cfa8c9044d18d5b07aec24fff555f2889 Mon Sep 17 00:00:00 2001 From: David Riebenbauer Date: Tue, 2 Feb 2010 13:54:51 +0100 Subject: Document git branch for automatically creating tag pages. --- ...o-create_tag_pages_according_to_a_template.mdwn | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index f1d33114f..95710ced0 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -123,3 +123,40 @@ On the second extra pass, it doesn't notice that it has to update the "?"-link. } is not satisfied for the newly created tag page. I shall put debug msgs into Render.pm to find out better how it works. --Ivan Z. + +--- + +I've made another attempt at fixiing this + +The current progress can be found at my [git repository][gitweb] on branch +`autotag`: + + git://git.liegesta.at/git/ikiwiki + +[gitweb]: http://git.liegesta.at/?p=ikiwiki.git;a=shortlog;h=refs/heads/autotag (gitweb for branch autotag) + +It's not entirely finished yet, but already quite usable. Testing and comments +on code quality, implementation details, as well as other patches would be +appreciated. + +Here's what it does right now: + +* enabled by setting `tag_autocreate=1` in the configuration. +* Tag pages will be created in `tagbase` from the template `autotag.tmpl`. +* Will correctly render all links, and dependencies. Well, AFAIK. +* When a tag page is deleted it will automatically recreated from template. (I +consider this a feature, not a bug) +* Requires a rebuild on first use. +* Adds a function `add_autofile()` to the plugin API, to do all this. + +Todo/Bugs: + +* Will still create a page even if there's a page other than `$tag` under +`tagbase` satisfying the tag link. +* Call from `IkiWiki.pm` to `Render.pm`, which adds a module dependency in the +wrong direction. +* Add files to RCS. +* Unit tests. +* Proper documentation. + +--[[David_Riebenbauer]] -- cgit v1.2.3 From 4af4d26582f0c2b915d7102fb4a604b176385748 Mon Sep 17 00:00:00 2001 From: David Riebenbauer Date: Sat, 30 Jan 2010 10:25:10 +0100 Subject: Make srcfile() return undef, if the file isn't there. This has the advantage that it's now possible to check for the existence of a sourcefile with that function. --- IkiWiki.pm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index b8e599928..cb1c46a68 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -743,7 +743,10 @@ sub srcfile_stat { } sub srcfile ($;$) { - return (srcfile_stat(@_))[0]; + if (my @stat=srcfile_stat(@_)) { + return $stat[0]; + } + return undef } sub add_underlay ($) { -- cgit v1.2.3 From f3abeac919c4736429bd3362af6edf51ede8e7fe Mon Sep 17 00:00:00 2001 From: David Riebenbauer Date: Sat, 30 Jan 2010 18:12:01 +0100 Subject: Code deduplication fin find_src_files() This also has the advantage that I can use the resulting new function elsewhere. --- IkiWiki/Render.pm | 59 +++++++++++++++++++++++++------------------------------ 1 file changed, 27 insertions(+), 32 deletions(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 3ebb1a324..44b2fb9c2 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -280,6 +280,27 @@ sub srcdir_check () { } +sub verify_src_file ($$) { + my $file=decode_utf8(shift); + my $dir=shift; + + return if -l $file || -d $file; + $file=~s/^\Q$dir\E\/?//; + return if ! length $file; + my $page = pagename($file); + if (! exists $pagesources{$page} && + file_pruned($file)) { + $File::Find::prune=1; + return; + } + + my ($f) = $file =~ /$config{wiki_file_regexp}/; # untaint + if (! defined $f) { + warn(sprintf(gettext("skipping bad filename %s"), $file)."\n"); + } + return ($file,$page,$f); +} + sub find_src_files () { my @files; my %pages; @@ -288,22 +309,9 @@ sub find_src_files () { find({ no_chdir => 1, wanted => sub { - my $file=decode_utf8($_); - $file=~s/^\Q$config{srcdir}\E\/?//; - return if -l $_ || -d _ || ! length $file; - my $page = pagename($file); - if (! exists $pagesources{$page} && - file_pruned($file)) { - $File::Find::prune=1; - return; - } - - my ($f) = $file =~ /$config{wiki_file_regexp}/; # untaint - if (! defined $f) { - warn(sprintf(gettext("skipping bad filename %s"), $file)."\n"); - } - else { - push @files, $f; + my ($file,$page,$f) = verify_src_file($_,$config{srcdir}); + if ($file) { + push @files, $file; if ($pages{$page}) { debug(sprintf(gettext("%s has multiple possible source pages"), $page)); } @@ -315,24 +323,11 @@ sub find_src_files () { find({ no_chdir => 1, wanted => sub { - my $file=decode_utf8($_); - $file=~s/^\Q$dir\E\/?//; - return if -l $_ || -d _ || ! length $file; - my $page=pagename($file); - if (! exists $pagesources{$page} && - file_pruned($file)) { - $File::Find::prune=1; - return; - } - - my ($f) = $file =~ /$config{wiki_file_regexp}/; # untaint - if (! defined $f) { - warn(sprintf(gettext("skipping bad filename %s"), $file)."\n"); - } - else { + my ($file,$page,$f) = verify_src_file($_,$dir); + if ($f) { # avoid underlaydir override # attacks; see security.mdwn - if (! -l "$config{srcdir}/$f" && + if (! -l "$config{srcdir}/$f" && ! -e _) { if (! $pages{$page}) { push @files, $f; -- cgit v1.2.3 From f35d35abe36166893f68061a1fcb2a26bc056fbc Mon Sep 17 00:00:00 2001 From: David Riebenbauer Date: Sat, 30 Jan 2010 18:22:32 +0100 Subject: Automatically create tag pages, if "tag_autocreate=1" is set in the configuration. The pages will be created in tagbase, if and only if they do not exist in the srcdir yet. Tag pages will be create from "autotag.tmpl". At this stage a second refresh is needed for the tag pages to be rendered. Add autotag.tmpl template. --- IkiWiki/Plugin/tag.pm | 26 ++++++++++++++++++++++++++ templates/autotag.tmpl | 3 +++ 2 files changed, 29 insertions(+) create mode 100644 templates/autotag.tmpl diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index cdcfaf536..6c43a053d 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -36,6 +36,13 @@ sub getsetup () { safe => 1, rebuild => 1, }, + tag_autocreate => { + type => "boolean", + example => 0, + description => "Autocreate new tag pages", + safe => 1, + rebuild => 1, + }, } sub tagpage ($) { @@ -59,6 +66,21 @@ sub taglink ($$$;@) { return htmllink($page, $destpage, tagpage($tag), %opts); } +sub gentag ($) { + my $tag=shift; + if (defined $config{tag_autocreate} && $config{tag_autocreate}) { + my $tagfile = newpagefile(tagpage($tag), $config{default_pageext}); + $tagfile=~s/^\///; + return if (srcfile($tagfile,1)); + + debug(sprintf(gettext("creating tag page %s"), $tag)); + + my $template=template("autotag.tmpl"); + $template->param(tag => $tag); + writefile($tagfile, $config{srcdir}, $template->output); + } +} + sub preprocess_tag (@) { if (! @_) { return ""; @@ -72,6 +94,10 @@ sub preprocess_tag (@) { foreach my $tag (keys %params) { $tag=linkpage($tag); $tags{$page}{$tag}=1; + + # add tagpage if necessary + gentag($tag); + # hidden WikiLink add_link($page, tagpage($tag)); } diff --git a/templates/autotag.tmpl b/templates/autotag.tmpl new file mode 100644 index 000000000..754e0b35b --- /dev/null +++ b/templates/autotag.tmpl @@ -0,0 +1,3 @@ +## Pagest tagged ## + +[[!inline pages="tagged()" actions="no" archive="yes"]] -- cgit v1.2.3 From b18fde2bde0c7d445fd4aab3cd35add8c211aab4 Mon Sep 17 00:00:00 2001 From: David Riebenbauer Date: Sun, 31 Jan 2010 02:31:12 +0100 Subject: Add a function add_autofiles(). The objective is to provide a sensible way to let plugins add files during the "scan stage" of the build. Currently does a little verification and adds the file to the global array @add_autofiles. --- IkiWiki.pm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index cb1c46a68..115c512d3 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -14,7 +14,7 @@ use open qw{:utf8 :std}; use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase %pagestate %wikistate %renderedfiles %oldrenderedfiles %pagesources %destsources %depends %depends_simple %hooks - %forcerebuild %loaded_plugins}; + %forcerebuild %loaded_plugins @autofiles}; use Exporter q{import}; our @EXPORT = qw(hook debug error template htmlpage deptype @@ -1898,6 +1898,14 @@ sub add_link ($$) { unless grep { $_ eq $link } @{$links{$page}}; } +sub add_autofile ($) { + my $addfile=shift; + my ($file,$page) = verify_src_file($addfile,$config{srcdir}); + if ($page) { + push @autofiles, $file; + } +} + sub pagespec_translate ($) { my $spec=shift; -- cgit v1.2.3 From f3c59ed3e52f6e68e73338f6e7799a4de7b6f9d6 Mon Sep 17 00:00:00 2001 From: David Riebenbauer Date: Sun, 31 Jan 2010 02:23:11 +0100 Subject: Process files from @autofiles in refresh(). To make automatically added files render they have to be added to the $files, $pages, $new, and $changed variables. After that scan() is called on them. --- IkiWiki/Render.pm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 44b2fb9c2..dd4d9ca0c 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -642,6 +642,20 @@ sub refresh () { scan($file); } + while (my $autofile = shift (@autofiles)) { + my $page=pagename($autofile); + if ($pages->{$page}) { + debug(sprintf(gettext("%s has multiple possible source pages"), $page)); + } + $pages->{$page}=1; + + push @{$files}, $autofile; + push @{$new}, $autofile if find_new_files([$autofile]); + push @{$changed}, $autofile if find_changed([$autofile]); + + scan($autofile); + } + calculate_links(); remove_del(@$del, @$internal_del); -- cgit v1.2.3 From a8d313aba1094fc6d976c9ba3d09f58b768435c5 Mon Sep 17 00:00:00 2001 From: David Riebenbauer Date: Sun, 31 Jan 2010 01:12:20 +0100 Subject: Use add_autofile() in tag.pm to make the automatically created tagpages render. --- IkiWiki/Plugin/tag.pm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index 6c43a053d..90833fd9c 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -78,6 +78,8 @@ sub gentag ($) { my $template=template("autotag.tmpl"); $template->param(tag => $tag); writefile($tagfile, $config{srcdir}, $template->output); + + IkiWiki::add_autofile("$config{srcdir}/$tagfile"); } } -- cgit v1.2.3 From f58f3e1bec41ccf9316f37b014ce0b373c8e49e1 Mon Sep 17 00:00:00 2001 From: David Riebenbauer Date: Tue, 2 Feb 2010 11:01:24 +0100 Subject: Revert the effects of find_del_files() for (re)autoadded files. This also means that if autoadded files are deleted they will just be recreated. --- IkiWiki.pm | 3 ++- IkiWiki/Render.pm | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 115c512d3..ad9fb7c79 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -14,7 +14,8 @@ use open qw{:utf8 :std}; use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase %pagestate %wikistate %renderedfiles %oldrenderedfiles %pagesources %destsources %depends %depends_simple %hooks - %forcerebuild %loaded_plugins @autofiles}; + %forcerebuild %loaded_plugins @autofiles %dellinks + %delrenderedfiles}; use Exporter q{import}; our @EXPORT = qw(hook debug error template htmlpage deptype diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index dd4d9ca0c..d2fa80fbb 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -392,7 +392,9 @@ sub find_del_files ($) { else { push @del, $pagesources{$page}; } + $dellinks{$page}= $links{$page}; $links{$page}=[]; + $delrenderedfiles{$page}= $renderedfiles{$page}; $renderedfiles{$page}=[]; $pagemtime{$page}=0; } @@ -642,8 +644,14 @@ sub refresh () { scan($file); } + my %del_hash = map {$_, 1} @$del; while (my $autofile = shift (@autofiles)) { my $page=pagename($autofile); + if (exists $del_hash{$page}) { + $links{$page}= $dellinks{$page}; + $renderedfiles{$page}= $delrenderedfiles{$page}; + delete $del_hash{$page}; + } if ($pages->{$page}) { debug(sprintf(gettext("%s has multiple possible source pages"), $page)); } @@ -655,6 +663,7 @@ sub refresh () { scan($autofile); } + $del = [keys %del_hash]; calculate_links(); -- cgit v1.2.3 From 25741100b0a0d81ae5113dfabe5a1ed84cdf8746 Mon Sep 17 00:00:00 2001 From: David Riebenbauer Date: Tue, 2 Feb 2010 12:12:23 +0100 Subject: Export add_autofile() for use in Plugins. --- IkiWiki.pm | 2 +- IkiWiki/Plugin/tag.pm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index ad9fb7c79..7d7f430b3 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -23,7 +23,7 @@ our @EXPORT = qw(hook debug error template htmlpage deptype htmllink readfile writefile pagetype srcfile pagename displaytime will_render gettext urlto targetpage add_underlay pagetitle titlepage linkpage newpagefile - inject add_link + inject add_link add_autofile %config %links %pagestate %wikistate %renderedfiles %pagesources %destsources); our $VERSION = 3.00; # plugin interface version, next is ikiwiki version diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index 90833fd9c..c0b7feb23 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -79,7 +79,7 @@ sub gentag ($) { $template->param(tag => $tag); writefile($tagfile, $config{srcdir}, $template->output); - IkiWiki::add_autofile("$config{srcdir}/$tagfile"); + add_autofile("$config{srcdir}/$tagfile"); } } -- cgit v1.2.3 From c6f27f9dfaa689a32342a412d6fd19d63453ee85 Mon Sep 17 00:00:00 2001 From: David Riebenbauer Date: Tue, 2 Feb 2010 14:32:51 +0100 Subject: add git repository 'davrieb' and document branch on userpage --- doc/git.mdwn | 4 +++- doc/users/David_Riebenbauer.mdwn | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/doc/git.mdwn b/doc/git.mdwn index 30fed6afc..289937121 100644 --- a/doc/git.mdwn +++ b/doc/git.mdwn @@ -56,7 +56,9 @@ into [[Joey]]'s working tree. This is recommended. :-) * [[ktf]] `git://github.com/ktf/ikiwiki.git` * [[tove]] `git://github.com/tove/ikiwiki.git` * [[GiuseppeBilotta]] `git://git.oblomov.eu/ikiwiki` -* [[roktas]] `git://github.com/roktas/ikiwiki.git`` +* [[roktas]] `git://github.com/roktas/ikiwiki.git` +* [[davrieb|David_Riebenbauer]] `git://git.liegesta.at/git/ikiwiki` + ([browse](http://git.liegesta.at/?p=ikiwiki.git;a=summary)) ## branches diff --git a/doc/users/David_Riebenbauer.mdwn b/doc/users/David_Riebenbauer.mdwn index 372a28588..d7469696e 100644 --- a/doc/users/David_Riebenbauer.mdwn +++ b/doc/users/David_Riebenbauer.mdwn @@ -1,2 +1,8 @@ Runs ikiwiki on his [homepage](http://liegesta.at/) and can be reached through + +## Branches in his [[git]] repository ## + +* `autotag` +([browse](http://git.liegesta.at/?p=ikiwiki.git;a=shortlog;h=refs/heads/autotag)) +See [[todo/auto-create_tag_pages_according_to_a_template]] -- cgit v1.2.3 From 1febfda911d29a52b4c4aa1bb286f4c9e1862c5c Mon Sep 17 00:00:00 2001 From: David Riebenbauer Date: Tue, 2 Feb 2010 14:50:01 +0100 Subject: also tag 'patch/core', considering that over half of the changes are there --- doc/todo/auto-create_tag_pages_according_to_a_template.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index 95710ced0..8c586d706 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -4,7 +4,7 @@ Tags are mainly specific to the object to which they’re stuck. However, I ofte Also see: and -[[!tag wishlist plugins/tag patch]] +[[!tag wishlist plugins/tag patch patch/core]] I would love to see this as well. -- dato -- cgit v1.2.3 From 9330b91703ba245ceb9c36e0682b8cfc0d225eaa Mon Sep 17 00:00:00 2001 From: David Riebenbauer Date: Tue, 2 Feb 2010 16:29:27 +0100 Subject: fix typo in autotag.tmpl --- templates/autotag.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/autotag.tmpl b/templates/autotag.tmpl index 754e0b35b..a8824171b 100644 --- a/templates/autotag.tmpl +++ b/templates/autotag.tmpl @@ -1,3 +1,3 @@ -## Pagest tagged ## +## Pages tagged ## [[!inline pages="tagged()" actions="no" archive="yes"]] -- cgit v1.2.3 From 6b98269aa310abc121875753ded37042f3a95988 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 2 Feb 2010 13:31:07 -0500 Subject: partial review --- ...o-create_tag_pages_according_to_a_template.mdwn | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index 8c586d706..a0e76fd48 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -160,3 +160,35 @@ wrong direction. * Proper documentation. --[[David_Riebenbauer]] + +> Starting review of this. Some of your commits are to very delicate, +> optimised, and security-sensitive ground, so I have to look at them very +> carefully. --[[Joey]] +> +> * In the refactoring in f3abeac919c4736429bd3362af6edf51ede8e7fe, +> you introduced at least 2 bugs, one a possible security hole. +> Now one part of the code tests `if ($file)` and the other +> caller tests `if ($f)`. These two tests both tested `if (! defined $f)` +> before. Notice that the variable needs to be the untainted variable +> for both. Also notice that `if ($f)` fails if `$f` contains `0`, +> which is a very common perl gotcha. +> * Your refactored code changes `-l $_ || -d _` to `-l $file || -d $file`. +> The latter makes one more stat system call; note the use of a +> bare `_` in the first to make perl reuse the stat buffer. +> * (As a matter of style, could you put a space after the commas in your +> perl?) +> +> I'd like to cherry-pick the above commit, once it's in shape, before +> looking at the rest in detail. So just a few other things that stood out. +> +> * Commit 4af4d26582f0c2b915d7102fb4a604b176385748 seems unnecessary. +> `srcfile($file, 1)` already is documented to return undef if the +> file does not exist. (But without the second parameter, it throws +> an error.) +> +> * Commit f58f3e1bec41ccf9316f37b014ce0b373c8e49e1 adds a line +> that is intented by a space, not a tab. +> +> * Commit f58f3e1bec41ccf9316f37b014ce0b373c8e49e1 says that auto-added +> files will be recreated if the user deletes them. That seems bad. +> `autoindex` goes to some trouble to not recreate deleted files. -- cgit v1.2.3 From bd1e29b8c4d2c2e0329789d1baf0a879617aeee4 Mon Sep 17 00:00:00 2001 From: David Riebenbauer Date: Wed, 3 Feb 2010 02:35:19 +0100 Subject: Revert "Make srcfile() return undef, if the file isn't there." This reverts commit 1bde208ec9b915db0187030c33450b5accb4892c. --- IkiWiki.pm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 7d7f430b3..90e623330 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -744,10 +744,7 @@ sub srcfile_stat { } sub srcfile ($;$) { - if (my @stat=srcfile_stat(@_)) { - return $stat[0]; - } - return undef + return (srcfile_stat(@_))[0]; } sub add_underlay ($) { -- cgit v1.2.3 From da5d29f95f6e693e8c14be1b896cf25cf4fdb3c0 Mon Sep 17 00:00:00 2001 From: David Riebenbauer Date: Wed, 3 Feb 2010 06:57:20 +0100 Subject: fix bugs in `find_src_files()`. Use `_` to avoid superfluous stat. Check for `defined $file`, instead of just `$file`. Add spaces after commas. Change return values of `verify_src_file()` to not return the tainted filename. Rename `$f` to `$file_untainted in `verify_src_file()`. $f changes to `$file` in `find_src_files()`. This attempts to fix commit f3abeac919c4736429bd3362af6edf51ede8e7fe. For discussion see --- IkiWiki/Render.pm | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index d2fa80fbb..5b72b6de1 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -284,7 +284,7 @@ sub verify_src_file ($$) { my $file=decode_utf8(shift); my $dir=shift; - return if -l $file || -d $file; + return if -l $file || -d _; $file=~s/^\Q$dir\E\/?//; return if ! length $file; my $page = pagename($file); @@ -294,11 +294,11 @@ sub verify_src_file ($$) { return; } - my ($f) = $file =~ /$config{wiki_file_regexp}/; # untaint - if (! defined $f) { + my ($file_untainted) = $file =~ /$config{wiki_file_regexp}/; # untaint + if (! defined $file_untainted) { warn(sprintf(gettext("skipping bad filename %s"), $file)."\n"); } - return ($file,$page,$f); + return ($file_untainted, $page); } sub find_src_files () { @@ -309,8 +309,8 @@ sub find_src_files () { find({ no_chdir => 1, wanted => sub { - my ($file,$page,$f) = verify_src_file($_,$config{srcdir}); - if ($file) { + my ($file, $page) = verify_src_file($_, $config{srcdir}); + if (defined $file) { push @files, $file; if ($pages{$page}) { debug(sprintf(gettext("%s has multiple possible source pages"), $page)); @@ -323,14 +323,14 @@ sub find_src_files () { find({ no_chdir => 1, wanted => sub { - my ($file,$page,$f) = verify_src_file($_,$dir); - if ($f) { + my ($file, $page) = verify_src_file($_, $dir); + if (defined $file) { # avoid underlaydir override # attacks; see security.mdwn - if (! -l "$config{srcdir}/$f" && + if (! -l "$config{srcdir}/$file" && ! -e _) { if (! $pages{$page}) { - push @files, $f; + push @files, $file; $pages{$page}=1; } } -- cgit v1.2.3 From 261dcd04750acb166915bfb1cf8d3c31a8fccb96 Mon Sep 17 00:00:00 2001 From: Javier Rojas Date: Wed, 3 Feb 2010 21:59:38 -0500 Subject: response --- ...navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn index 1cb5ed27e..0497b66b6 100644 --- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn +++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn @@ -64,6 +64,9 @@ the plugin has, as of now, two problems: > Seems about ready for me to think about pulling it into ikiwiki > alongside [[tips/vim_syntax_highlighting/ikiwiki.vim]]. If you'll > please slap a license on it. :) --[[Joey]] +> +>> GPL version 2 or later (if that doesn't cause any problems here). I'll add it +>> to the file --[[jerojasro]] > > Also, I have a possible other approach for finding ikiwiki's root. One > could consider that any subdirectory of an ikiwiki wiki is itself @@ -80,6 +83,10 @@ the plugin has, as of now, two problems: > > And if that's the case, you can resolve an absolute link by looking for > the page closest to the root that matches the link. +> +>> I like your idea; it doesn't alter the matching of the relative links, and +>> should work fine with absolute links too. I'll implement it, though I see +>> some potential (but small) issues with it --[[jerojasro]] > > It may even make sense to change ikiwiki's own handling of "absolute" > links to work that way. But even without changing ikiwiki, I think it @@ -93,3 +100,7 @@ the plugin has, as of now, two problems: > and vim would go to that file. > > --[[Joey]] +> +>> your approach will add more noise when the plugin grows the page-creation +>> feature, since there will be no real root to limit the possible locations for +>> the new page. But it is far better than demanding for a `.ikiwiki` dir --[[jerojasro]] -- cgit v1.2.3 From c4db8d89a5c1b3eab519fc6268e1fed6b1f4eb2f Mon Sep 17 00:00:00 2001 From: Javier Rojas Date: Wed, 3 Feb 2010 22:47:26 -0500 Subject: new forum post --- doc/forum/where_are_the_tags.mdwn | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 doc/forum/where_are_the_tags.mdwn diff --git a/doc/forum/where_are_the_tags.mdwn b/doc/forum/where_are_the_tags.mdwn new file mode 100644 index 000000000..f70c2e69a --- /dev/null +++ b/doc/forum/where_are_the_tags.mdwn @@ -0,0 +1,2 @@ +Where is the tag cloud/tag listing of all the tags used in this wiki? I know we +have tags enabled. -- cgit v1.2.3 From 208335ec80f4678ea352823111b953f1d7eccff9 Mon Sep 17 00:00:00 2001 From: Javier Rojas Date: Wed, 3 Feb 2010 22:48:15 -0500 Subject: signature --- doc/forum/where_are_the_tags.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/forum/where_are_the_tags.mdwn b/doc/forum/where_are_the_tags.mdwn index f70c2e69a..3a4debfe5 100644 --- a/doc/forum/where_are_the_tags.mdwn +++ b/doc/forum/where_are_the_tags.mdwn @@ -1,2 +1,2 @@ Where is the tag cloud/tag listing of all the tags used in this wiki? I know we -have tags enabled. +have tags enabled. --[[jerojasro]] -- cgit v1.2.3 From 345b40c65288874e458e2bec51f81f429f0b3db1 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 4 Feb 2010 14:51:56 -0500 Subject: Allow jumping directly into account registration process by going to ikiwiki.cgi?do=register --- IkiWiki/Plugin/passwordauth.pm | 16 ++++++++++++---- debian/changelog | 2 ++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/IkiWiki/Plugin/passwordauth.pm b/IkiWiki/Plugin/passwordauth.pm index 8cf5af51e..1898030b5 100644 --- a/IkiWiki/Plugin/passwordauth.pm +++ b/IkiWiki/Plugin/passwordauth.pm @@ -104,11 +104,11 @@ sub formbuilder_setup (@) { my $session=$params{session}; my $cgi=$params{cgi}; - if ($form->title eq "signin" || $form->title eq "register") { + if ($form->title eq "signin" || $form->title eq "register" || $cgi->param("do") eq "register") { $form->field(name => "name", required => 0); $form->field(name => "password", type => "password", required => 0); - if ($form->submitted eq "Register" || $form->submitted eq "Create Account") { + if ($form->submitted eq "Register" || $form->submitted eq "Create Account" || $cgi->param("do") eq "register") { $form->field(name => "confirm_password", type => "password"); $form->field(name => "account_creation_password", type => "password") if (defined $config{account_creation_password} && @@ -232,7 +232,7 @@ sub formbuilder (@) { my $buttons=$params{buttons}; if ($form->title eq "signin" || $form->title eq "register") { - if ($form->submitted && $form->validate) { + if (($form->submitted && $form->validate) || $cgi->param("do") eq "register") { if ($form->submitted eq 'Login') { $session->param("name", $form->field("name")); IkiWiki::cgi_postsignin($cgi, $session); @@ -295,7 +295,7 @@ sub formbuilder (@) { $form->field(name => "name", required => 0); push @$buttons, "Reset Password"; } - elsif ($form->submitted eq "Register") { + elsif ($form->submitted eq "Register" || $cgi->param("do") eq "register") { @$buttons="Create Account"; } } @@ -336,6 +336,14 @@ sub sessioncgi ($$) { IkiWiki::cgi_prefs($q, $session); exit; } + elsif ($q->param("do") eq "register") { + # After registration, need to go somewhere, so show prefs page. + $session->param(postsignin => "do=prefs"); + # Due to do=register, this will run in registration-only + # mode. + IkiWiki::cgi_signin($q, $session); + exit; + } } sub auth ($$) { diff --git a/debian/changelog b/debian/changelog index 8e01950a8..7beb0db82 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,8 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low * img: Fix a bug that could taint @links with undef values. * setup automator: Configure Term::Readline to use bold for prompt, rather than default underline. Closes: #517656 + * Allow jumping directly into account registration process by going to + ikiwiki.cgi?do=register -- Joey Hess Tue, 26 Jan 2010 22:25:33 -0500 -- cgit v1.2.3 From b547170a965e93a759de1612d4ce64d38eeea59c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 4 Feb 2010 15:07:10 -0500 Subject: Improve display of openid in preferences page. Now that openiduser is in IkiWiki core, it's ok to have passwordauth check for it, and avoid displaying useless password fields when showing preferences for an openid. Also improved the styling of the display of the openid in the preferneces page. --- IkiWiki/Plugin/openid.pm | 14 +++++++------- IkiWiki/Plugin/passwordauth.pm | 3 ++- debian/changelog | 1 + 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index dc0e0f48e..b60740c0e 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -82,13 +82,13 @@ sub formbuilder_setup (@) { } } } - elsif ($form->title eq "preferences") { - if (! defined $form->field(name => "name")) { - $form->field(name => "OpenID", disabled => 1, - value => $session->param("name"), - size => 50, force => 1, - fieldset => "login"); - } + elsif ($form->title eq "preferences" && + IkiWiki::openiduser($session->param("name"))) { + $form->field(name => "openid_url", disabled => 1, + label => htmllink("", "", "ikiwiki/OpenID", noimageinline => 1), + value => $session->param("name"), + size => 50, force => 1, + fieldset => "login"); } } diff --git a/IkiWiki/Plugin/passwordauth.pm b/IkiWiki/Plugin/passwordauth.pm index 1898030b5..b70f9b788 100644 --- a/IkiWiki/Plugin/passwordauth.pm +++ b/IkiWiki/Plugin/passwordauth.pm @@ -206,7 +206,8 @@ sub formbuilder_setup (@) { } } } - elsif ($form->title eq "preferences") { + elsif ($form->title eq "preferences" && + IkiWiki::openiduser($session->param("name"))) { $form->field(name => "name", disabled => 1, value => $session->param("name"), force => 1, fieldset => "login"); diff --git a/debian/changelog b/debian/changelog index 7beb0db82..9867cf75a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,7 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low than default underline. Closes: #517656 * Allow jumping directly into account registration process by going to ikiwiki.cgi?do=register + * Improve display of openid in preferences page. -- Joey Hess Tue, 26 Jan 2010 22:25:33 -0500 -- cgit v1.2.3 From 68f7be91e59b304f4deb4ce84506a2bdd63917db Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 4 Feb 2010 15:10:55 -0500 Subject: typo --- IkiWiki/Plugin/passwordauth.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/passwordauth.pm b/IkiWiki/Plugin/passwordauth.pm index b70f9b788..94c5b0492 100644 --- a/IkiWiki/Plugin/passwordauth.pm +++ b/IkiWiki/Plugin/passwordauth.pm @@ -207,7 +207,7 @@ sub formbuilder_setup (@) { } } elsif ($form->title eq "preferences" && - IkiWiki::openiduser($session->param("name"))) { + ! IkiWiki::openiduser($session->param("name"))) { $form->field(name => "name", disabled => 1, value => $session->param("name"), force => 1, fieldset => "login"); -- cgit v1.2.3 From cfcb3d18808a753a90b042462d1dd71fcb7c82b5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 4 Feb 2010 15:17:21 -0500 Subject: remove userlink() That was dead code; changes to lockedit and recentchanges removed the last callers. --- IkiWiki.pm | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index b8e599928..6226824df 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1125,23 +1125,6 @@ sub openiduser ($) { return; } -sub userlink ($) { - my $user=shift; - - my $oiduser=eval { openiduser($user) }; - if (defined $oiduser) { - return "$oiduser"; - } - else { - eval q{use CGI 'escapeHTML'}; - error($@) if $@; - - return htmllink("", "", escapeHTML( - length $config{userdir} ? $config{userdir}."/".$user : $user - ), noimageinline => 1); - } -} - sub htmlize ($$$$) { my $page=shift; my $destpage=shift; -- cgit v1.2.3 From a2e78ebcf27680eedf30e00f1ee9b86ed1d9e127 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 4 Feb 2010 15:30:41 -0500 Subject: Add link to userpage (or creation link) to top of preferences page. --- IkiWiki/Plugin/passwordauth.pm | 44 ++++++++++++++++++++++++++++-------------- debian/changelog | 1 + 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/IkiWiki/Plugin/passwordauth.pm b/IkiWiki/Plugin/passwordauth.pm index 94c5b0492..b3a798055 100644 --- a/IkiWiki/Plugin/passwordauth.pm +++ b/IkiWiki/Plugin/passwordauth.pm @@ -206,21 +206,35 @@ sub formbuilder_setup (@) { } } } - elsif ($form->title eq "preferences" && - ! IkiWiki::openiduser($session->param("name"))) { - $form->field(name => "name", disabled => 1, - value => $session->param("name"), force => 1, - fieldset => "login"); - $form->field(name => "password", type => "password", - fieldset => "login", - validate => sub { - shift eq $form->field("confirm_password"); - }), - $form->field(name => "confirm_password", type => "password", - fieldset => "login", - validate => sub { - shift eq $form->field("password"); - }), + elsif ($form->title eq "preferences") { + my $user=$session->param("name"); + if (! IkiWiki::openiduser($user)) { + $form->field(name => "name", disabled => 1, + value => $user, force => 1, + fieldset => "login"); + $form->field(name => "password", type => "password", + fieldset => "login", + validate => sub { + shift eq $form->field("confirm_password"); + }); + $form->field(name => "confirm_password", type => "password", + fieldset => "login", + validate => sub { + shift eq $form->field("password"); + }); + + my $userpage=$config{userdir} ? $config{userdir}."/".$user : $user; + if (exists $pagesources{$userpage}) { + $form->text(gettext("Your user page: "). + htmllink("", "", $userpage, + noimageinline => 1)); + } + else { + $form->text(" "edit", page => $userpage). + "\">".gettext("Create your user page").""); + } + } } } diff --git a/debian/changelog b/debian/changelog index 9867cf75a..e07bada28 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,7 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low * Allow jumping directly into account registration process by going to ikiwiki.cgi?do=register * Improve display of openid in preferences page. + * Add link to userpage (or creation link) to top of preferences page. -- Joey Hess Tue, 26 Jan 2010 22:25:33 -0500 -- cgit v1.2.3 From 8380a9d0009fee740f980aee3d45a933a5b24219 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 4 Feb 2010 18:24:15 -0500 Subject: factor out a userpage function Not yet exported, as only 4 quite core plugins use it. --- IkiWiki.pm | 5 +++++ IkiWiki/Plugin/comments.pm | 5 ++--- IkiWiki/Plugin/editpage.pm | 5 +++-- IkiWiki/Plugin/passwordauth.pm | 2 +- IkiWiki/Plugin/recentchanges.pm | 2 +- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 6226824df..0715f1869 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1090,6 +1090,11 @@ sub htmllink ($$$;@) { return "$linktext"; } +sub userpage ($) { + my $user=shift; + return length $config{userdir} ? "$config{userdir}/$user" : $user; +} + sub openiduser ($) { my $user=shift; diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 5586cca52..caed0d58c 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -171,9 +171,8 @@ sub preprocess { else { $commentauthorurl = IkiWiki::cgiurl( do => 'goto', - page => (length $config{userdir} - ? "$config{userdir}/$commentuser" - : "$commentuser")); + page => IkiWiki::userpage($commentuser) + ); $commentauthor = $commentuser; } diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm index fca970c60..219386a30 100644 --- a/IkiWiki/Plugin/editpage.pm +++ b/IkiWiki/Plugin/editpage.pm @@ -245,8 +245,9 @@ sub cgi_editpage ($$) { push @page_locs, $dir.$page; } - push @page_locs, "$config{userdir}/$page" - if length $config{userdir}; + my $userpage=IkiWiki::userpage($page); + push @page_locs, $userpage + if ! grep { $_ eq $userpage } @page_locs; } @page_locs = grep { diff --git a/IkiWiki/Plugin/passwordauth.pm b/IkiWiki/Plugin/passwordauth.pm index b3a798055..c07065b7d 100644 --- a/IkiWiki/Plugin/passwordauth.pm +++ b/IkiWiki/Plugin/passwordauth.pm @@ -223,7 +223,7 @@ sub formbuilder_setup (@) { shift eq $form->field("password"); }); - my $userpage=$config{userdir} ? $config{userdir}."/".$user : $user; + my $userpage=IkiWiki::userpage($user); if (exists $pagesources{$userpage}) { $form->text(gettext("Your user page: "). htmllink("", "", $userpage, diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index fa851e466..5c7b71aaa 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -124,7 +124,7 @@ sub store ($$$) { elsif (length $config{cgiurl}) { $change->{authorurl} = IkiWiki::cgiurl( do => "goto", - page => (length $config{userdir} ? "$config{userdir}/" : "").$change->{author}, + page => IkiWiki::userpage($change->{author}), ); } -- cgit v1.2.3 From 0e67c26e2e656cf54aa13033c56e204237ef5775 Mon Sep 17 00:00:00 2001 From: "http://edward.myopenid.com/" Date: Fri, 5 Feb 2010 03:25:22 +0000 Subject: add 'or' to pagespec --- doc/users/Edward_Betts.mdwn | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/doc/users/Edward_Betts.mdwn b/doc/users/Edward_Betts.mdwn index b32927a1c..61d6150ef 100644 --- a/doc/users/Edward_Betts.mdwn +++ b/doc/users/Edward_Betts.mdwn @@ -1,9 +1,4 @@ My watchlist: -[[!inline archive="yes" sort="mtime" atom="yes" pages=" -todo/allow_wiki_syntax_in_commit_messages* -todo/shortcut_with_different_link_text* -todo/structured_page_data* -tips/convert_mediawiki_to_ikiwiki* -"]] +[[!inline archive="yes" sort="mtime" atom="yes" pages="todo/allow_wiki_syntax_in_commit_messages* or todo/shortcut_with_different_link_text* or todo/structured_page_data* or tips/convert_mediawiki_to_ikiwiki*"]] -- cgit v1.2.3 From 34a64557cf5f4a913c07f04d021debdd5fb58b1b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 5 Feb 2010 13:46:12 -0500 Subject: scratch patch --- doc/bugs/anonok_vs._httpauth.mdwn | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/doc/bugs/anonok_vs._httpauth.mdwn b/doc/bugs/anonok_vs._httpauth.mdwn index 0a62164cb..1c492139b 100644 --- a/doc/bugs/anonok_vs._httpauth.mdwn +++ b/doc/bugs/anonok_vs._httpauth.mdwn @@ -58,3 +58,45 @@ and a whitelist of OpenIDs in `locked_pages`...) >> On reflection, I've stopped being bothered by the >> redirect-to-signin-page approach. (It only needs to happen once per >> browser session, anyway.) Can we try that? --[[schmonz]] + +Here is an attempt. With this httpauth will only redirect to the +`cgiauth_url` when a page is edited, and it will defer to other plugins +like anonok first. I have not tested this. --[[Joey]] + +
+diff --git a/IkiWiki/Plugin/httpauth.pm b/IkiWiki/Plugin/httpauth.pm
+index 127c321..c181164 100644
+--- a/IkiWiki/Plugin/httpauth.pm
++++ b/IkiWiki/Plugin/httpauth.pm
+@@ -9,6 +9,8 @@ use IkiWiki 3.00;
+ sub import {
+ 	hook(type => "getsetup", id => "httpauth", call => \&getsetup);
+ 	hook(type => "auth", id => "httpauth", call => \&auth);
++	hook(type => "canedit", id => "httpauth", call => \&canedit,
++		last => 1);
+ }
+ 
+ sub getsetup () {
+@@ -33,10 +35,20 @@ sub auth ($$) {
+ 	if (defined $cgi->remote_user()) {
+ 		$session->param("name", $cgi->remote_user());
+ 	}
+-	elsif (defined $config{cgiauthurl}) {
++}
++
++sub canedit ($$$) {
++	my $page=shift;
++	my $cgi=shift;
++	my $session=shift;
++
++	if (! defined $cgi->remote_user() && defined $config{cgiauthurl}) {
+ 		IkiWiki::redirect($cgi, $config{cgiauthurl}.'?'.$cgi->query_string());
+ 		exit;
+ 	}
++	else {
++		return undef;
++	}
+}
+ 
+ 1
+
-- cgit v1.2.3 From 5541b06de43c70ca9c23231d175d474789dacd25 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 5 Feb 2010 15:22:02 -0500 Subject: response --- IkiWiki/Plugin/httpauth.pm | 14 +++++++++++++- doc/forum/where_are_the_tags.mdwn | 7 +++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/httpauth.pm b/IkiWiki/Plugin/httpauth.pm index 127c321f0..c1811643b 100644 --- a/IkiWiki/Plugin/httpauth.pm +++ b/IkiWiki/Plugin/httpauth.pm @@ -9,6 +9,8 @@ use IkiWiki 3.00; sub import { hook(type => "getsetup", id => "httpauth", call => \&getsetup); hook(type => "auth", id => "httpauth", call => \&auth); + hook(type => "canedit", id => "httpauth", call => \&canedit, + last => 1); } sub getsetup () { @@ -33,10 +35,20 @@ sub auth ($$) { if (defined $cgi->remote_user()) { $session->param("name", $cgi->remote_user()); } - elsif (defined $config{cgiauthurl}) { +} + +sub canedit ($$$) { + my $page=shift; + my $cgi=shift; + my $session=shift; + + if (! defined $cgi->remote_user() && defined $config{cgiauthurl}) { IkiWiki::redirect($cgi, $config{cgiauthurl}.'?'.$cgi->query_string()); exit; } + else { + return undef; + } } 1 diff --git a/doc/forum/where_are_the_tags.mdwn b/doc/forum/where_are_the_tags.mdwn index 3a4debfe5..ecb49fe43 100644 --- a/doc/forum/where_are_the_tags.mdwn +++ b/doc/forum/where_are_the_tags.mdwn @@ -1,2 +1,9 @@ Where is the tag cloud/tag listing of all the tags used in this wiki? I know we have tags enabled. --[[jerojasro]] + +> This wiki does not use one global toplevel set of tags (`tagbase` is not +> set). +> +> There are tags used for the [[plugins]], and a tag cloud of those +> there. [[wishlist]] and [[patch]] are tags too, but I don't see the point +> of a tag cloud for such tags. --[[Joey]] -- cgit v1.2.3 From 1af8db763b76856a3f8fb4d79333b19ef5083637 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 5 Feb 2010 23:06:29 -0500 Subject: revert accidental code change --- IkiWiki/Plugin/httpauth.pm | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/IkiWiki/Plugin/httpauth.pm b/IkiWiki/Plugin/httpauth.pm index c1811643b..127c321f0 100644 --- a/IkiWiki/Plugin/httpauth.pm +++ b/IkiWiki/Plugin/httpauth.pm @@ -9,8 +9,6 @@ use IkiWiki 3.00; sub import { hook(type => "getsetup", id => "httpauth", call => \&getsetup); hook(type => "auth", id => "httpauth", call => \&auth); - hook(type => "canedit", id => "httpauth", call => \&canedit, - last => 1); } sub getsetup () { @@ -35,20 +33,10 @@ sub auth ($$) { if (defined $cgi->remote_user()) { $session->param("name", $cgi->remote_user()); } -} - -sub canedit ($$$) { - my $page=shift; - my $cgi=shift; - my $session=shift; - - if (! defined $cgi->remote_user() && defined $config{cgiauthurl}) { + elsif (defined $config{cgiauthurl}) { IkiWiki::redirect($cgi, $config{cgiauthurl}.'?'.$cgi->query_string()); exit; } - else { - return undef; - } } 1 -- cgit v1.2.3 From 03777230ea17220527b7cd45b9a57770e859623c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 6 Feb 2010 15:29:25 -0500 Subject: update comment re openid library version --- IkiWiki.pm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 0715f1869..2a0132745 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1103,11 +1103,10 @@ sub openiduser ($) { my $display; if (Net::OpenID::VerifiedIdentity->can("DisplayOfURL")) { - # this works in at least 2.x $display = Net::OpenID::VerifiedIdentity::DisplayOfURL($user); } else { - # this only works in 1.x + # backcompat with old version my $oid=Net::OpenID::VerifiedIdentity->new(identity => $user); $display=$oid->display; } -- cgit v1.2.3 From eda1d1321b7510d717c236b668e430bf1f656bed Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 6 Feb 2010 15:53:54 -0500 Subject: auto-blog.setup: Lock all pages, so only admin can post to the blog by default. --- auto-blog.setup | 1 + debian/changelog | 2 ++ 2 files changed, 3 insertions(+) diff --git a/auto-blog.setup b/auto-blog.setup index 82aa8d415..e3059e32e 100644 --- a/auto-blog.setup +++ b/auto-blog.setup @@ -47,4 +47,5 @@ IkiWiki::Setup::Automator->import( comments_pagespec => "posts/* and !*/Discussion", blogspam_pagespec => "postcomment(*)", discussion => 0, + locked_pages => "*", ) diff --git a/debian/changelog b/debian/changelog index e07bada28..b4acac633 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,8 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low ikiwiki.cgi?do=register * Improve display of openid in preferences page. * Add link to userpage (or creation link) to top of preferences page. + * auto-blog.setup: Lock all pages, so only admin can post to the blog + by default. -- Joey Hess Tue, 26 Jan 2010 22:25:33 -0500 -- cgit v1.2.3 From e33a65719a58a65201c1c742f544f5cab38ad23c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 6 Feb 2010 16:12:29 -0500 Subject: ensure opendiscussion hook is always called before lockedit This was only ordered ok due to luck before. --- IkiWiki/Plugin/opendiscussion.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/opendiscussion.pm b/IkiWiki/Plugin/opendiscussion.pm index 4517ff88b..4b91f5d83 100644 --- a/IkiWiki/Plugin/opendiscussion.pm +++ b/IkiWiki/Plugin/opendiscussion.pm @@ -7,7 +7,8 @@ use IkiWiki 3.00; sub import { hook(type => "getsetup", id => "opendiscussion", call => \&getsetup); - hook(type => "canedit", id => "opendiscussion", call => \&canedit); + hook(type => "canedit", id => "opendiscussion", call => \&canedit, + first => 1); } sub getsetup () { -- cgit v1.2.3 From b384af237df92e787f84f845d0d2bc182f7775ff Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 6 Feb 2010 16:19:17 -0500 Subject: opendiscussion: This plugin will also now allow posting comments to otherwise locked-down sites. --- IkiWiki/Plugin/opendiscussion.pm | 1 + debian/changelog | 2 ++ doc/plugins/comments.mdwn | 4 ++-- doc/plugins/lockedit.mdwn | 11 +++-------- doc/plugins/opendiscussion.mdwn | 5 +++-- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/IkiWiki/Plugin/opendiscussion.pm b/IkiWiki/Plugin/opendiscussion.pm index 4b91f5d83..5a455940b 100644 --- a/IkiWiki/Plugin/opendiscussion.pm +++ b/IkiWiki/Plugin/opendiscussion.pm @@ -25,6 +25,7 @@ sub canedit ($$) { my $session=shift; return "" if $page=~/(\/|^)\Q$config{discussionpage}\E$/i; + return "" if pagespec_match($page, "postcomment(*)"); return undef; } diff --git a/debian/changelog b/debian/changelog index b4acac633..a65592277 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,8 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low * Add link to userpage (or creation link) to top of preferences page. * auto-blog.setup: Lock all pages, so only admin can post to the blog by default. + * opendiscussion: This plugin will also now allow posting comments + to otherwise locked-down sites. -- Joey Hess Tue, 26 Jan 2010 22:25:33 -0500 diff --git a/doc/plugins/comments.mdwn b/doc/plugins/comments.mdwn index b6d4d252b..f933d32be 100644 --- a/doc/plugins/comments.mdwn +++ b/doc/plugins/comments.mdwn @@ -14,8 +14,8 @@ authorship should hopefully be unforgeable by CGI users. The intention is that on a non-wiki site (like a blog) you can lock all pages for admin-only access, then allow otherwise unprivileged (or perhaps even anonymous) users to comment on posts. See the documentation of the -[[lockedit]] and [[anonok]] pages for details on locking down a wiki so -users can only post comments. +[[opendiscussion]], [[lockedit]] and [[anonok]] pages for details on locking +down a wiki so readers can only post comments. Individual comments are stored as internal-use pages named something like `page/comment_1`, `page/comment_2`, etc. These pages internally use a diff --git a/doc/plugins/lockedit.mdwn b/doc/plugins/lockedit.mdwn index c8f64ea47..681163203 100644 --- a/doc/plugins/lockedit.mdwn +++ b/doc/plugins/lockedit.mdwn @@ -12,14 +12,9 @@ to lock. For example, you could choose to lock all pages created before 2006, or all pages that are linked to from the page named "locked". More usually though, you'll just list some names of pages to lock. -One handy thing to do if you're using ikiwiki for your blog is to lock -"* and !*/Discussion". This prevents others from adding to or modifying -posts in your blog, while still letting them comment via the Discussion -pages. - -Alternatively, if you're using the [[comments]] plugin, you can lock -"!postcomment(*)" to allow users to comment on pages, but not edit anything -else. +If you want to lock down a blog so only you can post to it, you can just +lock "*", and enable the [[opendiscussion]] plugin, so readers can still post +[[comments]]. Wiki administrators can always edit locked pages. The [[ikiwiki/PageSpec]] can specify that some pages are not locked for some users. For example, diff --git a/doc/plugins/opendiscussion.mdwn b/doc/plugins/opendiscussion.mdwn index b2ba68bf7..3b5ab4858 100644 --- a/doc/plugins/opendiscussion.mdwn +++ b/doc/plugins/opendiscussion.mdwn @@ -1,5 +1,6 @@ [[!template id=plugin name=opendiscussion author="[[Joey]]"]] [[!tag type/auth]] -This plugin allows editing of Discussion pages by anonymous users who have -not logged into the wiki. +This plugin allows editing of Discussion pages, and posting of comments, +even when the [[lockedit]] plugin has been configured to otherwise prevent +editing. -- cgit v1.2.3 From caa5db6c54c5c6368d511214961e749f5451379c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 6 Feb 2010 16:20:03 -0500 Subject: add opendiscussion to auto-blog.setup --- auto-blog.setup | 2 +- debian/changelog | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/auto-blog.setup b/auto-blog.setup index e3059e32e..7ff413187 100644 --- a/auto-blog.setup +++ b/auto-blog.setup @@ -36,7 +36,7 @@ IkiWiki::Setup::Automator->import( cgiurl => "http://$domain/~$ENV{USER}/$wikiname_short/ikiwiki.cgi", cgi_wrapper => "$ENV{HOME}/public_html/$wikiname_short/ikiwiki.cgi", adminemail => "$ENV{USER}\@$domain", - add_plugins => [qw{goodstuff websetup comments blogspam}], + add_plugins => [qw{goodstuff websetup comments opendiscussion blogspam}], disable_plugins => [qw{}], libdir => "$ENV{HOME}/.ikiwiki", rss => 1, diff --git a/debian/changelog b/debian/changelog index a65592277..794dec418 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,10 +8,10 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low ikiwiki.cgi?do=register * Improve display of openid in preferences page. * Add link to userpage (or creation link) to top of preferences page. - * auto-blog.setup: Lock all pages, so only admin can post to the blog - by default. * opendiscussion: This plugin will also now allow posting comments to otherwise locked-down sites. + * auto-blog.setup: Lock all pages, so only admin can post to the blog + by default, and enable opendiscussion so others can comment. -- Joey Hess Tue, 26 Jan 2010 22:25:33 -0500 -- cgit v1.2.3 From 5a2de27947d084f73fdbbc55028af378f62b42b3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 6 Feb 2010 16:25:39 -0500 Subject: Fix color and format plugins to appear in the websetup interface. --- IkiWiki/Plugin/color.pm | 9 +++++++++ IkiWiki/Plugin/format.pm | 9 +++++++++ debian/changelog | 1 + 3 files changed, 19 insertions(+) diff --git a/IkiWiki/Plugin/color.pm b/IkiWiki/Plugin/color.pm index 20505893b..b9407ba28 100644 --- a/IkiWiki/Plugin/color.pm +++ b/IkiWiki/Plugin/color.pm @@ -10,6 +10,15 @@ use IkiWiki 3.00; sub import { hook(type => "preprocess", id => "color", call => \&preprocess); hook(type => "format", id => "color", call => \&format); + hook(type => "getsetup", id => "color", call => \&getsetup); +} + +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => undef, + }, } sub preserve_style ($$$) { diff --git a/IkiWiki/Plugin/format.pm b/IkiWiki/Plugin/format.pm index 1513cbed7..c8041209f 100644 --- a/IkiWiki/Plugin/format.pm +++ b/IkiWiki/Plugin/format.pm @@ -7,6 +7,15 @@ use IkiWiki 3.00; sub import { hook(type => "preprocess", id => "format", call => \&preprocess); + hook(type => "getsetup", id => "format", call => \&getsetup); +} + +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => undef, + }, } sub preprocess (@) { diff --git a/debian/changelog b/debian/changelog index 794dec418..06d11aa29 100644 --- a/debian/changelog +++ b/debian/changelog @@ -12,6 +12,7 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low to otherwise locked-down sites. * auto-blog.setup: Lock all pages, so only admin can post to the blog by default, and enable opendiscussion so others can comment. + * Fix color and format plugins to appear in the websetup interface. -- Joey Hess Tue, 26 Jan 2010 22:25:33 -0500 -- cgit v1.2.3 From 03810ebf4003a5c1cb8c8a247f0e2b429923a675 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 6 Feb 2010 16:29:04 -0500 Subject: add noindex robots directives --- doc/ikiwiki/directive/date.mdwn | 2 ++ doc/ikiwiki/pagespec/po.mdwn | 2 ++ doc/ikiwiki/pagespec/sorting.mdwn | 2 ++ 3 files changed, 6 insertions(+) diff --git a/doc/ikiwiki/directive/date.mdwn b/doc/ikiwiki/directive/date.mdwn index df45fa840..b89241e4c 100644 --- a/doc/ikiwiki/directive/date.mdwn +++ b/doc/ikiwiki/directive/date.mdwn @@ -12,3 +12,5 @@ For example, an update to a page with an embedded date stamp could look like: Updated \[[!date "Wed, 25 Nov 2009 01:11:55 -0500"]]: mumble mumble + +[[!meta robots="noindex, follow"]] diff --git a/doc/ikiwiki/pagespec/po.mdwn b/doc/ikiwiki/pagespec/po.mdwn index e0264dd50..40ed9efb6 100644 --- a/doc/ikiwiki/pagespec/po.mdwn +++ b/doc/ikiwiki/pagespec/po.mdwn @@ -14,3 +14,5 @@ wiki: Note that every non-po page is considered to be written in `po_master_language`, as specified in `ikiwiki.setup`. + +[[!meta robots="noindex, follow"]] diff --git a/doc/ikiwiki/pagespec/sorting.mdwn b/doc/ikiwiki/pagespec/sorting.mdwn index 41aa58151..697818a2a 100644 --- a/doc/ikiwiki/pagespec/sorting.mdwn +++ b/doc/ikiwiki/pagespec/sorting.mdwn @@ -9,3 +9,5 @@ orders can be specified. * `title_natural` - Only available if [[!cpan Sort::Naturally]] is installed. Orders by title, but numbers in the title are treated as such, ("1 2 9 10 20" instead of "1 10 2 20 9") + +[[!meta robots="noindex, follow"]] -- cgit v1.2.3 From aca4c725c37e6d75c7c8f4ba7596bb8358fb34b4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 6 Feb 2010 16:35:01 -0500 Subject: update --- doc/ikiwikiusers.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index f750fb4b0..3035aa8b0 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -134,6 +134,7 @@ Personal sites and blogs * [Walden Effect](http://waldeneffect.org) * [Avian Aqua Miser](http://www.avianaquamiser.com/) * [Cosmic Cookout](http://www.cosmiccookout.com/) +* [Backyard Deer](http://www.backyarddeer.com/) Please feel free to add your own ikiwiki site! -- cgit v1.2.3 From b0857e75553f33114a0bd5484be86a02b35a09e6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 6 Feb 2010 17:01:16 -0500 Subject: remove pigro.net Unfortunatly, www.pigro.net is down, and has been for some time. --- doc/ikiwikiusers.mdwn | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 3035aa8b0..469fc0f6d 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -42,7 +42,6 @@ Projects & Organizations * [The Walden Effect](http://www.waldeneffect.org/) * The support pages for [Trinity Centre for High Performance Computing](http://www.tchpc.tcd.ie/support/) * [St Hugh of Lincoln Catholic Primary School in Surrey](http://www.sthugh-of-lincoln.surrey.sch.uk/) -* [Pigro Network](http://www.pigro.net) is running a hg based ikiwiki. (And provides ikiwiki hosting for $10/m.) * [Cosin Homepage](http://cosin.ch) uses an Ikiwiki with a subversion repository. * [Bosco Free Orienteering Software](http://bosco.durcheinandertal.ch) * [MIT Student Information Processing Board](http://sipb.mit.edu/) -- cgit v1.2.3 From 961473473ae8f2a386322149cd4668f213aeed25 Mon Sep 17 00:00:00 2001 From: AlbertF Date: Sun, 7 Feb 2010 00:43:34 +0000 Subject: --- doc/sandbox.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index afd7dbeab..62f3ad21a 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -47,6 +47,7 @@ Bulleted list * [[different_name_for_a_WikiLink|ikiwiki/WikiLink]] * * [GNU](http://www.gnu.org/) +* [make money online](http://www.mooladays.com) ----- -- cgit v1.2.3 From a752bc3d1263c65958d978441ca850f6d70eabc2 Mon Sep 17 00:00:00 2001 From: AlbertF Date: Sun, 7 Feb 2010 00:44:09 +0000 Subject: --- doc/sandbox.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 62f3ad21a..1420c1d36 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -46,9 +46,11 @@ Bulleted list * * [[different_name_for_a_WikiLink|ikiwiki/WikiLink]] * +* [make money online](http://www.mooladays.com) * [GNU](http://www.gnu.org/) * [make money online](http://www.mooladays.com) + ----- [[!progress percent=27]] -- cgit v1.2.3 From 343c8768220b3802e479ba466721ed2d2e43db0d Mon Sep 17 00:00:00 2001 From: AlbertF Date: Sun, 7 Feb 2010 00:45:02 +0000 Subject: --- doc/sandbox.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 1420c1d36..29c592502 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -51,6 +51,7 @@ Bulleted list * [make money online](http://www.mooladays.com) + ----- [[!progress percent=27]] -- cgit v1.2.3 From 2700379ef3ffbb504c1be05cc32a3f5f44ab5981 Mon Sep 17 00:00:00 2001 From: AlbertF Date: Sun, 7 Feb 2010 00:46:09 +0000 Subject: --- doc/sandbox.mdwn | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 29c592502..cfa4e88f9 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -48,7 +48,6 @@ Bulleted list * * [make money online](http://www.mooladays.com) * [GNU](http://www.gnu.org/) -* [make money online](http://www.mooladays.com) -- cgit v1.2.3 From 698386604a4cfa90a89595cfd3164b60046de474 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 6 Feb 2010 20:04:33 -0500 Subject: silly wabbit. spam written in sand washes away. ban for life of IP remains --- doc/sandbox.mdwn | 3 --- 1 file changed, 3 deletions(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index cfa4e88f9..afd7dbeab 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -46,11 +46,8 @@ Bulleted list * * [[different_name_for_a_WikiLink|ikiwiki/WikiLink]] * -* [make money online](http://www.mooladays.com) * [GNU](http://www.gnu.org/) - - ----- [[!progress percent=27]] -- cgit v1.2.3 From 1bb06210e956801d4b64641dbc84059ad36f797e Mon Sep 17 00:00:00 2001 From: "http://www.google.com/profiles/schmonz" Date: Sun, 7 Feb 2010 01:51:30 +0000 Subject: tested --- doc/bugs/anonok_vs._httpauth.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/bugs/anonok_vs._httpauth.mdwn b/doc/bugs/anonok_vs._httpauth.mdwn index 1c492139b..1940fdad8 100644 --- a/doc/bugs/anonok_vs._httpauth.mdwn +++ b/doc/bugs/anonok_vs._httpauth.mdwn @@ -100,3 +100,6 @@ index 127c321..c181164 100644 1 + +> With `anonok` enabled, this works for anonymous editing of an +> existing Discussion page. auth is still needed to create one. --[[schmonz]] -- cgit v1.2.3 From 2e55a598350f422a8c064cad6bbba4e2fde13ed8 Mon Sep 17 00:00:00 2001 From: "http://gustaf.thorslund.org/" Date: Sun, 7 Feb 2010 14:09:15 +0000 Subject: Added missing '!' in "!format perl..." --- doc/ikiwiki/directive/format.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ikiwiki/directive/format.mdwn b/doc/ikiwiki/directive/format.mdwn index 23830e9cd..7d11d225f 100644 --- a/doc/ikiwiki/directive/format.mdwn +++ b/doc/ikiwiki/directive/format.mdwn @@ -22,7 +22,7 @@ Note that if the highlight plugin is enabled, this directive can also be used to display syntax highlighted code. Many languages and formats are supported. For example: - \[[format perl """ + \[[!format perl """ print "hello, world\n"; """]] -- cgit v1.2.3 From ef65fd58cf77c27b9063b46b5b61b3090662ddce Mon Sep 17 00:00:00 2001 From: simonraven Date: Sun, 7 Feb 2010 20:29:24 +0000 Subject: HTTP:BL plugin/inclusion --- doc/wishlist/http_bl_support.mdwn | 59 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 doc/wishlist/http_bl_support.mdwn diff --git a/doc/wishlist/http_bl_support.mdwn b/doc/wishlist/http_bl_support.mdwn new file mode 100644 index 000000000..30fb9c9b3 --- /dev/null +++ b/doc/wishlist/http_bl_support.mdwn @@ -0,0 +1,59 @@ +[Project Honeypot](http://projecthoneypot.org/) has an HTTP:BL API available to subscribed (it's free, accept donations) people/orgs. There's a basic perl package someone wrote, I'm including a copy here. + +[from here](http://projecthoneypot.org/board/read.php?f=10&i=112&t=112) + +
+package Honeypot;
+
+use Socket qw/inet_ntoa/;
+
+my $dns = 'dnsbl.httpbl.org';
+my %types = (
+0	=> 'Search Engine',
+1	=> 'Suspicious',
+2	=> 'Harvester',
+4	=> 'Comment Spammer'
+);
+sub query {
+my $key = shift || die 'You need a key for this, you get one at http://www.projecthoneypot.org';
+my $ip = shift || do {
+warn 'no IP for request in Honeypot::query().';
+return;
+};
+
+my @parts = reverse split /\./, $ip;
+my $lookup_name = join'.', $key, @parts, $dns;
+
+my $answer = gethostbyname ($lookup_name);
+return unless $answer;
+$answer = inet_ntoa($answer);
+my(undef, $days, $threat, $type) = split /\./, $answer;
+my @types;
+while(my($bit, $typename) = each %types) {
+push @types, $typename if $bit & $type;
+}
+return {
+days => $days,
+threat => $threat,
+type => join ',', @types
+};
+
+}
+1;
+
+ +From the page: + +> The usage is simple: + +> use Honeypot; +> my $key = 'XXXXXXX'; # your key +> my $ip = '....'; the IP you want to check +> my $q = Honeypot::query($key, $ip); + +> use Data::Dumper; +> print Dumper $q; + +Any chance of having this as a plugin? + +I could give it a go, too. Would be fun to try my hand at Perl. --[[simonraven]] -- cgit v1.2.3 From c926d2d3f7a47e2c2918fd70634581ea8f1d11ff Mon Sep 17 00:00:00 2001 From: simonraven Date: Sun, 7 Feb 2010 20:30:59 +0000 Subject: --- doc/wishlist/http_bl_support.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/wishlist/http_bl_support.mdwn b/doc/wishlist/http_bl_support.mdwn index 30fb9c9b3..024c770d8 100644 --- a/doc/wishlist/http_bl_support.mdwn +++ b/doc/wishlist/http_bl_support.mdwn @@ -57,3 +57,5 @@ From the page: Any chance of having this as a plugin? I could give it a go, too. Would be fun to try my hand at Perl. --[[simonraven]] + +[[!tag wishlist]] -- cgit v1.2.3 From fb6e73b3698089f47ae63d1569225938699d84e1 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 8 Feb 2010 13:46:49 -0500 Subject: move to correct location --- doc/todo/http_bl_support.mdwn | 61 +++++++++++++++++++++++++++++++++++++++ doc/wishlist/http_bl_support.mdwn | 61 --------------------------------------- 2 files changed, 61 insertions(+), 61 deletions(-) create mode 100644 doc/todo/http_bl_support.mdwn delete mode 100644 doc/wishlist/http_bl_support.mdwn diff --git a/doc/todo/http_bl_support.mdwn b/doc/todo/http_bl_support.mdwn new file mode 100644 index 000000000..024c770d8 --- /dev/null +++ b/doc/todo/http_bl_support.mdwn @@ -0,0 +1,61 @@ +[Project Honeypot](http://projecthoneypot.org/) has an HTTP:BL API available to subscribed (it's free, accept donations) people/orgs. There's a basic perl package someone wrote, I'm including a copy here. + +[from here](http://projecthoneypot.org/board/read.php?f=10&i=112&t=112) + +
+package Honeypot;
+
+use Socket qw/inet_ntoa/;
+
+my $dns = 'dnsbl.httpbl.org';
+my %types = (
+0	=> 'Search Engine',
+1	=> 'Suspicious',
+2	=> 'Harvester',
+4	=> 'Comment Spammer'
+);
+sub query {
+my $key = shift || die 'You need a key for this, you get one at http://www.projecthoneypot.org';
+my $ip = shift || do {
+warn 'no IP for request in Honeypot::query().';
+return;
+};
+
+my @parts = reverse split /\./, $ip;
+my $lookup_name = join'.', $key, @parts, $dns;
+
+my $answer = gethostbyname ($lookup_name);
+return unless $answer;
+$answer = inet_ntoa($answer);
+my(undef, $days, $threat, $type) = split /\./, $answer;
+my @types;
+while(my($bit, $typename) = each %types) {
+push @types, $typename if $bit & $type;
+}
+return {
+days => $days,
+threat => $threat,
+type => join ',', @types
+};
+
+}
+1;
+
+ +From the page: + +> The usage is simple: + +> use Honeypot; +> my $key = 'XXXXXXX'; # your key +> my $ip = '....'; the IP you want to check +> my $q = Honeypot::query($key, $ip); + +> use Data::Dumper; +> print Dumper $q; + +Any chance of having this as a plugin? + +I could give it a go, too. Would be fun to try my hand at Perl. --[[simonraven]] + +[[!tag wishlist]] diff --git a/doc/wishlist/http_bl_support.mdwn b/doc/wishlist/http_bl_support.mdwn deleted file mode 100644 index 024c770d8..000000000 --- a/doc/wishlist/http_bl_support.mdwn +++ /dev/null @@ -1,61 +0,0 @@ -[Project Honeypot](http://projecthoneypot.org/) has an HTTP:BL API available to subscribed (it's free, accept donations) people/orgs. There's a basic perl package someone wrote, I'm including a copy here. - -[from here](http://projecthoneypot.org/board/read.php?f=10&i=112&t=112) - -
-package Honeypot;
-
-use Socket qw/inet_ntoa/;
-
-my $dns = 'dnsbl.httpbl.org';
-my %types = (
-0	=> 'Search Engine',
-1	=> 'Suspicious',
-2	=> 'Harvester',
-4	=> 'Comment Spammer'
-);
-sub query {
-my $key = shift || die 'You need a key for this, you get one at http://www.projecthoneypot.org';
-my $ip = shift || do {
-warn 'no IP for request in Honeypot::query().';
-return;
-};
-
-my @parts = reverse split /\./, $ip;
-my $lookup_name = join'.', $key, @parts, $dns;
-
-my $answer = gethostbyname ($lookup_name);
-return unless $answer;
-$answer = inet_ntoa($answer);
-my(undef, $days, $threat, $type) = split /\./, $answer;
-my @types;
-while(my($bit, $typename) = each %types) {
-push @types, $typename if $bit & $type;
-}
-return {
-days => $days,
-threat => $threat,
-type => join ',', @types
-};
-
-}
-1;
-
- -From the page: - -> The usage is simple: - -> use Honeypot; -> my $key = 'XXXXXXX'; # your key -> my $ip = '....'; the IP you want to check -> my $q = Honeypot::query($key, $ip); - -> use Data::Dumper; -> print Dumper $q; - -Any chance of having this as a plugin? - -I could give it a go, too. Would be fun to try my hand at Perl. --[[simonraven]] - -[[!tag wishlist]] -- cgit v1.2.3 From 4ce14aa621be4c6b8551555395b80b68fbcc1ffe Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 8 Feb 2010 13:49:34 -0500 Subject: nte blogspam --- doc/todo/http_bl_support.mdwn | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/todo/http_bl_support.mdwn b/doc/todo/http_bl_support.mdwn index 024c770d8..f7a46ee6c 100644 --- a/doc/todo/http_bl_support.mdwn +++ b/doc/todo/http_bl_support.mdwn @@ -2,6 +2,12 @@ [from here](http://projecthoneypot.org/board/read.php?f=10&i=112&t=112) +> The [[plugins/blogspam]] service already checks urls against +> the surbl, and has its own IP blacklist. The best way to +> support the HTTP:BL may be to add a plugin +> [there](http://blogspam.repository.steve.org.uk/file/cc858e497cae/server/plugins/). +> --[[Joey]] +
 package Honeypot;
 
-- 
cgit v1.2.3


From 06a56ea9d51d472175cb9279d92f9fb7a62fdf46 Mon Sep 17 00:00:00 2001
From: Javier Rojas 
Date: Mon, 8 Feb 2010 23:32:05 -0500
Subject: added tip about page navigation from within vim

---
 doc/tips/follow_wikilinks_from_inside_vim.mdwn | 43 ++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)
 create mode 100644 doc/tips/follow_wikilinks_from_inside_vim.mdwn

diff --git a/doc/tips/follow_wikilinks_from_inside_vim.mdwn b/doc/tips/follow_wikilinks_from_inside_vim.mdwn
new file mode 100644
index 000000000..93a95bc7a
--- /dev/null
+++ b/doc/tips/follow_wikilinks_from_inside_vim.mdwn
@@ -0,0 +1,43 @@
+The [ikiwiki-nav](http://www.vim.org/scripts/script.php?script_id=2968) plugin
+for vim eases the editing of IkiWiki wikis, by letting you "follow" the
+wikilinks on your file (page), and loading the file associated with a given
+wikilink in vim. The plugin takes care of following the ikiwiki linking rules
+to figure out which file a wikilink points to 
+
+The plugin also includes commands (and mappings) to make the cursor jump to the
+previous/next wikilink in the current file 
+
+##  Jumping to pages 
+
+To open the file associated to a wikilink, place the cursor over its text, and
+hit Enter (``). This functionality is also available through the
+`:IkiJumpToPage` command 
+
+## Moving to next/previous wikilink in current file 
+
+`Ctrl-j` will move the cursor to the next wikilink. `Ctrl-k` will move it to the
+previous wikilink. This functionality is also available through the
+`:IkiNextWikiLink` command. This command takes one argument, the direction to
+move into 
+
+  * `:IkiNextWikiLink 0` will look forward for the wikilink 
+  * `:IkiNextWikiLink 1` will look backwards for the wikilink 
+
+## Current issues: 
+
+  * The plugin only works for wikilinks contained in a single text line;
+    multiline wikilinks are not (yet) seen as such 
+
+## Notes 
+
+The official releases of the plugin are in the
+[vim.org script page](http://www.vim.org/scripts/script.php?script_id=2968)
+
+The latest version of this script can be found in the following location 
+
+
+
+Any feedback you can provide is appreciated; the contact details can be found
+inside the plugin
+
+[[!tag vim]]
-- 
cgit v1.2.3


From 59868bce02f10e1ed378f5625618198daca58d3a Mon Sep 17 00:00:00 2001
From: Javier Rojas 
Date: Mon, 8 Feb 2010 23:37:24 -0500
Subject: more notes about the ikiwiki-nav plugin

added installation notes

added pointer in the forum page to the created tip
---
 doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn | 4 ++++
 doc/tips/follow_wikilinks_from_inside_vim.mdwn                       | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn
index 0497b66b6..980b92740 100644
--- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn
+++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn
@@ -1,3 +1,7 @@
+**UPDATE** I have created a [[page|tips/follow_wikilinks_from_inside_vim]] in
+the tips section about the plugin, how to get it, install it and use it. Check
+that out. --[[jerojasro]]
+
 I wrote a vim function to help me navigate the wiki when I'm editing it. It extends the 'gf' (goto file) functionality. Once installed, you place the cursor on a wiki page name and press 'gf' (without the quotes); if the file exists, it gets loaded.
 
 This function takes into account the ikiwiki linking rules when deciding which file to go to.
diff --git a/doc/tips/follow_wikilinks_from_inside_vim.mdwn b/doc/tips/follow_wikilinks_from_inside_vim.mdwn
index 93a95bc7a..df8145a51 100644
--- a/doc/tips/follow_wikilinks_from_inside_vim.mdwn
+++ b/doc/tips/follow_wikilinks_from_inside_vim.mdwn
@@ -23,6 +23,10 @@ move into
   * `:IkiNextWikiLink 0` will look forward for the wikilink 
   * `:IkiNextWikiLink 1` will look backwards for the wikilink 
 
+## Installation
+
+Copy the `ikiwiki_nav.vim` file to your `.vim/ftplugin` directory.
+
 ## Current issues: 
 
   * The plugin only works for wikilinks contained in a single text line;
-- 
cgit v1.2.3


From f48e98a2ac0325f3e17b2c25151aa6af4ba93b20 Mon Sep 17 00:00:00 2001
From: Javier Rojas 
Date: Mon, 8 Feb 2010 23:39:06 -0500
Subject: redaction

---
 doc/tips/follow_wikilinks_from_inside_vim.mdwn | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/tips/follow_wikilinks_from_inside_vim.mdwn b/doc/tips/follow_wikilinks_from_inside_vim.mdwn
index df8145a51..015a4ecee 100644
--- a/doc/tips/follow_wikilinks_from_inside_vim.mdwn
+++ b/doc/tips/follow_wikilinks_from_inside_vim.mdwn
@@ -1,6 +1,6 @@
 The [ikiwiki-nav](http://www.vim.org/scripts/script.php?script_id=2968) plugin
 for vim eases the editing of IkiWiki wikis, by letting you "follow" the
-wikilinks on your file (page), and loading the file associated with a given
+wikilinks on your file (page), by loading the file associated with a given
 wikilink in vim. The plugin takes care of following the ikiwiki linking rules
 to figure out which file a wikilink points to 
 
-- 
cgit v1.2.3


From a4ec579d1a6632447db91f2e52e90633b96a070f Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Tue, 9 Feb 2010 16:24:14 -0500
Subject: amazon_s3: Fix to support the EU S3 datacenter, which is more picky
 about attempts to create already existing buckets.

---
 IkiWiki/Plugin/amazon_s3.pm | 6 +++++-
 debian/changelog            | 2 ++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/IkiWiki/Plugin/amazon_s3.pm b/IkiWiki/Plugin/amazon_s3.pm
index 3571c4189..cfd8cd347 100644
--- a/IkiWiki/Plugin/amazon_s3.pm
+++ b/IkiWiki/Plugin/amazon_s3.pm
@@ -132,6 +132,10 @@ sub getbucket {
 		});
 	}
 
+	if (! $bucket) {
+		# Try to use existing bucket.
+		$bucket=$s3->bucket($config{amazon_s3_bucket});
+	}
 	if (! $bucket) {
 		error(gettext("Failed to create S3 bucket: ").
 			$s3->err.": ".$s3->errstr."\n");
@@ -178,7 +182,7 @@ sub writefile ($$$;$$) {
 
 	# First, write the file to disk.
 	my $ret=$IkiWiki::Plugin::amazon_s3::subs{'IkiWiki::writefile'}->($file, $destdir, $content, $binary, $writer);
-		
+
 	my @keys=IkiWiki::Plugin::amazon_s3::file2keys("$destdir/$file");
 
 	# Store the data in S3.
diff --git a/debian/changelog b/debian/changelog
index 06d11aa29..358a5dc5c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -13,6 +13,8 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low
   * auto-blog.setup: Lock all pages, so only admin can post to the blog
     by default, and enable opendiscussion so others can comment.
   * Fix color and format plugins to appear in the websetup interface.
+  * amazon_s3: Fix to support the EU S3 datacenter, which is more picky
+    about attempts to create already existing buckets.
 
  -- Joey Hess   Tue, 26 Jan 2010 22:25:33 -0500
 
-- 
cgit v1.2.3


From 5b55237ab14b9916bf51dff06d9a12c9ad81d21e Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Wed, 10 Feb 2010 12:51:11 -0500
Subject: add a link to another vim plugin

---
 doc/tips/vim_syntax_highlighting.mdwn | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/doc/tips/vim_syntax_highlighting.mdwn b/doc/tips/vim_syntax_highlighting.mdwn
index 172b763c3..416318f28 100644
--- a/doc/tips/vim_syntax_highlighting.mdwn
+++ b/doc/tips/vim_syntax_highlighting.mdwn
@@ -1,4 +1,6 @@
 [[ikiwiki.vim]] is a vim syntax highlighting file for ikiwiki
-[[ikiwiki/markdown]] files. 
+[[ikiwiki/markdown]] files.
 
 Installation instructions are at the top of the file.
+
+See also: [[navigation_of_wiki_pages_on_local_filesystem_with_vim]]
-- 
cgit v1.2.3


From 99f32638fa768be331dfb20318082f7a49690bf2 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Wed, 10 Feb 2010 12:52:04 -0500
Subject: question

---
 doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn
index 980b92740..d3f074c96 100644
--- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn
+++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn
@@ -71,6 +71,9 @@ the plugin has, as of now, two problems:
 >
 >> GPL version 2 or later (if that doesn't cause any problems here). I'll add it
 >> to the file --[[jerojasro]]
+>>
+>>> I see you've put the plugin on vim.org. Do you think it makes sense to
+>>> also include a copy in ikiwiki? --[[Joey]] 
 > 
 > Also, I have a possible other approach for finding ikiwiki's root. One
 > could consider that any subdirectory of an ikiwiki wiki is itself
-- 
cgit v1.2.3


From 8e75bcd2dc192da1e649ae70c3dd6a181367eb2c Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Wed, 10 Feb 2010 12:55:46 -0500
Subject: fix

---
 doc/tips/vim_syntax_highlighting.mdwn | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/doc/tips/vim_syntax_highlighting.mdwn b/doc/tips/vim_syntax_highlighting.mdwn
index 416318f28..18b2f1c92 100644
--- a/doc/tips/vim_syntax_highlighting.mdwn
+++ b/doc/tips/vim_syntax_highlighting.mdwn
@@ -3,4 +3,5 @@
 
 Installation instructions are at the top of the file.
 
-See also: [[navigation_of_wiki_pages_on_local_filesystem_with_vim]]
+See also: [[follow_wikilinks_from_inside_vim]]
+[[!tag vim]]
-- 
cgit v1.2.3


From 08b335638c809268697bd97078225ece1065ff1c Mon Sep 17 00:00:00 2001
From: 
 "https://www.google.com/accounts/o8/id?id=AItOawn1lGvpPZ8dpuLSPLPa-jqpMef2KqeB1qI"
 
Date: Wed, 10 Feb 2010 19:59:35 +0000
Subject: reply, and suggestion

---
 .../navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn      | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn
index d3f074c96..781245f03 100644
--- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn
+++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn
@@ -74,6 +74,12 @@ the plugin has, as of now, two problems:
 >>
 >>> I see you've put the plugin on vim.org. Do you think it makes sense to
 >>> also include a copy in ikiwiki? --[[Joey]] 
+>>> 
+>>>> mmm, no. There would be two copies of it, and the git repo. I'd rather have 
+>>>> a unique place for the "official" version (vim.org), and another for the dev 
+>>>> version (its git repo).
+>>>> 
+>>>> actually, I would also suggest to upload the [[`ikiwiki.vim`|tips/vim_syntax_highlighting]] file to vim.org --[[jerojasro]]
 > 
 > Also, I have a possible other approach for finding ikiwiki's root. One
 > could consider that any subdirectory of an ikiwiki wiki is itself
-- 
cgit v1.2.3


From e91e88d68a833361f89a9c2fec119643f1295618 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Wed, 10 Feb 2010 15:09:08 -0500
Subject: response

---
 .../navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn     | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn
index 781245f03..6bd2eb110 100644
--- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn
+++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn
@@ -80,7 +80,12 @@ the plugin has, as of now, two problems:
 >>>> version (its git repo).
 >>>> 
 >>>> actually, I would also suggest to upload the [[`ikiwiki.vim`|tips/vim_syntax_highlighting]] file to vim.org --[[jerojasro]]
-> 
+>>>>>
+>>>>> If you have any interest in maintaining the syntax highlighting
+>>>>> plugin and putting it there, I'd be fine with that. I think it needs
+>>>>> some slight work to catch up with changes to ikiwiki's directives
+>>>>> (!-prefixed now), and wikilinks (able to have spaces now). --[[Joey]] 
+>
 > Also, I have a possible other approach for finding ikiwiki's root. One
 > could consider that any subdirectory of an ikiwiki wiki is itself
 > a standalone wiki, though probably one missing a toplevel index page.
-- 
cgit v1.2.3


From 8e0c0214bbef5ac67c5bd0a300e44d20f12f02f2 Mon Sep 17 00:00:00 2001
From: 
 "https://www.google.com/accounts/o8/id?id=AItOawn1lGvpPZ8dpuLSPLPa-jqpMef2KqeB1qI"
 
Date: Wed, 10 Feb 2010 23:30:11 +0000
Subject:

---
 doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn
index 6bd2eb110..7bc032949 100644
--- a/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn
+++ b/doc/forum/navigation_of_wiki_pages_on_local_filesystem_with_vim.mdwn
@@ -84,7 +84,10 @@ the plugin has, as of now, two problems:
 >>>>> If you have any interest in maintaining the syntax highlighting
 >>>>> plugin and putting it there, I'd be fine with that. I think it needs
 >>>>> some slight work to catch up with changes to ikiwiki's directives
->>>>> (!-prefixed now), and wikilinks (able to have spaces now). --[[Joey]] 
+>>>>> (!-prefixed now), and wikilinks (able to have spaces now). --[[Joey]]
+>>>>> 
+>>>>>> I don't really know too much about syntax definitions in vim. But I'll give it a stab. I know it fails when there are 2 \[[my text|link]] wikilinks in the same page.
+>>>>>> I'm not promising anything, though ;) --[[jerojasro]]
 >
 > Also, I have a possible other approach for finding ikiwiki's root. One
 > could consider that any subdirectory of an ikiwiki wiki is itself
-- 
cgit v1.2.3


From 26c68a0c7ae6dd7810a2c4277b6589e03e4e9c47 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Thu, 11 Feb 2010 16:28:22 -0500
Subject: refresh patch; remaining problem

---
 doc/bugs/anonok_vs._httpauth.mdwn | 31 +++++++++++++++++++++++--------
 1 file changed, 23 insertions(+), 8 deletions(-)

diff --git a/doc/bugs/anonok_vs._httpauth.mdwn b/doc/bugs/anonok_vs._httpauth.mdwn
index 1940fdad8..d301b53fb 100644
--- a/doc/bugs/anonok_vs._httpauth.mdwn
+++ b/doc/bugs/anonok_vs._httpauth.mdwn
@@ -65,7 +65,7 @@ like anonok first. I have not tested this. --[[Joey]]
 
 
 diff --git a/IkiWiki/Plugin/httpauth.pm b/IkiWiki/Plugin/httpauth.pm
-index 127c321..c181164 100644
+index 127c321..a18f8ca 100644
 --- a/IkiWiki/Plugin/httpauth.pm
 +++ b/IkiWiki/Plugin/httpauth.pm
 @@ -9,6 +9,8 @@ use IkiWiki 3.00;
@@ -77,11 +77,13 @@ index 127c321..c181164 100644
  }
  
  sub getsetup () {
-@@ -33,10 +35,20 @@ sub auth ($$) {
+@@ -33,9 +35,21 @@ sub auth ($$) {
  	if (defined $cgi->remote_user()) {
  		$session->param("name", $cgi->remote_user());
  	}
 -	elsif (defined $config{cgiauthurl}) {
+-		IkiWiki::redirect($cgi, $config{cgiauthurl}.'?'.$cgi->query_string());
+-		exit;
 +}
 +
 +sub canedit ($$$) {
@@ -90,16 +92,29 @@ index 127c321..c181164 100644
 +	my $session=shift;
 +
 +	if (! defined $cgi->remote_user() && defined $config{cgiauthurl}) {
- 		IkiWiki::redirect($cgi, $config{cgiauthurl}.'?'.$cgi->query_string());
- 		exit;
- 	}
++		return sub {
++			IkiWiki::redirect($cgi, $config{cgiauthurl}.'?'.$cgi->query_string());
++			exit;
++		};
++	}
 +	else {
 +		return undef;
-+	}
-}
+ 	}
+ }
  
- 1
 
> With `anonok` enabled, this works for anonymous editing of an > existing Discussion page. auth is still needed to create one. --[[schmonz]] + +>> Refreshed above patch to fix that. --[[Joey]] + +>> Remaining issue: Since both signinedit and httpauth have canedit hooks that +>> run "last", behavior will vary depending on which wins and really goes +>> last. So mixing this with openid or passwordauth won't work yet, though +>> it will work mixed with anonok. +>> +>> Seems like what needs to happen is for httpauth's canedit to run before +>> signinedit's, however it still needs to run relatively late; after eg, +>> anonok's hook. Better hook ordering needed. I knew we'd need it sooner +>> or later! --[[Joey]] -- cgit v1.2.3 From c47712b340153fca4015f8d0e344ced5b12a3e17 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Feb 2010 16:35:55 -0500 Subject: clarify --- doc/bugs/anonok_vs._httpauth.mdwn | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/doc/bugs/anonok_vs._httpauth.mdwn b/doc/bugs/anonok_vs._httpauth.mdwn index d301b53fb..b738e3b6c 100644 --- a/doc/bugs/anonok_vs._httpauth.mdwn +++ b/doc/bugs/anonok_vs._httpauth.mdwn @@ -109,12 +109,8 @@ index 127c321..a18f8ca 100644 >> Refreshed above patch to fix that. --[[Joey]] ->> Remaining issue: Since both signinedit and httpauth have canedit hooks that ->> run "last", behavior will vary depending on which wins and really goes ->> last. So mixing this with openid or passwordauth won't work yet, though ->> it will work mixed with anonok. ->> ->> Seems like what needs to happen is for httpauth's canedit to run before ->> signinedit's, however it still needs to run relatively late; after eg, ->> anonok's hook. Better hook ordering needed. I knew we'd need it sooner ->> or later! --[[Joey]] +>> Remaining issue: This patch will work with anonok, but not openid or +>> passwordauth, both of which want to display a login page at the same +>> time that httpauth is redirecting to the cgiauthurl. As mentioned above, +>> the only way to deal with that would be to add a link to the signin page +>> that does the httpauth signin. --[[Joey]] -- cgit v1.2.3 From f2d6d4f6b24bb399481c40dc6eb6f3fe25190c5d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Feb 2010 16:36:19 -0500 Subject: patch so far --- IkiWiki/Plugin/httpauth.pm | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/IkiWiki/Plugin/httpauth.pm b/IkiWiki/Plugin/httpauth.pm index 127c321f0..a18f8ca54 100644 --- a/IkiWiki/Plugin/httpauth.pm +++ b/IkiWiki/Plugin/httpauth.pm @@ -9,6 +9,8 @@ use IkiWiki 3.00; sub import { hook(type => "getsetup", id => "httpauth", call => \&getsetup); hook(type => "auth", id => "httpauth", call => \&auth); + hook(type => "canedit", id => "httpauth", call => \&canedit, + last => 1); } sub getsetup () { @@ -33,9 +35,21 @@ sub auth ($$) { if (defined $cgi->remote_user()) { $session->param("name", $cgi->remote_user()); } - elsif (defined $config{cgiauthurl}) { - IkiWiki::redirect($cgi, $config{cgiauthurl}.'?'.$cgi->query_string()); - exit; +} + +sub canedit ($$$) { + my $page=shift; + my $cgi=shift; + my $session=shift; + + if (! defined $cgi->remote_user() && defined $config{cgiauthurl}) { + return sub { + IkiWiki::redirect($cgi, $config{cgiauthurl}.'?'.$cgi->query_string()); + exit; + }; + } + else { + return undef; } } -- cgit v1.2.3 From 046095552ac231366d71a3c7a84bdc6d46662212 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Feb 2010 17:26:09 -0500 Subject: httpauth: When cgiauthurl is configured, httpauth can now be used alongside other authentication methods (like openid or anonok). Rather than always redirect to the cgiauthurl for authentication, there is now a button on the login form to use it. --- IkiWiki/Plugin/httpauth.pm | 35 +++++++++++++++++++++++++++++++---- IkiWiki/Plugin/openid.pm | 2 +- debian/changelog | 4 ++++ doc/bugs/anonok_vs._httpauth.mdwn | 2 ++ doc/plugins/httpauth.mdwn | 9 +++++---- 5 files changed, 43 insertions(+), 9 deletions(-) diff --git a/IkiWiki/Plugin/httpauth.pm b/IkiWiki/Plugin/httpauth.pm index a18f8ca54..d0d4da0b7 100644 --- a/IkiWiki/Plugin/httpauth.pm +++ b/IkiWiki/Plugin/httpauth.pm @@ -11,6 +11,8 @@ sub import { hook(type => "auth", id => "httpauth", call => \&auth); hook(type => "canedit", id => "httpauth", call => \&canedit, last => 1); + hook(type => "formbuilder_setup", id => "httpauth", + call => \&formbuilder_setup); } sub getsetup () { @@ -27,6 +29,14 @@ sub getsetup () { rebuild => 0, }, } + +sub redir_cgiauthurl ($$) { + my $cgi=shift; + my $params=shift; + + IkiWiki::redirect($cgi, $config{cgiauthurl}.'?'.$params); + exit; +} sub auth ($$) { my $cgi=shift; @@ -43,14 +53,31 @@ sub canedit ($$$) { my $session=shift; if (! defined $cgi->remote_user() && defined $config{cgiauthurl}) { - return sub { - IkiWiki::redirect($cgi, $config{cgiauthurl}.'?'.$cgi->query_string()); - exit; - }; + return sub { redir_cgiauthurl($cgi, $cgi->query_string()) }; } else { return undef; } } +sub formbuilder_setup (@) { + my %params=@_; + + my $form=$params{form}; + my $session=$params{session}; + my $cgi=$params{cgi}; + my $buttons=$params{buttons}; + + if ($form->title eq "signin" && + ! defined $cgi->remote_user() && defined $config{cgiauthurl}) { + my $button_text="Login with HTTP auth"; + push @$buttons, $button_text; + + if ($form->submitted && $form->submitted eq $button_text) { + redir_cgiauthurl($cgi, "do=postsignin"); + exit; + } + } +} + 1 diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index b60740c0e..382d8286f 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -56,7 +56,7 @@ sub formbuilder_setup (@) { # OpenID fieldset. $form->fieldsets("OpenID"); - $form->field( + $form->field( name => "openid_url", label => gettext("Log in with")." ".htmllink("", "", "ikiwiki/OpenID", noimageinline => 1), fieldset => "OpenID", diff --git a/debian/changelog b/debian/changelog index 358a5dc5c..3dd68558e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -15,6 +15,10 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low * Fix color and format plugins to appear in the websetup interface. * amazon_s3: Fix to support the EU S3 datacenter, which is more picky about attempts to create already existing buckets. + * httpauth: When cgiauthurl is configured, httpauth can now be used + alongside other authentication methods (like openid or anonok). Rather + than always redirect to the cgiauthurl for authentication, there is now + a button on the login form to use it. -- Joey Hess Tue, 26 Jan 2010 22:25:33 -0500 diff --git a/doc/bugs/anonok_vs._httpauth.mdwn b/doc/bugs/anonok_vs._httpauth.mdwn index b738e3b6c..bff37e18b 100644 --- a/doc/bugs/anonok_vs._httpauth.mdwn +++ b/doc/bugs/anonok_vs._httpauth.mdwn @@ -114,3 +114,5 @@ index 127c321..a18f8ca 100644 >> time that httpauth is redirecting to the cgiauthurl. As mentioned above, >> the only way to deal with that would be to add a link to the signin page >> that does the httpauth signin. --[[Joey]] + +>>> That's dealt with in final version. [[done]] --[[Joey]] diff --git a/doc/plugins/httpauth.mdwn b/doc/plugins/httpauth.mdwn index 77796a3d7..a7aac558b 100644 --- a/doc/plugins/httpauth.mdwn +++ b/doc/plugins/httpauth.mdwn @@ -14,10 +14,11 @@ signed into the wiki. This method is suitable only for private wikis. ## separate cgiauthurl To use httpauth for a wiki where the content is public, and where -the `ikiwiki.cgi` needs to be usable without authentication (for searching -and so on), you can configure a separate url that is used for -authentication, via the `cgiauthurl` option in the setup file. This -url will then be redirected to whenever authentication is needed. +the `ikiwiki.cgi` needs to be usable without authentication (for searching, +or logging in using other methods, and so on), you can configure a separate +url that is used for authentication, via the `cgiauthurl` option in the setup +file. This url will then be redirected to when a user chooses to log in using +httpauth. A typical setup is to make an `auth` subdirectory, and symlink `ikiwiki.cgi` into it. Then configure the web server to require authentication only for -- cgit v1.2.3 From e11876b7003c700fbc3717ca9c5af5aac3b72ac2 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Feb 2010 18:25:10 -0500 Subject: httpauth: Add httpauth_pagespec setting that can be used to limit pages to only being edited via users authed with httpauth. --- IkiWiki.pm | 7 ++++- IkiWiki/Plugin/httpauth.pm | 75 +++++++++++++++++++++++++++++++++------------- debian/changelog | 2 ++ doc/plugins/httpauth.mdwn | 9 ++++++ 4 files changed, 72 insertions(+), 21 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 2a0132745..de7dbfc79 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -941,7 +941,12 @@ sub linkpage ($) { sub cgiurl (@) { my %params=@_; - return $config{cgiurl}."?". + my $cgiurl=$config{cgiurl}; + if (exists $params{cgiurl}) { + $cgiurl=$params{cgiurl}; + delete $params{cgiurl}; + } + return $cgiurl."?". join("&", map $_."=".uri_escape_utf8($params{$_}), keys %params); } diff --git a/IkiWiki/Plugin/httpauth.pm b/IkiWiki/Plugin/httpauth.pm index d0d4da0b7..202ca1153 100644 --- a/IkiWiki/Plugin/httpauth.pm +++ b/IkiWiki/Plugin/httpauth.pm @@ -9,10 +9,10 @@ use IkiWiki 3.00; sub import { hook(type => "getsetup", id => "httpauth", call => \&getsetup); hook(type => "auth", id => "httpauth", call => \&auth); - hook(type => "canedit", id => "httpauth", call => \&canedit, - last => 1); hook(type => "formbuilder_setup", id => "httpauth", call => \&formbuilder_setup); + hook(type => "canedit", id => "httpauth", call => \&canedit); + hook(type => "pagetemplate", id => "httpauth", call => \&pagetemplate); } sub getsetup () { @@ -28,13 +28,20 @@ sub getsetup () { safe => 1, rebuild => 0, }, + httpauth_pagespec => { + type => "pagespec", + example => "!*/Discussion", + description => "PageSpec of pages where only httpauth will be used for authentication", + safe => 0, + rebuild => 0, + }, } -sub redir_cgiauthurl ($$) { +sub redir_cgiauthurl ($;@) { my $cgi=shift; - my $params=shift; - IkiWiki::redirect($cgi, $config{cgiauthurl}.'?'.$params); + IkiWiki::redirect($cgi, + IkiWiki::cgiurl(cgiurl => $config{cgiauthurl}, @_)); exit; } @@ -47,19 +54,6 @@ sub auth ($$) { } } -sub canedit ($$$) { - my $page=shift; - my $cgi=shift; - my $session=shift; - - if (! defined $cgi->remote_user() && defined $config{cgiauthurl}) { - return sub { redir_cgiauthurl($cgi, $cgi->query_string()) }; - } - else { - return undef; - } -} - sub formbuilder_setup (@) { my %params=@_; @@ -74,10 +68,51 @@ sub formbuilder_setup (@) { push @$buttons, $button_text; if ($form->submitted && $form->submitted eq $button_text) { - redir_cgiauthurl($cgi, "do=postsignin"); - exit; + # bounce thru cgiauthurl and then back to + # the stored postsignin action + redir_cgiauthurl($cgi, do => "postsignin"); } } } +sub test_httpauth_pagespec ($) { + my $page=shift; + + return defined $config{httpauth_pagespec} && + length $config{httpauth_pagespec} && + defined $config{cgiauthurl} && + pagespec_match($page, $config{httpauth_pagespec}); +} + +sub canedit ($$$) { + my $page=shift; + my $cgi=shift; + my $session=shift; + + if (! defined $cgi->remote_user() && test_httpauth_pagespec($page)) { + return sub { + IkiWiki::redirect($cgi, + $config{cgiauthurl}.'?'.$cgi->query_string()); + exit; + }; + } + else { + return undef; + } +} + +sub pagetemplate (@_) { + my %params=@_; + my $template=$params{template}; + + if ($template->param("editurl") && + test_httpauth_pagespec($params{page})) { + # go directly to cgiauthurl when editing a page matching + # the pagespec + $template->param(editurl => IkiWiki::cgiurl( + cgiurl => $config{cgiauthurl}, + do => "edit", page => $params{page})); + } +} + 1 diff --git a/debian/changelog b/debian/changelog index 3dd68558e..14be7ec69 100644 --- a/debian/changelog +++ b/debian/changelog @@ -19,6 +19,8 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low alongside other authentication methods (like openid or anonok). Rather than always redirect to the cgiauthurl for authentication, there is now a button on the login form to use it. + * httpauth: Add httpauth_pagespec setting that can be used to limit + pages to only being edited via users authed with httpauth. -- Joey Hess Tue, 26 Jan 2010 22:25:33 -0500 diff --git a/doc/plugins/httpauth.mdwn b/doc/plugins/httpauth.mdwn index a7aac558b..0eda5554f 100644 --- a/doc/plugins/httpauth.mdwn +++ b/doc/plugins/httpauth.mdwn @@ -24,3 +24,12 @@ A typical setup is to make an `auth` subdirectory, and symlink `ikiwiki.cgi` into it. Then configure the web server to require authentication only for access to the `auth` subdirectory. Then `cgiauthurl` is pointed at this symlink. + +## using only httpauth for some pages + +If you want to only use httpauth for editing some pages, while allowing +other authentication methods to be used for other pages, you can +configure `httpauth_pagespec` in the setup file. This makes Edit +links on pages that match the [[ikiwiki/PageSpec]] automatically use +the `cgiauthurl`, and prevents matching pages from being edited by +users authentication via other methods. -- cgit v1.2.3 From e6678275a98bd00e888018409998fd67686149c8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Feb 2010 18:32:07 -0500 Subject: fix logic error --- IkiWiki/Plugin/httpauth.pm | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/IkiWiki/Plugin/httpauth.pm b/IkiWiki/Plugin/httpauth.pm index 202ca1153..5b7d65253 100644 --- a/IkiWiki/Plugin/httpauth.pm +++ b/IkiWiki/Plugin/httpauth.pm @@ -75,13 +75,16 @@ sub formbuilder_setup (@) { } } +sub need_httpauth_pagespec () { + return defined $config{httpauth_pagespec} && + length $config{httpauth_pagespec} && + defined $config{cgiauthurl}; +} + sub test_httpauth_pagespec ($) { my $page=shift; - return defined $config{httpauth_pagespec} && - length $config{httpauth_pagespec} && - defined $config{cgiauthurl} && - pagespec_match($page, $config{httpauth_pagespec}); + pagespec_match($page, $config{httpauth_pagespec}); } sub canedit ($$$) { @@ -89,7 +92,9 @@ sub canedit ($$$) { my $cgi=shift; my $session=shift; - if (! defined $cgi->remote_user() && test_httpauth_pagespec($page)) { + if (! defined $cgi->remote_user() && + need_httpauth_pagespec() && + ! test_httpauth_pagespec($page)) { return sub { IkiWiki::redirect($cgi, $config{cgiauthurl}.'?'.$cgi->query_string()); @@ -106,6 +111,7 @@ sub pagetemplate (@_) { my $template=$params{template}; if ($template->param("editurl") && + need_httpauth_pagespec() && test_httpauth_pagespec($params{page})) { # go directly to cgiauthurl when editing a page matching # the pagespec -- cgit v1.2.3 From 6f1d6236185148930a2c7694c9ae59877997d0d4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Feb 2010 19:54:40 -0500 Subject: partially fix httpauth canedit hook My logic was right before. Cleaned up some code. (Page creation is still a problem.) Also, I removed the Edit url munging, because that is not necessary with the canedit hook, since canedit will handle redirection through cgiauthurl if necessary. --- IkiWiki/Plugin/httpauth.pm | 43 +++++++++++++------------------------------ 1 file changed, 13 insertions(+), 30 deletions(-) diff --git a/IkiWiki/Plugin/httpauth.pm b/IkiWiki/Plugin/httpauth.pm index 5b7d65253..b2bb2701a 100644 --- a/IkiWiki/Plugin/httpauth.pm +++ b/IkiWiki/Plugin/httpauth.pm @@ -11,8 +11,8 @@ sub import { hook(type => "auth", id => "httpauth", call => \&auth); hook(type => "formbuilder_setup", id => "httpauth", call => \&formbuilder_setup); - hook(type => "canedit", id => "httpauth", call => \&canedit); - hook(type => "pagetemplate", id => "httpauth", call => \&pagetemplate); + hook(type => "canedit", id => "httpauth", call => \&canedit, + first => 1); } sub getsetup () { @@ -41,7 +41,9 @@ sub redir_cgiauthurl ($;@) { my $cgi=shift; IkiWiki::redirect($cgi, - IkiWiki::cgiurl(cgiurl => $config{cgiauthurl}, @_)); + @_ > 1 ? IkiWiki::cgiurl(cgiurl => $config{cgiauthurl}, @_) + : $config{cgiauthurl}."?@_" + ); exit; } @@ -75,16 +77,11 @@ sub formbuilder_setup (@) { } } -sub need_httpauth_pagespec () { - return defined $config{httpauth_pagespec} && - length $config{httpauth_pagespec} && - defined $config{cgiauthurl}; -} - sub test_httpauth_pagespec ($) { my $page=shift; - pagespec_match($page, $config{httpauth_pagespec}); + return ( + ); } sub canedit ($$$) { @@ -93,12 +90,13 @@ sub canedit ($$$) { my $session=shift; if (! defined $cgi->remote_user() && - need_httpauth_pagespec() && - ! test_httpauth_pagespec($page)) { + defined $config{httpauth_pagespec} && + length $config{httpauth_pagespec} && + defined $config{cgiauthurl} && + pagespec_match($page, $config{httpauth_pagespec})) { return sub { - IkiWiki::redirect($cgi, - $config{cgiauthurl}.'?'.$cgi->query_string()); - exit; + # bounce thru cgiauthurl and back to edit action + redir_cgiauthurl($cgi, $cgi->query_string()); }; } else { @@ -106,19 +104,4 @@ sub canedit ($$$) { } } -sub pagetemplate (@_) { - my %params=@_; - my $template=$params{template}; - - if ($template->param("editurl") && - need_httpauth_pagespec() && - test_httpauth_pagespec($params{page})) { - # go directly to cgiauthurl when editing a page matching - # the pagespec - $template->param(editurl => IkiWiki::cgiurl( - cgiurl => $config{cgiauthurl}, - do => "edit", page => $params{page})); - } -} - 1 -- cgit v1.2.3 From 7af18f2a1ec8b5ce4764813b0464112f517e806f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Feb 2010 20:13:30 -0500 Subject: reorder canedit checks during page creation to have best_loc first When creating a page, multiple locations are tested to see if they can be edited. If all fail, one of the failure subs is called, to log the user in to allow them to proceed with the edit. So far so good. But, what if some pages fail for one reason, and some for another? This occurs when httpauth_pagespec is used in conjunction with signinedit (and openid or something). When the user is not signed in at all The former will fail to edit a page because the user was not httpauthed. The latter will fail to edit a different page, because the user was not signed in. One of their failure methods gets to run first. The page creation code always ran the failure method corresponding to the topmost page location. So, when editing a foo/Discussion page, and with httpauth_pagespec => "*!/Discussion", it ran the httpauth failure method, which was exactly the wrong thing to do. I fixed this by making it instead run the failure method for the *best* page location. In the above example, that's foo/Discussion, so signinedit runs, as desired, and we get the signin page. This seems like it will be the right choice, or at least an acceptable choice. If a user wants to use httpauth they can always choose it on the signin page. --- IkiWiki/Plugin/editpage.pm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm index 219386a30..9211cca89 100644 --- a/IkiWiki/Plugin/editpage.pm +++ b/IkiWiki/Plugin/editpage.pm @@ -272,8 +272,10 @@ sub cgi_editpage ($$) { check_canedit($_, $q, $session, 1) } @page_locs; if (! @editable_locs) { - # let it throw an error this time - map { check_canedit($_, $q, $session) } @page_locs; + # now let it throw an error, or prompt for + # login + map { check_canedit($_, $q, $session) } + ($best_loc, @page_locs); } my @page_types; -- cgit v1.2.3 From c923e0ba3377f85107ccea1933a042aaec675c77 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Feb 2010 20:39:10 -0500 Subject: Allow globs to be used in user() pagespecs. --- IkiWiki.pm | 4 +++- debian/changelog | 1 + doc/ikiwiki/pagespec.mdwn | 3 ++- t/pagespec_match.t | 9 ++++++++- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index de7dbfc79..a96ff1236 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2266,11 +2266,13 @@ sub match_user ($$;@) { my $user=shift; my %params=@_; + my $regexp=IkiWiki::glob2re($user); + if (! exists $params{user}) { return IkiWiki::ErrorReason->new("no user specified"); } - if (defined $params{user} && lc $params{user} eq lc $user) { + if (defined $params{user} && $params{user}=~/^$regexp$/i) { return IkiWiki::SuccessReason->new("user is $user"); } elsif (! defined $params{user}) { diff --git a/debian/changelog b/debian/changelog index 14be7ec69..d74abd0f9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -21,6 +21,7 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low a button on the login form to use it. * httpauth: Add httpauth_pagespec setting that can be used to limit pages to only being edited via users authed with httpauth. + * Allow globs to be used in user() pagespecs. -- Joey Hess Tue, 26 Jan 2010 22:25:33 -0500 diff --git a/doc/ikiwiki/pagespec.mdwn b/doc/ikiwiki/pagespec.mdwn index 5f0f44e2e..8d8b1a507 100644 --- a/doc/ikiwiki/pagespec.mdwn +++ b/doc/ikiwiki/pagespec.mdwn @@ -44,7 +44,8 @@ Some more elaborate limits can be added to what matches using these functions: metadata, matching the specified glob. * "`user(username)`" - tests whether a modification is being made by a user with the specified username. If openid is enabled, an openid can also - be put here. + be put here. Glob patterns can be used in the username. For example, + to match all openid users, use `user(*://.*)` * "`admin()`" - tests whether a modification is being made by one of the wiki admins. * "`ip(address)`" - tests whether a modification is being made from the diff --git a/t/pagespec_match.t b/t/pagespec_match.t index b96947407..197ff818b 100755 --- a/t/pagespec_match.t +++ b/t/pagespec_match.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 64; +use Test::More tests => 70; BEGIN { use_ok("IkiWiki"); } @@ -40,6 +40,13 @@ ok(! pagespec_match("foo", "foo and bar"), "foo and bar"); ok(pagespec_match("{f}oo", "{*}*"), "curly match"); ok(! pagespec_match("foo", "{*}*"), "curly !match"); +ok(pagespec_match("somepage", "user(frodo)", user => "frodo")); +ok(pagespec_match("somepage", "user(frodo)", user => "Frodo")); +ok(! pagespec_match("somepage", "user(frodo)", user => "Sam")); +ok(pagespec_match("somepage", "user(*o)", user => "Bilbo")); +ok(pagespec_match("somepage", "user(*o)", user => "frodo")); +ok(! pagespec_match("somepage", "user(*o)", user => "Sam")); + # The link and backlink stuff needs this. $config{userdir}=""; $links{foo}=[qw{bar baz}]; -- cgit v1.2.3 From a63929f6cc7778ffc4ba57d784cdf2206ec650c7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Feb 2010 22:24:15 -0500 Subject: Group related plugins into sections in the setup file, and drop unused rcs plugins from the setup file. --- IkiWiki/Plugin/anonok.pm | 1 + IkiWiki/Plugin/blogspam.pm | 1 + IkiWiki/Plugin/bzr.pm | 1 + IkiWiki/Plugin/conditional.pm | 1 + IkiWiki/Plugin/cvs.pm | 1 + IkiWiki/Plugin/darcs.pm | 1 + IkiWiki/Plugin/editpage.pm | 1 + IkiWiki/Plugin/git.pm | 1 + IkiWiki/Plugin/htmlscrubber.pm | 1 + IkiWiki/Plugin/httpauth.pm | 1 + IkiWiki/Plugin/inline.pm | 1 + IkiWiki/Plugin/link.pm | 1 + IkiWiki/Plugin/lockedit.pm | 1 + IkiWiki/Plugin/mdwn.pm | 1 + IkiWiki/Plugin/mercurial.pm | 1 + IkiWiki/Plugin/meta.pm | 1 + IkiWiki/Plugin/moderatedcomments.pm | 1 + IkiWiki/Plugin/monotone.pm | 1 + IkiWiki/Plugin/opendiscussion.pm | 1 + IkiWiki/Plugin/openid.pm | 1 + IkiWiki/Plugin/parentlinks.pm | 1 + IkiWiki/Plugin/passwordauth.pm | 1 + IkiWiki/Plugin/recentchanges.pm | 1 + IkiWiki/Plugin/signinedit.pm | 1 + IkiWiki/Plugin/svn.pm | 1 + IkiWiki/Plugin/tla.pm | 1 + IkiWiki/Setup.pm | 32 ++++++++++++++++++++++++++------ IkiWiki/Setup/Standard.pm | 8 ++++++++ debian/changelog | 2 ++ doc/plugins/write.mdwn | 13 ++++++++----- 30 files changed, 70 insertions(+), 11 deletions(-) diff --git a/IkiWiki/Plugin/anonok.pm b/IkiWiki/Plugin/anonok.pm index 243b98920..0e74cbfad 100644 --- a/IkiWiki/Plugin/anonok.pm +++ b/IkiWiki/Plugin/anonok.pm @@ -15,6 +15,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "auth", }, anonok_pagespec => { type => "pagespec", diff --git a/IkiWiki/Plugin/blogspam.pm b/IkiWiki/Plugin/blogspam.pm index 626c8ec42..c4e5cf390 100644 --- a/IkiWiki/Plugin/blogspam.pm +++ b/IkiWiki/Plugin/blogspam.pm @@ -18,6 +18,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "auth", }, blogspam_pagespec => { type => 'pagespec', diff --git a/IkiWiki/Plugin/bzr.pm b/IkiWiki/Plugin/bzr.pm index 883007367..1ffdc2353 100644 --- a/IkiWiki/Plugin/bzr.pm +++ b/IkiWiki/Plugin/bzr.pm @@ -36,6 +36,7 @@ sub getsetup () { plugin => { safe => 0, # rcs plugin rebuild => undef, + section => "rcs", }, bzr_wrapper => { type => "string", diff --git a/IkiWiki/Plugin/conditional.pm b/IkiWiki/Plugin/conditional.pm index aad617812..beeddc672 100644 --- a/IkiWiki/Plugin/conditional.pm +++ b/IkiWiki/Plugin/conditional.pm @@ -16,6 +16,7 @@ sub getsetup { plugin => { safe => 1, rebuild => undef, + section => "core", }, } diff --git a/IkiWiki/Plugin/cvs.pm b/IkiWiki/Plugin/cvs.pm index f6db8bc98..26a3e9dd2 100644 --- a/IkiWiki/Plugin/cvs.pm +++ b/IkiWiki/Plugin/cvs.pm @@ -85,6 +85,7 @@ sub getsetup () { plugin => { safe => 0, # rcs plugin rebuild => undef, + section => "rcs", }, cvsrepo => { type => "string", diff --git a/IkiWiki/Plugin/darcs.pm b/IkiWiki/Plugin/darcs.pm index 0d68f27e5..1c9538e83 100644 --- a/IkiWiki/Plugin/darcs.pm +++ b/IkiWiki/Plugin/darcs.pm @@ -92,6 +92,7 @@ sub getsetup() { plugin => { safe => 0, # rcs plugin rebuild => undef, + section => "rcs", }, darcs_wrapper => { type => "string", diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm index 9211cca89..44fe5514a 100644 --- a/IkiWiki/Plugin/editpage.pm +++ b/IkiWiki/Plugin/editpage.pm @@ -17,6 +17,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, + section => "core", }, } diff --git a/IkiWiki/Plugin/git.pm b/IkiWiki/Plugin/git.pm index 1eec6aee6..b02f4a5ed 100644 --- a/IkiWiki/Plugin/git.pm +++ b/IkiWiki/Plugin/git.pm @@ -68,6 +68,7 @@ sub getsetup () { plugin => { safe => 0, # rcs plugin rebuild => undef, + section => "rcs", }, git_wrapper => { type => "string", diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm index a249cdf7a..ee284a45c 100644 --- a/IkiWiki/Plugin/htmlscrubber.pm +++ b/IkiWiki/Plugin/htmlscrubber.pm @@ -40,6 +40,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "core", }, htmlscrubber_skip => { type => "pagespec", diff --git a/IkiWiki/Plugin/httpauth.pm b/IkiWiki/Plugin/httpauth.pm index b2bb2701a..478f67446 100644 --- a/IkiWiki/Plugin/httpauth.pm +++ b/IkiWiki/Plugin/httpauth.pm @@ -20,6 +20,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "auth", }, cgiauthurl => { type => "string", diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 401852513..44919e58c 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -49,6 +49,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "core", }, rss => { type => "boolean", diff --git a/IkiWiki/Plugin/link.pm b/IkiWiki/Plugin/link.pm index 4c1add985..3838aec09 100644 --- a/IkiWiki/Plugin/link.pm +++ b/IkiWiki/Plugin/link.pm @@ -20,6 +20,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, + section => "core", }, } diff --git a/IkiWiki/Plugin/lockedit.pm b/IkiWiki/Plugin/lockedit.pm index 74ddbb153..1466e8337 100644 --- a/IkiWiki/Plugin/lockedit.pm +++ b/IkiWiki/Plugin/lockedit.pm @@ -15,6 +15,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "auth", }, locked_pages => { type => "pagespec", diff --git a/IkiWiki/Plugin/mdwn.pm b/IkiWiki/Plugin/mdwn.pm index 3de59ef3d..4ddf097ba 100644 --- a/IkiWiki/Plugin/mdwn.pm +++ b/IkiWiki/Plugin/mdwn.pm @@ -16,6 +16,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, # format plugin + section => "core", }, multimarkdown => { type => "boolean", diff --git a/IkiWiki/Plugin/mercurial.pm b/IkiWiki/Plugin/mercurial.pm index 11fdec529..ea00a3364 100644 --- a/IkiWiki/Plugin/mercurial.pm +++ b/IkiWiki/Plugin/mercurial.pm @@ -36,6 +36,7 @@ sub getsetup () { plugin => { safe => 0, # rcs plugin rebuild => undef, + section => "rcs", }, mercurial_wrapper => { type => "string", diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm index 55c9ddbd1..5f046cb2a 100644 --- a/IkiWiki/Plugin/meta.pm +++ b/IkiWiki/Plugin/meta.pm @@ -20,6 +20,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "core", }, } diff --git a/IkiWiki/Plugin/moderatedcomments.pm b/IkiWiki/Plugin/moderatedcomments.pm index 2555927b7..afe1ceedf 100644 --- a/IkiWiki/Plugin/moderatedcomments.pm +++ b/IkiWiki/Plugin/moderatedcomments.pm @@ -15,6 +15,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "auth", }, moderate_users => { type => 'boolean', diff --git a/IkiWiki/Plugin/monotone.pm b/IkiWiki/Plugin/monotone.pm index 9502804f1..c33cf7e3a 100644 --- a/IkiWiki/Plugin/monotone.pm +++ b/IkiWiki/Plugin/monotone.pm @@ -68,6 +68,7 @@ sub getsetup () { plugin => { safe => 0, # rcs plugin rebuild => undef, + section => "rcs", }, mtn_wrapper => { type => "string", diff --git a/IkiWiki/Plugin/opendiscussion.pm b/IkiWiki/Plugin/opendiscussion.pm index 5a455940b..2805f60ef 100644 --- a/IkiWiki/Plugin/opendiscussion.pm +++ b/IkiWiki/Plugin/opendiscussion.pm @@ -16,6 +16,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "auth", }, } diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index 382d8286f..bb99446b4 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -26,6 +26,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "auth", }, openidsignup => { type => "string", diff --git a/IkiWiki/Plugin/parentlinks.pm b/IkiWiki/Plugin/parentlinks.pm index e678a057d..728bbc399 100644 --- a/IkiWiki/Plugin/parentlinks.pm +++ b/IkiWiki/Plugin/parentlinks.pm @@ -16,6 +16,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, + section => "core", }, } diff --git a/IkiWiki/Plugin/passwordauth.pm b/IkiWiki/Plugin/passwordauth.pm index c07065b7d..4848b47bb 100644 --- a/IkiWiki/Plugin/passwordauth.pm +++ b/IkiWiki/Plugin/passwordauth.pm @@ -19,6 +19,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "auth", }, account_creation_password => { type => "string", diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 5c7b71aaa..04219b721 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -22,6 +22,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, + section => "core", }, recentchangespage => { type => "string", diff --git a/IkiWiki/Plugin/signinedit.pm b/IkiWiki/Plugin/signinedit.pm index 8b44a68f7..31160c02f 100644 --- a/IkiWiki/Plugin/signinedit.pm +++ b/IkiWiki/Plugin/signinedit.pm @@ -16,6 +16,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "auth", }, } diff --git a/IkiWiki/Plugin/svn.pm b/IkiWiki/Plugin/svn.pm index 06b987f51..7d27ec842 100644 --- a/IkiWiki/Plugin/svn.pm +++ b/IkiWiki/Plugin/svn.pm @@ -44,6 +44,7 @@ sub getsetup () { plugin => { safe => 0, # rcs plugin rebuild => undef, + section => "rcs", }, svnrepo => { type => "string", diff --git a/IkiWiki/Plugin/tla.pm b/IkiWiki/Plugin/tla.pm index f4b20a6ec..16d73b136 100644 --- a/IkiWiki/Plugin/tla.pm +++ b/IkiWiki/Plugin/tla.pm @@ -34,6 +34,7 @@ sub getsetup () { plugin => { safe => 0, # rcs plugin rebuild => undef, + section => "rcs", }, tla_wrapper => { type => "string", diff --git a/IkiWiki/Setup.pm b/IkiWiki/Setup.pm index 8a25ecc57..b21bd7bfe 100644 --- a/IkiWiki/Setup.pm +++ b/IkiWiki/Setup.pm @@ -77,7 +77,6 @@ sub merge ($) { sub getsetup () { # Gets all available setup data from all plugins. Returns an # ordered list of [plugin, setup] pairs. - my @ret; # disable logging to syslog while dumping, broken plugins may # whine when loaded @@ -85,27 +84,48 @@ sub getsetup () { $config{syslog}=undef; # Load all plugins, so that all setup options are available. - my @plugins=grep { $_ ne $config{rcs} } sort(IkiWiki::listplugins()); - unshift @plugins, $config{rcs} if $config{rcs}; # rcs plugin 1st + my @plugins=IkiWiki::listplugins(); foreach my $plugin (@plugins) { eval { IkiWiki::loadplugin($plugin) }; if (exists $IkiWiki::hooks{checkconfig}{$plugin}{call}) { my @s=eval { $IkiWiki::hooks{checkconfig}{$plugin}{call}->() }; } } - + + my %sections; foreach my $plugin (@plugins) { if (exists $IkiWiki::hooks{getsetup}{$plugin}{call}) { # use an array rather than a hash, to preserve order my @s=eval { $IkiWiki::hooks{getsetup}{$plugin}{call}->() }; next unless @s; - push @ret, [ $plugin, \@s ], + + # set default section value (note use of shared + # hashref between array and hash) + my %s=@s; + if (! exists $s{plugin} || ! $s{plugin}->{section}) { + $s{plugin}->{section}="misc"; + } + + # only the selected rcs plugin is included + if ($config{rcs} && $plugin eq $config{rcs}) { + $s{plugin}->{section}="core"; + } + elsif ($s{plugin}->{section} eq "rcs") { + next; + } + + push @{$sections{$s{plugin}->{section}}}, [ $plugin, \@s ]; } } $config{syslog}=$syslog; - return @ret; + return map { sort { $a->[0] cmp $b->[0] } @{$sections{$_}} } + sort { # core first, then alphabetical + ($b eq "core") <=> ($a eq "core") + || + $a cmp $b + } keys %sections; } sub dump ($) { diff --git a/IkiWiki/Setup/Standard.pm b/IkiWiki/Setup/Standard.pm index 951bcfc56..c99dbb620 100644 --- a/IkiWiki/Setup/Standard.pm +++ b/IkiWiki/Setup/Standard.pm @@ -90,10 +90,18 @@ sub gendump ($) { # disable logging to syslog while dumping $config{syslog}=undef; + my $curr_section; push @ret, dumpvalues(\%setup, IkiWiki::getsetup()); foreach my $pair (IkiWiki::Setup::getsetup()) { my $plugin=$pair->[0]; my $setup=$pair->[1]; + my %s=@{$setup}; + my $section=$s{plugin}->{section}; + if (! defined $curr_section || $curr_section ne $section) { + $curr_section=$section; + push @ret, "", "\t#", "\t# $section plugins", "\t#"; + } + my @values=dumpvalues(\%setup, @{$setup}); if (@values) { push @ret, "", "\t# $plugin plugin", @values; diff --git a/debian/changelog b/debian/changelog index d74abd0f9..f24a453c8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -22,6 +22,8 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low * httpauth: Add httpauth_pagespec setting that can be used to limit pages to only being edited via users authed with httpauth. * Allow globs to be used in user() pagespecs. + * Group related plugins into sections in the setup file, and drop + unused rcs plugins from the setup file. -- Joey Hess Tue, 26 Jan 2010 22:25:33 -0500 diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 082f0e38f..68454d56c 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -457,6 +457,12 @@ describing the option. There can also be an item named "plugin", which describes the plugin as a whole. For example: return + plugin => { + description => "description of this plugin", + safe => 1, + rebuild => 1, + section => "misc", + }, option_foo => { type => "boolean", description => "enable foo?", @@ -471,11 +477,6 @@ describes the plugin as a whole. For example: safe => 1, rebuild => 0, }, - plugin => { - description => "description of this plugin", - safe => 1, - rebuild => 1, - }, * `type` can be "boolean", "string", "integer", "pagespec", or "internal" (used for values that are not user-visible). The type is @@ -496,6 +497,8 @@ describes the plugin as a whole. For example: the plugin) will require a wiki rebuild, false if no rebuild is needed, and undef if a rebuild could be needed in some circumstances, but is not strictly required. +* `section` can optionally specify which section in the config file + the plugin fits in. ### genwrapper -- cgit v1.2.3 From e091fab0e742c3e3f9029c86d47c858e286becf3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Feb 2010 22:42:10 -0500 Subject: fix openid pagespec example --- doc/ikiwiki/pagespec.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ikiwiki/pagespec.mdwn b/doc/ikiwiki/pagespec.mdwn index 8d8b1a507..5c191f23f 100644 --- a/doc/ikiwiki/pagespec.mdwn +++ b/doc/ikiwiki/pagespec.mdwn @@ -45,7 +45,7 @@ Some more elaborate limits can be added to what matches using these functions: * "`user(username)`" - tests whether a modification is being made by a user with the specified username. If openid is enabled, an openid can also be put here. Glob patterns can be used in the username. For example, - to match all openid users, use `user(*://.*)` + to match all openid users, use `user(*://*)` * "`admin()`" - tests whether a modification is being made by one of the wiki admins. * "`ip(address)`" - tests whether a modification is being made from the -- cgit v1.2.3 From 6f3641f16c0043f42212976ccba93b3cf7e4e36f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Feb 2010 22:42:24 -0500 Subject: add some openid matching tests --- t/pagespec_match.t | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/t/pagespec_match.t b/t/pagespec_match.t index 197ff818b..8b0be4e8a 100755 --- a/t/pagespec_match.t +++ b/t/pagespec_match.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 70; +use Test::More tests => 72; BEGIN { use_ok("IkiWiki"); } @@ -46,6 +46,8 @@ ok(! pagespec_match("somepage", "user(frodo)", user => "Sam")); ok(pagespec_match("somepage", "user(*o)", user => "Bilbo")); ok(pagespec_match("somepage", "user(*o)", user => "frodo")); ok(! pagespec_match("somepage", "user(*o)", user => "Sam")); +ok(pagespec_match("somepage", "user(http://*.myopenid.com/)", user => "http://foo.myopenid.com/")); +ok(pagespec_match("somepage", "user(*://*)", user => "http://foo.myopenid.com/")); # The link and backlink stuff needs this. $config{userdir}=""; -- cgit v1.2.3 From 8fdc238c8c9bdfd196310c6261d9ad328a4d9fd2 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Feb 2010 22:55:35 -0500 Subject: fix websetup display of unsafe arrays in expert mode --- IkiWiki/Plugin/websetup.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/IkiWiki/Plugin/websetup.pm b/IkiWiki/Plugin/websetup.pm index e477bcc20..76ca1c9e2 100644 --- a/IkiWiki/Plugin/websetup.pm +++ b/IkiWiki/Plugin/websetup.pm @@ -138,9 +138,9 @@ sub showfields ($$$@) { my $value=$config{$key}; - if ($info{safe} && (ref $value eq 'ARRAY' || ref $info{example} eq 'ARRAY')) { - $value=[(ref $value eq 'ARRAY' ? map { Encode::encode_utf8($_) } @{$value} : ""), - "", ""]; # blank items for expansion + if (ref $value eq 'ARRAY' || ref $info{example} eq 'ARRAY') { + $value=[(ref $value eq 'ARRAY' ? map { Encode::encode_utf8($_) } @{$value} : "")]; + push @$value, "", "" if $info{safe}; # blank items for expansion } else { $value=Encode::encode_utf8($value); -- cgit v1.2.3 From 18394f6ba99422b50e3796e91030498f93e7c4a1 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 00:21:12 -0500 Subject: improve websetup fieldset display to handle sections --- IkiWiki/Plugin/websetup.pm | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/IkiWiki/Plugin/websetup.pm b/IkiWiki/Plugin/websetup.pm index 76ca1c9e2..445552e40 100644 --- a/IkiWiki/Plugin/websetup.pm +++ b/IkiWiki/Plugin/websetup.pm @@ -66,6 +66,11 @@ sub showfields ($$$@) { while (@_) { my $key=shift; my %info=%{shift()}; + + if ($key eq 'plugin') { + %plugininfo=%info; + next; + } # skip internal settings next if defined $info{type} && $info{type} eq "internal"; @@ -78,15 +83,12 @@ sub showfields ($$$@) { # these are handled specially, so don't show next if $key eq 'add_plugins' || $key eq 'disable_plugins'; - if ($key eq 'plugin') { - %plugininfo=%info; - next; - } - push @show, $key, \%info; } - my $section=defined $plugin ? $plugin." ".gettext("plugin") : "main"; + my $section=defined $plugin + ? sprintf(gettext("%s plugin:"), $plugininfo{section}).$plugin + : "main"; my %enabledfields; my $shownfields=0; @@ -97,6 +99,16 @@ sub showfields ($$$@) { @show=(); } + my $section_fieldset; + if (defined $plugin) { + # Define the combined fieldset for the plugin's section. + # This ensures that this fieldset comes first. + $section_fieldset=sprintf(gettext("%s plugins"), $plugininfo{section}); + $form->field(name => "placeholder.$plugininfo{section}", + type => "hidden", + fieldset => $section_fieldset); + } + # show plugin toggle if (defined $plugin && (! $plugin_forced || $config{websetup_advanced})) { my $name="enable.$plugin"; @@ -137,6 +149,9 @@ sub showfields ($$$@) { my $name=defined $plugin ? $plugin.".".$key : $section.".".$key; my $value=$config{$key}; + if (! defined $value) { + $value=""; + } if (ref $value eq 'ARRAY' || ref $info{example} eq 'ARRAY') { $value=[(ref $value eq 'ARRAY' ? map { Encode::encode_utf8($_) } @{$value} : "")]; @@ -203,11 +218,11 @@ sub showfields ($$$@) { $shownfields++; } - # if no fields were shown for the plugin, drop it into the - # plugins fieldset + # if no fields were shown for the plugin, drop it into a combined + # fieldset for its section if (defined $plugin && (! $plugin_forced || $config{websetup_advanced}) && ! $shownfields) { - $form->field(name => "enable.$plugin", fieldset => "plugins"); + $form->field(name => "enable.$plugin", fieldset => $section_fieldset); } return %enabledfields; @@ -258,7 +273,6 @@ sub showform ($$) { params => $cgi, fieldsets => [ [main => gettext("main")], - [plugins => gettext("plugins")] ], action => $config{cgiurl}, template => {type => 'div'}, -- cgit v1.2.3 From 5b76fc824cf5fdf8d78afb74724a6d5453c79baa Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 00:22:00 -0500 Subject: reword --- IkiWiki/Setup.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Setup.pm b/IkiWiki/Setup.pm index b21bd7bfe..7a7683fab 100644 --- a/IkiWiki/Setup.pm +++ b/IkiWiki/Setup.pm @@ -103,7 +103,7 @@ sub getsetup () { # hashref between array and hash) my %s=@s; if (! exists $s{plugin} || ! $s{plugin}->{section}) { - $s{plugin}->{section}="misc"; + $s{plugin}->{section}="other"; } # only the selected rcs plugin is included -- cgit v1.2.3 From 0ea2f0936bf9d51f4760fe5a8e57d46d1b6ecce6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 00:51:19 -0500 Subject: add plugin section, and show which plugins need no configuration --- IkiWiki/Setup/Standard.pm | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/IkiWiki/Setup/Standard.pm b/IkiWiki/Setup/Standard.pm index c99dbb620..bdf52f25a 100644 --- a/IkiWiki/Setup/Standard.pm +++ b/IkiWiki/Setup/Standard.pm @@ -90,16 +90,24 @@ sub gendump ($) { # disable logging to syslog while dumping $config{syslog}=undef; - my $curr_section; + eval q{use Text::Wrap}; + die $@ if $@; + + my %section_plugins; push @ret, dumpvalues(\%setup, IkiWiki::getsetup()); foreach my $pair (IkiWiki::Setup::getsetup()) { my $plugin=$pair->[0]; my $setup=$pair->[1]; my %s=@{$setup}; my $section=$s{plugin}->{section}; - if (! defined $curr_section || $curr_section ne $section) { - $curr_section=$section; - push @ret, "", "\t#", "\t# $section plugins", "\t#"; + push @{$section_plugins{$section}}, $plugin; + if (@{$section_plugins{$section}} == 1) { + push @ret, "", "\t#", "\t# $section plugins", + sub { + wrap("\t# (", "\t# ", + join(", ", @{$section_plugins{$section}})).")" + }, + "\t#"; } my @values=dumpvalues(\%setup, @{$setup}); @@ -119,7 +127,7 @@ sub gendump ($) { "use IkiWiki::Setup::Standard {"; push @ret, "}"; - return @ret; + return map { ref $_ ? $_->() : $_ } @ret; } 1 -- cgit v1.2.3 From 9cee2962e01ef0538cc8498951867a543f91b47d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 01:10:36 -0500 Subject: format plugin categorization --- IkiWiki/Plugin/creole.pm | 1 + IkiWiki/Plugin/highlight.pm | 1 + IkiWiki/Plugin/hnb.pm | 1 + IkiWiki/Plugin/html.pm | 1 + IkiWiki/Plugin/mdwn.pm | 2 +- IkiWiki/Plugin/otl.pm | 1 + IkiWiki/Plugin/po.pm | 3 ++- IkiWiki/Plugin/rawhtml.pm | 1 + IkiWiki/Plugin/textile.pm | 1 + IkiWiki/Plugin/txt.pm | 1 + IkiWiki/Plugin/wikitext.pm | 1 + doc/plugins/conditional.mdwn | 2 +- doc/plugins/format.mdwn | 2 +- doc/plugins/graphviz.mdwn | 2 +- doc/plugins/more.mdwn | 2 +- doc/plugins/shortcut.mdwn | 2 +- doc/plugins/table.mdwn | 2 +- doc/plugins/template.mdwn | 2 +- doc/plugins/typography.mdwn | 2 +- plugins/rst | 2 +- 20 files changed, 21 insertions(+), 11 deletions(-) diff --git a/IkiWiki/Plugin/creole.pm b/IkiWiki/Plugin/creole.pm index 425e71043..a1e4b31d3 100644 --- a/IkiWiki/Plugin/creole.pm +++ b/IkiWiki/Plugin/creole.pm @@ -17,6 +17,7 @@ sub getsetup { plugin => { safe => 1, rebuild => 1, # format plugin + section => "format", }, } diff --git a/IkiWiki/Plugin/highlight.pm b/IkiWiki/Plugin/highlight.pm index 9bdde85ae..947fb692e 100644 --- a/IkiWiki/Plugin/highlight.pm +++ b/IkiWiki/Plugin/highlight.pm @@ -23,6 +23,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, # format plugin + section => "format", }, tohighlight => { type => "string", diff --git a/IkiWiki/Plugin/hnb.pm b/IkiWiki/Plugin/hnb.pm index bd2177a06..32c9cf3ad 100644 --- a/IkiWiki/Plugin/hnb.pm +++ b/IkiWiki/Plugin/hnb.pm @@ -23,6 +23,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, # format plugin + section => "format", }, } diff --git a/IkiWiki/Plugin/html.pm b/IkiWiki/Plugin/html.pm index a7d5e8ce9..4dbae081b 100644 --- a/IkiWiki/Plugin/html.pm +++ b/IkiWiki/Plugin/html.pm @@ -21,6 +21,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, # format plugin + section => "format", }, } diff --git a/IkiWiki/Plugin/mdwn.pm b/IkiWiki/Plugin/mdwn.pm index 4ddf097ba..b892eabee 100644 --- a/IkiWiki/Plugin/mdwn.pm +++ b/IkiWiki/Plugin/mdwn.pm @@ -16,7 +16,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, # format plugin - section => "core", + section => "format", }, multimarkdown => { type => "boolean", diff --git a/IkiWiki/Plugin/otl.pm b/IkiWiki/Plugin/otl.pm index 3ab2441bf..3801a6ec2 100644 --- a/IkiWiki/Plugin/otl.pm +++ b/IkiWiki/Plugin/otl.pm @@ -17,6 +17,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, # format plugin + section => "format", }, } diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index f8801185e..2cbfb0a45 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -85,7 +85,8 @@ sub getsetup () { return plugin => { safe => 0, - rebuild => 1, + rebuild => 1, # format plugin + section => "format", }, po_master_language => { type => "string", diff --git a/IkiWiki/Plugin/rawhtml.pm b/IkiWiki/Plugin/rawhtml.pm index ad8a610c1..0838bcb22 100644 --- a/IkiWiki/Plugin/rawhtml.pm +++ b/IkiWiki/Plugin/rawhtml.pm @@ -16,6 +16,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, # changes file types + section => "format", }, } diff --git a/IkiWiki/Plugin/textile.pm b/IkiWiki/Plugin/textile.pm index 8cc5a7951..56bb4bffc 100644 --- a/IkiWiki/Plugin/textile.pm +++ b/IkiWiki/Plugin/textile.pm @@ -19,6 +19,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, # format plugin + section => "format", }, } diff --git a/IkiWiki/Plugin/txt.pm b/IkiWiki/Plugin/txt.pm index 8599bdc8e..1ed9f0856 100644 --- a/IkiWiki/Plugin/txt.pm +++ b/IkiWiki/Plugin/txt.pm @@ -29,6 +29,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, # format plugin + section => "format", }, } diff --git a/IkiWiki/Plugin/wikitext.pm b/IkiWiki/Plugin/wikitext.pm index accb03bbe..b24630b15 100644 --- a/IkiWiki/Plugin/wikitext.pm +++ b/IkiWiki/Plugin/wikitext.pm @@ -16,6 +16,7 @@ sub getsetup () { plugin => { safe => 0, # format plugin rebuild => undef, + section => "format", }, } diff --git a/doc/plugins/conditional.mdwn b/doc/plugins/conditional.mdwn index 95ffb2764..27a99bb7c 100644 --- a/doc/plugins/conditional.mdwn +++ b/doc/plugins/conditional.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=conditional core=1 author="[[Joey]]"]] -[[!tag type/format]] +[[!tag type/special-purpose]] This plugin provides the [[ikiwiki/directive/if]] [[ikiwiki/directive]]. With this directive, you can make text be conditionally displayed on a page. diff --git a/doc/plugins/format.mdwn b/doc/plugins/format.mdwn index 91e707fcf..5ec0842ae 100644 --- a/doc/plugins/format.mdwn +++ b/doc/plugins/format.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=format core=0 author="[[Joey]]"]] -[[!tag type/format]] +[[!tag type/useful]] This plugin allows mixing different page formats together, by embedding text formatted one way inside a page formatted another way. This is done diff --git a/doc/plugins/graphviz.mdwn b/doc/plugins/graphviz.mdwn index b89f16b59..8237ae9dc 100644 --- a/doc/plugins/graphviz.mdwn +++ b/doc/plugins/graphviz.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=graphviz author="[[JoshTriplett]]"]] -[[!tag type/chrome type/format]] +[[!tag type/chrome]] This plugin provides the [[ikiwiki/directive/graph]] [[ikiwiki/directive]]. This directive allows embedding [graphviz](http://www.graphviz.org/) graphs in a diff --git a/doc/plugins/more.mdwn b/doc/plugins/more.mdwn index e9a971289..81a9e67e8 100644 --- a/doc/plugins/more.mdwn +++ b/doc/plugins/more.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=more author="Ben"]] -[[!tag type/format]] +[[!tag type/chrome]] This plugin provides the [[ikiwiki/directive/more]] [[ikiwiki/directive]], which is a way to have a "more" link on a post in a blog, that leads to the diff --git a/doc/plugins/shortcut.mdwn b/doc/plugins/shortcut.mdwn index cca1f4bdd..68896f4d3 100644 --- a/doc/plugins/shortcut.mdwn +++ b/doc/plugins/shortcut.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=shortcut author="[[Joey]]"]] -[[!tag type/format]] +[[!tag type/useful]] This plugin provides the [[ikiwiki/directive/shortcut]] [[ikiwiki/directive]]. It allows external links to commonly linked to sites to be made diff --git a/doc/plugins/table.mdwn b/doc/plugins/table.mdwn index 10a85bb2c..fb830044f 100644 --- a/doc/plugins/table.mdwn +++ b/doc/plugins/table.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=table author="[[VictorMoral]]"]] -[[!tag type/format]] +[[!tag type/useful]] This plugin provides the [[ikiwiki/directive/table]] [[ikiwiki/directive]]. It can build HTML tables from data in CSV (comma-separated values) diff --git a/doc/plugins/template.mdwn b/doc/plugins/template.mdwn index 3485fe64c..6675207b2 100644 --- a/doc/plugins/template.mdwn +++ b/doc/plugins/template.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=template author="[[Joey]]"]] -[[!tag type/format]] +[[!tag type/useful]] This plugin provides the [[ikiwiki/directive/template]] [[ikiwiki/directive]]. With this plugin, you can set up templates, and cause them to be filled out diff --git a/doc/plugins/typography.mdwn b/doc/plugins/typography.mdwn index 030ef8052..9ff6c4ffd 100644 --- a/doc/plugins/typography.mdwn +++ b/doc/plugins/typography.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=typography author="[[Roktas]]"]] -[[!tag type/format]] +[[!tag type/chrome]] This plugin, also known as [SmartyPants](http://daringfireball.net/projects/smartypants/), translates diff --git a/plugins/rst b/plugins/rst index 9f64b33a0..838667507 100755 --- a/plugins/rst +++ b/plugins/rst @@ -33,7 +33,7 @@ def _to_dict(args): return dict((k, v) for k, v in zip(*[iter(args)]*2)) def getsetup(proxy, *kwargs): - return 'plugin', { 'safe' : 1, 'rebuild' : 1 } + return 'plugin', { 'safe' : 1, 'rebuild' : 1, 'section' : 'format' } import sys def debug(s): -- cgit v1.2.3 From 2d4b84e45f1dc947e8bb9ff92ab543861223ff42 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 01:16:20 -0500 Subject: borders --- IkiWiki/Setup/Standard.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Setup/Standard.pm b/IkiWiki/Setup/Standard.pm index bdf52f25a..71abb1cfb 100644 --- a/IkiWiki/Setup/Standard.pm +++ b/IkiWiki/Setup/Standard.pm @@ -102,12 +102,12 @@ sub gendump ($) { my $section=$s{plugin}->{section}; push @{$section_plugins{$section}}, $plugin; if (@{$section_plugins{$section}} == 1) { - push @ret, "", "\t#", "\t# $section plugins", + push @ret, "", "\t".("#" x 70), "\t# $section plugins", sub { wrap("\t# (", "\t# ", join(", ", @{$section_plugins{$section}})).")" }, - "\t#"; + "\t".("#" x 70); } my @values=dumpvalues(\%setup, @{$setup}); -- cgit v1.2.3 From 04a99c84406d7b1552b15fc0b5ea598644f94c23 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 03:38:00 -0500 Subject: plugin tag reorg --- doc/plugins/404.mdwn | 2 +- doc/plugins/aggregate.mdwn | 2 +- doc/plugins/autoindex.mdwn | 2 +- doc/plugins/calendar.mdwn | 2 +- doc/plugins/color.mdwn | 2 +- doc/plugins/comments.mdwn | 2 +- doc/plugins/contrib/postal.mdwn | 2 +- doc/plugins/cutpaste.mdwn | 2 +- doc/plugins/ddate.mdwn | 1 + doc/plugins/filecheck.mdwn | 2 +- doc/plugins/format.mdwn | 2 +- doc/plugins/fortune.mdwn | 1 + doc/plugins/goto.mdwn | 2 +- doc/plugins/graphviz.mdwn | 2 +- doc/plugins/haiku.mdwn | 1 + doc/plugins/img.mdwn | 2 +- doc/plugins/mirrorlist.mdwn | 2 +- doc/plugins/more.mdwn | 2 +- doc/plugins/poll.mdwn | 2 +- doc/plugins/polygen.mdwn | 1 + doc/plugins/prettydate.mdwn | 1 + doc/plugins/relativedate.mdwn | 1 + doc/plugins/repolist.mdwn | 2 +- doc/plugins/shortcut.mdwn | 2 +- doc/plugins/sparkline.mdwn | 2 +- doc/plugins/table.mdwn | 2 +- doc/plugins/template.mdwn | 2 +- doc/plugins/testpagespec.mdwn | 2 +- doc/plugins/teximg.mdwn | 2 +- doc/plugins/toc.mdwn | 2 +- doc/plugins/toggle.mdwn | 2 +- doc/plugins/type/chrome.mdwn | 2 +- doc/plugins/type/useful.mdwn | 1 - doc/plugins/type/widget.mdwn | 2 ++ doc/plugins/underlay.mdwn | 18 +++++++++--------- doc/plugins/wmd.mdwn | 2 +- 36 files changed, 44 insertions(+), 37 deletions(-) delete mode 100644 doc/plugins/type/useful.mdwn create mode 100644 doc/plugins/type/widget.mdwn diff --git a/doc/plugins/404.mdwn b/doc/plugins/404.mdwn index ad332ee04..53dace3c9 100644 --- a/doc/plugins/404.mdwn +++ b/doc/plugins/404.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=404 author="[[Simon_McVittie|smcv]]"]] -[[!tag type/useful]] +[[!tag type/web]] This plugin lets you use the IkiWiki CGI script as an Apache 404 handler, to give the behaviour of various other wiki engines where visiting a diff --git a/doc/plugins/aggregate.mdwn b/doc/plugins/aggregate.mdwn index e2efcd83f..bb828b05c 100644 --- a/doc/plugins/aggregate.mdwn +++ b/doc/plugins/aggregate.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=aggregate author="[[Joey]]"]] -[[!tag type/useful]] +[[!tag type/special-purpose]] This plugin allows content from other feeds to be aggregated into the wiki. To specify feeds to aggregate, use the diff --git a/doc/plugins/autoindex.mdwn b/doc/plugins/autoindex.mdwn index 03e2d12f3..d1133e4f5 100644 --- a/doc/plugins/autoindex.mdwn +++ b/doc/plugins/autoindex.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=autoindex core=0 author="[[Joey]]"]] -[[!tag type/useful]] +[[!tag type/special-purpose]] This plugin searches for [[SubPages|ikiwiki/subpage]] with a missing parent page, and generates the parent pages. The generated page content is diff --git a/doc/plugins/calendar.mdwn b/doc/plugins/calendar.mdwn index bc1bc6c71..49fd90627 100644 --- a/doc/plugins/calendar.mdwn +++ b/doc/plugins/calendar.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=calendar author="[[ManojSrivastava]]"]] -[[!tag type/chrome]] +[[!tag type/widget]] This plugin provides a [[ikiwiki/directive/calendar]] [[ikiwiki/directive]]. The directive displays a calendar, similar to the typical calendars shown on diff --git a/doc/plugins/color.mdwn b/doc/plugins/color.mdwn index dbb8b870c..d639bf563 100644 --- a/doc/plugins/color.mdwn +++ b/doc/plugins/color.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=color core=0 author="[[ptecza]]"]] -[[!tag type/chrome]] +[[!tag type/widget]] This plugin provides a [[ikiwiki/directive/color]] [[ikiwiki/directive]]. The directive can be used to color a piece of text on a page. diff --git a/doc/plugins/comments.mdwn b/doc/plugins/comments.mdwn index f933d32be..775ef75a0 100644 --- a/doc/plugins/comments.mdwn +++ b/doc/plugins/comments.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=comments author="[[Simon_McVittie|smcv]]"]] -[[!tag type/useful]] +[[!tag type/web]] This plugin adds "blog-style" comments. Unlike the wiki-style freeform Discussion pages, these comments are posted by a simple form, cannot later diff --git a/doc/plugins/contrib/postal.mdwn b/doc/plugins/contrib/postal.mdwn index b2f875393..c522f8bcb 100644 --- a/doc/plugins/contrib/postal.mdwn +++ b/doc/plugins/contrib/postal.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=postal author="[[DavidBremner]]"]] -[[!tag type/useful]] +[[!tag type/special-purpose]] The `postal` plugin allows users to send mail to a special address to comment on a page. It uses the [[mailbox]] diff --git a/doc/plugins/cutpaste.mdwn b/doc/plugins/cutpaste.mdwn index f74f8a269..ea3665c44 100644 --- a/doc/plugins/cutpaste.mdwn +++ b/doc/plugins/cutpaste.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=cutpaste author="[[Enrico]]"]] -[[!tag type/chrome]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/cut]], [[ikiwiki/directive/copy]] and [[ikiwiki/directive/paste]] diff --git a/doc/plugins/ddate.mdwn b/doc/plugins/ddate.mdwn index 741606a6e..17bb16cff 100644 --- a/doc/plugins/ddate.mdwn +++ b/doc/plugins/ddate.mdwn @@ -1,6 +1,7 @@ [[!template id=plugin name=ddate author="[[Joey]]"]] [[!tag type/fun]] [[!tag type/date]] +[[!tag type/chrome]] Enables use of Discordian dates. `--timeformat` can be used to change the date format; see `ddate(1)`. diff --git a/doc/plugins/filecheck.mdwn b/doc/plugins/filecheck.mdwn index f4563d58e..e5f68b29c 100644 --- a/doc/plugins/filecheck.mdwn +++ b/doc/plugins/filecheck.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=filecheck core=0 author="[[Joey]]"]] -[[!tag type/useful]] +[[!tag type/special-purpose]] This plugin enhances the regular [[ikiwiki/PageSpec]] syntax with some additional tests, for things like file size, mime type, and virus diff --git a/doc/plugins/format.mdwn b/doc/plugins/format.mdwn index 5ec0842ae..b41d365aa 100644 --- a/doc/plugins/format.mdwn +++ b/doc/plugins/format.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=format core=0 author="[[Joey]]"]] -[[!tag type/useful]] +[[!tag type/widget]] This plugin allows mixing different page formats together, by embedding text formatted one way inside a page formatted another way. This is done diff --git a/doc/plugins/fortune.mdwn b/doc/plugins/fortune.mdwn index 9966f456d..3cb125ac1 100644 --- a/doc/plugins/fortune.mdwn +++ b/doc/plugins/fortune.mdwn @@ -1,5 +1,6 @@ [[!template id=plugin name=fortune author="[[Joey]]"]] [[!tag type/fun]] +[[!tag type/widget]] This plugin implements the [[ikiwiki/directive/fortune]] [[ikiwiki/directive]]. This directive uses the `fortune` program to insert a fortune into the page. diff --git a/doc/plugins/goto.mdwn b/doc/plugins/goto.mdwn index 9c401c5d2..8e1de7a10 100644 --- a/doc/plugins/goto.mdwn +++ b/doc/plugins/goto.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=goto author="[[Simon_McVittie|smcv]]"]] -[[!tag type/useful]] +[[!tag type/web]] This plugin adds a `do=goto` mode for the IkiWiki CGI script. It's mainly for internal use by the [[404]], [[comments]] and [[recentchanges]] diff --git a/doc/plugins/graphviz.mdwn b/doc/plugins/graphviz.mdwn index 8237ae9dc..65130ae8c 100644 --- a/doc/plugins/graphviz.mdwn +++ b/doc/plugins/graphviz.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=graphviz author="[[JoshTriplett]]"]] -[[!tag type/chrome]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/graph]] [[ikiwiki/directive]]. This directive allows embedding [graphviz](http://www.graphviz.org/) graphs in a diff --git a/doc/plugins/haiku.mdwn b/doc/plugins/haiku.mdwn index 74eac1c29..448733d95 100644 --- a/doc/plugins/haiku.mdwn +++ b/doc/plugins/haiku.mdwn @@ -1,5 +1,6 @@ [[!template id=plugin name=haiku author="[[Joey]]"]] [[!tag type/fun]] +[[!tag type/widget]] This plugin provides a [[ikiwiki/directive/haiku]] [[ikiwiki/directive]]. The directive allows inserting a randomly generated haiku into a wiki page. diff --git a/doc/plugins/img.mdwn b/doc/plugins/img.mdwn index 114438765..a6cd90f28 100644 --- a/doc/plugins/img.mdwn +++ b/doc/plugins/img.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=img author="Christian Mock"]] -[[!tag type/chrome]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/img]] [[ikiwiki/directive]]. While ikiwiki supports inlining full-size images by making a diff --git a/doc/plugins/mirrorlist.mdwn b/doc/plugins/mirrorlist.mdwn index b371e8eb7..6e4964ed1 100644 --- a/doc/plugins/mirrorlist.mdwn +++ b/doc/plugins/mirrorlist.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=mirror author="[[Joey]]"]] -[[!tag type/special-purpose]] +[[!tag type/chrome]] This plugin allows adding links a list of mirrors to each page in the wiki. For each mirror, a name and an url should be specified. Pages are diff --git a/doc/plugins/more.mdwn b/doc/plugins/more.mdwn index 81a9e67e8..a0664e843 100644 --- a/doc/plugins/more.mdwn +++ b/doc/plugins/more.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=more author="Ben"]] -[[!tag type/chrome]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/more]] [[ikiwiki/directive]], which is a way to have a "more" link on a post in a blog, that leads to the diff --git a/doc/plugins/poll.mdwn b/doc/plugins/poll.mdwn index 510f67798..099cb399c 100644 --- a/doc/plugins/poll.mdwn +++ b/doc/plugins/poll.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=poll author="[[Joey]]"]] -[[!tag type/web]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/poll]] [[ikiwiki/directive]], which allows inserting an online poll into a page. diff --git a/doc/plugins/polygen.mdwn b/doc/plugins/polygen.mdwn index 6045c1ec9..f9cea1f4d 100644 --- a/doc/plugins/polygen.mdwn +++ b/doc/plugins/polygen.mdwn @@ -1,5 +1,6 @@ [[!template id=plugin name=polygen author="Enrico Zini"]] [[!tag type/fun]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/polygen]] [[ikiwiki/directive]], which allows inserting text generated by polygen into a wiki page. diff --git a/doc/plugins/prettydate.mdwn b/doc/plugins/prettydate.mdwn index 11ad4252f..149b7c29c 100644 --- a/doc/plugins/prettydate.mdwn +++ b/doc/plugins/prettydate.mdwn @@ -1,5 +1,6 @@ [[!template id=plugin name=prettydate author="[[Joey]]"]] [[!tag type/date]] +[[!tag type/chrome]] Enabling this plugin changes the dates displayed on pages in the wiki to a format that is nice and easy to read. Examples: "late Wednesday evening, diff --git a/doc/plugins/relativedate.mdwn b/doc/plugins/relativedate.mdwn index 50c96c5d7..d6e8eb08b 100644 --- a/doc/plugins/relativedate.mdwn +++ b/doc/plugins/relativedate.mdwn @@ -1,5 +1,6 @@ [[!template id=plugin name=relativedate author="[[Joey]]"]] [[!tag type/date]] +[[!tag type/chrome]] This plugin lets dates be displayed in relative form. Examples: "2 days ago", "1 month and 3 days ago", "30 minutes ago". Hovering over the date will diff --git a/doc/plugins/repolist.mdwn b/doc/plugins/repolist.mdwn index 9b3a7575e..efd9c9352 100644 --- a/doc/plugins/repolist.mdwn +++ b/doc/plugins/repolist.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=repolist author="[[Joey]]"]] -[[!tag type/useful]] +[[!tag type/web]] This plugin allows you to configure ikiwiki with the location of [[rcs]] repositories for your wiki's source. This is done via the diff --git a/doc/plugins/shortcut.mdwn b/doc/plugins/shortcut.mdwn index 68896f4d3..1e8e85ed8 100644 --- a/doc/plugins/shortcut.mdwn +++ b/doc/plugins/shortcut.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=shortcut author="[[Joey]]"]] -[[!tag type/useful]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/shortcut]] [[ikiwiki/directive]]. It allows external links to commonly linked to sites to be made diff --git a/doc/plugins/sparkline.mdwn b/doc/plugins/sparkline.mdwn index bcc5daec6..ee3928d7e 100644 --- a/doc/plugins/sparkline.mdwn +++ b/doc/plugins/sparkline.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=sparkline author="[[Joey]]"]] -[[!tag type/chrome]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/sparkline]] [[ikiwiki/directive]], which allows for easily embedding sparklines into diff --git a/doc/plugins/table.mdwn b/doc/plugins/table.mdwn index fb830044f..fe66f90a8 100644 --- a/doc/plugins/table.mdwn +++ b/doc/plugins/table.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=table author="[[VictorMoral]]"]] -[[!tag type/useful]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/table]] [[ikiwiki/directive]]. It can build HTML tables from data in CSV (comma-separated values) diff --git a/doc/plugins/template.mdwn b/doc/plugins/template.mdwn index 6675207b2..da775f232 100644 --- a/doc/plugins/template.mdwn +++ b/doc/plugins/template.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=template author="[[Joey]]"]] -[[!tag type/useful]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/template]] [[ikiwiki/directive]]. With this plugin, you can set up templates, and cause them to be filled out diff --git a/doc/plugins/testpagespec.mdwn b/doc/plugins/testpagespec.mdwn index dabcb0bec..8180d5d4b 100644 --- a/doc/plugins/testpagespec.mdwn +++ b/doc/plugins/testpagespec.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=testpagespec author="[[Joey]]"]] -[[!tag type/useful]] +[[!tag type/special-purpose]] This plugin provides a [[ikiwiki/directive/testpagespec]] [[ikiwiki/directive]]. The directive allows testing a [[ikiwiki/PageSpec]] to see if it matches a diff --git a/doc/plugins/teximg.mdwn b/doc/plugins/teximg.mdwn index ae052837f..f3cade85f 100644 --- a/doc/plugins/teximg.mdwn +++ b/doc/plugins/teximg.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=teximg author="[[PatrickWinnertz]]"]] -[[!tag type/chrome type/slow]] +[[!tag type/widget type/slow]] This plugin provides a [[ikiwiki/directive/teximg]] [[ikiwiki/directive]], that renders LaTeX formulas into images. diff --git a/doc/plugins/toc.mdwn b/doc/plugins/toc.mdwn index 2b7686681..a0ad3a5d0 100644 --- a/doc/plugins/toc.mdwn +++ b/doc/plugins/toc.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=toc author="[[Joey]]"]] -[[!tag type/chrome]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/toc]] [[ikiwiki/directive]], which adds a table of contents to a page. diff --git a/doc/plugins/toggle.mdwn b/doc/plugins/toggle.mdwn index 69ac613e0..d1500eba0 100644 --- a/doc/plugins/toggle.mdwn +++ b/doc/plugins/toggle.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=toggle author="[[Joey]]"]] -[[!tag type/chrome]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/toggle]] and [[ikiwiki/directive/toggleable]] [[directives|ikiwiki/directive]]. diff --git a/doc/plugins/type/chrome.mdwn b/doc/plugins/type/chrome.mdwn index d3f0eb3d3..a1c6d0728 100644 --- a/doc/plugins/type/chrome.mdwn +++ b/doc/plugins/type/chrome.mdwn @@ -1 +1 @@ -These plugins affect the look and feel of the wiki. +These plugins affect the look and feel of the overall wiki. diff --git a/doc/plugins/type/useful.mdwn b/doc/plugins/type/useful.mdwn deleted file mode 100644 index 92fcf5af1..000000000 --- a/doc/plugins/type/useful.mdwn +++ /dev/null @@ -1 +0,0 @@ -These plugins perform various miscellaneous useful functions. diff --git a/doc/plugins/type/widget.mdwn b/doc/plugins/type/widget.mdwn new file mode 100644 index 000000000..875829d0b --- /dev/null +++ b/doc/plugins/type/widget.mdwn @@ -0,0 +1,2 @@ +These plugins allow inserting various things into pages via a +[[ikiwiki/directive]]. diff --git a/doc/plugins/underlay.mdwn b/doc/plugins/underlay.mdwn index f7eafee7c..8836a394c 100644 --- a/doc/plugins/underlay.mdwn +++ b/doc/plugins/underlay.mdwn @@ -1,17 +1,17 @@ [[!template id=plugin name=underlay author="[[Simon_McVittie|smcv]]"]] -[[!tag type/useful]] +[[!tag type/special-purpose]] -This plugin adds an `add_underlays` option to the setup file. -Its value is a list of underlay directories whose content is added to the wiki. +This plugin adds an `add_underlays` option to the setup file. Its value is +a list of underlay directories whose content is added to the wiki. Multiple underlays are normally set up automatically by other plugins (for -instance, the images used by the [[plugins/smiley]] plugin), but they can also be -used as a way to pull in external files that you don't want in revision control, -like photos or software releases. +instance, the images used by the [[plugins/smiley]] plugin), but they can +also be used as a way to pull in external files that you don't want in +revision control, like photos or software releases. -Directories in `add_underlays` should usually be absolute. If relative, they're -interpreted as relative to the parent directory of the basewiki underlay, which -is probably not particularly useful in this context. +Directories in `add_underlays` should usually be absolute. If relative, +they're interpreted as relative to the parent directory of the basewiki +underlay, which is probably not particularly useful in this context. -- diff --git a/doc/plugins/wmd.mdwn b/doc/plugins/wmd.mdwn index dc9a30703..96c6e2e6c 100644 --- a/doc/plugins/wmd.mdwn +++ b/doc/plugins/wmd.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=wmd author="[[Will]]"]] -[[!tag type/chrome]] +[[!tag type/web]] [WMD](http://wmd-editor.com/) is a What You See Is What You Mean editor for [[mdwn]]. This plugin makes WMD be used for editing pages in the wiki. -- cgit v1.2.3 From 3ce8030dafc40a8188f6a32567c04d157b0ac39f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 03:43:01 -0500 Subject: more tag reorg --- doc/plugins/date.mdwn | 2 +- doc/plugins/linkmap.mdwn | 1 + doc/plugins/listdirectives.mdwn | 1 + doc/plugins/orphans.mdwn | 1 + doc/plugins/pagecount.mdwn | 1 + doc/plugins/pagestats.mdwn | 2 +- doc/plugins/progress.mdwn | 2 +- doc/plugins/version.mdwn | 1 + 8 files changed, 8 insertions(+), 3 deletions(-) diff --git a/doc/plugins/date.mdwn b/doc/plugins/date.mdwn index b8dbdfee5..2a33f014c 100644 --- a/doc/plugins/date.mdwn +++ b/doc/plugins/date.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=date author="[[Joey]]"]] -[[!tag type/meta]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/date]] [[ikiwiki/directive]], which provides a way to display an arbitrary date diff --git a/doc/plugins/linkmap.mdwn b/doc/plugins/linkmap.mdwn index 89cb9d8ae..7e51cd935 100644 --- a/doc/plugins/linkmap.mdwn +++ b/doc/plugins/linkmap.mdwn @@ -1,5 +1,6 @@ [[!template id=plugin name=linkmap author="[[Joey]]"]] [[!tag type/meta]] +[[!tag type/widget]] [[!tag type/slow]] This plugin provides the [[ikiwiki/directive/linkmap]] [[ikiwiki/directive]]. diff --git a/doc/plugins/listdirectives.mdwn b/doc/plugins/listdirectives.mdwn index 2d9bce01d..df854de52 100644 --- a/doc/plugins/listdirectives.mdwn +++ b/doc/plugins/listdirectives.mdwn @@ -1,5 +1,6 @@ [[!template id=plugin name=listdirectives author="Will"]] [[!tag type/meta]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/listdirectives]] [[ikiwiki/directive]], which inserts a list of currently available diff --git a/doc/plugins/orphans.mdwn b/doc/plugins/orphans.mdwn index e403c2d18..09ad0a51d 100644 --- a/doc/plugins/orphans.mdwn +++ b/doc/plugins/orphans.mdwn @@ -1,5 +1,6 @@ [[!template id=plugin name=orphans author="[[Joey]]"]] [[!tag type/meta]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/orphans]] [[ikiwiki/directive]], which generates a list of possibly orphaned pages -- diff --git a/doc/plugins/pagecount.mdwn b/doc/plugins/pagecount.mdwn index a56027e60..71872fae8 100644 --- a/doc/plugins/pagecount.mdwn +++ b/doc/plugins/pagecount.mdwn @@ -1,5 +1,6 @@ [[!template id=plugin name=pagecount author="[[Joey]]"]] [[!tag type/meta]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/pagecount]] [[ikiwiki/directive]], which displays the number of pages diff --git a/doc/plugins/pagestats.mdwn b/doc/plugins/pagestats.mdwn index c3eba6363..347e39a89 100644 --- a/doc/plugins/pagestats.mdwn +++ b/doc/plugins/pagestats.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=pagestats author="Enrico Zini"]] -[[!tag type/meta type/tags]] +[[!tag type/meta type/tags type/widget]] This plugin provides the [[ikiwiki/directive/pagestats]] [[ikiwiki/directive]], which can generate stats about how pages link to diff --git a/doc/plugins/progress.mdwn b/doc/plugins/progress.mdwn index e1b560cc8..20736d18c 100644 --- a/doc/plugins/progress.mdwn +++ b/doc/plugins/progress.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=progress author="[[Will]]"]] -[[!tag type/meta]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/progress]] [[ikiwiki/directive]], which generates a progress bar. diff --git a/doc/plugins/version.mdwn b/doc/plugins/version.mdwn index 43027bdd7..326a2e7ce 100644 --- a/doc/plugins/version.mdwn +++ b/doc/plugins/version.mdwn @@ -1,5 +1,6 @@ [[!template id=plugin name=version author="[[Joey]]"]] [[!tag type/meta]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/version]] [[ikiwiki/directive]], which inserts the current version -- cgit v1.2.3 From 21b4f11cbb0796e858f95dcee2ff117fb4e10afe Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 03:47:21 -0500 Subject: more tag reorg --- doc/plugins/editpage.mdwn | 1 + doc/plugins/getsource.mdwn | 1 + doc/plugins/inline.mdwn | 1 + doc/plugins/mirrorlist.mdwn | 2 +- doc/plugins/parentlinks.mdwn | 2 +- doc/plugins/recentchanges.mdwn | 1 + doc/plugins/recentchangesdiff.mdwn | 1 + doc/plugins/rsync.mdwn | 1 + 8 files changed, 8 insertions(+), 2 deletions(-) diff --git a/doc/plugins/editpage.mdwn b/doc/plugins/editpage.mdwn index b830e51aa..346ee7c78 100644 --- a/doc/plugins/editpage.mdwn +++ b/doc/plugins/editpage.mdwn @@ -1,4 +1,5 @@ [[!template id=plugin name=editpage core=1 author="[[Joey]]"]] +[[!tag type/web]] This plugin allows editing wiki pages in the web interface. It's enabled by default if [[cgi]] is enabled; disable it if you want cgi for other things diff --git a/doc/plugins/getsource.mdwn b/doc/plugins/getsource.mdwn index 20040ccee..d5404a628 100644 --- a/doc/plugins/getsource.mdwn +++ b/doc/plugins/getsource.mdwn @@ -1,4 +1,5 @@ [[!template id=plugin name=getsource author="[[Will_Uther|Will]]"]] +[[!tag type/web]] This plugin adds a "Source" link to the top of each page that uses the CGI to display the page's source. diff --git a/doc/plugins/inline.mdwn b/doc/plugins/inline.mdwn index 6c3282576..3eb849fdb 100644 --- a/doc/plugins/inline.mdwn +++ b/doc/plugins/inline.mdwn @@ -1,4 +1,5 @@ [[!template id=plugin name=inline core=1 author="[[Joey]]"]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/inline]] [[ikiwiki/directive]], which allows including one wiki page diff --git a/doc/plugins/mirrorlist.mdwn b/doc/plugins/mirrorlist.mdwn index 6e4964ed1..aedc1f4a0 100644 --- a/doc/plugins/mirrorlist.mdwn +++ b/doc/plugins/mirrorlist.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=mirror author="[[Joey]]"]] -[[!tag type/chrome]] +[[!tag type/web]] This plugin allows adding links a list of mirrors to each page in the wiki. For each mirror, a name and an url should be specified. Pages are diff --git a/doc/plugins/parentlinks.mdwn b/doc/plugins/parentlinks.mdwn index ef262a30c..c2d364bef 100644 --- a/doc/plugins/parentlinks.mdwn +++ b/doc/plugins/parentlinks.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=parentlinks core=1 author="[[intrigeri]]"]] -[[!tag type/link]] +[[!tag type/link type/chrome]] This plugin generates the links to a page's parents that typically appear at the top of a wiki page. diff --git a/doc/plugins/recentchanges.mdwn b/doc/plugins/recentchanges.mdwn index 9375296a4..823f68502 100644 --- a/doc/plugins/recentchanges.mdwn +++ b/doc/plugins/recentchanges.mdwn @@ -1,4 +1,5 @@ [[!template id=plugin name=recentchanges core=1 author="[[Joey]]"]] +[[!tag type/meta]] This plugin examines the [[revision_control_system|rcs]] history and generates a page describing each recent change made to the wiki. These diff --git a/doc/plugins/recentchangesdiff.mdwn b/doc/plugins/recentchangesdiff.mdwn index a7b113ade..57299f92d 100644 --- a/doc/plugins/recentchangesdiff.mdwn +++ b/doc/plugins/recentchangesdiff.mdwn @@ -1,4 +1,5 @@ [[!template id=plugin name=recentchangesdiff core=0 author="[[Joey]]"]] +[[!tag type/meta]] This plugin extends the [[recentchanges]] plugin, adding a diff for each change. The diffs are by default hidden from display on the recentchanges diff --git a/doc/plugins/rsync.mdwn b/doc/plugins/rsync.mdwn index 315b663c0..e48886168 100644 --- a/doc/plugins/rsync.mdwn +++ b/doc/plugins/rsync.mdwn @@ -1,4 +1,5 @@ [[!template id=plugin name=rsync author="[[schmonz]]"]] +[[!tag type/special-purpose]] This plugin allows ikiwiki to push generated pages to another host by running a command such as `rsync`. -- cgit v1.2.3 From 1db0dd855ae49e4bb7b74e1158fc0356836d45a7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 03:56:56 -0500 Subject: one more --- doc/plugins/map.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plugins/map.mdwn b/doc/plugins/map.mdwn index 8f5a9f15e..b164d5ca8 100644 --- a/doc/plugins/map.mdwn +++ b/doc/plugins/map.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=map author="Alessandro Dotti Contra"]] -[[!tag type/meta]] +[[!tag type/meta type/widget]] This plugin provides the [[ikiwiki/directive/map]] [[ikiwiki/directive]], which generates a hierarchical page map for the wiki. -- cgit v1.2.3 From 73242f0890eb7823e2e864dab6477d8fc2bdd69f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 04:01:04 -0500 Subject: remove unnecessary IkiWiki:: --- IkiWiki/Plugin/typography.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/typography.pm b/IkiWiki/Plugin/typography.pm index f62be82bb..9389b24d4 100644 --- a/IkiWiki/Plugin/typography.pm +++ b/IkiWiki/Plugin/typography.pm @@ -9,7 +9,7 @@ use IkiWiki 3.00; sub import { hook(type => "getopt", id => "typography", call => \&getopt); hook(type => "getsetup", id => "typography", call => \&getsetup); - IkiWiki::hook(type => "sanitize", id => "typography", call => \&sanitize); + hook(type => "sanitize", id => "typography", call => \&sanitize); } sub getopt () { -- cgit v1.2.3 From 805b3afff7158a7912b06948d134478308b5855b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 04:09:57 -0500 Subject: formatting sillyness --- IkiWiki/Setup/Standard.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Setup/Standard.pm b/IkiWiki/Setup/Standard.pm index 71abb1cfb..f7a322317 100644 --- a/IkiWiki/Setup/Standard.pm +++ b/IkiWiki/Setup/Standard.pm @@ -104,7 +104,7 @@ sub gendump ($) { if (@{$section_plugins{$section}} == 1) { push @ret, "", "\t".("#" x 70), "\t# $section plugins", sub { - wrap("\t# (", "\t# ", + wrap("\t# (", "\t# ", join(", ", @{$section_plugins{$section}})).")" }, "\t".("#" x 70); -- cgit v1.2.3 From a7eb434afd216e0b473ac82777544c9c45852792 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 04:10:11 -0500 Subject: another (last?) tag change --- doc/plugins/postsparkline.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plugins/postsparkline.mdwn b/doc/plugins/postsparkline.mdwn index c81f91bdc..b0733e343 100644 --- a/doc/plugins/postsparkline.mdwn +++ b/doc/plugins/postsparkline.mdwn @@ -1,5 +1,5 @@ [[!template id=plugin name=postsparkline author="[[Joey]]"]] -[[!tag type/chrome]] +[[!tag type/widget]] This plugin provides the [[ikiwiki/directive/postsparkline]] [[ikiwiki/directive]]. It uses the [[sparkline]] plugin to create a sparkline of -- cgit v1.2.3 From 20ba12802b3897bf48d8a7704a57e9cede2466bd Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 04:22:15 -0500 Subject: add section information --- IkiWiki/Plugin/404.pm | 1 + IkiWiki/Plugin/aggregate.pm | 1 + IkiWiki/Plugin/amazon_s3.pm | 1 + IkiWiki/Plugin/attachment.pm | 1 + IkiWiki/Plugin/autoindex.pm | 1 + IkiWiki/Plugin/comments.pm | 1 + IkiWiki/Plugin/editdiff.pm | 1 + IkiWiki/Plugin/edittemplate.pm | 1 + IkiWiki/Plugin/getsource.pm | 1 + IkiWiki/Plugin/google.pm | 1 + IkiWiki/Plugin/goto.pm | 1 + IkiWiki/Plugin/mirrorlist.pm | 1 + IkiWiki/Plugin/norcs.pm | 1 + IkiWiki/Plugin/pingee.pm | 1 + IkiWiki/Plugin/pinger.pm | 1 + IkiWiki/Plugin/remove.pm | 1 + IkiWiki/Plugin/rename.pm | 1 + IkiWiki/Plugin/repolist.pm | 1 + IkiWiki/Plugin/rsync.pm | 1 + IkiWiki/Plugin/search.pm | 1 + IkiWiki/Plugin/testpagespec.pm | 1 + IkiWiki/Plugin/underlay.pm | 1 + IkiWiki/Plugin/websetup.pm | 1 + IkiWiki/Plugin/wmd.pm | 2 ++ doc/plugins/write.mdwn | 3 ++- 25 files changed, 27 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/404.pm b/IkiWiki/Plugin/404.pm index 85486e559..8adfd5dd9 100644 --- a/IkiWiki/Plugin/404.pm +++ b/IkiWiki/Plugin/404.pm @@ -21,6 +21,7 @@ sub getsetup () { # server admin action too safe => 0, rebuild => 0, + section => "web", } } diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm index 5a9eb433d..c18d413e6 100644 --- a/IkiWiki/Plugin/aggregate.pm +++ b/IkiWiki/Plugin/aggregate.pm @@ -43,6 +43,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "special-purpose", }, aggregateinternal => { type => "boolean", diff --git a/IkiWiki/Plugin/amazon_s3.pm b/IkiWiki/Plugin/amazon_s3.pm index cfd8cd347..f2f4dbcf2 100644 --- a/IkiWiki/Plugin/amazon_s3.pm +++ b/IkiWiki/Plugin/amazon_s3.pm @@ -45,6 +45,7 @@ sub getsetup () { plugin => { safe => 0, rebuild => 0, + section => "special-purpose", }, amazon_s3_key_id => { type => "string", diff --git a/IkiWiki/Plugin/attachment.pm b/IkiWiki/Plugin/attachment.pm index cbe6efc21..ad1dd9bca 100644 --- a/IkiWiki/Plugin/attachment.pm +++ b/IkiWiki/Plugin/attachment.pm @@ -19,6 +19,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "web", }, allowed_attachments => { type => "pagespec", diff --git a/IkiWiki/Plugin/autoindex.pm b/IkiWiki/Plugin/autoindex.pm index 555856b11..e50464dca 100644 --- a/IkiWiki/Plugin/autoindex.pm +++ b/IkiWiki/Plugin/autoindex.pm @@ -16,6 +16,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "special-purpose", }, } diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index caed0d58c..1e71749a4 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -38,6 +38,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, + section => "web", }, comments_pagespec => { type => 'pagespec', diff --git a/IkiWiki/Plugin/editdiff.pm b/IkiWiki/Plugin/editdiff.pm index 7df6a9ffb..d8f53a42e 100644 --- a/IkiWiki/Plugin/editdiff.pm +++ b/IkiWiki/Plugin/editdiff.pm @@ -19,6 +19,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "web", }, } diff --git a/IkiWiki/Plugin/edittemplate.pm b/IkiWiki/Plugin/edittemplate.pm index a163b0d84..5f0551d92 100644 --- a/IkiWiki/Plugin/edittemplate.pm +++ b/IkiWiki/Plugin/edittemplate.pm @@ -23,6 +23,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "web", }, } diff --git a/IkiWiki/Plugin/getsource.pm b/IkiWiki/Plugin/getsource.pm index d1555430e..b362de726 100644 --- a/IkiWiki/Plugin/getsource.pm +++ b/IkiWiki/Plugin/getsource.pm @@ -17,6 +17,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, + section => "web", }, getsource_mimetype => { type => "string", diff --git a/IkiWiki/Plugin/google.pm b/IkiWiki/Plugin/google.pm index 483fa1707..48ad4c8ce 100644 --- a/IkiWiki/Plugin/google.pm +++ b/IkiWiki/Plugin/google.pm @@ -17,6 +17,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, + section => "web", }, } diff --git a/IkiWiki/Plugin/goto.pm b/IkiWiki/Plugin/goto.pm index 439552f62..03bd682b3 100644 --- a/IkiWiki/Plugin/goto.pm +++ b/IkiWiki/Plugin/goto.pm @@ -14,6 +14,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "web", } } diff --git a/IkiWiki/Plugin/mirrorlist.pm b/IkiWiki/Plugin/mirrorlist.pm index d0a6107ef..92be7913e 100644 --- a/IkiWiki/Plugin/mirrorlist.pm +++ b/IkiWiki/Plugin/mirrorlist.pm @@ -15,6 +15,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, + section => "web", }, mirrorlist => { type => "string", diff --git a/IkiWiki/Plugin/norcs.pm b/IkiWiki/Plugin/norcs.pm index bfe84c0e1..e6a05a3c5 100644 --- a/IkiWiki/Plugin/norcs.pm +++ b/IkiWiki/Plugin/norcs.pm @@ -25,6 +25,7 @@ sub getsetup () { plugin => { safe => 0, # rcs plugin rebuild => 0, + section => "rcs", }, } diff --git a/IkiWiki/Plugin/pingee.pm b/IkiWiki/Plugin/pingee.pm index f5386d0ca..aafce9e70 100644 --- a/IkiWiki/Plugin/pingee.pm +++ b/IkiWiki/Plugin/pingee.pm @@ -15,6 +15,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "special-purpose", }, } diff --git a/IkiWiki/Plugin/pinger.pm b/IkiWiki/Plugin/pinger.pm index c20ecb5d4..a797fc7bd 100644 --- a/IkiWiki/Plugin/pinger.pm +++ b/IkiWiki/Plugin/pinger.pm @@ -21,6 +21,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "special-purpose", }, pinger_timeout => { type => "integer", diff --git a/IkiWiki/Plugin/remove.pm b/IkiWiki/Plugin/remove.pm index 3c1e0c713..f59d0269e 100644 --- a/IkiWiki/Plugin/remove.pm +++ b/IkiWiki/Plugin/remove.pm @@ -18,6 +18,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "web", }, } diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm index 8213d21f6..3908443ca 100644 --- a/IkiWiki/Plugin/rename.pm +++ b/IkiWiki/Plugin/rename.pm @@ -18,6 +18,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "web", }, } diff --git a/IkiWiki/Plugin/repolist.pm b/IkiWiki/Plugin/repolist.pm index f69ec3988..ba7c5f0aa 100644 --- a/IkiWiki/Plugin/repolist.pm +++ b/IkiWiki/Plugin/repolist.pm @@ -15,6 +15,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "web", }, repositories => { type => "string", diff --git a/IkiWiki/Plugin/rsync.pm b/IkiWiki/Plugin/rsync.pm index e38801e4a..8dd983be7 100644 --- a/IkiWiki/Plugin/rsync.pm +++ b/IkiWiki/Plugin/rsync.pm @@ -16,6 +16,7 @@ sub getsetup () { plugin => { safe => 0, rebuild => 0, + section => "special-purpose", }, rsync_command => { type => "string", diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm index 393c17e0f..fb68396a1 100644 --- a/IkiWiki/Plugin/search.pm +++ b/IkiWiki/Plugin/search.pm @@ -20,6 +20,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, + section => "web", }, omega_cgi => { type => "string", diff --git a/IkiWiki/Plugin/testpagespec.pm b/IkiWiki/Plugin/testpagespec.pm index 440fca33b..17a77cb69 100644 --- a/IkiWiki/Plugin/testpagespec.pm +++ b/IkiWiki/Plugin/testpagespec.pm @@ -15,6 +15,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "special-purpose", }, } diff --git a/IkiWiki/Plugin/underlay.pm b/IkiWiki/Plugin/underlay.pm index 116fe7324..ab74fc37e 100644 --- a/IkiWiki/Plugin/underlay.pm +++ b/IkiWiki/Plugin/underlay.pm @@ -18,6 +18,7 @@ sub getsetup () { plugin => { safe => 0, rebuild => undef, + section => "special-purpose", }, add_underlays => { type => "string", diff --git a/IkiWiki/Plugin/websetup.pm b/IkiWiki/Plugin/websetup.pm index 445552e40..5c19c9b63 100644 --- a/IkiWiki/Plugin/websetup.pm +++ b/IkiWiki/Plugin/websetup.pm @@ -18,6 +18,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, + section => "web", }, websetup_force_plugins => { type => "string", diff --git a/IkiWiki/Plugin/wmd.pm b/IkiWiki/Plugin/wmd.pm index 9ddd237ab..5361d2914 100644 --- a/IkiWiki/Plugin/wmd.pm +++ b/IkiWiki/Plugin/wmd.pm @@ -17,6 +17,8 @@ sub getsetup () { return plugin => { safe => 1, + rebuild => 0, + section => "web", }, } diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 68454d56c..fbaabb6a0 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -498,7 +498,8 @@ describes the plugin as a whole. For example: and undef if a rebuild could be needed in some circumstances, but is not strictly required. * `section` can optionally specify which section in the config file - the plugin fits in. + the plugin fits in. The convention is to name the sections the + same as the tags used for [[plugins|plugin]] on this wiki. ### genwrapper -- cgit v1.2.3 From 34fff64e7b56f4f8cd99430f9f927d2a5d1e3619 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 06:35:52 -0500 Subject: setup file ordering --- IkiWiki/Plugin/aggregate.pm | 1 - IkiWiki/Plugin/amazon_s3.pm | 1 - IkiWiki/Plugin/autoindex.pm | 1 - IkiWiki/Plugin/calendar.pm | 1 + IkiWiki/Plugin/color.pm | 1 + IkiWiki/Plugin/conditional.pm | 2 +- IkiWiki/Plugin/cutpaste.pm | 1 + IkiWiki/Plugin/date.pm | 1 + IkiWiki/Plugin/format.pm | 1 + IkiWiki/Plugin/fortune.pm | 1 + IkiWiki/Plugin/graphviz.pm | 1 + IkiWiki/Plugin/haiku.pm | 1 + IkiWiki/Plugin/img.pm | 1 + IkiWiki/Plugin/linkmap.pm | 1 + IkiWiki/Plugin/listdirectives.pm | 1 + IkiWiki/Plugin/map.pm | 1 + IkiWiki/Plugin/more.pm | 1 + IkiWiki/Plugin/orphans.pm | 1 + IkiWiki/Plugin/pagecount.pm | 1 + IkiWiki/Plugin/pagestats.pm | 1 + IkiWiki/Plugin/pingee.pm | 1 - IkiWiki/Plugin/pinger.pm | 1 - IkiWiki/Plugin/poll.pm | 1 + IkiWiki/Plugin/polygen.pm | 1 + IkiWiki/Plugin/postsparkline.pm | 1 + IkiWiki/Plugin/progress.pm | 1 + IkiWiki/Plugin/recentchanges.pm | 1 - IkiWiki/Plugin/rsync.pm | 1 - IkiWiki/Plugin/shortcut.pm | 1 + IkiWiki/Plugin/sparkline.pm | 1 + IkiWiki/Plugin/table.pm | 1 + IkiWiki/Plugin/template.pm | 1 + IkiWiki/Plugin/testpagespec.pm | 1 - IkiWiki/Plugin/teximg.pm | 1 + IkiWiki/Plugin/toc.pm | 1 + IkiWiki/Plugin/toggle.pm | 1 + IkiWiki/Plugin/underlay.pm | 1 - IkiWiki/Plugin/version.pm | 1 + IkiWiki/Setup.pm | 4 +++- 39 files changed, 32 insertions(+), 11 deletions(-) diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm index c18d413e6..5a9eb433d 100644 --- a/IkiWiki/Plugin/aggregate.pm +++ b/IkiWiki/Plugin/aggregate.pm @@ -43,7 +43,6 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, - section => "special-purpose", }, aggregateinternal => { type => "boolean", diff --git a/IkiWiki/Plugin/amazon_s3.pm b/IkiWiki/Plugin/amazon_s3.pm index f2f4dbcf2..cfd8cd347 100644 --- a/IkiWiki/Plugin/amazon_s3.pm +++ b/IkiWiki/Plugin/amazon_s3.pm @@ -45,7 +45,6 @@ sub getsetup () { plugin => { safe => 0, rebuild => 0, - section => "special-purpose", }, amazon_s3_key_id => { type => "string", diff --git a/IkiWiki/Plugin/autoindex.pm b/IkiWiki/Plugin/autoindex.pm index e50464dca..555856b11 100644 --- a/IkiWiki/Plugin/autoindex.pm +++ b/IkiWiki/Plugin/autoindex.pm @@ -16,7 +16,6 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, - section => "special-purpose", }, } diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm index 2b87451ce..aaee2c610 100644 --- a/IkiWiki/Plugin/calendar.pm +++ b/IkiWiki/Plugin/calendar.pm @@ -38,6 +38,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, archivebase => { type => "string", diff --git a/IkiWiki/Plugin/color.pm b/IkiWiki/Plugin/color.pm index b9407ba28..d550dd9f4 100644 --- a/IkiWiki/Plugin/color.pm +++ b/IkiWiki/Plugin/color.pm @@ -18,6 +18,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/conditional.pm b/IkiWiki/Plugin/conditional.pm index beeddc672..892b1cff9 100644 --- a/IkiWiki/Plugin/conditional.pm +++ b/IkiWiki/Plugin/conditional.pm @@ -16,7 +16,7 @@ sub getsetup { plugin => { safe => 1, rebuild => undef, - section => "core", + section => "widget", }, } diff --git a/IkiWiki/Plugin/cutpaste.pm b/IkiWiki/Plugin/cutpaste.pm index 417442f34..01e9ce043 100644 --- a/IkiWiki/Plugin/cutpaste.pm +++ b/IkiWiki/Plugin/cutpaste.pm @@ -19,6 +19,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/date.pm b/IkiWiki/Plugin/date.pm index 652e6df0a..ea5c9a9c5 100644 --- a/IkiWiki/Plugin/date.pm +++ b/IkiWiki/Plugin/date.pm @@ -15,6 +15,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/format.pm b/IkiWiki/Plugin/format.pm index c8041209f..d54e71131 100644 --- a/IkiWiki/Plugin/format.pm +++ b/IkiWiki/Plugin/format.pm @@ -15,6 +15,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/fortune.pm b/IkiWiki/Plugin/fortune.pm index 17e57dea1..f481c7eac 100644 --- a/IkiWiki/Plugin/fortune.pm +++ b/IkiWiki/Plugin/fortune.pm @@ -16,6 +16,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/graphviz.pm b/IkiWiki/Plugin/graphviz.pm index 32e994d6b..bec122076 100644 --- a/IkiWiki/Plugin/graphviz.pm +++ b/IkiWiki/Plugin/graphviz.pm @@ -18,6 +18,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/haiku.pm b/IkiWiki/Plugin/haiku.pm index 5a062a276..bf23dce67 100644 --- a/IkiWiki/Plugin/haiku.pm +++ b/IkiWiki/Plugin/haiku.pm @@ -16,6 +16,7 @@ sub getsetup { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/img.pm b/IkiWiki/Plugin/img.pm index 82db15a7e..f06121578 100644 --- a/IkiWiki/Plugin/img.pm +++ b/IkiWiki/Plugin/img.pm @@ -19,6 +19,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/linkmap.pm b/IkiWiki/Plugin/linkmap.pm index 68eb6c8c6..ac26e072e 100644 --- a/IkiWiki/Plugin/linkmap.pm +++ b/IkiWiki/Plugin/linkmap.pm @@ -16,6 +16,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/listdirectives.pm b/IkiWiki/Plugin/listdirectives.pm index 09f08c567..8a67f7160 100644 --- a/IkiWiki/Plugin/listdirectives.pm +++ b/IkiWiki/Plugin/listdirectives.pm @@ -19,6 +19,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, directive_description_dir => { type => "string", diff --git a/IkiWiki/Plugin/map.pm b/IkiWiki/Plugin/map.pm index 788b96827..ce3ac1d24 100644 --- a/IkiWiki/Plugin/map.pm +++ b/IkiWiki/Plugin/map.pm @@ -21,6 +21,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/more.pm b/IkiWiki/Plugin/more.pm index 77d5fb077..266c8e1d0 100644 --- a/IkiWiki/Plugin/more.pm +++ b/IkiWiki/Plugin/more.pm @@ -17,6 +17,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/orphans.pm b/IkiWiki/Plugin/orphans.pm index 702943f87..e3cc3c940 100644 --- a/IkiWiki/Plugin/orphans.pm +++ b/IkiWiki/Plugin/orphans.pm @@ -16,6 +16,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/pagecount.pm b/IkiWiki/Plugin/pagecount.pm index 8d36f057e..dd5de3c83 100644 --- a/IkiWiki/Plugin/pagecount.pm +++ b/IkiWiki/Plugin/pagecount.pm @@ -15,6 +15,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/pagestats.pm b/IkiWiki/Plugin/pagestats.pm index 4313aa271..1c0b46830 100644 --- a/IkiWiki/Plugin/pagestats.pm +++ b/IkiWiki/Plugin/pagestats.pm @@ -27,6 +27,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/pingee.pm b/IkiWiki/Plugin/pingee.pm index aafce9e70..f5386d0ca 100644 --- a/IkiWiki/Plugin/pingee.pm +++ b/IkiWiki/Plugin/pingee.pm @@ -15,7 +15,6 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, - section => "special-purpose", }, } diff --git a/IkiWiki/Plugin/pinger.pm b/IkiWiki/Plugin/pinger.pm index a797fc7bd..c20ecb5d4 100644 --- a/IkiWiki/Plugin/pinger.pm +++ b/IkiWiki/Plugin/pinger.pm @@ -21,7 +21,6 @@ sub getsetup () { plugin => { safe => 1, rebuild => 0, - section => "special-purpose", }, pinger_timeout => { type => "integer", diff --git a/IkiWiki/Plugin/poll.pm b/IkiWiki/Plugin/poll.pm index bc1e3501e..6bc4579c2 100644 --- a/IkiWiki/Plugin/poll.pm +++ b/IkiWiki/Plugin/poll.pm @@ -17,6 +17,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/polygen.pm b/IkiWiki/Plugin/polygen.pm index bc21d71c7..78e3611e1 100644 --- a/IkiWiki/Plugin/polygen.pm +++ b/IkiWiki/Plugin/polygen.pm @@ -20,6 +20,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/postsparkline.pm b/IkiWiki/Plugin/postsparkline.pm index 0d5a12e33..2fae9c5fe 100644 --- a/IkiWiki/Plugin/postsparkline.pm +++ b/IkiWiki/Plugin/postsparkline.pm @@ -16,6 +16,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/progress.pm b/IkiWiki/Plugin/progress.pm index fe64b40b1..d27df5ca8 100644 --- a/IkiWiki/Plugin/progress.pm +++ b/IkiWiki/Plugin/progress.pm @@ -18,6 +18,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 04219b721..5c7b71aaa 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -22,7 +22,6 @@ sub getsetup () { plugin => { safe => 1, rebuild => 1, - section => "core", }, recentchangespage => { type => "string", diff --git a/IkiWiki/Plugin/rsync.pm b/IkiWiki/Plugin/rsync.pm index 8dd983be7..e38801e4a 100644 --- a/IkiWiki/Plugin/rsync.pm +++ b/IkiWiki/Plugin/rsync.pm @@ -16,7 +16,6 @@ sub getsetup () { plugin => { safe => 0, rebuild => 0, - section => "special-purpose", }, rsync_command => { type => "string", diff --git a/IkiWiki/Plugin/shortcut.pm b/IkiWiki/Plugin/shortcut.pm index 1840a5722..0cedbe447 100644 --- a/IkiWiki/Plugin/shortcut.pm +++ b/IkiWiki/Plugin/shortcut.pm @@ -16,6 +16,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/sparkline.pm b/IkiWiki/Plugin/sparkline.pm index fb4849492..42665ac63 100644 --- a/IkiWiki/Plugin/sparkline.pm +++ b/IkiWiki/Plugin/sparkline.pm @@ -24,6 +24,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/table.pm b/IkiWiki/Plugin/table.pm index 96d63f455..2edd1eacd 100644 --- a/IkiWiki/Plugin/table.pm +++ b/IkiWiki/Plugin/table.pm @@ -16,6 +16,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/template.pm b/IkiWiki/Plugin/template.pm index 39d9667f9..3e024c5f8 100644 --- a/IkiWiki/Plugin/template.pm +++ b/IkiWiki/Plugin/template.pm @@ -19,6 +19,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/testpagespec.pm b/IkiWiki/Plugin/testpagespec.pm index 17a77cb69..440fca33b 100644 --- a/IkiWiki/Plugin/testpagespec.pm +++ b/IkiWiki/Plugin/testpagespec.pm @@ -15,7 +15,6 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, - section => "special-purpose", }, } diff --git a/IkiWiki/Plugin/teximg.pm b/IkiWiki/Plugin/teximg.pm index f92ed0132..0aaa79698 100644 --- a/IkiWiki/Plugin/teximg.pm +++ b/IkiWiki/Plugin/teximg.pm @@ -31,6 +31,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, teximg_dvipng => { type => "boolean", diff --git a/IkiWiki/Plugin/toc.pm b/IkiWiki/Plugin/toc.pm index b8537d3eb..ac07b9af6 100644 --- a/IkiWiki/Plugin/toc.pm +++ b/IkiWiki/Plugin/toc.pm @@ -18,6 +18,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/toggle.pm b/IkiWiki/Plugin/toggle.pm index ef066a42f..f9c899540 100644 --- a/IkiWiki/Plugin/toggle.pm +++ b/IkiWiki/Plugin/toggle.pm @@ -20,6 +20,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Plugin/underlay.pm b/IkiWiki/Plugin/underlay.pm index ab74fc37e..116fe7324 100644 --- a/IkiWiki/Plugin/underlay.pm +++ b/IkiWiki/Plugin/underlay.pm @@ -18,7 +18,6 @@ sub getsetup () { plugin => { safe => 0, rebuild => undef, - section => "special-purpose", }, add_underlays => { type => "string", diff --git a/IkiWiki/Plugin/version.pm b/IkiWiki/Plugin/version.pm index 587cd55fa..c13643478 100644 --- a/IkiWiki/Plugin/version.pm +++ b/IkiWiki/Plugin/version.pm @@ -17,6 +17,7 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } diff --git a/IkiWiki/Setup.pm b/IkiWiki/Setup.pm index 7a7683fab..a3fd5ce66 100644 --- a/IkiWiki/Setup.pm +++ b/IkiWiki/Setup.pm @@ -121,9 +121,11 @@ sub getsetup () { $config{syslog}=$syslog; return map { sort { $a->[0] cmp $b->[0] } @{$sections{$_}} } - sort { # core first, then alphabetical + sort { # core first, other last, otherwise alphabetical ($b eq "core") <=> ($a eq "core") || + ($a eq "other") <=> ($b eq "other") + || $a cmp $b } keys %sections; } -- cgit v1.2.3 From 5d566d8b32e7ec260df996366b471631d6a3b47c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 14:38:43 -0500 Subject: reorg and expand docs of some variables --- doc/plugins/write.mdwn | 99 ++++++++++++++++++++++++++++---------------------- 1 file changed, 55 insertions(+), 44 deletions(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index fbaabb6a0..712dda8bf 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -31,7 +31,7 @@ they're the same as far as how they hook into ikiwiki. This document will explain how to write both sorts of plugins, albeit with an emphasis on perl plugins. -## Considerations +## Remember: Ikiwiki is a compiler One thing to keep in mind when writing a plugin is that ikiwiki is a wiki *compiler*. So plugins influence pages when they are built, not when they @@ -40,7 +40,23 @@ example, will insert the build time. Also, as a compiler, ikiwiki avoids rebuilding pages unless they have changed, so a plugin that prints some random or changing thing on a page will generate a static page that won't change until ikiwiki rebuilds the page for some other reason, like the page -being edited. +being edited. The [[tutorial]] has some other examples of ways that ikiwiki +being a compiler may trip up the unwary. + +## Plugin interface + +To import the ikiwiki plugin interface: + + use IkiWiki '3.00'; + +This will import several variables and functions into your plugin's +namespace. These variables and functions are the ones most plugins need, +and a special effort will be made to avoid changing them in incompatible +ways, and to document any changes that have to be made in the future. + +Note that IkiWiki also provides other variables and functions that are not +exported by default. No guarantee is made about these in the future, so if +it's not exported, the wise choice is to not use it. ## Registering plugins @@ -508,28 +524,17 @@ describes the plugin as a whole. For example: This hook is used to inject C code (which it returns) into the `main` function of the ikiwiki wrapper when it is being generated. -## Plugin interface - -To import the ikiwiki plugin interface: +### Exported variables - use IkiWiki '3.00'; +Several variables are exported to your plugin when you `use IkiWiki;` -This will import several variables and functions into your plugin's -namespace. These variables and functions are the ones most plugins need, -and a special effort will be made to avoid changing them in incompatible -ways, and to document any changes that have to be made in the future. - -Note that IkiWiki also provides other variables and functions that are not -exported by default. No guarantee is made about these in the future, so if -it's not exported, the wise choice is to not use it. - -### %config +#### %config 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 your ikiwiki setup file, which sets the hash content to configure the wiki. -### %pagestate +#### %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, @@ -547,7 +552,7 @@ When pages are deleted, ikiwiki automatically deletes their pagestate too. Note that page state does not persist across wiki rebuilds, only across wiki updates. -### %wikistate +#### %wikistate The `%wikistate` hash can be used by a plugin to store persistant state that is not bound to any one page. To set a value, use @@ -556,19 +561,25 @@ serialize, `$key` is any string you like, and `$id` must be the same as the "id" parameter passed to `hook()` when registering the plugin, so that the state can be dropped if the plugin is no longer used. -### Other variables +#### %links + +The `%links` hash can be used to look up the names of each page that +a page links to. The name of the page is the key; the value is an array +reference. Do not modify this hash directly; call `add_link()`. + +#### %destsources -If your plugin needs to access data about other pages in the wiki. It can -use the following hashes, using a page name as the key: +The `%destsources` hash records the name of the source file used to +create each destination file. The key is the output filename (ie, +"foo/index.html"), and the value is the source filename that it was built +from (eg, "foo.mdwn"). Note that a single source file may create multiple +destination files. Do not modify this hash directly; call `will_render()`. -* `%links` lists the names of each page that a page links to, in an array - reference. -* `%destsources` contains the name of the source file used to create each - destination file. -* `%pagesources` contains the name of the source file for each page. +#### %pagesources -Also, the `%IkiWiki::version` variable contains the version number for the -ikiwiki program. +The `%pagesources` has can be used to look up the source filename +of a page. So the key is the page name, and the value is the source +filename. Do not modify this hash. ### Library functions @@ -614,22 +625,6 @@ page created from it. (Ie, it appends ".html".) Use this when constructing the filename of a html file. Use `urlto` when generating a link to a page. -### `deptype(@)` - -Use this function to generate ikiwiki's internal representation of a -dependency type from one or more of these keywords: - -* `content` is the default. Any change to the content - of a page triggers the dependency. -* `presence` is only triggered by a change to the presence - of a page. -* `links` is only triggered by a change to the links of a page. - This includes when a link is added, removed, or changes what - it points to due to other changes. It does not include the - addition or removal of a duplicate link. - -If multiple types are specified, they are combined. - #### `pagespec_match_list($$;@)` Passed a page name, and [[ikiwiki/PageSpec]], returns a list of pages @@ -683,6 +678,22 @@ The most often used is "location", which specifies the location the PageSpec should match against. If not passed, relative PageSpecs will match relative to the top of the wiki. +#### `deptype(@)` + +Use this function to generate ikiwiki's internal representation of a +dependency type from one or more of these keywords: + +* `content` is the default. Any change to the content + of a page triggers the dependency. +* `presence` is only triggered by a change to the presence + of a page. +* `links` is only triggered by a change to the links of a page. + This includes when a link is added, removed, or changes what + it points to due to other changes. It does not include the + addition or removal of a duplicate link. + +If multiple types are specified, they are combined. + #### `bestlink($$)` Given a page and the text of a link on the page, determine which -- cgit v1.2.3 From b1c47b4065b245ccf46b99292d7de61800468237 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 14:41:28 -0500 Subject: heading tweaks --- doc/plugins/write.mdwn | 64 +++++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 712dda8bf..17c54ffc7 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -524,17 +524,17 @@ describes the plugin as a whole. For example: This hook is used to inject C code (which it returns) into the `main` function of the ikiwiki wrapper when it is being generated. -### Exported variables +## Exported variables Several variables are exported to your plugin when you `use IkiWiki;` -#### %config +### %config 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 your ikiwiki setup file, which sets the hash content to configure the wiki. -#### %pagestate +### %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, @@ -552,7 +552,7 @@ When pages are deleted, ikiwiki automatically deletes their pagestate too. Note that page state does not persist across wiki rebuilds, only across wiki updates. -#### %wikistate +### %wikistate The `%wikistate` hash can be used by a plugin to store persistant state that is not bound to any one page. To set a value, use @@ -561,13 +561,13 @@ serialize, `$key` is any string you like, and `$id` must be the same as the "id" parameter passed to `hook()` when registering the plugin, so that the state can be dropped if the plugin is no longer used. -#### %links +### %links The `%links` hash can be used to look up the names of each page that a page links to. The name of the page is the key; the value is an array reference. Do not modify this hash directly; call `add_link()`. -#### %destsources +### %destsources The `%destsources` hash records the name of the source file used to create each destination file. The key is the output filename (ie, @@ -575,15 +575,15 @@ create each destination file. The key is the output filename (ie, from (eg, "foo.mdwn"). Note that a single source file may create multiple destination files. Do not modify this hash directly; call `will_render()`. -#### %pagesources +### %pagesources The `%pagesources` has can be used to look up the source filename of a page. So the key is the page name, and the value is the source filename. Do not modify this hash. -### Library functions +## Library functions -#### `hook(@)` +### `hook(@)` Hook into ikiwiki's processing. See the discussion of hooks above. @@ -592,12 +592,12 @@ named `no_override` is supported, If it's set to a true value, then this hook will not override any existing hook with the same id. This is useful if the id can be controled by the user. -#### `debug($)` +### `debug($)` Logs a debugging message. These are supressed unless verbose mode is turned on. -#### `error($;$)` +### `error($;$)` Aborts with an error message. If the second parameter is passed, it is a function that is called after the error message is printed, to do any final @@ -611,13 +611,13 @@ In other hooks, error() is a fatal error, so use with care. Try to avoid dying on bad input when building a page, as that will halt the entire wiki build and make the wiki unusable. -#### `template($;@)` +### `template($;@)` Creates and returns a [[!cpan HTML::Template]] object. The first parameter is the name of the file in the template directory. The optional remaining parameters are passed to `HTML::Template->new`. -#### `htmlpage($)` +### `htmlpage($)` Passed a page name, returns the base name that will be used for a the html page created from it. (Ie, it appends ".html".) @@ -625,7 +625,7 @@ page created from it. (Ie, it appends ".html".) Use this when constructing the filename of a html file. Use `urlto` when generating a link to a page. -#### `pagespec_match_list($$;@)` +### `pagespec_match_list($$;@)` Passed a page name, and [[ikiwiki/PageSpec]], returns a list of pages in the wiki that match the [[ikiwiki/PageSpec]]. @@ -656,7 +656,7 @@ Additional named parameters can be specified: Any other named parameters are passed on to `pagespec_match`, to further limit the match. -#### `add_depends($$;$)` +### `add_depends($$;$)` Makes the specified page depend on the specified [[ikiwiki/PageSpec]]. @@ -678,7 +678,7 @@ The most often used is "location", which specifies the location the PageSpec should match against. If not passed, relative PageSpecs will match relative to the top of the wiki. -#### `deptype(@)` +### `deptype(@)` Use this function to generate ikiwiki's internal representation of a dependency type from one or more of these keywords: @@ -730,7 +730,7 @@ control some options. These are: * class - set to add a css class to the link * title - set to add a title attribute to the link -#### `readfile($;$)` +### `readfile($;$)` Given a filename, reads and returns the entire file. @@ -739,7 +739,7 @@ in binary mode. A failure to read the file will result in it dying with an error. -#### `writefile($$$;$$)` +### `writefile($$$;$$)` Given a filename, a directory to put it in, and the file's content, writes a file. @@ -767,7 +767,7 @@ generally the directory parameter is a trusted toplevel directory like the srcdir or destdir, and any subdirectories of this are included in the filename parameter. -#### `will_render($$)` +### `will_render($$)` Given a page name and a destination file name (not including the base destination directory), register that the page will result in that file @@ -783,34 +783,34 @@ Ikiwiki uses this information to automatically clean up rendered files when the page that rendered them goes away or is changed to no longer render them. will_render also does a few important security checks. -#### `pagetype($)` +### `pagetype($)` Given the name of a source file, returns the type of page it is, if it's a type that ikiwiki knowns how to htmlize. Otherwise, returns undef. -#### `pagename($)` +### `pagename($)` Given the name of a source file, returns the name of the wiki page that corresponds to that file. -#### `pagetitle($)` +### `pagetitle($)` Give the name of a wiki page, returns a version suitable to be displayed as the page's title. This is accomplished by de-escaping escaped characters in the page name. "_" is replaced with a space, and '__NN__' is replaced by the UTF character with code NN. -#### `titlepage($)` +### `titlepage($)` This performs the inverse of `pagetitle`, ie, it converts a page title into a wiki page name. -#### `linkpage($)` +### `linkpage($)` This converts text that could have been entered by the user as a [[ikiwiki/WikiLink]] into a wiki page name. -#### `srcfile($;$)` +### `srcfile($;$)` Given the name of a source file in the wiki, searches for the file in the source directory and the underlay directories (most recently added @@ -820,7 +820,7 @@ Normally srcfile will fail with an error message if the source file cannot be found. The second parameter can be set to a true value to make it return undef instead. -#### `add_underlay($)` +### `add_underlay($)` Adds a directory to the set of underlay directories that ikiwiki will search for files. @@ -828,18 +828,18 @@ search for files. If the directory name is not absolute, ikiwiki will assume it is in the parent directory of the configured underlaydir. -#### `displaytime($;$)` +### `displaytime($;$)` Given a time, formats it for display. The optional second parameter is a strftime format to use to format the time. -#### `gettext` +### `gettext` This is the standard gettext function, although slightly optimised. -#### `urlto($$;$)` +### `urlto($$;$)` Construct a relative url to the first parameter from the page named by the second. The first parameter can be either a page name, or some other @@ -848,13 +848,13 @@ destination file, as registered by `will_render`. If the third parameter is passed and is true, an absolute url will be constructed instead of the default relative url. -#### `newpagefile($$)` +### `newpagefile($$)` This can be called when creating a new page, to determine what filename to save the page to. It's passed a page name, and its type, and returns the name of the file to create, relative to the srcdir. -#### `targetpage($$;$)` +### `targetpage($$;$)` Passed a page and an extension, returns the filename that page will be rendered to. @@ -863,7 +863,7 @@ Optionally, a third parameter can be passed, to specify the preferred filename of the page. For example, `targetpage("foo", "rss", "feed")` will yield something like `foo/feed.rss`. -#### `add_link($$)` +### `add_link($$)` This adds a link to `%links`, ensuring that duplicate links are not added. Pass it the page that contains the link, and the link text. -- cgit v1.2.3 From ba19f940bd071f7065246594751dd49041cbbaba Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 14:44:26 -0500 Subject: move note to sidebox --- doc/plugins/write.mdwn | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 17c54ffc7..07bfd72ac 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -3,6 +3,20 @@ written to extend ikiwiki in many ways. Despite the length of this page, it's not really hard. This page is a complete reference to everything a plugin might want to do. There is also a quick [[tutorial]]. +[[!template type="note" text=""" +Ikiwiki is a compiler + +One thing to keep in mind when writing a plugin is that ikiwiki is a wiki +*compiler*. So plugins influence pages when they are built, not when they +are loaded. A plugin that inserts the current time into a page, for +example, will insert the build time. Also, as a compiler, ikiwiki avoids +rebuilding pages unless they have changed, so a plugin that prints some +random or changing thing on a page will generate a static page that won't +change until ikiwiki rebuilds the page for some other reason, like the page +being edited. The [[tutorial]] has some other examples of ways that ikiwiki +being a compiler may trip up the unwary. +"""]] + [[!toc levels=2]] ## Types of plugins @@ -31,18 +45,6 @@ they're the same as far as how they hook into ikiwiki. This document will explain how to write both sorts of plugins, albeit with an emphasis on perl plugins. -## Remember: Ikiwiki is a compiler - -One thing to keep in mind when writing a plugin is that ikiwiki is a wiki -*compiler*. So plugins influence pages when they are built, not when they -are loaded. A plugin that inserts the current time into a page, for -example, will insert the build time. Also, as a compiler, ikiwiki avoids -rebuilding pages unless they have changed, so a plugin that prints some -random or changing thing on a page will generate a static page that won't -change until ikiwiki rebuilds the page for some other reason, like the page -being edited. The [[tutorial]] has some other examples of ways that ikiwiki -being a compiler may trip up the unwary. - ## Plugin interface To import the ikiwiki plugin interface: -- cgit v1.2.3 From 60410369daef9ce990d516f0d538571db4623ceb Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 14:48:22 -0500 Subject: add variable value examples --- doc/plugins/write.mdwn | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 07bfd72ac..f2b96b6d9 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -3,7 +3,7 @@ written to extend ikiwiki in many ways. Despite the length of this page, it's not really hard. This page is a complete reference to everything a plugin might want to do. There is also a quick [[tutorial]]. -[[!template type="note" text=""" +[[!template id="note" text=""" Ikiwiki is a compiler One thing to keep in mind when writing a plugin is that ikiwiki is a wiki @@ -569,6 +569,8 @@ The `%links` hash can be used to look up the names of each page that a page links to. The name of the page is the key; the value is an array reference. Do not modify this hash directly; call `add_link()`. + $links{"foo"} = ["bar", "baz"]; + ### %destsources The `%destsources` hash records the name of the source file used to @@ -576,6 +578,8 @@ create each destination file. The key is the output filename (ie, "foo/index.html"), and the value is the source filename that it was built from (eg, "foo.mdwn"). Note that a single source file may create multiple destination files. Do not modify this hash directly; call `will_render()`. + + $destsources{"foo/index.html"} = "foo.mdwn"; ### %pagesources @@ -583,6 +587,8 @@ The `%pagesources` has can be used to look up the source filename of a page. So the key is the page name, and the value is the source filename. Do not modify this hash. + $pagesources{"foo"} = "foo.mdwn"; + ## Library functions ### `hook(@)` -- cgit v1.2.3 From 4a7558539cd9d0f1ed5c586c29811035f7c14d14 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 15:38:07 -0500 Subject: add highlevel view of when hooks are called during compile and cgi phases --- doc/plugins/write.mdwn | 97 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 78 insertions(+), 19 deletions(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index f2b96b6d9..d94216e17 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -9,16 +9,73 @@ Ikiwiki is a compiler One thing to keep in mind when writing a plugin is that ikiwiki is a wiki *compiler*. So plugins influence pages when they are built, not when they are loaded. A plugin that inserts the current time into a page, for -example, will insert the build time. Also, as a compiler, ikiwiki avoids -rebuilding pages unless they have changed, so a plugin that prints some -random or changing thing on a page will generate a static page that won't -change until ikiwiki rebuilds the page for some other reason, like the page -being edited. The [[tutorial]] has some other examples of ways that ikiwiki -being a compiler may trip up the unwary. +example, will insert the build time. + +Also, as a compiler, ikiwiki avoids rebuilding pages unless they have +changed, so a plugin that prints some random or changing thing on a page +will generate a static page that won't change until ikiwiki rebuilds the +page for some other reason, like the page being edited. + +The [[tutorial]] has some other examples of ways that ikiwiki being a +compiler may trip up the unwary. """]] [[!toc levels=2]] +## Highlevel view of ikiwiki + +Ikiwiki mostly has two modes of operation. It can either be running +as a compiler, building or updating a wiki; or as a cgi program, providing +user interface for editing pages, etc. Almost everything ikiwiki does +is accomplished by calling various hooks provided by plugins. + +### compiler + +As a compiler, starts by calling the `refresh` hook. Then it checks +the wiki's source to find new or changed pages. The `needsbuild` hook is +then called to allow manipulation of the list of pages that need to be +built. + +Now that it knows what pages it needs to build, ikiwiki runs two +compile passes. First, it runs `scan` hooks, which collect metadata about +the pages. Then it runs a page rendering pipeline, by calling in turn these +hooks: `filter`, `preprocess`, `linkify`, `htmlize`, `postscan`, +`pagetemplate`, `sanitize`, `format`. + +After all necessary pages are built, it calls the `change` hook. Finally, +if a page is was deleted, the `delete` hook is called, and the files that +page had previously produced are removed. + +### cgi + +The flow between hooks when ikiwiki is run as a cgi is best illistrated by +an example. + +* *Alice browses to a page and clicks Edit.* +* Ikiwiki is run as a cgi. It assigns Alice a session cookie, and, + by calling the `auth` hooks, sees that she is not yet logged in. +* The `sessioncgi` hooks are then called, and one of them, + from the [[editpage]] plugin, notices that the cgi has been told "do=edit". +* The [[editpage]] plugin calls the `canedit` hook to check if this + page edit is allowed. The [[signinedit]] plugin has a hook that says not: + Alice is not signed in. +* The [[signinedit]] plugin then launches the signin process. A signin + page is built by calling the `formbuilder_setup` hook. +* *Alice signs in with her openid.* +* The [[openid]] plugin's `formbuilder` hook sees that an openid was + entered in the signin form, and redirects to Alice's openid provider. +* Alice's openid provider calls back to ikiwiki. The [[openid]] plugin + has an `auth` hook that finishes the openid signin process. +* Signin complete, ikiwiki returns to what Alice was doing before; editing + a page. +* Now all the `canedit` hooks are happy. The [[editpage]] plugin calls + `formbuilder_setup` to display the page editing form. +* *Alice saves her change to the page.* +* The [[editpage]] plugin's `formbuilder` hook sees that the Save button + was pressed, and calls the `checkcontent` and `editcontent` hooks. + Then it saves the page to disk, and branches into the compiler part + of ikiwiki to refresh the wiki. + ## Types of plugins Most ikiwiki [[plugins]] are written in perl, like ikiwiki. This gives the @@ -530,13 +587,13 @@ function of the ikiwiki wrapper when it is being generated. Several variables are exported to your plugin when you `use IkiWiki;` -### %config +### `%config` 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 your ikiwiki setup file, which sets the hash content to configure the wiki. -### %pagestate +### `%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, @@ -554,7 +611,7 @@ When pages are deleted, ikiwiki automatically deletes their pagestate too. Note that page state does not persist across wiki rebuilds, only across wiki updates. -### %wikistate +### `%wikistate` The `%wikistate` hash can be used by a plugin to store persistant state that is not bound to any one page. To set a value, use @@ -563,7 +620,7 @@ serialize, `$key` is any string you like, and `$id` must be the same as the "id" parameter passed to `hook()` when registering the plugin, so that the state can be dropped if the plugin is no longer used. -### %links +### `%links` The `%links` hash can be used to look up the names of each page that a page links to. The name of the page is the key; the value is an array @@ -571,7 +628,15 @@ reference. Do not modify this hash directly; call `add_link()`. $links{"foo"} = ["bar", "baz"]; -### %destsources +### `%pagesources` + +The `%pagesources` has can be used to look up the source filename +of a page. So the key is the page name, and the value is the source +filename. Do not modify this hash. + + $pagesources{"foo"} = "foo.mdwn"; + +### `%destsources` The `%destsources` hash records the name of the source file used to create each destination file. The key is the output filename (ie, @@ -581,16 +646,10 @@ destination files. Do not modify this hash directly; call `will_render()`. $destsources{"foo/index.html"} = "foo.mdwn"; -### %pagesources - -The `%pagesources` has can be used to look up the source filename -of a page. So the key is the page name, and the value is the source -filename. Do not modify this hash. - - $pagesources{"foo"} = "foo.mdwn"; - ## Library functions +Several functions are exported to your plugin when you `use IkiWiki;` + ### `hook(@)` Hook into ikiwiki's processing. See the discussion of hooks above. -- cgit v1.2.3 From 7b07286a6f4a9903d5a346205b8eaaf93dbb9d0d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 15:41:19 -0500 Subject: layout --- doc/plugins/write.mdwn | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index d94216e17..4fd9c4369 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -31,7 +31,7 @@ is accomplished by calling various hooks provided by plugins. ### compiler -As a compiler, starts by calling the `refresh` hook. Then it checks +As a compiler, ikiwiki starts by calling the `refresh` hook. Then it checks the wiki's source to find new or changed pages. The `needsbuild` hook is then called to allow manipulation of the list of pages that need to be built. @@ -48,10 +48,11 @@ page had previously produced are removed. ### cgi -The flow between hooks when ikiwiki is run as a cgi is best illistrated by +The flow between hooks when ikiwiki is run as a cgi is best illustrated by an example. -* *Alice browses to a page and clicks Edit.* +Alice browses to a page and clicks Edit. + * Ikiwiki is run as a cgi. It assigns Alice a session cookie, and, by calling the `auth` hooks, sees that she is not yet logged in. * The `sessioncgi` hooks are then called, and one of them, @@ -61,7 +62,9 @@ an example. Alice is not signed in. * The [[signinedit]] plugin then launches the signin process. A signin page is built by calling the `formbuilder_setup` hook. -* *Alice signs in with her openid.* + +Alice signs in with her openid. + * The [[openid]] plugin's `formbuilder` hook sees that an openid was entered in the signin form, and redirects to Alice's openid provider. * Alice's openid provider calls back to ikiwiki. The [[openid]] plugin @@ -70,7 +73,9 @@ an example. a page. * Now all the `canedit` hooks are happy. The [[editpage]] plugin calls `formbuilder_setup` to display the page editing form. -* *Alice saves her change to the page.* + +Alice saves her change to the page. + * The [[editpage]] plugin's `formbuilder` hook sees that the Save button was pressed, and calls the `checkcontent` and `editcontent` hooks. Then it saves the page to disk, and branches into the compiler part -- cgit v1.2.3 From f4c517110e1bc1ab9bf6e931073959cdcff1302b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 15:52:03 -0500 Subject: formatting --- doc/plugins/write.mdwn | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 4fd9c4369..a8c9de2d3 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -536,7 +536,7 @@ The data returned is a list of `%config` options, followed by a hash describing the option. There can also be an item named "plugin", which describes the plugin as a whole. For example: - return + return plugin => { description => "description of this plugin", safe => 1, @@ -736,7 +736,7 @@ By default, dependencies are full content dependencies, meaning that the page will be updated whenever anything matching the PageSpec is modified. This can be overridden by passing a `deptype` value as the third parameter. -#### `pagespec_match($$;@)` +### `pagespec_match($$;@)` Passed a page name, and [[ikiwiki/PageSpec]], returns a true value if the [[ikiwiki/PageSpec]] matches the page. @@ -766,7 +766,7 @@ dependency type from one or more of these keywords: If multiple types are specified, they are combined. -#### `bestlink($$)` +### `bestlink($$)` Given a page and the text of a link on the page, determine which existing page that link best points to. Prefers pages under a @@ -774,7 +774,7 @@ subdirectory with the same name as the source page, failing that goes down the directory tree to the base looking for matching pages, as described in [[ikiwiki/SubPage/LinkingRules]]. -#### `htmllink($$$;@)` +### `htmllink($$$;@)` Many plugins need to generate html links and add them to a page. This is done by using the `htmllink` function. The usual way to call -- cgit v1.2.3 From 0b9b3f3e0a10a9617d6f83bcff63136f20072453 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 17:07:54 -0500 Subject: releasing version 3.20100212 --- debian/changelog | 4 +- debian/control | 2 +- ikiwiki.spec | 2 +- po/bg.po | 344 ++++++++++++++++++++++++++++--------------------------- po/cs.po | 344 ++++++++++++++++++++++++++++--------------------------- po/da.po | 344 ++++++++++++++++++++++++++++--------------------------- po/de.po | 344 ++++++++++++++++++++++++++++--------------------------- po/es.po | 344 ++++++++++++++++++++++++++++--------------------------- po/fr.po | 344 ++++++++++++++++++++++++++++--------------------------- po/gu.po | 344 ++++++++++++++++++++++++++++--------------------------- po/ikiwiki.pot | 344 ++++++++++++++++++++++++++++--------------------------- po/it.po | 344 ++++++++++++++++++++++++++++--------------------------- po/pl.po | 344 ++++++++++++++++++++++++++++--------------------------- po/sv.po | 344 ++++++++++++++++++++++++++++--------------------------- po/tr.po | 344 ++++++++++++++++++++++++++++--------------------------- po/vi.po | 344 ++++++++++++++++++++++++++++--------------------------- 16 files changed, 2305 insertions(+), 2175 deletions(-) diff --git a/debian/changelog b/debian/changelog index f24a453c8..c91feae0d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -ikiwiki (3.20100123) UNRELEASED; urgency=low +ikiwiki (3.20100212) unstable; urgency=low * template: Preprocess parameters before htmlizing. * img: Fix a bug that could taint @links with undef values. @@ -25,7 +25,7 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low * Group related plugins into sections in the setup file, and drop unused rcs plugins from the setup file. - -- Joey Hess Tue, 26 Jan 2010 22:25:33 -0500 + -- Joey Hess Fri, 12 Feb 2010 16:45:50 -0500 ikiwiki (3.20100122) unstable; urgency=low diff --git a/debian/control b/debian/control index 172e1b23d..b20f4db55 100644 --- a/debian/control +++ b/debian/control @@ -10,7 +10,7 @@ Build-Depends-Indep: dpkg-dev (>= 1.9.0), libxml-simple-perl, libfile-chdir-perl Maintainer: Joey Hess Uploaders: Josh Triplett -Standards-Version: 3.8.3 +Standards-Version: 3.8.4 Homepage: http://ikiwiki.info/ Vcs-Git: git://git.ikiwiki.info/ Vcs-Browser: http://git.ikiwiki.info/?p=ikiwiki diff --git a/ikiwiki.spec b/ikiwiki.spec index 044c7c033..865c9a325 100644 --- a/ikiwiki.spec +++ b/ikiwiki.spec @@ -1,5 +1,5 @@ Name: ikiwiki -Version: 3.20100122 +Version: 3.20100212 Release: 1%{?dist} Summary: A wiki compiler diff --git a/po/bg.po b/po/bg.po index 810a16e95..a211b7685 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: 2010-01-22 16:04-0500\n" +"POT-Creation-Date: 2010-02-12 16:48-0500\n" "PO-Revision-Date: 2007-01-12 01:19+0200\n" "Last-Translator: Damyan Ivanov \n" "Language-Team: Bulgarian \n" @@ -55,7 +55,7 @@ msgstr "Предпочитанията са запазени." msgid "You are banned." msgstr "Достъпът ви е забранен." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 msgid "Error" msgstr "Грешка" @@ -146,35 +146,35 @@ msgstr "готово" msgid "Must specify %s" msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:136 +#: ../IkiWiki/Plugin/amazon_s3.pm:140 #, fuzzy msgid "Failed to create S3 bucket: " msgstr "Грешка при изпращане на поща" -#: ../IkiWiki/Plugin/amazon_s3.pm:221 +#: ../IkiWiki/Plugin/amazon_s3.pm:225 #, fuzzy msgid "Failed to save file to S3: " msgstr "Грешка при изпращане на поща" -#: ../IkiWiki/Plugin/amazon_s3.pm:243 +#: ../IkiWiki/Plugin/amazon_s3.pm:247 #, fuzzy msgid "Failed to delete file from S3: " msgstr "грешка при запис на файла „%s”: %s" -#: ../IkiWiki/Plugin/attachment.pm:49 +#: ../IkiWiki/Plugin/attachment.pm:50 #, perl-format msgid "there is already a page named %s" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:65 +#: ../IkiWiki/Plugin/attachment.pm:66 msgid "prohibited by allowed_attachments" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:140 +#: ../IkiWiki/Plugin/attachment.pm:141 msgid "bad attachment filename" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:182 +#: ../IkiWiki/Plugin/attachment.pm:183 msgid "attachment upload" msgstr "" @@ -182,7 +182,7 @@ msgstr "" msgid "automatic index generation" msgstr "" -#: ../IkiWiki/Plugin/blogspam.pm:108 +#: ../IkiWiki/Plugin/blogspam.pm:109 msgid "" "Sorry, but that looks like spam to blogspam: " @@ -197,12 +197,12 @@ msgstr "" msgid "There are no broken links!" msgstr "Няма „счупени” връзки!" -#: ../IkiWiki/Plugin/comments.pm:124 ../IkiWiki/Plugin/format.pm:38 +#: ../IkiWiki/Plugin/comments.pm:125 ../IkiWiki/Plugin/format.pm:48 #, perl-format msgid "unsupported page format %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:129 +#: ../IkiWiki/Plugin/comments.pm:130 msgid "comment must have content" msgstr "" @@ -210,7 +210,7 @@ msgstr "" msgid "Anonymous" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:97 +#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "" @@ -246,7 +246,7 @@ msgstr "" msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256 msgid "you are not logged in as an admin" msgstr "" @@ -262,133 +262,133 @@ msgstr "" msgid "Comments" msgstr "" -#: ../IkiWiki/Plugin/conditional.pm:27 ../IkiWiki/Plugin/cutpaste.pm:30 -#: ../IkiWiki/Plugin/cutpaste.pm:45 ../IkiWiki/Plugin/cutpaste.pm:61 +#: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 +#: ../IkiWiki/Plugin/cutpaste.pm:46 ../IkiWiki/Plugin/cutpaste.pm:62 #: ../IkiWiki/Plugin/testpagespec.pm:26 #, perl-format msgid "%s parameter is required" msgstr "" -#: ../IkiWiki/Plugin/cutpaste.pm:66 +#: ../IkiWiki/Plugin/cutpaste.pm:67 msgid "no text was copied in this page" msgstr "" -#: ../IkiWiki/Plugin/cutpaste.pm:69 +#: ../IkiWiki/Plugin/cutpaste.pm:70 #, perl-format msgid "no text was copied in this page with id %s" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:40 +#: ../IkiWiki/Plugin/editpage.pm:41 #, fuzzy, perl-format msgid "removing old preview %s" msgstr "премахване на старата страница „%s”" -#: ../IkiWiki/Plugin/editpage.pm:113 +#: ../IkiWiki/Plugin/editpage.pm:114 #, perl-format msgid "%s is not an editable page" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:292 +#: ../IkiWiki/Plugin/editpage.pm:296 #, perl-format msgid "creating %s" msgstr "създаване на %s" -#: ../IkiWiki/Plugin/editpage.pm:310 ../IkiWiki/Plugin/editpage.pm:329 -#: ../IkiWiki/Plugin/editpage.pm:339 ../IkiWiki/Plugin/editpage.pm:383 -#: ../IkiWiki/Plugin/editpage.pm:422 +#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 +#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 +#: ../IkiWiki/Plugin/editpage.pm:426 #, perl-format msgid "editing %s" msgstr "промяна на %s" -#: ../IkiWiki/Plugin/edittemplate.pm:51 +#: ../IkiWiki/Plugin/edittemplate.pm:52 #, fuzzy msgid "template not specified" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/edittemplate.pm:54 +#: ../IkiWiki/Plugin/edittemplate.pm:55 #, fuzzy msgid "match not specified" msgstr "не е указан файл на обвивката" -#: ../IkiWiki/Plugin/edittemplate.pm:63 +#: ../IkiWiki/Plugin/edittemplate.pm:64 #, perl-format msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:137 +#: ../IkiWiki/Plugin/edittemplate.pm:138 #, fuzzy msgid "failed to process" msgstr "грешка при обработване на шаблона" -#: ../IkiWiki/Plugin/format.pm:20 +#: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" msgstr "" -#: ../IkiWiki/Plugin/fortune.pm:27 +#: ../IkiWiki/Plugin/fortune.pm:28 msgid "fortune failed" msgstr "грешшка в приставката „fortune”" -#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 +#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 #, fuzzy msgid "missing page" msgstr "липсващ параметър „id” на шаблона" -#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 +#: ../IkiWiki/Plugin/getsource.pm:66 ../IkiWiki/Plugin/goto.pm:59 #, perl-format msgid "The page %s does not exist." msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:74 +#: ../IkiWiki/Plugin/getsource.pm:75 #, fuzzy msgid "not a page" msgstr "грешка при четене на „%s”: %s" -#: ../IkiWiki/Plugin/getsource.pm:76 +#: ../IkiWiki/Plugin/getsource.pm:77 #, perl-format msgid "%s is an attachment, not a page." msgstr "" -#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 +#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:697 +#: ../IkiWiki/Plugin/git.pm:698 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:701 +#: ../IkiWiki/Plugin/git.pm:702 msgid "you are not allowed to change file modes" msgstr "" -#: ../IkiWiki/Plugin/google.pm:25 ../IkiWiki/Plugin/po.pm:131 -#: ../IkiWiki/Plugin/search.pm:36 +#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/po.pm:132 +#: ../IkiWiki/Plugin/search.pm:37 #, fuzzy, perl-format msgid "Must specify %s when using the %s plugin" msgstr "При използване на приеставката „search” е необходимо е да се укаже %s" -#: ../IkiWiki/Plugin/graphviz.pm:67 +#: ../IkiWiki/Plugin/graphviz.pm:68 #, fuzzy msgid "failed to run graphviz" msgstr "приставката „linkmap”: грешка при изпълнение на „dot”" -#: ../IkiWiki/Plugin/graphviz.pm:94 +#: ../IkiWiki/Plugin/graphviz.pm:95 msgid "prog not a valid graphviz program" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:47 +#: ../IkiWiki/Plugin/highlight.pm:48 #, perl-format msgid "tohighlight contains unknown file type '%s'" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:58 +#: ../IkiWiki/Plugin/highlight.pm:59 #, perl-format msgid "Source code: %s" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:123 +#: ../IkiWiki/Plugin/highlight.pm:124 msgid "" "warning: highlight perl module not available; falling back to pass through" msgstr "" @@ -398,116 +398,116 @@ msgstr "" msgid "htmltidy failed to parse this html" msgstr "няма разпознати усмивки; изключване на приставката „smiley”" -#: ../IkiWiki/Plugin/img.pm:64 +#: ../IkiWiki/Plugin/img.pm:69 #, fuzzy msgid "Image::Magick is not installed" msgstr "не е инсталиран polygen" -#: ../IkiWiki/Plugin/img.pm:68 ../IkiWiki/Plugin/img.pm:112 +#: ../IkiWiki/Plugin/img.pm:73 ../IkiWiki/Plugin/img.pm:117 #, fuzzy, perl-format msgid "failed to read %s: %s" msgstr "грешка при запис на файла „%s”: %s" -#: ../IkiWiki/Plugin/img.pm:74 +#: ../IkiWiki/Plugin/img.pm:79 #, perl-format msgid "wrong size format \"%s\" (should be WxH)" msgstr "" -#: ../IkiWiki/Plugin/img.pm:120 +#: ../IkiWiki/Plugin/img.pm:125 #, fuzzy, perl-format msgid "failed to resize: %s" msgstr "грешка при запис на файла „%s”: %s" -#: ../IkiWiki/Plugin/img.pm:140 +#: ../IkiWiki/Plugin/img.pm:145 #, fuzzy, perl-format msgid "failed to determine size of image %s" msgstr "грешка при запис на файла „%s”: %s" -#: ../IkiWiki/Plugin/inline.pm:92 +#: ../IkiWiki/Plugin/inline.pm:93 msgid "Must specify url to wiki with --url when using --rss or --atom" msgstr "" "Когато се използва „--rss” или „--atom” трябва да се укаже и " "местоположението на уикито посредством параметъра „--url”" -#: ../IkiWiki/Plugin/inline.pm:138 +#: ../IkiWiki/Plugin/inline.pm:139 #, fuzzy msgid "page editing not allowed" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/inline.pm:155 +#: ../IkiWiki/Plugin/inline.pm:156 #, fuzzy msgid "missing pages parameter" msgstr "липсващ параметър „id” на шаблона" -#: ../IkiWiki/Plugin/inline.pm:191 +#: ../IkiWiki/Plugin/inline.pm:192 #, perl-format msgid "the %s and %s parameters cannot be used together" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:312 +#: ../IkiWiki/Plugin/inline.pm:313 msgid "Add a new post titled:" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:332 +#: ../IkiWiki/Plugin/inline.pm:333 #, perl-format msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:624 +#: ../IkiWiki/Plugin/inline.pm:625 msgid "RPC::XML::Client not found, not pinging" msgstr "модулът „RPC::XML::Client” не е намерен; източникът не е проверен" -#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 -#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 +#: ../IkiWiki/Plugin/linkmap.pm:81 ../IkiWiki/Plugin/linkmap.pm:88 +#: ../IkiWiki/Plugin/linkmap.pm:92 ../IkiWiki/Plugin/linkmap.pm:95 #, fuzzy msgid "failed to run dot" msgstr "приставката „linkmap”: грешка при изпълнение на „dot”" -#: ../IkiWiki/Plugin/linkmap.pm:84 +#: ../IkiWiki/Plugin/linkmap.pm:85 msgid "linkmap" msgstr "" -#: ../IkiWiki/Plugin/lockedit.pm:48 +#: ../IkiWiki/Plugin/lockedit.pm:49 #, fuzzy, perl-format msgid "%s is locked and cannot be edited" msgstr "" "Страницата „%s” е заключена от потребителя „%s” и не може да бъде променяна" -#: ../IkiWiki/Plugin/mdwn.pm:44 +#: ../IkiWiki/Plugin/mdwn.pm:45 msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed" msgstr "" -#: ../IkiWiki/Plugin/mdwn.pm:69 +#: ../IkiWiki/Plugin/mdwn.pm:70 #, perl-format msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" "грешка при зареждането на perl-модула „Markdown.pm” (%s) или „/usr/bin/" "markdown” (%s)" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:162 #, fuzzy msgid "stylesheet not found" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/meta.pm:199 +#: ../IkiWiki/Plugin/meta.pm:200 #, fuzzy msgid "redir page not found" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/meta.pm:213 +#: ../IkiWiki/Plugin/meta.pm:214 #, fuzzy msgid "redir cycle is not allowed" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Огледала" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirror" msgstr "Огледало" -#: ../IkiWiki/Plugin/moderatedcomments.pm:41 +#: ../IkiWiki/Plugin/moderatedcomments.pm:42 msgid "comment needs moderation" msgstr "" @@ -515,19 +515,19 @@ msgstr "" msgid "more" msgstr "" -#: ../IkiWiki/Plugin/norcs.pm:65 +#: ../IkiWiki/Plugin/norcs.pm:66 msgid "getctime not implemented" msgstr "функцията „getctime” не е реализирана" -#: ../IkiWiki/Plugin/openid.pm:61 +#: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "" -#: ../IkiWiki/Plugin/openid.pm:64 +#: ../IkiWiki/Plugin/openid.pm:65 msgid "Get an OpenID" msgstr "Получаване на OpenID номер" -#: ../IkiWiki/Plugin/orphans.pm:55 +#: ../IkiWiki/Plugin/orphans.pm:56 #, fuzzy msgid "All pages have other pages linking to them." msgstr "Всички страници имат връзки от други страници." @@ -536,31 +536,39 @@ msgstr "Всички страници имат връзки от други ст msgid "bad or missing template" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:248 +#: ../IkiWiki/Plugin/passwordauth.pm:229 +msgid "Your user page: " +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:236 +msgid "Create your user page" +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:264 msgid "Account creation successful. Now you can Login." msgstr "Акаунтът е създаден. Можете да влезете." -#: ../IkiWiki/Plugin/passwordauth.pm:251 +#: ../IkiWiki/Plugin/passwordauth.pm:267 msgid "Error creating account." msgstr "Грешка при създаване на акаунта." -#: ../IkiWiki/Plugin/passwordauth.pm:258 +#: ../IkiWiki/Plugin/passwordauth.pm:274 msgid "No email address, so cannot email password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:292 +#: ../IkiWiki/Plugin/passwordauth.pm:308 msgid "Failed to send mail" msgstr "Грешка при изпращане на поща" -#: ../IkiWiki/Plugin/passwordauth.pm:294 +#: ../IkiWiki/Plugin/passwordauth.pm:310 msgid "You have been mailed password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:329 +#: ../IkiWiki/Plugin/passwordauth.pm:345 msgid "incorrect password reset url" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:332 +#: ../IkiWiki/Plugin/passwordauth.pm:348 msgid "password reset denied" msgstr "" @@ -591,119 +599,119 @@ msgstr "модулът „RPC::XML::Client” не е намерен; източ msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:138 +#: ../IkiWiki/Plugin/po.pm:139 #, perl-format msgid "%s is not a valid language code" msgstr "" -#: ../IkiWiki/Plugin/po.pm:150 +#: ../IkiWiki/Plugin/po.pm:151 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:155 +#: ../IkiWiki/Plugin/po.pm:156 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:385 +#: ../IkiWiki/Plugin/po.pm:386 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 #, fuzzy, perl-format msgid "building %s" msgstr "промяна на %s" -#: ../IkiWiki/Plugin/po.pm:427 +#: ../IkiWiki/Plugin/po.pm:428 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:451 +#: ../IkiWiki/Plugin/po.pm:452 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:471 +#: ../IkiWiki/Plugin/po.pm:472 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:870 +#: ../IkiWiki/Plugin/po.pm:871 #, perl-format msgid "POT file (%s) does not exist" msgstr "" -#: ../IkiWiki/Plugin/po.pm:884 +#: ../IkiWiki/Plugin/po.pm:885 #, fuzzy, perl-format msgid "failed to copy underlay PO file to %s" msgstr "крешка при компилиране на файла %s" -#: ../IkiWiki/Plugin/po.pm:893 +#: ../IkiWiki/Plugin/po.pm:894 #, fuzzy, perl-format msgid "failed to update %s" msgstr "крешка при компилиране на файла %s" -#: ../IkiWiki/Plugin/po.pm:899 +#: ../IkiWiki/Plugin/po.pm:900 #, fuzzy, perl-format msgid "failed to copy the POT file to %s" msgstr "крешка при компилиране на файла %s" -#: ../IkiWiki/Plugin/po.pm:935 +#: ../IkiWiki/Plugin/po.pm:936 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:948 +#: ../IkiWiki/Plugin/po.pm:949 #, fuzzy, perl-format msgid "failed to translate %s" msgstr "грешка при запис на файла „%s”: %s" -#: ../IkiWiki/Plugin/po.pm:1032 +#: ../IkiWiki/Plugin/po.pm:1033 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 -#: ../IkiWiki/Plugin/po.pm:1141 +#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 +#: ../IkiWiki/Plugin/po.pm:1142 #, fuzzy, perl-format msgid "failed to write %s" msgstr "грешка при запис на файла „%s”: %s" -#: ../IkiWiki/Plugin/po.pm:1100 +#: ../IkiWiki/Plugin/po.pm:1101 #, fuzzy msgid "failed to translate" msgstr "приставката „linkmap”: грешка при изпълнение на „dot”" -#: ../IkiWiki/Plugin/po.pm:1153 +#: ../IkiWiki/Plugin/po.pm:1154 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" -#: ../IkiWiki/Plugin/poll.pm:69 +#: ../IkiWiki/Plugin/poll.pm:70 msgid "vote" msgstr "гласуване" -#: ../IkiWiki/Plugin/poll.pm:77 +#: ../IkiWiki/Plugin/poll.pm:78 msgid "Total votes:" msgstr "Общо гласове:" -#: ../IkiWiki/Plugin/polygen.pm:41 +#: ../IkiWiki/Plugin/polygen.pm:42 msgid "polygen not installed" msgstr "не е инсталиран polygen" -#: ../IkiWiki/Plugin/polygen.pm:60 +#: ../IkiWiki/Plugin/polygen.pm:61 #, fuzzy msgid "command failed" msgstr "грешшка в приставката „fortune”" -#: ../IkiWiki/Plugin/postsparkline.pm:46 +#: ../IkiWiki/Plugin/postsparkline.pm:47 msgid "missing formula" msgstr "" -#: ../IkiWiki/Plugin/postsparkline.pm:53 +#: ../IkiWiki/Plugin/postsparkline.pm:54 msgid "unknown formula" msgstr "" @@ -771,12 +779,12 @@ msgstr "" msgid "at noon on %A" msgstr "" -#: ../IkiWiki/Plugin/progress.pm:34 +#: ../IkiWiki/Plugin/progress.pm:35 #, perl-format msgid "illegal percent value %s" msgstr "" -#: ../IkiWiki/Plugin/progress.pm:55 +#: ../IkiWiki/Plugin/progress.pm:56 msgid "need either `percent` or `totalpages` and `donepages` parameters" msgstr "" @@ -784,83 +792,83 @@ msgstr "" msgid "(Diff truncated)" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36 +#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:37 #, perl-format msgid "%s does not exist" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:38 +#: ../IkiWiki/Plugin/remove.pm:39 #, fuzzy, perl-format msgid "%s is not in the srcdir, so it cannot be deleted" msgstr "" "Страницата „%s” е заключена от потребителя „%s” и не може да бъде променяна" -#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45 +#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:46 #, perl-format msgid "%s is not a file" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:134 +#: ../IkiWiki/Plugin/remove.pm:135 #, perl-format msgid "confirm removal of %s" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:171 +#: ../IkiWiki/Plugin/remove.pm:172 msgid "Please select the attachments to remove." msgstr "" -#: ../IkiWiki/Plugin/remove.pm:211 +#: ../IkiWiki/Plugin/remove.pm:212 msgid "removed" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:42 +#: ../IkiWiki/Plugin/rename.pm:43 #, perl-format msgid "%s is not in the srcdir, so it cannot be renamed" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:62 +#: ../IkiWiki/Plugin/rename.pm:63 #, fuzzy msgid "no change to the file name was specified" msgstr "не е указан файл на обвивката" -#: ../IkiWiki/Plugin/rename.pm:68 +#: ../IkiWiki/Plugin/rename.pm:69 #, perl-format msgid "illegal name" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:73 +#: ../IkiWiki/Plugin/rename.pm:74 #, perl-format msgid "%s already exists" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:79 +#: ../IkiWiki/Plugin/rename.pm:80 #, perl-format msgid "%s already exists on disk" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:122 +#: ../IkiWiki/Plugin/rename.pm:123 #, fuzzy, perl-format msgid "rename %s" msgstr "обновяване на страницата „%s”" -#: ../IkiWiki/Plugin/rename.pm:161 +#: ../IkiWiki/Plugin/rename.pm:162 msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:248 +#: ../IkiWiki/Plugin/rename.pm:249 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:251 +#: ../IkiWiki/Plugin/rename.pm:252 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:348 +#: ../IkiWiki/Plugin/rename.pm:349 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:572 +#: ../IkiWiki/Plugin/rename.pm:573 #, fuzzy, perl-format msgid "update for rename of %s to %s" msgstr "обновяване на страниците от уики „%s”: %s от потребител „%s”" @@ -875,21 +883,21 @@ msgstr "грешка при запис на файла „%s”: %s" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:182 +#: ../IkiWiki/Plugin/search.pm:183 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "" -#: ../IkiWiki/Plugin/search.pm:217 +#: ../IkiWiki/Plugin/search.pm:218 msgid "search" msgstr "" -#: ../IkiWiki/Plugin/shortcut.pm:31 +#: ../IkiWiki/Plugin/shortcut.pm:32 #, perl-format msgid "shortcut plugin will not work without %s" msgstr "" -#: ../IkiWiki/Plugin/shortcut.pm:44 +#: ../IkiWiki/Plugin/shortcut.pm:45 #, fuzzy msgid "missing name or url parameter" msgstr "препратката няма указани параметрите „name” или „url”" @@ -897,7 +905,7 @@ msgstr "препратката няма указани параметрите #. translators: This is used to display what shortcuts are defined. #. translators: First parameter is the name of the shortcut, the second #. translators: is an URL. -#: ../IkiWiki/Plugin/shortcut.pm:54 +#: ../IkiWiki/Plugin/shortcut.pm:55 #, fuzzy, perl-format msgid "shortcut %s points to %s" msgstr "препратката „%s” сочи към „%s”" @@ -907,121 +915,123 @@ msgstr "препратката „%s” сочи към „%s”" msgid "failed to parse any smileys" msgstr "няма разпознати усмивки; изключване на приставката „smiley”" -#: ../IkiWiki/Plugin/sparkline.pm:72 +#: ../IkiWiki/Plugin/sparkline.pm:73 #, fuzzy msgid "parse error" msgstr "приставката „linkmap”: грешка при изпълнение на „dot”" -#: ../IkiWiki/Plugin/sparkline.pm:78 +#: ../IkiWiki/Plugin/sparkline.pm:79 msgid "invalid featurepoint diameter" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:88 +#: ../IkiWiki/Plugin/sparkline.pm:89 msgid "invalid featurepoint location" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:99 +#: ../IkiWiki/Plugin/sparkline.pm:100 msgid "missing values" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:104 +#: ../IkiWiki/Plugin/sparkline.pm:105 #, fuzzy msgid "invalid height value" msgstr "приставката „linkmap”: грешка при изпълнение на „dot”" -#: ../IkiWiki/Plugin/sparkline.pm:111 +#: ../IkiWiki/Plugin/sparkline.pm:112 #, fuzzy msgid "missing width parameter" msgstr "липсващ параметър „id” на шаблона" -#: ../IkiWiki/Plugin/sparkline.pm:115 +#: ../IkiWiki/Plugin/sparkline.pm:116 #, fuzzy msgid "invalid width value" msgstr "приставката „linkmap”: грешка при изпълнение на „dot”" -#: ../IkiWiki/Plugin/sparkline.pm:153 +#: ../IkiWiki/Plugin/sparkline.pm:154 #, fuzzy msgid "failed to run php" msgstr "приставката „linkmap”: грешка при изпълнение на „dot”" -#: ../IkiWiki/Plugin/table.pm:31 +#: ../IkiWiki/Plugin/table.pm:32 msgid "cannot find file" msgstr "" -#: ../IkiWiki/Plugin/table.pm:87 +#: ../IkiWiki/Plugin/table.pm:88 msgid "unknown data format" msgstr "" -#: ../IkiWiki/Plugin/table.pm:95 +#: ../IkiWiki/Plugin/table.pm:96 msgid "empty data" msgstr "" -#: ../IkiWiki/Plugin/table.pm:114 +#: ../IkiWiki/Plugin/table.pm:115 msgid "Direct data download" msgstr "" -#: ../IkiWiki/Plugin/table.pm:148 +#: ../IkiWiki/Plugin/table.pm:149 #, fuzzy, perl-format msgid "parse fail at line %d: %s" msgstr "грешка при запис на файла „%s”: %s" -#: ../IkiWiki/Plugin/template.pm:29 +#: ../IkiWiki/Plugin/template.pm:34 #, fuzzy msgid "missing id parameter" msgstr "липсващ параметър „id” на шаблона" -#: ../IkiWiki/Plugin/template.pm:36 +#: ../IkiWiki/Plugin/template.pm:41 #, perl-format msgid "template %s not found" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/template.pm:55 +#: ../IkiWiki/Plugin/template.pm:60 #, fuzzy msgid "failed to process:" msgstr "грешка при обработване на шаблона" -#: ../IkiWiki/Plugin/teximg.pm:70 +#: ../IkiWiki/Plugin/teximg.pm:71 msgid "missing tex code" msgstr "" -#: ../IkiWiki/Plugin/teximg.pm:122 +#: ../IkiWiki/Plugin/teximg.pm:123 #, fuzzy msgid "failed to generate image from code" msgstr "грешка при запис на файла „%s”: %s" -#: ../IkiWiki/Plugin/websetup.pm:89 -msgid "plugin" +#: ../IkiWiki/Plugin/websetup.pm:91 +#, perl-format +msgid "%s plugin:" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:108 +#: ../IkiWiki/Plugin/websetup.pm:107 #, perl-format -msgid "enable %s?" +msgid "%s plugins" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:244 -msgid "setup file for this wiki is not known" +#: ../IkiWiki/Plugin/websetup.pm:121 +#, perl-format +msgid "enable %s?" msgstr "" #: ../IkiWiki/Plugin/websetup.pm:260 -msgid "main" +msgid "setup file for this wiki is not known" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:261 -msgid "plugins" +#: ../IkiWiki/Plugin/websetup.pm:276 +msgid "main" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:404 +#: ../IkiWiki/Plugin/websetup.pm:419 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:408 +#: ../IkiWiki/Plugin/websetup.pm:423 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:445 +#: ../IkiWiki/Plugin/websetup.pm:460 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1095,20 +1105,20 @@ msgstr "ikiwiki: неуспех при обновяване на страниц msgid "cannot read %s: %s" msgstr "грешка при четене на „%s”: %s" -#: ../IkiWiki/Setup/Automator.pm:33 +#: ../IkiWiki/Setup/Automator.pm:34 msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:79 +#: ../IkiWiki/Setup/Automator.pm:80 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:105 +#: ../IkiWiki/Setup/Automator.pm:106 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:123 +#: ../IkiWiki/Setup/Automator.pm:124 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1181,25 +1191,25 @@ msgstr "" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1263 +#: ../IkiWiki.pm:1255 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "открита е циклична завидимост при %s на „%s” на дълбочина %i" -#: ../IkiWiki.pm:1862 +#: ../IkiWiki.pm:1854 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2005 +#: ../IkiWiki.pm:1997 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2016 +#: ../IkiWiki.pm:2008 #, perl-format msgid "unknown sort type %s" msgstr "непознат вид сортиране „%s”" -#: ../IkiWiki.pm:2035 +#: ../IkiWiki.pm:2027 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "грешка при четене на „%s”: %s" diff --git a/po/cs.po b/po/cs.po index 399111069..d3cf3f5b9 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: 2010-01-22 16:04-0500\n" +"POT-Creation-Date: 2010-02-12 16:48-0500\n" "PO-Revision-Date: 2009-09-11 20:23+0200\n" "Last-Translator: Miroslav Kure \n" "Language-Team: Czech \n" @@ -55,7 +55,7 @@ msgstr "Nastavení uloženo." msgid "You are banned." msgstr "Jste vyhoštěni." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 msgid "Error" msgstr "Chyba" @@ -145,32 +145,32 @@ msgstr "hotovo" msgid "Must specify %s" msgstr "Musíte zadat %s" -#: ../IkiWiki/Plugin/amazon_s3.pm:136 +#: ../IkiWiki/Plugin/amazon_s3.pm:140 msgid "Failed to create S3 bucket: " msgstr "Nepodařilo se vytvořit S3 bucket:" -#: ../IkiWiki/Plugin/amazon_s3.pm:221 +#: ../IkiWiki/Plugin/amazon_s3.pm:225 msgid "Failed to save file to S3: " msgstr "Nepodařilo se uložit soubor na S3:" -#: ../IkiWiki/Plugin/amazon_s3.pm:243 +#: ../IkiWiki/Plugin/amazon_s3.pm:247 msgid "Failed to delete file from S3: " msgstr "Nelze smazat soubor z S3:" -#: ../IkiWiki/Plugin/attachment.pm:49 +#: ../IkiWiki/Plugin/attachment.pm:50 #, perl-format msgid "there is already a page named %s" msgstr "stránka nazvaná %s již existuje" -#: ../IkiWiki/Plugin/attachment.pm:65 +#: ../IkiWiki/Plugin/attachment.pm:66 msgid "prohibited by allowed_attachments" msgstr "zakázáno proměnnou allowed_attachments" -#: ../IkiWiki/Plugin/attachment.pm:140 +#: ../IkiWiki/Plugin/attachment.pm:141 msgid "bad attachment filename" msgstr "chybné jméno souboru s přílohou" -#: ../IkiWiki/Plugin/attachment.pm:182 +#: ../IkiWiki/Plugin/attachment.pm:183 msgid "attachment upload" msgstr "příloha nahrána" @@ -178,7 +178,7 @@ msgstr "příloha nahrána" msgid "automatic index generation" msgstr "automatické vytváření indexu" -#: ../IkiWiki/Plugin/blogspam.pm:108 +#: ../IkiWiki/Plugin/blogspam.pm:109 msgid "" "Sorry, but that looks like spam to blogspam: " @@ -195,12 +195,12 @@ msgstr "%s z %s" msgid "There are no broken links!" msgstr "Žádné porušené odkazy!" -#: ../IkiWiki/Plugin/comments.pm:124 ../IkiWiki/Plugin/format.pm:38 +#: ../IkiWiki/Plugin/comments.pm:125 ../IkiWiki/Plugin/format.pm:48 #, perl-format msgid "unsupported page format %s" msgstr "nepodporovaný formát stránky %s" -#: ../IkiWiki/Plugin/comments.pm:129 +#: ../IkiWiki/Plugin/comments.pm:130 msgid "comment must have content" msgstr "komentář musí mít obsah" @@ -208,7 +208,7 @@ msgstr "komentář musí mít obsah" msgid "Anonymous" msgstr "Anonym" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:97 +#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "chybný název stránky" @@ -244,7 +244,7 @@ msgstr "Přidán komentář" msgid "Added a comment: %s" msgstr "Přidán komentář: %s" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256 msgid "you are not logged in as an admin" msgstr "nejste přihlášeni jako správce" @@ -260,127 +260,127 @@ msgstr "schvalování komentářů" msgid "Comments" msgstr "Komentáře" -#: ../IkiWiki/Plugin/conditional.pm:27 ../IkiWiki/Plugin/cutpaste.pm:30 -#: ../IkiWiki/Plugin/cutpaste.pm:45 ../IkiWiki/Plugin/cutpaste.pm:61 +#: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 +#: ../IkiWiki/Plugin/cutpaste.pm:46 ../IkiWiki/Plugin/cutpaste.pm:62 #: ../IkiWiki/Plugin/testpagespec.pm:26 #, perl-format msgid "%s parameter is required" msgstr "parametr %s je povinný" -#: ../IkiWiki/Plugin/cutpaste.pm:66 +#: ../IkiWiki/Plugin/cutpaste.pm:67 msgid "no text was copied in this page" msgstr "na této stránce nebyl zkopírován žádný text" -#: ../IkiWiki/Plugin/cutpaste.pm:69 +#: ../IkiWiki/Plugin/cutpaste.pm:70 #, perl-format msgid "no text was copied in this page with id %s" msgstr "na této stránce nebyl zkopírován žádný text s id %s" -#: ../IkiWiki/Plugin/editpage.pm:40 +#: ../IkiWiki/Plugin/editpage.pm:41 #, perl-format msgid "removing old preview %s" msgstr "odstraňuji starý náhled %s" -#: ../IkiWiki/Plugin/editpage.pm:113 +#: ../IkiWiki/Plugin/editpage.pm:114 #, perl-format msgid "%s is not an editable page" msgstr "%s není editovatelná stránka" -#: ../IkiWiki/Plugin/editpage.pm:292 +#: ../IkiWiki/Plugin/editpage.pm:296 #, perl-format msgid "creating %s" msgstr "vytvářím %s" -#: ../IkiWiki/Plugin/editpage.pm:310 ../IkiWiki/Plugin/editpage.pm:329 -#: ../IkiWiki/Plugin/editpage.pm:339 ../IkiWiki/Plugin/editpage.pm:383 -#: ../IkiWiki/Plugin/editpage.pm:422 +#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 +#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 +#: ../IkiWiki/Plugin/editpage.pm:426 #, perl-format msgid "editing %s" msgstr "upravuji %s" -#: ../IkiWiki/Plugin/edittemplate.pm:51 +#: ../IkiWiki/Plugin/edittemplate.pm:52 msgid "template not specified" msgstr "nebyl zadán parametr template" -#: ../IkiWiki/Plugin/edittemplate.pm:54 +#: ../IkiWiki/Plugin/edittemplate.pm:55 msgid "match not specified" msgstr "nebyl zadán parametr match" -#: ../IkiWiki/Plugin/edittemplate.pm:63 +#: ../IkiWiki/Plugin/edittemplate.pm:64 #, perl-format msgid "edittemplate %s registered for %s" msgstr "edittemplate %s byla zaregistrována pro %s" -#: ../IkiWiki/Plugin/edittemplate.pm:137 +#: ../IkiWiki/Plugin/edittemplate.pm:138 msgid "failed to process" msgstr "nepodařilo se zpracovat" -#: ../IkiWiki/Plugin/format.pm:20 +#: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" msgstr "musíte zadat formát a text" -#: ../IkiWiki/Plugin/fortune.pm:27 +#: ../IkiWiki/Plugin/fortune.pm:28 msgid "fortune failed" msgstr "fortune selhal" -#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 +#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 msgid "missing page" msgstr "chybějící stránka" -#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 +#: ../IkiWiki/Plugin/getsource.pm:66 ../IkiWiki/Plugin/goto.pm:59 #, perl-format msgid "The page %s does not exist." msgstr "Stránka %s neexistuje." -#: ../IkiWiki/Plugin/getsource.pm:74 +#: ../IkiWiki/Plugin/getsource.pm:75 msgid "not a page" msgstr "není stránkou" -#: ../IkiWiki/Plugin/getsource.pm:76 +#: ../IkiWiki/Plugin/getsource.pm:77 #, perl-format msgid "%s is an attachment, not a page." msgstr "%s není ani příloha, ani stránka." -#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 +#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "nejste oprávněni měnit %s" -#: ../IkiWiki/Plugin/git.pm:697 +#: ../IkiWiki/Plugin/git.pm:698 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "nemůžete pracovat se souborem s přístupovým oprávněními %s" -#: ../IkiWiki/Plugin/git.pm:701 +#: ../IkiWiki/Plugin/git.pm:702 msgid "you are not allowed to change file modes" msgstr "nejste oprávněni měnit přístupová oprávnění souborů" -#: ../IkiWiki/Plugin/google.pm:25 ../IkiWiki/Plugin/po.pm:131 -#: ../IkiWiki/Plugin/search.pm:36 +#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/po.pm:132 +#: ../IkiWiki/Plugin/search.pm:37 #, perl-format msgid "Must specify %s when using the %s plugin" msgstr "%s musíte zadat při každém použití modulu %s" -#: ../IkiWiki/Plugin/graphviz.pm:67 +#: ../IkiWiki/Plugin/graphviz.pm:68 msgid "failed to run graphviz" msgstr "nepodařilo se spustit graphviz" -#: ../IkiWiki/Plugin/graphviz.pm:94 +#: ../IkiWiki/Plugin/graphviz.pm:95 msgid "prog not a valid graphviz program" msgstr "program není platným programem graphviz" -#: ../IkiWiki/Plugin/highlight.pm:47 +#: ../IkiWiki/Plugin/highlight.pm:48 #, perl-format msgid "tohighlight contains unknown file type '%s'" msgstr "tohighlight obsahuje neznámý typ souboru „%s“" -#: ../IkiWiki/Plugin/highlight.pm:58 +#: ../IkiWiki/Plugin/highlight.pm:59 #, perl-format msgid "Source code: %s" msgstr "Zdrojový kód: %s" -#: ../IkiWiki/Plugin/highlight.pm:123 +#: ../IkiWiki/Plugin/highlight.pm:124 msgid "" "warning: highlight perl module not available; falling back to pass through" msgstr "varování: perlový modul highlight není dostupný; pokračuji bez něj" @@ -389,105 +389,105 @@ msgstr "varování: perlový modul highlight není dostupný; pokračuji bez ně msgid "htmltidy failed to parse this html" msgstr "htmltidy se nepodařilo zpracovat toto html" -#: ../IkiWiki/Plugin/img.pm:64 +#: ../IkiWiki/Plugin/img.pm:69 msgid "Image::Magick is not installed" msgstr "Image::Magick není nainstalován" -#: ../IkiWiki/Plugin/img.pm:68 ../IkiWiki/Plugin/img.pm:112 +#: ../IkiWiki/Plugin/img.pm:73 ../IkiWiki/Plugin/img.pm:117 #, perl-format msgid "failed to read %s: %s" msgstr "nelze číst %s: %s" -#: ../IkiWiki/Plugin/img.pm:74 +#: ../IkiWiki/Plugin/img.pm:79 #, perl-format msgid "wrong size format \"%s\" (should be WxH)" msgstr "chybné rozměry „%s“ (formát má být ŠxV)" -#: ../IkiWiki/Plugin/img.pm:120 +#: ../IkiWiki/Plugin/img.pm:125 #, perl-format msgid "failed to resize: %s" msgstr "nelze změnit velikost: %s" -#: ../IkiWiki/Plugin/img.pm:140 +#: ../IkiWiki/Plugin/img.pm:145 #, perl-format msgid "failed to determine size of image %s" msgstr "nelze určit velikost obrázku %s" -#: ../IkiWiki/Plugin/inline.pm:92 +#: ../IkiWiki/Plugin/inline.pm:93 msgid "Must specify url to wiki with --url when using --rss or --atom" msgstr "Při používání --rss nebo --atom musíte pomocí --url zadat url k wiki" -#: ../IkiWiki/Plugin/inline.pm:138 +#: ../IkiWiki/Plugin/inline.pm:139 msgid "page editing not allowed" msgstr "úprava stránky není povolena" -#: ../IkiWiki/Plugin/inline.pm:155 +#: ../IkiWiki/Plugin/inline.pm:156 msgid "missing pages parameter" msgstr "chybí parametr pages" -#: ../IkiWiki/Plugin/inline.pm:191 +#: ../IkiWiki/Plugin/inline.pm:192 #, perl-format msgid "the %s and %s parameters cannot be used together" msgstr "parametry %s a %s nelze použít zároveň" -#: ../IkiWiki/Plugin/inline.pm:312 +#: ../IkiWiki/Plugin/inline.pm:313 msgid "Add a new post titled:" msgstr "Přidat nový příspěvek nazvaný:" -#: ../IkiWiki/Plugin/inline.pm:332 +#: ../IkiWiki/Plugin/inline.pm:333 #, perl-format msgid "nonexistant template %s" msgstr "neexistující šablona %s" -#: ../IkiWiki/Plugin/inline.pm:624 +#: ../IkiWiki/Plugin/inline.pm:625 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client nebyl nalezen, nepinkám" -#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 -#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 +#: ../IkiWiki/Plugin/linkmap.pm:81 ../IkiWiki/Plugin/linkmap.pm:88 +#: ../IkiWiki/Plugin/linkmap.pm:92 ../IkiWiki/Plugin/linkmap.pm:95 msgid "failed to run dot" msgstr "nepodařilo se spustit dot" -#: ../IkiWiki/Plugin/linkmap.pm:84 +#: ../IkiWiki/Plugin/linkmap.pm:85 msgid "linkmap" msgstr "" -#: ../IkiWiki/Plugin/lockedit.pm:48 +#: ../IkiWiki/Plugin/lockedit.pm:49 #, perl-format msgid "%s is locked and cannot be edited" msgstr "Stránka %s je zamknutá a nelze ji měnit" -#: ../IkiWiki/Plugin/mdwn.pm:44 +#: ../IkiWiki/Plugin/mdwn.pm:45 msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed" msgstr "je povolen multimarkdown, ale Text::MultiMarkdown není nainstalován" -#: ../IkiWiki/Plugin/mdwn.pm:69 +#: ../IkiWiki/Plugin/mdwn.pm:70 #, perl-format msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" "selhalo nahrání perlového modulu Markdown.pm (%s) nebo /usr/bin/markdown (%s)" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:162 msgid "stylesheet not found" msgstr "styl nebyl nalezen" -#: ../IkiWiki/Plugin/meta.pm:199 +#: ../IkiWiki/Plugin/meta.pm:200 msgid "redir page not found" msgstr "stránka, na kterou vede přesměrování, nebyla nalezena" -#: ../IkiWiki/Plugin/meta.pm:213 +#: ../IkiWiki/Plugin/meta.pm:214 msgid "redir cycle is not allowed" msgstr "cykly nejsou v přesměrování povoleny" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Zrcadla" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirror" msgstr "Zrcadlo" -#: ../IkiWiki/Plugin/moderatedcomments.pm:41 +#: ../IkiWiki/Plugin/moderatedcomments.pm:42 #, fuzzy msgid "comment needs moderation" msgstr "schvalování komentářů" @@ -496,19 +496,19 @@ msgstr "schvalování komentářů" msgid "more" msgstr "více" -#: ../IkiWiki/Plugin/norcs.pm:65 +#: ../IkiWiki/Plugin/norcs.pm:66 msgid "getctime not implemented" msgstr "getctime není implementováno" -#: ../IkiWiki/Plugin/openid.pm:61 +#: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "Přihlásit pomocí" -#: ../IkiWiki/Plugin/openid.pm:64 +#: ../IkiWiki/Plugin/openid.pm:65 msgid "Get an OpenID" msgstr "Získat OpenID" -#: ../IkiWiki/Plugin/orphans.pm:55 +#: ../IkiWiki/Plugin/orphans.pm:56 msgid "All pages have other pages linking to them." msgstr "Na každou stránku vede odkaz z jiné stránky." @@ -516,31 +516,39 @@ msgstr "Na každou stránku vede odkaz z jiné stránky." msgid "bad or missing template" msgstr "chybná nebo chybějící šablona" -#: ../IkiWiki/Plugin/passwordauth.pm:248 +#: ../IkiWiki/Plugin/passwordauth.pm:229 +msgid "Your user page: " +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:236 +msgid "Create your user page" +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:264 msgid "Account creation successful. Now you can Login." msgstr "Vytvoření účtu bylo úspěšné. Nyní se můžete přihlásit." -#: ../IkiWiki/Plugin/passwordauth.pm:251 +#: ../IkiWiki/Plugin/passwordauth.pm:267 msgid "Error creating account." msgstr "Chyba při vytváření účtu." -#: ../IkiWiki/Plugin/passwordauth.pm:258 +#: ../IkiWiki/Plugin/passwordauth.pm:274 msgid "No email address, so cannot email password reset instructions." msgstr "Bez e-mailové adresy nelze zaslat postup na resetování hesla." -#: ../IkiWiki/Plugin/passwordauth.pm:292 +#: ../IkiWiki/Plugin/passwordauth.pm:308 msgid "Failed to send mail" msgstr "Nepodařilo se odeslat email." -#: ../IkiWiki/Plugin/passwordauth.pm:294 +#: ../IkiWiki/Plugin/passwordauth.pm:310 msgid "You have been mailed password reset instructions." msgstr "Postup na resetování hesla vám byl odeslán na e-mail." -#: ../IkiWiki/Plugin/passwordauth.pm:329 +#: ../IkiWiki/Plugin/passwordauth.pm:345 msgid "incorrect password reset url" msgstr "chybné URL pro resetování hesla" -#: ../IkiWiki/Plugin/passwordauth.pm:332 +#: ../IkiWiki/Plugin/passwordauth.pm:348 msgid "password reset denied" msgstr "resetování hesla bylo zamítnuto" @@ -570,40 +578,40 @@ msgstr "LWP nebyl nalezen, nepinkám" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "varování: rozpoznána stará verze po4a, doporučen přechod na 0.35." -#: ../IkiWiki/Plugin/po.pm:138 +#: ../IkiWiki/Plugin/po.pm:139 #, perl-format msgid "%s is not a valid language code" msgstr "%s není platným kódem jazyka" -#: ../IkiWiki/Plugin/po.pm:150 +#: ../IkiWiki/Plugin/po.pm:151 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" "%s není platnou hodnotou parametru po_link_to, používám po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:155 +#: ../IkiWiki/Plugin/po.pm:156 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" "po_link_to=negotiated vyžaduje zapnuté usedirs, používám po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:385 +#: ../IkiWiki/Plugin/po.pm:386 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "znovusestavuji všechny stránky, aby se opravily meta nadpisy" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 #, perl-format msgid "building %s" msgstr "sestavuji %s" -#: ../IkiWiki/Plugin/po.pm:427 +#: ../IkiWiki/Plugin/po.pm:428 msgid "updated PO files" msgstr "aktualizovány PO soubory" -#: ../IkiWiki/Plugin/po.pm:451 +#: ../IkiWiki/Plugin/po.pm:452 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." @@ -611,7 +619,7 @@ msgstr "" "Nemohu odstranit překlad. Nicméně pokud bude odstraněna hlavní stránka, " "budou odstraněny také její překlady." -#: ../IkiWiki/Plugin/po.pm:471 +#: ../IkiWiki/Plugin/po.pm:472 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." @@ -619,76 +627,76 @@ msgstr "" "Nemohu přejmenovat překlad. Nicméně pokud bude přejmenována hlavní stránka, " "budou přejmenovány také její překlady." -#: ../IkiWiki/Plugin/po.pm:870 +#: ../IkiWiki/Plugin/po.pm:871 #, perl-format msgid "POT file (%s) does not exist" msgstr "POT soubor (%s) neexistuje" -#: ../IkiWiki/Plugin/po.pm:884 +#: ../IkiWiki/Plugin/po.pm:885 #, perl-format msgid "failed to copy underlay PO file to %s" msgstr "nepodařilo se zkopírovat PO soubor na %s" -#: ../IkiWiki/Plugin/po.pm:893 +#: ../IkiWiki/Plugin/po.pm:894 #, perl-format msgid "failed to update %s" msgstr "nepodařilo se aktualizovat %s" -#: ../IkiWiki/Plugin/po.pm:899 +#: ../IkiWiki/Plugin/po.pm:900 #, perl-format msgid "failed to copy the POT file to %s" msgstr "nepodařilo se zkopírovat POT soubor na %s" -#: ../IkiWiki/Plugin/po.pm:935 +#: ../IkiWiki/Plugin/po.pm:936 msgid "N/A" msgstr "N/A" -#: ../IkiWiki/Plugin/po.pm:948 +#: ../IkiWiki/Plugin/po.pm:949 #, perl-format msgid "failed to translate %s" msgstr "nepodařilo se přeložit %s" -#: ../IkiWiki/Plugin/po.pm:1032 +#: ../IkiWiki/Plugin/po.pm:1033 msgid "removed obsolete PO files" msgstr "odstraněny zastaralé PO soubory" -#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 -#: ../IkiWiki/Plugin/po.pm:1141 +#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 +#: ../IkiWiki/Plugin/po.pm:1142 #, perl-format msgid "failed to write %s" msgstr "nepodařilo se zapsat %s" -#: ../IkiWiki/Plugin/po.pm:1100 +#: ../IkiWiki/Plugin/po.pm:1101 msgid "failed to translate" msgstr "překlad se nezdařil" -#: ../IkiWiki/Plugin/po.pm:1153 +#: ../IkiWiki/Plugin/po.pm:1154 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" "neplatná gettext data, pro pokračování v úpravách se vraťte na předchozí " "stránku" -#: ../IkiWiki/Plugin/poll.pm:69 +#: ../IkiWiki/Plugin/poll.pm:70 msgid "vote" msgstr "hlasovat" -#: ../IkiWiki/Plugin/poll.pm:77 +#: ../IkiWiki/Plugin/poll.pm:78 msgid "Total votes:" msgstr "Celkem hlasů:" -#: ../IkiWiki/Plugin/polygen.pm:41 +#: ../IkiWiki/Plugin/polygen.pm:42 msgid "polygen not installed" msgstr "polygen není nainstalován" -#: ../IkiWiki/Plugin/polygen.pm:60 +#: ../IkiWiki/Plugin/polygen.pm:61 msgid "command failed" msgstr "příkaz selhal" -#: ../IkiWiki/Plugin/postsparkline.pm:46 +#: ../IkiWiki/Plugin/postsparkline.pm:47 msgid "missing formula" msgstr "chybí vzorec" -#: ../IkiWiki/Plugin/postsparkline.pm:53 +#: ../IkiWiki/Plugin/postsparkline.pm:54 msgid "unknown formula" msgstr "neznámý vzorec" @@ -756,12 +764,12 @@ msgstr "o půlnoci" msgid "at noon on %A" msgstr "%A o poledni" -#: ../IkiWiki/Plugin/progress.pm:34 +#: ../IkiWiki/Plugin/progress.pm:35 #, perl-format msgid "illegal percent value %s" msgstr "neplatná procentuální hodnota %s" -#: ../IkiWiki/Plugin/progress.pm:55 +#: ../IkiWiki/Plugin/progress.pm:56 msgid "need either `percent` or `totalpages` and `donepages` parameters" msgstr "potřebuji buď parametr `percent`, nebo `totalpages` a `donepages`" @@ -769,81 +777,81 @@ msgstr "potřebuji buď parametr `percent`, nebo `totalpages` a `donepages`" msgid "(Diff truncated)" msgstr "(Diff oříznut)" -#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36 +#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:37 #, perl-format msgid "%s does not exist" msgstr "%s neexistuje" -#: ../IkiWiki/Plugin/remove.pm:38 +#: ../IkiWiki/Plugin/remove.pm:39 #, perl-format msgid "%s is not in the srcdir, so it cannot be deleted" msgstr "%s není ve zdrojovém adresáři a proto nelze smazat" -#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45 +#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:46 #, perl-format msgid "%s is not a file" msgstr "%s není souborem" -#: ../IkiWiki/Plugin/remove.pm:134 +#: ../IkiWiki/Plugin/remove.pm:135 #, perl-format msgid "confirm removal of %s" msgstr "potvrďte odstranění %s" -#: ../IkiWiki/Plugin/remove.pm:171 +#: ../IkiWiki/Plugin/remove.pm:172 msgid "Please select the attachments to remove." msgstr "Vyberte prosím přílohy, které se mají odstranit." -#: ../IkiWiki/Plugin/remove.pm:211 +#: ../IkiWiki/Plugin/remove.pm:212 msgid "removed" msgstr "odstraněno" -#: ../IkiWiki/Plugin/rename.pm:42 +#: ../IkiWiki/Plugin/rename.pm:43 #, perl-format msgid "%s is not in the srcdir, so it cannot be renamed" msgstr "%s není ve zdrojovém adresáři a proto nelze přejmenovat" -#: ../IkiWiki/Plugin/rename.pm:62 +#: ../IkiWiki/Plugin/rename.pm:63 msgid "no change to the file name was specified" msgstr "jméno souboru nebylo změněno" -#: ../IkiWiki/Plugin/rename.pm:68 +#: ../IkiWiki/Plugin/rename.pm:69 #, perl-format msgid "illegal name" msgstr "neplatné jméno" -#: ../IkiWiki/Plugin/rename.pm:73 +#: ../IkiWiki/Plugin/rename.pm:74 #, perl-format msgid "%s already exists" msgstr "%s již existuje" -#: ../IkiWiki/Plugin/rename.pm:79 +#: ../IkiWiki/Plugin/rename.pm:80 #, perl-format msgid "%s already exists on disk" msgstr "%s již na disku existuje" -#: ../IkiWiki/Plugin/rename.pm:122 +#: ../IkiWiki/Plugin/rename.pm:123 #, perl-format msgid "rename %s" msgstr "přejmenování %s" -#: ../IkiWiki/Plugin/rename.pm:161 +#: ../IkiWiki/Plugin/rename.pm:162 msgid "Also rename SubPages and attachments" msgstr "Také přejmenovat podstránky a přílohy" -#: ../IkiWiki/Plugin/rename.pm:248 +#: ../IkiWiki/Plugin/rename.pm:249 msgid "Only one attachment can be renamed at a time." msgstr "Najednou lze přejmenovat pouze jednu přílohu." -#: ../IkiWiki/Plugin/rename.pm:251 +#: ../IkiWiki/Plugin/rename.pm:252 msgid "Please select the attachment to rename." msgstr "Vyberte přílohu, kterou chcete přejmenovat." -#: ../IkiWiki/Plugin/rename.pm:348 +#: ../IkiWiki/Plugin/rename.pm:349 #, perl-format msgid "rename %s to %s" msgstr "přejmenování %s na %s" -#: ../IkiWiki/Plugin/rename.pm:572 +#: ../IkiWiki/Plugin/rename.pm:573 #, perl-format msgid "update for rename of %s to %s" msgstr "aktualizace pro přejmenování %s na %s" @@ -858,28 +866,28 @@ msgstr "nepodařilo se přečíst %s" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:182 +#: ../IkiWiki/Plugin/search.pm:183 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "pro indexování %s je potřeba Digest::SHA1" -#: ../IkiWiki/Plugin/search.pm:217 +#: ../IkiWiki/Plugin/search.pm:218 msgid "search" msgstr "hledání" -#: ../IkiWiki/Plugin/shortcut.pm:31 +#: ../IkiWiki/Plugin/shortcut.pm:32 #, perl-format msgid "shortcut plugin will not work without %s" msgstr "Modul shortcut nebude pracovat bez %s" -#: ../IkiWiki/Plugin/shortcut.pm:44 +#: ../IkiWiki/Plugin/shortcut.pm:45 msgid "missing name or url parameter" msgstr "chybí parametr jméno nebo url" #. translators: This is used to display what shortcuts are defined. #. translators: First parameter is the name of the shortcut, the second #. translators: is an URL. -#: ../IkiWiki/Plugin/shortcut.pm:54 +#: ../IkiWiki/Plugin/shortcut.pm:55 #, perl-format msgid "shortcut %s points to %s" msgstr "zkratka %s odkazuje na %s" @@ -888,107 +896,109 @@ msgstr "zkratka %s odkazuje na %s" msgid "failed to parse any smileys" msgstr "nepodařilo se rozpoznat žádné smajlíky" -#: ../IkiWiki/Plugin/sparkline.pm:72 +#: ../IkiWiki/Plugin/sparkline.pm:73 msgid "parse error" msgstr "chyba syntaktického rozboru" -#: ../IkiWiki/Plugin/sparkline.pm:78 +#: ../IkiWiki/Plugin/sparkline.pm:79 msgid "invalid featurepoint diameter" msgstr "chybný průměr zvýrazněného bodu" -#: ../IkiWiki/Plugin/sparkline.pm:88 +#: ../IkiWiki/Plugin/sparkline.pm:89 msgid "invalid featurepoint location" msgstr "chybné umístění zvýrazněného bodu" -#: ../IkiWiki/Plugin/sparkline.pm:99 +#: ../IkiWiki/Plugin/sparkline.pm:100 msgid "missing values" msgstr "chybí hodnoty" -#: ../IkiWiki/Plugin/sparkline.pm:104 +#: ../IkiWiki/Plugin/sparkline.pm:105 msgid "invalid height value" msgstr "chybná výška" -#: ../IkiWiki/Plugin/sparkline.pm:111 +#: ../IkiWiki/Plugin/sparkline.pm:112 msgid "missing width parameter" msgstr "chybí parametr šířka (width)" -#: ../IkiWiki/Plugin/sparkline.pm:115 +#: ../IkiWiki/Plugin/sparkline.pm:116 msgid "invalid width value" msgstr "chybná šířka" -#: ../IkiWiki/Plugin/sparkline.pm:153 +#: ../IkiWiki/Plugin/sparkline.pm:154 msgid "failed to run php" msgstr "nepodařilo se spustit php" -#: ../IkiWiki/Plugin/table.pm:31 +#: ../IkiWiki/Plugin/table.pm:32 msgid "cannot find file" msgstr "nemohu najít soubor" -#: ../IkiWiki/Plugin/table.pm:87 +#: ../IkiWiki/Plugin/table.pm:88 msgid "unknown data format" msgstr "neznámý formát dat" -#: ../IkiWiki/Plugin/table.pm:95 +#: ../IkiWiki/Plugin/table.pm:96 msgid "empty data" msgstr "prázdná data" -#: ../IkiWiki/Plugin/table.pm:114 +#: ../IkiWiki/Plugin/table.pm:115 msgid "Direct data download" msgstr "Stáhnout zdrojová data" -#: ../IkiWiki/Plugin/table.pm:148 +#: ../IkiWiki/Plugin/table.pm:149 #, perl-format msgid "parse fail at line %d: %s" msgstr "zpracovávání selhalo na řádku %d: %s" -#: ../IkiWiki/Plugin/template.pm:29 +#: ../IkiWiki/Plugin/template.pm:34 msgid "missing id parameter" msgstr "chybí parametr id" -#: ../IkiWiki/Plugin/template.pm:36 +#: ../IkiWiki/Plugin/template.pm:41 #, perl-format msgid "template %s not found" msgstr "šablona %s nebyla nalezena" -#: ../IkiWiki/Plugin/template.pm:55 +#: ../IkiWiki/Plugin/template.pm:60 msgid "failed to process:" msgstr "nepodařilo se zpracovat:" -#: ../IkiWiki/Plugin/teximg.pm:70 +#: ../IkiWiki/Plugin/teximg.pm:71 msgid "missing tex code" msgstr "chybí TeXový kód" -#: ../IkiWiki/Plugin/teximg.pm:122 +#: ../IkiWiki/Plugin/teximg.pm:123 msgid "failed to generate image from code" msgstr "z kódu se nepodařilo vygenerovat obrázek" -#: ../IkiWiki/Plugin/websetup.pm:89 -msgid "plugin" +#: ../IkiWiki/Plugin/websetup.pm:91 +#, fuzzy, perl-format +msgid "%s plugin:" msgstr "modul" -#: ../IkiWiki/Plugin/websetup.pm:108 +#: ../IkiWiki/Plugin/websetup.pm:107 +#, fuzzy, perl-format +msgid "%s plugins" +msgstr "moduly" + +#: ../IkiWiki/Plugin/websetup.pm:121 #, perl-format msgid "enable %s?" msgstr "povolit %s?" -#: ../IkiWiki/Plugin/websetup.pm:244 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "setup file for this wiki is not known" msgstr "konfigurační soubor této wiki je neznámý" -#: ../IkiWiki/Plugin/websetup.pm:260 +#: ../IkiWiki/Plugin/websetup.pm:276 msgid "main" msgstr "hlavní" -#: ../IkiWiki/Plugin/websetup.pm:261 -msgid "plugins" -msgstr "moduly" - -#: ../IkiWiki/Plugin/websetup.pm:404 +#: ../IkiWiki/Plugin/websetup.pm:419 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "Níže uvedené změny v konfiguraci se projeví až po znovusestavení wiki." -#: ../IkiWiki/Plugin/websetup.pm:408 +#: ../IkiWiki/Plugin/websetup.pm:423 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." @@ -996,7 +1006,7 @@ msgstr "" "Aby se níže uvedené změny v konfiguraci zcela projevily, budete možná muset " "znovusestavit wiki." -#: ../IkiWiki/Plugin/websetup.pm:445 +#: ../IkiWiki/Plugin/websetup.pm:460 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1074,20 +1084,20 @@ msgstr "ikiwiki: nelze sestavit %s" msgid "cannot read %s: %s" msgstr "nemohu číst %s: %s" -#: ../IkiWiki/Setup/Automator.pm:33 +#: ../IkiWiki/Setup/Automator.pm:34 msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "musíte zadat název wiki (který obsahuje alfanumerické znaky)" -#: ../IkiWiki/Setup/Automator.pm:79 +#: ../IkiWiki/Setup/Automator.pm:80 #, perl-format msgid "unsupported revision control system %s" msgstr "nepodporovaný systém pro správu verzí: %s" -#: ../IkiWiki/Setup/Automator.pm:105 +#: ../IkiWiki/Setup/Automator.pm:106 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "nepodařilo se nastavit repositář pomocí ikiwiki-makerepo" -#: ../IkiWiki/Setup/Automator.pm:123 +#: ../IkiWiki/Setup/Automator.pm:124 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "** Deaktivuji modul %s, protože selhává s touto hláškou:" @@ -1158,25 +1168,25 @@ msgstr "nelze použít několik rcs modulů" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "nepodařilo se nahrát externí modul vyžadovaný modulem %s: %s" -#: ../IkiWiki.pm:1263 +#: ../IkiWiki.pm:1255 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "Byla rozpoznána smyčka na %s v hloubce %i" -#: ../IkiWiki.pm:1862 +#: ../IkiWiki.pm:1854 msgid "yes" msgstr "ano" -#: ../IkiWiki.pm:2005 +#: ../IkiWiki.pm:1997 msgid "Sort::Naturally needed for title_natural sort" msgstr "Pro řazení pomocí title_natural je nutný modul Sort::Naturally" -#: ../IkiWiki.pm:2016 +#: ../IkiWiki.pm:2008 #, perl-format msgid "unknown sort type %s" msgstr "neznámý typ řazení %s" -#: ../IkiWiki.pm:2035 +#: ../IkiWiki.pm:2027 #, perl-format msgid "cannot match pages: %s" msgstr "nelze vybrat stránky: %s" diff --git a/po/da.po b/po/da.po index 4bff9254c..b30730aa4 100644 --- a/po/da.po +++ b/po/da.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.14159\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-22 16:04-0500\n" +"POT-Creation-Date: 2010-02-12 16:48-0500\n" "PO-Revision-Date: 2009-07-23 01:07+0200\n" "Last-Translator: Jonas Smedegaard \n" "Language-Team: None\n" @@ -59,7 +59,7 @@ msgstr "Indstillinger gemt" msgid "You are banned." msgstr "Du er banlyst." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 msgid "Error" msgstr "Fejl" @@ -149,35 +149,35 @@ msgstr "færdig" msgid "Must specify %s" msgstr "Skal angive %s" -#: ../IkiWiki/Plugin/amazon_s3.pm:136 +#: ../IkiWiki/Plugin/amazon_s3.pm:140 #, fuzzy msgid "Failed to create S3 bucket: " msgstr "Oprettelse af bundt i S3 mislykkedes: " -#: ../IkiWiki/Plugin/amazon_s3.pm:221 +#: ../IkiWiki/Plugin/amazon_s3.pm:225 #, fuzzy msgid "Failed to save file to S3: " msgstr "Arkivering af fil i S3 mislykkedes: " -#: ../IkiWiki/Plugin/amazon_s3.pm:243 +#: ../IkiWiki/Plugin/amazon_s3.pm:247 #, fuzzy msgid "Failed to delete file from S3: " msgstr "Sletning af fil fra S3 mislykkedes: " -#: ../IkiWiki/Plugin/attachment.pm:49 +#: ../IkiWiki/Plugin/attachment.pm:50 #, perl-format msgid "there is already a page named %s" msgstr "der er allerede en side ved navn %s" -#: ../IkiWiki/Plugin/attachment.pm:65 +#: ../IkiWiki/Plugin/attachment.pm:66 msgid "prohibited by allowed_attachments" msgstr "forhindret af allowed_attachments" -#: ../IkiWiki/Plugin/attachment.pm:140 +#: ../IkiWiki/Plugin/attachment.pm:141 msgid "bad attachment filename" msgstr "dårligt vedhæftningsfilnavn" -#: ../IkiWiki/Plugin/attachment.pm:182 +#: ../IkiWiki/Plugin/attachment.pm:183 msgid "attachment upload" msgstr "vedhæftningsoplægning" @@ -185,7 +185,7 @@ msgstr "vedhæftningsoplægning" msgid "automatic index generation" msgstr "automatisk indeks-dannelse" -#: ../IkiWiki/Plugin/blogspam.pm:108 +#: ../IkiWiki/Plugin/blogspam.pm:109 msgid "" "Sorry, but that looks like spam to blogspam: " @@ -202,12 +202,12 @@ msgstr "%s fra %s" msgid "There are no broken links!" msgstr "Ingen henvisninger der ikker fungerer!" -#: ../IkiWiki/Plugin/comments.pm:124 ../IkiWiki/Plugin/format.pm:38 +#: ../IkiWiki/Plugin/comments.pm:125 ../IkiWiki/Plugin/format.pm:48 #, perl-format msgid "unsupported page format %s" msgstr "Ikke-understøttet sideformat %s" -#: ../IkiWiki/Plugin/comments.pm:129 +#: ../IkiWiki/Plugin/comments.pm:130 msgid "comment must have content" msgstr "kommentar skal have indhold" @@ -215,7 +215,7 @@ msgstr "kommentar skal have indhold" msgid "Anonymous" msgstr "Anonym" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:97 +#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "dårligt sidenavn" @@ -251,7 +251,7 @@ msgstr "Tilføjede en kommentar" msgid "Added a comment: %s" msgstr "Tilføjede en kommentar: %s" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256 msgid "you are not logged in as an admin" msgstr "du er ikke logget på som en administrator" @@ -267,128 +267,128 @@ msgstr "kommentarkoderering" msgid "Comments" msgstr "Kommentarer" -#: ../IkiWiki/Plugin/conditional.pm:27 ../IkiWiki/Plugin/cutpaste.pm:30 -#: ../IkiWiki/Plugin/cutpaste.pm:45 ../IkiWiki/Plugin/cutpaste.pm:61 +#: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 +#: ../IkiWiki/Plugin/cutpaste.pm:46 ../IkiWiki/Plugin/cutpaste.pm:62 #: ../IkiWiki/Plugin/testpagespec.pm:26 #, perl-format msgid "%s parameter is required" msgstr "parametren %s er krævet" -#: ../IkiWiki/Plugin/cutpaste.pm:66 +#: ../IkiWiki/Plugin/cutpaste.pm:67 msgid "no text was copied in this page" msgstr "ingen tekst blev kopieret i denne side" -#: ../IkiWiki/Plugin/cutpaste.pm:69 +#: ../IkiWiki/Plugin/cutpaste.pm:70 #, perl-format msgid "no text was copied in this page with id %s" msgstr "ingen tekst blev kopieret i denne side med id %s" -#: ../IkiWiki/Plugin/editpage.pm:40 +#: ../IkiWiki/Plugin/editpage.pm:41 #, perl-format msgid "removing old preview %s" msgstr "fjerner gammelt smugkig %s" -#: ../IkiWiki/Plugin/editpage.pm:113 +#: ../IkiWiki/Plugin/editpage.pm:114 #, perl-format msgid "%s is not an editable page" msgstr "%s er ikke en redigérbar side" -#: ../IkiWiki/Plugin/editpage.pm:292 +#: ../IkiWiki/Plugin/editpage.pm:296 #, perl-format msgid "creating %s" msgstr "opretter %s" -#: ../IkiWiki/Plugin/editpage.pm:310 ../IkiWiki/Plugin/editpage.pm:329 -#: ../IkiWiki/Plugin/editpage.pm:339 ../IkiWiki/Plugin/editpage.pm:383 -#: ../IkiWiki/Plugin/editpage.pm:422 +#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 +#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 +#: ../IkiWiki/Plugin/editpage.pm:426 #, perl-format msgid "editing %s" msgstr "redigerer %s" -#: ../IkiWiki/Plugin/edittemplate.pm:51 +#: ../IkiWiki/Plugin/edittemplate.pm:52 msgid "template not specified" msgstr "skabelon %s ikke angivet" -#: ../IkiWiki/Plugin/edittemplate.pm:54 +#: ../IkiWiki/Plugin/edittemplate.pm:55 msgid "match not specified" msgstr "sammenligning ikke angivet" -#: ../IkiWiki/Plugin/edittemplate.pm:63 +#: ../IkiWiki/Plugin/edittemplate.pm:64 #, perl-format msgid "edittemplate %s registered for %s" msgstr "redigeringsskabelon %s registreret for %s" -#: ../IkiWiki/Plugin/edittemplate.pm:137 +#: ../IkiWiki/Plugin/edittemplate.pm:138 msgid "failed to process" msgstr "dannelsen mislykkedes" -#: ../IkiWiki/Plugin/format.pm:20 +#: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" msgstr "skal angive format og tekst" -#: ../IkiWiki/Plugin/fortune.pm:27 +#: ../IkiWiki/Plugin/fortune.pm:28 msgid "fortune failed" msgstr "spådom (fortune) fejlede" -#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 +#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 msgid "missing page" msgstr "manglende side" -#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 +#: ../IkiWiki/Plugin/getsource.pm:66 ../IkiWiki/Plugin/goto.pm:59 #, perl-format msgid "The page %s does not exist." msgstr "Siden %s eksisterer ikke." -#: ../IkiWiki/Plugin/getsource.pm:74 +#: ../IkiWiki/Plugin/getsource.pm:75 #, fuzzy msgid "not a page" msgstr "kan ikke få sider til at passe sammen: %s" -#: ../IkiWiki/Plugin/getsource.pm:76 +#: ../IkiWiki/Plugin/getsource.pm:77 #, fuzzy, perl-format msgid "%s is an attachment, not a page." msgstr "%s er ikke en redigérbar side" -#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 +#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "Du har ikke lov til at ændre %s" -#: ../IkiWiki/Plugin/git.pm:697 +#: ../IkiWiki/Plugin/git.pm:698 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "du kan ikke påvirke en fil med modus %s" -#: ../IkiWiki/Plugin/git.pm:701 +#: ../IkiWiki/Plugin/git.pm:702 msgid "you are not allowed to change file modes" msgstr "du har ikke lov til at ændre modus for filer" -#: ../IkiWiki/Plugin/google.pm:25 ../IkiWiki/Plugin/po.pm:131 -#: ../IkiWiki/Plugin/search.pm:36 +#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/po.pm:132 +#: ../IkiWiki/Plugin/search.pm:37 #, perl-format msgid "Must specify %s when using the %s plugin" msgstr "Skal angive %s når udvidelsen %s bruges" -#: ../IkiWiki/Plugin/graphviz.pm:67 +#: ../IkiWiki/Plugin/graphviz.pm:68 msgid "failed to run graphviz" msgstr "graphviz-kørsel mislykkedes" -#: ../IkiWiki/Plugin/graphviz.pm:94 +#: ../IkiWiki/Plugin/graphviz.pm:95 msgid "prog not a valid graphviz program" msgstr "prog er ikke et gyldigt graphviz-program" -#: ../IkiWiki/Plugin/highlight.pm:47 +#: ../IkiWiki/Plugin/highlight.pm:48 #, perl-format msgid "tohighlight contains unknown file type '%s'" msgstr "tohighlight indeholder ukendt filtype '%s'" -#: ../IkiWiki/Plugin/highlight.pm:58 +#: ../IkiWiki/Plugin/highlight.pm:59 #, perl-format msgid "Source code: %s" msgstr "Kildekode: %s" -#: ../IkiWiki/Plugin/highlight.pm:123 +#: ../IkiWiki/Plugin/highlight.pm:124 msgid "" "warning: highlight perl module not available; falling back to pass through" msgstr "" @@ -400,107 +400,107 @@ msgstr "" msgid "htmltidy failed to parse this html" msgstr "afkodning af smileys mislykkedes" -#: ../IkiWiki/Plugin/img.pm:64 +#: ../IkiWiki/Plugin/img.pm:69 msgid "Image::Magick is not installed" msgstr "Image::Magick ikke installeret" -#: ../IkiWiki/Plugin/img.pm:68 ../IkiWiki/Plugin/img.pm:112 +#: ../IkiWiki/Plugin/img.pm:73 ../IkiWiki/Plugin/img.pm:117 #, perl-format msgid "failed to read %s: %s" msgstr "læsning af %s mislykkedes: %s" -#: ../IkiWiki/Plugin/img.pm:74 +#: ../IkiWiki/Plugin/img.pm:79 #, perl-format msgid "wrong size format \"%s\" (should be WxH)" msgstr "forkert størrelsesformat \"%s\" (burde være WxH)" -#: ../IkiWiki/Plugin/img.pm:120 +#: ../IkiWiki/Plugin/img.pm:125 #, perl-format msgid "failed to resize: %s" msgstr "Ændring af størrelse mislykkedes: %s" -#: ../IkiWiki/Plugin/img.pm:140 +#: ../IkiWiki/Plugin/img.pm:145 #, perl-format msgid "failed to determine size of image %s" msgstr "Vurdering af billedstørrelse mislykkedes: %s" -#: ../IkiWiki/Plugin/inline.pm:92 +#: ../IkiWiki/Plugin/inline.pm:93 msgid "Must specify url to wiki with --url when using --rss or --atom" msgstr "Skal angive url til wiki med --url når --rss eller --atom anvendes" -#: ../IkiWiki/Plugin/inline.pm:138 +#: ../IkiWiki/Plugin/inline.pm:139 msgid "page editing not allowed" msgstr "sideredigering er ikke tilladt" -#: ../IkiWiki/Plugin/inline.pm:155 +#: ../IkiWiki/Plugin/inline.pm:156 msgid "missing pages parameter" msgstr "mangler pages-parametren" -#: ../IkiWiki/Plugin/inline.pm:191 +#: ../IkiWiki/Plugin/inline.pm:192 #, perl-format msgid "the %s and %s parameters cannot be used together" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:312 +#: ../IkiWiki/Plugin/inline.pm:313 msgid "Add a new post titled:" msgstr "Tilføj nyt indlæg med følgende titel:" -#: ../IkiWiki/Plugin/inline.pm:332 +#: ../IkiWiki/Plugin/inline.pm:333 #, perl-format msgid "nonexistant template %s" msgstr "ikke-eksisterende skabelon: %s" -#: ../IkiWiki/Plugin/inline.pm:624 +#: ../IkiWiki/Plugin/inline.pm:625 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client ikke fundet, pinger ikke" -#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 -#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 +#: ../IkiWiki/Plugin/linkmap.pm:81 ../IkiWiki/Plugin/linkmap.pm:88 +#: ../IkiWiki/Plugin/linkmap.pm:92 ../IkiWiki/Plugin/linkmap.pm:95 msgid "failed to run dot" msgstr "dot-kørsel mislykkedes" -#: ../IkiWiki/Plugin/linkmap.pm:84 +#: ../IkiWiki/Plugin/linkmap.pm:85 msgid "linkmap" msgstr "" -#: ../IkiWiki/Plugin/lockedit.pm:48 +#: ../IkiWiki/Plugin/lockedit.pm:49 #, perl-format msgid "%s is locked and cannot be edited" msgstr "%s er låst og kan ikke redigeres" -#: ../IkiWiki/Plugin/mdwn.pm:44 +#: ../IkiWiki/Plugin/mdwn.pm:45 msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed" msgstr "" "multimarkdown er aktiveret, men Text::MultiMarkdown er ikke installeret" -#: ../IkiWiki/Plugin/mdwn.pm:69 +#: ../IkiWiki/Plugin/mdwn.pm:70 #, perl-format msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" "Indlæsning af perl-modulet Markdown.pm (%s) eller /usr/bin/markdown (%s) " "mislykkedes" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:162 msgid "stylesheet not found" msgstr "stilsnit (stylesheet) ikke fundet" -#: ../IkiWiki/Plugin/meta.pm:199 +#: ../IkiWiki/Plugin/meta.pm:200 msgid "redir page not found" msgstr "henvisningsside ikke fundet" -#: ../IkiWiki/Plugin/meta.pm:213 +#: ../IkiWiki/Plugin/meta.pm:214 msgid "redir cycle is not allowed" msgstr "ring af henvisninger er ikke tilladt" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Spejle" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirror" msgstr "Spejl" -#: ../IkiWiki/Plugin/moderatedcomments.pm:41 +#: ../IkiWiki/Plugin/moderatedcomments.pm:42 #, fuzzy msgid "comment needs moderation" msgstr "kommentarkoderering" @@ -509,19 +509,19 @@ msgstr "kommentarkoderering" msgid "more" msgstr "mere" -#: ../IkiWiki/Plugin/norcs.pm:65 +#: ../IkiWiki/Plugin/norcs.pm:66 msgid "getctime not implemented" msgstr "getctime ikke implementeret" -#: ../IkiWiki/Plugin/openid.pm:61 +#: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "Log på med" -#: ../IkiWiki/Plugin/openid.pm:64 +#: ../IkiWiki/Plugin/openid.pm:65 msgid "Get an OpenID" msgstr "Skaf en OpenID" -#: ../IkiWiki/Plugin/orphans.pm:55 +#: ../IkiWiki/Plugin/orphans.pm:56 msgid "All pages have other pages linking to them." msgstr "Alle sider har henvisninger fra andre sider." @@ -529,32 +529,40 @@ msgstr "Alle sider har henvisninger fra andre sider." msgid "bad or missing template" msgstr "dårlig eller manglende skabelon" -#: ../IkiWiki/Plugin/passwordauth.pm:248 +#: ../IkiWiki/Plugin/passwordauth.pm:229 +msgid "Your user page: " +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:236 +msgid "Create your user page" +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:264 msgid "Account creation successful. Now you can Login." msgstr "Konto korrekt oprettet. Nu kan du logge på." -#: ../IkiWiki/Plugin/passwordauth.pm:251 +#: ../IkiWiki/Plugin/passwordauth.pm:267 msgid "Error creating account." msgstr "Fejl ved kontooprettelse." -#: ../IkiWiki/Plugin/passwordauth.pm:258 +#: ../IkiWiki/Plugin/passwordauth.pm:274 msgid "No email address, so cannot email password reset instructions." msgstr "" "Ingen emailadresse, så kan ikke sende adgangskodenulstillingsinstruktioner." -#: ../IkiWiki/Plugin/passwordauth.pm:292 +#: ../IkiWiki/Plugin/passwordauth.pm:308 msgid "Failed to send mail" msgstr "Afsendelse af mail mislykkedes" -#: ../IkiWiki/Plugin/passwordauth.pm:294 +#: ../IkiWiki/Plugin/passwordauth.pm:310 msgid "You have been mailed password reset instructions." msgstr "Du har fået tilsendt adgangskodenulstillingsinstruktioner." -#: ../IkiWiki/Plugin/passwordauth.pm:329 +#: ../IkiWiki/Plugin/passwordauth.pm:345 msgid "incorrect password reset url" msgstr "Ukorrekt adgangskodenumstillings-URL" -#: ../IkiWiki/Plugin/passwordauth.pm:332 +#: ../IkiWiki/Plugin/passwordauth.pm:348 msgid "password reset denied" msgstr "adgangskodenulstilling afvist" @@ -584,12 +592,12 @@ msgstr "LWP ikke fundet, pinger ikke" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:138 +#: ../IkiWiki/Plugin/po.pm:139 #, perl-format msgid "%s is not a valid language code" msgstr "%s er ikke en gyldig sprogkode" -#: ../IkiWiki/Plugin/po.pm:150 +#: ../IkiWiki/Plugin/po.pm:151 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" @@ -597,7 +605,7 @@ msgstr "" "%s er ikke en gyldig værdi for po_link_to, falder tilbage til " "po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:155 +#: ../IkiWiki/Plugin/po.pm:156 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" @@ -605,21 +613,21 @@ msgstr "" "po_link_to=negotiated kræver at usedirs er aktiveret, falder tilbage til " "po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:385 +#: ../IkiWiki/Plugin/po.pm:386 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "gendanner alle sider for at korrigere meta titler" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 #, perl-format msgid "building %s" msgstr "danner %s" -#: ../IkiWiki/Plugin/po.pm:427 +#: ../IkiWiki/Plugin/po.pm:428 msgid "updated PO files" msgstr "opdaterer PO-filer" -#: ../IkiWiki/Plugin/po.pm:451 +#: ../IkiWiki/Plugin/po.pm:452 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." @@ -627,7 +635,7 @@ msgstr "" "Kan ikke fjerne en oversættelse. Fjern i stedet hovedsiden, så fjernes dens " "oversættelser også." -#: ../IkiWiki/Plugin/po.pm:471 +#: ../IkiWiki/Plugin/po.pm:472 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." @@ -635,75 +643,75 @@ msgstr "" "Kan ikke omdøbe en oversættelse. Omdøb i stedet hovedsiden, så omdøbes dens " "oversættelser også." -#: ../IkiWiki/Plugin/po.pm:870 +#: ../IkiWiki/Plugin/po.pm:871 #, perl-format msgid "POT file (%s) does not exist" msgstr "POT-filen %s eksisterer ikke" -#: ../IkiWiki/Plugin/po.pm:884 +#: ../IkiWiki/Plugin/po.pm:885 #, fuzzy, perl-format msgid "failed to copy underlay PO file to %s" msgstr "kopiering af POT-filen til %s mislykkedes" -#: ../IkiWiki/Plugin/po.pm:893 +#: ../IkiWiki/Plugin/po.pm:894 #, perl-format msgid "failed to update %s" msgstr "opdatering af %s mislykkedes" -#: ../IkiWiki/Plugin/po.pm:899 +#: ../IkiWiki/Plugin/po.pm:900 #, perl-format msgid "failed to copy the POT file to %s" msgstr "kopiering af POT-filen til %s mislykkedes" -#: ../IkiWiki/Plugin/po.pm:935 +#: ../IkiWiki/Plugin/po.pm:936 msgid "N/A" msgstr "N/A" -#: ../IkiWiki/Plugin/po.pm:948 +#: ../IkiWiki/Plugin/po.pm:949 #, perl-format msgid "failed to translate %s" msgstr "oversættelse af %s mislykkedes" -#: ../IkiWiki/Plugin/po.pm:1032 +#: ../IkiWiki/Plugin/po.pm:1033 msgid "removed obsolete PO files" msgstr "forældede PO filer fjernet" -#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 -#: ../IkiWiki/Plugin/po.pm:1141 +#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 +#: ../IkiWiki/Plugin/po.pm:1142 #, perl-format msgid "failed to write %s" msgstr "skrivning af %s mislykkedes" -#: ../IkiWiki/Plugin/po.pm:1100 +#: ../IkiWiki/Plugin/po.pm:1101 msgid "failed to translate" msgstr "oversættelse mislykkedes" -#: ../IkiWiki/Plugin/po.pm:1153 +#: ../IkiWiki/Plugin/po.pm:1154 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" "forkert gettext-data, gå tilbage til forrige side og fortsæt redigering" -#: ../IkiWiki/Plugin/poll.pm:69 +#: ../IkiWiki/Plugin/poll.pm:70 msgid "vote" msgstr "stem" -#: ../IkiWiki/Plugin/poll.pm:77 +#: ../IkiWiki/Plugin/poll.pm:78 msgid "Total votes:" msgstr "Samlede stemmer:" -#: ../IkiWiki/Plugin/polygen.pm:41 +#: ../IkiWiki/Plugin/polygen.pm:42 msgid "polygen not installed" msgstr "polygen ikke installeret" -#: ../IkiWiki/Plugin/polygen.pm:60 +#: ../IkiWiki/Plugin/polygen.pm:61 msgid "command failed" msgstr "kommando fejlede" -#: ../IkiWiki/Plugin/postsparkline.pm:46 +#: ../IkiWiki/Plugin/postsparkline.pm:47 msgid "missing formula" msgstr "manglende formular" -#: ../IkiWiki/Plugin/postsparkline.pm:53 +#: ../IkiWiki/Plugin/postsparkline.pm:54 msgid "unknown formula" msgstr "ukendt formular" @@ -771,12 +779,12 @@ msgstr "ved midnat" msgid "at noon on %A" msgstr "midt på dagen %A" -#: ../IkiWiki/Plugin/progress.pm:34 +#: ../IkiWiki/Plugin/progress.pm:35 #, perl-format msgid "illegal percent value %s" msgstr "ugyldig procentværdi %s" -#: ../IkiWiki/Plugin/progress.pm:55 +#: ../IkiWiki/Plugin/progress.pm:56 msgid "need either `percent` or `totalpages` and `donepages` parameters" msgstr "Kræver enten parametre `percent` eller `totalpages og `donepages`" @@ -784,81 +792,81 @@ msgstr "Kræver enten parametre `percent` eller `totalpages og `donepages`" msgid "(Diff truncated)" msgstr "(Diff trunkeret)" -#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36 +#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:37 #, perl-format msgid "%s does not exist" msgstr "%s eksisterer ikke" -#: ../IkiWiki/Plugin/remove.pm:38 +#: ../IkiWiki/Plugin/remove.pm:39 #, perl-format msgid "%s is not in the srcdir, so it cannot be deleted" msgstr "%s er ikke i srcdir, så kan ikke blive slettet" -#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45 +#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:46 #, perl-format msgid "%s is not a file" msgstr "%s er ikke en fil" -#: ../IkiWiki/Plugin/remove.pm:134 +#: ../IkiWiki/Plugin/remove.pm:135 #, perl-format msgid "confirm removal of %s" msgstr "bekræft at %s bliver fjernet" -#: ../IkiWiki/Plugin/remove.pm:171 +#: ../IkiWiki/Plugin/remove.pm:172 msgid "Please select the attachments to remove." msgstr "Vælg vedhæftning der skal slettes." -#: ../IkiWiki/Plugin/remove.pm:211 +#: ../IkiWiki/Plugin/remove.pm:212 msgid "removed" msgstr "fjernet" -#: ../IkiWiki/Plugin/rename.pm:42 +#: ../IkiWiki/Plugin/rename.pm:43 #, perl-format msgid "%s is not in the srcdir, so it cannot be renamed" msgstr "%s er ikke i srcdir, så kan ikke blive omdøbt" -#: ../IkiWiki/Plugin/rename.pm:62 +#: ../IkiWiki/Plugin/rename.pm:63 msgid "no change to the file name was specified" msgstr "ingen ændring til filnavnet blev angivet" -#: ../IkiWiki/Plugin/rename.pm:68 +#: ../IkiWiki/Plugin/rename.pm:69 #, perl-format msgid "illegal name" msgstr "ugyldigt navn" -#: ../IkiWiki/Plugin/rename.pm:73 +#: ../IkiWiki/Plugin/rename.pm:74 #, perl-format msgid "%s already exists" msgstr "%s eksisterer allerede" -#: ../IkiWiki/Plugin/rename.pm:79 +#: ../IkiWiki/Plugin/rename.pm:80 #, perl-format msgid "%s already exists on disk" msgstr "%s eksisterer allerede på disken" -#: ../IkiWiki/Plugin/rename.pm:122 +#: ../IkiWiki/Plugin/rename.pm:123 #, perl-format msgid "rename %s" msgstr "omdøb %s" -#: ../IkiWiki/Plugin/rename.pm:161 +#: ../IkiWiki/Plugin/rename.pm:162 msgid "Also rename SubPages and attachments" msgstr "Omdøb også UnderSider og vedhæftninger" -#: ../IkiWiki/Plugin/rename.pm:248 +#: ../IkiWiki/Plugin/rename.pm:249 msgid "Only one attachment can be renamed at a time." msgstr "Kun en vedhæftning kan blive omdøbt ad gangen." -#: ../IkiWiki/Plugin/rename.pm:251 +#: ../IkiWiki/Plugin/rename.pm:252 msgid "Please select the attachment to rename." msgstr "Vælg vedhæftningen som skal omdøbes." -#: ../IkiWiki/Plugin/rename.pm:348 +#: ../IkiWiki/Plugin/rename.pm:349 #, perl-format msgid "rename %s to %s" msgstr "omdøb %s til %s" -#: ../IkiWiki/Plugin/rename.pm:572 +#: ../IkiWiki/Plugin/rename.pm:573 #, perl-format msgid "update for rename of %s to %s" msgstr "opdatering til omdøbning af %s til %s" @@ -873,28 +881,28 @@ msgstr "læsning af %s mislykkedes" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:182 +#: ../IkiWiki/Plugin/search.pm:183 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "behøver Digest::SHA1 til indeks %s" -#: ../IkiWiki/Plugin/search.pm:217 +#: ../IkiWiki/Plugin/search.pm:218 msgid "search" msgstr "søg" -#: ../IkiWiki/Plugin/shortcut.pm:31 +#: ../IkiWiki/Plugin/shortcut.pm:32 #, perl-format msgid "shortcut plugin will not work without %s" msgstr "genvejsudvidelsen vil ikke fungere uden %s" -#: ../IkiWiki/Plugin/shortcut.pm:44 +#: ../IkiWiki/Plugin/shortcut.pm:45 msgid "missing name or url parameter" msgstr "manglende navn eller url parameter" #. translators: This is used to display what shortcuts are defined. #. translators: First parameter is the name of the shortcut, the second #. translators: is an URL. -#: ../IkiWiki/Plugin/shortcut.pm:54 +#: ../IkiWiki/Plugin/shortcut.pm:55 #, perl-format msgid "shortcut %s points to %s" msgstr "genvej %s viser til %s" @@ -903,109 +911,111 @@ msgstr "genvej %s viser til %s" msgid "failed to parse any smileys" msgstr "afkodning af smileys mislykkedes" -#: ../IkiWiki/Plugin/sparkline.pm:72 +#: ../IkiWiki/Plugin/sparkline.pm:73 msgid "parse error" msgstr "afkodningsfejl" -#: ../IkiWiki/Plugin/sparkline.pm:78 +#: ../IkiWiki/Plugin/sparkline.pm:79 msgid "invalid featurepoint diameter" msgstr "forkert featurepoint-parameter diameter" -#: ../IkiWiki/Plugin/sparkline.pm:88 +#: ../IkiWiki/Plugin/sparkline.pm:89 msgid "invalid featurepoint location" msgstr "forkert featurepoint-parameter location" -#: ../IkiWiki/Plugin/sparkline.pm:99 +#: ../IkiWiki/Plugin/sparkline.pm:100 msgid "missing values" msgstr "manglende værdier" -#: ../IkiWiki/Plugin/sparkline.pm:104 +#: ../IkiWiki/Plugin/sparkline.pm:105 msgid "invalid height value" msgstr "forkert højdeværdi" -#: ../IkiWiki/Plugin/sparkline.pm:111 +#: ../IkiWiki/Plugin/sparkline.pm:112 msgid "missing width parameter" msgstr "manglende breddeparameter" -#: ../IkiWiki/Plugin/sparkline.pm:115 +#: ../IkiWiki/Plugin/sparkline.pm:116 msgid "invalid width value" msgstr "forkert breddeværdi" -#: ../IkiWiki/Plugin/sparkline.pm:153 +#: ../IkiWiki/Plugin/sparkline.pm:154 msgid "failed to run php" msgstr "php-kørsel mislykkedes" -#: ../IkiWiki/Plugin/table.pm:31 +#: ../IkiWiki/Plugin/table.pm:32 msgid "cannot find file" msgstr "kan ikke finde fil" -#: ../IkiWiki/Plugin/table.pm:87 +#: ../IkiWiki/Plugin/table.pm:88 msgid "unknown data format" msgstr "ukendt dataformat" -#: ../IkiWiki/Plugin/table.pm:95 +#: ../IkiWiki/Plugin/table.pm:96 msgid "empty data" msgstr "blanke data" -#: ../IkiWiki/Plugin/table.pm:114 +#: ../IkiWiki/Plugin/table.pm:115 msgid "Direct data download" msgstr "Direkte datanedlastning" -#: ../IkiWiki/Plugin/table.pm:148 +#: ../IkiWiki/Plugin/table.pm:149 #, perl-format msgid "parse fail at line %d: %s" msgstr "afkodningsfejl på linje %d: %s" -#: ../IkiWiki/Plugin/template.pm:29 +#: ../IkiWiki/Plugin/template.pm:34 msgid "missing id parameter" msgstr "manglende id-parameter" -#: ../IkiWiki/Plugin/template.pm:36 +#: ../IkiWiki/Plugin/template.pm:41 #, perl-format msgid "template %s not found" msgstr "skabelon %s ikke fundet" -#: ../IkiWiki/Plugin/template.pm:55 +#: ../IkiWiki/Plugin/template.pm:60 msgid "failed to process:" msgstr "dannelsen mislykkedes:" -#: ../IkiWiki/Plugin/teximg.pm:70 +#: ../IkiWiki/Plugin/teximg.pm:71 msgid "missing tex code" msgstr "manglende tex-kode" -#: ../IkiWiki/Plugin/teximg.pm:122 +#: ../IkiWiki/Plugin/teximg.pm:123 msgid "failed to generate image from code" msgstr "billedopbygning fra kode mislykkedes" -#: ../IkiWiki/Plugin/websetup.pm:89 -msgid "plugin" +#: ../IkiWiki/Plugin/websetup.pm:91 +#, fuzzy, perl-format +msgid "%s plugin:" msgstr "udvidelse" -#: ../IkiWiki/Plugin/websetup.pm:108 +#: ../IkiWiki/Plugin/websetup.pm:107 +#, fuzzy, perl-format +msgid "%s plugins" +msgstr "udvidelser" + +#: ../IkiWiki/Plugin/websetup.pm:121 #, perl-format msgid "enable %s?" msgstr "aktivér %s?" -#: ../IkiWiki/Plugin/websetup.pm:244 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "setup file for this wiki is not known" msgstr "opsætningsfilen for denne wiki er ukendt" -#: ../IkiWiki/Plugin/websetup.pm:260 +#: ../IkiWiki/Plugin/websetup.pm:276 msgid "main" msgstr "primær" -#: ../IkiWiki/Plugin/websetup.pm:261 -msgid "plugins" -msgstr "udvidelser" - -#: ../IkiWiki/Plugin/websetup.pm:404 +#: ../IkiWiki/Plugin/websetup.pm:419 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" "Opsætningsændringerne vist nedenfor kræver wiki-genopbygning for at træde i " "kraft." -#: ../IkiWiki/Plugin/websetup.pm:408 +#: ../IkiWiki/Plugin/websetup.pm:423 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." @@ -1013,7 +1023,7 @@ msgstr "" "For at opsætningsændringerne vist nedenfor træder fuldt ud i kraft, skal du " "muligvis genopbygge wikien." -#: ../IkiWiki/Plugin/websetup.pm:445 +#: ../IkiWiki/Plugin/websetup.pm:460 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "Fejl: %s returnerede ikke-nul (%s). Dropper opsætningsændringer." @@ -1089,20 +1099,20 @@ msgstr "ikiwiki: kan ikke danne %s" msgid "cannot read %s: %s" msgstr "kan ikke læse %s: %s" -#: ../IkiWiki/Setup/Automator.pm:33 +#: ../IkiWiki/Setup/Automator.pm:34 msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "du skal angive et wikinavn (som indeholder alfanumeriske tegn)" -#: ../IkiWiki/Setup/Automator.pm:79 +#: ../IkiWiki/Setup/Automator.pm:80 #, perl-format msgid "unsupported revision control system %s" msgstr "revisionskontrolsystem %s ikke understøttet" -#: ../IkiWiki/Setup/Automator.pm:105 +#: ../IkiWiki/Setup/Automator.pm:106 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "opsætning af depotet med ikiwiki-makerepo mislykkedes" -#: ../IkiWiki/Setup/Automator.pm:123 +#: ../IkiWiki/Setup/Automator.pm:124 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "** Deaktiverer udvidelse %s, da den fejler med denne besked:" @@ -1174,25 +1184,25 @@ msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" "indlæsning af ekstern udvidelse krævet af udvidelsen %s mislykkedes: %s" -#: ../IkiWiki.pm:1263 +#: ../IkiWiki.pm:1255 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "forudberegningssløkke fundet på %s ved dybde %i" -#: ../IkiWiki.pm:1862 +#: ../IkiWiki.pm:1854 msgid "yes" msgstr "ja" -#: ../IkiWiki.pm:2005 +#: ../IkiWiki.pm:1997 msgid "Sort::Naturally needed for title_natural sort" msgstr "Sort::Naturally krævet for title_natural sortering" -#: ../IkiWiki.pm:2016 +#: ../IkiWiki.pm:2008 #, perl-format msgid "unknown sort type %s" msgstr "ukendt sorteringsform %s" -#: ../IkiWiki.pm:2035 +#: ../IkiWiki.pm:2027 #, perl-format msgid "cannot match pages: %s" msgstr "kan ikke få sider til at passe sammen: %s" diff --git a/po/de.po b/po/de.po index 53d0db850..b024e3be7 100644 --- a/po/de.po +++ b/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.14159\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-22 16:04-0500\n" +"POT-Creation-Date: 2010-02-12 16:48-0500\n" "PO-Revision-Date: 2009-07-23 01:07+0100\n" "Last-Translator: Kurt Gramlich \n" "Language-Team: German \n" @@ -56,7 +56,7 @@ msgstr "Einstellungen gespeichert." msgid "You are banned." msgstr "Sie sind ausgeschlossen worden." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 msgid "Error" msgstr "Fehler" @@ -146,35 +146,35 @@ msgstr "fertig" msgid "Must specify %s" msgstr "%s muss angegeben werden" -#: ../IkiWiki/Plugin/amazon_s3.pm:136 +#: ../IkiWiki/Plugin/amazon_s3.pm:140 #, fuzzy msgid "Failed to create S3 bucket: " msgstr "Konnte Behälter (bucket) in S3 nicht anlegen: " -#: ../IkiWiki/Plugin/amazon_s3.pm:221 +#: ../IkiWiki/Plugin/amazon_s3.pm:225 #, fuzzy msgid "Failed to save file to S3: " msgstr "Konnte die Datei nicht in S3 speichern: " -#: ../IkiWiki/Plugin/amazon_s3.pm:243 +#: ../IkiWiki/Plugin/amazon_s3.pm:247 #, fuzzy msgid "Failed to delete file from S3: " msgstr "Konnte die Datei nicht in S3 löschen: " -#: ../IkiWiki/Plugin/attachment.pm:49 +#: ../IkiWiki/Plugin/attachment.pm:50 #, perl-format msgid "there is already a page named %s" msgstr "eine Seite mit dem Namen %s existiert bereits" -#: ../IkiWiki/Plugin/attachment.pm:65 +#: ../IkiWiki/Plugin/attachment.pm:66 msgid "prohibited by allowed_attachments" msgstr "durch allowed_attachements verboten" -#: ../IkiWiki/Plugin/attachment.pm:140 +#: ../IkiWiki/Plugin/attachment.pm:141 msgid "bad attachment filename" msgstr "fehlerhafter Dateiname für Anhang" -#: ../IkiWiki/Plugin/attachment.pm:182 +#: ../IkiWiki/Plugin/attachment.pm:183 msgid "attachment upload" msgstr "Anhang hochladen" @@ -182,7 +182,7 @@ msgstr "Anhang hochladen" msgid "automatic index generation" msgstr "automatische Index-Erstellung" -#: ../IkiWiki/Plugin/blogspam.pm:108 +#: ../IkiWiki/Plugin/blogspam.pm:109 msgid "" "Sorry, but that looks like spam to blogspam: " @@ -199,12 +199,12 @@ msgstr "%s von %s" msgid "There are no broken links!" msgstr "Es gibt keine ungültigen Verweise!" -#: ../IkiWiki/Plugin/comments.pm:124 ../IkiWiki/Plugin/format.pm:38 +#: ../IkiWiki/Plugin/comments.pm:125 ../IkiWiki/Plugin/format.pm:48 #, perl-format msgid "unsupported page format %s" msgstr "nicht unterstütztes Seitenformat %s" -#: ../IkiWiki/Plugin/comments.pm:129 +#: ../IkiWiki/Plugin/comments.pm:130 msgid "comment must have content" msgstr "ein Kommentar sollte Inhalt haben" @@ -212,7 +212,7 @@ msgstr "ein Kommentar sollte Inhalt haben" msgid "Anonymous" msgstr "Anonym" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:97 +#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "fehlerhafter Seitenname" @@ -249,7 +249,7 @@ msgstr "Kommentar hinzugefügt" msgid "Added a comment: %s" msgstr "Kommentar hinzugefügt: %s" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256 msgid "you are not logged in as an admin" msgstr "Sie sind nicht als Administrator angemeldet" @@ -265,128 +265,128 @@ msgstr "Kommentar-Moderation" msgid "Comments" msgstr "Kommentare" -#: ../IkiWiki/Plugin/conditional.pm:27 ../IkiWiki/Plugin/cutpaste.pm:30 -#: ../IkiWiki/Plugin/cutpaste.pm:45 ../IkiWiki/Plugin/cutpaste.pm:61 +#: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 +#: ../IkiWiki/Plugin/cutpaste.pm:46 ../IkiWiki/Plugin/cutpaste.pm:62 #: ../IkiWiki/Plugin/testpagespec.pm:26 #, perl-format msgid "%s parameter is required" msgstr "der Parameter %s wird benötigt" -#: ../IkiWiki/Plugin/cutpaste.pm:66 +#: ../IkiWiki/Plugin/cutpaste.pm:67 msgid "no text was copied in this page" msgstr "es wurde kein Text in diese Seite kopiert" -#: ../IkiWiki/Plugin/cutpaste.pm:69 +#: ../IkiWiki/Plugin/cutpaste.pm:70 #, perl-format msgid "no text was copied in this page with id %s" msgstr "es wurde kein Text in diese Seite mit der id %s kopiert" -#: ../IkiWiki/Plugin/editpage.pm:40 +#: ../IkiWiki/Plugin/editpage.pm:41 #, perl-format msgid "removing old preview %s" msgstr "entferne alte Vorschau %s" -#: ../IkiWiki/Plugin/editpage.pm:113 +#: ../IkiWiki/Plugin/editpage.pm:114 #, perl-format msgid "%s is not an editable page" msgstr "Seite %s kann nicht bearbeitet werden" -#: ../IkiWiki/Plugin/editpage.pm:292 +#: ../IkiWiki/Plugin/editpage.pm:296 #, perl-format msgid "creating %s" msgstr "erstelle %s" -#: ../IkiWiki/Plugin/editpage.pm:310 ../IkiWiki/Plugin/editpage.pm:329 -#: ../IkiWiki/Plugin/editpage.pm:339 ../IkiWiki/Plugin/editpage.pm:383 -#: ../IkiWiki/Plugin/editpage.pm:422 +#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 +#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 +#: ../IkiWiki/Plugin/editpage.pm:426 #, perl-format msgid "editing %s" msgstr "bearbeite %s" -#: ../IkiWiki/Plugin/edittemplate.pm:51 +#: ../IkiWiki/Plugin/edittemplate.pm:52 msgid "template not specified" msgstr "Vorlage nicht angegeben" -#: ../IkiWiki/Plugin/edittemplate.pm:54 +#: ../IkiWiki/Plugin/edittemplate.pm:55 msgid "match not specified" msgstr "Übereinstimmung nicht angegeben" -#: ../IkiWiki/Plugin/edittemplate.pm:63 +#: ../IkiWiki/Plugin/edittemplate.pm:64 #, perl-format msgid "edittemplate %s registered for %s" msgstr "edittemplate %s für %s registriert" -#: ../IkiWiki/Plugin/edittemplate.pm:137 +#: ../IkiWiki/Plugin/edittemplate.pm:138 msgid "failed to process" msgstr "Ablauf fehlgeschlagen" -#: ../IkiWiki/Plugin/format.pm:20 +#: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" msgstr "Format und Text müssen spezifiziert werden" -#: ../IkiWiki/Plugin/fortune.pm:27 +#: ../IkiWiki/Plugin/fortune.pm:28 msgid "fortune failed" msgstr "fortune fehlgeschlagen" -#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 +#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 msgid "missing page" msgstr "fehlende Seite" -#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 +#: ../IkiWiki/Plugin/getsource.pm:66 ../IkiWiki/Plugin/goto.pm:59 #, perl-format msgid "The page %s does not exist." msgstr "Die Seite %s existiert nicht." -#: ../IkiWiki/Plugin/getsource.pm:74 +#: ../IkiWiki/Plugin/getsource.pm:75 #, fuzzy msgid "not a page" msgstr "Kann die Seiten nicht zuordnen: %s" -#: ../IkiWiki/Plugin/getsource.pm:76 +#: ../IkiWiki/Plugin/getsource.pm:77 #, fuzzy, perl-format msgid "%s is an attachment, not a page." msgstr "Seite %s kann nicht bearbeitet werden" -#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 +#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "Sie dürfen %s nicht verändern" -#: ../IkiWiki/Plugin/git.pm:697 +#: ../IkiWiki/Plugin/git.pm:698 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "Sie können eine Datei mit den Zugriffsrechten %s nicht nutzen" -#: ../IkiWiki/Plugin/git.pm:701 +#: ../IkiWiki/Plugin/git.pm:702 msgid "you are not allowed to change file modes" msgstr "Sie dürfen die Zugriffsrechte der Datei nicht ändern" -#: ../IkiWiki/Plugin/google.pm:25 ../IkiWiki/Plugin/po.pm:131 -#: ../IkiWiki/Plugin/search.pm:36 +#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/po.pm:132 +#: ../IkiWiki/Plugin/search.pm:37 #, perl-format msgid "Must specify %s when using the %s plugin" msgstr "%s muss angegeben werden, wenn die %s Erweiterung verwandt wird" -#: ../IkiWiki/Plugin/graphviz.pm:67 +#: ../IkiWiki/Plugin/graphviz.pm:68 msgid "failed to run graphviz" msgstr "graphviz konnte nicht ausgeführt werden" -#: ../IkiWiki/Plugin/graphviz.pm:94 +#: ../IkiWiki/Plugin/graphviz.pm:95 msgid "prog not a valid graphviz program" msgstr "prog ist kein gültiges graphviz-Programm" -#: ../IkiWiki/Plugin/highlight.pm:47 +#: ../IkiWiki/Plugin/highlight.pm:48 #, perl-format msgid "tohighlight contains unknown file type '%s'" msgstr "tohighlight enteilt unbekannten Dateityp '%s'" -#: ../IkiWiki/Plugin/highlight.pm:58 +#: ../IkiWiki/Plugin/highlight.pm:59 #, perl-format msgid "Source code: %s" msgstr "Quellcode: %s" -#: ../IkiWiki/Plugin/highlight.pm:123 +#: ../IkiWiki/Plugin/highlight.pm:124 msgid "" "warning: highlight perl module not available; falling back to pass through" msgstr "" @@ -398,110 +398,110 @@ msgstr "" msgid "htmltidy failed to parse this html" msgstr "Smileys konnten nicht ausgewertet werden" -#: ../IkiWiki/Plugin/img.pm:64 +#: ../IkiWiki/Plugin/img.pm:69 msgid "Image::Magick is not installed" msgstr "Image::Magick ist nicht installiert" -#: ../IkiWiki/Plugin/img.pm:68 ../IkiWiki/Plugin/img.pm:112 +#: ../IkiWiki/Plugin/img.pm:73 ../IkiWiki/Plugin/img.pm:117 #, perl-format msgid "failed to read %s: %s" msgstr "Lesen von %s fehlgeschlagen: %s" -#: ../IkiWiki/Plugin/img.pm:74 +#: ../IkiWiki/Plugin/img.pm:79 #, perl-format msgid "wrong size format \"%s\" (should be WxH)" msgstr "falsches Format in \"%s\" für size (sollte BxH sein)" -#: ../IkiWiki/Plugin/img.pm:120 +#: ../IkiWiki/Plugin/img.pm:125 #, perl-format msgid "failed to resize: %s" msgstr "Größenänderung fehlgeschlagen: %s" -#: ../IkiWiki/Plugin/img.pm:140 +#: ../IkiWiki/Plugin/img.pm:145 #, perl-format msgid "failed to determine size of image %s" msgstr "Größe des Bildes %s konnte nicht festgestellt werden." -#: ../IkiWiki/Plugin/inline.pm:92 +#: ../IkiWiki/Plugin/inline.pm:93 msgid "Must specify url to wiki with --url when using --rss or --atom" msgstr "" "Die URL zum Wiki muss mit --url angegeben werden, wenn --rss oder --atom " "genutzt wird" -#: ../IkiWiki/Plugin/inline.pm:138 +#: ../IkiWiki/Plugin/inline.pm:139 msgid "page editing not allowed" msgstr "bearbeiten der Seiten nicht erlaubt" -#: ../IkiWiki/Plugin/inline.pm:155 +#: ../IkiWiki/Plugin/inline.pm:156 msgid "missing pages parameter" msgstr "fehlender Seitenparameter" -#: ../IkiWiki/Plugin/inline.pm:191 +#: ../IkiWiki/Plugin/inline.pm:192 #, perl-format msgid "the %s and %s parameters cannot be used together" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:312 +#: ../IkiWiki/Plugin/inline.pm:313 msgid "Add a new post titled:" msgstr "Füge einen neuen Beitrag hinzu. Titel:" -#: ../IkiWiki/Plugin/inline.pm:332 +#: ../IkiWiki/Plugin/inline.pm:333 #, perl-format msgid "nonexistant template %s" msgstr "nicht-vorhandene Vorlage %s" -#: ../IkiWiki/Plugin/inline.pm:624 +#: ../IkiWiki/Plugin/inline.pm:625 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client nicht gefunden, führe Ping nicht aus" -#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 -#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 +#: ../IkiWiki/Plugin/linkmap.pm:81 ../IkiWiki/Plugin/linkmap.pm:88 +#: ../IkiWiki/Plugin/linkmap.pm:92 ../IkiWiki/Plugin/linkmap.pm:95 msgid "failed to run dot" msgstr "dot konnte nicht ausgeführt werden" -#: ../IkiWiki/Plugin/linkmap.pm:84 +#: ../IkiWiki/Plugin/linkmap.pm:85 msgid "linkmap" msgstr "" -#: ../IkiWiki/Plugin/lockedit.pm:48 +#: ../IkiWiki/Plugin/lockedit.pm:49 #, perl-format msgid "%s is locked and cannot be edited" msgstr "%s ist gesperrt und kann nicht bearbeitet werden" -#: ../IkiWiki/Plugin/mdwn.pm:44 +#: ../IkiWiki/Plugin/mdwn.pm:45 msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed" msgstr "" "multimarkdown ist eingeschaltet, aber Text::MultiMarkdown ist nicht " "installiert" -#: ../IkiWiki/Plugin/mdwn.pm:69 +#: ../IkiWiki/Plugin/mdwn.pm:70 #, perl-format msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" "laden des Perlmoduls Markdown.pm (%s) oder /usr/bin/markdown (%s) " "fehlgeschlagen" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:162 msgid "stylesheet not found" msgstr "Stylesheet nicht gefunden" -#: ../IkiWiki/Plugin/meta.pm:199 +#: ../IkiWiki/Plugin/meta.pm:200 msgid "redir page not found" msgstr "Umleitungsseite nicht gefunden" -#: ../IkiWiki/Plugin/meta.pm:213 +#: ../IkiWiki/Plugin/meta.pm:214 msgid "redir cycle is not allowed" msgstr "Zyklische Umleitungen sind nicht erlaubt" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Spiegel" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirror" msgstr "Spiegel" -#: ../IkiWiki/Plugin/moderatedcomments.pm:41 +#: ../IkiWiki/Plugin/moderatedcomments.pm:42 #, fuzzy msgid "comment needs moderation" msgstr "Kommentar-Moderation" @@ -510,19 +510,19 @@ msgstr "Kommentar-Moderation" msgid "more" msgstr "mehr" -#: ../IkiWiki/Plugin/norcs.pm:65 +#: ../IkiWiki/Plugin/norcs.pm:66 msgid "getctime not implemented" msgstr "getctime ist nicht implementiert" -#: ../IkiWiki/Plugin/openid.pm:61 +#: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "Anmelden mit" -#: ../IkiWiki/Plugin/openid.pm:64 +#: ../IkiWiki/Plugin/openid.pm:65 msgid "Get an OpenID" msgstr "Eine OpenID anfordern" -#: ../IkiWiki/Plugin/orphans.pm:55 +#: ../IkiWiki/Plugin/orphans.pm:56 #, fuzzy msgid "All pages have other pages linking to them." msgstr "Alle Seiten haben mindenstens einen Verweis von einer anderen Seite." @@ -531,33 +531,41 @@ msgstr "Alle Seiten haben mindenstens einen Verweis von einer anderen Seite." msgid "bad or missing template" msgstr "fehlerhafte oder fehlende Vorlage" -#: ../IkiWiki/Plugin/passwordauth.pm:248 +#: ../IkiWiki/Plugin/passwordauth.pm:229 +msgid "Your user page: " +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:236 +msgid "Create your user page" +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:264 msgid "Account creation successful. Now you can Login." msgstr "Kontoerstellung erfolgreich. Sie können sich jetzt anmelden." -#: ../IkiWiki/Plugin/passwordauth.pm:251 +#: ../IkiWiki/Plugin/passwordauth.pm:267 msgid "Error creating account." msgstr "Konto konnte nicht erstellt werden." -#: ../IkiWiki/Plugin/passwordauth.pm:258 +#: ../IkiWiki/Plugin/passwordauth.pm:274 msgid "No email address, so cannot email password reset instructions." msgstr "" "es gibt keine E-Mail Adresse, deshalb kann keine Anweisung zum Zurücksetzen " "des Passwortes zugeschickt werden." -#: ../IkiWiki/Plugin/passwordauth.pm:292 +#: ../IkiWiki/Plugin/passwordauth.pm:308 msgid "Failed to send mail" msgstr "Es konnte keine E-Mail versandt werden" -#: ../IkiWiki/Plugin/passwordauth.pm:294 +#: ../IkiWiki/Plugin/passwordauth.pm:310 msgid "You have been mailed password reset instructions." msgstr "Ihnen wurden Anweisungen zum Zurücksetzen des Passworts zugesandt." -#: ../IkiWiki/Plugin/passwordauth.pm:329 +#: ../IkiWiki/Plugin/passwordauth.pm:345 msgid "incorrect password reset url" msgstr "fehlerhafte URL zum Zurücksetzen des Passworts" -#: ../IkiWiki/Plugin/passwordauth.pm:332 +#: ../IkiWiki/Plugin/passwordauth.pm:348 msgid "password reset denied" msgstr "zurücksetzen des Passworts abgelehnt" @@ -587,12 +595,12 @@ msgstr "LWP nicht gefunden, führe Ping nicht aus" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:138 +#: ../IkiWiki/Plugin/po.pm:139 #, perl-format msgid "%s is not a valid language code" msgstr "%s ist keine gültige Sprachkodierung" -#: ../IkiWiki/Plugin/po.pm:150 +#: ../IkiWiki/Plugin/po.pm:151 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" @@ -600,7 +608,7 @@ msgstr "" "%s ist kein gültiger Wert für po_link_to, greife zurück auf " "po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:155 +#: ../IkiWiki/Plugin/po.pm:156 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" @@ -608,21 +616,21 @@ msgstr "" "po_link_to=negotiated benötigt usedirs eingeschaltet, greife zurück auf " "po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:385 +#: ../IkiWiki/Plugin/po.pm:386 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "um die meta-titeln zu reparieren werden alle Seiten neu erstellt" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 #, perl-format msgid "building %s" msgstr "erzeuge %s" -#: ../IkiWiki/Plugin/po.pm:427 +#: ../IkiWiki/Plugin/po.pm:428 msgid "updated PO files" msgstr "PO-Dateien aktualisiert" -#: ../IkiWiki/Plugin/po.pm:451 +#: ../IkiWiki/Plugin/po.pm:452 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." @@ -630,7 +638,7 @@ msgstr "" "Übersetzung kann nicht entfernt werden. Wenn die Master Seite entfernt wird, " "werden auch ihre Übersetzungen entfernt." -#: ../IkiWiki/Plugin/po.pm:471 +#: ../IkiWiki/Plugin/po.pm:472 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." @@ -638,76 +646,76 @@ msgstr "" "Eine Übersetzung kann nicht umbenannt werden. Wenn die Master Seite " "unbenannt wird, werden auch ihre Übersetzungen unbenannt." -#: ../IkiWiki/Plugin/po.pm:870 +#: ../IkiWiki/Plugin/po.pm:871 #, perl-format msgid "POT file (%s) does not exist" msgstr "POT-Datei (%s) existiert nicht" -#: ../IkiWiki/Plugin/po.pm:884 +#: ../IkiWiki/Plugin/po.pm:885 #, fuzzy, perl-format msgid "failed to copy underlay PO file to %s" msgstr "kopieren der POT-Datei nach %s fehlgeschlagen" -#: ../IkiWiki/Plugin/po.pm:893 +#: ../IkiWiki/Plugin/po.pm:894 #, perl-format msgid "failed to update %s" msgstr "aktualisieren von %s fehlgeschlagen" -#: ../IkiWiki/Plugin/po.pm:899 +#: ../IkiWiki/Plugin/po.pm:900 #, perl-format msgid "failed to copy the POT file to %s" msgstr "kopieren der POT-Datei nach %s fehlgeschlagen" -#: ../IkiWiki/Plugin/po.pm:935 +#: ../IkiWiki/Plugin/po.pm:936 msgid "N/A" msgstr "N/A" -#: ../IkiWiki/Plugin/po.pm:948 +#: ../IkiWiki/Plugin/po.pm:949 #, perl-format msgid "failed to translate %s" msgstr "übersetzen von %s fehlgeschlagen" -#: ../IkiWiki/Plugin/po.pm:1032 +#: ../IkiWiki/Plugin/po.pm:1033 msgid "removed obsolete PO files" msgstr "überflüssige PO-Dateien wurden entfernt" -#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 -#: ../IkiWiki/Plugin/po.pm:1141 +#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 +#: ../IkiWiki/Plugin/po.pm:1142 #, perl-format msgid "failed to write %s" msgstr "schreiben von %s fehlgeschlagen" -#: ../IkiWiki/Plugin/po.pm:1100 +#: ../IkiWiki/Plugin/po.pm:1101 msgid "failed to translate" msgstr "übersetzen fehlgeschlagen" -#: ../IkiWiki/Plugin/po.pm:1153 +#: ../IkiWiki/Plugin/po.pm:1154 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" "ungültige gettext Datei, gehe zurück zur vorherigen Seite um weiter zu " "arbeiten" -#: ../IkiWiki/Plugin/poll.pm:69 +#: ../IkiWiki/Plugin/poll.pm:70 msgid "vote" msgstr "abstimmen" -#: ../IkiWiki/Plugin/poll.pm:77 +#: ../IkiWiki/Plugin/poll.pm:78 msgid "Total votes:" msgstr "Alle Stimmen:" -#: ../IkiWiki/Plugin/polygen.pm:41 +#: ../IkiWiki/Plugin/polygen.pm:42 msgid "polygen not installed" msgstr "polygen ist nicht installiert" -#: ../IkiWiki/Plugin/polygen.pm:60 +#: ../IkiWiki/Plugin/polygen.pm:61 msgid "command failed" msgstr "Befehl fehlgeschlagen" -#: ../IkiWiki/Plugin/postsparkline.pm:46 +#: ../IkiWiki/Plugin/postsparkline.pm:47 msgid "missing formula" msgstr "fehlende Formel" -#: ../IkiWiki/Plugin/postsparkline.pm:53 +#: ../IkiWiki/Plugin/postsparkline.pm:54 msgid "unknown formula" msgstr "unbekannte Formel" @@ -775,12 +783,12 @@ msgstr "um Mitternacht" msgid "at noon on %A" msgstr "am Nachmittag des %A" -#: ../IkiWiki/Plugin/progress.pm:34 +#: ../IkiWiki/Plugin/progress.pm:35 #, perl-format msgid "illegal percent value %s" msgstr "unzulässiger Prozentwert %s" -#: ../IkiWiki/Plugin/progress.pm:55 +#: ../IkiWiki/Plugin/progress.pm:56 msgid "need either `percent` or `totalpages` and `donepages` parameters" msgstr "" "es werden entweder `percent` oder `totalpages` und `donepages` Parameter " @@ -790,81 +798,81 @@ msgstr "" msgid "(Diff truncated)" msgstr "(Diff wurde gekürzt)" -#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36 +#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:37 #, perl-format msgid "%s does not exist" msgstr "%s existiert nicht" -#: ../IkiWiki/Plugin/remove.pm:38 +#: ../IkiWiki/Plugin/remove.pm:39 #, perl-format msgid "%s is not in the srcdir, so it cannot be deleted" msgstr "%s ist nicht im srcdir und kann deshalb nicht gelöscht werden" -#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45 +#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:46 #, perl-format msgid "%s is not a file" msgstr "%s ist keine Datei" -#: ../IkiWiki/Plugin/remove.pm:134 +#: ../IkiWiki/Plugin/remove.pm:135 #, perl-format msgid "confirm removal of %s" msgstr "bestätigen Sie die Entfernung von %s" -#: ../IkiWiki/Plugin/remove.pm:171 +#: ../IkiWiki/Plugin/remove.pm:172 msgid "Please select the attachments to remove." msgstr "Bitte wählen Sie die zu entfernenden Anhänge aus." -#: ../IkiWiki/Plugin/remove.pm:211 +#: ../IkiWiki/Plugin/remove.pm:212 msgid "removed" msgstr "entfernt" -#: ../IkiWiki/Plugin/rename.pm:42 +#: ../IkiWiki/Plugin/rename.pm:43 #, perl-format msgid "%s is not in the srcdir, so it cannot be renamed" msgstr "%s ist nicht im srcdir und kann deshalb nicht umbenannt werden" -#: ../IkiWiki/Plugin/rename.pm:62 +#: ../IkiWiki/Plugin/rename.pm:63 msgid "no change to the file name was specified" msgstr "es wurde keine Änderung des Dateinamens angegeben" -#: ../IkiWiki/Plugin/rename.pm:68 +#: ../IkiWiki/Plugin/rename.pm:69 #, perl-format msgid "illegal name" msgstr "unzulässiger Name" -#: ../IkiWiki/Plugin/rename.pm:73 +#: ../IkiWiki/Plugin/rename.pm:74 #, perl-format msgid "%s already exists" msgstr "%s existiert bereits" -#: ../IkiWiki/Plugin/rename.pm:79 +#: ../IkiWiki/Plugin/rename.pm:80 #, perl-format msgid "%s already exists on disk" msgstr "%s existiert bereits auf der Festplatte" -#: ../IkiWiki/Plugin/rename.pm:122 +#: ../IkiWiki/Plugin/rename.pm:123 #, perl-format msgid "rename %s" msgstr "benenne %s um" -#: ../IkiWiki/Plugin/rename.pm:161 +#: ../IkiWiki/Plugin/rename.pm:162 msgid "Also rename SubPages and attachments" msgstr "Auch Unterseiten (SubPages) und Anhänge umbenennen" -#: ../IkiWiki/Plugin/rename.pm:248 +#: ../IkiWiki/Plugin/rename.pm:249 msgid "Only one attachment can be renamed at a time." msgstr "Es kann immer nur ein Anhang gleichzeitig umbenannt werden." -#: ../IkiWiki/Plugin/rename.pm:251 +#: ../IkiWiki/Plugin/rename.pm:252 msgid "Please select the attachment to rename." msgstr "Bitte wählen Sie den Anhang aus, der umbenannt werden soll." -#: ../IkiWiki/Plugin/rename.pm:348 +#: ../IkiWiki/Plugin/rename.pm:349 #, perl-format msgid "rename %s to %s" msgstr "benenne %s in %s um" -#: ../IkiWiki/Plugin/rename.pm:572 +#: ../IkiWiki/Plugin/rename.pm:573 #, perl-format msgid "update for rename of %s to %s" msgstr "aktualisiert zum Umbenennen von %s nach %s" @@ -879,28 +887,28 @@ msgstr "lesen von %s fehlgeschlagen" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:182 +#: ../IkiWiki/Plugin/search.pm:183 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "benötige Digest::SHA1 um einen Index von %s zu erstellen" -#: ../IkiWiki/Plugin/search.pm:217 +#: ../IkiWiki/Plugin/search.pm:218 msgid "search" msgstr "suchen" -#: ../IkiWiki/Plugin/shortcut.pm:31 +#: ../IkiWiki/Plugin/shortcut.pm:32 #, perl-format msgid "shortcut plugin will not work without %s" msgstr "die shortcut Erweiterung wird ohne %s nicht funktionieren" -#: ../IkiWiki/Plugin/shortcut.pm:44 +#: ../IkiWiki/Plugin/shortcut.pm:45 msgid "missing name or url parameter" msgstr "fehlender Name oder URL-Parameter" #. translators: This is used to display what shortcuts are defined. #. translators: First parameter is the name of the shortcut, the second #. translators: is an URL. -#: ../IkiWiki/Plugin/shortcut.pm:54 +#: ../IkiWiki/Plugin/shortcut.pm:55 #, perl-format msgid "shortcut %s points to %s" msgstr "Tastenkürzel %s verweist nach %s" @@ -909,109 +917,111 @@ msgstr "Tastenkürzel %s verweist nach %s" msgid "failed to parse any smileys" msgstr "Smileys konnten nicht ausgewertet werden" -#: ../IkiWiki/Plugin/sparkline.pm:72 +#: ../IkiWiki/Plugin/sparkline.pm:73 msgid "parse error" msgstr "Auswertungsfehler" -#: ../IkiWiki/Plugin/sparkline.pm:78 +#: ../IkiWiki/Plugin/sparkline.pm:79 msgid "invalid featurepoint diameter" msgstr "ungültiger featurepoint diameter" -#: ../IkiWiki/Plugin/sparkline.pm:88 +#: ../IkiWiki/Plugin/sparkline.pm:89 msgid "invalid featurepoint location" msgstr "ungültige featurepoint location" -#: ../IkiWiki/Plugin/sparkline.pm:99 +#: ../IkiWiki/Plugin/sparkline.pm:100 msgid "missing values" msgstr "fehlende Werte" -#: ../IkiWiki/Plugin/sparkline.pm:104 +#: ../IkiWiki/Plugin/sparkline.pm:105 msgid "invalid height value" msgstr "ungültige Wert für height" -#: ../IkiWiki/Plugin/sparkline.pm:111 +#: ../IkiWiki/Plugin/sparkline.pm:112 msgid "missing width parameter" msgstr "fehlender Parameter für width" -#: ../IkiWiki/Plugin/sparkline.pm:115 +#: ../IkiWiki/Plugin/sparkline.pm:116 msgid "invalid width value" msgstr "ungültige Wert für width" -#: ../IkiWiki/Plugin/sparkline.pm:153 +#: ../IkiWiki/Plugin/sparkline.pm:154 msgid "failed to run php" msgstr "konnte PHP nicht ausführen" -#: ../IkiWiki/Plugin/table.pm:31 +#: ../IkiWiki/Plugin/table.pm:32 msgid "cannot find file" msgstr "konnte Datei nicht finden" -#: ../IkiWiki/Plugin/table.pm:87 +#: ../IkiWiki/Plugin/table.pm:88 msgid "unknown data format" msgstr "unbekanntes Datenformat" -#: ../IkiWiki/Plugin/table.pm:95 +#: ../IkiWiki/Plugin/table.pm:96 msgid "empty data" msgstr "keine Daten" -#: ../IkiWiki/Plugin/table.pm:114 +#: ../IkiWiki/Plugin/table.pm:115 msgid "Direct data download" msgstr "Direkter Daten-Download" -#: ../IkiWiki/Plugin/table.pm:148 +#: ../IkiWiki/Plugin/table.pm:149 #, perl-format msgid "parse fail at line %d: %s" msgstr "Auswertungsfehler in Zeile %d: %s" -#: ../IkiWiki/Plugin/template.pm:29 +#: ../IkiWiki/Plugin/template.pm:34 msgid "missing id parameter" msgstr "fehlender Parameter id" -#: ../IkiWiki/Plugin/template.pm:36 +#: ../IkiWiki/Plugin/template.pm:41 #, perl-format msgid "template %s not found" msgstr "Vorlage %s nicht gefunden" -#: ../IkiWiki/Plugin/template.pm:55 +#: ../IkiWiki/Plugin/template.pm:60 msgid "failed to process:" msgstr "Fehler beim Ablauf:" -#: ../IkiWiki/Plugin/teximg.pm:70 +#: ../IkiWiki/Plugin/teximg.pm:71 msgid "missing tex code" msgstr "fehlender TeX-Code" -#: ../IkiWiki/Plugin/teximg.pm:122 +#: ../IkiWiki/Plugin/teximg.pm:123 msgid "failed to generate image from code" msgstr "konnte kein Bild aus dem Code erzeugen" -#: ../IkiWiki/Plugin/websetup.pm:89 -msgid "plugin" +#: ../IkiWiki/Plugin/websetup.pm:91 +#, fuzzy, perl-format +msgid "%s plugin:" msgstr "Erweiterung" -#: ../IkiWiki/Plugin/websetup.pm:108 +#: ../IkiWiki/Plugin/websetup.pm:107 +#, fuzzy, perl-format +msgid "%s plugins" +msgstr "Erweiterungen" + +#: ../IkiWiki/Plugin/websetup.pm:121 #, perl-format msgid "enable %s?" msgstr "%s aktivieren?" -#: ../IkiWiki/Plugin/websetup.pm:244 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "setup file for this wiki is not known" msgstr "Die Einrichtungsdatei für dieses Wiki ist unbekannt" -#: ../IkiWiki/Plugin/websetup.pm:260 +#: ../IkiWiki/Plugin/websetup.pm:276 msgid "main" msgstr "Hauptseite" -#: ../IkiWiki/Plugin/websetup.pm:261 -msgid "plugins" -msgstr "Erweiterungen" - -#: ../IkiWiki/Plugin/websetup.pm:404 +#: ../IkiWiki/Plugin/websetup.pm:419 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" "Die unten aufgeführten Konfigurationsänderungen erfordern ein Neubau des " "Wikis, um wirksam zu werden." -#: ../IkiWiki/Plugin/websetup.pm:408 +#: ../IkiWiki/Plugin/websetup.pm:423 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." @@ -1019,7 +1029,7 @@ msgstr "" "Damit die unten aufgeführten Konfigurationsänderungen insgesamt wirksam " "werden, kann es notwendig sein, das Wikis neu zu bauen." -#: ../IkiWiki/Plugin/websetup.pm:445 +#: ../IkiWiki/Plugin/websetup.pm:460 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1098,21 +1108,21 @@ msgstr "ikiwiki: kann %s nicht erzeugen" msgid "cannot read %s: %s" msgstr "kann %s nicht lesen: %s" -#: ../IkiWiki/Setup/Automator.pm:33 +#: ../IkiWiki/Setup/Automator.pm:34 msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" "Sie müssen einen Wiki-Namen eingeben (der alphanumerische Zeichen enthält)" -#: ../IkiWiki/Setup/Automator.pm:79 +#: ../IkiWiki/Setup/Automator.pm:80 #, perl-format msgid "unsupported revision control system %s" msgstr "nicht unterstütztes Versionskontrollsystem %s" -#: ../IkiWiki/Setup/Automator.pm:105 +#: ../IkiWiki/Setup/Automator.pm:106 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "erstellen des Depots mit ikiwiki-makerepo ist fehlgeschlagen" -#: ../IkiWiki/Setup/Automator.pm:123 +#: ../IkiWiki/Setup/Automator.pm:124 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1188,25 +1198,25 @@ msgstr "" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "Laden der für %s benötigten externen Erweiterung fehlgeschlagen: %s" -#: ../IkiWiki.pm:1263 +#: ../IkiWiki.pm:1255 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "Präprozessorschleife auf %s in Tiefe %i erkannt" -#: ../IkiWiki.pm:1862 +#: ../IkiWiki.pm:1854 msgid "yes" msgstr "ja" -#: ../IkiWiki.pm:2005 +#: ../IkiWiki.pm:1997 msgid "Sort::Naturally needed for title_natural sort" msgstr "Sort::Naturally wird benötigt für title_natural sort" -#: ../IkiWiki.pm:2016 +#: ../IkiWiki.pm:2008 #, perl-format msgid "unknown sort type %s" msgstr "Unbekannter Sortierungstyp %s" -#: ../IkiWiki.pm:2035 +#: ../IkiWiki.pm:2027 #, perl-format msgid "cannot match pages: %s" msgstr "Kann die Seiten nicht zuordnen: %s" diff --git a/po/es.po b/po/es.po index de85edbdf..2923ac199 100644 --- a/po/es.po +++ b/po/es.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: es\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-22 16:04-0500\n" +"POT-Creation-Date: 2010-02-12 16:48-0500\n" "PO-Revision-Date: 2009-06-14 12:32+0200\n" "Last-Translator: Victor Moral \n" "Language-Team: \n" @@ -60,7 +60,7 @@ msgstr "Las preferencias se han guardado." msgid "You are banned." msgstr "Ha sido expulsado." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 msgid "Error" msgstr "Error" @@ -151,35 +151,35 @@ msgstr "completado" msgid "Must specify %s" msgstr "Debe especificar %s" -#: ../IkiWiki/Plugin/amazon_s3.pm:136 +#: ../IkiWiki/Plugin/amazon_s3.pm:140 #, fuzzy msgid "Failed to create S3 bucket: " msgstr "Creación de directorio en S3 fallida: " -#: ../IkiWiki/Plugin/amazon_s3.pm:221 +#: ../IkiWiki/Plugin/amazon_s3.pm:225 #, fuzzy msgid "Failed to save file to S3: " msgstr "No puedo guardar el archivo en S3: " -#: ../IkiWiki/Plugin/amazon_s3.pm:243 +#: ../IkiWiki/Plugin/amazon_s3.pm:247 #, fuzzy msgid "Failed to delete file from S3: " msgstr "No puedo borrar archivo en S3: " -#: ../IkiWiki/Plugin/attachment.pm:49 +#: ../IkiWiki/Plugin/attachment.pm:50 #, perl-format msgid "there is already a page named %s" msgstr "ya existe una página de nombre %s" -#: ../IkiWiki/Plugin/attachment.pm:65 +#: ../IkiWiki/Plugin/attachment.pm:66 msgid "prohibited by allowed_attachments" msgstr "prohibido por la claúsula allowed_attachments" -#: ../IkiWiki/Plugin/attachment.pm:140 +#: ../IkiWiki/Plugin/attachment.pm:141 msgid "bad attachment filename" msgstr "nombre de archivo adjunto erróneo" -#: ../IkiWiki/Plugin/attachment.pm:182 +#: ../IkiWiki/Plugin/attachment.pm:183 msgid "attachment upload" msgstr "enviado el adjunto" @@ -187,7 +187,7 @@ msgstr "enviado el adjunto" msgid "automatic index generation" msgstr "creación de índice automática" -#: ../IkiWiki/Plugin/blogspam.pm:108 +#: ../IkiWiki/Plugin/blogspam.pm:109 msgid "" "Sorry, but that looks like spam to blogspam: " @@ -204,12 +204,12 @@ msgstr "%s desde la página %s" msgid "There are no broken links!" msgstr "¡ No hay enlaces rotos !" -#: ../IkiWiki/Plugin/comments.pm:124 ../IkiWiki/Plugin/format.pm:38 +#: ../IkiWiki/Plugin/comments.pm:125 ../IkiWiki/Plugin/format.pm:48 #, perl-format msgid "unsupported page format %s" msgstr "formato de página %s no soportado" -#: ../IkiWiki/Plugin/comments.pm:129 +#: ../IkiWiki/Plugin/comments.pm:130 msgid "comment must have content" msgstr "Un comentario debe tener algún contenido" @@ -217,7 +217,7 @@ msgstr "Un comentario debe tener algún contenido" msgid "Anonymous" msgstr "Anónimo" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:97 +#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "nombre de página erróneo" @@ -253,7 +253,7 @@ msgstr "Añadir un comentario" msgid "Added a comment: %s" msgstr "Comentario añadido: %s" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256 msgid "you are not logged in as an admin" msgstr "No está registrado como un administrador" @@ -269,128 +269,128 @@ msgstr "aprobación de comentarios" msgid "Comments" msgstr "Comentarios" -#: ../IkiWiki/Plugin/conditional.pm:27 ../IkiWiki/Plugin/cutpaste.pm:30 -#: ../IkiWiki/Plugin/cutpaste.pm:45 ../IkiWiki/Plugin/cutpaste.pm:61 +#: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 +#: ../IkiWiki/Plugin/cutpaste.pm:46 ../IkiWiki/Plugin/cutpaste.pm:62 #: ../IkiWiki/Plugin/testpagespec.pm:26 #, perl-format msgid "%s parameter is required" msgstr "el parámetro %s es obligatorio" -#: ../IkiWiki/Plugin/cutpaste.pm:66 +#: ../IkiWiki/Plugin/cutpaste.pm:67 msgid "no text was copied in this page" msgstr "no se ha copiado ningún texto en esta página" -#: ../IkiWiki/Plugin/cutpaste.pm:69 +#: ../IkiWiki/Plugin/cutpaste.pm:70 #, perl-format msgid "no text was copied in this page with id %s" msgstr "no se ha copiado ningún texto con el identificador %s en esta pagina" -#: ../IkiWiki/Plugin/editpage.pm:40 +#: ../IkiWiki/Plugin/editpage.pm:41 #, perl-format msgid "removing old preview %s" msgstr "eliminando la antigua previsualización %s" -#: ../IkiWiki/Plugin/editpage.pm:113 +#: ../IkiWiki/Plugin/editpage.pm:114 #, perl-format msgid "%s is not an editable page" msgstr "la página %s no es modificable" -#: ../IkiWiki/Plugin/editpage.pm:292 +#: ../IkiWiki/Plugin/editpage.pm:296 #, perl-format msgid "creating %s" msgstr "creando página %s" -#: ../IkiWiki/Plugin/editpage.pm:310 ../IkiWiki/Plugin/editpage.pm:329 -#: ../IkiWiki/Plugin/editpage.pm:339 ../IkiWiki/Plugin/editpage.pm:383 -#: ../IkiWiki/Plugin/editpage.pm:422 +#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 +#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 +#: ../IkiWiki/Plugin/editpage.pm:426 #, perl-format msgid "editing %s" msgstr "modificando página %s" -#: ../IkiWiki/Plugin/edittemplate.pm:51 +#: ../IkiWiki/Plugin/edittemplate.pm:52 msgid "template not specified" msgstr "falta indicar la plantilla (template)" -#: ../IkiWiki/Plugin/edittemplate.pm:54 +#: ../IkiWiki/Plugin/edittemplate.pm:55 msgid "match not specified" msgstr "falta indicar la coincidencia de páginas (match)" -#: ../IkiWiki/Plugin/edittemplate.pm:63 +#: ../IkiWiki/Plugin/edittemplate.pm:64 #, perl-format msgid "edittemplate %s registered for %s" msgstr "plantilla de edición %s registrada para %s" -#: ../IkiWiki/Plugin/edittemplate.pm:137 +#: ../IkiWiki/Plugin/edittemplate.pm:138 msgid "failed to process" msgstr "fallo en el proceso" -#: ../IkiWiki/Plugin/format.pm:20 +#: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" msgstr "se deben especificar tanto el formato como el texto" -#: ../IkiWiki/Plugin/fortune.pm:27 +#: ../IkiWiki/Plugin/fortune.pm:28 msgid "fortune failed" msgstr "el programa fortune ha fallado" -#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 +#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 msgid "missing page" msgstr "página no encontrada" -#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 +#: ../IkiWiki/Plugin/getsource.pm:66 ../IkiWiki/Plugin/goto.pm:59 #, perl-format msgid "The page %s does not exist." msgstr "No existe la página %s." -#: ../IkiWiki/Plugin/getsource.pm:74 +#: ../IkiWiki/Plugin/getsource.pm:75 #, fuzzy msgid "not a page" msgstr "no encuentro páginas coincidentes: %s" -#: ../IkiWiki/Plugin/getsource.pm:76 +#: ../IkiWiki/Plugin/getsource.pm:77 #, fuzzy, perl-format msgid "%s is an attachment, not a page." msgstr "la página %s no es modificable" -#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 +#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "No puede cambiar %s" -#: ../IkiWiki/Plugin/git.pm:697 +#: ../IkiWiki/Plugin/git.pm:698 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "no puede actuar sobre un archivo con permisos %s" -#: ../IkiWiki/Plugin/git.pm:701 +#: ../IkiWiki/Plugin/git.pm:702 msgid "you are not allowed to change file modes" msgstr "No puede cambiar los permisos de acceso de un archivo" -#: ../IkiWiki/Plugin/google.pm:25 ../IkiWiki/Plugin/po.pm:131 -#: ../IkiWiki/Plugin/search.pm:36 +#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/po.pm:132 +#: ../IkiWiki/Plugin/search.pm:37 #, fuzzy, perl-format msgid "Must specify %s when using the %s plugin" msgstr "Es obligatorio indicar %s cuando se utiliza el complemento de búsqueda" -#: ../IkiWiki/Plugin/graphviz.pm:67 +#: ../IkiWiki/Plugin/graphviz.pm:68 msgid "failed to run graphviz" msgstr "no he podido ejecutar el programa graphviz " -#: ../IkiWiki/Plugin/graphviz.pm:94 +#: ../IkiWiki/Plugin/graphviz.pm:95 msgid "prog not a valid graphviz program" msgstr "prog no es un programa graphviz válido " -#: ../IkiWiki/Plugin/highlight.pm:47 +#: ../IkiWiki/Plugin/highlight.pm:48 #, perl-format msgid "tohighlight contains unknown file type '%s'" msgstr "la directiva tohighlight contiene el tipo de archivo desconocido '%s' " -#: ../IkiWiki/Plugin/highlight.pm:58 +#: ../IkiWiki/Plugin/highlight.pm:59 #, perl-format msgid "Source code: %s" msgstr "Código fuente: %s" -#: ../IkiWiki/Plugin/highlight.pm:123 +#: ../IkiWiki/Plugin/highlight.pm:124 msgid "" "warning: highlight perl module not available; falling back to pass through" msgstr "" @@ -402,109 +402,109 @@ msgstr "" msgid "htmltidy failed to parse this html" msgstr "Algunos emoticonos tienen errores" -#: ../IkiWiki/Plugin/img.pm:64 +#: ../IkiWiki/Plugin/img.pm:69 msgid "Image::Magick is not installed" msgstr "El complemento Image::Magick no ha sido instalado" -#: ../IkiWiki/Plugin/img.pm:68 ../IkiWiki/Plugin/img.pm:112 +#: ../IkiWiki/Plugin/img.pm:73 ../IkiWiki/Plugin/img.pm:117 #, perl-format msgid "failed to read %s: %s" msgstr "no puedo leer de %s: %s " -#: ../IkiWiki/Plugin/img.pm:74 +#: ../IkiWiki/Plugin/img.pm:79 #, perl-format msgid "wrong size format \"%s\" (should be WxH)" msgstr "" -#: ../IkiWiki/Plugin/img.pm:120 +#: ../IkiWiki/Plugin/img.pm:125 #, perl-format msgid "failed to resize: %s" msgstr "dimensionamiento fallido: %s" -#: ../IkiWiki/Plugin/img.pm:140 +#: ../IkiWiki/Plugin/img.pm:145 #, perl-format msgid "failed to determine size of image %s" msgstr "no he podido determinar el tamaño de la imagen %s" -#: ../IkiWiki/Plugin/inline.pm:92 +#: ../IkiWiki/Plugin/inline.pm:93 msgid "Must specify url to wiki with --url when using --rss or --atom" msgstr "" "Es obligatorio indicar un url al wiki cuando se usan los parámetros --rss ó " "--atom" -#: ../IkiWiki/Plugin/inline.pm:138 +#: ../IkiWiki/Plugin/inline.pm:139 msgid "page editing not allowed" msgstr "no está permitida la modificación de páginas" -#: ../IkiWiki/Plugin/inline.pm:155 +#: ../IkiWiki/Plugin/inline.pm:156 msgid "missing pages parameter" msgstr "falta el parámetro pages" -#: ../IkiWiki/Plugin/inline.pm:191 +#: ../IkiWiki/Plugin/inline.pm:192 #, perl-format msgid "the %s and %s parameters cannot be used together" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:312 +#: ../IkiWiki/Plugin/inline.pm:313 msgid "Add a new post titled:" msgstr "Añadir una entrada nueva titulada:" -#: ../IkiWiki/Plugin/inline.pm:332 +#: ../IkiWiki/Plugin/inline.pm:333 #, perl-format msgid "nonexistant template %s" msgstr "la plantilla %s no existe " -#: ../IkiWiki/Plugin/inline.pm:624 +#: ../IkiWiki/Plugin/inline.pm:625 msgid "RPC::XML::Client not found, not pinging" msgstr "No he encontrado el componente RPC::XML::Client, no envío señal alguna" -#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 -#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 +#: ../IkiWiki/Plugin/linkmap.pm:81 ../IkiWiki/Plugin/linkmap.pm:88 +#: ../IkiWiki/Plugin/linkmap.pm:92 ../IkiWiki/Plugin/linkmap.pm:95 msgid "failed to run dot" msgstr "no he podido ejecutar el programa dot" -#: ../IkiWiki/Plugin/linkmap.pm:84 +#: ../IkiWiki/Plugin/linkmap.pm:85 msgid "linkmap" msgstr "" -#: ../IkiWiki/Plugin/lockedit.pm:48 +#: ../IkiWiki/Plugin/lockedit.pm:49 #, perl-format msgid "%s is locked and cannot be edited" msgstr "La página %s está bloqueada y no puede modificarse" -#: ../IkiWiki/Plugin/mdwn.pm:44 +#: ../IkiWiki/Plugin/mdwn.pm:45 msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed" msgstr "" "el modo multimarkdown está activo, pero no está instalado Text::MultiMarkdown" -#: ../IkiWiki/Plugin/mdwn.pm:69 +#: ../IkiWiki/Plugin/mdwn.pm:70 #, perl-format msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" "no he podido cargar el módulo Perl Markdown.pm (%s) ó no he podido ejecutar " "el programa /usr/bin/markdown (%s)" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:162 msgid "stylesheet not found" msgstr "hoja de estilo no encontrada " -#: ../IkiWiki/Plugin/meta.pm:199 +#: ../IkiWiki/Plugin/meta.pm:200 msgid "redir page not found" msgstr "falta la página a donde redirigir" -#: ../IkiWiki/Plugin/meta.pm:213 +#: ../IkiWiki/Plugin/meta.pm:214 msgid "redir cycle is not allowed" msgstr "ciclo de redirección no permitido" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Réplicas" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirror" msgstr "Réplica" -#: ../IkiWiki/Plugin/moderatedcomments.pm:41 +#: ../IkiWiki/Plugin/moderatedcomments.pm:42 #, fuzzy msgid "comment needs moderation" msgstr "aprobación de comentarios" @@ -513,19 +513,19 @@ msgstr "aprobación de comentarios" msgid "more" msgstr "ver más" -#: ../IkiWiki/Plugin/norcs.pm:65 +#: ../IkiWiki/Plugin/norcs.pm:66 msgid "getctime not implemented" msgstr "la funcionalidad getctime no está incluida" -#: ../IkiWiki/Plugin/openid.pm:61 +#: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "Identificarse mediante " -#: ../IkiWiki/Plugin/openid.pm:64 +#: ../IkiWiki/Plugin/openid.pm:65 msgid "Get an OpenID" msgstr "Consiga un identificador OpenID" -#: ../IkiWiki/Plugin/orphans.pm:55 +#: ../IkiWiki/Plugin/orphans.pm:56 #, fuzzy msgid "All pages have other pages linking to them." msgstr "Todas las páginas están referenciadas entre sí." @@ -534,35 +534,43 @@ msgstr "Todas las páginas están referenciadas entre sí." msgid "bad or missing template" msgstr "plantilla errónea ó no existente" -#: ../IkiWiki/Plugin/passwordauth.pm:248 +#: ../IkiWiki/Plugin/passwordauth.pm:229 +msgid "Your user page: " +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:236 +msgid "Create your user page" +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:264 msgid "Account creation successful. Now you can Login." msgstr "Cuenta de usuario creada con éxito. Ahora puede identificarse." -#: ../IkiWiki/Plugin/passwordauth.pm:251 +#: ../IkiWiki/Plugin/passwordauth.pm:267 msgid "Error creating account." msgstr "Error creando la cuenta de usuario." -#: ../IkiWiki/Plugin/passwordauth.pm:258 +#: ../IkiWiki/Plugin/passwordauth.pm:274 msgid "No email address, so cannot email password reset instructions." msgstr "" "No tengo dirección de correo electrónica, así que no puedo enviar " "instrucciones para reiniciar la contraseña" -#: ../IkiWiki/Plugin/passwordauth.pm:292 +#: ../IkiWiki/Plugin/passwordauth.pm:308 msgid "Failed to send mail" msgstr "No he podido enviar el mensaje de correo electrónico" -#: ../IkiWiki/Plugin/passwordauth.pm:294 +#: ../IkiWiki/Plugin/passwordauth.pm:310 msgid "You have been mailed password reset instructions." msgstr "" "Las instrucciones para reiniciar la contraseña se le han enviado por correo " "electrónico" -#: ../IkiWiki/Plugin/passwordauth.pm:329 +#: ../IkiWiki/Plugin/passwordauth.pm:345 msgid "incorrect password reset url" msgstr "el url para reiniciar la contraseña es incorrecto" -#: ../IkiWiki/Plugin/passwordauth.pm:332 +#: ../IkiWiki/Plugin/passwordauth.pm:348 msgid "password reset denied" msgstr "reinicio de contraseña denegado" @@ -592,118 +600,118 @@ msgstr "No he encontrado el componente LWP, no envío señal alguna" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:138 +#: ../IkiWiki/Plugin/po.pm:139 #, fuzzy, perl-format msgid "%s is not a valid language code" msgstr "%s no es un archivo" -#: ../IkiWiki/Plugin/po.pm:150 +#: ../IkiWiki/Plugin/po.pm:151 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:155 +#: ../IkiWiki/Plugin/po.pm:156 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:385 +#: ../IkiWiki/Plugin/po.pm:386 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 #, fuzzy, perl-format msgid "building %s" msgstr "Informaremos a %s" -#: ../IkiWiki/Plugin/po.pm:427 +#: ../IkiWiki/Plugin/po.pm:428 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:451 +#: ../IkiWiki/Plugin/po.pm:452 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:471 +#: ../IkiWiki/Plugin/po.pm:472 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:870 +#: ../IkiWiki/Plugin/po.pm:871 #, fuzzy, perl-format msgid "POT file (%s) does not exist" msgstr "No existe la página %s." -#: ../IkiWiki/Plugin/po.pm:884 +#: ../IkiWiki/Plugin/po.pm:885 #, fuzzy, perl-format msgid "failed to copy underlay PO file to %s" msgstr "ha fallado la compilación del programa %s" -#: ../IkiWiki/Plugin/po.pm:893 +#: ../IkiWiki/Plugin/po.pm:894 #, fuzzy, perl-format msgid "failed to update %s" msgstr "ha fallado la compilación del programa %s" -#: ../IkiWiki/Plugin/po.pm:899 +#: ../IkiWiki/Plugin/po.pm:900 #, fuzzy, perl-format msgid "failed to copy the POT file to %s" msgstr "ha fallado la compilación del programa %s" -#: ../IkiWiki/Plugin/po.pm:935 +#: ../IkiWiki/Plugin/po.pm:936 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:948 +#: ../IkiWiki/Plugin/po.pm:949 #, fuzzy, perl-format msgid "failed to translate %s" msgstr "dimensionamiento fallido: %s" -#: ../IkiWiki/Plugin/po.pm:1032 +#: ../IkiWiki/Plugin/po.pm:1033 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 -#: ../IkiWiki/Plugin/po.pm:1141 +#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 +#: ../IkiWiki/Plugin/po.pm:1142 #, fuzzy, perl-format msgid "failed to write %s" msgstr "dimensionamiento fallido: %s" -#: ../IkiWiki/Plugin/po.pm:1100 +#: ../IkiWiki/Plugin/po.pm:1101 #, fuzzy msgid "failed to translate" msgstr "no he podido ejecutar el programa dot" -#: ../IkiWiki/Plugin/po.pm:1153 +#: ../IkiWiki/Plugin/po.pm:1154 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" -#: ../IkiWiki/Plugin/poll.pm:69 +#: ../IkiWiki/Plugin/poll.pm:70 msgid "vote" msgstr "Votar" -#: ../IkiWiki/Plugin/poll.pm:77 +#: ../IkiWiki/Plugin/poll.pm:78 msgid "Total votes:" msgstr "Recuento de votos:" -#: ../IkiWiki/Plugin/polygen.pm:41 +#: ../IkiWiki/Plugin/polygen.pm:42 msgid "polygen not installed" msgstr "El complemento polygen no ha sido instalado" -#: ../IkiWiki/Plugin/polygen.pm:60 +#: ../IkiWiki/Plugin/polygen.pm:61 msgid "command failed" msgstr "la ejecución del programa ha fallado" -#: ../IkiWiki/Plugin/postsparkline.pm:46 +#: ../IkiWiki/Plugin/postsparkline.pm:47 msgid "missing formula" msgstr "falta la fórmula" -#: ../IkiWiki/Plugin/postsparkline.pm:53 +#: ../IkiWiki/Plugin/postsparkline.pm:54 msgid "unknown formula" msgstr "fórmula desconocida " @@ -771,12 +779,12 @@ msgstr "a medianoche" msgid "at noon on %A" msgstr "el %A a media tarde" -#: ../IkiWiki/Plugin/progress.pm:34 +#: ../IkiWiki/Plugin/progress.pm:35 #, perl-format msgid "illegal percent value %s" msgstr "%s es un valor erróneo para un porcentaje" -#: ../IkiWiki/Plugin/progress.pm:55 +#: ../IkiWiki/Plugin/progress.pm:56 msgid "need either `percent` or `totalpages` and `donepages` parameters" msgstr "son necesarios los parámetros 'donepages' y 'percent' ó 'totalpages'" @@ -784,81 +792,81 @@ msgstr "son necesarios los parámetros 'donepages' y 'percent' ó 'totalpages'" msgid "(Diff truncated)" msgstr "(Lista de diferencias truncada)" -#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36 +#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:37 #, perl-format msgid "%s does not exist" msgstr "No existe la página %s." -#: ../IkiWiki/Plugin/remove.pm:38 +#: ../IkiWiki/Plugin/remove.pm:39 #, perl-format msgid "%s is not in the srcdir, so it cannot be deleted" msgstr "%s no está en el directorio fuente por lo que no puede ser borrada" -#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45 +#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:46 #, perl-format msgid "%s is not a file" msgstr "%s no es un archivo" -#: ../IkiWiki/Plugin/remove.pm:134 +#: ../IkiWiki/Plugin/remove.pm:135 #, perl-format msgid "confirm removal of %s" msgstr "confirme el borrado de %s" -#: ../IkiWiki/Plugin/remove.pm:171 +#: ../IkiWiki/Plugin/remove.pm:172 msgid "Please select the attachments to remove." msgstr "Por favor seleccione los adjuntos que serán borrados." -#: ../IkiWiki/Plugin/remove.pm:211 +#: ../IkiWiki/Plugin/remove.pm:212 msgid "removed" msgstr "borrado" -#: ../IkiWiki/Plugin/rename.pm:42 +#: ../IkiWiki/Plugin/rename.pm:43 #, perl-format msgid "%s is not in the srcdir, so it cannot be renamed" msgstr "%s no está en el directorio fuente por lo que no puede ser renombrado" -#: ../IkiWiki/Plugin/rename.pm:62 +#: ../IkiWiki/Plugin/rename.pm:63 msgid "no change to the file name was specified" msgstr "no se ha indicado cambio alguno en el nombre del archivo" -#: ../IkiWiki/Plugin/rename.pm:68 +#: ../IkiWiki/Plugin/rename.pm:69 #, perl-format msgid "illegal name" msgstr "nombre no válido" -#: ../IkiWiki/Plugin/rename.pm:73 +#: ../IkiWiki/Plugin/rename.pm:74 #, perl-format msgid "%s already exists" msgstr "%s ya existe" -#: ../IkiWiki/Plugin/rename.pm:79 +#: ../IkiWiki/Plugin/rename.pm:80 #, perl-format msgid "%s already exists on disk" msgstr "%s ya existe en el disco" -#: ../IkiWiki/Plugin/rename.pm:122 +#: ../IkiWiki/Plugin/rename.pm:123 #, perl-format msgid "rename %s" msgstr "cambiando de nombre %s" -#: ../IkiWiki/Plugin/rename.pm:161 +#: ../IkiWiki/Plugin/rename.pm:162 msgid "Also rename SubPages and attachments" msgstr "También cambia de nombre las subpáginas y los adjuntos" -#: ../IkiWiki/Plugin/rename.pm:248 +#: ../IkiWiki/Plugin/rename.pm:249 msgid "Only one attachment can be renamed at a time." msgstr "Únicamente un adjunto puede ser renombrado a la vez." -#: ../IkiWiki/Plugin/rename.pm:251 +#: ../IkiWiki/Plugin/rename.pm:252 msgid "Please select the attachment to rename." msgstr "Por favor, seleccione el adjunto al que cambiar el nombre." -#: ../IkiWiki/Plugin/rename.pm:348 +#: ../IkiWiki/Plugin/rename.pm:349 #, perl-format msgid "rename %s to %s" msgstr "%s cambia de nombre a %s" -#: ../IkiWiki/Plugin/rename.pm:572 +#: ../IkiWiki/Plugin/rename.pm:573 #, perl-format msgid "update for rename of %s to %s" msgstr "actualizado el cambio de nombre de %s a %s" @@ -873,28 +881,28 @@ msgstr "no puedo leer de %s: %s " msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:182 +#: ../IkiWiki/Plugin/search.pm:183 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "se necesita la instalación de Digest::SHA1 para indexar %s" -#: ../IkiWiki/Plugin/search.pm:217 +#: ../IkiWiki/Plugin/search.pm:218 msgid "search" msgstr "buscar" -#: ../IkiWiki/Plugin/shortcut.pm:31 +#: ../IkiWiki/Plugin/shortcut.pm:32 #, perl-format msgid "shortcut plugin will not work without %s" msgstr "el complemento shortcut no funcionará si no existe la página %s" -#: ../IkiWiki/Plugin/shortcut.pm:44 +#: ../IkiWiki/Plugin/shortcut.pm:45 msgid "missing name or url parameter" msgstr "shortcut necesita el parámetro 'name' ó el parámetro 'url'" #. translators: This is used to display what shortcuts are defined. #. translators: First parameter is the name of the shortcut, the second #. translators: is an URL. -#: ../IkiWiki/Plugin/shortcut.pm:54 +#: ../IkiWiki/Plugin/shortcut.pm:55 #, perl-format msgid "shortcut %s points to %s" msgstr "El atajo %s apunta a %s" @@ -903,113 +911,115 @@ msgstr "El atajo %s apunta a %s" msgid "failed to parse any smileys" msgstr "Algunos emoticonos tienen errores" -#: ../IkiWiki/Plugin/sparkline.pm:72 +#: ../IkiWiki/Plugin/sparkline.pm:73 msgid "parse error" msgstr "error de análisis " -#: ../IkiWiki/Plugin/sparkline.pm:78 +#: ../IkiWiki/Plugin/sparkline.pm:79 #, fuzzy msgid "invalid featurepoint diameter" msgstr "diámetro inválido " -#: ../IkiWiki/Plugin/sparkline.pm:88 +#: ../IkiWiki/Plugin/sparkline.pm:89 #, fuzzy msgid "invalid featurepoint location" msgstr "localización errónea " -#: ../IkiWiki/Plugin/sparkline.pm:99 +#: ../IkiWiki/Plugin/sparkline.pm:100 msgid "missing values" msgstr "faltan valores" -#: ../IkiWiki/Plugin/sparkline.pm:104 +#: ../IkiWiki/Plugin/sparkline.pm:105 #, fuzzy msgid "invalid height value" msgstr "valor incorrecto para la altura" -#: ../IkiWiki/Plugin/sparkline.pm:111 +#: ../IkiWiki/Plugin/sparkline.pm:112 msgid "missing width parameter" msgstr "falta el parámetro que indica el ancho" -#: ../IkiWiki/Plugin/sparkline.pm:115 +#: ../IkiWiki/Plugin/sparkline.pm:116 #, fuzzy msgid "invalid width value" msgstr "valor incorrecto para el ancho" -#: ../IkiWiki/Plugin/sparkline.pm:153 +#: ../IkiWiki/Plugin/sparkline.pm:154 msgid "failed to run php" msgstr "error fatal invocando el programa php" -#: ../IkiWiki/Plugin/table.pm:31 +#: ../IkiWiki/Plugin/table.pm:32 msgid "cannot find file" msgstr "no puedo encontrar el archivo" -#: ../IkiWiki/Plugin/table.pm:87 +#: ../IkiWiki/Plugin/table.pm:88 msgid "unknown data format" msgstr "formato de datos desconocido" -#: ../IkiWiki/Plugin/table.pm:95 +#: ../IkiWiki/Plugin/table.pm:96 msgid "empty data" msgstr "sin datos" -#: ../IkiWiki/Plugin/table.pm:114 +#: ../IkiWiki/Plugin/table.pm:115 msgid "Direct data download" msgstr "Enlace directo para descarga" -#: ../IkiWiki/Plugin/table.pm:148 +#: ../IkiWiki/Plugin/table.pm:149 #, perl-format msgid "parse fail at line %d: %s" msgstr "error de análisis en la línea %d: %s" -#: ../IkiWiki/Plugin/template.pm:29 +#: ../IkiWiki/Plugin/template.pm:34 msgid "missing id parameter" msgstr "falta el parámetro \"id\"" -#: ../IkiWiki/Plugin/template.pm:36 +#: ../IkiWiki/Plugin/template.pm:41 #, perl-format msgid "template %s not found" msgstr "no he encontrado la plantilla %s" -#: ../IkiWiki/Plugin/template.pm:55 +#: ../IkiWiki/Plugin/template.pm:60 msgid "failed to process:" msgstr "se ha producido un error fatal mientras procesaba la plantilla:" -#: ../IkiWiki/Plugin/teximg.pm:70 +#: ../IkiWiki/Plugin/teximg.pm:71 msgid "missing tex code" msgstr "falta el código tex" -#: ../IkiWiki/Plugin/teximg.pm:122 +#: ../IkiWiki/Plugin/teximg.pm:123 msgid "failed to generate image from code" msgstr "no he podido crear la imagen desde el código" -#: ../IkiWiki/Plugin/websetup.pm:89 -msgid "plugin" +#: ../IkiWiki/Plugin/websetup.pm:91 +#, fuzzy, perl-format +msgid "%s plugin:" msgstr "complemento" -#: ../IkiWiki/Plugin/websetup.pm:108 +#: ../IkiWiki/Plugin/websetup.pm:107 +#, fuzzy, perl-format +msgid "%s plugins" +msgstr "complementos" + +#: ../IkiWiki/Plugin/websetup.pm:121 #, perl-format msgid "enable %s?" msgstr "¿ activar %s ?" -#: ../IkiWiki/Plugin/websetup.pm:244 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "setup file for this wiki is not known" msgstr "El archivo de configuración para este wiki es desconocido" -#: ../IkiWiki/Plugin/websetup.pm:260 +#: ../IkiWiki/Plugin/websetup.pm:276 msgid "main" msgstr "principal" -#: ../IkiWiki/Plugin/websetup.pm:261 -msgid "plugins" -msgstr "complementos" - -#: ../IkiWiki/Plugin/websetup.pm:404 +#: ../IkiWiki/Plugin/websetup.pm:419 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" "Los cambios en la configuración que se muestran más abajo precisan una " "reconstrucción del wiki para tener efecto." -#: ../IkiWiki/Plugin/websetup.pm:408 +#: ../IkiWiki/Plugin/websetup.pm:423 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." @@ -1017,7 +1027,7 @@ msgstr "" "Para que los cambios en la configuración mostrados más abajo tengan efecto, " "es posible que necesite reconstruir el wiki." -#: ../IkiWiki/Plugin/websetup.pm:445 +#: ../IkiWiki/Plugin/websetup.pm:460 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1097,20 +1107,20 @@ msgstr "ikiwiki: no puedo convertir la página %s" msgid "cannot read %s: %s" msgstr "no puedo leer el archivo %s: %s" -#: ../IkiWiki/Setup/Automator.pm:33 +#: ../IkiWiki/Setup/Automator.pm:34 msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "debe escribir un nombre wiki (que contiene caracteres alfanuméricos)" -#: ../IkiWiki/Setup/Automator.pm:79 +#: ../IkiWiki/Setup/Automator.pm:80 #, perl-format msgid "unsupported revision control system %s" msgstr "el sistema de control de versiones %s no está soportado" -#: ../IkiWiki/Setup/Automator.pm:105 +#: ../IkiWiki/Setup/Automator.pm:106 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "no he podido crear un repositorio con el programa ikiwiki-makerepo" -#: ../IkiWiki/Setup/Automator.pm:123 +#: ../IkiWiki/Setup/Automator.pm:124 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1185,29 +1195,29 @@ msgstr "no puedo emplear varios complementos rcs" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "no he podido cargar el complemento externo %s necesario para %s" -#: ../IkiWiki.pm:1263 +#: ../IkiWiki.pm:1255 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "" "se ha detectado en la página %s un bucle de preprocesado en la iteración " "número %i" -#: ../IkiWiki.pm:1862 +#: ../IkiWiki.pm:1854 msgid "yes" msgstr "si" -#: ../IkiWiki.pm:2005 +#: ../IkiWiki.pm:1997 msgid "Sort::Naturally needed for title_natural sort" msgstr "" "Se necesita el módulo Sort::Naturally para el tipo de ordenación " "title_natural" -#: ../IkiWiki.pm:2016 +#: ../IkiWiki.pm:2008 #, perl-format msgid "unknown sort type %s" msgstr "no conozco este tipo de ordenación %s" -#: ../IkiWiki.pm:2035 +#: ../IkiWiki.pm:2027 #, perl-format msgid "cannot match pages: %s" msgstr "no encuentro páginas coincidentes: %s" diff --git a/po/fr.po b/po/fr.po index 5ba71d6cf..573168d51 100644 --- a/po/fr.po +++ b/po/fr.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.141\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-22 16:04-0500\n" +"POT-Creation-Date: 2010-02-12 16:48-0500\n" "PO-Revision-Date: 2009-08-17 10:06+0200\n" "Last-Translator: Philippe Batailler \n" "Language-Team: French \n" @@ -57,7 +57,7 @@ msgstr "Les préférences ont été enregistrées." msgid "You are banned." msgstr "Vous avez été banni." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 msgid "Error" msgstr "Erreur" @@ -147,32 +147,32 @@ msgstr "Terminé" msgid "Must specify %s" msgstr "Vous devez spécifier %s" -#: ../IkiWiki/Plugin/amazon_s3.pm:136 +#: ../IkiWiki/Plugin/amazon_s3.pm:140 msgid "Failed to create S3 bucket: " msgstr "Impossible de créer un compartiment S3 :" -#: ../IkiWiki/Plugin/amazon_s3.pm:221 +#: ../IkiWiki/Plugin/amazon_s3.pm:225 msgid "Failed to save file to S3: " msgstr "Impossible de sauvegarder le fichier dans le compartiment S3 :" -#: ../IkiWiki/Plugin/amazon_s3.pm:243 +#: ../IkiWiki/Plugin/amazon_s3.pm:247 msgid "Failed to delete file from S3: " msgstr "Échec lors de la suppression du fichier sur S3 :" -#: ../IkiWiki/Plugin/attachment.pm:49 +#: ../IkiWiki/Plugin/attachment.pm:50 #, perl-format msgid "there is already a page named %s" msgstr "Il existe déjà une page nommée %s" -#: ../IkiWiki/Plugin/attachment.pm:65 +#: ../IkiWiki/Plugin/attachment.pm:66 msgid "prohibited by allowed_attachments" msgstr "Action interdite par allowed_attachments" -#: ../IkiWiki/Plugin/attachment.pm:140 +#: ../IkiWiki/Plugin/attachment.pm:141 msgid "bad attachment filename" msgstr "Nom de la pièce jointe incorrect" -#: ../IkiWiki/Plugin/attachment.pm:182 +#: ../IkiWiki/Plugin/attachment.pm:183 msgid "attachment upload" msgstr "Envoi de la pièce jointe" @@ -180,7 +180,7 @@ msgstr "Envoi de la pièce jointe" msgid "automatic index generation" msgstr "Génération de l'index automatique" -#: ../IkiWiki/Plugin/blogspam.pm:108 +#: ../IkiWiki/Plugin/blogspam.pm:109 msgid "" "Sorry, but that looks like spam to blogspam: " @@ -197,12 +197,12 @@ msgstr "%s sur %s" msgid "There are no broken links!" msgstr "Aucun lien cassé !" -#: ../IkiWiki/Plugin/comments.pm:124 ../IkiWiki/Plugin/format.pm:38 +#: ../IkiWiki/Plugin/comments.pm:125 ../IkiWiki/Plugin/format.pm:48 #, perl-format msgid "unsupported page format %s" msgstr "Format de page non reconnu %s" -#: ../IkiWiki/Plugin/comments.pm:129 +#: ../IkiWiki/Plugin/comments.pm:130 msgid "comment must have content" msgstr "Un commentaire doit avoir un contenu." @@ -210,7 +210,7 @@ msgstr "Un commentaire doit avoir un contenu." msgid "Anonymous" msgstr "Anonyme" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:97 +#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "Nom de page incorrect" @@ -246,7 +246,7 @@ msgstr "Commentaire ajouté" msgid "Added a comment: %s" msgstr "Commentaire ajouté : %s" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256 msgid "you are not logged in as an admin" msgstr "Vous n'êtes pas authentifié comme administrateur" @@ -262,127 +262,127 @@ msgstr "modération du commentaire" msgid "Comments" msgstr "Commentaires" -#: ../IkiWiki/Plugin/conditional.pm:27 ../IkiWiki/Plugin/cutpaste.pm:30 -#: ../IkiWiki/Plugin/cutpaste.pm:45 ../IkiWiki/Plugin/cutpaste.pm:61 +#: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 +#: ../IkiWiki/Plugin/cutpaste.pm:46 ../IkiWiki/Plugin/cutpaste.pm:62 #: ../IkiWiki/Plugin/testpagespec.pm:26 #, perl-format msgid "%s parameter is required" msgstr "Le paramètre %s est obligatoire" -#: ../IkiWiki/Plugin/cutpaste.pm:66 +#: ../IkiWiki/Plugin/cutpaste.pm:67 msgid "no text was copied in this page" msgstr "Aucun texte n'a été copié dans cette page" -#: ../IkiWiki/Plugin/cutpaste.pm:69 +#: ../IkiWiki/Plugin/cutpaste.pm:70 #, perl-format msgid "no text was copied in this page with id %s" msgstr "Aucun texte n'a été copié dans cette page avec l'identifiant %s" -#: ../IkiWiki/Plugin/editpage.pm:40 +#: ../IkiWiki/Plugin/editpage.pm:41 #, perl-format msgid "removing old preview %s" msgstr "Suppression de l'ancienne prévisualisation %s" -#: ../IkiWiki/Plugin/editpage.pm:113 +#: ../IkiWiki/Plugin/editpage.pm:114 #, perl-format msgid "%s is not an editable page" msgstr "%s n'est pas une page éditable" -#: ../IkiWiki/Plugin/editpage.pm:292 +#: ../IkiWiki/Plugin/editpage.pm:296 #, perl-format msgid "creating %s" msgstr "Création de %s" -#: ../IkiWiki/Plugin/editpage.pm:310 ../IkiWiki/Plugin/editpage.pm:329 -#: ../IkiWiki/Plugin/editpage.pm:339 ../IkiWiki/Plugin/editpage.pm:383 -#: ../IkiWiki/Plugin/editpage.pm:422 +#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 +#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 +#: ../IkiWiki/Plugin/editpage.pm:426 #, perl-format msgid "editing %s" msgstr "Édition de %s" -#: ../IkiWiki/Plugin/edittemplate.pm:51 +#: ../IkiWiki/Plugin/edittemplate.pm:52 msgid "template not specified" msgstr "modèle (« template ») non indiqué" -#: ../IkiWiki/Plugin/edittemplate.pm:54 +#: ../IkiWiki/Plugin/edittemplate.pm:55 msgid "match not specified" msgstr "correspondance non indiquée" -#: ../IkiWiki/Plugin/edittemplate.pm:63 +#: ../IkiWiki/Plugin/edittemplate.pm:64 #, perl-format msgid "edittemplate %s registered for %s" msgstr "edittemplate %s enregistré pour %s" -#: ../IkiWiki/Plugin/edittemplate.pm:137 +#: ../IkiWiki/Plugin/edittemplate.pm:138 msgid "failed to process" msgstr "Échec du traitement" -#: ../IkiWiki/Plugin/format.pm:20 +#: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" msgstr "le format et le texte doivent être indiqués" -#: ../IkiWiki/Plugin/fortune.pm:27 +#: ../IkiWiki/Plugin/fortune.pm:28 msgid "fortune failed" msgstr "Échec du lancement de « fortune »" -#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 +#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 msgid "missing page" msgstr "Page manquante" -#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 +#: ../IkiWiki/Plugin/getsource.pm:66 ../IkiWiki/Plugin/goto.pm:59 #, perl-format msgid "The page %s does not exist." msgstr "La page %s n'existe pas." -#: ../IkiWiki/Plugin/getsource.pm:74 +#: ../IkiWiki/Plugin/getsource.pm:75 msgid "not a page" msgstr "Ce n'est pas une page." -#: ../IkiWiki/Plugin/getsource.pm:76 +#: ../IkiWiki/Plugin/getsource.pm:77 #, perl-format msgid "%s is an attachment, not a page." msgstr "%s est une pièce jointe, pas une page." -#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 +#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "Vous n'êtes pas autorisé à modifier %s" -#: ../IkiWiki/Plugin/git.pm:697 +#: ../IkiWiki/Plugin/git.pm:698 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "Vous ne pouvez pas modifier un fichier dont le mode est %s" -#: ../IkiWiki/Plugin/git.pm:701 +#: ../IkiWiki/Plugin/git.pm:702 msgid "you are not allowed to change file modes" msgstr "Vous n'êtes pas autorisé à modifier le mode des fichiers" -#: ../IkiWiki/Plugin/google.pm:25 ../IkiWiki/Plugin/po.pm:131 -#: ../IkiWiki/Plugin/search.pm:36 +#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/po.pm:132 +#: ../IkiWiki/Plugin/search.pm:37 #, perl-format msgid "Must specify %s when using the %s plugin" msgstr "Vous devez indiquer %s lors de l'utilisation du greffon %s." -#: ../IkiWiki/Plugin/graphviz.pm:67 +#: ../IkiWiki/Plugin/graphviz.pm:68 msgid "failed to run graphviz" msgstr "Échec du lancement de graphviz" -#: ../IkiWiki/Plugin/graphviz.pm:94 +#: ../IkiWiki/Plugin/graphviz.pm:95 msgid "prog not a valid graphviz program" msgstr "Ce programme n'est pas un programme graphviz valable" -#: ../IkiWiki/Plugin/highlight.pm:47 +#: ../IkiWiki/Plugin/highlight.pm:48 #, perl-format msgid "tohighlight contains unknown file type '%s'" msgstr "tohighlight contient un type de fichier inconnu : '%s'" -#: ../IkiWiki/Plugin/highlight.pm:58 +#: ../IkiWiki/Plugin/highlight.pm:59 #, perl-format msgid "Source code: %s" msgstr "Code source : %s" -#: ../IkiWiki/Plugin/highlight.pm:123 +#: ../IkiWiki/Plugin/highlight.pm:124 msgid "" "warning: highlight perl module not available; falling back to pass through" msgstr "" @@ -394,108 +394,108 @@ msgstr "" msgid "htmltidy failed to parse this html" msgstr "Aucun smiley n'a pu être analysé" -#: ../IkiWiki/Plugin/img.pm:64 +#: ../IkiWiki/Plugin/img.pm:69 msgid "Image::Magick is not installed" msgstr "Image::Magick n'est pas installé" -#: ../IkiWiki/Plugin/img.pm:68 ../IkiWiki/Plugin/img.pm:112 +#: ../IkiWiki/Plugin/img.pm:73 ../IkiWiki/Plugin/img.pm:117 #, perl-format msgid "failed to read %s: %s" msgstr "Échec de la lecture de %s : %s" -#: ../IkiWiki/Plugin/img.pm:74 +#: ../IkiWiki/Plugin/img.pm:79 #, perl-format msgid "wrong size format \"%s\" (should be WxH)" msgstr "Format de la taille incorrect \"%s\", (devrait être LxH)" -#: ../IkiWiki/Plugin/img.pm:120 +#: ../IkiWiki/Plugin/img.pm:125 #, perl-format msgid "failed to resize: %s" msgstr "Échec du redimensionnement : %s" -#: ../IkiWiki/Plugin/img.pm:140 +#: ../IkiWiki/Plugin/img.pm:145 #, perl-format msgid "failed to determine size of image %s" msgstr "Échec de la détermination de la taille de l'image : %s" -#: ../IkiWiki/Plugin/inline.pm:92 +#: ../IkiWiki/Plugin/inline.pm:93 msgid "Must specify url to wiki with --url when using --rss or --atom" msgstr "" "Vous devez indiquer l'URL du wiki par --url lors de l'utilisation de --rss " "ou --atom" -#: ../IkiWiki/Plugin/inline.pm:138 +#: ../IkiWiki/Plugin/inline.pm:139 msgid "page editing not allowed" msgstr "Modification de page interdite" -#: ../IkiWiki/Plugin/inline.pm:155 +#: ../IkiWiki/Plugin/inline.pm:156 msgid "missing pages parameter" msgstr "Paramètre « pages » manquant" -#: ../IkiWiki/Plugin/inline.pm:191 +#: ../IkiWiki/Plugin/inline.pm:192 #, perl-format msgid "the %s and %s parameters cannot be used together" msgstr "Les paramètres %s et %s ne peuvent être utilisés ensemble." -#: ../IkiWiki/Plugin/inline.pm:312 +#: ../IkiWiki/Plugin/inline.pm:313 msgid "Add a new post titled:" msgstr "Ajouter un nouvel article dont le titre est :" -#: ../IkiWiki/Plugin/inline.pm:332 +#: ../IkiWiki/Plugin/inline.pm:333 #, perl-format msgid "nonexistant template %s" msgstr "Le modèle de page %s n'existe pas" -#: ../IkiWiki/Plugin/inline.pm:624 +#: ../IkiWiki/Plugin/inline.pm:625 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client introuvable, pas de réponse au ping" -#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 -#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 +#: ../IkiWiki/Plugin/linkmap.pm:81 ../IkiWiki/Plugin/linkmap.pm:88 +#: ../IkiWiki/Plugin/linkmap.pm:92 ../IkiWiki/Plugin/linkmap.pm:95 msgid "failed to run dot" msgstr "Échec du lancement de dot" -#: ../IkiWiki/Plugin/linkmap.pm:84 +#: ../IkiWiki/Plugin/linkmap.pm:85 msgid "linkmap" msgstr "" -#: ../IkiWiki/Plugin/lockedit.pm:48 +#: ../IkiWiki/Plugin/lockedit.pm:49 #, perl-format msgid "%s is locked and cannot be edited" msgstr "%s est verrouillé et ne peut être modifié" -#: ../IkiWiki/Plugin/mdwn.pm:44 +#: ../IkiWiki/Plugin/mdwn.pm:45 msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed" msgstr "mulitmarkdown est activé mais Text::Multimarkdown n'est pas installé" -#: ../IkiWiki/Plugin/mdwn.pm:69 +#: ../IkiWiki/Plugin/mdwn.pm:70 #, perl-format msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" "Échec du chargement du module Perl Markdown.pm (%s) ou de /usr/bin/markdown " "(%s)" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:162 msgid "stylesheet not found" msgstr "Feuille de style introuvable " -#: ../IkiWiki/Plugin/meta.pm:199 +#: ../IkiWiki/Plugin/meta.pm:200 msgid "redir page not found" msgstr "Page de redirection introuvable" -#: ../IkiWiki/Plugin/meta.pm:213 +#: ../IkiWiki/Plugin/meta.pm:214 msgid "redir cycle is not allowed" msgstr "Redirection cyclique non autorisée" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Miroirs" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirror" msgstr "Miroir" -#: ../IkiWiki/Plugin/moderatedcomments.pm:41 +#: ../IkiWiki/Plugin/moderatedcomments.pm:42 #, fuzzy msgid "comment needs moderation" msgstr "modération du commentaire" @@ -504,19 +504,19 @@ msgstr "modération du commentaire" msgid "more" msgstr "lire la suite" -#: ../IkiWiki/Plugin/norcs.pm:65 +#: ../IkiWiki/Plugin/norcs.pm:66 msgid "getctime not implemented" msgstr "getctime n'est pas implémenté" -#: ../IkiWiki/Plugin/openid.pm:61 +#: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "S'identifier en tant que" -#: ../IkiWiki/Plugin/openid.pm:64 +#: ../IkiWiki/Plugin/openid.pm:65 msgid "Get an OpenID" msgstr "Obtenir un compte OpenID" -#: ../IkiWiki/Plugin/orphans.pm:55 +#: ../IkiWiki/Plugin/orphans.pm:56 msgid "All pages have other pages linking to them." msgstr "Toutes les pages sont liées à d'autres pages." @@ -524,35 +524,43 @@ msgstr "Toutes les pages sont liées à d'autres pages." msgid "bad or missing template" msgstr "Modèle de page incorrect ou manquant" -#: ../IkiWiki/Plugin/passwordauth.pm:248 +#: ../IkiWiki/Plugin/passwordauth.pm:229 +msgid "Your user page: " +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:236 +msgid "Create your user page" +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:264 msgid "Account creation successful. Now you can Login." msgstr "Le compte a été créé. Vous pouvez maintenant vous identifier." -#: ../IkiWiki/Plugin/passwordauth.pm:251 +#: ../IkiWiki/Plugin/passwordauth.pm:267 msgid "Error creating account." msgstr "Erreur lors de la création du compte." -#: ../IkiWiki/Plugin/passwordauth.pm:258 +#: ../IkiWiki/Plugin/passwordauth.pm:274 msgid "No email address, so cannot email password reset instructions." msgstr "" "Aucune adresse indiquée. Impossible d'envoyer les instructions pour " "réinitialiser le mot de passe." -#: ../IkiWiki/Plugin/passwordauth.pm:292 +#: ../IkiWiki/Plugin/passwordauth.pm:308 msgid "Failed to send mail" msgstr "Impossible d'envoyer un courriel" -#: ../IkiWiki/Plugin/passwordauth.pm:294 +#: ../IkiWiki/Plugin/passwordauth.pm:310 msgid "You have been mailed password reset instructions." msgstr "" "Vous avez reçu un message contenant les instructions pour réinitialiser le " "mot de passe" -#: ../IkiWiki/Plugin/passwordauth.pm:329 +#: ../IkiWiki/Plugin/passwordauth.pm:345 msgid "incorrect password reset url" msgstr "Adresse pour la réinitialisation du mot de passe incorrecte" -#: ../IkiWiki/Plugin/passwordauth.pm:332 +#: ../IkiWiki/Plugin/passwordauth.pm:348 msgid "password reset denied" msgstr "réinitialisation du mot de passe refusée" @@ -584,12 +592,12 @@ msgstr "" "Note : ancienne version de po4a détectée. Il est recommandé d'installer la " "version 0.35." -#: ../IkiWiki/Plugin/po.pm:138 +#: ../IkiWiki/Plugin/po.pm:139 #, perl-format msgid "%s is not a valid language code" msgstr "%s n'est pas un code de langue valable" -#: ../IkiWiki/Plugin/po.pm:150 +#: ../IkiWiki/Plugin/po.pm:151 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" @@ -597,7 +605,7 @@ msgstr "" "%s n'est pas une valeur correcte pour po_link_to, retour à la valeur par " "défaut." -#: ../IkiWiki/Plugin/po.pm:155 +#: ../IkiWiki/Plugin/po.pm:156 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" @@ -605,23 +613,23 @@ msgstr "" "po_link_to=negotiated nécessite que usedirs soit activé, retour à " "po_link_to=default." -#: ../IkiWiki/Plugin/po.pm:385 +#: ../IkiWiki/Plugin/po.pm:386 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" "Reconstruction de toutes les pages pour corriger les titres (greffon " "« meta »)." -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 #, perl-format msgid "building %s" msgstr "construction de %s" -#: ../IkiWiki/Plugin/po.pm:427 +#: ../IkiWiki/Plugin/po.pm:428 msgid "updated PO files" msgstr "Fichiers PO mis à jour." -#: ../IkiWiki/Plugin/po.pm:451 +#: ../IkiWiki/Plugin/po.pm:452 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." @@ -629,7 +637,7 @@ msgstr "" "Impossible de supprimer cette traduction. Si la page maître est supprimée, " "alors ses traductions seront supprimées." -#: ../IkiWiki/Plugin/po.pm:471 +#: ../IkiWiki/Plugin/po.pm:472 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." @@ -637,76 +645,76 @@ msgstr "" "Impossible de renommer cette traduction. Si la page maître est renommée, " "alors ses traductions pourront être renommées." -#: ../IkiWiki/Plugin/po.pm:870 +#: ../IkiWiki/Plugin/po.pm:871 #, perl-format msgid "POT file (%s) does not exist" msgstr "Le fichier POT %s n'existe pas." -#: ../IkiWiki/Plugin/po.pm:884 +#: ../IkiWiki/Plugin/po.pm:885 #, perl-format msgid "failed to copy underlay PO file to %s" msgstr "Impossible de copier le fichier PO underlay dans %s" -#: ../IkiWiki/Plugin/po.pm:893 +#: ../IkiWiki/Plugin/po.pm:894 #, perl-format msgid "failed to update %s" msgstr "Impossible de mettre à jour %s" -#: ../IkiWiki/Plugin/po.pm:899 +#: ../IkiWiki/Plugin/po.pm:900 #, perl-format msgid "failed to copy the POT file to %s" msgstr "Impossible de copier le fichier POT dans %s" -#: ../IkiWiki/Plugin/po.pm:935 +#: ../IkiWiki/Plugin/po.pm:936 msgid "N/A" msgstr "N/A" -#: ../IkiWiki/Plugin/po.pm:948 +#: ../IkiWiki/Plugin/po.pm:949 #, perl-format msgid "failed to translate %s" msgstr "Impossible de traduire %s" -#: ../IkiWiki/Plugin/po.pm:1032 +#: ../IkiWiki/Plugin/po.pm:1033 msgid "removed obsolete PO files" msgstr "Fichiers PO obsolètes supprimés." -#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 -#: ../IkiWiki/Plugin/po.pm:1141 +#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 +#: ../IkiWiki/Plugin/po.pm:1142 #, perl-format msgid "failed to write %s" msgstr "Impossible de modifier %s" -#: ../IkiWiki/Plugin/po.pm:1100 +#: ../IkiWiki/Plugin/po.pm:1101 msgid "failed to translate" msgstr "Impossible de traduire" -#: ../IkiWiki/Plugin/po.pm:1153 +#: ../IkiWiki/Plugin/po.pm:1154 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" "Données gettext incorrectes, retour à la page précédente pour la poursuite " "des modifications." -#: ../IkiWiki/Plugin/poll.pm:69 +#: ../IkiWiki/Plugin/poll.pm:70 msgid "vote" msgstr "Voter" -#: ../IkiWiki/Plugin/poll.pm:77 +#: ../IkiWiki/Plugin/poll.pm:78 msgid "Total votes:" msgstr "Total des suffrages :" -#: ../IkiWiki/Plugin/polygen.pm:41 +#: ../IkiWiki/Plugin/polygen.pm:42 msgid "polygen not installed" msgstr "polygen n'est pas installé" -#: ../IkiWiki/Plugin/polygen.pm:60 +#: ../IkiWiki/Plugin/polygen.pm:61 msgid "command failed" msgstr "Échec de la commande" -#: ../IkiWiki/Plugin/postsparkline.pm:46 +#: ../IkiWiki/Plugin/postsparkline.pm:47 msgid "missing formula" msgstr "formule manquante" -#: ../IkiWiki/Plugin/postsparkline.pm:53 +#: ../IkiWiki/Plugin/postsparkline.pm:54 msgid "unknown formula" msgstr "formule inconnue" @@ -774,12 +782,12 @@ msgstr "à minuit" msgid "at noon on %A" msgstr "%A, à midi" -#: ../IkiWiki/Plugin/progress.pm:34 +#: ../IkiWiki/Plugin/progress.pm:35 #, perl-format msgid "illegal percent value %s" msgstr "pourcentage %s illégal" -#: ../IkiWiki/Plugin/progress.pm:55 +#: ../IkiWiki/Plugin/progress.pm:56 msgid "need either `percent` or `totalpages` and `donepages` parameters" msgstr "" "L'un des paramètres « percent », « totalpages » ou « donepages » est nécessaire." @@ -788,81 +796,81 @@ msgstr "" msgid "(Diff truncated)" msgstr "(fichier de différences tronqué)" -#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36 +#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:37 #, perl-format msgid "%s does not exist" msgstr "%s n'existe pas" -#: ../IkiWiki/Plugin/remove.pm:38 +#: ../IkiWiki/Plugin/remove.pm:39 #, perl-format msgid "%s is not in the srcdir, so it cannot be deleted" msgstr "%s n'est pas dans srcdir et ne peut donc pas être supprimé" -#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45 +#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:46 #, perl-format msgid "%s is not a file" msgstr "%s n'est pas un fichier" -#: ../IkiWiki/Plugin/remove.pm:134 +#: ../IkiWiki/Plugin/remove.pm:135 #, perl-format msgid "confirm removal of %s" msgstr "Suppression de %s confirmée" -#: ../IkiWiki/Plugin/remove.pm:171 +#: ../IkiWiki/Plugin/remove.pm:172 msgid "Please select the attachments to remove." msgstr "Veuillez choisir la pièce jointe à supprimer" -#: ../IkiWiki/Plugin/remove.pm:211 +#: ../IkiWiki/Plugin/remove.pm:212 msgid "removed" msgstr "supprimé" -#: ../IkiWiki/Plugin/rename.pm:42 +#: ../IkiWiki/Plugin/rename.pm:43 #, perl-format msgid "%s is not in the srcdir, so it cannot be renamed" msgstr "%s n'est pas dans srcdir. Impossible de le renommer" -#: ../IkiWiki/Plugin/rename.pm:62 +#: ../IkiWiki/Plugin/rename.pm:63 msgid "no change to the file name was specified" msgstr "Aucun changement dans le nom du fichier n'a été spécifié" -#: ../IkiWiki/Plugin/rename.pm:68 +#: ../IkiWiki/Plugin/rename.pm:69 #, perl-format msgid "illegal name" msgstr "Appellation interdite" -#: ../IkiWiki/Plugin/rename.pm:73 +#: ../IkiWiki/Plugin/rename.pm:74 #, perl-format msgid "%s already exists" msgstr "%s existe déjà" -#: ../IkiWiki/Plugin/rename.pm:79 +#: ../IkiWiki/Plugin/rename.pm:80 #, perl-format msgid "%s already exists on disk" msgstr "%s existe déjà sur le disque" -#: ../IkiWiki/Plugin/rename.pm:122 +#: ../IkiWiki/Plugin/rename.pm:123 #, perl-format msgid "rename %s" msgstr "%s renommé" -#: ../IkiWiki/Plugin/rename.pm:161 +#: ../IkiWiki/Plugin/rename.pm:162 msgid "Also rename SubPages and attachments" msgstr "« SubPages » et attachements renommés." -#: ../IkiWiki/Plugin/rename.pm:248 +#: ../IkiWiki/Plugin/rename.pm:249 msgid "Only one attachment can be renamed at a time." msgstr "Modification de pièce jointe : une seule à la fois" -#: ../IkiWiki/Plugin/rename.pm:251 +#: ../IkiWiki/Plugin/rename.pm:252 msgid "Please select the attachment to rename." msgstr "Veuillez sélectionner la pièce jointe à renommer" -#: ../IkiWiki/Plugin/rename.pm:348 +#: ../IkiWiki/Plugin/rename.pm:349 #, perl-format msgid "rename %s to %s" msgstr "Renomme %s en %s" -#: ../IkiWiki/Plugin/rename.pm:572 +#: ../IkiWiki/Plugin/rename.pm:573 #, perl-format msgid "update for rename of %s to %s" msgstr "mise à jour, suite au changement de %s en %s" @@ -877,28 +885,28 @@ msgstr "Impossible de lire %s" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:182 +#: ../IkiWiki/Plugin/search.pm:183 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "Digest::SHA1 est nécessaire pour indexer %s" -#: ../IkiWiki/Plugin/search.pm:217 +#: ../IkiWiki/Plugin/search.pm:218 msgid "search" msgstr "recherche" -#: ../IkiWiki/Plugin/shortcut.pm:31 +#: ../IkiWiki/Plugin/shortcut.pm:32 #, perl-format msgid "shortcut plugin will not work without %s" msgstr "Le greffon « shortcut » ne fonctionnera pas sans %s" -#: ../IkiWiki/Plugin/shortcut.pm:44 +#: ../IkiWiki/Plugin/shortcut.pm:45 msgid "missing name or url parameter" msgstr "Il manque le paramètre nom ou URL." #. translators: This is used to display what shortcuts are defined. #. translators: First parameter is the name of the shortcut, the second #. translators: is an URL. -#: ../IkiWiki/Plugin/shortcut.pm:54 +#: ../IkiWiki/Plugin/shortcut.pm:55 #, perl-format msgid "shortcut %s points to %s" msgstr "Le raccourci %s pointe vers %s" @@ -907,109 +915,111 @@ msgstr "Le raccourci %s pointe vers %s" msgid "failed to parse any smileys" msgstr "Aucun smiley n'a pu être analysé" -#: ../IkiWiki/Plugin/sparkline.pm:72 +#: ../IkiWiki/Plugin/sparkline.pm:73 msgid "parse error" msgstr "Erreur d'analyse" -#: ../IkiWiki/Plugin/sparkline.pm:78 +#: ../IkiWiki/Plugin/sparkline.pm:79 msgid "invalid featurepoint diameter" msgstr "Diamètre du point incorrect" -#: ../IkiWiki/Plugin/sparkline.pm:88 +#: ../IkiWiki/Plugin/sparkline.pm:89 msgid "invalid featurepoint location" msgstr "Emplacement du point incorrect" -#: ../IkiWiki/Plugin/sparkline.pm:99 +#: ../IkiWiki/Plugin/sparkline.pm:100 msgid "missing values" msgstr "Il manque des valeurs" -#: ../IkiWiki/Plugin/sparkline.pm:104 +#: ../IkiWiki/Plugin/sparkline.pm:105 msgid "invalid height value" msgstr "Hauteur incorrecte" -#: ../IkiWiki/Plugin/sparkline.pm:111 +#: ../IkiWiki/Plugin/sparkline.pm:112 msgid "missing width parameter" msgstr "Le paramètre largeur manque" -#: ../IkiWiki/Plugin/sparkline.pm:115 +#: ../IkiWiki/Plugin/sparkline.pm:116 msgid "invalid width value" msgstr "Largeur incorrecte" -#: ../IkiWiki/Plugin/sparkline.pm:153 +#: ../IkiWiki/Plugin/sparkline.pm:154 msgid "failed to run php" msgstr "Échec du lancement de php" -#: ../IkiWiki/Plugin/table.pm:31 +#: ../IkiWiki/Plugin/table.pm:32 msgid "cannot find file" msgstr "Fichier introuvable" -#: ../IkiWiki/Plugin/table.pm:87 +#: ../IkiWiki/Plugin/table.pm:88 msgid "unknown data format" msgstr "Format de données inconnu" -#: ../IkiWiki/Plugin/table.pm:95 +#: ../IkiWiki/Plugin/table.pm:96 msgid "empty data" msgstr "Pas de données" -#: ../IkiWiki/Plugin/table.pm:114 +#: ../IkiWiki/Plugin/table.pm:115 msgid "Direct data download" msgstr "Téléchargement direct des données" -#: ../IkiWiki/Plugin/table.pm:148 +#: ../IkiWiki/Plugin/table.pm:149 #, perl-format msgid "parse fail at line %d: %s" msgstr "Erreur d'analyse à la ligne %d : %s" -#: ../IkiWiki/Plugin/template.pm:29 +#: ../IkiWiki/Plugin/template.pm:34 msgid "missing id parameter" msgstr "Paramètre d'identification manquant" -#: ../IkiWiki/Plugin/template.pm:36 +#: ../IkiWiki/Plugin/template.pm:41 #, perl-format msgid "template %s not found" msgstr "Modèle de page %s introuvable" -#: ../IkiWiki/Plugin/template.pm:55 +#: ../IkiWiki/Plugin/template.pm:60 msgid "failed to process:" msgstr "Échec du traitement :" -#: ../IkiWiki/Plugin/teximg.pm:70 +#: ../IkiWiki/Plugin/teximg.pm:71 msgid "missing tex code" msgstr "Il manque le code TeX" -#: ../IkiWiki/Plugin/teximg.pm:122 +#: ../IkiWiki/Plugin/teximg.pm:123 msgid "failed to generate image from code" msgstr "Échec de la création de l'image à partir du code" -#: ../IkiWiki/Plugin/websetup.pm:89 -msgid "plugin" +#: ../IkiWiki/Plugin/websetup.pm:91 +#, fuzzy, perl-format +msgid "%s plugin:" msgstr "greffon" -#: ../IkiWiki/Plugin/websetup.pm:108 +#: ../IkiWiki/Plugin/websetup.pm:107 +#, fuzzy, perl-format +msgid "%s plugins" +msgstr "Greffons" + +#: ../IkiWiki/Plugin/websetup.pm:121 #, perl-format msgid "enable %s?" msgstr "activer %s ?" -#: ../IkiWiki/Plugin/websetup.pm:244 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "setup file for this wiki is not known" msgstr "Le fichier de configuration de ce wiki n'est pas connu" -#: ../IkiWiki/Plugin/websetup.pm:260 +#: ../IkiWiki/Plugin/websetup.pm:276 msgid "main" msgstr "Partie principale" -#: ../IkiWiki/Plugin/websetup.pm:261 -msgid "plugins" -msgstr "Greffons" - -#: ../IkiWiki/Plugin/websetup.pm:404 +#: ../IkiWiki/Plugin/websetup.pm:419 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" "Les changements de configuration ci-dessous nécessitent une recompilation du " "wiki pour prendre effet" -#: ../IkiWiki/Plugin/websetup.pm:408 +#: ../IkiWiki/Plugin/websetup.pm:423 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." @@ -1017,7 +1027,7 @@ msgstr "" "Pour que les changements de configuration ci-dessous prennent effet vous " "devez recompiler le wiki" -#: ../IkiWiki/Plugin/websetup.pm:445 +#: ../IkiWiki/Plugin/websetup.pm:460 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "Erreur : %s s'est terminé anormalement (%s). Modifications ignorées." @@ -1094,22 +1104,22 @@ msgstr "ikiwiki : impossible de reconstruire %s" msgid "cannot read %s: %s" msgstr "Lecture impossible de %s : %s" -#: ../IkiWiki/Setup/Automator.pm:33 +#: ../IkiWiki/Setup/Automator.pm:34 msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" "Vous devez spécifier un nom de wiki (contenant des caractères " "alphanumériques)" -#: ../IkiWiki/Setup/Automator.pm:79 +#: ../IkiWiki/Setup/Automator.pm:80 #, perl-format msgid "unsupported revision control system %s" msgstr "Système de contrôle de version non reconnu : %s" -#: ../IkiWiki/Setup/Automator.pm:105 +#: ../IkiWiki/Setup/Automator.pm:106 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "Échec lors de la création du dépôt avec ikiwiki-makerepo" -#: ../IkiWiki/Setup/Automator.pm:123 +#: ../IkiWiki/Setup/Automator.pm:124 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1184,25 +1194,25 @@ msgstr "Impossible d'utiliser plusieurs systèmes de contrôle des versions" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "Impossible de charger le greffon externe nécessaire au greffon %s : %s" -#: ../IkiWiki.pm:1263 +#: ../IkiWiki.pm:1255 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "Une boucle de prétraitement a été détectée sur %s à hauteur de %i" -#: ../IkiWiki.pm:1862 +#: ../IkiWiki.pm:1854 msgid "yes" msgstr "oui" -#: ../IkiWiki.pm:2005 +#: ../IkiWiki.pm:1997 msgid "Sort::Naturally needed for title_natural sort" msgstr "Sort::Naturally est nécessaire pour un tri « title_natural »" -#: ../IkiWiki.pm:2016 +#: ../IkiWiki.pm:2008 #, perl-format msgid "unknown sort type %s" msgstr "Type de tri %s inconnu" -#: ../IkiWiki.pm:2035 +#: ../IkiWiki.pm:2027 #, perl-format msgid "cannot match pages: %s" msgstr "Impossible de trouver les pages %s" diff --git a/po/gu.po b/po/gu.po index 83afdef4c..3cb505efe 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: 2010-01-22 16:04-0500\n" +"POT-Creation-Date: 2010-02-12 16:48-0500\n" "PO-Revision-Date: 2007-01-11 16:05+0530\n" "Last-Translator: Kartik Mistry \n" "Language-Team: Gujarati \n" @@ -54,7 +54,7 @@ msgstr "પ્રાથમિકતાઓ સંગ્રહાઇ." msgid "You are banned." msgstr "તમારા પર પ્રતિબંધ છે." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 msgid "Error" msgstr "ક્ષતિ" @@ -144,35 +144,35 @@ msgstr "સંપૂર્ણ" msgid "Must specify %s" msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:136 +#: ../IkiWiki/Plugin/amazon_s3.pm:140 #, fuzzy msgid "Failed to create S3 bucket: " msgstr "મેઇલ મોકલવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/amazon_s3.pm:221 +#: ../IkiWiki/Plugin/amazon_s3.pm:225 #, fuzzy msgid "Failed to save file to S3: " msgstr "મેઇલ મોકલવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/amazon_s3.pm:243 +#: ../IkiWiki/Plugin/amazon_s3.pm:247 #, fuzzy msgid "Failed to delete file from S3: " msgstr "માપ બદલવામાં નિષ્ફળ: %s" -#: ../IkiWiki/Plugin/attachment.pm:49 +#: ../IkiWiki/Plugin/attachment.pm:50 #, perl-format msgid "there is already a page named %s" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:65 +#: ../IkiWiki/Plugin/attachment.pm:66 msgid "prohibited by allowed_attachments" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:140 +#: ../IkiWiki/Plugin/attachment.pm:141 msgid "bad attachment filename" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:182 +#: ../IkiWiki/Plugin/attachment.pm:183 msgid "attachment upload" msgstr "" @@ -180,7 +180,7 @@ msgstr "" msgid "automatic index generation" msgstr "" -#: ../IkiWiki/Plugin/blogspam.pm:108 +#: ../IkiWiki/Plugin/blogspam.pm:109 msgid "" "Sorry, but that looks like spam to blogspam: " @@ -195,12 +195,12 @@ msgstr "" msgid "There are no broken links!" msgstr "અહીં કોઇ તૂટેલ કડી નથી!" -#: ../IkiWiki/Plugin/comments.pm:124 ../IkiWiki/Plugin/format.pm:38 +#: ../IkiWiki/Plugin/comments.pm:125 ../IkiWiki/Plugin/format.pm:48 #, perl-format msgid "unsupported page format %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:129 +#: ../IkiWiki/Plugin/comments.pm:130 msgid "comment must have content" msgstr "" @@ -208,7 +208,7 @@ msgstr "" msgid "Anonymous" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:97 +#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "" @@ -244,7 +244,7 @@ msgstr "" msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256 msgid "you are not logged in as an admin" msgstr "" @@ -260,132 +260,132 @@ msgstr "" msgid "Comments" msgstr "" -#: ../IkiWiki/Plugin/conditional.pm:27 ../IkiWiki/Plugin/cutpaste.pm:30 -#: ../IkiWiki/Plugin/cutpaste.pm:45 ../IkiWiki/Plugin/cutpaste.pm:61 +#: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 +#: ../IkiWiki/Plugin/cutpaste.pm:46 ../IkiWiki/Plugin/cutpaste.pm:62 #: ../IkiWiki/Plugin/testpagespec.pm:26 #, fuzzy, perl-format msgid "%s parameter is required" msgstr "\"test\" અને \"then\" વિકલ્પો જરૂરી છે" -#: ../IkiWiki/Plugin/cutpaste.pm:66 +#: ../IkiWiki/Plugin/cutpaste.pm:67 msgid "no text was copied in this page" msgstr "" -#: ../IkiWiki/Plugin/cutpaste.pm:69 +#: ../IkiWiki/Plugin/cutpaste.pm:70 #, perl-format msgid "no text was copied in this page with id %s" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:40 +#: ../IkiWiki/Plugin/editpage.pm:41 #, fuzzy, perl-format msgid "removing old preview %s" msgstr "જુનાં પાનાં દૂર કરે છે %s" -#: ../IkiWiki/Plugin/editpage.pm:113 +#: ../IkiWiki/Plugin/editpage.pm:114 #, perl-format msgid "%s is not an editable page" msgstr "%s એ સુધારી શકાય તેવું પાનું નથી" -#: ../IkiWiki/Plugin/editpage.pm:292 +#: ../IkiWiki/Plugin/editpage.pm:296 #, perl-format msgid "creating %s" msgstr "%s બનાવે છે" -#: ../IkiWiki/Plugin/editpage.pm:310 ../IkiWiki/Plugin/editpage.pm:329 -#: ../IkiWiki/Plugin/editpage.pm:339 ../IkiWiki/Plugin/editpage.pm:383 -#: ../IkiWiki/Plugin/editpage.pm:422 +#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 +#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 +#: ../IkiWiki/Plugin/editpage.pm:426 #, perl-format msgid "editing %s" msgstr "%s સુધારે છે" -#: ../IkiWiki/Plugin/edittemplate.pm:51 +#: ../IkiWiki/Plugin/edittemplate.pm:52 #, fuzzy msgid "template not specified" msgstr "ટેમ્પલેટ %s મળ્યું નહી" -#: ../IkiWiki/Plugin/edittemplate.pm:54 +#: ../IkiWiki/Plugin/edittemplate.pm:55 #, fuzzy msgid "match not specified" msgstr "આવરણ ફાઇલનામ સ્પષ્ટ કરેલ નથી" -#: ../IkiWiki/Plugin/edittemplate.pm:63 +#: ../IkiWiki/Plugin/edittemplate.pm:64 #, perl-format msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:137 +#: ../IkiWiki/Plugin/edittemplate.pm:138 #, fuzzy msgid "failed to process" msgstr "ક્રિયા કરવામાં નિષ્ફળ:" -#: ../IkiWiki/Plugin/format.pm:20 +#: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" msgstr "" -#: ../IkiWiki/Plugin/fortune.pm:27 +#: ../IkiWiki/Plugin/fortune.pm:28 msgid "fortune failed" msgstr "ભવિષ્ય નિષ્ફળ" -#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 +#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 #, fuzzy msgid "missing page" msgstr "ખોવાયેલ કિંમતો" -#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 +#: ../IkiWiki/Plugin/getsource.pm:66 ../IkiWiki/Plugin/goto.pm:59 #, perl-format msgid "The page %s does not exist." msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:74 +#: ../IkiWiki/Plugin/getsource.pm:75 #, fuzzy msgid "not a page" msgstr "વાંચી શકાતી નથી %s: %s" -#: ../IkiWiki/Plugin/getsource.pm:76 +#: ../IkiWiki/Plugin/getsource.pm:77 #, fuzzy, perl-format msgid "%s is an attachment, not a page." msgstr "%s એ સુધારી શકાય તેવું પાનું નથી" -#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 +#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:697 +#: ../IkiWiki/Plugin/git.pm:698 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:701 +#: ../IkiWiki/Plugin/git.pm:702 msgid "you are not allowed to change file modes" msgstr "" -#: ../IkiWiki/Plugin/google.pm:25 ../IkiWiki/Plugin/po.pm:131 -#: ../IkiWiki/Plugin/search.pm:36 +#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/po.pm:132 +#: ../IkiWiki/Plugin/search.pm:37 #, fuzzy, perl-format msgid "Must specify %s when using the %s plugin" msgstr "જ્યારે શોધ પ્લગઇન ઉપયોગ કરતા હોવ ત્યારે %s સ્પષ્ટ કરવું જ પડશે" -#: ../IkiWiki/Plugin/graphviz.pm:67 +#: ../IkiWiki/Plugin/graphviz.pm:68 msgid "failed to run graphviz" msgstr "ગ્રાફવિઝ ચલાવવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/graphviz.pm:94 +#: ../IkiWiki/Plugin/graphviz.pm:95 msgid "prog not a valid graphviz program" msgstr "કાર્યક્રમએ યોગ્ય ગ્રાફવિઝ કાર્યક્રમ નથી" -#: ../IkiWiki/Plugin/highlight.pm:47 +#: ../IkiWiki/Plugin/highlight.pm:48 #, perl-format msgid "tohighlight contains unknown file type '%s'" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:58 +#: ../IkiWiki/Plugin/highlight.pm:59 #, perl-format msgid "Source code: %s" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:123 +#: ../IkiWiki/Plugin/highlight.pm:124 msgid "" "warning: highlight perl module not available; falling back to pass through" msgstr "" @@ -395,109 +395,109 @@ msgstr "" msgid "htmltidy failed to parse this html" msgstr "કોઇપણ સ્માઇલીઓ ઉકેલવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/img.pm:64 +#: ../IkiWiki/Plugin/img.pm:69 #, fuzzy msgid "Image::Magick is not installed" msgstr "પોલિગોન સ્થાપિત નથી" -#: ../IkiWiki/Plugin/img.pm:68 ../IkiWiki/Plugin/img.pm:112 +#: ../IkiWiki/Plugin/img.pm:73 ../IkiWiki/Plugin/img.pm:117 #, perl-format msgid "failed to read %s: %s" msgstr "%s વાંચવામાં નિષ્ફળ: %s" -#: ../IkiWiki/Plugin/img.pm:74 +#: ../IkiWiki/Plugin/img.pm:79 #, perl-format msgid "wrong size format \"%s\" (should be WxH)" msgstr "" -#: ../IkiWiki/Plugin/img.pm:120 +#: ../IkiWiki/Plugin/img.pm:125 #, perl-format msgid "failed to resize: %s" msgstr "માપ બદલવામાં નિષ્ફળ: %s" -#: ../IkiWiki/Plugin/img.pm:140 +#: ../IkiWiki/Plugin/img.pm:145 #, fuzzy, perl-format msgid "failed to determine size of image %s" msgstr "માપ બદલવામાં નિષ્ફળ: %s" -#: ../IkiWiki/Plugin/inline.pm:92 +#: ../IkiWiki/Plugin/inline.pm:93 msgid "Must specify url to wiki with --url when using --rss or --atom" msgstr "--rss અથવા --atom ઉપયોગ કરતી વખતે વીકીમાં --url ઉપયોગ કરવું જ પડશે" -#: ../IkiWiki/Plugin/inline.pm:138 +#: ../IkiWiki/Plugin/inline.pm:139 #, fuzzy msgid "page editing not allowed" msgstr "ફીડ મળ્યું નહી" -#: ../IkiWiki/Plugin/inline.pm:155 +#: ../IkiWiki/Plugin/inline.pm:156 #, fuzzy msgid "missing pages parameter" msgstr "ખોવાયેલ %s વિકલ્પ" -#: ../IkiWiki/Plugin/inline.pm:191 +#: ../IkiWiki/Plugin/inline.pm:192 #, perl-format msgid "the %s and %s parameters cannot be used together" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:312 +#: ../IkiWiki/Plugin/inline.pm:313 msgid "Add a new post titled:" msgstr "આ શિર્ષકથી નવું પોસ્ટ ઉમેરો:" -#: ../IkiWiki/Plugin/inline.pm:332 +#: ../IkiWiki/Plugin/inline.pm:333 #, perl-format msgid "nonexistant template %s" msgstr "અસ્તિત્વમાં ન હોય તેવું ટેમ્પલેટ %s" -#: ../IkiWiki/Plugin/inline.pm:624 +#: ../IkiWiki/Plugin/inline.pm:625 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client મળ્યું નહી, પિંગ કરવામાં આવતું નથી" -#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 -#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 +#: ../IkiWiki/Plugin/linkmap.pm:81 ../IkiWiki/Plugin/linkmap.pm:88 +#: ../IkiWiki/Plugin/linkmap.pm:92 ../IkiWiki/Plugin/linkmap.pm:95 msgid "failed to run dot" msgstr "ડોટ ચલાવવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/linkmap.pm:84 +#: ../IkiWiki/Plugin/linkmap.pm:85 msgid "linkmap" msgstr "" -#: ../IkiWiki/Plugin/lockedit.pm:48 +#: ../IkiWiki/Plugin/lockedit.pm:49 #, fuzzy, perl-format msgid "%s is locked and cannot be edited" msgstr "%s એ %s દ્વારા તાળું મરાયેલ છે અને તેમાં સુધારો કરી શકાશે નહી" -#: ../IkiWiki/Plugin/mdwn.pm:44 +#: ../IkiWiki/Plugin/mdwn.pm:45 msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed" msgstr "" -#: ../IkiWiki/Plugin/mdwn.pm:69 +#: ../IkiWiki/Plugin/mdwn.pm:70 #, perl-format msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "Markdown.pm પર્લ મોડ્યુલ (%s) અથવા /usr/bin/markdown (%s) લાવવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:162 msgid "stylesheet not found" msgstr "સ્ટાઇલશીટ મળ્યું નહી" -#: ../IkiWiki/Plugin/meta.pm:199 +#: ../IkiWiki/Plugin/meta.pm:200 #, fuzzy msgid "redir page not found" msgstr "ફીડ મળ્યું નહી" -#: ../IkiWiki/Plugin/meta.pm:213 +#: ../IkiWiki/Plugin/meta.pm:214 #, fuzzy msgid "redir cycle is not allowed" msgstr "ફીડ મળ્યું નહી" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "મિરરો" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirror" msgstr "મિરર" -#: ../IkiWiki/Plugin/moderatedcomments.pm:41 +#: ../IkiWiki/Plugin/moderatedcomments.pm:42 msgid "comment needs moderation" msgstr "" @@ -505,19 +505,19 @@ msgstr "" msgid "more" msgstr "વધુ" -#: ../IkiWiki/Plugin/norcs.pm:65 +#: ../IkiWiki/Plugin/norcs.pm:66 msgid "getctime not implemented" msgstr "getctime અમલમાં મૂકાયેલ નથી" -#: ../IkiWiki/Plugin/openid.pm:61 +#: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "" -#: ../IkiWiki/Plugin/openid.pm:64 +#: ../IkiWiki/Plugin/openid.pm:65 msgid "Get an OpenID" msgstr "ઓપનઆઇડી મેળવો" -#: ../IkiWiki/Plugin/orphans.pm:55 +#: ../IkiWiki/Plugin/orphans.pm:56 #, fuzzy msgid "All pages have other pages linking to them." msgstr "બધા પાનાંઓ બીજા પાનાંઓ વડે જોડાયેલ છે." @@ -526,31 +526,39 @@ msgstr "બધા પાનાંઓ બીજા પાનાંઓ વડે msgid "bad or missing template" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:248 +#: ../IkiWiki/Plugin/passwordauth.pm:229 +msgid "Your user page: " +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:236 +msgid "Create your user page" +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:264 msgid "Account creation successful. Now you can Login." msgstr "ખાતું બનાવવાનું સફળ. તમે હવે લોગઇન કરી શકો છો." -#: ../IkiWiki/Plugin/passwordauth.pm:251 +#: ../IkiWiki/Plugin/passwordauth.pm:267 msgid "Error creating account." msgstr "ખાતું બનાવવામાં ક્ષતિ." -#: ../IkiWiki/Plugin/passwordauth.pm:258 +#: ../IkiWiki/Plugin/passwordauth.pm:274 msgid "No email address, so cannot email password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:292 +#: ../IkiWiki/Plugin/passwordauth.pm:308 msgid "Failed to send mail" msgstr "મેઇલ મોકલવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/passwordauth.pm:294 +#: ../IkiWiki/Plugin/passwordauth.pm:310 msgid "You have been mailed password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:329 +#: ../IkiWiki/Plugin/passwordauth.pm:345 msgid "incorrect password reset url" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:332 +#: ../IkiWiki/Plugin/passwordauth.pm:348 msgid "password reset denied" msgstr "" @@ -581,119 +589,119 @@ msgstr "RPC::XML::Client મળ્યું નહી, પિંગ કરવા msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:138 +#: ../IkiWiki/Plugin/po.pm:139 #, fuzzy, perl-format msgid "%s is not a valid language code" msgstr "%s એ સુધારી શકાય તેવું પાનું નથી" -#: ../IkiWiki/Plugin/po.pm:150 +#: ../IkiWiki/Plugin/po.pm:151 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:155 +#: ../IkiWiki/Plugin/po.pm:156 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:385 +#: ../IkiWiki/Plugin/po.pm:386 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 #, fuzzy, perl-format msgid "building %s" msgstr "%s સુધારે છે" -#: ../IkiWiki/Plugin/po.pm:427 +#: ../IkiWiki/Plugin/po.pm:428 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:451 +#: ../IkiWiki/Plugin/po.pm:452 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:471 +#: ../IkiWiki/Plugin/po.pm:472 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:870 +#: ../IkiWiki/Plugin/po.pm:871 #, perl-format msgid "POT file (%s) does not exist" msgstr "" -#: ../IkiWiki/Plugin/po.pm:884 +#: ../IkiWiki/Plugin/po.pm:885 #, fuzzy, perl-format msgid "failed to copy underlay PO file to %s" msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/po.pm:893 +#: ../IkiWiki/Plugin/po.pm:894 #, fuzzy, perl-format msgid "failed to update %s" msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/po.pm:899 +#: ../IkiWiki/Plugin/po.pm:900 #, fuzzy, perl-format msgid "failed to copy the POT file to %s" msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/po.pm:935 +#: ../IkiWiki/Plugin/po.pm:936 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:948 +#: ../IkiWiki/Plugin/po.pm:949 #, fuzzy, perl-format msgid "failed to translate %s" msgstr "માપ બદલવામાં નિષ્ફળ: %s" -#: ../IkiWiki/Plugin/po.pm:1032 +#: ../IkiWiki/Plugin/po.pm:1033 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 -#: ../IkiWiki/Plugin/po.pm:1141 +#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 +#: ../IkiWiki/Plugin/po.pm:1142 #, fuzzy, perl-format msgid "failed to write %s" msgstr "%s લખવામાં નિષ્ફળ: %s" -#: ../IkiWiki/Plugin/po.pm:1100 +#: ../IkiWiki/Plugin/po.pm:1101 #, fuzzy msgid "failed to translate" msgstr "ડોટ ચલાવવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/po.pm:1153 +#: ../IkiWiki/Plugin/po.pm:1154 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" -#: ../IkiWiki/Plugin/poll.pm:69 +#: ../IkiWiki/Plugin/poll.pm:70 msgid "vote" msgstr "મત" -#: ../IkiWiki/Plugin/poll.pm:77 +#: ../IkiWiki/Plugin/poll.pm:78 msgid "Total votes:" msgstr "કુલ મત:" -#: ../IkiWiki/Plugin/polygen.pm:41 +#: ../IkiWiki/Plugin/polygen.pm:42 msgid "polygen not installed" msgstr "પોલિગોન સ્થાપિત નથી" -#: ../IkiWiki/Plugin/polygen.pm:60 +#: ../IkiWiki/Plugin/polygen.pm:61 #, fuzzy msgid "command failed" msgstr "ભવિષ્ય નિષ્ફળ" -#: ../IkiWiki/Plugin/postsparkline.pm:46 +#: ../IkiWiki/Plugin/postsparkline.pm:47 msgid "missing formula" msgstr "ખોવાયેલ સૂત્ર" -#: ../IkiWiki/Plugin/postsparkline.pm:53 +#: ../IkiWiki/Plugin/postsparkline.pm:54 msgid "unknown formula" msgstr "અજાણ્યું સૂત્ર" @@ -762,12 +770,12 @@ msgstr "મધ્યરાત્રે" msgid "at noon on %A" msgstr "બપોરે %A પર" -#: ../IkiWiki/Plugin/progress.pm:34 +#: ../IkiWiki/Plugin/progress.pm:35 #, perl-format msgid "illegal percent value %s" msgstr "" -#: ../IkiWiki/Plugin/progress.pm:55 +#: ../IkiWiki/Plugin/progress.pm:56 msgid "need either `percent` or `totalpages` and `donepages` parameters" msgstr "" @@ -775,82 +783,82 @@ msgstr "" msgid "(Diff truncated)" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36 +#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:37 #, perl-format msgid "%s does not exist" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:38 +#: ../IkiWiki/Plugin/remove.pm:39 #, fuzzy, perl-format msgid "%s is not in the srcdir, so it cannot be deleted" msgstr "%s એ %s દ્વારા તાળું મરાયેલ છે અને તેમાં સુધારો કરી શકાશે નહી" -#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45 +#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:46 #, fuzzy, perl-format msgid "%s is not a file" msgstr "%s એ સુધારી શકાય તેવું પાનું નથી" -#: ../IkiWiki/Plugin/remove.pm:134 +#: ../IkiWiki/Plugin/remove.pm:135 #, perl-format msgid "confirm removal of %s" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:171 +#: ../IkiWiki/Plugin/remove.pm:172 msgid "Please select the attachments to remove." msgstr "" -#: ../IkiWiki/Plugin/remove.pm:211 +#: ../IkiWiki/Plugin/remove.pm:212 msgid "removed" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:42 +#: ../IkiWiki/Plugin/rename.pm:43 #, perl-format msgid "%s is not in the srcdir, so it cannot be renamed" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:62 +#: ../IkiWiki/Plugin/rename.pm:63 #, fuzzy msgid "no change to the file name was specified" msgstr "આવરણ ફાઇલનામ સ્પષ્ટ કરેલ નથી" -#: ../IkiWiki/Plugin/rename.pm:68 +#: ../IkiWiki/Plugin/rename.pm:69 #, perl-format msgid "illegal name" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:73 +#: ../IkiWiki/Plugin/rename.pm:74 #, perl-format msgid "%s already exists" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:79 +#: ../IkiWiki/Plugin/rename.pm:80 #, perl-format msgid "%s already exists on disk" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:122 +#: ../IkiWiki/Plugin/rename.pm:123 #, fuzzy, perl-format msgid "rename %s" msgstr "રેન્ડર કરે છે %s" -#: ../IkiWiki/Plugin/rename.pm:161 +#: ../IkiWiki/Plugin/rename.pm:162 msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:248 +#: ../IkiWiki/Plugin/rename.pm:249 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:251 +#: ../IkiWiki/Plugin/rename.pm:252 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:348 +#: ../IkiWiki/Plugin/rename.pm:349 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:572 +#: ../IkiWiki/Plugin/rename.pm:573 #, fuzzy, perl-format msgid "update for rename of %s to %s" msgstr "%s નો સુધારો %s નાં %s વડે" @@ -865,28 +873,28 @@ msgstr "%s વાંચવામાં નિષ્ફળ: %s" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:182 +#: ../IkiWiki/Plugin/search.pm:183 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "" -#: ../IkiWiki/Plugin/search.pm:217 +#: ../IkiWiki/Plugin/search.pm:218 msgid "search" msgstr "" -#: ../IkiWiki/Plugin/shortcut.pm:31 +#: ../IkiWiki/Plugin/shortcut.pm:32 #, perl-format msgid "shortcut plugin will not work without %s" msgstr "" -#: ../IkiWiki/Plugin/shortcut.pm:44 +#: ../IkiWiki/Plugin/shortcut.pm:45 msgid "missing name or url parameter" msgstr "ખોવાયેલ નામ અથવા યુઆરએલ વિકલ્પ" #. translators: This is used to display what shortcuts are defined. #. translators: First parameter is the name of the shortcut, the second #. translators: is an URL. -#: ../IkiWiki/Plugin/shortcut.pm:54 +#: ../IkiWiki/Plugin/shortcut.pm:55 #, perl-format msgid "shortcut %s points to %s" msgstr "ટુંકોરસ્તો %s એ %s નો નિર્દેશ કરે છે" @@ -895,119 +903,121 @@ msgstr "ટુંકોરસ્તો %s એ %s નો નિર્દ msgid "failed to parse any smileys" msgstr "કોઇપણ સ્માઇલીઓ ઉકેલવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/sparkline.pm:72 +#: ../IkiWiki/Plugin/sparkline.pm:73 msgid "parse error" msgstr "ઉકેલવામાં ક્ષતિ" -#: ../IkiWiki/Plugin/sparkline.pm:78 +#: ../IkiWiki/Plugin/sparkline.pm:79 #, fuzzy msgid "invalid featurepoint diameter" msgstr "ખરાબ લાક્ષણિકબિંદુ વ્યાસ" -#: ../IkiWiki/Plugin/sparkline.pm:88 +#: ../IkiWiki/Plugin/sparkline.pm:89 #, fuzzy msgid "invalid featurepoint location" msgstr "ખરાબ લાક્ષણિકબિંદુ સ્થિતિ" -#: ../IkiWiki/Plugin/sparkline.pm:99 +#: ../IkiWiki/Plugin/sparkline.pm:100 msgid "missing values" msgstr "ખોવાયેલ કિંમતો" -#: ../IkiWiki/Plugin/sparkline.pm:104 +#: ../IkiWiki/Plugin/sparkline.pm:105 #, fuzzy msgid "invalid height value" msgstr "ખરાબ ઉંચાઇ કિંમત" -#: ../IkiWiki/Plugin/sparkline.pm:111 +#: ../IkiWiki/Plugin/sparkline.pm:112 msgid "missing width parameter" msgstr "ખોવાયેલ પહોળાઇ વિકલ્પ" -#: ../IkiWiki/Plugin/sparkline.pm:115 +#: ../IkiWiki/Plugin/sparkline.pm:116 #, fuzzy msgid "invalid width value" msgstr "ખરાબ પહોળાઇ કિંમત" -#: ../IkiWiki/Plugin/sparkline.pm:153 +#: ../IkiWiki/Plugin/sparkline.pm:154 msgid "failed to run php" msgstr "php ચલાવવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/table.pm:31 +#: ../IkiWiki/Plugin/table.pm:32 msgid "cannot find file" msgstr "ફાઇલ મળી શકી નહી" -#: ../IkiWiki/Plugin/table.pm:87 +#: ../IkiWiki/Plugin/table.pm:88 msgid "unknown data format" msgstr "અજાણ્યો માહિતી પ્રકાર" -#: ../IkiWiki/Plugin/table.pm:95 +#: ../IkiWiki/Plugin/table.pm:96 msgid "empty data" msgstr "ખાલી માહિતી" -#: ../IkiWiki/Plugin/table.pm:114 +#: ../IkiWiki/Plugin/table.pm:115 msgid "Direct data download" msgstr "સીધી માહિતી ડાઉનલોડ" -#: ../IkiWiki/Plugin/table.pm:148 +#: ../IkiWiki/Plugin/table.pm:149 #, perl-format msgid "parse fail at line %d: %s" msgstr "ઉકેલવાનું લીટી %d પર નિષ્ફળ: %s" -#: ../IkiWiki/Plugin/template.pm:29 +#: ../IkiWiki/Plugin/template.pm:34 msgid "missing id parameter" msgstr "ખોવાયેલ આઇડી વિકલ્પ" -#: ../IkiWiki/Plugin/template.pm:36 +#: ../IkiWiki/Plugin/template.pm:41 #, perl-format msgid "template %s not found" msgstr "ટેમ્પલેટ %s મળ્યું નહી" -#: ../IkiWiki/Plugin/template.pm:55 +#: ../IkiWiki/Plugin/template.pm:60 msgid "failed to process:" msgstr "ક્રિયા કરવામાં નિષ્ફળ:" -#: ../IkiWiki/Plugin/teximg.pm:70 +#: ../IkiWiki/Plugin/teximg.pm:71 #, fuzzy msgid "missing tex code" msgstr "ખોવાયેલ કિંમતો" -#: ../IkiWiki/Plugin/teximg.pm:122 +#: ../IkiWiki/Plugin/teximg.pm:123 #, fuzzy msgid "failed to generate image from code" msgstr "માપ બદલવામાં નિષ્ફળ: %s" -#: ../IkiWiki/Plugin/websetup.pm:89 -msgid "plugin" +#: ../IkiWiki/Plugin/websetup.pm:91 +#, perl-format +msgid "%s plugin:" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:108 +#: ../IkiWiki/Plugin/websetup.pm:107 #, perl-format -msgid "enable %s?" +msgid "%s plugins" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:244 -msgid "setup file for this wiki is not known" +#: ../IkiWiki/Plugin/websetup.pm:121 +#, perl-format +msgid "enable %s?" msgstr "" #: ../IkiWiki/Plugin/websetup.pm:260 -msgid "main" +msgid "setup file for this wiki is not known" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:261 -msgid "plugins" +#: ../IkiWiki/Plugin/websetup.pm:276 +msgid "main" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:404 +#: ../IkiWiki/Plugin/websetup.pm:419 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:408 +#: ../IkiWiki/Plugin/websetup.pm:423 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:445 +#: ../IkiWiki/Plugin/websetup.pm:460 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1081,20 +1091,20 @@ msgstr "ikiwiki: %s રેન્ડર કરી શકાતું નથી" msgid "cannot read %s: %s" msgstr "વાંચી શકાતી નથી %s: %s" -#: ../IkiWiki/Setup/Automator.pm:33 +#: ../IkiWiki/Setup/Automator.pm:34 msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:79 +#: ../IkiWiki/Setup/Automator.pm:80 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:105 +#: ../IkiWiki/Setup/Automator.pm:106 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:123 +#: ../IkiWiki/Setup/Automator.pm:124 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1165,25 +1175,25 @@ msgstr "" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1263 +#: ../IkiWiki.pm:1255 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "%s પર શોધાયેલ લુપ %s પર ચલાવે છે %i ઉંડાણ પર" -#: ../IkiWiki.pm:1862 +#: ../IkiWiki.pm:1854 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2005 +#: ../IkiWiki.pm:1997 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2016 +#: ../IkiWiki.pm:2008 #, perl-format msgid "unknown sort type %s" msgstr "અજાણ્યો ગોઠવણી પ્રકાર %s" -#: ../IkiWiki.pm:2035 +#: ../IkiWiki.pm:2027 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "વાંચી શકાતી નથી %s: %s" diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index f4749b841..4f44e7c74 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: 2010-01-22 16:04-0500\n" +"POT-Creation-Date: 2010-02-12 16:48-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -54,7 +54,7 @@ msgstr "" msgid "You are banned." msgstr "" -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 msgid "Error" msgstr "" @@ -144,32 +144,32 @@ msgstr "" msgid "Must specify %s" msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:136 +#: ../IkiWiki/Plugin/amazon_s3.pm:140 msgid "Failed to create S3 bucket: " msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:221 +#: ../IkiWiki/Plugin/amazon_s3.pm:225 msgid "Failed to save file to S3: " msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:243 +#: ../IkiWiki/Plugin/amazon_s3.pm:247 msgid "Failed to delete file from S3: " msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:49 +#: ../IkiWiki/Plugin/attachment.pm:50 #, perl-format msgid "there is already a page named %s" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:65 +#: ../IkiWiki/Plugin/attachment.pm:66 msgid "prohibited by allowed_attachments" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:140 +#: ../IkiWiki/Plugin/attachment.pm:141 msgid "bad attachment filename" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:182 +#: ../IkiWiki/Plugin/attachment.pm:183 msgid "attachment upload" msgstr "" @@ -177,7 +177,7 @@ msgstr "" msgid "automatic index generation" msgstr "" -#: ../IkiWiki/Plugin/blogspam.pm:108 +#: ../IkiWiki/Plugin/blogspam.pm:109 msgid "" "Sorry, but that looks like spam to blogspam: " @@ -192,12 +192,12 @@ msgstr "" msgid "There are no broken links!" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:124 ../IkiWiki/Plugin/format.pm:38 +#: ../IkiWiki/Plugin/comments.pm:125 ../IkiWiki/Plugin/format.pm:48 #, perl-format msgid "unsupported page format %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:129 +#: ../IkiWiki/Plugin/comments.pm:130 msgid "comment must have content" msgstr "" @@ -205,7 +205,7 @@ msgstr "" msgid "Anonymous" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:97 +#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "" @@ -241,7 +241,7 @@ msgstr "" msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256 msgid "you are not logged in as an admin" msgstr "" @@ -257,127 +257,127 @@ msgstr "" msgid "Comments" msgstr "" -#: ../IkiWiki/Plugin/conditional.pm:27 ../IkiWiki/Plugin/cutpaste.pm:30 -#: ../IkiWiki/Plugin/cutpaste.pm:45 ../IkiWiki/Plugin/cutpaste.pm:61 +#: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 +#: ../IkiWiki/Plugin/cutpaste.pm:46 ../IkiWiki/Plugin/cutpaste.pm:62 #: ../IkiWiki/Plugin/testpagespec.pm:26 #, perl-format msgid "%s parameter is required" msgstr "" -#: ../IkiWiki/Plugin/cutpaste.pm:66 +#: ../IkiWiki/Plugin/cutpaste.pm:67 msgid "no text was copied in this page" msgstr "" -#: ../IkiWiki/Plugin/cutpaste.pm:69 +#: ../IkiWiki/Plugin/cutpaste.pm:70 #, perl-format msgid "no text was copied in this page with id %s" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:40 +#: ../IkiWiki/Plugin/editpage.pm:41 #, perl-format msgid "removing old preview %s" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:113 +#: ../IkiWiki/Plugin/editpage.pm:114 #, perl-format msgid "%s is not an editable page" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:292 +#: ../IkiWiki/Plugin/editpage.pm:296 #, perl-format msgid "creating %s" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:310 ../IkiWiki/Plugin/editpage.pm:329 -#: ../IkiWiki/Plugin/editpage.pm:339 ../IkiWiki/Plugin/editpage.pm:383 -#: ../IkiWiki/Plugin/editpage.pm:422 +#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 +#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 +#: ../IkiWiki/Plugin/editpage.pm:426 #, perl-format msgid "editing %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:51 +#: ../IkiWiki/Plugin/edittemplate.pm:52 msgid "template not specified" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:54 +#: ../IkiWiki/Plugin/edittemplate.pm:55 msgid "match not specified" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:63 +#: ../IkiWiki/Plugin/edittemplate.pm:64 #, perl-format msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:137 +#: ../IkiWiki/Plugin/edittemplate.pm:138 msgid "failed to process" msgstr "" -#: ../IkiWiki/Plugin/format.pm:20 +#: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" msgstr "" -#: ../IkiWiki/Plugin/fortune.pm:27 +#: ../IkiWiki/Plugin/fortune.pm:28 msgid "fortune failed" msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 +#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 msgid "missing page" msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 +#: ../IkiWiki/Plugin/getsource.pm:66 ../IkiWiki/Plugin/goto.pm:59 #, perl-format msgid "The page %s does not exist." msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:74 +#: ../IkiWiki/Plugin/getsource.pm:75 msgid "not a page" msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:76 +#: ../IkiWiki/Plugin/getsource.pm:77 #, perl-format msgid "%s is an attachment, not a page." msgstr "" -#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 +#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:697 +#: ../IkiWiki/Plugin/git.pm:698 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:701 +#: ../IkiWiki/Plugin/git.pm:702 msgid "you are not allowed to change file modes" msgstr "" -#: ../IkiWiki/Plugin/google.pm:25 ../IkiWiki/Plugin/po.pm:131 -#: ../IkiWiki/Plugin/search.pm:36 +#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/po.pm:132 +#: ../IkiWiki/Plugin/search.pm:37 #, perl-format msgid "Must specify %s when using the %s plugin" msgstr "" -#: ../IkiWiki/Plugin/graphviz.pm:67 +#: ../IkiWiki/Plugin/graphviz.pm:68 msgid "failed to run graphviz" msgstr "" -#: ../IkiWiki/Plugin/graphviz.pm:94 +#: ../IkiWiki/Plugin/graphviz.pm:95 msgid "prog not a valid graphviz program" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:47 +#: ../IkiWiki/Plugin/highlight.pm:48 #, perl-format msgid "tohighlight contains unknown file type '%s'" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:58 +#: ../IkiWiki/Plugin/highlight.pm:59 #, perl-format msgid "Source code: %s" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:123 +#: ../IkiWiki/Plugin/highlight.pm:124 msgid "" "warning: highlight perl module not available; falling back to pass through" msgstr "" @@ -386,104 +386,104 @@ msgstr "" msgid "htmltidy failed to parse this html" msgstr "" -#: ../IkiWiki/Plugin/img.pm:64 +#: ../IkiWiki/Plugin/img.pm:69 msgid "Image::Magick is not installed" msgstr "" -#: ../IkiWiki/Plugin/img.pm:68 ../IkiWiki/Plugin/img.pm:112 +#: ../IkiWiki/Plugin/img.pm:73 ../IkiWiki/Plugin/img.pm:117 #, perl-format msgid "failed to read %s: %s" msgstr "" -#: ../IkiWiki/Plugin/img.pm:74 +#: ../IkiWiki/Plugin/img.pm:79 #, perl-format msgid "wrong size format \"%s\" (should be WxH)" msgstr "" -#: ../IkiWiki/Plugin/img.pm:120 +#: ../IkiWiki/Plugin/img.pm:125 #, perl-format msgid "failed to resize: %s" msgstr "" -#: ../IkiWiki/Plugin/img.pm:140 +#: ../IkiWiki/Plugin/img.pm:145 #, perl-format msgid "failed to determine size of image %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:92 +#: ../IkiWiki/Plugin/inline.pm:93 msgid "Must specify url to wiki with --url when using --rss or --atom" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:138 +#: ../IkiWiki/Plugin/inline.pm:139 msgid "page editing not allowed" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:155 +#: ../IkiWiki/Plugin/inline.pm:156 msgid "missing pages parameter" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:191 +#: ../IkiWiki/Plugin/inline.pm:192 #, perl-format msgid "the %s and %s parameters cannot be used together" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:312 +#: ../IkiWiki/Plugin/inline.pm:313 msgid "Add a new post titled:" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:332 +#: ../IkiWiki/Plugin/inline.pm:333 #, perl-format msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:624 +#: ../IkiWiki/Plugin/inline.pm:625 msgid "RPC::XML::Client not found, not pinging" msgstr "" -#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 -#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 +#: ../IkiWiki/Plugin/linkmap.pm:81 ../IkiWiki/Plugin/linkmap.pm:88 +#: ../IkiWiki/Plugin/linkmap.pm:92 ../IkiWiki/Plugin/linkmap.pm:95 msgid "failed to run dot" msgstr "" -#: ../IkiWiki/Plugin/linkmap.pm:84 +#: ../IkiWiki/Plugin/linkmap.pm:85 msgid "linkmap" msgstr "" -#: ../IkiWiki/Plugin/lockedit.pm:48 +#: ../IkiWiki/Plugin/lockedit.pm:49 #, perl-format msgid "%s is locked and cannot be edited" msgstr "" -#: ../IkiWiki/Plugin/mdwn.pm:44 +#: ../IkiWiki/Plugin/mdwn.pm:45 msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed" msgstr "" -#: ../IkiWiki/Plugin/mdwn.pm:69 +#: ../IkiWiki/Plugin/mdwn.pm:70 #, perl-format msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:162 msgid "stylesheet not found" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:199 +#: ../IkiWiki/Plugin/meta.pm:200 msgid "redir page not found" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:213 +#: ../IkiWiki/Plugin/meta.pm:214 msgid "redir cycle is not allowed" msgstr "" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirror" msgstr "" -#: ../IkiWiki/Plugin/moderatedcomments.pm:41 +#: ../IkiWiki/Plugin/moderatedcomments.pm:42 msgid "comment needs moderation" msgstr "" @@ -491,19 +491,19 @@ msgstr "" msgid "more" msgstr "" -#: ../IkiWiki/Plugin/norcs.pm:65 +#: ../IkiWiki/Plugin/norcs.pm:66 msgid "getctime not implemented" msgstr "" -#: ../IkiWiki/Plugin/openid.pm:61 +#: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "" -#: ../IkiWiki/Plugin/openid.pm:64 +#: ../IkiWiki/Plugin/openid.pm:65 msgid "Get an OpenID" msgstr "" -#: ../IkiWiki/Plugin/orphans.pm:55 +#: ../IkiWiki/Plugin/orphans.pm:56 msgid "All pages have other pages linking to them." msgstr "" @@ -511,31 +511,39 @@ msgstr "" msgid "bad or missing template" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:248 +#: ../IkiWiki/Plugin/passwordauth.pm:229 +msgid "Your user page: " +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:236 +msgid "Create your user page" +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:264 msgid "Account creation successful. Now you can Login." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:251 +#: ../IkiWiki/Plugin/passwordauth.pm:267 msgid "Error creating account." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:258 +#: ../IkiWiki/Plugin/passwordauth.pm:274 msgid "No email address, so cannot email password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:292 +#: ../IkiWiki/Plugin/passwordauth.pm:308 msgid "Failed to send mail" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:294 +#: ../IkiWiki/Plugin/passwordauth.pm:310 msgid "You have been mailed password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:329 +#: ../IkiWiki/Plugin/passwordauth.pm:345 msgid "incorrect password reset url" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:332 +#: ../IkiWiki/Plugin/passwordauth.pm:348 msgid "password reset denied" msgstr "" @@ -565,117 +573,117 @@ msgstr "" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:138 +#: ../IkiWiki/Plugin/po.pm:139 #, perl-format msgid "%s is not a valid language code" msgstr "" -#: ../IkiWiki/Plugin/po.pm:150 +#: ../IkiWiki/Plugin/po.pm:151 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:155 +#: ../IkiWiki/Plugin/po.pm:156 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:385 +#: ../IkiWiki/Plugin/po.pm:386 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 #, perl-format msgid "building %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:427 +#: ../IkiWiki/Plugin/po.pm:428 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:451 +#: ../IkiWiki/Plugin/po.pm:452 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:471 +#: ../IkiWiki/Plugin/po.pm:472 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:870 +#: ../IkiWiki/Plugin/po.pm:871 #, perl-format msgid "POT file (%s) does not exist" msgstr "" -#: ../IkiWiki/Plugin/po.pm:884 +#: ../IkiWiki/Plugin/po.pm:885 #, perl-format msgid "failed to copy underlay PO file to %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:893 +#: ../IkiWiki/Plugin/po.pm:894 #, perl-format msgid "failed to update %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:899 +#: ../IkiWiki/Plugin/po.pm:900 #, perl-format msgid "failed to copy the POT file to %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:935 +#: ../IkiWiki/Plugin/po.pm:936 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:948 +#: ../IkiWiki/Plugin/po.pm:949 #, perl-format msgid "failed to translate %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1032 +#: ../IkiWiki/Plugin/po.pm:1033 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 -#: ../IkiWiki/Plugin/po.pm:1141 +#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 +#: ../IkiWiki/Plugin/po.pm:1142 #, perl-format msgid "failed to write %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1100 +#: ../IkiWiki/Plugin/po.pm:1101 msgid "failed to translate" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1153 +#: ../IkiWiki/Plugin/po.pm:1154 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" -#: ../IkiWiki/Plugin/poll.pm:69 +#: ../IkiWiki/Plugin/poll.pm:70 msgid "vote" msgstr "" -#: ../IkiWiki/Plugin/poll.pm:77 +#: ../IkiWiki/Plugin/poll.pm:78 msgid "Total votes:" msgstr "" -#: ../IkiWiki/Plugin/polygen.pm:41 +#: ../IkiWiki/Plugin/polygen.pm:42 msgid "polygen not installed" msgstr "" -#: ../IkiWiki/Plugin/polygen.pm:60 +#: ../IkiWiki/Plugin/polygen.pm:61 msgid "command failed" msgstr "" -#: ../IkiWiki/Plugin/postsparkline.pm:46 +#: ../IkiWiki/Plugin/postsparkline.pm:47 msgid "missing formula" msgstr "" -#: ../IkiWiki/Plugin/postsparkline.pm:53 +#: ../IkiWiki/Plugin/postsparkline.pm:54 msgid "unknown formula" msgstr "" @@ -743,12 +751,12 @@ msgstr "" msgid "at noon on %A" msgstr "" -#: ../IkiWiki/Plugin/progress.pm:34 +#: ../IkiWiki/Plugin/progress.pm:35 #, perl-format msgid "illegal percent value %s" msgstr "" -#: ../IkiWiki/Plugin/progress.pm:55 +#: ../IkiWiki/Plugin/progress.pm:56 msgid "need either `percent` or `totalpages` and `donepages` parameters" msgstr "" @@ -756,81 +764,81 @@ msgstr "" msgid "(Diff truncated)" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36 +#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:37 #, perl-format msgid "%s does not exist" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:38 +#: ../IkiWiki/Plugin/remove.pm:39 #, perl-format msgid "%s is not in the srcdir, so it cannot be deleted" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45 +#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:46 #, perl-format msgid "%s is not a file" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:134 +#: ../IkiWiki/Plugin/remove.pm:135 #, perl-format msgid "confirm removal of %s" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:171 +#: ../IkiWiki/Plugin/remove.pm:172 msgid "Please select the attachments to remove." msgstr "" -#: ../IkiWiki/Plugin/remove.pm:211 +#: ../IkiWiki/Plugin/remove.pm:212 msgid "removed" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:42 +#: ../IkiWiki/Plugin/rename.pm:43 #, perl-format msgid "%s is not in the srcdir, so it cannot be renamed" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:62 +#: ../IkiWiki/Plugin/rename.pm:63 msgid "no change to the file name was specified" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:68 +#: ../IkiWiki/Plugin/rename.pm:69 #, perl-format msgid "illegal name" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:73 +#: ../IkiWiki/Plugin/rename.pm:74 #, perl-format msgid "%s already exists" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:79 +#: ../IkiWiki/Plugin/rename.pm:80 #, perl-format msgid "%s already exists on disk" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:122 +#: ../IkiWiki/Plugin/rename.pm:123 #, perl-format msgid "rename %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:161 +#: ../IkiWiki/Plugin/rename.pm:162 msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:248 +#: ../IkiWiki/Plugin/rename.pm:249 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:251 +#: ../IkiWiki/Plugin/rename.pm:252 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:348 +#: ../IkiWiki/Plugin/rename.pm:349 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:572 +#: ../IkiWiki/Plugin/rename.pm:573 #, perl-format msgid "update for rename of %s to %s" msgstr "" @@ -845,28 +853,28 @@ msgstr "" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:182 +#: ../IkiWiki/Plugin/search.pm:183 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "" -#: ../IkiWiki/Plugin/search.pm:217 +#: ../IkiWiki/Plugin/search.pm:218 msgid "search" msgstr "" -#: ../IkiWiki/Plugin/shortcut.pm:31 +#: ../IkiWiki/Plugin/shortcut.pm:32 #, perl-format msgid "shortcut plugin will not work without %s" msgstr "" -#: ../IkiWiki/Plugin/shortcut.pm:44 +#: ../IkiWiki/Plugin/shortcut.pm:45 msgid "missing name or url parameter" msgstr "" #. translators: This is used to display what shortcuts are defined. #. translators: First parameter is the name of the shortcut, the second #. translators: is an URL. -#: ../IkiWiki/Plugin/shortcut.pm:54 +#: ../IkiWiki/Plugin/shortcut.pm:55 #, perl-format msgid "shortcut %s points to %s" msgstr "" @@ -875,113 +883,115 @@ msgstr "" msgid "failed to parse any smileys" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:72 +#: ../IkiWiki/Plugin/sparkline.pm:73 msgid "parse error" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:78 +#: ../IkiWiki/Plugin/sparkline.pm:79 msgid "invalid featurepoint diameter" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:88 +#: ../IkiWiki/Plugin/sparkline.pm:89 msgid "invalid featurepoint location" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:99 +#: ../IkiWiki/Plugin/sparkline.pm:100 msgid "missing values" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:104 +#: ../IkiWiki/Plugin/sparkline.pm:105 msgid "invalid height value" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:111 +#: ../IkiWiki/Plugin/sparkline.pm:112 msgid "missing width parameter" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:115 +#: ../IkiWiki/Plugin/sparkline.pm:116 msgid "invalid width value" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:153 +#: ../IkiWiki/Plugin/sparkline.pm:154 msgid "failed to run php" msgstr "" -#: ../IkiWiki/Plugin/table.pm:31 +#: ../IkiWiki/Plugin/table.pm:32 msgid "cannot find file" msgstr "" -#: ../IkiWiki/Plugin/table.pm:87 +#: ../IkiWiki/Plugin/table.pm:88 msgid "unknown data format" msgstr "" -#: ../IkiWiki/Plugin/table.pm:95 +#: ../IkiWiki/Plugin/table.pm:96 msgid "empty data" msgstr "" -#: ../IkiWiki/Plugin/table.pm:114 +#: ../IkiWiki/Plugin/table.pm:115 msgid "Direct data download" msgstr "" -#: ../IkiWiki/Plugin/table.pm:148 +#: ../IkiWiki/Plugin/table.pm:149 #, perl-format msgid "parse fail at line %d: %s" msgstr "" -#: ../IkiWiki/Plugin/template.pm:29 +#: ../IkiWiki/Plugin/template.pm:34 msgid "missing id parameter" msgstr "" -#: ../IkiWiki/Plugin/template.pm:36 +#: ../IkiWiki/Plugin/template.pm:41 #, perl-format msgid "template %s not found" msgstr "" -#: ../IkiWiki/Plugin/template.pm:55 +#: ../IkiWiki/Plugin/template.pm:60 msgid "failed to process:" msgstr "" -#: ../IkiWiki/Plugin/teximg.pm:70 +#: ../IkiWiki/Plugin/teximg.pm:71 msgid "missing tex code" msgstr "" -#: ../IkiWiki/Plugin/teximg.pm:122 +#: ../IkiWiki/Plugin/teximg.pm:123 msgid "failed to generate image from code" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:89 -msgid "plugin" +#: ../IkiWiki/Plugin/websetup.pm:91 +#, perl-format +msgid "%s plugin:" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:108 +#: ../IkiWiki/Plugin/websetup.pm:107 #, perl-format -msgid "enable %s?" +msgid "%s plugins" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:244 -msgid "setup file for this wiki is not known" +#: ../IkiWiki/Plugin/websetup.pm:121 +#, perl-format +msgid "enable %s?" msgstr "" #: ../IkiWiki/Plugin/websetup.pm:260 -msgid "main" +msgid "setup file for this wiki is not known" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:261 -msgid "plugins" +#: ../IkiWiki/Plugin/websetup.pm:276 +msgid "main" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:404 +#: ../IkiWiki/Plugin/websetup.pm:419 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:408 +#: ../IkiWiki/Plugin/websetup.pm:423 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:445 +#: ../IkiWiki/Plugin/websetup.pm:460 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1055,20 +1065,20 @@ msgstr "" msgid "cannot read %s: %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:33 +#: ../IkiWiki/Setup/Automator.pm:34 msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:79 +#: ../IkiWiki/Setup/Automator.pm:80 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:105 +#: ../IkiWiki/Setup/Automator.pm:106 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:123 +#: ../IkiWiki/Setup/Automator.pm:124 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1139,25 +1149,25 @@ msgstr "" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1263 +#: ../IkiWiki.pm:1255 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "" -#: ../IkiWiki.pm:1862 +#: ../IkiWiki.pm:1854 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2005 +#: ../IkiWiki.pm:1997 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2016 +#: ../IkiWiki.pm:2008 #, perl-format msgid "unknown sort type %s" msgstr "" -#: ../IkiWiki.pm:2035 +#: ../IkiWiki.pm:2027 #, perl-format msgid "cannot match pages: %s" msgstr "" diff --git a/po/it.po b/po/it.po index 3b0f45348..cc24cccd5 100644 --- a/po/it.po +++ b/po/it.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Ikiwiki\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-22 16:04-0500\n" +"POT-Creation-Date: 2010-02-12 16:48-0500\n" "PO-Revision-Date: 2009-08-16 11:01+0100\n" "Last-Translator: Luca Bruno \n" "Language-Team: Italian TP \n" @@ -53,7 +53,7 @@ msgstr "Preferenze salvate." msgid "You are banned." msgstr "Avete ricevuto un ban." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 msgid "Error" msgstr "Errore" @@ -144,32 +144,32 @@ msgstr "fatto" msgid "Must specify %s" msgstr "Occorre specificare %s" -#: ../IkiWiki/Plugin/amazon_s3.pm:136 +#: ../IkiWiki/Plugin/amazon_s3.pm:140 msgid "Failed to create S3 bucket: " msgstr "Impossibile creare il contenitore S3: " -#: ../IkiWiki/Plugin/amazon_s3.pm:221 +#: ../IkiWiki/Plugin/amazon_s3.pm:225 msgid "Failed to save file to S3: " msgstr "Impossibile salvare il file sul S3: " -#: ../IkiWiki/Plugin/amazon_s3.pm:243 +#: ../IkiWiki/Plugin/amazon_s3.pm:247 msgid "Failed to delete file from S3: " msgstr "Impossibile eliminare il file dal S3: " -#: ../IkiWiki/Plugin/attachment.pm:49 +#: ../IkiWiki/Plugin/attachment.pm:50 #, perl-format msgid "there is already a page named %s" msgstr "esiste già una pagina chiamata %s" -#: ../IkiWiki/Plugin/attachment.pm:65 +#: ../IkiWiki/Plugin/attachment.pm:66 msgid "prohibited by allowed_attachments" msgstr "non permesso da allowed_attachments" -#: ../IkiWiki/Plugin/attachment.pm:140 +#: ../IkiWiki/Plugin/attachment.pm:141 msgid "bad attachment filename" msgstr "nome file dell'allegato non valido" -#: ../IkiWiki/Plugin/attachment.pm:182 +#: ../IkiWiki/Plugin/attachment.pm:183 msgid "attachment upload" msgstr "carica allegato" @@ -177,7 +177,7 @@ msgstr "carica allegato" msgid "automatic index generation" msgstr "generazione automatica dell'indice" -#: ../IkiWiki/Plugin/blogspam.pm:108 +#: ../IkiWiki/Plugin/blogspam.pm:109 msgid "" "Sorry, but that looks like spam to blogspam: " @@ -194,12 +194,12 @@ msgstr "%s da %s" msgid "There are no broken links!" msgstr "Non ci sono collegamenti rotti." -#: ../IkiWiki/Plugin/comments.pm:124 ../IkiWiki/Plugin/format.pm:38 +#: ../IkiWiki/Plugin/comments.pm:125 ../IkiWiki/Plugin/format.pm:48 #, perl-format msgid "unsupported page format %s" msgstr "formato pagina %s non supportato" -#: ../IkiWiki/Plugin/comments.pm:129 +#: ../IkiWiki/Plugin/comments.pm:130 msgid "comment must have content" msgstr "i commenti devono avere un contenuto" @@ -207,7 +207,7 @@ msgstr "i commenti devono avere un contenuto" msgid "Anonymous" msgstr "Anonimo" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:97 +#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "nome pagina non valido" @@ -243,7 +243,7 @@ msgstr "Aggiunto commento" msgid "Added a comment: %s" msgstr "Aggiunto commento: %s" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256 msgid "you are not logged in as an admin" msgstr "non siete autenticati come amministratore" @@ -259,127 +259,127 @@ msgstr "moderazione commento" msgid "Comments" msgstr "Commenti" -#: ../IkiWiki/Plugin/conditional.pm:27 ../IkiWiki/Plugin/cutpaste.pm:30 -#: ../IkiWiki/Plugin/cutpaste.pm:45 ../IkiWiki/Plugin/cutpaste.pm:61 +#: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 +#: ../IkiWiki/Plugin/cutpaste.pm:46 ../IkiWiki/Plugin/cutpaste.pm:62 #: ../IkiWiki/Plugin/testpagespec.pm:26 #, perl-format msgid "%s parameter is required" msgstr "parametro %s necessario" -#: ../IkiWiki/Plugin/cutpaste.pm:66 +#: ../IkiWiki/Plugin/cutpaste.pm:67 msgid "no text was copied in this page" msgstr "nessun testo è stato copiato in questa pagina" -#: ../IkiWiki/Plugin/cutpaste.pm:69 +#: ../IkiWiki/Plugin/cutpaste.pm:70 #, perl-format msgid "no text was copied in this page with id %s" msgstr "nessun testo è stato copiato in questa pagina con l'id %s" -#: ../IkiWiki/Plugin/editpage.pm:40 +#: ../IkiWiki/Plugin/editpage.pm:41 #, perl-format msgid "removing old preview %s" msgstr "rimozione vecchia anteprima %s" -#: ../IkiWiki/Plugin/editpage.pm:113 +#: ../IkiWiki/Plugin/editpage.pm:114 #, perl-format msgid "%s is not an editable page" msgstr "%s non è una pagina modificabile" -#: ../IkiWiki/Plugin/editpage.pm:292 +#: ../IkiWiki/Plugin/editpage.pm:296 #, perl-format msgid "creating %s" msgstr "creazione %s" -#: ../IkiWiki/Plugin/editpage.pm:310 ../IkiWiki/Plugin/editpage.pm:329 -#: ../IkiWiki/Plugin/editpage.pm:339 ../IkiWiki/Plugin/editpage.pm:383 -#: ../IkiWiki/Plugin/editpage.pm:422 +#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 +#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 +#: ../IkiWiki/Plugin/editpage.pm:426 #, perl-format msgid "editing %s" msgstr "modifica %s" -#: ../IkiWiki/Plugin/edittemplate.pm:51 +#: ../IkiWiki/Plugin/edittemplate.pm:52 msgid "template not specified" msgstr "modello non specificato" -#: ../IkiWiki/Plugin/edittemplate.pm:54 +#: ../IkiWiki/Plugin/edittemplate.pm:55 msgid "match not specified" msgstr "corrispondenza non specificata" -#: ../IkiWiki/Plugin/edittemplate.pm:63 +#: ../IkiWiki/Plugin/edittemplate.pm:64 #, perl-format msgid "edittemplate %s registered for %s" msgstr "edittemplate %s registrato per %s" -#: ../IkiWiki/Plugin/edittemplate.pm:137 +#: ../IkiWiki/Plugin/edittemplate.pm:138 msgid "failed to process" msgstr "errore nell'elaborazione" -#: ../IkiWiki/Plugin/format.pm:20 +#: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" msgstr "occorre specificare formato e testo" -#: ../IkiWiki/Plugin/fortune.pm:27 +#: ../IkiWiki/Plugin/fortune.pm:28 msgid "fortune failed" msgstr "errore nel fortune" -#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 +#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 msgid "missing page" msgstr "pagina mancante" -#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 +#: ../IkiWiki/Plugin/getsource.pm:66 ../IkiWiki/Plugin/goto.pm:59 #, perl-format msgid "The page %s does not exist." msgstr "La pagina %s non esiste." -#: ../IkiWiki/Plugin/getsource.pm:74 +#: ../IkiWiki/Plugin/getsource.pm:75 msgid "not a page" msgstr "non è una pagina" -#: ../IkiWiki/Plugin/getsource.pm:76 +#: ../IkiWiki/Plugin/getsource.pm:77 #, perl-format msgid "%s is an attachment, not a page." msgstr "%s è un allegato, non una pagina." -#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 +#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "non è permesso modificare %s" -#: ../IkiWiki/Plugin/git.pm:697 +#: ../IkiWiki/Plugin/git.pm:698 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "non è permesso lavorare su un file in modalità %s" -#: ../IkiWiki/Plugin/git.pm:701 +#: ../IkiWiki/Plugin/git.pm:702 msgid "you are not allowed to change file modes" msgstr "non è permesso cambiare la modalità del file" -#: ../IkiWiki/Plugin/google.pm:25 ../IkiWiki/Plugin/po.pm:131 -#: ../IkiWiki/Plugin/search.pm:36 +#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/po.pm:132 +#: ../IkiWiki/Plugin/search.pm:37 #, perl-format msgid "Must specify %s when using the %s plugin" msgstr "Occorre specificare %s quando si usa il plugin %s" -#: ../IkiWiki/Plugin/graphviz.pm:67 +#: ../IkiWiki/Plugin/graphviz.pm:68 msgid "failed to run graphviz" msgstr "errore nell'eseguire graphviz" -#: ../IkiWiki/Plugin/graphviz.pm:94 +#: ../IkiWiki/Plugin/graphviz.pm:95 msgid "prog not a valid graphviz program" msgstr "prog non è un programma graphviz valido" -#: ../IkiWiki/Plugin/highlight.pm:47 +#: ../IkiWiki/Plugin/highlight.pm:48 #, perl-format msgid "tohighlight contains unknown file type '%s'" msgstr "tohighlight contiene il tipo di file sconosciuto «%s»" -#: ../IkiWiki/Plugin/highlight.pm:58 +#: ../IkiWiki/Plugin/highlight.pm:59 #, perl-format msgid "Source code: %s" msgstr "Sorgente: %s" -#: ../IkiWiki/Plugin/highlight.pm:123 +#: ../IkiWiki/Plugin/highlight.pm:124 msgid "" "warning: highlight perl module not available; falling back to pass through" msgstr "" @@ -390,107 +390,107 @@ msgstr "" msgid "htmltidy failed to parse this html" msgstr "impossibile interpretare gli smile" -#: ../IkiWiki/Plugin/img.pm:64 +#: ../IkiWiki/Plugin/img.pm:69 msgid "Image::Magick is not installed" msgstr "Image::Magick non è installato" -#: ../IkiWiki/Plugin/img.pm:68 ../IkiWiki/Plugin/img.pm:112 +#: ../IkiWiki/Plugin/img.pm:73 ../IkiWiki/Plugin/img.pm:117 #, perl-format msgid "failed to read %s: %s" msgstr "impossibile leggere %s: %s" -#: ../IkiWiki/Plugin/img.pm:74 +#: ../IkiWiki/Plugin/img.pm:79 #, perl-format msgid "wrong size format \"%s\" (should be WxH)" msgstr "Formato dimensione «%s» non valido (dovrebbe essere LxA)" -#: ../IkiWiki/Plugin/img.pm:120 +#: ../IkiWiki/Plugin/img.pm:125 #, perl-format msgid "failed to resize: %s" msgstr "impossibile ridimensionare: %s" -#: ../IkiWiki/Plugin/img.pm:140 +#: ../IkiWiki/Plugin/img.pm:145 #, perl-format msgid "failed to determine size of image %s" msgstr "impossibile determinare la dimensione dell'immagine %s" -#: ../IkiWiki/Plugin/inline.pm:92 +#: ../IkiWiki/Plugin/inline.pm:93 msgid "Must specify url to wiki with --url when using --rss or --atom" msgstr "" "Occorre specificare l'url del wiki tramite --url quando si usa --rss o --atom" -#: ../IkiWiki/Plugin/inline.pm:138 +#: ../IkiWiki/Plugin/inline.pm:139 msgid "page editing not allowed" msgstr "modifica della pagina non ammessa" -#: ../IkiWiki/Plugin/inline.pm:155 +#: ../IkiWiki/Plugin/inline.pm:156 msgid "missing pages parameter" msgstr "parametro pagine mancante" -#: ../IkiWiki/Plugin/inline.pm:191 +#: ../IkiWiki/Plugin/inline.pm:192 #, perl-format msgid "the %s and %s parameters cannot be used together" msgstr "i parametri %s e %s non possono essere usati insieme" -#: ../IkiWiki/Plugin/inline.pm:312 +#: ../IkiWiki/Plugin/inline.pm:313 msgid "Add a new post titled:" msgstr "Aggiungere un nuovo articolo dal titolo:" -#: ../IkiWiki/Plugin/inline.pm:332 +#: ../IkiWiki/Plugin/inline.pm:333 #, perl-format msgid "nonexistant template %s" msgstr "modello %s non esistente" -#: ../IkiWiki/Plugin/inline.pm:624 +#: ../IkiWiki/Plugin/inline.pm:625 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client non trovato, impossibile inviare ping" -#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 -#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 +#: ../IkiWiki/Plugin/linkmap.pm:81 ../IkiWiki/Plugin/linkmap.pm:88 +#: ../IkiWiki/Plugin/linkmap.pm:92 ../IkiWiki/Plugin/linkmap.pm:95 msgid "failed to run dot" msgstr "impossibile eseguire dot" -#: ../IkiWiki/Plugin/linkmap.pm:84 +#: ../IkiWiki/Plugin/linkmap.pm:85 msgid "linkmap" msgstr "" -#: ../IkiWiki/Plugin/lockedit.pm:48 +#: ../IkiWiki/Plugin/lockedit.pm:49 #, perl-format msgid "%s is locked and cannot be edited" msgstr "%s è bloccata e non può essere modificata" -#: ../IkiWiki/Plugin/mdwn.pm:44 +#: ../IkiWiki/Plugin/mdwn.pm:45 msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed" msgstr "" "multimarkdown è stato abilitato, ma Text::MultiMarkdown non è aggiornato" -#: ../IkiWiki/Plugin/mdwn.pm:69 +#: ../IkiWiki/Plugin/mdwn.pm:70 #, perl-format msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" "impossibile caricare il modulo perl Markdown.pm (%s) o /usr/bin/markdown (%s)" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:162 msgid "stylesheet not found" msgstr "foglio di stile non trovato" -#: ../IkiWiki/Plugin/meta.pm:199 +#: ../IkiWiki/Plugin/meta.pm:200 msgid "redir page not found" msgstr "pagina di reindirizzamento non trovata" -#: ../IkiWiki/Plugin/meta.pm:213 +#: ../IkiWiki/Plugin/meta.pm:214 msgid "redir cycle is not allowed" msgstr "ciclo di reindirizzamento non ammesso" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Mirror" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirror" msgstr "Mirror" -#: ../IkiWiki/Plugin/moderatedcomments.pm:41 +#: ../IkiWiki/Plugin/moderatedcomments.pm:42 #, fuzzy msgid "comment needs moderation" msgstr "moderazione commento" @@ -499,19 +499,19 @@ msgstr "moderazione commento" msgid "more" msgstr "altro" -#: ../IkiWiki/Plugin/norcs.pm:65 +#: ../IkiWiki/Plugin/norcs.pm:66 msgid "getctime not implemented" msgstr "getctime non implementata" -#: ../IkiWiki/Plugin/openid.pm:61 +#: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "Accedi tramite" -#: ../IkiWiki/Plugin/openid.pm:64 +#: ../IkiWiki/Plugin/openid.pm:65 msgid "Get an OpenID" msgstr "Ottieni un OpenID" -#: ../IkiWiki/Plugin/orphans.pm:55 +#: ../IkiWiki/Plugin/orphans.pm:56 msgid "All pages have other pages linking to them." msgstr "Tutte le pagine hanno collegamenti in entrata da altre pagine." @@ -519,34 +519,42 @@ msgstr "Tutte le pagine hanno collegamenti in entrata da altre pagine." msgid "bad or missing template" msgstr "modello errato o mancante" -#: ../IkiWiki/Plugin/passwordauth.pm:248 +#: ../IkiWiki/Plugin/passwordauth.pm:229 +msgid "Your user page: " +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:236 +msgid "Create your user page" +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:264 msgid "Account creation successful. Now you can Login." msgstr "Account creato con successo. È ora possibile effettuare l'accesso." -#: ../IkiWiki/Plugin/passwordauth.pm:251 +#: ../IkiWiki/Plugin/passwordauth.pm:267 msgid "Error creating account." msgstr "Errore nella creazione dell'account." -#: ../IkiWiki/Plugin/passwordauth.pm:258 +#: ../IkiWiki/Plugin/passwordauth.pm:274 msgid "No email address, so cannot email password reset instructions." msgstr "" "Nessun indirizzo email, impossibile inviare per email le istruzioni per " "reimpostare la password." -#: ../IkiWiki/Plugin/passwordauth.pm:292 +#: ../IkiWiki/Plugin/passwordauth.pm:308 msgid "Failed to send mail" msgstr "Impossibile spedire il messaggio" -#: ../IkiWiki/Plugin/passwordauth.pm:294 +#: ../IkiWiki/Plugin/passwordauth.pm:310 msgid "You have been mailed password reset instructions." msgstr "" "Il messaggio con le istruzioni per reimpostare la password è stato inviato." -#: ../IkiWiki/Plugin/passwordauth.pm:329 +#: ../IkiWiki/Plugin/passwordauth.pm:345 msgid "incorrect password reset url" msgstr "url per il reset della password non corretto" -#: ../IkiWiki/Plugin/passwordauth.pm:332 +#: ../IkiWiki/Plugin/passwordauth.pm:348 msgid "password reset denied" msgstr "reset della password non permesso" @@ -578,19 +586,19 @@ msgstr "" "attenzione: è presente un vecchio po4a. Si raccomanda di aggiornare almeno " "alla versione 0.35." -#: ../IkiWiki/Plugin/po.pm:138 +#: ../IkiWiki/Plugin/po.pm:139 #, perl-format msgid "%s is not a valid language code" msgstr "%s non è una codifica di lingua valida" -#: ../IkiWiki/Plugin/po.pm:150 +#: ../IkiWiki/Plugin/po.pm:151 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" "%s non è un valore per po_link_to valido, verrà utilizzato po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:155 +#: ../IkiWiki/Plugin/po.pm:156 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" @@ -598,21 +606,21 @@ msgstr "" "po_link_to=negotiated richiede che venga abilitato usedirs, verrà utilizzato " "po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:385 +#: ../IkiWiki/Plugin/po.pm:386 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "rigenerazione di tutte le pagine per sistemare i meta-titoli" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 #, perl-format msgid "building %s" msgstr "compilazione di %s" -#: ../IkiWiki/Plugin/po.pm:427 +#: ../IkiWiki/Plugin/po.pm:428 msgid "updated PO files" msgstr "file PO aggiornati" -#: ../IkiWiki/Plugin/po.pm:451 +#: ../IkiWiki/Plugin/po.pm:452 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." @@ -620,7 +628,7 @@ msgstr "" "Impossibile eliminare una traduzione. Tuttavia, se la pagina principale è " "stata eliminata anche le traduzioni lo saranno." -#: ../IkiWiki/Plugin/po.pm:471 +#: ../IkiWiki/Plugin/po.pm:472 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." @@ -628,76 +636,76 @@ msgstr "" "Impossibile rinominare una traduzione. Tuttavia, se la pagina principale è " "stata rinominata anche le traduzioni lo saranno." -#: ../IkiWiki/Plugin/po.pm:870 +#: ../IkiWiki/Plugin/po.pm:871 #, perl-format msgid "POT file (%s) does not exist" msgstr "Il file POT (%s) non esiste" -#: ../IkiWiki/Plugin/po.pm:884 +#: ../IkiWiki/Plugin/po.pm:885 #, perl-format msgid "failed to copy underlay PO file to %s" msgstr "impossibile copiare il file PO di underlay in %s" -#: ../IkiWiki/Plugin/po.pm:893 +#: ../IkiWiki/Plugin/po.pm:894 #, perl-format msgid "failed to update %s" msgstr "impossibile aggiornare %s" -#: ../IkiWiki/Plugin/po.pm:899 +#: ../IkiWiki/Plugin/po.pm:900 #, perl-format msgid "failed to copy the POT file to %s" msgstr "impossibile copiare il file POT in %s" -#: ../IkiWiki/Plugin/po.pm:935 +#: ../IkiWiki/Plugin/po.pm:936 msgid "N/A" msgstr "N/D" -#: ../IkiWiki/Plugin/po.pm:948 +#: ../IkiWiki/Plugin/po.pm:949 #, perl-format msgid "failed to translate %s" msgstr "impossibile tradurre %s" -#: ../IkiWiki/Plugin/po.pm:1032 +#: ../IkiWiki/Plugin/po.pm:1033 msgid "removed obsolete PO files" msgstr "file PO obsoleti rimossi" -#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 -#: ../IkiWiki/Plugin/po.pm:1141 +#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 +#: ../IkiWiki/Plugin/po.pm:1142 #, perl-format msgid "failed to write %s" msgstr "impossibile scrivere %s" -#: ../IkiWiki/Plugin/po.pm:1100 +#: ../IkiWiki/Plugin/po.pm:1101 msgid "failed to translate" msgstr "impossibile tradurre" -#: ../IkiWiki/Plugin/po.pm:1153 +#: ../IkiWiki/Plugin/po.pm:1154 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" "dati gettext non validi, tornare alle pagina precedente per continuare le " "modifiche" -#: ../IkiWiki/Plugin/poll.pm:69 +#: ../IkiWiki/Plugin/poll.pm:70 msgid "vote" msgstr "voto" -#: ../IkiWiki/Plugin/poll.pm:77 +#: ../IkiWiki/Plugin/poll.pm:78 msgid "Total votes:" msgstr "Voti totali:" -#: ../IkiWiki/Plugin/polygen.pm:41 +#: ../IkiWiki/Plugin/polygen.pm:42 msgid "polygen not installed" msgstr "polygen non è installato" -#: ../IkiWiki/Plugin/polygen.pm:60 +#: ../IkiWiki/Plugin/polygen.pm:61 msgid "command failed" msgstr "errore nel comando" -#: ../IkiWiki/Plugin/postsparkline.pm:46 +#: ../IkiWiki/Plugin/postsparkline.pm:47 msgid "missing formula" msgstr "formula mancante" -#: ../IkiWiki/Plugin/postsparkline.pm:53 +#: ../IkiWiki/Plugin/postsparkline.pm:54 msgid "unknown formula" msgstr "formula sconosciuta" @@ -765,12 +773,12 @@ msgstr "a mezzanotte" msgid "at noon on %A" msgstr "%A a mezzogiorno" -#: ../IkiWiki/Plugin/progress.pm:34 +#: ../IkiWiki/Plugin/progress.pm:35 #, perl-format msgid "illegal percent value %s" msgstr "valore percentuale %s non ammesso" -#: ../IkiWiki/Plugin/progress.pm:55 +#: ../IkiWiki/Plugin/progress.pm:56 msgid "need either `percent` or `totalpages` and `donepages` parameters" msgstr "" "occorrono alternativamente i parametri \"percent\" o \"totalpages\" e " @@ -780,81 +788,81 @@ msgstr "" msgid "(Diff truncated)" msgstr "(Diff troncato)" -#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36 +#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:37 #, perl-format msgid "%s does not exist" msgstr "%s non esiste" -#: ../IkiWiki/Plugin/remove.pm:38 +#: ../IkiWiki/Plugin/remove.pm:39 #, perl-format msgid "%s is not in the srcdir, so it cannot be deleted" msgstr "%s non è in src, quindi non può essere eliminato" -#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45 +#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:46 #, perl-format msgid "%s is not a file" msgstr "%s non è un file" -#: ../IkiWiki/Plugin/remove.pm:134 +#: ../IkiWiki/Plugin/remove.pm:135 #, perl-format msgid "confirm removal of %s" msgstr "conferma rimozione di %s" -#: ../IkiWiki/Plugin/remove.pm:171 +#: ../IkiWiki/Plugin/remove.pm:172 msgid "Please select the attachments to remove." msgstr "Selezionare l'allegato da rimuovere." -#: ../IkiWiki/Plugin/remove.pm:211 +#: ../IkiWiki/Plugin/remove.pm:212 msgid "removed" msgstr "rimosso" -#: ../IkiWiki/Plugin/rename.pm:42 +#: ../IkiWiki/Plugin/rename.pm:43 #, perl-format msgid "%s is not in the srcdir, so it cannot be renamed" msgstr "%s non è in src, quindi non può essere rinominato" -#: ../IkiWiki/Plugin/rename.pm:62 +#: ../IkiWiki/Plugin/rename.pm:63 msgid "no change to the file name was specified" msgstr "non è stata specificata nessuna modifica al nome del file" -#: ../IkiWiki/Plugin/rename.pm:68 +#: ../IkiWiki/Plugin/rename.pm:69 #, perl-format msgid "illegal name" msgstr "nome non valido" -#: ../IkiWiki/Plugin/rename.pm:73 +#: ../IkiWiki/Plugin/rename.pm:74 #, perl-format msgid "%s already exists" msgstr "%s esiste già" -#: ../IkiWiki/Plugin/rename.pm:79 +#: ../IkiWiki/Plugin/rename.pm:80 #, perl-format msgid "%s already exists on disk" msgstr "%s già presente su disco" -#: ../IkiWiki/Plugin/rename.pm:122 +#: ../IkiWiki/Plugin/rename.pm:123 #, perl-format msgid "rename %s" msgstr "rinomina di %s" -#: ../IkiWiki/Plugin/rename.pm:161 +#: ../IkiWiki/Plugin/rename.pm:162 msgid "Also rename SubPages and attachments" msgstr "Rinomina anche SottoPagine e allegati" -#: ../IkiWiki/Plugin/rename.pm:248 +#: ../IkiWiki/Plugin/rename.pm:249 msgid "Only one attachment can be renamed at a time." msgstr "Si può rinominare un solo allegato alla volta." -#: ../IkiWiki/Plugin/rename.pm:251 +#: ../IkiWiki/Plugin/rename.pm:252 msgid "Please select the attachment to rename." msgstr "Selezionare l'allegato da rinominare." -#: ../IkiWiki/Plugin/rename.pm:348 +#: ../IkiWiki/Plugin/rename.pm:349 #, perl-format msgid "rename %s to %s" msgstr "rinomina %s in %s" -#: ../IkiWiki/Plugin/rename.pm:572 +#: ../IkiWiki/Plugin/rename.pm:573 #, perl-format msgid "update for rename of %s to %s" msgstr "aggiornamento per rinomina di %s in %s" @@ -869,28 +877,28 @@ msgstr "impossibile leggere %s" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:182 +#: ../IkiWiki/Plugin/search.pm:183 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "è necessario Digest::SHA1 per l'indice di %s" -#: ../IkiWiki/Plugin/search.pm:217 +#: ../IkiWiki/Plugin/search.pm:218 msgid "search" msgstr "cerca" -#: ../IkiWiki/Plugin/shortcut.pm:31 +#: ../IkiWiki/Plugin/shortcut.pm:32 #, perl-format msgid "shortcut plugin will not work without %s" msgstr "il plugin scorciatoia non può funzionare senza %s" -#: ../IkiWiki/Plugin/shortcut.pm:44 +#: ../IkiWiki/Plugin/shortcut.pm:45 msgid "missing name or url parameter" msgstr "parametro nome o url mancante" #. translators: This is used to display what shortcuts are defined. #. translators: First parameter is the name of the shortcut, the second #. translators: is an URL. -#: ../IkiWiki/Plugin/shortcut.pm:54 +#: ../IkiWiki/Plugin/shortcut.pm:55 #, perl-format msgid "shortcut %s points to %s" msgstr "la scorciatoia %s punta a %s" @@ -899,109 +907,111 @@ msgstr "la scorciatoia %s punta a %s" msgid "failed to parse any smileys" msgstr "impossibile interpretare gli smile" -#: ../IkiWiki/Plugin/sparkline.pm:72 +#: ../IkiWiki/Plugin/sparkline.pm:73 msgid "parse error" msgstr "errore nell'interpretazione" -#: ../IkiWiki/Plugin/sparkline.pm:78 +#: ../IkiWiki/Plugin/sparkline.pm:79 msgid "invalid featurepoint diameter" msgstr "Diametro featurepoint non valido" -#: ../IkiWiki/Plugin/sparkline.pm:88 +#: ../IkiWiki/Plugin/sparkline.pm:89 msgid "invalid featurepoint location" msgstr "Posizione featurepoint non valida" -#: ../IkiWiki/Plugin/sparkline.pm:99 +#: ../IkiWiki/Plugin/sparkline.pm:100 msgid "missing values" msgstr "valori mancanti" -#: ../IkiWiki/Plugin/sparkline.pm:104 +#: ../IkiWiki/Plugin/sparkline.pm:105 msgid "invalid height value" msgstr "valore altezza non valido" -#: ../IkiWiki/Plugin/sparkline.pm:111 +#: ../IkiWiki/Plugin/sparkline.pm:112 msgid "missing width parameter" msgstr "parametro larghezza mancante" -#: ../IkiWiki/Plugin/sparkline.pm:115 +#: ../IkiWiki/Plugin/sparkline.pm:116 msgid "invalid width value" msgstr "valore larghezza non valido" -#: ../IkiWiki/Plugin/sparkline.pm:153 +#: ../IkiWiki/Plugin/sparkline.pm:154 msgid "failed to run php" msgstr "impossibile eseguire php" -#: ../IkiWiki/Plugin/table.pm:31 +#: ../IkiWiki/Plugin/table.pm:32 msgid "cannot find file" msgstr "impossibile trovare il file" -#: ../IkiWiki/Plugin/table.pm:87 +#: ../IkiWiki/Plugin/table.pm:88 msgid "unknown data format" msgstr "formato dati sconosiuto" -#: ../IkiWiki/Plugin/table.pm:95 +#: ../IkiWiki/Plugin/table.pm:96 msgid "empty data" msgstr "nessun dato" -#: ../IkiWiki/Plugin/table.pm:114 +#: ../IkiWiki/Plugin/table.pm:115 msgid "Direct data download" msgstr "Scaricamento diretto dei dati" -#: ../IkiWiki/Plugin/table.pm:148 +#: ../IkiWiki/Plugin/table.pm:149 #, perl-format msgid "parse fail at line %d: %s" msgstr "errore di interpretazione alla riga %d: %s" -#: ../IkiWiki/Plugin/template.pm:29 +#: ../IkiWiki/Plugin/template.pm:34 msgid "missing id parameter" msgstr "parametro id mancante" -#: ../IkiWiki/Plugin/template.pm:36 +#: ../IkiWiki/Plugin/template.pm:41 #, perl-format msgid "template %s not found" msgstr "modello %s non trovato" -#: ../IkiWiki/Plugin/template.pm:55 +#: ../IkiWiki/Plugin/template.pm:60 msgid "failed to process:" msgstr "errore nell'elaborazione:" -#: ../IkiWiki/Plugin/teximg.pm:70 +#: ../IkiWiki/Plugin/teximg.pm:71 msgid "missing tex code" msgstr "codice tex mancante" -#: ../IkiWiki/Plugin/teximg.pm:122 +#: ../IkiWiki/Plugin/teximg.pm:123 msgid "failed to generate image from code" msgstr "impossibile generare l'immagine dal codice" -#: ../IkiWiki/Plugin/websetup.pm:89 -msgid "plugin" +#: ../IkiWiki/Plugin/websetup.pm:91 +#, fuzzy, perl-format +msgid "%s plugin:" +msgstr "plugin" + +#: ../IkiWiki/Plugin/websetup.pm:107 +#, fuzzy, perl-format +msgid "%s plugins" msgstr "plugin" -#: ../IkiWiki/Plugin/websetup.pm:108 +#: ../IkiWiki/Plugin/websetup.pm:121 #, perl-format msgid "enable %s?" msgstr "abilitare %s?" -#: ../IkiWiki/Plugin/websetup.pm:244 +#: ../IkiWiki/Plugin/websetup.pm:260 msgid "setup file for this wiki is not known" msgstr "il file di setup di questo wiki non è noto" -#: ../IkiWiki/Plugin/websetup.pm:260 +#: ../IkiWiki/Plugin/websetup.pm:276 msgid "main" msgstr "principale" -#: ../IkiWiki/Plugin/websetup.pm:261 -msgid "plugins" -msgstr "plugin" - -#: ../IkiWiki/Plugin/websetup.pm:404 +#: ../IkiWiki/Plugin/websetup.pm:419 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" "Le sottostanti modifiche alla configurazione richiedono la ricompilazione " "del wiki." -#: ../IkiWiki/Plugin/websetup.pm:408 +#: ../IkiWiki/Plugin/websetup.pm:423 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." @@ -1009,7 +1019,7 @@ msgstr "" "Affinché le sottostanti modifiche alla configurazione abbiano effetto, " "occorre ricostruire il wiki." -#: ../IkiWiki/Plugin/websetup.pm:445 +#: ../IkiWiki/Plugin/websetup.pm:460 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "Errore: %s è terminato con errore (%s). Modifiche al setup scartate." @@ -1085,20 +1095,20 @@ msgstr "ikiwiki: impossibile compilare %s" msgid "cannot read %s: %s" msgstr "impossibile leggere %s: %s" -#: ../IkiWiki/Setup/Automator.pm:33 +#: ../IkiWiki/Setup/Automator.pm:34 msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "occorre inserire un wikiname (contente caratteri alfanumerici)" -#: ../IkiWiki/Setup/Automator.pm:79 +#: ../IkiWiki/Setup/Automator.pm:80 #, perl-format msgid "unsupported revision control system %s" msgstr "sistema di controllo di revisione %s non supportato" -#: ../IkiWiki/Setup/Automator.pm:105 +#: ../IkiWiki/Setup/Automator.pm:106 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "impossibile creare un repository tramite ikiwiki-makerepo" -#: ../IkiWiki/Setup/Automator.pm:123 +#: ../IkiWiki/Setup/Automator.pm:124 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1170,25 +1180,25 @@ msgstr "impossibile usare più plugin rcs" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "impossibile caricare il plugin esterno per il plugin %s: %s" -#: ../IkiWiki.pm:1263 +#: ../IkiWiki.pm:1255 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "ciclo del preprocessore individuato su %s alla profondità %i" -#: ../IkiWiki.pm:1862 +#: ../IkiWiki.pm:1854 msgid "yes" msgstr "sì" -#: ../IkiWiki.pm:2005 +#: ../IkiWiki.pm:1997 msgid "Sort::Naturally needed for title_natural sort" msgstr "Sort::Naturally è richiesto per l'ordinamento title_natural" -#: ../IkiWiki.pm:2016 +#: ../IkiWiki.pm:2008 #, perl-format msgid "unknown sort type %s" msgstr "ordinamento %s sconosciuto" -#: ../IkiWiki.pm:2035 +#: ../IkiWiki.pm:2027 #, perl-format msgid "cannot match pages: %s" msgstr "impossibile trovare pagine corrispondenti: %s" diff --git a/po/pl.po b/po/pl.po index 203155cfb..5c8fc1390 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: 2010-01-22 16:04-0500\n" +"POT-Creation-Date: 2010-02-12 16:48-0500\n" "PO-Revision-Date: 2007-04-27 22:05+0200\n" "Last-Translator: Pawel Tecza \n" "Language-Team: Debian L10n Polish \n" @@ -57,7 +57,7 @@ msgstr "Preferencje zapisane." msgid "You are banned." msgstr "Twój dostęp został zabroniony przez administratora." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 msgid "Error" msgstr "Błąd" @@ -148,35 +148,35 @@ msgstr "gotowe" msgid "Must specify %s" msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:136 +#: ../IkiWiki/Plugin/amazon_s3.pm:140 #, fuzzy msgid "Failed to create S3 bucket: " msgstr "Awaria w trakcie wysyłania wiadomości" -#: ../IkiWiki/Plugin/amazon_s3.pm:221 +#: ../IkiWiki/Plugin/amazon_s3.pm:225 #, fuzzy msgid "Failed to save file to S3: " msgstr "Awaria w trakcie wysyłania wiadomości" -#: ../IkiWiki/Plugin/amazon_s3.pm:243 +#: ../IkiWiki/Plugin/amazon_s3.pm:247 #, fuzzy msgid "Failed to delete file from S3: " msgstr "awaria w trakcie zmiany rozmiaru: %s" -#: ../IkiWiki/Plugin/attachment.pm:49 +#: ../IkiWiki/Plugin/attachment.pm:50 #, perl-format msgid "there is already a page named %s" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:65 +#: ../IkiWiki/Plugin/attachment.pm:66 msgid "prohibited by allowed_attachments" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:140 +#: ../IkiWiki/Plugin/attachment.pm:141 msgid "bad attachment filename" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:182 +#: ../IkiWiki/Plugin/attachment.pm:183 msgid "attachment upload" msgstr "" @@ -184,7 +184,7 @@ msgstr "" msgid "automatic index generation" msgstr "" -#: ../IkiWiki/Plugin/blogspam.pm:108 +#: ../IkiWiki/Plugin/blogspam.pm:109 msgid "" "Sorry, but that looks like spam to blogspam: " @@ -199,12 +199,12 @@ msgstr "" msgid "There are no broken links!" msgstr "Wszystkie odnośniki są aktualne!" -#: ../IkiWiki/Plugin/comments.pm:124 ../IkiWiki/Plugin/format.pm:38 +#: ../IkiWiki/Plugin/comments.pm:125 ../IkiWiki/Plugin/format.pm:48 #, perl-format msgid "unsupported page format %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:129 +#: ../IkiWiki/Plugin/comments.pm:130 msgid "comment must have content" msgstr "" @@ -212,7 +212,7 @@ msgstr "" msgid "Anonymous" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:97 +#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "" @@ -248,7 +248,7 @@ msgstr "" msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256 msgid "you are not logged in as an admin" msgstr "" @@ -264,133 +264,133 @@ msgstr "" msgid "Comments" msgstr "" -#: ../IkiWiki/Plugin/conditional.pm:27 ../IkiWiki/Plugin/cutpaste.pm:30 -#: ../IkiWiki/Plugin/cutpaste.pm:45 ../IkiWiki/Plugin/cutpaste.pm:61 +#: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 +#: ../IkiWiki/Plugin/cutpaste.pm:46 ../IkiWiki/Plugin/cutpaste.pm:62 #: ../IkiWiki/Plugin/testpagespec.pm:26 #, fuzzy, perl-format msgid "%s parameter is required" msgstr "Parametry \"test\" i \"then\" są wymagane" -#: ../IkiWiki/Plugin/cutpaste.pm:66 +#: ../IkiWiki/Plugin/cutpaste.pm:67 msgid "no text was copied in this page" msgstr "" -#: ../IkiWiki/Plugin/cutpaste.pm:69 +#: ../IkiWiki/Plugin/cutpaste.pm:70 #, perl-format msgid "no text was copied in this page with id %s" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:40 +#: ../IkiWiki/Plugin/editpage.pm:41 #, fuzzy, perl-format msgid "removing old preview %s" msgstr "usuwanie starej strony %s" -#: ../IkiWiki/Plugin/editpage.pm:113 +#: ../IkiWiki/Plugin/editpage.pm:114 #, perl-format msgid "%s is not an editable page" msgstr "Strona %s nie może być edytowana" -#: ../IkiWiki/Plugin/editpage.pm:292 +#: ../IkiWiki/Plugin/editpage.pm:296 #, perl-format msgid "creating %s" msgstr "tworzenie %s" -#: ../IkiWiki/Plugin/editpage.pm:310 ../IkiWiki/Plugin/editpage.pm:329 -#: ../IkiWiki/Plugin/editpage.pm:339 ../IkiWiki/Plugin/editpage.pm:383 -#: ../IkiWiki/Plugin/editpage.pm:422 +#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 +#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 +#: ../IkiWiki/Plugin/editpage.pm:426 #, perl-format msgid "editing %s" msgstr "edycja %s" -#: ../IkiWiki/Plugin/edittemplate.pm:51 +#: ../IkiWiki/Plugin/edittemplate.pm:52 #, fuzzy msgid "template not specified" msgstr "nieznaleziony szablon %s" -#: ../IkiWiki/Plugin/edittemplate.pm:54 +#: ../IkiWiki/Plugin/edittemplate.pm:55 #, fuzzy msgid "match not specified" msgstr "nieokreślona nazwa pliku osłony" -#: ../IkiWiki/Plugin/edittemplate.pm:63 +#: ../IkiWiki/Plugin/edittemplate.pm:64 #, perl-format msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:137 +#: ../IkiWiki/Plugin/edittemplate.pm:138 #, fuzzy msgid "failed to process" msgstr "awaria w trakcie przetwarzania:" -#: ../IkiWiki/Plugin/format.pm:20 +#: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" msgstr "" -#: ../IkiWiki/Plugin/fortune.pm:27 +#: ../IkiWiki/Plugin/fortune.pm:28 msgid "fortune failed" msgstr "awaria fortunki" -#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 +#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 #, fuzzy msgid "missing page" msgstr "brakujące wartości" -#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 +#: ../IkiWiki/Plugin/getsource.pm:66 ../IkiWiki/Plugin/goto.pm:59 #, perl-format msgid "The page %s does not exist." msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:74 +#: ../IkiWiki/Plugin/getsource.pm:75 #, fuzzy msgid "not a page" msgstr "awaria w trakcie odczytu %s: %s" -#: ../IkiWiki/Plugin/getsource.pm:76 +#: ../IkiWiki/Plugin/getsource.pm:77 #, fuzzy, perl-format msgid "%s is an attachment, not a page." msgstr "Strona %s nie może być edytowana" -#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 +#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:697 +#: ../IkiWiki/Plugin/git.pm:698 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:701 +#: ../IkiWiki/Plugin/git.pm:702 msgid "you are not allowed to change file modes" msgstr "" -#: ../IkiWiki/Plugin/google.pm:25 ../IkiWiki/Plugin/po.pm:131 -#: ../IkiWiki/Plugin/search.pm:36 +#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/po.pm:132 +#: ../IkiWiki/Plugin/search.pm:37 #, fuzzy, perl-format msgid "Must specify %s when using the %s plugin" msgstr "Wtyczka do wyszukiwarka wymaga podania %s" -#: ../IkiWiki/Plugin/graphviz.pm:67 +#: ../IkiWiki/Plugin/graphviz.pm:68 #, fuzzy msgid "failed to run graphviz" msgstr "awaria w trakcie uruchamiania wtyczki graphviz" -#: ../IkiWiki/Plugin/graphviz.pm:94 +#: ../IkiWiki/Plugin/graphviz.pm:95 msgid "prog not a valid graphviz program" msgstr "prog nie jest poprawnym programem graphviz" -#: ../IkiWiki/Plugin/highlight.pm:47 +#: ../IkiWiki/Plugin/highlight.pm:48 #, perl-format msgid "tohighlight contains unknown file type '%s'" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:58 +#: ../IkiWiki/Plugin/highlight.pm:59 #, perl-format msgid "Source code: %s" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:123 +#: ../IkiWiki/Plugin/highlight.pm:124 msgid "" "warning: highlight perl module not available; falling back to pass through" msgstr "" @@ -400,117 +400,117 @@ msgstr "" msgid "htmltidy failed to parse this html" msgstr "awaria w trakcie przetwarzania emitoikonki" -#: ../IkiWiki/Plugin/img.pm:64 +#: ../IkiWiki/Plugin/img.pm:69 #, fuzzy msgid "Image::Magick is not installed" msgstr "wtyczka polygen nie jest zainstalowana" -#: ../IkiWiki/Plugin/img.pm:68 ../IkiWiki/Plugin/img.pm:112 +#: ../IkiWiki/Plugin/img.pm:73 ../IkiWiki/Plugin/img.pm:117 #, fuzzy, perl-format msgid "failed to read %s: %s" msgstr "awaria w trakcie odczytu %s: %s" -#: ../IkiWiki/Plugin/img.pm:74 +#: ../IkiWiki/Plugin/img.pm:79 #, perl-format msgid "wrong size format \"%s\" (should be WxH)" msgstr "" -#: ../IkiWiki/Plugin/img.pm:120 +#: ../IkiWiki/Plugin/img.pm:125 #, fuzzy, perl-format msgid "failed to resize: %s" msgstr "awaria w trakcie zmiany rozmiaru: %s" -#: ../IkiWiki/Plugin/img.pm:140 +#: ../IkiWiki/Plugin/img.pm:145 #, fuzzy, perl-format msgid "failed to determine size of image %s" msgstr "awaria w trakcie zmiany rozmiaru: %s" -#: ../IkiWiki/Plugin/inline.pm:92 +#: ../IkiWiki/Plugin/inline.pm:93 msgid "Must specify url to wiki with --url when using --rss or --atom" msgstr "" "Użycie parametru --rss lub --atom wymaga podania adresu URL do wiki za " "pomocą parametru --url" -#: ../IkiWiki/Plugin/inline.pm:138 +#: ../IkiWiki/Plugin/inline.pm:139 #, fuzzy msgid "page editing not allowed" msgstr "nieznaleziony kanał RSS" -#: ../IkiWiki/Plugin/inline.pm:155 +#: ../IkiWiki/Plugin/inline.pm:156 #, fuzzy msgid "missing pages parameter" msgstr "brakujący parametr %s" -#: ../IkiWiki/Plugin/inline.pm:191 +#: ../IkiWiki/Plugin/inline.pm:192 #, perl-format msgid "the %s and %s parameters cannot be used together" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:312 +#: ../IkiWiki/Plugin/inline.pm:313 msgid "Add a new post titled:" msgstr "Tytuł nowego wpisu" -#: ../IkiWiki/Plugin/inline.pm:332 +#: ../IkiWiki/Plugin/inline.pm:333 #, perl-format msgid "nonexistant template %s" msgstr "brakujący szablon %s" -#: ../IkiWiki/Plugin/inline.pm:624 +#: ../IkiWiki/Plugin/inline.pm:625 msgid "RPC::XML::Client not found, not pinging" msgstr "Nieznaleziony moduł RPC::XML::Client, brak możliwości pingowania" -#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 -#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 +#: ../IkiWiki/Plugin/linkmap.pm:81 ../IkiWiki/Plugin/linkmap.pm:88 +#: ../IkiWiki/Plugin/linkmap.pm:92 ../IkiWiki/Plugin/linkmap.pm:95 #, fuzzy msgid "failed to run dot" msgstr "awaria w trakcie uruchamiania dot" -#: ../IkiWiki/Plugin/linkmap.pm:84 +#: ../IkiWiki/Plugin/linkmap.pm:85 msgid "linkmap" msgstr "" -#: ../IkiWiki/Plugin/lockedit.pm:48 +#: ../IkiWiki/Plugin/lockedit.pm:49 #, fuzzy, perl-format msgid "%s is locked and cannot be edited" msgstr "" "strona %s jest tymczasowo zablokowana przez użytkownika %s i nie może być " "teraz edytowana" -#: ../IkiWiki/Plugin/mdwn.pm:44 +#: ../IkiWiki/Plugin/mdwn.pm:45 msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed" msgstr "" -#: ../IkiWiki/Plugin/mdwn.pm:69 +#: ../IkiWiki/Plugin/mdwn.pm:70 #, perl-format msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" "Awaria w trakcie ładowania perlowego modułu Markdown.pm (%s) lub " "uruchamiania programu /usr/bin/markdown (%s)" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:162 #, fuzzy msgid "stylesheet not found" msgstr "nieznaleziony szablon ze stylami CSS" -#: ../IkiWiki/Plugin/meta.pm:199 +#: ../IkiWiki/Plugin/meta.pm:200 #, fuzzy msgid "redir page not found" msgstr "nieznaleziony kanał RSS" -#: ../IkiWiki/Plugin/meta.pm:213 +#: ../IkiWiki/Plugin/meta.pm:214 #, fuzzy msgid "redir cycle is not allowed" msgstr "nieznaleziony kanał RSS" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Kopie lustrzane" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirror" msgstr "Kopia lustrzana" -#: ../IkiWiki/Plugin/moderatedcomments.pm:41 +#: ../IkiWiki/Plugin/moderatedcomments.pm:42 msgid "comment needs moderation" msgstr "" @@ -518,19 +518,19 @@ msgstr "" msgid "more" msgstr "więcej" -#: ../IkiWiki/Plugin/norcs.pm:65 +#: ../IkiWiki/Plugin/norcs.pm:66 msgid "getctime not implemented" msgstr "niedostępna funkcja getctime" -#: ../IkiWiki/Plugin/openid.pm:61 +#: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "" -#: ../IkiWiki/Plugin/openid.pm:64 +#: ../IkiWiki/Plugin/openid.pm:65 msgid "Get an OpenID" msgstr "Pobierz OpenID" -#: ../IkiWiki/Plugin/orphans.pm:55 +#: ../IkiWiki/Plugin/orphans.pm:56 #, fuzzy msgid "All pages have other pages linking to them." msgstr "Dla każdej strony istnieje odnośnik z innej strony" @@ -539,31 +539,39 @@ msgstr "Dla każdej strony istnieje odnośnik z innej strony" msgid "bad or missing template" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:248 +#: ../IkiWiki/Plugin/passwordauth.pm:229 +msgid "Your user page: " +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:236 +msgid "Create your user page" +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:264 msgid "Account creation successful. Now you can Login." msgstr "Konto założone pomyślnie. Teraz można zalogować się." -#: ../IkiWiki/Plugin/passwordauth.pm:251 +#: ../IkiWiki/Plugin/passwordauth.pm:267 msgid "Error creating account." msgstr "Błąd w trakcie zakładania konta." -#: ../IkiWiki/Plugin/passwordauth.pm:258 +#: ../IkiWiki/Plugin/passwordauth.pm:274 msgid "No email address, so cannot email password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:292 +#: ../IkiWiki/Plugin/passwordauth.pm:308 msgid "Failed to send mail" msgstr "Awaria w trakcie wysyłania wiadomości" -#: ../IkiWiki/Plugin/passwordauth.pm:294 +#: ../IkiWiki/Plugin/passwordauth.pm:310 msgid "You have been mailed password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:329 +#: ../IkiWiki/Plugin/passwordauth.pm:345 msgid "incorrect password reset url" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:332 +#: ../IkiWiki/Plugin/passwordauth.pm:348 msgid "password reset denied" msgstr "" @@ -594,119 +602,119 @@ msgstr "Nieznaleziony moduł RPC::XML::Client, brak możliwości pingowania" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:138 +#: ../IkiWiki/Plugin/po.pm:139 #, fuzzy, perl-format msgid "%s is not a valid language code" msgstr "Strona %s nie może być edytowana" -#: ../IkiWiki/Plugin/po.pm:150 +#: ../IkiWiki/Plugin/po.pm:151 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:155 +#: ../IkiWiki/Plugin/po.pm:156 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:385 +#: ../IkiWiki/Plugin/po.pm:386 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 #, fuzzy, perl-format msgid "building %s" msgstr "edycja %s" -#: ../IkiWiki/Plugin/po.pm:427 +#: ../IkiWiki/Plugin/po.pm:428 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:451 +#: ../IkiWiki/Plugin/po.pm:452 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:471 +#: ../IkiWiki/Plugin/po.pm:472 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:870 +#: ../IkiWiki/Plugin/po.pm:871 #, perl-format msgid "POT file (%s) does not exist" msgstr "" -#: ../IkiWiki/Plugin/po.pm:884 +#: ../IkiWiki/Plugin/po.pm:885 #, fuzzy, perl-format msgid "failed to copy underlay PO file to %s" msgstr "awaria w trakcie kompilowania %s" -#: ../IkiWiki/Plugin/po.pm:893 +#: ../IkiWiki/Plugin/po.pm:894 #, fuzzy, perl-format msgid "failed to update %s" msgstr "awaria w trakcie kompilowania %s" -#: ../IkiWiki/Plugin/po.pm:899 +#: ../IkiWiki/Plugin/po.pm:900 #, fuzzy, perl-format msgid "failed to copy the POT file to %s" msgstr "awaria w trakcie kompilowania %s" -#: ../IkiWiki/Plugin/po.pm:935 +#: ../IkiWiki/Plugin/po.pm:936 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:948 +#: ../IkiWiki/Plugin/po.pm:949 #, fuzzy, perl-format msgid "failed to translate %s" msgstr "awaria w trakcie zmiany rozmiaru: %s" -#: ../IkiWiki/Plugin/po.pm:1032 +#: ../IkiWiki/Plugin/po.pm:1033 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 -#: ../IkiWiki/Plugin/po.pm:1141 +#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 +#: ../IkiWiki/Plugin/po.pm:1142 #, fuzzy, perl-format msgid "failed to write %s" msgstr "awaria w trakcie zapisu %s: %s" -#: ../IkiWiki/Plugin/po.pm:1100 +#: ../IkiWiki/Plugin/po.pm:1101 #, fuzzy msgid "failed to translate" msgstr "awaria w trakcie uruchamiania dot" -#: ../IkiWiki/Plugin/po.pm:1153 +#: ../IkiWiki/Plugin/po.pm:1154 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" -#: ../IkiWiki/Plugin/poll.pm:69 +#: ../IkiWiki/Plugin/poll.pm:70 msgid "vote" msgstr "głosuj" -#: ../IkiWiki/Plugin/poll.pm:77 +#: ../IkiWiki/Plugin/poll.pm:78 msgid "Total votes:" msgstr "Oddane głosy:" -#: ../IkiWiki/Plugin/polygen.pm:41 +#: ../IkiWiki/Plugin/polygen.pm:42 msgid "polygen not installed" msgstr "wtyczka polygen nie jest zainstalowana" -#: ../IkiWiki/Plugin/polygen.pm:60 +#: ../IkiWiki/Plugin/polygen.pm:61 #, fuzzy msgid "command failed" msgstr "awaria fortunki" -#: ../IkiWiki/Plugin/postsparkline.pm:46 +#: ../IkiWiki/Plugin/postsparkline.pm:47 msgid "missing formula" msgstr "brakująca reguła" -#: ../IkiWiki/Plugin/postsparkline.pm:53 +#: ../IkiWiki/Plugin/postsparkline.pm:54 msgid "unknown formula" msgstr "nieznana reguła" @@ -775,12 +783,12 @@ msgstr "o północy" msgid "at noon on %A" msgstr "w południe w %A" -#: ../IkiWiki/Plugin/progress.pm:34 +#: ../IkiWiki/Plugin/progress.pm:35 #, perl-format msgid "illegal percent value %s" msgstr "" -#: ../IkiWiki/Plugin/progress.pm:55 +#: ../IkiWiki/Plugin/progress.pm:56 msgid "need either `percent` or `totalpages` and `donepages` parameters" msgstr "" @@ -788,84 +796,84 @@ msgstr "" msgid "(Diff truncated)" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36 +#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:37 #, perl-format msgid "%s does not exist" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:38 +#: ../IkiWiki/Plugin/remove.pm:39 #, fuzzy, perl-format msgid "%s is not in the srcdir, so it cannot be deleted" msgstr "" "strona %s jest tymczasowo zablokowana przez użytkownika %s i nie może być " "teraz edytowana" -#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45 +#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:46 #, fuzzy, perl-format msgid "%s is not a file" msgstr "Strona %s nie może być edytowana" -#: ../IkiWiki/Plugin/remove.pm:134 +#: ../IkiWiki/Plugin/remove.pm:135 #, perl-format msgid "confirm removal of %s" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:171 +#: ../IkiWiki/Plugin/remove.pm:172 msgid "Please select the attachments to remove." msgstr "" -#: ../IkiWiki/Plugin/remove.pm:211 +#: ../IkiWiki/Plugin/remove.pm:212 msgid "removed" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:42 +#: ../IkiWiki/Plugin/rename.pm:43 #, perl-format msgid "%s is not in the srcdir, so it cannot be renamed" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:62 +#: ../IkiWiki/Plugin/rename.pm:63 #, fuzzy msgid "no change to the file name was specified" msgstr "nieokreślona nazwa pliku osłony" -#: ../IkiWiki/Plugin/rename.pm:68 +#: ../IkiWiki/Plugin/rename.pm:69 #, perl-format msgid "illegal name" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:73 +#: ../IkiWiki/Plugin/rename.pm:74 #, perl-format msgid "%s already exists" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:79 +#: ../IkiWiki/Plugin/rename.pm:80 #, perl-format msgid "%s already exists on disk" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:122 +#: ../IkiWiki/Plugin/rename.pm:123 #, fuzzy, perl-format msgid "rename %s" msgstr "renderowanie %s" -#: ../IkiWiki/Plugin/rename.pm:161 +#: ../IkiWiki/Plugin/rename.pm:162 msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:248 +#: ../IkiWiki/Plugin/rename.pm:249 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:251 +#: ../IkiWiki/Plugin/rename.pm:252 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:348 +#: ../IkiWiki/Plugin/rename.pm:349 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:572 +#: ../IkiWiki/Plugin/rename.pm:573 #, fuzzy, perl-format msgid "update for rename of %s to %s" msgstr "aktualizacja stron wiki %s: %s przez użytkownika %s" @@ -880,21 +888,21 @@ msgstr "awaria w trakcie odczytu %s: %s" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:182 +#: ../IkiWiki/Plugin/search.pm:183 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "" -#: ../IkiWiki/Plugin/search.pm:217 +#: ../IkiWiki/Plugin/search.pm:218 msgid "search" msgstr "" -#: ../IkiWiki/Plugin/shortcut.pm:31 +#: ../IkiWiki/Plugin/shortcut.pm:32 #, perl-format msgid "shortcut plugin will not work without %s" msgstr "" -#: ../IkiWiki/Plugin/shortcut.pm:44 +#: ../IkiWiki/Plugin/shortcut.pm:45 #, fuzzy msgid "missing name or url parameter" msgstr "brakujący parametr name lub url" @@ -902,7 +910,7 @@ msgstr "brakujący parametr name lub url" #. translators: This is used to display what shortcuts are defined. #. translators: First parameter is the name of the shortcut, the second #. translators: is an URL. -#: ../IkiWiki/Plugin/shortcut.pm:54 +#: ../IkiWiki/Plugin/shortcut.pm:55 #, fuzzy, perl-format msgid "shortcut %s points to %s" msgstr "skrót %s wskazuje na adres %s" @@ -912,124 +920,126 @@ msgstr "skrót %s wskazuje na adres %s" msgid "failed to parse any smileys" msgstr "awaria w trakcie przetwarzania emitoikonki" -#: ../IkiWiki/Plugin/sparkline.pm:72 +#: ../IkiWiki/Plugin/sparkline.pm:73 #, fuzzy msgid "parse error" msgstr "błąd w trakcie przetwarzania" -#: ../IkiWiki/Plugin/sparkline.pm:78 +#: ../IkiWiki/Plugin/sparkline.pm:79 #, fuzzy msgid "invalid featurepoint diameter" msgstr "nieprawidłowa średnica dla featurepoint" -#: ../IkiWiki/Plugin/sparkline.pm:88 +#: ../IkiWiki/Plugin/sparkline.pm:89 #, fuzzy msgid "invalid featurepoint location" msgstr "nieprawidłowe położenie dla featurepoint" -#: ../IkiWiki/Plugin/sparkline.pm:99 +#: ../IkiWiki/Plugin/sparkline.pm:100 msgid "missing values" msgstr "brakujące wartości" -#: ../IkiWiki/Plugin/sparkline.pm:104 +#: ../IkiWiki/Plugin/sparkline.pm:105 #, fuzzy msgid "invalid height value" msgstr "nieprawidłowa wysokość" -#: ../IkiWiki/Plugin/sparkline.pm:111 +#: ../IkiWiki/Plugin/sparkline.pm:112 #, fuzzy msgid "missing width parameter" msgstr "brakujący parametr width" -#: ../IkiWiki/Plugin/sparkline.pm:115 +#: ../IkiWiki/Plugin/sparkline.pm:116 #, fuzzy msgid "invalid width value" msgstr "nieprawidłowa szerokość" -#: ../IkiWiki/Plugin/sparkline.pm:153 +#: ../IkiWiki/Plugin/sparkline.pm:154 #, fuzzy msgid "failed to run php" msgstr "awaria w trakcie uruchamiania php" -#: ../IkiWiki/Plugin/table.pm:31 +#: ../IkiWiki/Plugin/table.pm:32 msgid "cannot find file" msgstr "nie można znaleźć pliku" -#: ../IkiWiki/Plugin/table.pm:87 +#: ../IkiWiki/Plugin/table.pm:88 msgid "unknown data format" msgstr "nieznany format danych" -#: ../IkiWiki/Plugin/table.pm:95 +#: ../IkiWiki/Plugin/table.pm:96 msgid "empty data" msgstr "brak danych" -#: ../IkiWiki/Plugin/table.pm:114 +#: ../IkiWiki/Plugin/table.pm:115 msgid "Direct data download" msgstr "Bezpośrednie pobieranie danych" -#: ../IkiWiki/Plugin/table.pm:148 +#: ../IkiWiki/Plugin/table.pm:149 #, fuzzy, perl-format msgid "parse fail at line %d: %s" msgstr "awaria w trakcie przetwarzania linii %d: %s" -#: ../IkiWiki/Plugin/template.pm:29 +#: ../IkiWiki/Plugin/template.pm:34 #, fuzzy msgid "missing id parameter" msgstr "brakujący parametr id" -#: ../IkiWiki/Plugin/template.pm:36 +#: ../IkiWiki/Plugin/template.pm:41 #, perl-format msgid "template %s not found" msgstr "nieznaleziony szablon %s" -#: ../IkiWiki/Plugin/template.pm:55 +#: ../IkiWiki/Plugin/template.pm:60 #, fuzzy msgid "failed to process:" msgstr "awaria w trakcie przetwarzania:" -#: ../IkiWiki/Plugin/teximg.pm:70 +#: ../IkiWiki/Plugin/teximg.pm:71 #, fuzzy msgid "missing tex code" msgstr "brakujące wartości" -#: ../IkiWiki/Plugin/teximg.pm:122 +#: ../IkiWiki/Plugin/teximg.pm:123 #, fuzzy msgid "failed to generate image from code" msgstr "awaria w trakcie zmiany rozmiaru: %s" -#: ../IkiWiki/Plugin/websetup.pm:89 -msgid "plugin" +#: ../IkiWiki/Plugin/websetup.pm:91 +#, perl-format +msgid "%s plugin:" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:108 +#: ../IkiWiki/Plugin/websetup.pm:107 #, perl-format -msgid "enable %s?" +msgid "%s plugins" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:244 -msgid "setup file for this wiki is not known" +#: ../IkiWiki/Plugin/websetup.pm:121 +#, perl-format +msgid "enable %s?" msgstr "" #: ../IkiWiki/Plugin/websetup.pm:260 -msgid "main" +msgid "setup file for this wiki is not known" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:261 -msgid "plugins" +#: ../IkiWiki/Plugin/websetup.pm:276 +msgid "main" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:404 +#: ../IkiWiki/Plugin/websetup.pm:419 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:408 +#: ../IkiWiki/Plugin/websetup.pm:423 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:445 +#: ../IkiWiki/Plugin/websetup.pm:460 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1103,20 +1113,20 @@ msgstr "ikiwiki: awaria w trakcie tworzenia %s" msgid "cannot read %s: %s" msgstr "awaria w trakcie odczytu %s: %s" -#: ../IkiWiki/Setup/Automator.pm:33 +#: ../IkiWiki/Setup/Automator.pm:34 msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:79 +#: ../IkiWiki/Setup/Automator.pm:80 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:105 +#: ../IkiWiki/Setup/Automator.pm:106 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:123 +#: ../IkiWiki/Setup/Automator.pm:124 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1189,25 +1199,25 @@ msgstr "" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1263 +#: ../IkiWiki.pm:1255 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "polecenie preprocesora %s wykryte w %s na głębokości %i" -#: ../IkiWiki.pm:1862 +#: ../IkiWiki.pm:1854 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2005 +#: ../IkiWiki.pm:1997 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2016 +#: ../IkiWiki.pm:2008 #, perl-format msgid "unknown sort type %s" msgstr "nieznany sposób sortowania %s" -#: ../IkiWiki.pm:2035 +#: ../IkiWiki.pm:2027 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "awaria w trakcie odczytu %s: %s" diff --git a/po/sv.po b/po/sv.po index 49518e2a8..62b9d6905 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: 2010-01-22 16:04-0500\n" +"POT-Creation-Date: 2010-02-12 16:48-0500\n" "PO-Revision-Date: 2007-01-10 23:47+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -54,7 +54,7 @@ msgstr "Inställningar sparades." msgid "You are banned." msgstr "Du är bannlyst." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 msgid "Error" msgstr "Fel" @@ -145,35 +145,35 @@ msgstr "klar" msgid "Must specify %s" msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:136 +#: ../IkiWiki/Plugin/amazon_s3.pm:140 #, fuzzy msgid "Failed to create S3 bucket: " msgstr "Misslyckades med att skicka e-post" -#: ../IkiWiki/Plugin/amazon_s3.pm:221 +#: ../IkiWiki/Plugin/amazon_s3.pm:225 #, fuzzy msgid "Failed to save file to S3: " msgstr "Misslyckades med att skicka e-post" -#: ../IkiWiki/Plugin/amazon_s3.pm:243 +#: ../IkiWiki/Plugin/amazon_s3.pm:247 #, fuzzy msgid "Failed to delete file from S3: " msgstr "misslyckades med att skriva %s: %s" -#: ../IkiWiki/Plugin/attachment.pm:49 +#: ../IkiWiki/Plugin/attachment.pm:50 #, perl-format msgid "there is already a page named %s" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:65 +#: ../IkiWiki/Plugin/attachment.pm:66 msgid "prohibited by allowed_attachments" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:140 +#: ../IkiWiki/Plugin/attachment.pm:141 msgid "bad attachment filename" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:182 +#: ../IkiWiki/Plugin/attachment.pm:183 msgid "attachment upload" msgstr "" @@ -181,7 +181,7 @@ msgstr "" msgid "automatic index generation" msgstr "" -#: ../IkiWiki/Plugin/blogspam.pm:108 +#: ../IkiWiki/Plugin/blogspam.pm:109 msgid "" "Sorry, but that looks like spam to blogspam: " @@ -196,12 +196,12 @@ msgstr "" msgid "There are no broken links!" msgstr "Det finns inga trasiga länkar!" -#: ../IkiWiki/Plugin/comments.pm:124 ../IkiWiki/Plugin/format.pm:38 +#: ../IkiWiki/Plugin/comments.pm:125 ../IkiWiki/Plugin/format.pm:48 #, perl-format msgid "unsupported page format %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:129 +#: ../IkiWiki/Plugin/comments.pm:130 msgid "comment must have content" msgstr "" @@ -209,7 +209,7 @@ msgstr "" msgid "Anonymous" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:97 +#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "" @@ -245,7 +245,7 @@ msgstr "" msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256 msgid "you are not logged in as an admin" msgstr "" @@ -261,133 +261,133 @@ msgstr "" msgid "Comments" msgstr "" -#: ../IkiWiki/Plugin/conditional.pm:27 ../IkiWiki/Plugin/cutpaste.pm:30 -#: ../IkiWiki/Plugin/cutpaste.pm:45 ../IkiWiki/Plugin/cutpaste.pm:61 +#: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 +#: ../IkiWiki/Plugin/cutpaste.pm:46 ../IkiWiki/Plugin/cutpaste.pm:62 #: ../IkiWiki/Plugin/testpagespec.pm:26 #, perl-format msgid "%s parameter is required" msgstr "" -#: ../IkiWiki/Plugin/cutpaste.pm:66 +#: ../IkiWiki/Plugin/cutpaste.pm:67 msgid "no text was copied in this page" msgstr "" -#: ../IkiWiki/Plugin/cutpaste.pm:69 +#: ../IkiWiki/Plugin/cutpaste.pm:70 #, perl-format msgid "no text was copied in this page with id %s" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:40 +#: ../IkiWiki/Plugin/editpage.pm:41 #, fuzzy, perl-format msgid "removing old preview %s" msgstr "tar bort gammal sida %s" -#: ../IkiWiki/Plugin/editpage.pm:113 +#: ../IkiWiki/Plugin/editpage.pm:114 #, perl-format msgid "%s is not an editable page" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:292 +#: ../IkiWiki/Plugin/editpage.pm:296 #, perl-format msgid "creating %s" msgstr "skapar %s" -#: ../IkiWiki/Plugin/editpage.pm:310 ../IkiWiki/Plugin/editpage.pm:329 -#: ../IkiWiki/Plugin/editpage.pm:339 ../IkiWiki/Plugin/editpage.pm:383 -#: ../IkiWiki/Plugin/editpage.pm:422 +#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 +#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 +#: ../IkiWiki/Plugin/editpage.pm:426 #, perl-format msgid "editing %s" msgstr "redigerar %s" -#: ../IkiWiki/Plugin/edittemplate.pm:51 +#: ../IkiWiki/Plugin/edittemplate.pm:52 #, fuzzy msgid "template not specified" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/edittemplate.pm:54 +#: ../IkiWiki/Plugin/edittemplate.pm:55 #, fuzzy msgid "match not specified" msgstr "filnamn för wrapper har inte angivits" -#: ../IkiWiki/Plugin/edittemplate.pm:63 +#: ../IkiWiki/Plugin/edittemplate.pm:64 #, perl-format msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:137 +#: ../IkiWiki/Plugin/edittemplate.pm:138 #, fuzzy msgid "failed to process" msgstr "misslyckades med att behandla mall:" -#: ../IkiWiki/Plugin/format.pm:20 +#: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" msgstr "" -#: ../IkiWiki/Plugin/fortune.pm:27 +#: ../IkiWiki/Plugin/fortune.pm:28 msgid "fortune failed" msgstr "fortune misslyckades" -#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 +#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 #, fuzzy msgid "missing page" msgstr "mall saknar id-parameter" -#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 +#: ../IkiWiki/Plugin/getsource.pm:66 ../IkiWiki/Plugin/goto.pm:59 #, perl-format msgid "The page %s does not exist." msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:74 +#: ../IkiWiki/Plugin/getsource.pm:75 #, fuzzy msgid "not a page" msgstr "kan inte läsa %s: %s" -#: ../IkiWiki/Plugin/getsource.pm:76 +#: ../IkiWiki/Plugin/getsource.pm:77 #, perl-format msgid "%s is an attachment, not a page." msgstr "" -#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 +#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:697 +#: ../IkiWiki/Plugin/git.pm:698 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:701 +#: ../IkiWiki/Plugin/git.pm:702 msgid "you are not allowed to change file modes" msgstr "" -#: ../IkiWiki/Plugin/google.pm:25 ../IkiWiki/Plugin/po.pm:131 -#: ../IkiWiki/Plugin/search.pm:36 +#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/po.pm:132 +#: ../IkiWiki/Plugin/search.pm:37 #, fuzzy, perl-format msgid "Must specify %s when using the %s plugin" msgstr "Måste ange %s när sökinsticket används" -#: ../IkiWiki/Plugin/graphviz.pm:67 +#: ../IkiWiki/Plugin/graphviz.pm:68 #, fuzzy msgid "failed to run graphviz" msgstr "linkmap misslyckades att köra dot" -#: ../IkiWiki/Plugin/graphviz.pm:94 +#: ../IkiWiki/Plugin/graphviz.pm:95 msgid "prog not a valid graphviz program" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:47 +#: ../IkiWiki/Plugin/highlight.pm:48 #, perl-format msgid "tohighlight contains unknown file type '%s'" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:58 +#: ../IkiWiki/Plugin/highlight.pm:59 #, perl-format msgid "Source code: %s" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:123 +#: ../IkiWiki/Plugin/highlight.pm:124 msgid "" "warning: highlight perl module not available; falling back to pass through" msgstr "" @@ -397,113 +397,113 @@ msgstr "" msgid "htmltidy failed to parse this html" msgstr "misslyckades med att tolka smilisar, inaktiverar instick" -#: ../IkiWiki/Plugin/img.pm:64 +#: ../IkiWiki/Plugin/img.pm:69 #, fuzzy msgid "Image::Magick is not installed" msgstr "polygen inte installerad" -#: ../IkiWiki/Plugin/img.pm:68 ../IkiWiki/Plugin/img.pm:112 +#: ../IkiWiki/Plugin/img.pm:73 ../IkiWiki/Plugin/img.pm:117 #, fuzzy, perl-format msgid "failed to read %s: %s" msgstr "misslyckades med att skriva %s: %s" -#: ../IkiWiki/Plugin/img.pm:74 +#: ../IkiWiki/Plugin/img.pm:79 #, perl-format msgid "wrong size format \"%s\" (should be WxH)" msgstr "" -#: ../IkiWiki/Plugin/img.pm:120 +#: ../IkiWiki/Plugin/img.pm:125 #, fuzzy, perl-format msgid "failed to resize: %s" msgstr "misslyckades med att skriva %s: %s" -#: ../IkiWiki/Plugin/img.pm:140 +#: ../IkiWiki/Plugin/img.pm:145 #, fuzzy, perl-format msgid "failed to determine size of image %s" msgstr "misslyckades med att skriva %s: %s" -#: ../IkiWiki/Plugin/inline.pm:92 +#: ../IkiWiki/Plugin/inline.pm:93 msgid "Must specify url to wiki with --url when using --rss or --atom" msgstr "Måste ange url till wiki med --url när --rss eller --atom används" -#: ../IkiWiki/Plugin/inline.pm:138 +#: ../IkiWiki/Plugin/inline.pm:139 #, fuzzy msgid "page editing not allowed" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/inline.pm:155 +#: ../IkiWiki/Plugin/inline.pm:156 #, fuzzy msgid "missing pages parameter" msgstr "mall saknar id-parameter" -#: ../IkiWiki/Plugin/inline.pm:191 +#: ../IkiWiki/Plugin/inline.pm:192 #, perl-format msgid "the %s and %s parameters cannot be used together" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:312 +#: ../IkiWiki/Plugin/inline.pm:313 msgid "Add a new post titled:" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:332 +#: ../IkiWiki/Plugin/inline.pm:333 #, perl-format msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:624 +#: ../IkiWiki/Plugin/inline.pm:625 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client hittades inte, pingar inte" -#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 -#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 +#: ../IkiWiki/Plugin/linkmap.pm:81 ../IkiWiki/Plugin/linkmap.pm:88 +#: ../IkiWiki/Plugin/linkmap.pm:92 ../IkiWiki/Plugin/linkmap.pm:95 #, fuzzy msgid "failed to run dot" msgstr "linkmap misslyckades att köra dot" -#: ../IkiWiki/Plugin/linkmap.pm:84 +#: ../IkiWiki/Plugin/linkmap.pm:85 msgid "linkmap" msgstr "" -#: ../IkiWiki/Plugin/lockedit.pm:48 +#: ../IkiWiki/Plugin/lockedit.pm:49 #, fuzzy, perl-format msgid "%s is locked and cannot be edited" msgstr "%s är låst av %s och kan inte redigeras" -#: ../IkiWiki/Plugin/mdwn.pm:44 +#: ../IkiWiki/Plugin/mdwn.pm:45 msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed" msgstr "" -#: ../IkiWiki/Plugin/mdwn.pm:69 +#: ../IkiWiki/Plugin/mdwn.pm:70 #, perl-format msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" "misslyckades med att läsa in Perl-modulen Markdown.pm (%s) eller /usr/bin/" "markdown (%s)" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:162 #, fuzzy msgid "stylesheet not found" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/meta.pm:199 +#: ../IkiWiki/Plugin/meta.pm:200 #, fuzzy msgid "redir page not found" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/meta.pm:213 +#: ../IkiWiki/Plugin/meta.pm:214 #, fuzzy msgid "redir cycle is not allowed" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Speglar" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirror" msgstr "Spegel" -#: ../IkiWiki/Plugin/moderatedcomments.pm:41 +#: ../IkiWiki/Plugin/moderatedcomments.pm:42 msgid "comment needs moderation" msgstr "" @@ -511,19 +511,19 @@ msgstr "" msgid "more" msgstr "" -#: ../IkiWiki/Plugin/norcs.pm:65 +#: ../IkiWiki/Plugin/norcs.pm:66 msgid "getctime not implemented" msgstr "getctime inte implementerad" -#: ../IkiWiki/Plugin/openid.pm:61 +#: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "" -#: ../IkiWiki/Plugin/openid.pm:64 +#: ../IkiWiki/Plugin/openid.pm:65 msgid "Get an OpenID" msgstr "Skaffa ett OpenID" -#: ../IkiWiki/Plugin/orphans.pm:55 +#: ../IkiWiki/Plugin/orphans.pm:56 #, fuzzy msgid "All pages have other pages linking to them." msgstr "Alla sidor länkas till av andra sidor." @@ -532,31 +532,39 @@ msgstr "Alla sidor länkas till av andra sidor." msgid "bad or missing template" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:248 +#: ../IkiWiki/Plugin/passwordauth.pm:229 +msgid "Your user page: " +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:236 +msgid "Create your user page" +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:264 msgid "Account creation successful. Now you can Login." msgstr "Kontot har skapats. Du kan nu logga in." -#: ../IkiWiki/Plugin/passwordauth.pm:251 +#: ../IkiWiki/Plugin/passwordauth.pm:267 msgid "Error creating account." msgstr "Fel vid skapandet av konto." -#: ../IkiWiki/Plugin/passwordauth.pm:258 +#: ../IkiWiki/Plugin/passwordauth.pm:274 msgid "No email address, so cannot email password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:292 +#: ../IkiWiki/Plugin/passwordauth.pm:308 msgid "Failed to send mail" msgstr "Misslyckades med att skicka e-post" -#: ../IkiWiki/Plugin/passwordauth.pm:294 +#: ../IkiWiki/Plugin/passwordauth.pm:310 msgid "You have been mailed password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:329 +#: ../IkiWiki/Plugin/passwordauth.pm:345 msgid "incorrect password reset url" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:332 +#: ../IkiWiki/Plugin/passwordauth.pm:348 msgid "password reset denied" msgstr "" @@ -587,119 +595,119 @@ msgstr "RPC::XML::Client hittades inte, pingar inte" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:138 +#: ../IkiWiki/Plugin/po.pm:139 #, perl-format msgid "%s is not a valid language code" msgstr "" -#: ../IkiWiki/Plugin/po.pm:150 +#: ../IkiWiki/Plugin/po.pm:151 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:155 +#: ../IkiWiki/Plugin/po.pm:156 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:385 +#: ../IkiWiki/Plugin/po.pm:386 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 #, fuzzy, perl-format msgid "building %s" msgstr "redigerar %s" -#: ../IkiWiki/Plugin/po.pm:427 +#: ../IkiWiki/Plugin/po.pm:428 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:451 +#: ../IkiWiki/Plugin/po.pm:452 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:471 +#: ../IkiWiki/Plugin/po.pm:472 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:870 +#: ../IkiWiki/Plugin/po.pm:871 #, perl-format msgid "POT file (%s) does not exist" msgstr "" -#: ../IkiWiki/Plugin/po.pm:884 +#: ../IkiWiki/Plugin/po.pm:885 #, fuzzy, perl-format msgid "failed to copy underlay PO file to %s" msgstr "misslyckades med att kompilera %s" -#: ../IkiWiki/Plugin/po.pm:893 +#: ../IkiWiki/Plugin/po.pm:894 #, fuzzy, perl-format msgid "failed to update %s" msgstr "misslyckades med att kompilera %s" -#: ../IkiWiki/Plugin/po.pm:899 +#: ../IkiWiki/Plugin/po.pm:900 #, fuzzy, perl-format msgid "failed to copy the POT file to %s" msgstr "misslyckades med att kompilera %s" -#: ../IkiWiki/Plugin/po.pm:935 +#: ../IkiWiki/Plugin/po.pm:936 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:948 +#: ../IkiWiki/Plugin/po.pm:949 #, fuzzy, perl-format msgid "failed to translate %s" msgstr "misslyckades med att skriva %s: %s" -#: ../IkiWiki/Plugin/po.pm:1032 +#: ../IkiWiki/Plugin/po.pm:1033 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 -#: ../IkiWiki/Plugin/po.pm:1141 +#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 +#: ../IkiWiki/Plugin/po.pm:1142 #, fuzzy, perl-format msgid "failed to write %s" msgstr "misslyckades med att skriva %s: %s" -#: ../IkiWiki/Plugin/po.pm:1100 +#: ../IkiWiki/Plugin/po.pm:1101 #, fuzzy msgid "failed to translate" msgstr "linkmap misslyckades att köra dot" -#: ../IkiWiki/Plugin/po.pm:1153 +#: ../IkiWiki/Plugin/po.pm:1154 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" -#: ../IkiWiki/Plugin/poll.pm:69 +#: ../IkiWiki/Plugin/poll.pm:70 msgid "vote" msgstr "röst" -#: ../IkiWiki/Plugin/poll.pm:77 +#: ../IkiWiki/Plugin/poll.pm:78 msgid "Total votes:" msgstr "Antal röster:" -#: ../IkiWiki/Plugin/polygen.pm:41 +#: ../IkiWiki/Plugin/polygen.pm:42 msgid "polygen not installed" msgstr "polygen inte installerad" -#: ../IkiWiki/Plugin/polygen.pm:60 +#: ../IkiWiki/Plugin/polygen.pm:61 #, fuzzy msgid "command failed" msgstr "fortune misslyckades" -#: ../IkiWiki/Plugin/postsparkline.pm:46 +#: ../IkiWiki/Plugin/postsparkline.pm:47 msgid "missing formula" msgstr "" -#: ../IkiWiki/Plugin/postsparkline.pm:53 +#: ../IkiWiki/Plugin/postsparkline.pm:54 msgid "unknown formula" msgstr "" @@ -767,12 +775,12 @@ msgstr "" msgid "at noon on %A" msgstr "" -#: ../IkiWiki/Plugin/progress.pm:34 +#: ../IkiWiki/Plugin/progress.pm:35 #, perl-format msgid "illegal percent value %s" msgstr "" -#: ../IkiWiki/Plugin/progress.pm:55 +#: ../IkiWiki/Plugin/progress.pm:56 msgid "need either `percent` or `totalpages` and `donepages` parameters" msgstr "" @@ -780,82 +788,82 @@ msgstr "" msgid "(Diff truncated)" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36 +#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:37 #, perl-format msgid "%s does not exist" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:38 +#: ../IkiWiki/Plugin/remove.pm:39 #, fuzzy, perl-format msgid "%s is not in the srcdir, so it cannot be deleted" msgstr "%s är låst av %s och kan inte redigeras" -#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45 +#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:46 #, perl-format msgid "%s is not a file" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:134 +#: ../IkiWiki/Plugin/remove.pm:135 #, perl-format msgid "confirm removal of %s" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:171 +#: ../IkiWiki/Plugin/remove.pm:172 msgid "Please select the attachments to remove." msgstr "" -#: ../IkiWiki/Plugin/remove.pm:211 +#: ../IkiWiki/Plugin/remove.pm:212 msgid "removed" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:42 +#: ../IkiWiki/Plugin/rename.pm:43 #, perl-format msgid "%s is not in the srcdir, so it cannot be renamed" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:62 +#: ../IkiWiki/Plugin/rename.pm:63 #, fuzzy msgid "no change to the file name was specified" msgstr "filnamn för wrapper har inte angivits" -#: ../IkiWiki/Plugin/rename.pm:68 +#: ../IkiWiki/Plugin/rename.pm:69 #, perl-format msgid "illegal name" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:73 +#: ../IkiWiki/Plugin/rename.pm:74 #, perl-format msgid "%s already exists" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:79 +#: ../IkiWiki/Plugin/rename.pm:80 #, perl-format msgid "%s already exists on disk" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:122 +#: ../IkiWiki/Plugin/rename.pm:123 #, fuzzy, perl-format msgid "rename %s" msgstr "ritar upp %s" -#: ../IkiWiki/Plugin/rename.pm:161 +#: ../IkiWiki/Plugin/rename.pm:162 msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:248 +#: ../IkiWiki/Plugin/rename.pm:249 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:251 +#: ../IkiWiki/Plugin/rename.pm:252 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:348 +#: ../IkiWiki/Plugin/rename.pm:349 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:572 +#: ../IkiWiki/Plugin/rename.pm:573 #, fuzzy, perl-format msgid "update for rename of %s to %s" msgstr "uppdatering av %s, %s av %s" @@ -870,21 +878,21 @@ msgstr "misslyckades med att skriva %s: %s" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:182 +#: ../IkiWiki/Plugin/search.pm:183 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "" -#: ../IkiWiki/Plugin/search.pm:217 +#: ../IkiWiki/Plugin/search.pm:218 msgid "search" msgstr "" -#: ../IkiWiki/Plugin/shortcut.pm:31 +#: ../IkiWiki/Plugin/shortcut.pm:32 #, perl-format msgid "shortcut plugin will not work without %s" msgstr "" -#: ../IkiWiki/Plugin/shortcut.pm:44 +#: ../IkiWiki/Plugin/shortcut.pm:45 #, fuzzy msgid "missing name or url parameter" msgstr "genväg saknar parameter för namn eller url" @@ -892,7 +900,7 @@ msgstr "genväg saknar parameter för namn eller url" #. translators: This is used to display what shortcuts are defined. #. translators: First parameter is the name of the shortcut, the second #. translators: is an URL. -#: ../IkiWiki/Plugin/shortcut.pm:54 +#: ../IkiWiki/Plugin/shortcut.pm:55 #, fuzzy, perl-format msgid "shortcut %s points to %s" msgstr "genvägen %s pekar på %s" @@ -902,121 +910,123 @@ msgstr "genvägen %s pekar på %s" msgid "failed to parse any smileys" msgstr "misslyckades med att tolka smilisar, inaktiverar instick" -#: ../IkiWiki/Plugin/sparkline.pm:72 +#: ../IkiWiki/Plugin/sparkline.pm:73 #, fuzzy msgid "parse error" msgstr "linkmap misslyckades att köra dot" -#: ../IkiWiki/Plugin/sparkline.pm:78 +#: ../IkiWiki/Plugin/sparkline.pm:79 msgid "invalid featurepoint diameter" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:88 +#: ../IkiWiki/Plugin/sparkline.pm:89 msgid "invalid featurepoint location" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:99 +#: ../IkiWiki/Plugin/sparkline.pm:100 msgid "missing values" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:104 +#: ../IkiWiki/Plugin/sparkline.pm:105 #, fuzzy msgid "invalid height value" msgstr "linkmap misslyckades att köra dot" -#: ../IkiWiki/Plugin/sparkline.pm:111 +#: ../IkiWiki/Plugin/sparkline.pm:112 #, fuzzy msgid "missing width parameter" msgstr "mall saknar id-parameter" -#: ../IkiWiki/Plugin/sparkline.pm:115 +#: ../IkiWiki/Plugin/sparkline.pm:116 #, fuzzy msgid "invalid width value" msgstr "linkmap misslyckades att köra dot" -#: ../IkiWiki/Plugin/sparkline.pm:153 +#: ../IkiWiki/Plugin/sparkline.pm:154 #, fuzzy msgid "failed to run php" msgstr "linkmap misslyckades att köra dot" -#: ../IkiWiki/Plugin/table.pm:31 +#: ../IkiWiki/Plugin/table.pm:32 msgid "cannot find file" msgstr "" -#: ../IkiWiki/Plugin/table.pm:87 +#: ../IkiWiki/Plugin/table.pm:88 msgid "unknown data format" msgstr "" -#: ../IkiWiki/Plugin/table.pm:95 +#: ../IkiWiki/Plugin/table.pm:96 msgid "empty data" msgstr "" -#: ../IkiWiki/Plugin/table.pm:114 +#: ../IkiWiki/Plugin/table.pm:115 msgid "Direct data download" msgstr "" -#: ../IkiWiki/Plugin/table.pm:148 +#: ../IkiWiki/Plugin/table.pm:149 #, fuzzy, perl-format msgid "parse fail at line %d: %s" msgstr "misslyckades med att skriva %s: %s" -#: ../IkiWiki/Plugin/template.pm:29 +#: ../IkiWiki/Plugin/template.pm:34 #, fuzzy msgid "missing id parameter" msgstr "mall saknar id-parameter" -#: ../IkiWiki/Plugin/template.pm:36 +#: ../IkiWiki/Plugin/template.pm:41 #, perl-format msgid "template %s not found" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/template.pm:55 +#: ../IkiWiki/Plugin/template.pm:60 #, fuzzy msgid "failed to process:" msgstr "misslyckades med att behandla mall:" -#: ../IkiWiki/Plugin/teximg.pm:70 +#: ../IkiWiki/Plugin/teximg.pm:71 msgid "missing tex code" msgstr "" -#: ../IkiWiki/Plugin/teximg.pm:122 +#: ../IkiWiki/Plugin/teximg.pm:123 #, fuzzy msgid "failed to generate image from code" msgstr "misslyckades med att skriva %s: %s" -#: ../IkiWiki/Plugin/websetup.pm:89 -msgid "plugin" +#: ../IkiWiki/Plugin/websetup.pm:91 +#, perl-format +msgid "%s plugin:" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:108 +#: ../IkiWiki/Plugin/websetup.pm:107 #, perl-format -msgid "enable %s?" +msgid "%s plugins" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:244 -msgid "setup file for this wiki is not known" +#: ../IkiWiki/Plugin/websetup.pm:121 +#, perl-format +msgid "enable %s?" msgstr "" #: ../IkiWiki/Plugin/websetup.pm:260 -msgid "main" +msgid "setup file for this wiki is not known" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:261 -msgid "plugins" +#: ../IkiWiki/Plugin/websetup.pm:276 +msgid "main" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:404 +#: ../IkiWiki/Plugin/websetup.pm:419 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:408 +#: ../IkiWiki/Plugin/websetup.pm:423 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:445 +#: ../IkiWiki/Plugin/websetup.pm:460 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1090,20 +1100,20 @@ msgstr "ikiwiki: kan inte rita upp %s" msgid "cannot read %s: %s" msgstr "kan inte läsa %s: %s" -#: ../IkiWiki/Setup/Automator.pm:33 +#: ../IkiWiki/Setup/Automator.pm:34 msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:79 +#: ../IkiWiki/Setup/Automator.pm:80 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:105 +#: ../IkiWiki/Setup/Automator.pm:106 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:123 +#: ../IkiWiki/Setup/Automator.pm:124 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1174,25 +1184,25 @@ msgstr "" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1263 +#: ../IkiWiki.pm:1255 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "%s förbehandlingsslinga detekterades på %s, djup %i" -#: ../IkiWiki.pm:1862 +#: ../IkiWiki.pm:1854 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2005 +#: ../IkiWiki.pm:1997 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2016 +#: ../IkiWiki.pm:2008 #, perl-format msgid "unknown sort type %s" msgstr "okänd sorteringstyp %s" -#: ../IkiWiki.pm:2035 +#: ../IkiWiki.pm:2027 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "kan inte läsa %s: %s" diff --git a/po/tr.po b/po/tr.po index 113427f9b..94ad12e9e 100644 --- a/po/tr.po +++ b/po/tr.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.20091031\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-22 16:04-0500\n" +"POT-Creation-Date: 2010-02-12 16:48-0500\n" "PO-Revision-Date: 2009-11-08 03:04+0200\n" "Last-Translator: Recai Oktaş \n" "Language-Team: Turkish \n" @@ -51,7 +51,7 @@ msgstr "Tercihler kaydedildi." msgid "You are banned." msgstr "" -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 msgid "Error" msgstr "Hata" @@ -141,32 +141,32 @@ msgstr "" msgid "Must specify %s" msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:136 +#: ../IkiWiki/Plugin/amazon_s3.pm:140 msgid "Failed to create S3 bucket: " msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:221 +#: ../IkiWiki/Plugin/amazon_s3.pm:225 msgid "Failed to save file to S3: " msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:243 +#: ../IkiWiki/Plugin/amazon_s3.pm:247 msgid "Failed to delete file from S3: " msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:49 +#: ../IkiWiki/Plugin/attachment.pm:50 #, perl-format msgid "there is already a page named %s" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:65 +#: ../IkiWiki/Plugin/attachment.pm:66 msgid "prohibited by allowed_attachments" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:140 +#: ../IkiWiki/Plugin/attachment.pm:141 msgid "bad attachment filename" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:182 +#: ../IkiWiki/Plugin/attachment.pm:183 msgid "attachment upload" msgstr "" @@ -174,7 +174,7 @@ msgstr "" msgid "automatic index generation" msgstr "" -#: ../IkiWiki/Plugin/blogspam.pm:108 +#: ../IkiWiki/Plugin/blogspam.pm:109 msgid "" "Sorry, but that looks like spam to blogspam: " @@ -189,12 +189,12 @@ msgstr "" msgid "There are no broken links!" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:124 ../IkiWiki/Plugin/format.pm:38 +#: ../IkiWiki/Plugin/comments.pm:125 ../IkiWiki/Plugin/format.pm:48 #, perl-format msgid "unsupported page format %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:129 +#: ../IkiWiki/Plugin/comments.pm:130 msgid "comment must have content" msgstr "" @@ -202,7 +202,7 @@ msgstr "" msgid "Anonymous" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:97 +#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "" @@ -238,7 +238,7 @@ msgstr "" msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256 msgid "you are not logged in as an admin" msgstr "" @@ -254,127 +254,127 @@ msgstr "" msgid "Comments" msgstr "" -#: ../IkiWiki/Plugin/conditional.pm:27 ../IkiWiki/Plugin/cutpaste.pm:30 -#: ../IkiWiki/Plugin/cutpaste.pm:45 ../IkiWiki/Plugin/cutpaste.pm:61 +#: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 +#: ../IkiWiki/Plugin/cutpaste.pm:46 ../IkiWiki/Plugin/cutpaste.pm:62 #: ../IkiWiki/Plugin/testpagespec.pm:26 #, perl-format msgid "%s parameter is required" msgstr "" -#: ../IkiWiki/Plugin/cutpaste.pm:66 +#: ../IkiWiki/Plugin/cutpaste.pm:67 msgid "no text was copied in this page" msgstr "" -#: ../IkiWiki/Plugin/cutpaste.pm:69 +#: ../IkiWiki/Plugin/cutpaste.pm:70 #, perl-format msgid "no text was copied in this page with id %s" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:40 +#: ../IkiWiki/Plugin/editpage.pm:41 #, perl-format msgid "removing old preview %s" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:113 +#: ../IkiWiki/Plugin/editpage.pm:114 #, perl-format msgid "%s is not an editable page" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:292 +#: ../IkiWiki/Plugin/editpage.pm:296 #, perl-format msgid "creating %s" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:310 ../IkiWiki/Plugin/editpage.pm:329 -#: ../IkiWiki/Plugin/editpage.pm:339 ../IkiWiki/Plugin/editpage.pm:383 -#: ../IkiWiki/Plugin/editpage.pm:422 +#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 +#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 +#: ../IkiWiki/Plugin/editpage.pm:426 #, perl-format msgid "editing %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:51 +#: ../IkiWiki/Plugin/edittemplate.pm:52 msgid "template not specified" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:54 +#: ../IkiWiki/Plugin/edittemplate.pm:55 msgid "match not specified" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:63 +#: ../IkiWiki/Plugin/edittemplate.pm:64 #, perl-format msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:137 +#: ../IkiWiki/Plugin/edittemplate.pm:138 msgid "failed to process" msgstr "" -#: ../IkiWiki/Plugin/format.pm:20 +#: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" msgstr "" -#: ../IkiWiki/Plugin/fortune.pm:27 +#: ../IkiWiki/Plugin/fortune.pm:28 msgid "fortune failed" msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 +#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 msgid "missing page" msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 +#: ../IkiWiki/Plugin/getsource.pm:66 ../IkiWiki/Plugin/goto.pm:59 #, perl-format msgid "The page %s does not exist." msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:74 +#: ../IkiWiki/Plugin/getsource.pm:75 msgid "not a page" msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:76 +#: ../IkiWiki/Plugin/getsource.pm:77 #, perl-format msgid "%s is an attachment, not a page." msgstr "" -#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 +#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:697 +#: ../IkiWiki/Plugin/git.pm:698 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:701 +#: ../IkiWiki/Plugin/git.pm:702 msgid "you are not allowed to change file modes" msgstr "" -#: ../IkiWiki/Plugin/google.pm:25 ../IkiWiki/Plugin/po.pm:131 -#: ../IkiWiki/Plugin/search.pm:36 +#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/po.pm:132 +#: ../IkiWiki/Plugin/search.pm:37 #, perl-format msgid "Must specify %s when using the %s plugin" msgstr "" -#: ../IkiWiki/Plugin/graphviz.pm:67 +#: ../IkiWiki/Plugin/graphviz.pm:68 msgid "failed to run graphviz" msgstr "" -#: ../IkiWiki/Plugin/graphviz.pm:94 +#: ../IkiWiki/Plugin/graphviz.pm:95 msgid "prog not a valid graphviz program" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:47 +#: ../IkiWiki/Plugin/highlight.pm:48 #, perl-format msgid "tohighlight contains unknown file type '%s'" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:58 +#: ../IkiWiki/Plugin/highlight.pm:59 #, perl-format msgid "Source code: %s" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:123 +#: ../IkiWiki/Plugin/highlight.pm:124 msgid "" "warning: highlight perl module not available; falling back to pass through" msgstr "" @@ -383,104 +383,104 @@ msgstr "" msgid "htmltidy failed to parse this html" msgstr "" -#: ../IkiWiki/Plugin/img.pm:64 +#: ../IkiWiki/Plugin/img.pm:69 msgid "Image::Magick is not installed" msgstr "" -#: ../IkiWiki/Plugin/img.pm:68 ../IkiWiki/Plugin/img.pm:112 +#: ../IkiWiki/Plugin/img.pm:73 ../IkiWiki/Plugin/img.pm:117 #, perl-format msgid "failed to read %s: %s" msgstr "" -#: ../IkiWiki/Plugin/img.pm:74 +#: ../IkiWiki/Plugin/img.pm:79 #, perl-format msgid "wrong size format \"%s\" (should be WxH)" msgstr "" -#: ../IkiWiki/Plugin/img.pm:120 +#: ../IkiWiki/Plugin/img.pm:125 #, perl-format msgid "failed to resize: %s" msgstr "" -#: ../IkiWiki/Plugin/img.pm:140 +#: ../IkiWiki/Plugin/img.pm:145 #, perl-format msgid "failed to determine size of image %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:92 +#: ../IkiWiki/Plugin/inline.pm:93 msgid "Must specify url to wiki with --url when using --rss or --atom" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:138 +#: ../IkiWiki/Plugin/inline.pm:139 msgid "page editing not allowed" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:155 +#: ../IkiWiki/Plugin/inline.pm:156 msgid "missing pages parameter" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:191 +#: ../IkiWiki/Plugin/inline.pm:192 #, perl-format msgid "the %s and %s parameters cannot be used together" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:312 +#: ../IkiWiki/Plugin/inline.pm:313 msgid "Add a new post titled:" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:332 +#: ../IkiWiki/Plugin/inline.pm:333 #, perl-format msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:624 +#: ../IkiWiki/Plugin/inline.pm:625 msgid "RPC::XML::Client not found, not pinging" msgstr "" -#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 -#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 +#: ../IkiWiki/Plugin/linkmap.pm:81 ../IkiWiki/Plugin/linkmap.pm:88 +#: ../IkiWiki/Plugin/linkmap.pm:92 ../IkiWiki/Plugin/linkmap.pm:95 msgid "failed to run dot" msgstr "" -#: ../IkiWiki/Plugin/linkmap.pm:84 +#: ../IkiWiki/Plugin/linkmap.pm:85 msgid "linkmap" msgstr "" -#: ../IkiWiki/Plugin/lockedit.pm:48 +#: ../IkiWiki/Plugin/lockedit.pm:49 #, perl-format msgid "%s is locked and cannot be edited" msgstr "" -#: ../IkiWiki/Plugin/mdwn.pm:44 +#: ../IkiWiki/Plugin/mdwn.pm:45 msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed" msgstr "" -#: ../IkiWiki/Plugin/mdwn.pm:69 +#: ../IkiWiki/Plugin/mdwn.pm:70 #, perl-format msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:162 msgid "stylesheet not found" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:199 +#: ../IkiWiki/Plugin/meta.pm:200 msgid "redir page not found" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:213 +#: ../IkiWiki/Plugin/meta.pm:214 msgid "redir cycle is not allowed" msgstr "" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirror" msgstr "" -#: ../IkiWiki/Plugin/moderatedcomments.pm:41 +#: ../IkiWiki/Plugin/moderatedcomments.pm:42 msgid "comment needs moderation" msgstr "" @@ -488,19 +488,19 @@ msgstr "" msgid "more" msgstr "" -#: ../IkiWiki/Plugin/norcs.pm:65 +#: ../IkiWiki/Plugin/norcs.pm:66 msgid "getctime not implemented" msgstr "" -#: ../IkiWiki/Plugin/openid.pm:61 +#: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "" -#: ../IkiWiki/Plugin/openid.pm:64 +#: ../IkiWiki/Plugin/openid.pm:65 msgid "Get an OpenID" msgstr "" -#: ../IkiWiki/Plugin/orphans.pm:55 +#: ../IkiWiki/Plugin/orphans.pm:56 msgid "All pages have other pages linking to them." msgstr "" @@ -508,31 +508,39 @@ msgstr "" msgid "bad or missing template" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:248 +#: ../IkiWiki/Plugin/passwordauth.pm:229 +msgid "Your user page: " +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:236 +msgid "Create your user page" +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:264 msgid "Account creation successful. Now you can Login." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:251 +#: ../IkiWiki/Plugin/passwordauth.pm:267 msgid "Error creating account." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:258 +#: ../IkiWiki/Plugin/passwordauth.pm:274 msgid "No email address, so cannot email password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:292 +#: ../IkiWiki/Plugin/passwordauth.pm:308 msgid "Failed to send mail" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:294 +#: ../IkiWiki/Plugin/passwordauth.pm:310 msgid "You have been mailed password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:329 +#: ../IkiWiki/Plugin/passwordauth.pm:345 msgid "incorrect password reset url" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:332 +#: ../IkiWiki/Plugin/passwordauth.pm:348 msgid "password reset denied" msgstr "" @@ -562,117 +570,117 @@ msgstr "" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:138 +#: ../IkiWiki/Plugin/po.pm:139 #, perl-format msgid "%s is not a valid language code" msgstr "" -#: ../IkiWiki/Plugin/po.pm:150 +#: ../IkiWiki/Plugin/po.pm:151 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:155 +#: ../IkiWiki/Plugin/po.pm:156 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:385 +#: ../IkiWiki/Plugin/po.pm:386 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 #, perl-format msgid "building %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:427 +#: ../IkiWiki/Plugin/po.pm:428 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:451 +#: ../IkiWiki/Plugin/po.pm:452 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:471 +#: ../IkiWiki/Plugin/po.pm:472 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:870 +#: ../IkiWiki/Plugin/po.pm:871 #, perl-format msgid "POT file (%s) does not exist" msgstr "" -#: ../IkiWiki/Plugin/po.pm:884 +#: ../IkiWiki/Plugin/po.pm:885 #, perl-format msgid "failed to copy underlay PO file to %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:893 +#: ../IkiWiki/Plugin/po.pm:894 #, perl-format msgid "failed to update %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:899 +#: ../IkiWiki/Plugin/po.pm:900 #, perl-format msgid "failed to copy the POT file to %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:935 +#: ../IkiWiki/Plugin/po.pm:936 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:948 +#: ../IkiWiki/Plugin/po.pm:949 #, perl-format msgid "failed to translate %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1032 +#: ../IkiWiki/Plugin/po.pm:1033 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 -#: ../IkiWiki/Plugin/po.pm:1141 +#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 +#: ../IkiWiki/Plugin/po.pm:1142 #, perl-format msgid "failed to write %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1100 +#: ../IkiWiki/Plugin/po.pm:1101 msgid "failed to translate" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1153 +#: ../IkiWiki/Plugin/po.pm:1154 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" -#: ../IkiWiki/Plugin/poll.pm:69 +#: ../IkiWiki/Plugin/poll.pm:70 msgid "vote" msgstr "" -#: ../IkiWiki/Plugin/poll.pm:77 +#: ../IkiWiki/Plugin/poll.pm:78 msgid "Total votes:" msgstr "" -#: ../IkiWiki/Plugin/polygen.pm:41 +#: ../IkiWiki/Plugin/polygen.pm:42 msgid "polygen not installed" msgstr "" -#: ../IkiWiki/Plugin/polygen.pm:60 +#: ../IkiWiki/Plugin/polygen.pm:61 msgid "command failed" msgstr "" -#: ../IkiWiki/Plugin/postsparkline.pm:46 +#: ../IkiWiki/Plugin/postsparkline.pm:47 msgid "missing formula" msgstr "" -#: ../IkiWiki/Plugin/postsparkline.pm:53 +#: ../IkiWiki/Plugin/postsparkline.pm:54 msgid "unknown formula" msgstr "" @@ -740,12 +748,12 @@ msgstr "geceyarısında" msgid "at noon on %A" msgstr "%A öğleyin" -#: ../IkiWiki/Plugin/progress.pm:34 +#: ../IkiWiki/Plugin/progress.pm:35 #, perl-format msgid "illegal percent value %s" msgstr "" -#: ../IkiWiki/Plugin/progress.pm:55 +#: ../IkiWiki/Plugin/progress.pm:56 msgid "need either `percent` or `totalpages` and `donepages` parameters" msgstr "" @@ -753,81 +761,81 @@ msgstr "" msgid "(Diff truncated)" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36 +#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:37 #, perl-format msgid "%s does not exist" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:38 +#: ../IkiWiki/Plugin/remove.pm:39 #, perl-format msgid "%s is not in the srcdir, so it cannot be deleted" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45 +#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:46 #, perl-format msgid "%s is not a file" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:134 +#: ../IkiWiki/Plugin/remove.pm:135 #, perl-format msgid "confirm removal of %s" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:171 +#: ../IkiWiki/Plugin/remove.pm:172 msgid "Please select the attachments to remove." msgstr "" -#: ../IkiWiki/Plugin/remove.pm:211 +#: ../IkiWiki/Plugin/remove.pm:212 msgid "removed" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:42 +#: ../IkiWiki/Plugin/rename.pm:43 #, perl-format msgid "%s is not in the srcdir, so it cannot be renamed" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:62 +#: ../IkiWiki/Plugin/rename.pm:63 msgid "no change to the file name was specified" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:68 +#: ../IkiWiki/Plugin/rename.pm:69 #, perl-format msgid "illegal name" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:73 +#: ../IkiWiki/Plugin/rename.pm:74 #, perl-format msgid "%s already exists" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:79 +#: ../IkiWiki/Plugin/rename.pm:80 #, perl-format msgid "%s already exists on disk" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:122 +#: ../IkiWiki/Plugin/rename.pm:123 #, perl-format msgid "rename %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:161 +#: ../IkiWiki/Plugin/rename.pm:162 msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:248 +#: ../IkiWiki/Plugin/rename.pm:249 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:251 +#: ../IkiWiki/Plugin/rename.pm:252 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:348 +#: ../IkiWiki/Plugin/rename.pm:349 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:572 +#: ../IkiWiki/Plugin/rename.pm:573 #, perl-format msgid "update for rename of %s to %s" msgstr "" @@ -842,28 +850,28 @@ msgstr "" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:182 +#: ../IkiWiki/Plugin/search.pm:183 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "" -#: ../IkiWiki/Plugin/search.pm:217 +#: ../IkiWiki/Plugin/search.pm:218 msgid "search" msgstr "" -#: ../IkiWiki/Plugin/shortcut.pm:31 +#: ../IkiWiki/Plugin/shortcut.pm:32 #, perl-format msgid "shortcut plugin will not work without %s" msgstr "" -#: ../IkiWiki/Plugin/shortcut.pm:44 +#: ../IkiWiki/Plugin/shortcut.pm:45 msgid "missing name or url parameter" msgstr "" #. translators: This is used to display what shortcuts are defined. #. translators: First parameter is the name of the shortcut, the second #. translators: is an URL. -#: ../IkiWiki/Plugin/shortcut.pm:54 +#: ../IkiWiki/Plugin/shortcut.pm:55 #, perl-format msgid "shortcut %s points to %s" msgstr "" @@ -872,113 +880,115 @@ msgstr "" msgid "failed to parse any smileys" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:72 +#: ../IkiWiki/Plugin/sparkline.pm:73 msgid "parse error" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:78 +#: ../IkiWiki/Plugin/sparkline.pm:79 msgid "invalid featurepoint diameter" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:88 +#: ../IkiWiki/Plugin/sparkline.pm:89 msgid "invalid featurepoint location" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:99 +#: ../IkiWiki/Plugin/sparkline.pm:100 msgid "missing values" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:104 +#: ../IkiWiki/Plugin/sparkline.pm:105 msgid "invalid height value" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:111 +#: ../IkiWiki/Plugin/sparkline.pm:112 msgid "missing width parameter" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:115 +#: ../IkiWiki/Plugin/sparkline.pm:116 msgid "invalid width value" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:153 +#: ../IkiWiki/Plugin/sparkline.pm:154 msgid "failed to run php" msgstr "" -#: ../IkiWiki/Plugin/table.pm:31 +#: ../IkiWiki/Plugin/table.pm:32 msgid "cannot find file" msgstr "" -#: ../IkiWiki/Plugin/table.pm:87 +#: ../IkiWiki/Plugin/table.pm:88 msgid "unknown data format" msgstr "" -#: ../IkiWiki/Plugin/table.pm:95 +#: ../IkiWiki/Plugin/table.pm:96 msgid "empty data" msgstr "" -#: ../IkiWiki/Plugin/table.pm:114 +#: ../IkiWiki/Plugin/table.pm:115 msgid "Direct data download" msgstr "" -#: ../IkiWiki/Plugin/table.pm:148 +#: ../IkiWiki/Plugin/table.pm:149 #, perl-format msgid "parse fail at line %d: %s" msgstr "" -#: ../IkiWiki/Plugin/template.pm:29 +#: ../IkiWiki/Plugin/template.pm:34 msgid "missing id parameter" msgstr "" -#: ../IkiWiki/Plugin/template.pm:36 +#: ../IkiWiki/Plugin/template.pm:41 #, perl-format msgid "template %s not found" msgstr "" -#: ../IkiWiki/Plugin/template.pm:55 +#: ../IkiWiki/Plugin/template.pm:60 msgid "failed to process:" msgstr "" -#: ../IkiWiki/Plugin/teximg.pm:70 +#: ../IkiWiki/Plugin/teximg.pm:71 msgid "missing tex code" msgstr "" -#: ../IkiWiki/Plugin/teximg.pm:122 +#: ../IkiWiki/Plugin/teximg.pm:123 msgid "failed to generate image from code" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:89 -msgid "plugin" +#: ../IkiWiki/Plugin/websetup.pm:91 +#, perl-format +msgid "%s plugin:" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:108 +#: ../IkiWiki/Plugin/websetup.pm:107 #, perl-format -msgid "enable %s?" +msgid "%s plugins" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:244 -msgid "setup file for this wiki is not known" +#: ../IkiWiki/Plugin/websetup.pm:121 +#, perl-format +msgid "enable %s?" msgstr "" #: ../IkiWiki/Plugin/websetup.pm:260 -msgid "main" +msgid "setup file for this wiki is not known" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:261 -msgid "plugins" +#: ../IkiWiki/Plugin/websetup.pm:276 +msgid "main" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:404 +#: ../IkiWiki/Plugin/websetup.pm:419 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:408 +#: ../IkiWiki/Plugin/websetup.pm:423 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:445 +#: ../IkiWiki/Plugin/websetup.pm:460 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1052,20 +1062,20 @@ msgstr "" msgid "cannot read %s: %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:33 +#: ../IkiWiki/Setup/Automator.pm:34 msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:79 +#: ../IkiWiki/Setup/Automator.pm:80 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:105 +#: ../IkiWiki/Setup/Automator.pm:106 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:123 +#: ../IkiWiki/Setup/Automator.pm:124 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1136,25 +1146,25 @@ msgstr "" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1263 +#: ../IkiWiki.pm:1255 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "" -#: ../IkiWiki.pm:1862 +#: ../IkiWiki.pm:1854 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2005 +#: ../IkiWiki.pm:1997 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2016 +#: ../IkiWiki.pm:2008 #, perl-format msgid "unknown sort type %s" msgstr "" -#: ../IkiWiki.pm:2035 +#: ../IkiWiki.pm:2027 #, perl-format msgid "cannot match pages: %s" msgstr "" diff --git a/po/vi.po b/po/vi.po index 9fccf87b5..9326f2975 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: 2010-01-22 16:04-0500\n" +"POT-Creation-Date: 2010-02-12 16:48-0500\n" "PO-Revision-Date: 2007-01-13 15:31+1030\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" @@ -55,7 +55,7 @@ msgstr "Tùy thích đã được lưu." msgid "You are banned." msgstr "Bạn bị cấm ra." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1281 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 msgid "Error" msgstr "Lỗi" @@ -146,35 +146,35 @@ msgstr "xong" msgid "Must specify %s" msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:136 +#: ../IkiWiki/Plugin/amazon_s3.pm:140 #, fuzzy msgid "Failed to create S3 bucket: " msgstr "Lỗi gửi thư" -#: ../IkiWiki/Plugin/amazon_s3.pm:221 +#: ../IkiWiki/Plugin/amazon_s3.pm:225 #, fuzzy msgid "Failed to save file to S3: " msgstr "Lỗi gửi thư" -#: ../IkiWiki/Plugin/amazon_s3.pm:243 +#: ../IkiWiki/Plugin/amazon_s3.pm:247 #, fuzzy msgid "Failed to delete file from S3: " msgstr "lỗi ghi %s: %s" -#: ../IkiWiki/Plugin/attachment.pm:49 +#: ../IkiWiki/Plugin/attachment.pm:50 #, perl-format msgid "there is already a page named %s" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:65 +#: ../IkiWiki/Plugin/attachment.pm:66 msgid "prohibited by allowed_attachments" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:140 +#: ../IkiWiki/Plugin/attachment.pm:141 msgid "bad attachment filename" msgstr "" -#: ../IkiWiki/Plugin/attachment.pm:182 +#: ../IkiWiki/Plugin/attachment.pm:183 msgid "attachment upload" msgstr "" @@ -182,7 +182,7 @@ msgstr "" msgid "automatic index generation" msgstr "" -#: ../IkiWiki/Plugin/blogspam.pm:108 +#: ../IkiWiki/Plugin/blogspam.pm:109 msgid "" "Sorry, but that looks like spam to blogspam: " @@ -197,12 +197,12 @@ msgstr "" msgid "There are no broken links!" msgstr "Không có liên kết bị ngắt nào." -#: ../IkiWiki/Plugin/comments.pm:124 ../IkiWiki/Plugin/format.pm:38 +#: ../IkiWiki/Plugin/comments.pm:125 ../IkiWiki/Plugin/format.pm:48 #, perl-format msgid "unsupported page format %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:129 +#: ../IkiWiki/Plugin/comments.pm:130 msgid "comment must have content" msgstr "" @@ -210,7 +210,7 @@ msgstr "" msgid "Anonymous" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:97 +#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "" @@ -246,7 +246,7 @@ msgstr "" msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:240 +#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256 msgid "you are not logged in as an admin" msgstr "" @@ -262,133 +262,133 @@ msgstr "" msgid "Comments" msgstr "" -#: ../IkiWiki/Plugin/conditional.pm:27 ../IkiWiki/Plugin/cutpaste.pm:30 -#: ../IkiWiki/Plugin/cutpaste.pm:45 ../IkiWiki/Plugin/cutpaste.pm:61 +#: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 +#: ../IkiWiki/Plugin/cutpaste.pm:46 ../IkiWiki/Plugin/cutpaste.pm:62 #: ../IkiWiki/Plugin/testpagespec.pm:26 #, perl-format msgid "%s parameter is required" msgstr "" -#: ../IkiWiki/Plugin/cutpaste.pm:66 +#: ../IkiWiki/Plugin/cutpaste.pm:67 msgid "no text was copied in this page" msgstr "" -#: ../IkiWiki/Plugin/cutpaste.pm:69 +#: ../IkiWiki/Plugin/cutpaste.pm:70 #, perl-format msgid "no text was copied in this page with id %s" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:40 +#: ../IkiWiki/Plugin/editpage.pm:41 #, fuzzy, perl-format msgid "removing old preview %s" msgstr "đang gỡ bỏ trang cũ %s" -#: ../IkiWiki/Plugin/editpage.pm:113 +#: ../IkiWiki/Plugin/editpage.pm:114 #, perl-format msgid "%s is not an editable page" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:292 +#: ../IkiWiki/Plugin/editpage.pm:296 #, perl-format msgid "creating %s" msgstr "đang tạo %s" -#: ../IkiWiki/Plugin/editpage.pm:310 ../IkiWiki/Plugin/editpage.pm:329 -#: ../IkiWiki/Plugin/editpage.pm:339 ../IkiWiki/Plugin/editpage.pm:383 -#: ../IkiWiki/Plugin/editpage.pm:422 +#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 +#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 +#: ../IkiWiki/Plugin/editpage.pm:426 #, perl-format msgid "editing %s" msgstr "đang sửa %s" -#: ../IkiWiki/Plugin/edittemplate.pm:51 +#: ../IkiWiki/Plugin/edittemplate.pm:52 #, fuzzy msgid "template not specified" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/edittemplate.pm:54 +#: ../IkiWiki/Plugin/edittemplate.pm:55 #, fuzzy msgid "match not specified" msgstr "chưa xác định tên tập tin bộ bao bọc" -#: ../IkiWiki/Plugin/edittemplate.pm:63 +#: ../IkiWiki/Plugin/edittemplate.pm:64 #, perl-format msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:137 +#: ../IkiWiki/Plugin/edittemplate.pm:138 #, fuzzy msgid "failed to process" msgstr "mẫu không xử lý được:" -#: ../IkiWiki/Plugin/format.pm:20 +#: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" msgstr "" -#: ../IkiWiki/Plugin/fortune.pm:27 +#: ../IkiWiki/Plugin/fortune.pm:28 msgid "fortune failed" msgstr "fortune bị lỗi" -#: ../IkiWiki/Plugin/getsource.pm:63 ../IkiWiki/Plugin/goto.pm:56 +#: ../IkiWiki/Plugin/getsource.pm:64 ../IkiWiki/Plugin/goto.pm:57 #, fuzzy msgid "missing page" msgstr "mẫu thiếu tham số id" -#: ../IkiWiki/Plugin/getsource.pm:65 ../IkiWiki/Plugin/goto.pm:58 +#: ../IkiWiki/Plugin/getsource.pm:66 ../IkiWiki/Plugin/goto.pm:59 #, perl-format msgid "The page %s does not exist." msgstr "" -#: ../IkiWiki/Plugin/getsource.pm:74 +#: ../IkiWiki/Plugin/getsource.pm:75 #, fuzzy msgid "not a page" msgstr "không thể đọc %s: %s" -#: ../IkiWiki/Plugin/getsource.pm:76 +#: ../IkiWiki/Plugin/getsource.pm:77 #, perl-format msgid "%s is an attachment, not a page." msgstr "" -#: ../IkiWiki/Plugin/git.pm:657 ../IkiWiki/Plugin/git.pm:675 +#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:697 +#: ../IkiWiki/Plugin/git.pm:698 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:701 +#: ../IkiWiki/Plugin/git.pm:702 msgid "you are not allowed to change file modes" msgstr "" -#: ../IkiWiki/Plugin/google.pm:25 ../IkiWiki/Plugin/po.pm:131 -#: ../IkiWiki/Plugin/search.pm:36 +#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/po.pm:132 +#: ../IkiWiki/Plugin/search.pm:37 #, fuzzy, perl-format msgid "Must specify %s when using the %s plugin" msgstr "Cần phải xác định %s khi dùng bổ sung tìm kiếm" -#: ../IkiWiki/Plugin/graphviz.pm:67 +#: ../IkiWiki/Plugin/graphviz.pm:68 #, fuzzy msgid "failed to run graphviz" msgstr "linkmap không chạy dot được" -#: ../IkiWiki/Plugin/graphviz.pm:94 +#: ../IkiWiki/Plugin/graphviz.pm:95 msgid "prog not a valid graphviz program" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:47 +#: ../IkiWiki/Plugin/highlight.pm:48 #, perl-format msgid "tohighlight contains unknown file type '%s'" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:58 +#: ../IkiWiki/Plugin/highlight.pm:59 #, perl-format msgid "Source code: %s" msgstr "" -#: ../IkiWiki/Plugin/highlight.pm:123 +#: ../IkiWiki/Plugin/highlight.pm:124 msgid "" "warning: highlight perl module not available; falling back to pass through" msgstr "" @@ -398,113 +398,113 @@ msgstr "" msgid "htmltidy failed to parse this html" msgstr "lỗi phân tách hình cười nào nên tắt bổ sung" -#: ../IkiWiki/Plugin/img.pm:64 +#: ../IkiWiki/Plugin/img.pm:69 #, fuzzy msgid "Image::Magick is not installed" msgstr "chưa cài đặt polygen" -#: ../IkiWiki/Plugin/img.pm:68 ../IkiWiki/Plugin/img.pm:112 +#: ../IkiWiki/Plugin/img.pm:73 ../IkiWiki/Plugin/img.pm:117 #, fuzzy, perl-format msgid "failed to read %s: %s" msgstr "lỗi ghi %s: %s" -#: ../IkiWiki/Plugin/img.pm:74 +#: ../IkiWiki/Plugin/img.pm:79 #, perl-format msgid "wrong size format \"%s\" (should be WxH)" msgstr "" -#: ../IkiWiki/Plugin/img.pm:120 +#: ../IkiWiki/Plugin/img.pm:125 #, fuzzy, perl-format msgid "failed to resize: %s" msgstr "lỗi ghi %s: %s" -#: ../IkiWiki/Plugin/img.pm:140 +#: ../IkiWiki/Plugin/img.pm:145 #, fuzzy, perl-format msgid "failed to determine size of image %s" msgstr "lỗi ghi %s: %s" -#: ../IkiWiki/Plugin/inline.pm:92 +#: ../IkiWiki/Plugin/inline.pm:93 msgid "Must specify url to wiki with --url when using --rss or --atom" msgstr "" "Cần phải xác định địa chỉ URL tới wiki với « --url » khi dùng « --rss » hay « --" "atom »" -#: ../IkiWiki/Plugin/inline.pm:138 +#: ../IkiWiki/Plugin/inline.pm:139 #, fuzzy msgid "page editing not allowed" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/inline.pm:155 +#: ../IkiWiki/Plugin/inline.pm:156 #, fuzzy msgid "missing pages parameter" msgstr "mẫu thiếu tham số id" -#: ../IkiWiki/Plugin/inline.pm:191 +#: ../IkiWiki/Plugin/inline.pm:192 #, perl-format msgid "the %s and %s parameters cannot be used together" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:312 +#: ../IkiWiki/Plugin/inline.pm:313 msgid "Add a new post titled:" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:332 +#: ../IkiWiki/Plugin/inline.pm:333 #, perl-format msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:624 +#: ../IkiWiki/Plugin/inline.pm:625 msgid "RPC::XML::Client not found, not pinging" msgstr "Không tìm thấy RPC::XML::Client nên không gửi gói tin ping" -#: ../IkiWiki/Plugin/linkmap.pm:80 ../IkiWiki/Plugin/linkmap.pm:87 -#: ../IkiWiki/Plugin/linkmap.pm:91 ../IkiWiki/Plugin/linkmap.pm:94 +#: ../IkiWiki/Plugin/linkmap.pm:81 ../IkiWiki/Plugin/linkmap.pm:88 +#: ../IkiWiki/Plugin/linkmap.pm:92 ../IkiWiki/Plugin/linkmap.pm:95 #, fuzzy msgid "failed to run dot" msgstr "linkmap không chạy dot được" -#: ../IkiWiki/Plugin/linkmap.pm:84 +#: ../IkiWiki/Plugin/linkmap.pm:85 msgid "linkmap" msgstr "" -#: ../IkiWiki/Plugin/lockedit.pm:48 +#: ../IkiWiki/Plugin/lockedit.pm:49 #, fuzzy, perl-format msgid "%s is locked and cannot be edited" msgstr "%s bị %s khoá nên không thể sửa được" -#: ../IkiWiki/Plugin/mdwn.pm:44 +#: ../IkiWiki/Plugin/mdwn.pm:45 msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed" msgstr "" -#: ../IkiWiki/Plugin/mdwn.pm:69 +#: ../IkiWiki/Plugin/mdwn.pm:70 #, perl-format msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "lỗi nạp mô-đun perl Markdown.pm (%s) hay « /usr/bin/markdown » (%s)" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:162 #, fuzzy msgid "stylesheet not found" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/meta.pm:199 +#: ../IkiWiki/Plugin/meta.pm:200 #, fuzzy msgid "redir page not found" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/meta.pm:213 +#: ../IkiWiki/Plugin/meta.pm:214 #, fuzzy msgid "redir cycle is not allowed" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Nhân bản" -#: ../IkiWiki/Plugin/mirrorlist.pm:43 +#: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirror" msgstr "Nhân bản" -#: ../IkiWiki/Plugin/moderatedcomments.pm:41 +#: ../IkiWiki/Plugin/moderatedcomments.pm:42 msgid "comment needs moderation" msgstr "" @@ -512,19 +512,19 @@ msgstr "" msgid "more" msgstr "" -#: ../IkiWiki/Plugin/norcs.pm:65 +#: ../IkiWiki/Plugin/norcs.pm:66 msgid "getctime not implemented" msgstr "chưa thực hiện getctime" -#: ../IkiWiki/Plugin/openid.pm:61 +#: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "" -#: ../IkiWiki/Plugin/openid.pm:64 +#: ../IkiWiki/Plugin/openid.pm:65 msgid "Get an OpenID" msgstr "Lấy OpenID" -#: ../IkiWiki/Plugin/orphans.pm:55 +#: ../IkiWiki/Plugin/orphans.pm:56 #, fuzzy msgid "All pages have other pages linking to them." msgstr "Mọi trang được liên kết với trang khác." @@ -533,31 +533,39 @@ msgstr "Mọi trang được liên kết với trang khác." msgid "bad or missing template" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:248 +#: ../IkiWiki/Plugin/passwordauth.pm:229 +msgid "Your user page: " +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:236 +msgid "Create your user page" +msgstr "" + +#: ../IkiWiki/Plugin/passwordauth.pm:264 msgid "Account creation successful. Now you can Login." msgstr "Tài khoản đã được tạo. Lúc bây giờ bạn có thể đăng nhập." -#: ../IkiWiki/Plugin/passwordauth.pm:251 +#: ../IkiWiki/Plugin/passwordauth.pm:267 msgid "Error creating account." msgstr "Gặp lỗi khi tạo tài khoản." -#: ../IkiWiki/Plugin/passwordauth.pm:258 +#: ../IkiWiki/Plugin/passwordauth.pm:274 msgid "No email address, so cannot email password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:292 +#: ../IkiWiki/Plugin/passwordauth.pm:308 msgid "Failed to send mail" msgstr "Lỗi gửi thư" -#: ../IkiWiki/Plugin/passwordauth.pm:294 +#: ../IkiWiki/Plugin/passwordauth.pm:310 msgid "You have been mailed password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:329 +#: ../IkiWiki/Plugin/passwordauth.pm:345 msgid "incorrect password reset url" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:332 +#: ../IkiWiki/Plugin/passwordauth.pm:348 msgid "password reset denied" msgstr "" @@ -588,119 +596,119 @@ msgstr "Không tìm thấy RPC::XML::Client nên không gửi gói tin ping" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:138 +#: ../IkiWiki/Plugin/po.pm:139 #, perl-format msgid "%s is not a valid language code" msgstr "" -#: ../IkiWiki/Plugin/po.pm:150 +#: ../IkiWiki/Plugin/po.pm:151 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:155 +#: ../IkiWiki/Plugin/po.pm:156 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:385 +#: ../IkiWiki/Plugin/po.pm:386 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:389 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 #, fuzzy, perl-format msgid "building %s" msgstr "đang sửa %s" -#: ../IkiWiki/Plugin/po.pm:427 +#: ../IkiWiki/Plugin/po.pm:428 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:451 +#: ../IkiWiki/Plugin/po.pm:452 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:471 +#: ../IkiWiki/Plugin/po.pm:472 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:870 +#: ../IkiWiki/Plugin/po.pm:871 #, perl-format msgid "POT file (%s) does not exist" msgstr "" -#: ../IkiWiki/Plugin/po.pm:884 +#: ../IkiWiki/Plugin/po.pm:885 #, fuzzy, perl-format msgid "failed to copy underlay PO file to %s" msgstr "lỗi biên dịch %s" -#: ../IkiWiki/Plugin/po.pm:893 +#: ../IkiWiki/Plugin/po.pm:894 #, fuzzy, perl-format msgid "failed to update %s" msgstr "lỗi biên dịch %s" -#: ../IkiWiki/Plugin/po.pm:899 +#: ../IkiWiki/Plugin/po.pm:900 #, fuzzy, perl-format msgid "failed to copy the POT file to %s" msgstr "lỗi biên dịch %s" -#: ../IkiWiki/Plugin/po.pm:935 +#: ../IkiWiki/Plugin/po.pm:936 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:948 +#: ../IkiWiki/Plugin/po.pm:949 #, fuzzy, perl-format msgid "failed to translate %s" msgstr "lỗi ghi %s: %s" -#: ../IkiWiki/Plugin/po.pm:1032 +#: ../IkiWiki/Plugin/po.pm:1033 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1088 ../IkiWiki/Plugin/po.pm:1102 -#: ../IkiWiki/Plugin/po.pm:1141 +#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 +#: ../IkiWiki/Plugin/po.pm:1142 #, fuzzy, perl-format msgid "failed to write %s" msgstr "lỗi ghi %s: %s" -#: ../IkiWiki/Plugin/po.pm:1100 +#: ../IkiWiki/Plugin/po.pm:1101 #, fuzzy msgid "failed to translate" msgstr "linkmap không chạy dot được" -#: ../IkiWiki/Plugin/po.pm:1153 +#: ../IkiWiki/Plugin/po.pm:1154 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" -#: ../IkiWiki/Plugin/poll.pm:69 +#: ../IkiWiki/Plugin/poll.pm:70 msgid "vote" msgstr "bỏ phiếu" -#: ../IkiWiki/Plugin/poll.pm:77 +#: ../IkiWiki/Plugin/poll.pm:78 msgid "Total votes:" msgstr "Tổng số phiếu :" -#: ../IkiWiki/Plugin/polygen.pm:41 +#: ../IkiWiki/Plugin/polygen.pm:42 msgid "polygen not installed" msgstr "chưa cài đặt polygen" -#: ../IkiWiki/Plugin/polygen.pm:60 +#: ../IkiWiki/Plugin/polygen.pm:61 #, fuzzy msgid "command failed" msgstr "fortune bị lỗi" -#: ../IkiWiki/Plugin/postsparkline.pm:46 +#: ../IkiWiki/Plugin/postsparkline.pm:47 msgid "missing formula" msgstr "" -#: ../IkiWiki/Plugin/postsparkline.pm:53 +#: ../IkiWiki/Plugin/postsparkline.pm:54 msgid "unknown formula" msgstr "" @@ -768,12 +776,12 @@ msgstr "" msgid "at noon on %A" msgstr "" -#: ../IkiWiki/Plugin/progress.pm:34 +#: ../IkiWiki/Plugin/progress.pm:35 #, perl-format msgid "illegal percent value %s" msgstr "" -#: ../IkiWiki/Plugin/progress.pm:55 +#: ../IkiWiki/Plugin/progress.pm:56 msgid "need either `percent` or `totalpages` and `donepages` parameters" msgstr "" @@ -781,82 +789,82 @@ msgstr "" msgid "(Diff truncated)" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36 +#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:37 #, perl-format msgid "%s does not exist" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:38 +#: ../IkiWiki/Plugin/remove.pm:39 #, fuzzy, perl-format msgid "%s is not in the srcdir, so it cannot be deleted" msgstr "%s bị %s khoá nên không thể sửa được" -#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45 +#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:46 #, perl-format msgid "%s is not a file" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:134 +#: ../IkiWiki/Plugin/remove.pm:135 #, perl-format msgid "confirm removal of %s" msgstr "" -#: ../IkiWiki/Plugin/remove.pm:171 +#: ../IkiWiki/Plugin/remove.pm:172 msgid "Please select the attachments to remove." msgstr "" -#: ../IkiWiki/Plugin/remove.pm:211 +#: ../IkiWiki/Plugin/remove.pm:212 msgid "removed" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:42 +#: ../IkiWiki/Plugin/rename.pm:43 #, perl-format msgid "%s is not in the srcdir, so it cannot be renamed" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:62 +#: ../IkiWiki/Plugin/rename.pm:63 #, fuzzy msgid "no change to the file name was specified" msgstr "chưa xác định tên tập tin bộ bao bọc" -#: ../IkiWiki/Plugin/rename.pm:68 +#: ../IkiWiki/Plugin/rename.pm:69 #, perl-format msgid "illegal name" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:73 +#: ../IkiWiki/Plugin/rename.pm:74 #, perl-format msgid "%s already exists" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:79 +#: ../IkiWiki/Plugin/rename.pm:80 #, perl-format msgid "%s already exists on disk" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:122 +#: ../IkiWiki/Plugin/rename.pm:123 #, fuzzy, perl-format msgid "rename %s" msgstr "đang vẽ %s" -#: ../IkiWiki/Plugin/rename.pm:161 +#: ../IkiWiki/Plugin/rename.pm:162 msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:248 +#: ../IkiWiki/Plugin/rename.pm:249 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:251 +#: ../IkiWiki/Plugin/rename.pm:252 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:348 +#: ../IkiWiki/Plugin/rename.pm:349 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:572 +#: ../IkiWiki/Plugin/rename.pm:573 #, fuzzy, perl-format msgid "update for rename of %s to %s" msgstr "cập nhật %2$s của %1$s bởi %3$s" @@ -871,21 +879,21 @@ msgstr "lỗi ghi %s: %s" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:182 +#: ../IkiWiki/Plugin/search.pm:183 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "" -#: ../IkiWiki/Plugin/search.pm:217 +#: ../IkiWiki/Plugin/search.pm:218 msgid "search" msgstr "" -#: ../IkiWiki/Plugin/shortcut.pm:31 +#: ../IkiWiki/Plugin/shortcut.pm:32 #, perl-format msgid "shortcut plugin will not work without %s" msgstr "" -#: ../IkiWiki/Plugin/shortcut.pm:44 +#: ../IkiWiki/Plugin/shortcut.pm:45 #, fuzzy msgid "missing name or url parameter" msgstr "lối tắt thiếu tên hay tham số url" @@ -893,7 +901,7 @@ msgstr "lối tắt thiếu tên hay tham số url" #. translators: This is used to display what shortcuts are defined. #. translators: First parameter is the name of the shortcut, the second #. translators: is an URL. -#: ../IkiWiki/Plugin/shortcut.pm:54 +#: ../IkiWiki/Plugin/shortcut.pm:55 #, fuzzy, perl-format msgid "shortcut %s points to %s" msgstr "lối tắt %s chỉ tới %s" @@ -903,121 +911,123 @@ msgstr "lối tắt %s chỉ tới %s" msgid "failed to parse any smileys" msgstr "lỗi phân tách hình cười nào nên tắt bổ sung" -#: ../IkiWiki/Plugin/sparkline.pm:72 +#: ../IkiWiki/Plugin/sparkline.pm:73 #, fuzzy msgid "parse error" msgstr "linkmap không chạy dot được" -#: ../IkiWiki/Plugin/sparkline.pm:78 +#: ../IkiWiki/Plugin/sparkline.pm:79 msgid "invalid featurepoint diameter" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:88 +#: ../IkiWiki/Plugin/sparkline.pm:89 msgid "invalid featurepoint location" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:99 +#: ../IkiWiki/Plugin/sparkline.pm:100 msgid "missing values" msgstr "" -#: ../IkiWiki/Plugin/sparkline.pm:104 +#: ../IkiWiki/Plugin/sparkline.pm:105 #, fuzzy msgid "invalid height value" msgstr "linkmap không chạy dot được" -#: ../IkiWiki/Plugin/sparkline.pm:111 +#: ../IkiWiki/Plugin/sparkline.pm:112 #, fuzzy msgid "missing width parameter" msgstr "mẫu thiếu tham số id" -#: ../IkiWiki/Plugin/sparkline.pm:115 +#: ../IkiWiki/Plugin/sparkline.pm:116 #, fuzzy msgid "invalid width value" msgstr "linkmap không chạy dot được" -#: ../IkiWiki/Plugin/sparkline.pm:153 +#: ../IkiWiki/Plugin/sparkline.pm:154 #, fuzzy msgid "failed to run php" msgstr "linkmap không chạy dot được" -#: ../IkiWiki/Plugin/table.pm:31 +#: ../IkiWiki/Plugin/table.pm:32 msgid "cannot find file" msgstr "" -#: ../IkiWiki/Plugin/table.pm:87 +#: ../IkiWiki/Plugin/table.pm:88 msgid "unknown data format" msgstr "" -#: ../IkiWiki/Plugin/table.pm:95 +#: ../IkiWiki/Plugin/table.pm:96 msgid "empty data" msgstr "" -#: ../IkiWiki/Plugin/table.pm:114 +#: ../IkiWiki/Plugin/table.pm:115 msgid "Direct data download" msgstr "" -#: ../IkiWiki/Plugin/table.pm:148 +#: ../IkiWiki/Plugin/table.pm:149 #, fuzzy, perl-format msgid "parse fail at line %d: %s" msgstr "lỗi ghi %s: %s" -#: ../IkiWiki/Plugin/template.pm:29 +#: ../IkiWiki/Plugin/template.pm:34 #, fuzzy msgid "missing id parameter" msgstr "mẫu thiếu tham số id" -#: ../IkiWiki/Plugin/template.pm:36 +#: ../IkiWiki/Plugin/template.pm:41 #, perl-format msgid "template %s not found" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/template.pm:55 +#: ../IkiWiki/Plugin/template.pm:60 #, fuzzy msgid "failed to process:" msgstr "mẫu không xử lý được:" -#: ../IkiWiki/Plugin/teximg.pm:70 +#: ../IkiWiki/Plugin/teximg.pm:71 msgid "missing tex code" msgstr "" -#: ../IkiWiki/Plugin/teximg.pm:122 +#: ../IkiWiki/Plugin/teximg.pm:123 #, fuzzy msgid "failed to generate image from code" msgstr "lỗi ghi %s: %s" -#: ../IkiWiki/Plugin/websetup.pm:89 -msgid "plugin" +#: ../IkiWiki/Plugin/websetup.pm:91 +#, perl-format +msgid "%s plugin:" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:108 +#: ../IkiWiki/Plugin/websetup.pm:107 #, perl-format -msgid "enable %s?" +msgid "%s plugins" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:244 -msgid "setup file for this wiki is not known" +#: ../IkiWiki/Plugin/websetup.pm:121 +#, perl-format +msgid "enable %s?" msgstr "" #: ../IkiWiki/Plugin/websetup.pm:260 -msgid "main" +msgid "setup file for this wiki is not known" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:261 -msgid "plugins" +#: ../IkiWiki/Plugin/websetup.pm:276 +msgid "main" msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:404 +#: ../IkiWiki/Plugin/websetup.pm:419 msgid "" "The configuration changes shown below require a wiki rebuild to take effect." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:408 +#: ../IkiWiki/Plugin/websetup.pm:423 msgid "" "For the configuration changes shown below to fully take effect, you may need " "to rebuild the wiki." msgstr "" -#: ../IkiWiki/Plugin/websetup.pm:445 +#: ../IkiWiki/Plugin/websetup.pm:460 #, perl-format msgid "Error: %s exited nonzero (%s). Discarding setup changes." msgstr "" @@ -1091,20 +1101,20 @@ msgstr "ikiwiki: không thể vẽ %s" msgid "cannot read %s: %s" msgstr "không thể đọc %s: %s" -#: ../IkiWiki/Setup/Automator.pm:33 +#: ../IkiWiki/Setup/Automator.pm:34 msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:79 +#: ../IkiWiki/Setup/Automator.pm:80 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:105 +#: ../IkiWiki/Setup/Automator.pm:106 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:123 +#: ../IkiWiki/Setup/Automator.pm:124 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1175,25 +1185,25 @@ msgstr "" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1263 +#: ../IkiWiki.pm:1255 #, fuzzy, perl-format msgid "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" -#: ../IkiWiki.pm:1862 +#: ../IkiWiki.pm:1854 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2005 +#: ../IkiWiki.pm:1997 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2016 +#: ../IkiWiki.pm:2008 #, perl-format msgid "unknown sort type %s" msgstr "kiểu sắp xếp không rõ %s" -#: ../IkiWiki.pm:2035 +#: ../IkiWiki.pm:2027 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "không thể đọc %s: %s" -- cgit v1.2.3 From 6e8fd3890e96d3b0fdbf1ad91fc84628d2e1aa47 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Feb 2010 17:09:40 -0500 Subject: add news item for ikiwiki 3.20100212 --- doc/news/version_3.20091113.mdwn | 18 ------------------ doc/news/version_3.20100212.mdwn | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 18 deletions(-) delete mode 100644 doc/news/version_3.20091113.mdwn create mode 100644 doc/news/version_3.20100212.mdwn diff --git a/doc/news/version_3.20091113.mdwn b/doc/news/version_3.20091113.mdwn deleted file mode 100644 index 579174011..000000000 --- a/doc/news/version_3.20091113.mdwn +++ /dev/null @@ -1,18 +0,0 @@ -ikiwiki 3.20091113 released with [[!toggle text="these changes"]] -[[!toggleable text=""" - * underlay: Fix example values put in setup file to be array - references. - * underlay: Avoid crashing if lists of underlays (or template - directories) are not configured. - * Moved the postscan hook to run on the raw html of a page, before - the template is filled out. This improves the search plugin's indexing, - since it will not include navigational elements from the page template - or sidebar. - * localstyle: New plugin, allows overrding the toplevel local.css - with one that is closer to a page. - * httpauth: Add cgiauthurl setting that can be used to do http basic auth - only when ikiwiki needs authentication, rather than for any access to - the cgi/wiki. - * inline: Do not generate feeds for nested inlines. - * inline: Allow direct inclusion of non-page files in raw mode. - * inline: Fix display of all pages when archive=yes or show=0 are used."""]] diff --git a/doc/news/version_3.20100212.mdwn b/doc/news/version_3.20100212.mdwn new file mode 100644 index 000000000..3dcfe5f84 --- /dev/null +++ b/doc/news/version_3.20100212.mdwn @@ -0,0 +1,26 @@ +ikiwiki 3.20100212 released with [[!toggle text="these changes"]] +[[!toggleable text=""" + * template: Preprocess parameters before htmlizing. + * img: Fix a bug that could taint @links with undef values. + * setup automator: Configure Term::Readline to use bold for prompt, rather + than default underline. Closes: #[517656](http://bugs.debian.org/517656) + * Allow jumping directly into account registration process by going to + ikiwiki.cgi?do=register + * Improve display of openid in preferences page. + * Add link to userpage (or creation link) to top of preferences page. + * opendiscussion: This plugin will also now allow posting comments + to otherwise locked-down sites. + * auto-blog.setup: Lock all pages, so only admin can post to the blog + by default, and enable opendiscussion so others can comment. + * Fix color and format plugins to appear in the websetup interface. + * amazon\_s3: Fix to support the EU S3 datacenter, which is more picky + about attempts to create already existing buckets. + * httpauth: When cgiauthurl is configured, httpauth can now be used + alongside other authentication methods (like openid or anonok). Rather + than always redirect to the cgiauthurl for authentication, there is now + a button on the login form to use it. + * httpauth: Add httpauth\_pagespec setting that can be used to limit + pages to only being edited via users authed with httpauth. + * Allow globs to be used in user() pagespecs. + * Group related plugins into sections in the setup file, and drop + unused rcs plugins from the setup file."""]] \ No newline at end of file -- cgit v1.2.3 From 172dfa9f64b5a248042af7c4b741fdd4c71813ec Mon Sep 17 00:00:00 2001 From: "http://seeitcoming.myopenid.com/" Date: Sat, 13 Feb 2010 15:16:09 +0000 Subject: Added information about python implementation for reference --- doc/todo/abbreviation.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/todo/abbreviation.mdwn b/doc/todo/abbreviation.mdwn index d24166710..f2880091c 100644 --- a/doc/todo/abbreviation.mdwn +++ b/doc/todo/abbreviation.mdwn @@ -2,4 +2,6 @@ We might want some kind of abbreviation and acronym plugin. --[[JoshTriplett]] * Not sure if this is what you mean, but I'd love a way to make works which match existing page names automatically like (eg. if there is a page called "MySQL" then any time the word MySQL is mentioned it should become a link to that page). -- [[AdamShand]] + * The python-markdown-extras package has support for [abbreviations](http://www.freewisdom.org/projects/python-markdown/Abbreviations), with the syntax that you just use the abbreviation in text (e.g. HTML) and then define the abbreviations at the end (like "footnote-style" links). For consistency, it might be good to use the same syntax, which apparently derives from [PHP-markdown-extra](http://michelf.com/projects/php-markdown/extra/#abbr). + [[wishlist]] -- cgit v1.2.3 From a38418a8a3652bad60c83a0dd7502f7afb991512 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 13 Feb 2010 14:07:56 -0500 Subject: close --- doc/todo/openid_user_filtering.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/todo/openid_user_filtering.mdwn b/doc/todo/openid_user_filtering.mdwn index 8b2d0082e..7f8b2a55e 100644 --- a/doc/todo/openid_user_filtering.mdwn +++ b/doc/todo/openid_user_filtering.mdwn @@ -7,3 +7,7 @@ So I suggest an ikiwiki configuration like: users => ["*.webvm.net"], Would only allow edits from openIDs of that form. + +> This kind of thing can be [[done]] now: --[[Joey]] +> +> locked_pages => "user(http://*.webvm.net/)" -- cgit v1.2.3 From 6fc25c8df79c4ce9afde256be5d377ee82562c31 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 13 Feb 2010 14:13:30 -0500 Subject: clarify --- doc/todo/openid_user_filtering.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/todo/openid_user_filtering.mdwn b/doc/todo/openid_user_filtering.mdwn index 7f8b2a55e..6a318c4c0 100644 --- a/doc/todo/openid_user_filtering.mdwn +++ b/doc/todo/openid_user_filtering.mdwn @@ -10,4 +10,4 @@ Would only allow edits from openIDs of that form. > This kind of thing can be [[done]] now: --[[Joey]] > -> locked_pages => "user(http://*.webvm.net/)" +> locked_pages => "* and !user(http://*.webvm.net/)" -- cgit v1.2.3 From 0cc5ed592db082a815d2588d378dd9a3995dcd9f Mon Sep 17 00:00:00 2001 From: jwalzer Date: Sun, 14 Feb 2010 12:40:03 +0000 Subject: new thread --- ...ine_774__44_____60____36__in__62___chunk_1.__39__.mdwn | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn diff --git a/doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn b/doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn new file mode 100644 index 000000000..56ac4b894 --- /dev/null +++ b/doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn @@ -0,0 +1,15 @@ +# getting Warnings about UTF8-Chars. + +I'm getting multiple warnings: + + utf8 "\xAB" does not map to Unicode at /usr/share/perl5/IkiWiki.pm line 774, <$in> chunk 1. + + +I'm assuming this is once per File, but even in verbose mode, it doesn't tell me which file is a problem. +It first reads all the files, and afterwards when parsing/compiling them, it outputs the warning, so I can't +deduce the offending files. + +Is there a way to have ikiwiki output the position, where it encounters the character? + +Probably all this has to do with locale-settings, and usage of mixed locales in a distributed setup ... +I'd rather cleanup some of the file(name)s of unexpected characters. --[[jwalzer]] -- cgit v1.2.3 From 5107530344ca728fc73418a4032a41f22a172a3a Mon Sep 17 00:00:00 2001 From: jwalzer Date: Sun, 14 Feb 2010 14:21:55 +0000 Subject: Update - trying to debug it --- ...4__44_____60____36__in__62___chunk_1.__39__.mdwn | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn b/doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn index 56ac4b894..931e339e2 100644 --- a/doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn +++ b/doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn @@ -13,3 +13,24 @@ Is there a way to have ikiwiki output the position, where it encounters the char Probably all this has to do with locale-settings, and usage of mixed locales in a distributed setup ... I'd rather cleanup some of the file(name)s of unexpected characters. --[[jwalzer]] + +-------- + +**Update** : So I took the chance to insert debug into ikiwiki.pm: + + root@novalis:/usr/share/perl5# diff -p /tmp/IkiWiki.orig.pm IkiWiki.pm + *** /tmp/IkiWiki.orig.pm Sun Feb 14 15:16:08 2010 + --- IkiWiki.pm Sun Feb 14 15:16:28 2010 + *************** sub readfile ($;$$) { + *** 768,773 **** + --- 768,774 ---- + } + + local $/=undef; + + debug("opening File: $file:"); + open (my $in, "<", $file) || error("failed to read $file: $!"); + binmode($in) if ($binary); + return \*$in if $wantfd; + + +But what I see now is not quite helpful, as it seems, STDERR and DEBUG are asyncronous, so they mix up in a way, that I can't really see, whats the problem ... Maybe I'm better off for troubleshooting, to insert an printf to strerr to have it in the same stream.. --[[jwalzer]] -- cgit v1.2.3 From 693fb3b18654abae84efeccd046a358f56dc2be7 Mon Sep 17 00:00:00 2001 From: jwalzer Date: Sun, 14 Feb 2010 14:50:51 +0000 Subject: --- ...pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn b/doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn index 931e339e2..72f2d38e0 100644 --- a/doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn +++ b/doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn @@ -34,3 +34,14 @@ I'd rather cleanup some of the file(name)s of unexpected characters. --[[jwalze But what I see now is not quite helpful, as it seems, STDERR and DEBUG are asyncronous, so they mix up in a way, that I can't really see, whats the problem ... Maybe I'm better off for troubleshooting, to insert an printf to strerr to have it in the same stream.. --[[jwalzer]] + + +---- + +**Update:** The "print STDERR $file;"-Trick did it .. I was able to find a mdwn-file, that (was generated by a script of me) had \0xAB in it. + +Nevertheless I still wonder if this should be a problem. This character happend to be in an *\[\[meta title='$CHAR'\]\]-tag* and an *\[$CHAR\]http://foo)-Link* + +Should this throw an warning? Maybe this warning could be catched an reported inclusively the containing filename? maybe even with an override, if one knows that it is correct that way? --[[jwalzer]] + +[[!tag solved]] -- cgit v1.2.3 From f1183cbf0c9c09725192dcc8384381f9112ae222 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 14 Feb 2010 17:25:30 -0500 Subject: add ngettext support & optimize gettext handling As I was adding ngettext support, I realized I could optimize the gettext functions by memoizing the creation of the gettext object. Note that the object creation is still deferred until a gettext function is called, to avoid unnecessary startup penalties on code paths that do not need gettext. A side benefit is that separate stub functions are no longer needed to handle the C language case. --- IkiWiki.pm | 44 ++++++++++++++++++++++++++++++-------------- doc/plugins/write.mdwn | 4 ++++ 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index a96ff1236..b9a419d1d 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -20,7 +20,7 @@ use Exporter q{import}; our @EXPORT = qw(hook debug error template htmlpage deptype add_depends pagespec_match pagespec_match_list bestlink htmllink readfile writefile pagetype srcfile pagename - displaytime will_render gettext urlto targetpage + displaytime will_render gettext ngettext urlto targetpage add_underlay pagetitle titlepage linkpage newpagefile inject add_link %config %links %pagestate %wikistate %renderedfiles @@ -1820,27 +1820,38 @@ sub file_pruned ($;$) { sub define_gettext () { # If translation is needed, redefine the gettext function to do it. # Otherwise, it becomes a quick no-op. - no warnings 'redefine'; + my $gettext_obj; + my $getobj; if ((exists $ENV{LANG} && length $ENV{LANG}) || (exists $ENV{LC_ALL} && length $ENV{LC_ALL}) || (exists $ENV{LC_MESSAGES} && length $ENV{LC_MESSAGES})) { - *gettext=sub { - my $gettext_obj=eval q{ + $getobj=sub { + $gettext_obj=eval q{ use Locale::gettext q{textdomain}; Locale::gettext->domain('ikiwiki') }; - - if ($gettext_obj) { - $gettext_obj->get(shift); - } - else { - return shift; - } }; } - else { - *gettext=sub { return shift }; - } + + no warnings 'redefine'; + *gettext=sub { + $getobj->() if $getobj; + if ($gettext_obj) { + $gettext_obj->get(shift); + } + else { + return shift; + } + }; + *ngettext=sub { + $getobj->() if $getobj; + if ($gettext_obj) { + $gettext_obj->nget(@_); + } + else { + return ($_[2] == 1 ? $_[0] : $_[1]) + } + }; } sub gettext { @@ -1848,6 +1859,11 @@ sub gettext { gettext(@_); } +sub ngettext { + define_gettext(); + ngettext(@_); +} + sub yesno ($) { my $val=shift; diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index a8c9de2d3..96a2aa16d 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -911,6 +911,10 @@ time. This is the standard gettext function, although slightly optimised. +### `ngettext` + +This is the standard ngettext function, although slightly optimised. + ### `urlto($$;$)` Construct a relative url to the first parameter from the page named by the -- cgit v1.2.3 From 9a0b9bdc88c1b47c14ad0b587c93bbac400e61ac Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 14 Feb 2010 18:09:28 -0500 Subject: minor refactor/optimisation --- IkiWiki/Plugin/comments.pm | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 1e71749a4..5bcf4a981 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -742,28 +742,24 @@ sub pagetemplate (@) { } } - if ($template->query(name => 'commentsurl')) { - if ($shown) { + if ($shown) { + if ($template->query(name => 'commentsurl')) { $template->param(commentsurl => urlto($page, undef, 1).'#comments'); } - } - if ($template->query(name => 'atomcommentsurl') && $config{usedirs}) { - if ($shown) { + if ($template->query(name => 'atomcommentsurl') && $config{usedirs}) { # This will 404 until there are some comments, but I # think that's probably OK... $template->param(atomcommentsurl => urlto($page, undef, 1).'comments.atom'); } - } - if ($template->query(name => 'commentslink')) { # XXX Would be nice to say how many comments there are in # the link. But, to update the number, blog pages # would have to update whenever comments of any inlines # page are added, which is not currently done. - if ($shown) { + if ($template->query(name => 'commentslink')) { $template->param(commentslink => htmllink($page, $params{destpage}, $page, linktext => gettext("Comments"), -- cgit v1.2.3 From c21eb47e627de2dfd5409b459b2e11498c534f3c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 14 Feb 2010 18:27:47 -0500 Subject: comments: Display number of comments in comment action link. This was not doable before, but when I added transitive dependency handling in the big dependency rewrite, it became possible to include a comment count when inlining. This also improves the action link when a page has no comments. It will link direct to the cgi to allow posting the first comment. And if the page is locked to prevent posting new comments, the link is no longer shown. --- IkiWiki/Plugin/comments.pm | 36 +++++++++++++++++++++++++----------- debian/changelog | 8 ++++++++ 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 5bcf4a981..8f8472f07 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -736,9 +736,7 @@ sub pagetemplate (@) { } if ($shown && commentsopen($page)) { - my $addcommenturl = IkiWiki::cgiurl(do => 'comment', - page => $page); - $template->param(addcommenturl => $addcommenturl); + $template->param(addcommenturl => addcommenturl($page)); } } @@ -755,16 +753,26 @@ sub pagetemplate (@) { urlto($page, undef, 1).'comments.atom'); } - # XXX Would be nice to say how many comments there are in - # the link. But, to update the number, blog pages - # would have to update whenever comments of any inlines - # page are added, which is not currently done. if ($template->query(name => 'commentslink')) { - $template->param(commentslink => - htmllink($page, $params{destpage}, $page, - linktext => gettext("Comments"), + my $num=num_comments($page, $config{srcdir}); + my $link; + if ($num > 0) { + $link = htmllink($page, $params{destpage}, $page, + linktext => sprintf(ngettext("%i comment", "%i comments", $num), $num), anchor => "comments", - noimageinline => 1)); + noimageinline => 1 + ); + } + elsif (commentsopen($page)) { + $link = "". + #translators: Here "Comment" is a verb; + #translators: the user clicks on it to + #translators: post a comment. + gettext("Comment"). + ""; + } + $template->param(commentslink => $link) + if defined $link; } } @@ -812,6 +820,12 @@ sub pagetemplate (@) { } } +sub addcommenturl ($) { + my $page=shift; + + return IkiWiki::cgiurl(do => 'comment', page => $page); +} + sub num_comments ($$) { my $page=shift; my $dir=shift; diff --git a/debian/changelog b/debian/changelog index c91feae0d..e3ec89eed 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +ikiwiki (3.20100213) UNRELEASED; urgency=low + + * comments: Display number of comments in comment action link. + * Rebuild wikis on upgrade to this version to get the comment counts + added to existing pages. + + -- Joey Hess Sun, 14 Feb 2010 17:02:10 -0500 + ikiwiki (3.20100212) unstable; urgency=low * template: Preprocess parameters before htmlizing. -- cgit v1.2.3 From 21997387d40326e623cddb10a93dcb208025b77a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 14 Feb 2010 19:23:09 -0500 Subject: optimise whitespace in feed templates --- templates/atomitem.tmpl | 80 ++++++++++++++++++++++++------------------------- templates/atompage.tmpl | 34 ++++++++++----------- templates/rssitem.tmpl | 34 ++++++++++----------- 3 files changed, 74 insertions(+), 74 deletions(-) diff --git a/templates/atomitem.tmpl b/templates/atomitem.tmpl index 768695a2c..87cbee9e0 100644 --- a/templates/atomitem.tmpl +++ b/templates/atomitem.tmpl @@ -1,48 +1,48 @@ <TMPL_VAR TITLE> - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + " type="text/html" /> - - + + " type="application/atom+xml" /> - + diff --git a/templates/atompage.tmpl b/templates/atompage.tmpl index dcb89ab5c..fc0088ae8 100644 --- a/templates/atompage.tmpl +++ b/templates/atompage.tmpl @@ -6,31 +6,31 @@ - + - + - - - - - - - - + + + + - - - - - + + + + + + + + + - + - + ikiwiki diff --git a/templates/rssitem.tmpl b/templates/rssitem.tmpl index a61b92b61..069ae1997 100644 --- a/templates/rssitem.tmpl +++ b/templates/rssitem.tmpl @@ -1,29 +1,29 @@ - + <TMPL_VAR AUTHOR ESCAPE=HTML>: <TMPL_VAR TITLE> - + <TMPL_VAR TITLE> - - - - - - + + + + + + - - + + - - + + - + - + - - + + - + -- cgit v1.2.3 From 427720a21fb202f83c9e8df912cd464a2f5011aa Mon Sep 17 00:00:00 2001 From: nil Date: Mon, 15 Feb 2010 02:10:23 +0000 Subject: + ipol.im --- doc/ikiwikiusers.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 469fc0f6d..4502b589b 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -50,6 +50,7 @@ Projects & Organizations * [The Philolexian Society of Columbia University](http://www.columbia.edu/cu/philo/) * [Fachschaft Informatik HU Berlin](http://fachschaft.informatik.hu-berlin.de/) * [Wetknee Books](http://www.wetknee.com/) +* [IPOL Image Processing On Line](http://www.ipol.im) Personal sites and blogs ======================== -- cgit v1.2.3 From 079377427fbddb20b2b5e7d4e687c6b9631c90ab Mon Sep 17 00:00:00 2001 From: aghitza Date: Mon, 15 Feb 2010 10:58:40 +0000 Subject: --- doc/ikiwikiusers.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 4502b589b..ee060e063 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -135,6 +135,7 @@ Personal sites and blogs * [Avian Aqua Miser](http://www.avianaquamiser.com/) * [Cosmic Cookout](http://www.cosmiccookout.com/) * [Backyard Deer](http://www.backyarddeer.com/) +* [Alex Ghitza homepage and blog](http://aghitza.org/) Please feel free to add your own ikiwiki site! -- cgit v1.2.3 From bf33edc573952a8e21b41c8aaf35c66ee5073a12 Mon Sep 17 00:00:00 2001 From: "http://mem.myopenid.com/" Date: Mon, 15 Feb 2010 22:38:06 +0000 Subject: --- doc/ikiwikiusers.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index ee060e063..df2d6b68b 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -51,6 +51,7 @@ Projects & Organizations * [Fachschaft Informatik HU Berlin](http://fachschaft.informatik.hu-berlin.de/) * [Wetknee Books](http://www.wetknee.com/) * [IPOL Image Processing On Line](http://www.ipol.im) +* [Debian Costa Rica](http://cr.debian.net/) Personal sites and blogs ======================== -- cgit v1.2.3 From b12f65d4dcee8063de5252a407491a1dc212cb9a Mon Sep 17 00:00:00 2001 From: nil Date: Tue, 16 Feb 2010 18:32:39 +0000 Subject: redirect --- doc/users/NicolasLimare.mdwn | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/doc/users/NicolasLimare.mdwn b/doc/users/NicolasLimare.mdwn index 003449d40..602d28ba2 100644 --- a/doc/users/NicolasLimare.mdwn +++ b/doc/users/NicolasLimare.mdwn @@ -1,9 +1 @@ -Nicolas (nil) uses ikiwiki on a site/wiki/blog/something... and feels this approach much more comfortable than the usual web-only ones. - -He didn't touch any perl code before using ikiwiki, ant that was the first opportunity to propose tiny patches. - -Actualy, he would have felt much more comfortable with a python ikiwiki... :) - -Can be reached at nicolas at limare.net - -By the way, I can make translations to french if needed. And maybe to japanese. \ No newline at end of file +[[meta redirect="nil"]] -- cgit v1.2.3 From 1ae028d4fa92d2f6e7a7ec9e2bccabe28ca496b7 Mon Sep 17 00:00:00 2001 From: nil Date: Tue, 16 Feb 2010 18:33:11 +0000 Subject: fix --- doc/users/NicolasLimare.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/users/NicolasLimare.mdwn b/doc/users/NicolasLimare.mdwn index 602d28ba2..c409e3a2d 100644 --- a/doc/users/NicolasLimare.mdwn +++ b/doc/users/NicolasLimare.mdwn @@ -1 +1 @@ -[[meta redirect="nil"]] +[[!meta redirect="nil"]] -- cgit v1.2.3 From 8df6055f4cb95b3d8f541acfccc6b0ba2d88f7b6 Mon Sep 17 00:00:00 2001 From: nil Date: Tue, 16 Feb 2010 18:36:36 +0000 Subject: import --- doc/users/nil.mdwn | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 doc/users/nil.mdwn diff --git a/doc/users/nil.mdwn b/doc/users/nil.mdwn new file mode 100644 index 000000000..e1826cec6 --- /dev/null +++ b/doc/users/nil.mdwn @@ -0,0 +1,8 @@ +nil first used ikiwiki on a site/wiki/blog/something... and felt this approach much more comfortable than the usual web-only ones. +Since then, ikiwiki is a kind of swiss army knife when it comes to build anything for the web. + +Can be reached at nicolas at limare.net + +The current big ikiwiki-powered project is + +TODO: document "how to split public/edition interfaces" -- cgit v1.2.3 From ce8bb219586332032110da8835fde8dd5f0ed91f Mon Sep 17 00:00:00 2001 From: nil Date: Tue, 16 Feb 2010 18:42:11 +0000 Subject: whishlist --- doc/todo/cdate_and_mdate_available_for_templates.mdwn | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 doc/todo/cdate_and_mdate_available_for_templates.mdwn diff --git a/doc/todo/cdate_and_mdate_available_for_templates.mdwn b/doc/todo/cdate_and_mdate_available_for_templates.mdwn new file mode 100644 index 000000000..29c36b9f7 --- /dev/null +++ b/doc/todo/cdate_and_mdate_available_for_templates.mdwn @@ -0,0 +1,15 @@ +[[!tag whishlist]] + +`CDATE_3339`, `CDATE_822`, `MDATE_3339` and `MDATE_822` template variables would be useful for evey page, at least for my templates with Dublin Core metadata. + +I tried to pick the relevant lines of the [[inline|plugins/inline]] plugin and hack it into a custom plugin, but it failed miserably because of my obvious lack of perl litteracy... + +Anyway, I'm sure this is almost nothing... + +* `sub date_822 ($) {}` +* `sub date_3339 ($) {}` +* and something like `$template->param('cdate_822' => date_822($IkiWiki::pagectime{$page}));` + +Anyone can fill the missing lines? + +-- [[nil]] -- cgit v1.2.3 From d4bc6e25e43f0cb2f12d7e9d954cbfc227c1686d Mon Sep 17 00:00:00 2001 From: nil Date: Tue, 16 Feb 2010 18:43:10 +0000 Subject: typo --- doc/todo/cdate_and_mdate_available_for_templates.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/todo/cdate_and_mdate_available_for_templates.mdwn b/doc/todo/cdate_and_mdate_available_for_templates.mdwn index 29c36b9f7..70d8fc8c9 100644 --- a/doc/todo/cdate_and_mdate_available_for_templates.mdwn +++ b/doc/todo/cdate_and_mdate_available_for_templates.mdwn @@ -1,4 +1,4 @@ -[[!tag whishlist]] +[[!tag wishlist]] `CDATE_3339`, `CDATE_822`, `MDATE_3339` and `MDATE_822` template variables would be useful for evey page, at least for my templates with Dublin Core metadata. -- cgit v1.2.3 From f02b87433b271b6229686d1494fbe419c6eca149 Mon Sep 17 00:00:00 2001 From: nil Date: Tue, 16 Feb 2010 18:44:28 +0000 Subject: s/redirect/redir/ --- doc/users/NicolasLimare.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/users/NicolasLimare.mdwn b/doc/users/NicolasLimare.mdwn index c409e3a2d..56a950f7e 100644 --- a/doc/users/NicolasLimare.mdwn +++ b/doc/users/NicolasLimare.mdwn @@ -1 +1 @@ -[[!meta redirect="nil"]] +[[!meta redir="nil"]] -- cgit v1.2.3 From 34d6403a4b12c9578e7b0ea3fb765e1c5e72520f Mon Sep 17 00:00:00 2001 From: "http://jmtd.livejournal.com/" Date: Wed, 17 Feb 2010 11:54:26 +0000 Subject: new feature request: identifying trivial edits --- ...trivial__44___identify__47__filter_on_trivial_changes.mdwn | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 doc/todo/mark_edit_as_trivial__44___identify__47__filter_on_trivial_changes.mdwn diff --git a/doc/todo/mark_edit_as_trivial__44___identify__47__filter_on_trivial_changes.mdwn b/doc/todo/mark_edit_as_trivial__44___identify__47__filter_on_trivial_changes.mdwn new file mode 100644 index 000000000..2b2b0242e --- /dev/null +++ b/doc/todo/mark_edit_as_trivial__44___identify__47__filter_on_trivial_changes.mdwn @@ -0,0 +1,11 @@ +One feature of mediawiki which I quite like is the ability to mark a change as 'minor', or 'trivial'. This can then be used to filter the 'recentchanges' page, to only show substantial edits. + +The utility of this depends entirely on whether the editors use it properly. + +I currently use an inline on the front page of my personal homepage to show the most recent pages (by creation date) within a subsection of my site (a blog). Blog posts are rarely modified much after they are 'created' (or published - I bodge the creation time via meta when I publish a post. It might sit in draft form indefinitely), so this effectively shows only non-trivial changes. + +I would like to have a short list of the most recent modifications to the site on the front page. I therefore want to sort by modified time rather than creation time, but exclude edits that I self-identify as minor. I also only want to take a short number of items, the top 5, and display only their titles (which may be derived from filename, or set via meta again). + +I'm still thinking through how this might be achieved in an ikiwiki-suitable fashion, but I think I need a scheme to identify certain edits as trivial. This would have to work via web edits (easier: could add a check box to the edit form) and plain changes in the VCS (harder: scan for keywords in a commit message? in a VCS-agnostic fashion?) + +[[!tag wishlist]] -- cgit v1.2.3 From 995e247f42e88eeefa47e62d1fada49edaa953a3 Mon Sep 17 00:00:00 2001 From: "https://mukund.startssl.com/" Date: Thu, 18 Feb 2010 11:43:11 +0000 Subject: Add my homepage generated by Ikiwiki --- doc/ikiwikiusers.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index df2d6b68b..c9dea83a8 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -137,6 +137,7 @@ Personal sites and blogs * [Cosmic Cookout](http://www.cosmiccookout.com/) * [Backyard Deer](http://www.backyarddeer.com/) * [Alex Ghitza homepage and blog](http://aghitza.org/) +* [Mukund's homepage](http://www.mukund.org/) Please feel free to add your own ikiwiki site! -- cgit v1.2.3 From 3200be56e5fc6c89115277f9f842a3f417f8d7db Mon Sep 17 00:00:00 2001 From: prosper Date: Fri, 19 Feb 2010 10:23:26 +0000 Subject: --- doc/bugs/rebuild_after_changing_the_underlaydir_config_option.mdwn | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 doc/bugs/rebuild_after_changing_the_underlaydir_config_option.mdwn diff --git a/doc/bugs/rebuild_after_changing_the_underlaydir_config_option.mdwn b/doc/bugs/rebuild_after_changing_the_underlaydir_config_option.mdwn new file mode 100644 index 000000000..8cc97a032 --- /dev/null +++ b/doc/bugs/rebuild_after_changing_the_underlaydir_config_option.mdwn @@ -0,0 +1,7 @@ +It seems that rebuild a wiki (`ikiwiki --rebuild`) after changing the `underlaydir` config option doesn't remove the pages coming from the previous underlaydir. + +I've noticed this with the debian package version 3.20100102.3~bpo50+1. + +Perhaps it is possible to improve this or mention it in the manual page? + +--prosper -- cgit v1.2.3 From 598fdfd1aa1180e296af42f5b15f6b3add716be7 Mon Sep 17 00:00:00 2001 From: Jogo Date: Fri, 19 Feb 2010 10:56:31 +0000 Subject: Correct broken links --- doc/users/jogo.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/users/jogo.mdwn b/doc/users/jogo.mdwn index 6f87cbc45..e8068a10f 100644 --- a/doc/users/jogo.mdwn +++ b/doc/users/jogo.mdwn @@ -1,5 +1,5 @@ * An [economic game](http://sef.matabio.net/) in french, which [use](http://sef.matabio.net/wiki/) IkiWiki. - * Some [plugins](http://kimya.matabio.net/tcgi/hg/IkiPlugins/file/). - * An alternative [base wiki](http://kimya.matabio.net/tcgi/hg/FrIkiWiki/file/) in french. + * Some [plugins](http://www.matabio.net/tcgi/hg/IkiPlugins/file/). + * An alternative [base wiki](http://www.matabio.net/tcgi/hg/FrIkiWiki/file/) in french. email: `jogo matabio net`. -- cgit v1.2.3 From d1137697a80ca5e90bfc9d1c1f00b455871b99c5 Mon Sep 17 00:00:00 2001 From: "http://jmtd.livejournal.com/" Date: Fri, 19 Feb 2010 14:00:52 +0000 Subject: fix 'done' link --- doc/todo/conflict_free_comment_merges.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/todo/conflict_free_comment_merges.mdwn b/doc/todo/conflict_free_comment_merges.mdwn index 2cef0ee8c..e84400c17 100644 --- a/doc/todo/conflict_free_comment_merges.mdwn +++ b/doc/todo/conflict_free_comment_merges.mdwn @@ -20,4 +20,4 @@ What do you think [[smcv]]? --[[Joey]] > are quite low since it modifies the input text and adds a date stamp to > it. > -> Anyway, I think it's good, [[[done]] --[[Joey]] +> Anyway, I think it's good, [[done]] --[[Joey]] -- cgit v1.2.3 From 59017c6ae19f661761d0ae3f143fbda643ca1e8d Mon Sep 17 00:00:00 2001 From: "http://jmtd.livejournal.com/" Date: Fri, 19 Feb 2010 14:02:29 +0000 Subject: prevent keyboard mashing --- doc/todo/double-click_protection_for_form_buttons.mdwn | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/todo/double-click_protection_for_form_buttons.mdwn diff --git a/doc/todo/double-click_protection_for_form_buttons.mdwn b/doc/todo/double-click_protection_for_form_buttons.mdwn new file mode 100644 index 000000000..4c0d95bd6 --- /dev/null +++ b/doc/todo/double-click_protection_for_form_buttons.mdwn @@ -0,0 +1 @@ +A small piece of JS to prevent double-submitting forms would be quite nice. I seem to have developed a habit of doing this and having to resolve a merge conflict for two initial commits. -- [[Jon]] -- cgit v1.2.3 From d01e7248bf4c9f6a7ec6920a0fe4cda4d776e171 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Feb 2010 13:33:48 -0500 Subject: response --- doc/bugs/rebuild_after_changing_the_underlaydir_config_option.mdwn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/bugs/rebuild_after_changing_the_underlaydir_config_option.mdwn b/doc/bugs/rebuild_after_changing_the_underlaydir_config_option.mdwn index 8cc97a032..8613ef03c 100644 --- a/doc/bugs/rebuild_after_changing_the_underlaydir_config_option.mdwn +++ b/doc/bugs/rebuild_after_changing_the_underlaydir_config_option.mdwn @@ -5,3 +5,8 @@ I've noticed this with the debian package version 3.20100102.3~bpo50+1. Perhaps it is possible to improve this or mention it in the manual page? --prosper + +> --rebuild causes ikiwiki to throw away all its info about what it built +> before, so it will never clean up pages that have been removed, by any +> means. Suggest you do a --refresh, possibly followed by a --rebuild +> if that is really necessary. --[[Joey]] -- cgit v1.2.3 From ef537ed3553c590abbc302a97299ae5082471fea Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Feb 2010 13:38:37 -0500 Subject: response --- doc/todo/double-click_protection_for_form_buttons.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/todo/double-click_protection_for_form_buttons.mdwn b/doc/todo/double-click_protection_for_form_buttons.mdwn index 4c0d95bd6..501be4498 100644 --- a/doc/todo/double-click_protection_for_form_buttons.mdwn +++ b/doc/todo/double-click_protection_for_form_buttons.mdwn @@ -1 +1,5 @@ A small piece of JS to prevent double-submitting forms would be quite nice. I seem to have developed a habit of doing this and having to resolve a merge conflict for two initial commits. -- [[Jon]] + +> By the time you see that merge conflict, the first commit has +> already successfully happened, so you can just hit cancel +> and throw away the second submit. --[[Joey]] -- cgit v1.2.3 From f0b0bb5894e056eeb67c50cf096f950f1fbc718a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Feb 2010 14:27:42 -0500 Subject: ctime idea --- doc/todo/auto_getctime_on_fresh_build.mdwn | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 doc/todo/auto_getctime_on_fresh_build.mdwn diff --git a/doc/todo/auto_getctime_on_fresh_build.mdwn b/doc/todo/auto_getctime_on_fresh_build.mdwn new file mode 100644 index 000000000..ea95fb8c9 --- /dev/null +++ b/doc/todo/auto_getctime_on_fresh_build.mdwn @@ -0,0 +1,9 @@ +[[!tag wishlist]] + +It might be a good idea to enable --getctime when `.ikiwiki` does not +exist. This way a new checkout of a `srcdir` would automatically get +ctimes right. (Running --getctime whenever a rebuild is done would be too +slow.) --[[Joey]] + +Could this be too annoying in some cases, eg, checking out a large wiki +that needs to get set up right away? --[[Joey]] -- cgit v1.2.3 From d83c4b91576131e1f1815357387e1505e6b59fc1 Mon Sep 17 00:00:00 2001 From: ThomasAdam Date: Sun, 21 Feb 2010 13:43:26 +0000 Subject: The Fvwmwiki uses ikiwiki --- doc/ikiwikiusers.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index c9dea83a8..958bd54ff 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -138,6 +138,7 @@ Personal sites and blogs * [Backyard Deer](http://www.backyarddeer.com/) * [Alex Ghitza homepage and blog](http://aghitza.org/) * [Mukund's homepage](http://www.mukund.org/) +* [Fvwm Wiki](http://fvwmwiki.xteddy.org) Please feel free to add your own ikiwiki site! -- cgit v1.2.3 From c67f96752642d4f01895f8ab135f2c5c6892b8be Mon Sep 17 00:00:00 2001 From: ThomasAdam Date: Sun, 21 Feb 2010 13:44:29 +0000 Subject: The Fvwm Wiki not a personal site or blog. --- doc/ikiwikiusers.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 958bd54ff..62064e024 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -52,6 +52,7 @@ Projects & Organizations * [Wetknee Books](http://www.wetknee.com/) * [IPOL Image Processing On Line](http://www.ipol.im) * [Debian Costa Rica](http://cr.debian.net/) +* [Fvwm Wiki](http://fvwmwiki.xteddy.org) Personal sites and blogs ======================== @@ -138,7 +139,6 @@ Personal sites and blogs * [Backyard Deer](http://www.backyarddeer.com/) * [Alex Ghitza homepage and blog](http://aghitza.org/) * [Mukund's homepage](http://www.mukund.org/) -* [Fvwm Wiki](http://fvwmwiki.xteddy.org) Please feel free to add your own ikiwiki site! -- cgit v1.2.3 From 9d8ae8a483d8fc32de95d7855202d00f85250794 Mon Sep 17 00:00:00 2001 From: Jon Dowland Date: Wed, 24 Feb 2010 12:30:40 +0000 Subject: add a backlink-style map to the bottom of my page --- doc/users/jon.mdwn | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/users/jon.mdwn b/doc/users/jon.mdwn index f08076c2a..35bdb5d7c 100644 --- a/doc/users/jon.mdwn +++ b/doc/users/jon.mdwn @@ -45,9 +45,14 @@ The following I have been looking at, but are on the back-burner: bugs such as [[bugs/tagged() matching wikilinks]]. Code for this lives in my github `tag2` branch: -Finally, the following are merely half-formed thoughts: +Penultimately, the following are merely half-formed thoughts: * adding and removing tags to pages via the edit form by ticking and unticking checkboxes next to a tag name (rather than entering the directive into the text of the page directly) * perhaps the same for meta + +Finally, backlinks (since I have issues with the current backlinks +implementation, see [[bugs/backlinks onhover thing can go weird]]): + +[[!map pages="link(users/Jon)"]] -- cgit v1.2.3 From cd1c861b151621f76fece06899500f0dac2fec57 Mon Sep 17 00:00:00 2001 From: Jon Dowland Date: Wed, 24 Feb 2010 12:32:32 +0000 Subject: switch to inline, instead of map --- doc/users/jon.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/users/jon.mdwn b/doc/users/jon.mdwn index 35bdb5d7c..d5593dcbf 100644 --- a/doc/users/jon.mdwn +++ b/doc/users/jon.mdwn @@ -55,4 +55,4 @@ Penultimately, the following are merely half-formed thoughts: Finally, backlinks (since I have issues with the current backlinks implementation, see [[bugs/backlinks onhover thing can go weird]]): -[[!map pages="link(users/Jon)"]] +[[!inline pages="link(users/Jon)" archive="yes" feeds="no"]] -- cgit v1.2.3 From b9aca496920ffd0edfcaba5d003bb68aa47dcb6a Mon Sep 17 00:00:00 2001 From: "http://people.ee.ethz.ch/~andrmuel/openid/" Date: Wed, 24 Feb 2010 14:59:31 +0000 Subject: --- doc/ikiwikiusers.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 62064e024..12d692979 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -139,6 +139,7 @@ Personal sites and blogs * [Backyard Deer](http://www.backyarddeer.com/) * [Alex Ghitza homepage and blog](http://aghitza.org/) * [Mukund's homepage](http://www.mukund.org/) +* [Andreas's homepage](http://0x7.ch/) - Ikiwiki, Subversion and CSS template Please feel free to add your own ikiwiki site! -- cgit v1.2.3 From feeacaba028afe2e0b8835e2ebedc930de0f33a5 Mon Sep 17 00:00:00 2001 From: martin Date: Wed, 24 Feb 2010 15:12:40 +0000 Subject: --- ...by_pagename_and_not_title_when_show__61__title_is_used.mdwn | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/doc/bugs/map_sorts_by_pagename_and_not_title_when_show__61__title_is_used.mdwn b/doc/bugs/map_sorts_by_pagename_and_not_title_when_show__61__title_is_used.mdwn index f8e257daf..bc19e7d87 100644 --- a/doc/bugs/map_sorts_by_pagename_and_not_title_when_show__61__title_is_used.mdwn +++ b/doc/bugs/map_sorts_by_pagename_and_not_title_when_show__61__title_is_used.mdwn @@ -1,4 +1,4 @@ -The [[directive/map]] directive sorty by pagename. That looks kind of odd, when used together with show=title. I would expect it to sort by title then. +The [[ikiwiki/directive/map]] directive sort by pagename. That looks kind of odd, when used together with show=title. I would expect it to sort by title then. > This would be quite hard to fix. Map sorts the pages it displays by page > name, which has the happy effect of making "foo/bar" come after "foo"; @@ -6,3 +6,11 @@ The [[directive/map]] directive sorty by pagename. That looks kind of odd, when > it's located in. If sorting by title, that wouldn't hold. So, map > would have to be effectively totally rewritten, to build up each group > of child pages, and then re-sort those. --[[Joey]] + +>> Ok, you are right, that does would break the tree. This made me think that I do not +>> need to generate a tree for my particular use case just a list, so i thought i could use [[ikiwiki/directive/inline]] instead. +>> This created two new issues: +>> +>> 1. inline also does sort by pagename even when explicitly told to sort by title. +>> +>> 2. I cannot get inline to create a list when the htmltidy plugin is switched on. I have a template which is enclosed in an li tag, and i put the ul tag around the inline manually, but htmltidy breaks this. --martin -- cgit v1.2.3 From 068e47aa459028c260880ed5f27da2044cb79998 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 24 Feb 2010 20:28:52 -0500 Subject: catch failure to open the filetypes file --- IkiWiki/Plugin/highlight.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/highlight.pm b/IkiWiki/Plugin/highlight.pm index 947fb692e..e517ac5c0 100644 --- a/IkiWiki/Plugin/highlight.pm +++ b/IkiWiki/Plugin/highlight.pm @@ -80,7 +80,7 @@ my %highlighters; # Parse highlight's config file to get extension => language mappings. sub read_filetypes () { - open (IN, $filetypes); + open (IN, $filetypes) || error("$filetypes: $!"); while () { chomp; if (/^\$ext\((.*)\)=(.*)$/) { -- cgit v1.2.3 From 983ecb0915b27f33e14e4b2e20090df69419f374 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Fri, 26 Feb 2010 06:37:42 +0000 Subject: made a suggestion --- ...ap_sorts_by_pagename_and_not_title_when_show__61__title_is_used.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/bugs/map_sorts_by_pagename_and_not_title_when_show__61__title_is_used.mdwn b/doc/bugs/map_sorts_by_pagename_and_not_title_when_show__61__title_is_used.mdwn index bc19e7d87..de178d415 100644 --- a/doc/bugs/map_sorts_by_pagename_and_not_title_when_show__61__title_is_used.mdwn +++ b/doc/bugs/map_sorts_by_pagename_and_not_title_when_show__61__title_is_used.mdwn @@ -14,3 +14,5 @@ The [[ikiwiki/directive/map]] directive sort by pagename. That looks kind of odd >> 1. inline also does sort by pagename even when explicitly told to sort by title. >> >> 2. I cannot get inline to create a list when the htmltidy plugin is switched on. I have a template which is enclosed in an li tag, and i put the ul tag around the inline manually, but htmltidy breaks this. --martin + +>>>> You might want to check if the [[plugins/contrib/report]] plugin solves your problem. It can sort by title, among other things. --[[KathrynAndersen]] -- cgit v1.2.3 From b3c3c42b269c102123dcd80979cb9c49ce13bca7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 26 Feb 2010 11:49:51 -0500 Subject: Loosen regexp, to allow empty quoted parameters in directives. --- IkiWiki.pm | 6 +++--- debian/changelog | 1 + t/preprocess.t | 12 +++++++++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index b9a419d1d..9df6c90d6 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1220,7 +1220,7 @@ sub preprocess ($$$;$$) { (?: """(.*?)""" # 2: triple-quoted value | - "([^"]+)" # 3: single-quoted value + "([^"]*?)" # 3: single-quoted value | (\S+) # 4: unquoted value ) @@ -1306,7 +1306,7 @@ sub preprocess ($$$;$$) { (?: """.*?""" # triple-quoted value | - "[^"]+" # single-quoted value + "[^"]*?" # single-quoted value | [^"\s\]]+ # unquoted value ) @@ -1329,7 +1329,7 @@ sub preprocess ($$$;$$) { (?: """.*?""" # triple-quoted value | - "[^"]+" # single-quoted value + "[^"]*?" # single-quoted value | [^"\s\]]+ # unquoted value ) diff --git a/debian/changelog b/debian/changelog index e3ec89eed..1960a1226 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,7 @@ ikiwiki (3.20100213) UNRELEASED; urgency=low * comments: Display number of comments in comment action link. * Rebuild wikis on upgrade to this version to get the comment counts added to existing pages. + * Loosen regexp, to allow empty quoted parameters in directives. -- Joey Hess Sun, 14 Feb 2010 17:02:10 -0500 diff --git a/t/preprocess.t b/t/preprocess.t index e5026ed64..7bb9878d0 100755 --- a/t/preprocess.t +++ b/t/preprocess.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 21; +use Test::More tests => 31; BEGIN { use_ok("IkiWiki"); } @@ -26,6 +26,16 @@ is(IkiWiki::preprocess("foo", "foo", "[[foo ]]", 0, 0), "foo()", "simple"); is(IkiWiki::preprocess("foo", "foo", "[[!foo ]]", 0, 0), "foo()", "prefixed"); is(IkiWiki::preprocess("foo", "foo", "[[!foo]]", 0, 0), "[[!foo]]", "prefixed, no space"); is(IkiWiki::preprocess("foo", "foo", "[[foo a=1]]", 0, 0), "foo(a => 1)"); +is(IkiWiki::preprocess("foo", "foo", q{[[foo a="1"]]}, 0, 0), "foo(a => 1)"); +is(IkiWiki::preprocess("foo", "foo", q{[[foo a="""1"""]]}, 0, 0), "foo(a => 1)"); +is(IkiWiki::preprocess("foo", "foo", q{[[foo a=""]]}, 0, 0), "foo(a)"); +is(IkiWiki::preprocess("foo", "foo", q{[[foo a="" b="1"]]}, 0, 0), "foo(a, b => 1)"); +is(IkiWiki::preprocess("foo", "foo", q{[[foo a=""""""]]}, 0, 0), "foo(a)"); +is(IkiWiki::preprocess("foo", "foo", q{[[foo a="""""" b="1"]]}, 0, 0), "foo(a, b => 1)"); +is(IkiWiki::preprocess("foo", "foo", q{[[foo a="""""" b="""1"""]]}, 0, 0), "foo(a, b => 1)"); +is(IkiWiki::preprocess("foo", "foo", q{[[foo a="""""" b=""""""]]}, 0, 0), "foo(a, b)"); +is(IkiWiki::preprocess("foo", "foo", q{[[foo a="" b=""""""]]}, 0, 0), "foo(a, b)"); +is(IkiWiki::preprocess("foo", "foo", q{[[foo a="" b="""1"""]]}, 0, 0), "foo(a, b => 1)"); is(IkiWiki::preprocess("foo", "foo", "[[foo a=\"1 2 3 4\"]]", 0, 0), "foo(a => 1 2 3 4)"); is(IkiWiki::preprocess("foo", "foo", "[[foo ]] then [[foo a=2]]", 0, 0), "foo() then foo(a => 2)"); -- cgit v1.2.3 From 7bf28731d767e1d9b1b69df3927c27bd85974fdf Mon Sep 17 00:00:00 2001 From: "http://www.google.com/profiles/will.uther" Date: Sat, 27 Feb 2010 02:38:58 +0000 Subject: disable some inlines that I don't use much. --- doc/users/Will.mdwn | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/doc/users/Will.mdwn b/doc/users/Will.mdwn index f5effdbe3..1956263e0 100644 --- a/doc/users/Will.mdwn +++ b/doc/users/Will.mdwn @@ -13,14 +13,16 @@ Unless otherwise specified, any code that I post to this wiki I release under th ------ +Disabling these as I'm not using them much any more... + ### Open Bugs: -[[!inline pages="link(users/Will) and bugs/* and !bugs/done and !bugs/discussion and !link(patch) and !link(bugs/done) and !bugs/*/*" archive="yes" feeds="no" ]] +\[[!inline pages="link(users/Will) and bugs/* and !bugs/done and !bugs/discussion and !link(patch) and !link(bugs/done) and !bugs/*/*" archive="yes" feeds="no" ]] ### Open ToDos: -[[!inline pages="link(users/Will) and todo/* and !todo/done and !todo/discussion and !link(patch) and !link(todo/done) and !bugs/*/*" archive="yes" feeds="no" ]] +\[[!inline pages="link(users/Will) and todo/* and !todo/done and !todo/discussion and !link(patch) and !link(todo/done) and !bugs/*/*" archive="yes" feeds="no" ]] ### Unapplied Patches: -[[!inline pages="link(users/Will) and (todo/* or bugs/*) and !bugs/done and !bugs/discussion and !todo/done and !todo/discussion and link(patch) and !link(bugs/done) and !link(todo/done) and !bugs/*/*" archive="yes" feeds="no" ]] +\[[!inline pages="link(users/Will) and (todo/* or bugs/*) and !bugs/done and !bugs/discussion and !todo/done and !todo/discussion and link(patch) and !link(bugs/done) and !link(todo/done) and !bugs/*/*" archive="yes" feeds="no" ]] -- cgit v1.2.3 From 100636afa253c9808654b5db45feabc4ca1c6f8c Mon Sep 17 00:00:00 2001 From: "http://privat.myopenid.com/" Date: Sat, 27 Feb 2010 15:12:39 +0000 Subject: patch for multiple sidebars --- ..._up_sidebar_to_allow_for_multiple_sidebars.mdwn | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/doc/todo/beef_up_sidebar_to_allow_for_multiple_sidebars.mdwn b/doc/todo/beef_up_sidebar_to_allow_for_multiple_sidebars.mdwn index fb942a495..02b83244e 100644 --- a/doc/todo/beef_up_sidebar_to_allow_for_multiple_sidebars.mdwn +++ b/doc/todo/beef_up_sidebar_to_allow_for_multiple_sidebars.mdwn @@ -13,5 +13,57 @@ those contents instead. > In mine I just copied sidebar out and made some extra "sidebars", but they go elsewhere. Ugly hack, but it works. --[[simonraven]] +>> Here a simple [[patch]] for multiple sidebars. Not too fancy but better than having multiple copies of the sidebar plugin. --[[jeanprivat]] + +
+--- /usr/share/perl5/IkiWiki/Plugin/sidebar.pm	2010-02-11 22:53:17.000000000 -0500
++++ plugins/IkiWiki/Plugin/sidebar.pm	2010-02-27 09:54:12.524412391 -0500
+@@ -19,12 +19,20 @@
+ 			safe => 1,
+ 			rebuild => 1,
+ 		},
++		active_sidebars => {
++			type => "string",
++			example => qw(sidebar banner footer),
++			description => "Which sidebars must be activated and processed.",
++			safe => 1,
++			rebuild => 1
++		},
+ }
+ 
+-sub sidebar_content ($) {
++sub sidebar_content ($$) {
+ 	my $page=shift;
++	my $sidebar=shift;
+ 	
+-	my $sidebar_page=bestlink($page, "sidebar") || return;
++	my $sidebar_page=bestlink($page, $sidebar) || return;
+ 	my $sidebar_file=$pagesources{$sidebar_page} || return;
+ 	my $sidebar_type=pagetype($sidebar_file);
+ 	
+@@ -49,11 +57,17 @@
+ 
+ 	my $page=$params{page};
+ 	my $template=$params{template};
+-	
+-	if ($template->query(name => "sidebar")) {
+-		my $content=sidebar_content($page);
+-		if (defined $content && length $content) {
+-		        $template->param(sidebar => $content);
++
++	my @sidebars;
++	if (defined $config{active_sidebars} && length $config{active_sidebars}) { @sidebars = @{$config{active_sidebars}}; }
++	else { @sidebars = qw(sidebar); }
++
++	foreach my $sidebar (@sidebars) {
++		if ($template->query(name => $sidebar)) {
++			my $content=sidebar_content($page, $sidebar);
++			if (defined $content && length $content) {
++				$template->param($sidebar => $content);
++			}
+ 		}
+ 	}
+ }
+
[[!tag wishlist]] -- cgit v1.2.3 From 7e2a22e0bf48ba58677b68d0950e18d2517b7bb3 Mon Sep 17 00:00:00 2001 From: "http://privat.myopenid.com/" Date: Sat, 27 Feb 2010 15:16:25 +0000 Subject: --- doc/users/jeanprivat.mdwn | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/users/jeanprivat.mdwn diff --git a/doc/users/jeanprivat.mdwn b/doc/users/jeanprivat.mdwn new file mode 100644 index 000000000..4d75a9867 --- /dev/null +++ b/doc/users/jeanprivat.mdwn @@ -0,0 +1 @@ +Jean Privat is . -- cgit v1.2.3 From a12c386c86d000971125d70bf22213fd9595ed45 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 27 Feb 2010 16:26:13 -0500 Subject: Add force_overwrite setting to make setup automator overwrite existing files/directories. This can be useful if you're driving the setup automator from another program. --- IkiWiki/Setup/Automator.pm | 22 ++++++++++++---------- debian/changelog | 2 ++ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/IkiWiki/Setup/Automator.pm b/IkiWiki/Setup/Automator.pm index 9fee4dcb7..79a610e20 100644 --- a/IkiWiki/Setup/Automator.pm +++ b/IkiWiki/Setup/Automator.pm @@ -40,17 +40,19 @@ sub import (@) { my $this=shift; IkiWiki::Setup::merge({@_}); - # Avoid overwriting any existing files. - foreach my $key (qw{srcdir destdir repository dumpsetup}) { - next unless exists $config{$key}; - my $add=""; - my $dir=IkiWiki::dirname($config{$key})."/"; - my $base=IkiWiki::basename($config{$key}); - while (-e $dir.$add.$base) { - $add=1 if ! $add; - $add++; + if (! $config{force_overwrite}) { + # Avoid overwriting any existing files. + foreach my $key (qw{srcdir destdir repository dumpsetup}) { + next unless exists $config{$key}; + my $add=""; + my $dir=IkiWiki::dirname($config{$key})."/"; + my $base=IkiWiki::basename($config{$key}); + while (-e $dir.$add.$base) { + $add=1 if ! $add; + $add++; + } + $config{$key}=$dir.$add.$base; } - $config{$key}=$dir.$add.$base; } # Set up wrapper diff --git a/debian/changelog b/debian/changelog index 1960a1226..bdbd818e1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,8 @@ ikiwiki (3.20100213) UNRELEASED; urgency=low * Rebuild wikis on upgrade to this version to get the comment counts added to existing pages. * Loosen regexp, to allow empty quoted parameters in directives. + * Add force_overwrite setting to make setup automator overwrite existing + files/directories. -- Joey Hess Sun, 14 Feb 2010 17:02:10 -0500 -- cgit v1.2.3 From 6aaa6e0d245e450315a073f62e27c233cefbe9ec Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 27 Feb 2010 16:36:57 -0500 Subject: Fix admin openid detection in setup automator, and avoid prompting for a password. --- IkiWiki/Setup/Automator.pm | 2 +- debian/changelog | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Setup/Automator.pm b/IkiWiki/Setup/Automator.pm index 79a610e20..9da594e99 100644 --- a/IkiWiki/Setup/Automator.pm +++ b/IkiWiki/Setup/Automator.pm @@ -144,7 +144,7 @@ sub import (@) { # Create admin user(s). foreach my $admin (@{$config{adminuser}}) { - next if $admin=~/^http\?:\/\//; # openid + next if defined IkiWiki::openiduser($admin); # Prompt for password w/o echo. my ($password, $password2); diff --git a/debian/changelog b/debian/changelog index bdbd818e1..832bbaa85 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,8 @@ ikiwiki (3.20100213) UNRELEASED; urgency=low * Loosen regexp, to allow empty quoted parameters in directives. * Add force_overwrite setting to make setup automator overwrite existing files/directories. + * Fix admin openid detection in setup automator, and avoid prompting + for a password. -- Joey Hess Sun, 14 Feb 2010 17:02:10 -0500 -- cgit v1.2.3 From 60d2dd318f66563c3ee3bde950d7f53426530acc Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 28 Feb 2010 00:12:47 -0500 Subject: Add new --clean option; this makes ikiwiki remove all built files in the destdir, as well as wrappers and the .ikiwiki directory. --- IkiWiki.pm | 7 +++++++ IkiWiki/Render.pm | 11 +++++++++++ Makefile.PL | 2 +- debian/changelog | 4 +++- doc/usage.mdwn | 8 ++++++++ ikiwiki.in | 12 +++++++++++- ikiwiki.spec | 2 +- 7 files changed, 42 insertions(+), 4 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 9df6c90d6..00eadfd98 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -409,6 +409,13 @@ sub getsetup () { safe => 0, rebuild => 0, }, + clean => { + type => "internal", + default => 0, + description => "running in clean mode", + safe => 0, + rebuild => 0, + }, refresh => { type => "internal", default => 0, diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 3ebb1a324..af24df155 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -683,6 +683,17 @@ sub refresh () { } } +sub clean_rendered { + lockwiki(); + loadindex(); + remove_unrendered(); + foreach my $page (keys %oldrenderedfiles) { + foreach my $file (@{$oldrenderedfiles{$page}}) { + prune($config{destdir}."/".$file); + } + } +} + sub commandline_render () { lockwiki(); loadindex(); diff --git a/Makefile.PL b/Makefile.PL index 462f7364d..52421a711 100755 --- a/Makefile.PL +++ b/Makefile.PL @@ -51,7 +51,7 @@ docwiki: ikiwiki.out $(PERL) -Iblib/lib $(extramodules) $(tflag) ikiwiki.out -libdir . -setup docwiki.setup -refresh extra_clean: - rm -rf html doc/.ikiwiki + $(PERL) -I. $(extramodules) $(tflag) ikiwiki.in -libdir . -setup docwiki.setup -clean rm -f *.man ikiwiki.out ikiwiki.setup plugins/*.pyc $(MAKE) -C po clean diff --git a/debian/changelog b/debian/changelog index 832bbaa85..3b92c598d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -ikiwiki (3.20100213) UNRELEASED; urgency=low +ikiwiki (3.20100228) UNRELEASED; urgency=low * comments: Display number of comments in comment action link. * Rebuild wikis on upgrade to this version to get the comment counts @@ -8,6 +8,8 @@ ikiwiki (3.20100213) UNRELEASED; urgency=low files/directories. * Fix admin openid detection in setup automator, and avoid prompting for a password. + * Add new --clean option; this makes ikiwiki remove all built + files in the destdir, as well as wrappers and the .ikiwiki directory. -- Joey Hess Sun, 14 Feb 2010 17:02:10 -0500 diff --git a/doc/usage.mdwn b/doc/usage.mdwn index e4808d4c2..a105d7e59 100644 --- a/doc/usage.mdwn +++ b/doc/usage.mdwn @@ -50,6 +50,14 @@ These options control the mode that ikiwiki operates in. If used with --setup --refresh, this makes it also update any configured wrappers. +* --clean + + This makes ikiwiki clean up by removing any files it denerated in the + `destination` directory, as well as any configured wrappers, and the + `.ikiwiki` state directory. This is mostly useful if you're running + ikiwiki in a Makefile to build documentation and want a corresponding + `clean` target. + * --cgi Enable [[CGI]] mode. In cgi mode ikiwiki runs as a cgi script, and diff --git a/ikiwiki.in b/ikiwiki.in index b8581d880..ae1251ff6 100755 --- a/ikiwiki.in +++ b/ikiwiki.in @@ -37,6 +37,7 @@ sub getconfig () { "syslog!" => \$config{syslog}, "rebuild!" => \$config{rebuild}, "refresh!" => \$config{refresh}, + "clean!" => \$config{clean}, "post-commit" => \$config{post_commit}, "render=s" => \$config{render}, "wrappers!" => \$config{genwrappers}, @@ -135,6 +136,7 @@ sub main () { if (@{$config{wrappers}} && ! $config{render} && ! $config{dumpsetup} && + ! $config{clean} && ((! $config{refresh} && ! $config{post_commit}) || $config{genwrappers})) { debug(gettext("generating wrappers..")); @@ -159,7 +161,7 @@ sub main () { # setup implies a wiki rebuild by default if (! $config{refresh} && ! $config{render} && - ! $config{post_commit}) { + ! $config{post_commit} && ! $config{clean}) { $config{rebuild}=1; } } @@ -190,6 +192,14 @@ sub main () { elsif ($config{post_commit} && ! commit_hook_enabled()) { # do nothing } + elsif ($config{clean}) { + require IkiWiki::Render; + foreach my $wrapper (@{$config{wrappers}}) { + prune($wrapper->{wrapper}); + } + clean_rendered(); + system("rm", "-rf", $config{wikistatedir}); + } else { if ($config{rebuild}) { debug(gettext("rebuilding wiki..")); diff --git a/ikiwiki.spec b/ikiwiki.spec index 865c9a325..1dba9f463 100644 --- a/ikiwiki.spec +++ b/ikiwiki.spec @@ -1,5 +1,5 @@ Name: ikiwiki -Version: 3.20100212 +Version: 3.20100228 Release: 1%{?dist} Summary: A wiki compiler -- cgit v1.2.3 From 4be426ab1ad01a2a90151d741f737d41a12a6cbe Mon Sep 17 00:00:00 2001 From: Jon Dowland Date: Mon, 1 Mar 2010 10:28:59 +0000 Subject: wl from report to field plugin pages --- doc/plugins/contrib/report.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plugins/contrib/report.mdwn b/doc/plugins/contrib/report.mdwn index 7130bcb5f..e8cbd0486 100644 --- a/doc/plugins/contrib/report.mdwn +++ b/doc/plugins/contrib/report.mdwn @@ -18,7 +18,7 @@ IkiWiki::Plugin::report - Produce templated reports from page field data. This plugin provides the **report** directive. This enables one to report on the structured data ("field" values) of multiple pages; the output is formatted -via a template. This depends on the "field" plugin. +via a template. This depends on the [[plugins/contrib/field]] plugin. The pages to report on are selected by a PageSpec given by the "pages" parameter. The template is given by the "template" parameter. -- cgit v1.2.3 From a982b9cf193445dccec0e9ba87eeed324825c2cc Mon Sep 17 00:00:00 2001 From: Jon Dowland Date: Mon, 1 Mar 2010 13:14:48 +0000 Subject: new tip: spam and software sites --- doc/tips/spam_and_softwaresites.mdwn | 86 ++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 doc/tips/spam_and_softwaresites.mdwn diff --git a/doc/tips/spam_and_softwaresites.mdwn b/doc/tips/spam_and_softwaresites.mdwn new file mode 100644 index 000000000..fe73518ef --- /dev/null +++ b/doc/tips/spam_and_softwaresites.mdwn @@ -0,0 +1,86 @@ +Any wiki with a form of web-editing enabled will have to deal with +spam. (See the [[plugins/blogspam]] plugin for one defensive tool you +can deploy). + +If: + + * you are using ikiwiki to manage the website for a [[examples/softwaresite]] + * you allow web-based commits, to let people correct documentation, or report + bugs, etc. + * the documentation is stored in the same revision control repository as your + software + +It is undesirable to have your software's VCS history tainted by spam and spam +clean-up commits. Here is one approach you can use to prevent this. This +example is for the [[git]] version control system, but the principles should +apply to others. + +## Isolate web commits to a specific branch + +Create a separate branch to contain web-originated edits (named `doc` in this +example): + + $ git checkout -b doc + +Adjust your setup file accordingly: + + gitmaster_branch => 'doc', + +## merging good web commits into the master branch + +You will want to periodically merge legitimate web-based commits back into +your master branch. Ensure that there is no spam in the documentation +branch. If there is, see 'erase spam from the commit history', below, first. + +Once you are confident it's clean: + + # ensure you are on the doc branch + $ git branch + doc + * master + $ git merge --ff doc + +## removing spam + +### short term + +In the short term, just revert the spammy commit. + +If the spammy commit was the top-most: + + $ git revert HEAD + +This will clean the spam out of the files, but it will leave both the spam +commit and the revert commit in the history. + +### erase spam from the commit history + +Git allows you to rewrite your commit history. We will take advantage of this +to eradicate spam from the history of the doc branch. + +This is a useful tool, but it is considered bad practise to rewrite the +history of public repositories. If your software's repository is public, you +should make it clear that the history of the `doc` branch in your repository +is unstable. + +Once you have been spammed, use `git rebase` to remove the spam commits from +the history. Assuming that your `doc` branch was split off from a branch +called `master`: + + # ensure you are on the doc branch + $ git branch + * doc + master + $ git rebase --interactive master + +In your editor session, you will see a series of lines for each commit made to +the `doc` branch since it was branched from `master` (or since the last merge +back into `master`). Delete the lines corresponding to spammy commits, then +save and exit your editor. + +Caveat: if there are no commits you want to keep (i.e. all the commits since +the last merge into master are either spam or spam reverts) then `git rebase` +will abort. Therefore, this approach only works if you have at least one +non-spam commit to the documentation since the last merge into `master`. For +this reason, it's best to tackle spam with reverts until you have at least one +commit you want merged back into the main history. -- cgit v1.2.3 From 397fc5b2a3dff0ff3a105573f3b1fa5ea8169dfe Mon Sep 17 00:00:00 2001 From: Jon Dowland Date: Mon, 1 Mar 2010 13:16:54 +0000 Subject: ref new tip from softwaresite page --- doc/examples/softwaresite.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/examples/softwaresite.mdwn b/doc/examples/softwaresite.mdwn index e43a9d116..99f791177 100644 --- a/doc/examples/softwaresite.mdwn +++ b/doc/examples/softwaresite.mdwn @@ -14,3 +14,6 @@ Some additional configuration you might want to do: * Read the [[tips/integrated_issue_tracking_with_ikiwiki]] article for tips about how to use ikiwiki as a BTS. + +* Read [[tips/spam_and_softwaresites]] for information on how to keep spam + and spam-fighting commits out of your main version control history. -- cgit v1.2.3 From 0284ccf5eb6163d4fe49ac829a1f976336bc5908 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Mon, 1 Mar 2010 14:43:55 +0000 Subject: fixed typo --- doc/plugins/contrib/report.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plugins/contrib/report.mdwn b/doc/plugins/contrib/report.mdwn index e8cbd0486..c364d4a3a 100644 --- a/doc/plugins/contrib/report.mdwn +++ b/doc/plugins/contrib/report.mdwn @@ -89,7 +89,7 @@ The "mood_summary" template might be like this: ## ### - () \[[) \[[]] ### Advanced Options -- cgit v1.2.3 From fe571e959007e7e4f895869c980b474f5ee6e995 Mon Sep 17 00:00:00 2001 From: "http://liw.fi/" Date: Mon, 1 Mar 2010 21:12:48 +0000 Subject: --- doc/plugins/rename.mdwn | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/plugins/rename.mdwn b/doc/plugins/rename.mdwn index ddaede8b0..abb361329 100644 --- a/doc/plugins/rename.mdwn +++ b/doc/plugins/rename.mdwn @@ -2,7 +2,8 @@ [[!tag type/web]] This plugin allows pages or other files to be renamed using the web -interface. +interface. Following Unix tradition, renaming also allows moving to a +different directory. Users can only rename things that they are allowed to edit or upload. -- cgit v1.2.3 From 7495d30a6ab00d09ea142cfdc599c8abfb64340e Mon Sep 17 00:00:00 2001 From: Thiana Date: Mon, 1 Mar 2010 21:15:29 +0000 Subject: --- doc/ikiwiki/directive/inline/discussion.mdwn | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/ikiwiki/directive/inline/discussion.mdwn b/doc/ikiwiki/directive/inline/discussion.mdwn index 998ba642b..6a186cd93 100644 --- a/doc/ikiwiki/directive/inline/discussion.mdwn +++ b/doc/ikiwiki/directive/inline/discussion.mdwn @@ -1,3 +1,10 @@ +## Combine inline and toggle + +Is it possible to combine the behaviour of toggle and inline? ie, have it present of list of 'headlines' which are created from seperate subpages which can be clicked to expand to the body of the inlined page. Thanks. + +-- Thiana + +--- ## How do you provide the per post discussion links in your own blog? > That's configured by the "actions" parameter to the inline directive. See -- cgit v1.2.3 From 837b04759c0895d6341a6a51fc05be1c3e5ef2ca Mon Sep 17 00:00:00 2001 From: Thiana Date: Mon, 1 Mar 2010 21:17:09 +0000 Subject: --- doc/plugins/creole/discussion.mdwn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/plugins/creole/discussion.mdwn b/doc/plugins/creole/discussion.mdwn index 38ee2bd78..eab41349a 100644 --- a/doc/plugins/creole/discussion.mdwn +++ b/doc/plugins/creole/discussion.mdwn @@ -12,4 +12,9 @@ I've installed Text::WikiCreole 0.05 and enabled the plugin, but I get an error >>> forgot, done now --[[Joey]] +--- +## External Links + I'm moving over a really stinkingly old UseMod and creole seems the nearest match. I've worked out that Bare /Subpage links need to become \[\[Subpage\]\], and Top/Sub links need to be \[\[Top/Sub\]\] (or \[\[Top/Sub|Top/Sub\]\], to display in exactly the same way), but I'm stuck on generic hyperlinks. The creole cheat sheet says I should be able to do \[\[http://url.path/foo|LinkText\]\], but that comes out as a link to create the "linktext" page, and Markdown-style \[Link Text\](http://url.path/foo) just gets rendered as is. Any suggestions? --[[schmonz]] + +> Was this problem ever solved? -- Thiana -- cgit v1.2.3 From 159471c92359c2da77bd0025f1718acbe7ff2a0c Mon Sep 17 00:00:00 2001 From: "http://www.google.com/profiles/schmonz" Date: Mon, 1 Mar 2010 21:23:00 +0000 Subject: response --- doc/plugins/creole/discussion.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/plugins/creole/discussion.mdwn b/doc/plugins/creole/discussion.mdwn index eab41349a..7f47c2c97 100644 --- a/doc/plugins/creole/discussion.mdwn +++ b/doc/plugins/creole/discussion.mdwn @@ -18,3 +18,5 @@ I've installed Text::WikiCreole 0.05 and enabled the plugin, but I get an error I'm moving over a really stinkingly old UseMod and creole seems the nearest match. I've worked out that Bare /Subpage links need to become \[\[Subpage\]\], and Top/Sub links need to be \[\[Top/Sub\]\] (or \[\[Top/Sub|Top/Sub\]\], to display in exactly the same way), but I'm stuck on generic hyperlinks. The creole cheat sheet says I should be able to do \[\[http://url.path/foo|LinkText\]\], but that comes out as a link to create the "linktext" page, and Markdown-style \[Link Text\](http://url.path/foo) just gets rendered as is. Any suggestions? --[[schmonz]] > Was this problem ever solved? -- Thiana + +>> Not by me. If I were looking at the problem now, with fresh eyes, I'd probably bite the bullet and just convert everything to Markdown. --[[schmonz]] -- cgit v1.2.3 From b3df992552b2a608fd46740252b8fd76bf3c09bb Mon Sep 17 00:00:00 2001 From: "http://cdombroski.myopenid.com/" Date: Tue, 2 Mar 2010 02:19:51 +0000 Subject: --- doc/bugs/External_links_with_Creole.mdwn | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 doc/bugs/External_links_with_Creole.mdwn diff --git a/doc/bugs/External_links_with_Creole.mdwn b/doc/bugs/External_links_with_Creole.mdwn new file mode 100644 index 000000000..3d800b04e --- /dev/null +++ b/doc/bugs/External_links_with_Creole.mdwn @@ -0,0 +1,3 @@ +When using Creole for markup, creating an external link appears to be impossible. Neither \[[Outside URL|http://example.com]] nor <> nor \[Outside URL]\(http://example.com) work. The first gets rendered as a broken WikiLink, the second get eaten and the last is not parsed in anyway so you end up with that exact text in your page. + +I'd have made this as a Creole page as a practical demonstration, but that doesn't seem possible here. Here's a page with an example: -- cgit v1.2.3 From d469a410eaad03553cb5ef41a69c772c6d50bf76 Mon Sep 17 00:00:00 2001 From: "http://cdombroski.myopenid.com/" Date: Tue, 2 Mar 2010 15:47:23 +0000 Subject: Bug: 404 plugin & lighttpd --- doc/bugs/404_plugin_and_lighttpd.mdwn | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 doc/bugs/404_plugin_and_lighttpd.mdwn diff --git a/doc/bugs/404_plugin_and_lighttpd.mdwn b/doc/bugs/404_plugin_and_lighttpd.mdwn new file mode 100644 index 000000000..e60fd209a --- /dev/null +++ b/doc/bugs/404_plugin_and_lighttpd.mdwn @@ -0,0 +1,5 @@ +Lighttpd apparently sets REDIRECT_STATUS=200 for the server.error-handler-404 page. This breaks the 404 plugin which checks this variable for 404 before processing the URI. It also doesn't seem to set REDIRECT_URL. + +I was able to fix my server to check the REQUEST_URI for ikiwiki.cgi and to continue processing if it was not found, passing $ENV{SEVER_NAME} . $ENV{REQUEST_URI} as the first parameter to cgi_page_from_404. However, my perl is terrible and I just made it work rather than figuring out exactly what to do to get it to work on both lighttpd and apache. + +This is with lighttpd 1.4.19 on Debian. -- cgit v1.2.3 From 8aae08aafda8be4d17dd45bd04318b40e276878a Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Tue, 2 Mar 2010 19:56:53 +0000 Subject: --- doc/bugs/404_plugin_and_lighttpd.mdwn | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/bugs/404_plugin_and_lighttpd.mdwn b/doc/bugs/404_plugin_and_lighttpd.mdwn index e60fd209a..29ca107dc 100644 --- a/doc/bugs/404_plugin_and_lighttpd.mdwn +++ b/doc/bugs/404_plugin_and_lighttpd.mdwn @@ -3,3 +3,11 @@ Lighttpd apparently sets REDIRECT_STATUS=200 for the server.error-handler-404 pa I was able to fix my server to check the REQUEST_URI for ikiwiki.cgi and to continue processing if it was not found, passing $ENV{SEVER_NAME} . $ENV{REQUEST_URI} as the first parameter to cgi_page_from_404. However, my perl is terrible and I just made it work rather than figuring out exactly what to do to get it to work on both lighttpd and apache. This is with lighttpd 1.4.19 on Debian. + +> /cgi-bin/ikiwiki.cgi?do=goto also provides redirection in the same way, +> if that's any help? You might need to set the lighttpd 404 handler to +> that, then compose REDIRECT_URL from other variables if necessary. +> +> I originally wrote the plugin for Apache; [[weakish]] contributed the +> lighttpd docs and might know more about how to make it work there. +> --[[smcv]] -- cgit v1.2.3 From 8b6fb02ab5482c46ea53ee08eff4f8b65ef99a0d Mon Sep 17 00:00:00 2001 From: "http://cdombroski.myopenid.com/" Date: Tue, 2 Mar 2010 21:00:28 +0000 Subject: --- doc/ikiwikiusers.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 12d692979..345604c36 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -140,6 +140,7 @@ Personal sites and blogs * [Alex Ghitza homepage and blog](http://aghitza.org/) * [Mukund's homepage](http://www.mukund.org/) * [Andreas's homepage](http://0x7.ch/) - Ikiwiki, Subversion and CSS template +* [Chris Dombroski's boring bliki](https://www.icanttype.org/) Please feel free to add your own ikiwiki site! -- cgit v1.2.3 From 4a7fb67ee6c32b1d66e19f345998b98b169100f0 Mon Sep 17 00:00:00 2001 From: "http://cdombroski.myopenid.com/" Date: Wed, 3 Mar 2010 00:14:47 +0000 Subject: Posting my change to the 404 module --- doc/bugs/404_plugin_and_lighttpd.mdwn | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/doc/bugs/404_plugin_and_lighttpd.mdwn b/doc/bugs/404_plugin_and_lighttpd.mdwn index 29ca107dc..ffbad8add 100644 --- a/doc/bugs/404_plugin_and_lighttpd.mdwn +++ b/doc/bugs/404_plugin_and_lighttpd.mdwn @@ -11,3 +11,25 @@ This is with lighttpd 1.4.19 on Debian. > I originally wrote the plugin for Apache; [[weakish]] contributed the > lighttpd docs and might know more about how to make it work there. > --[[smcv]] + +>> As I said, I got it working for me, but somebody who knows perl should probably look at it with the aim of making it work for everyone. +>> I considered having lighttpd construct a proper url for the 404 redirect itself, but I don't know if it can do something like that or not. +>> For what it's worth, here's the change I made to the module: + + sub cgi ($) { + my $cgi=shift; + if ($ENV{REQUEST_URI} !~ /ikiwiki\.cgi/) { + my $page = cgi_page_from_404( + Encode::decode_utf8($ENV{SERVER_NAME} . $ENV{REQUEST_URI}), + $config{url}, $config{usedirs}); + IkiWiki::Plugin::goto::cgi_goto($cgi, $page); + } + + # if (exists $ENV{REDIRECT_STATUS} && + # $ENV{REDIRECT_STATUS} eq '404') { + # my $page = cgi_page_from_404( + # Encode::decode_utf8($ENV{REDIRECT_URL}), + # $config{url}, $config{usedirs}); + # IkiWiki::Plugin::goto::cgi_goto($cgi, $page); + # } + } -- cgit v1.2.3 From 0385e4080dea208e6683492c9b8f52ff37b5b173 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 2 Mar 2010 22:23:07 -0500 Subject: releasing version 3.20100302 --- debian/changelog | 4 ++-- ikiwiki.spec | 2 +- po/bg.po | 52 +++++++++++++++++++++++++++++++--------------------- po/cs.po | 53 ++++++++++++++++++++++++++++++++--------------------- po/da.po | 53 ++++++++++++++++++++++++++++++++--------------------- po/de.po | 53 ++++++++++++++++++++++++++++++++--------------------- po/es.po | 53 ++++++++++++++++++++++++++++++++--------------------- po/fr.po | 53 ++++++++++++++++++++++++++++++++--------------------- po/gu.po | 52 +++++++++++++++++++++++++++++++--------------------- po/ikiwiki.pot | 53 ++++++++++++++++++++++++++++++++--------------------- po/it.po | 53 ++++++++++++++++++++++++++++++++--------------------- po/pl.po | 52 +++++++++++++++++++++++++++++++--------------------- po/sv.po | 52 +++++++++++++++++++++++++++++++--------------------- po/tr.po | 52 +++++++++++++++++++++++++++++++--------------------- po/vi.po | 51 ++++++++++++++++++++++++++++++--------------------- 15 files changed, 412 insertions(+), 276 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3b92c598d..c0f99291f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -ikiwiki (3.20100228) UNRELEASED; urgency=low +ikiwiki (3.20100302) unstable; urgency=low * comments: Display number of comments in comment action link. * Rebuild wikis on upgrade to this version to get the comment counts @@ -11,7 +11,7 @@ ikiwiki (3.20100228) UNRELEASED; urgency=low * Add new --clean option; this makes ikiwiki remove all built files in the destdir, as well as wrappers and the .ikiwiki directory. - -- Joey Hess Sun, 14 Feb 2010 17:02:10 -0500 + -- Joey Hess Tue, 02 Mar 2010 22:17:30 -0500 ikiwiki (3.20100212) unstable; urgency=low diff --git a/ikiwiki.spec b/ikiwiki.spec index 1dba9f463..73ea7a9c6 100644 --- a/ikiwiki.spec +++ b/ikiwiki.spec @@ -1,5 +1,5 @@ Name: ikiwiki -Version: 3.20100228 +Version: 3.20100302 Release: 1%{?dist} Summary: A wiki compiler diff --git a/po/bg.po b/po/bg.po index a211b7685..0e2108597 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: 2010-02-12 16:48-0500\n" +"POT-Creation-Date: 2010-03-02 22:18-0500\n" "PO-Revision-Date: 2007-01-12 01:19+0200\n" "Last-Translator: Damyan Ivanov \n" "Language-Team: Bulgarian \n" @@ -55,7 +55,7 @@ msgstr "Предпочитанията са запазени." msgid "You are banned." msgstr "Достъпът ви е забранен." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280 msgid "Error" msgstr "Грешка" @@ -137,7 +137,7 @@ msgstr "създаване на нова страницa „%s”" msgid "deleting bucket.." msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216 msgid "done" msgstr "готово" @@ -258,8 +258,18 @@ msgstr "" msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:769 -msgid "Comments" +#: ../IkiWiki/Plugin/comments.pm:761 +#, perl-format +msgid "%i comment" +msgid_plural "%i comments" +msgstr[0] "" +msgstr[1] "" + +#. translators: Here "Comment" is a verb; +#. translators: the user clicks on it to +#. translators: post a comment. +#: ../IkiWiki/Plugin/comments.pm:771 +msgid "Comment" msgstr "" #: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 @@ -1093,7 +1103,7 @@ msgstr "обновяване на страницата „%s”, зависещ msgid "building %s, to update its backlinks" msgstr "обновяване на „%s” и осъвременяване на обратните връзки" -#: ../IkiWiki/Render.pm:696 +#: ../IkiWiki/Render.pm:707 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: неуспех при обновяване на страницата „%s”" @@ -1109,16 +1119,16 @@ msgstr "грешка при четене на „%s”: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:80 +#: ../IkiWiki/Setup/Automator.pm:82 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:106 +#: ../IkiWiki/Setup/Automator.pm:108 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:124 +#: ../IkiWiki/Setup/Automator.pm:126 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1156,19 +1166,19 @@ msgstr "формат: ikiwiki [опции] източник местоназна msgid " ikiwiki --setup configfile" msgstr "" -#: ../ikiwiki.in:91 +#: ../ikiwiki.in:92 msgid "usage: --set var=value" msgstr "" -#: ../ikiwiki.in:140 +#: ../ikiwiki.in:142 msgid "generating wrappers.." msgstr "генериране на обвивки..." -#: ../ikiwiki.in:195 +#: ../ikiwiki.in:205 msgid "rebuilding wiki.." msgstr "обновяване на уики..." -#: ../ikiwiki.in:198 +#: ../ikiwiki.in:208 msgid "refreshing wiki.." msgstr "осъвременяване на уики..." @@ -1176,40 +1186,40 @@ msgstr "осъвременяване на уики..." msgid "Discussion" msgstr "Дискусия" -#: ../IkiWiki.pm:507 +#: ../IkiWiki.pm:514 msgid "Must specify url to wiki with --url when using --cgi" msgstr "" "При използване на пареметъра „--cgi” е необходимо да се укаже и " "местоположението на уикито чрез параметъра „--url”" -#: ../IkiWiki.pm:553 +#: ../IkiWiki.pm:560 msgid "cannot use multiple rcs plugins" msgstr "" -#: ../IkiWiki.pm:582 +#: ../IkiWiki.pm:589 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1255 +#: ../IkiWiki.pm:1262 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "открита е циклична завидимост при %s на „%s” на дълбочина %i" -#: ../IkiWiki.pm:1854 +#: ../IkiWiki.pm:1877 msgid "yes" msgstr "" -#: ../IkiWiki.pm:1997 +#: ../IkiWiki.pm:2020 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2008 +#: ../IkiWiki.pm:2031 #, perl-format msgid "unknown sort type %s" msgstr "непознат вид сортиране „%s”" -#: ../IkiWiki.pm:2027 +#: ../IkiWiki.pm:2050 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "грешка при четене на „%s”: %s" diff --git a/po/cs.po b/po/cs.po index d3cf3f5b9..09d411e98 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: 2010-02-12 16:48-0500\n" +"POT-Creation-Date: 2010-03-02 22:18-0500\n" "PO-Revision-Date: 2009-09-11 20:23+0200\n" "Last-Translator: Miroslav Kure \n" "Language-Team: Czech \n" @@ -55,7 +55,7 @@ msgstr "Nastavení uloženo." msgid "You are banned." msgstr "Jste vyhoštěni." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280 msgid "Error" msgstr "Chyba" @@ -136,7 +136,7 @@ msgstr "vytvářím novou stránku %s" msgid "deleting bucket.." msgstr "mažu bucket..." -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216 msgid "done" msgstr "hotovo" @@ -256,8 +256,19 @@ msgstr "Schvalování komentářů" msgid "comment moderation" msgstr "schvalování komentářů" -#: ../IkiWiki/Plugin/comments.pm:769 -msgid "Comments" +#: ../IkiWiki/Plugin/comments.pm:761 +#, fuzzy, perl-format +msgid "%i comment" +msgid_plural "%i comments" +msgstr[0] "Komentáře" +msgstr[1] "Komentáře" + +#. translators: Here "Comment" is a verb; +#. translators: the user clicks on it to +#. translators: post a comment. +#: ../IkiWiki/Plugin/comments.pm:771 +#, fuzzy +msgid "Comment" msgstr "Komentáře" #: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 @@ -1072,7 +1083,7 @@ msgstr "sestavuji %s, která závisí na %s" msgid "building %s, to update its backlinks" msgstr "sestavuji %s, aby se aktualizovaly zpětné odkazy" -#: ../IkiWiki/Render.pm:696 +#: ../IkiWiki/Render.pm:707 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: nelze sestavit %s" @@ -1088,16 +1099,16 @@ msgstr "nemohu číst %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "musíte zadat název wiki (který obsahuje alfanumerické znaky)" -#: ../IkiWiki/Setup/Automator.pm:80 +#: ../IkiWiki/Setup/Automator.pm:82 #, perl-format msgid "unsupported revision control system %s" msgstr "nepodporovaný systém pro správu verzí: %s" -#: ../IkiWiki/Setup/Automator.pm:106 +#: ../IkiWiki/Setup/Automator.pm:108 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "nepodařilo se nastavit repositář pomocí ikiwiki-makerepo" -#: ../IkiWiki/Setup/Automator.pm:124 +#: ../IkiWiki/Setup/Automator.pm:126 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "** Deaktivuji modul %s, protože selhává s touto hláškou:" @@ -1135,19 +1146,19 @@ msgstr "použití: ikiwiki [volby] zdroj cíl" msgid " ikiwiki --setup configfile" msgstr " ikiwiki --setup konfigurační.soubor" -#: ../ikiwiki.in:91 +#: ../ikiwiki.in:92 msgid "usage: --set var=value" msgstr "použití: --set proměnná=hodnota" -#: ../ikiwiki.in:140 +#: ../ikiwiki.in:142 msgid "generating wrappers.." msgstr "generuji obaly..." -#: ../ikiwiki.in:195 +#: ../ikiwiki.in:205 msgid "rebuilding wiki.." msgstr "znovusestavuji wiki..." -#: ../ikiwiki.in:198 +#: ../ikiwiki.in:208 msgid "refreshing wiki.." msgstr "obnovuji wiki..." @@ -1155,38 +1166,38 @@ msgstr "obnovuji wiki..." msgid "Discussion" msgstr "Diskuse" -#: ../IkiWiki.pm:507 +#: ../IkiWiki.pm:514 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:553 +#: ../IkiWiki.pm:560 msgid "cannot use multiple rcs plugins" msgstr "nelze použít několik rcs modulů" -#: ../IkiWiki.pm:582 +#: ../IkiWiki.pm:589 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "nepodařilo se nahrát externí modul vyžadovaný modulem %s: %s" -#: ../IkiWiki.pm:1255 +#: ../IkiWiki.pm:1262 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "Byla rozpoznána smyčka na %s v hloubce %i" -#: ../IkiWiki.pm:1854 +#: ../IkiWiki.pm:1877 msgid "yes" msgstr "ano" -#: ../IkiWiki.pm:1997 +#: ../IkiWiki.pm:2020 msgid "Sort::Naturally needed for title_natural sort" msgstr "Pro řazení pomocí title_natural je nutný modul Sort::Naturally" -#: ../IkiWiki.pm:2008 +#: ../IkiWiki.pm:2031 #, perl-format msgid "unknown sort type %s" msgstr "neznámý typ řazení %s" -#: ../IkiWiki.pm:2027 +#: ../IkiWiki.pm:2050 #, perl-format msgid "cannot match pages: %s" msgstr "nelze vybrat stránky: %s" diff --git a/po/da.po b/po/da.po index b30730aa4..13d1dca59 100644 --- a/po/da.po +++ b/po/da.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.14159\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-02-12 16:48-0500\n" +"POT-Creation-Date: 2010-03-02 22:18-0500\n" "PO-Revision-Date: 2009-07-23 01:07+0200\n" "Last-Translator: Jonas Smedegaard \n" "Language-Team: None\n" @@ -59,7 +59,7 @@ msgstr "Indstillinger gemt" msgid "You are banned." msgstr "Du er banlyst." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280 msgid "Error" msgstr "Fejl" @@ -140,7 +140,7 @@ msgstr "opretter ny side %s" msgid "deleting bucket.." msgstr "sletter bundt.." -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216 msgid "done" msgstr "færdig" @@ -263,8 +263,19 @@ msgstr "Kommentarmoderering" msgid "comment moderation" msgstr "kommentarkoderering" -#: ../IkiWiki/Plugin/comments.pm:769 -msgid "Comments" +#: ../IkiWiki/Plugin/comments.pm:761 +#, fuzzy, perl-format +msgid "%i comment" +msgid_plural "%i comments" +msgstr[0] "Kommentarer" +msgstr[1] "Kommentarer" + +#. translators: Here "Comment" is a verb; +#. translators: the user clicks on it to +#. translators: post a comment. +#: ../IkiWiki/Plugin/comments.pm:771 +#, fuzzy +msgid "Comment" msgstr "Kommentarer" #: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 @@ -1087,7 +1098,7 @@ msgstr "danner %s, som afhænger af %s" msgid "building %s, to update its backlinks" msgstr "danner %s, for at opdatere dens krydshenvisninger (backlinks)" -#: ../IkiWiki/Render.pm:696 +#: ../IkiWiki/Render.pm:707 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: kan ikke danne %s" @@ -1103,16 +1114,16 @@ msgstr "kan ikke læse %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "du skal angive et wikinavn (som indeholder alfanumeriske tegn)" -#: ../IkiWiki/Setup/Automator.pm:80 +#: ../IkiWiki/Setup/Automator.pm:82 #, perl-format msgid "unsupported revision control system %s" msgstr "revisionskontrolsystem %s ikke understøttet" -#: ../IkiWiki/Setup/Automator.pm:106 +#: ../IkiWiki/Setup/Automator.pm:108 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "opsætning af depotet med ikiwiki-makerepo mislykkedes" -#: ../IkiWiki/Setup/Automator.pm:124 +#: ../IkiWiki/Setup/Automator.pm:126 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "** Deaktiverer udvidelse %s, da den fejler med denne besked:" @@ -1150,19 +1161,19 @@ msgstr "brug: ikiwiki [valg] kilde mål" msgid " ikiwiki --setup configfile" msgstr " ikiwiki --setup opsætningsfil" -#: ../ikiwiki.in:91 +#: ../ikiwiki.in:92 msgid "usage: --set var=value" msgstr "brug: --set var=værdi" -#: ../ikiwiki.in:140 +#: ../ikiwiki.in:142 msgid "generating wrappers.." msgstr "bygger wrappers.." -#: ../ikiwiki.in:195 +#: ../ikiwiki.in:205 msgid "rebuilding wiki.." msgstr "genopbygger wiki..." -#: ../ikiwiki.in:198 +#: ../ikiwiki.in:208 msgid "refreshing wiki.." msgstr "genopfrisker wiki..." @@ -1170,39 +1181,39 @@ msgstr "genopfrisker wiki..." msgid "Discussion" msgstr "Diskussion" -#: ../IkiWiki.pm:507 +#: ../IkiWiki.pm:514 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:553 +#: ../IkiWiki.pm:560 msgid "cannot use multiple rcs plugins" msgstr "kan ikke bruge flere samtidige RCS-udvidelser" -#: ../IkiWiki.pm:582 +#: ../IkiWiki.pm:589 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" "indlæsning af ekstern udvidelse krævet af udvidelsen %s mislykkedes: %s" -#: ../IkiWiki.pm:1255 +#: ../IkiWiki.pm:1262 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "forudberegningssløkke fundet på %s ved dybde %i" -#: ../IkiWiki.pm:1854 +#: ../IkiWiki.pm:1877 msgid "yes" msgstr "ja" -#: ../IkiWiki.pm:1997 +#: ../IkiWiki.pm:2020 msgid "Sort::Naturally needed for title_natural sort" msgstr "Sort::Naturally krævet for title_natural sortering" -#: ../IkiWiki.pm:2008 +#: ../IkiWiki.pm:2031 #, perl-format msgid "unknown sort type %s" msgstr "ukendt sorteringsform %s" -#: ../IkiWiki.pm:2027 +#: ../IkiWiki.pm:2050 #, perl-format msgid "cannot match pages: %s" msgstr "kan ikke få sider til at passe sammen: %s" diff --git a/po/de.po b/po/de.po index b024e3be7..9433501cc 100644 --- a/po/de.po +++ b/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.14159\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-02-12 16:48-0500\n" +"POT-Creation-Date: 2010-03-02 22:18-0500\n" "PO-Revision-Date: 2009-07-23 01:07+0100\n" "Last-Translator: Kurt Gramlich \n" "Language-Team: German \n" @@ -56,7 +56,7 @@ msgstr "Einstellungen gespeichert." msgid "You are banned." msgstr "Sie sind ausgeschlossen worden." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280 msgid "Error" msgstr "Fehler" @@ -137,7 +137,7 @@ msgstr "erstelle neue Seite %s" msgid "deleting bucket.." msgstr "lösche Behälter (bucket)..." -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216 msgid "done" msgstr "fertig" @@ -261,8 +261,19 @@ msgstr "Kommentar-Moderation" msgid "comment moderation" msgstr "Kommentar-Moderation" -#: ../IkiWiki/Plugin/comments.pm:769 -msgid "Comments" +#: ../IkiWiki/Plugin/comments.pm:761 +#, fuzzy, perl-format +msgid "%i comment" +msgid_plural "%i comments" +msgstr[0] "Kommentare" +msgstr[1] "Kommentare" + +#. translators: Here "Comment" is a verb; +#. translators: the user clicks on it to +#. translators: post a comment. +#: ../IkiWiki/Plugin/comments.pm:771 +#, fuzzy +msgid "Comment" msgstr "Kommentare" #: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 @@ -1096,7 +1107,7 @@ msgstr "erzeuge %s, die von %s abhängt" msgid "building %s, to update its backlinks" msgstr "erzeuge %s, um dessen Rückverweise zu aktualisieren" -#: ../IkiWiki/Render.pm:696 +#: ../IkiWiki/Render.pm:707 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: kann %s nicht erzeugen" @@ -1113,16 +1124,16 @@ msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" "Sie müssen einen Wiki-Namen eingeben (der alphanumerische Zeichen enthält)" -#: ../IkiWiki/Setup/Automator.pm:80 +#: ../IkiWiki/Setup/Automator.pm:82 #, perl-format msgid "unsupported revision control system %s" msgstr "nicht unterstütztes Versionskontrollsystem %s" -#: ../IkiWiki/Setup/Automator.pm:106 +#: ../IkiWiki/Setup/Automator.pm:108 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "erstellen des Depots mit ikiwiki-makerepo ist fehlgeschlagen" -#: ../IkiWiki/Setup/Automator.pm:124 +#: ../IkiWiki/Setup/Automator.pm:126 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1162,19 +1173,19 @@ msgstr "Aufruf: ikiwiki [Optionen] Quelle Ziel" msgid " ikiwiki --setup configfile" msgstr " ikiwiki --setup Konfigurationsdatei" -#: ../ikiwiki.in:91 +#: ../ikiwiki.in:92 msgid "usage: --set var=value" msgstr "Aufruf: --set Variable=Wert" -#: ../ikiwiki.in:140 +#: ../ikiwiki.in:142 msgid "generating wrappers.." msgstr "erzeuge Wrapper.." -#: ../ikiwiki.in:195 +#: ../ikiwiki.in:205 msgid "rebuilding wiki.." msgstr "erzeuge Wiki neu.." -#: ../ikiwiki.in:198 +#: ../ikiwiki.in:208 msgid "refreshing wiki.." msgstr "aktualisiere Wiki.." @@ -1182,41 +1193,41 @@ msgstr "aktualisiere Wiki.." msgid "Discussion" msgstr "Diskussion" -#: ../IkiWiki.pm:507 +#: ../IkiWiki.pm:514 msgid "Must specify url to wiki with --url when using --cgi" msgstr "" "Es muss eine URL zum Wiki mit --url angegeben werden, wenn --cgi verwandt " "wird" -#: ../IkiWiki.pm:553 +#: ../IkiWiki.pm:560 msgid "cannot use multiple rcs plugins" msgstr "" "Es können nicht mehrere Versionskontrollsystem-Erweiterungen verwandt werden" -#: ../IkiWiki.pm:582 +#: ../IkiWiki.pm:589 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "Laden der für %s benötigten externen Erweiterung fehlgeschlagen: %s" -#: ../IkiWiki.pm:1255 +#: ../IkiWiki.pm:1262 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "Präprozessorschleife auf %s in Tiefe %i erkannt" -#: ../IkiWiki.pm:1854 +#: ../IkiWiki.pm:1877 msgid "yes" msgstr "ja" -#: ../IkiWiki.pm:1997 +#: ../IkiWiki.pm:2020 msgid "Sort::Naturally needed for title_natural sort" msgstr "Sort::Naturally wird benötigt für title_natural sort" -#: ../IkiWiki.pm:2008 +#: ../IkiWiki.pm:2031 #, perl-format msgid "unknown sort type %s" msgstr "Unbekannter Sortierungstyp %s" -#: ../IkiWiki.pm:2027 +#: ../IkiWiki.pm:2050 #, perl-format msgid "cannot match pages: %s" msgstr "Kann die Seiten nicht zuordnen: %s" diff --git a/po/es.po b/po/es.po index 2923ac199..465e9c1a1 100644 --- a/po/es.po +++ b/po/es.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: es\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-02-12 16:48-0500\n" +"POT-Creation-Date: 2010-03-02 22:18-0500\n" "PO-Revision-Date: 2009-06-14 12:32+0200\n" "Last-Translator: Victor Moral \n" "Language-Team: \n" @@ -60,7 +60,7 @@ msgstr "Las preferencias se han guardado." msgid "You are banned." msgstr "Ha sido expulsado." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280 msgid "Error" msgstr "Error" @@ -142,7 +142,7 @@ msgstr "creando nueva página %s" msgid "deleting bucket.." msgstr "borrando el directorio.." -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216 msgid "done" msgstr "completado" @@ -265,8 +265,19 @@ msgstr "Aprobación de comentarios" msgid "comment moderation" msgstr "aprobación de comentarios" -#: ../IkiWiki/Plugin/comments.pm:769 -msgid "Comments" +#: ../IkiWiki/Plugin/comments.pm:761 +#, fuzzy, perl-format +msgid "%i comment" +msgid_plural "%i comments" +msgstr[0] "Comentarios" +msgstr[1] "Comentarios" + +#. translators: Here "Comment" is a verb; +#. translators: the user clicks on it to +#. translators: post a comment. +#: ../IkiWiki/Plugin/comments.pm:771 +#, fuzzy +msgid "Comment" msgstr "Comentarios" #: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 @@ -1095,7 +1106,7 @@ msgstr "" "convirtiendo la página %s para actualizar la lista de páginas que hacen " "referencia a ella." -#: ../IkiWiki/Render.pm:696 +#: ../IkiWiki/Render.pm:707 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: no puedo convertir la página %s" @@ -1111,16 +1122,16 @@ msgstr "no puedo leer el archivo %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "debe escribir un nombre wiki (que contiene caracteres alfanuméricos)" -#: ../IkiWiki/Setup/Automator.pm:80 +#: ../IkiWiki/Setup/Automator.pm:82 #, perl-format msgid "unsupported revision control system %s" msgstr "el sistema de control de versiones %s no está soportado" -#: ../IkiWiki/Setup/Automator.pm:106 +#: ../IkiWiki/Setup/Automator.pm:108 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "no he podido crear un repositorio con el programa ikiwiki-makerepo" -#: ../IkiWiki/Setup/Automator.pm:124 +#: ../IkiWiki/Setup/Automator.pm:126 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1160,19 +1171,19 @@ msgstr "uso: ikiwiki [opciones] origen destino" msgid " ikiwiki --setup configfile" msgstr " ikiwiki --setup archivo_de_configuración" -#: ../ikiwiki.in:91 +#: ../ikiwiki.in:92 msgid "usage: --set var=value" msgstr "uso: --set variable=valor" -#: ../ikiwiki.in:140 +#: ../ikiwiki.in:142 msgid "generating wrappers.." msgstr "generando programas auxiliares.." -#: ../ikiwiki.in:195 +#: ../ikiwiki.in:205 msgid "rebuilding wiki.." msgstr "reconstruyendo el wiki.." -#: ../ikiwiki.in:198 +#: ../ikiwiki.in:208 msgid "refreshing wiki.." msgstr "actualizando el wiki.." @@ -1180,44 +1191,44 @@ msgstr "actualizando el wiki.." msgid "Discussion" msgstr "Comentarios" -#: ../IkiWiki.pm:507 +#: ../IkiWiki.pm:514 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:553 +#: ../IkiWiki.pm:560 msgid "cannot use multiple rcs plugins" msgstr "no puedo emplear varios complementos rcs" -#: ../IkiWiki.pm:582 +#: ../IkiWiki.pm:589 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "no he podido cargar el complemento externo %s necesario para %s" -#: ../IkiWiki.pm:1255 +#: ../IkiWiki.pm:1262 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "" "se ha detectado en la página %s un bucle de preprocesado en la iteración " "número %i" -#: ../IkiWiki.pm:1854 +#: ../IkiWiki.pm:1877 msgid "yes" msgstr "si" -#: ../IkiWiki.pm:1997 +#: ../IkiWiki.pm:2020 msgid "Sort::Naturally needed for title_natural sort" msgstr "" "Se necesita el módulo Sort::Naturally para el tipo de ordenación " "title_natural" -#: ../IkiWiki.pm:2008 +#: ../IkiWiki.pm:2031 #, perl-format msgid "unknown sort type %s" msgstr "no conozco este tipo de ordenación %s" -#: ../IkiWiki.pm:2027 +#: ../IkiWiki.pm:2050 #, perl-format msgid "cannot match pages: %s" msgstr "no encuentro páginas coincidentes: %s" diff --git a/po/fr.po b/po/fr.po index 573168d51..723d3a036 100644 --- a/po/fr.po +++ b/po/fr.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.141\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-02-12 16:48-0500\n" +"POT-Creation-Date: 2010-03-02 22:18-0500\n" "PO-Revision-Date: 2009-08-17 10:06+0200\n" "Last-Translator: Philippe Batailler \n" "Language-Team: French \n" @@ -57,7 +57,7 @@ msgstr "Les préférences ont été enregistrées." msgid "You are banned." msgstr "Vous avez été banni." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280 msgid "Error" msgstr "Erreur" @@ -138,7 +138,7 @@ msgstr "Création de la nouvelle page %s" msgid "deleting bucket.." msgstr "Suppression du compartiment S3 (« bucket »)..." -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216 msgid "done" msgstr "Terminé" @@ -258,8 +258,19 @@ msgstr "Modération du commentaire" msgid "comment moderation" msgstr "modération du commentaire" -#: ../IkiWiki/Plugin/comments.pm:769 -msgid "Comments" +#: ../IkiWiki/Plugin/comments.pm:761 +#, fuzzy, perl-format +msgid "%i comment" +msgid_plural "%i comments" +msgstr[0] "Commentaires" +msgstr[1] "Commentaires" + +#. translators: Here "Comment" is a verb; +#. translators: the user clicks on it to +#. translators: post a comment. +#: ../IkiWiki/Plugin/comments.pm:771 +#, fuzzy +msgid "Comment" msgstr "Commentaires" #: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 @@ -1092,7 +1103,7 @@ msgstr "Reconstruction de %s, qui dépend de %s" msgid "building %s, to update its backlinks" msgstr "Reconstruction de %s, afin de mettre à jour ses rétroliens" -#: ../IkiWiki/Render.pm:696 +#: ../IkiWiki/Render.pm:707 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki : impossible de reconstruire %s" @@ -1110,16 +1121,16 @@ msgstr "" "Vous devez spécifier un nom de wiki (contenant des caractères " "alphanumériques)" -#: ../IkiWiki/Setup/Automator.pm:80 +#: ../IkiWiki/Setup/Automator.pm:82 #, perl-format msgid "unsupported revision control system %s" msgstr "Système de contrôle de version non reconnu : %s" -#: ../IkiWiki/Setup/Automator.pm:106 +#: ../IkiWiki/Setup/Automator.pm:108 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "Échec lors de la création du dépôt avec ikiwiki-makerepo" -#: ../IkiWiki/Setup/Automator.pm:124 +#: ../IkiWiki/Setup/Automator.pm:126 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1160,19 +1171,19 @@ msgstr "Syntaxe : ikiwiki [options] source destination" msgid " ikiwiki --setup configfile" msgstr " ikiwiki --setup fichier de configuration" -#: ../ikiwiki.in:91 +#: ../ikiwiki.in:92 msgid "usage: --set var=value" msgstr "Syntaxe : -- set var=valeur" -#: ../ikiwiki.in:140 +#: ../ikiwiki.in:142 msgid "generating wrappers.." msgstr "Création des fichiers CGI..." -#: ../ikiwiki.in:195 +#: ../ikiwiki.in:205 msgid "rebuilding wiki.." msgstr "Reconstruction du wiki..." -#: ../ikiwiki.in:198 +#: ../ikiwiki.in:208 msgid "refreshing wiki.." msgstr "Rafraîchissement du wiki..." @@ -1180,39 +1191,39 @@ msgstr "Rafraîchissement du wiki..." msgid "Discussion" msgstr "Discussion" -#: ../IkiWiki.pm:507 +#: ../IkiWiki.pm:514 msgid "Must specify url to wiki with --url when using --cgi" msgstr "" "Vous devez indiquer l'URL du wiki par --url lors de l'utilisation de --cgi" -#: ../IkiWiki.pm:553 +#: ../IkiWiki.pm:560 msgid "cannot use multiple rcs plugins" msgstr "Impossible d'utiliser plusieurs systèmes de contrôle des versions" -#: ../IkiWiki.pm:582 +#: ../IkiWiki.pm:589 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "Impossible de charger le greffon externe nécessaire au greffon %s : %s" -#: ../IkiWiki.pm:1255 +#: ../IkiWiki.pm:1262 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "Une boucle de prétraitement a été détectée sur %s à hauteur de %i" -#: ../IkiWiki.pm:1854 +#: ../IkiWiki.pm:1877 msgid "yes" msgstr "oui" -#: ../IkiWiki.pm:1997 +#: ../IkiWiki.pm:2020 msgid "Sort::Naturally needed for title_natural sort" msgstr "Sort::Naturally est nécessaire pour un tri « title_natural »" -#: ../IkiWiki.pm:2008 +#: ../IkiWiki.pm:2031 #, perl-format msgid "unknown sort type %s" msgstr "Type de tri %s inconnu" -#: ../IkiWiki.pm:2027 +#: ../IkiWiki.pm:2050 #, perl-format msgid "cannot match pages: %s" msgstr "Impossible de trouver les pages %s" diff --git a/po/gu.po b/po/gu.po index 3cb505efe..f7725abb9 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: 2010-02-12 16:48-0500\n" +"POT-Creation-Date: 2010-03-02 22:18-0500\n" "PO-Revision-Date: 2007-01-11 16:05+0530\n" "Last-Translator: Kartik Mistry \n" "Language-Team: Gujarati \n" @@ -54,7 +54,7 @@ msgstr "પ્રાથમિકતાઓ સંગ્રહાઇ." msgid "You are banned." msgstr "તમારા પર પ્રતિબંધ છે." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280 msgid "Error" msgstr "ક્ષતિ" @@ -135,7 +135,7 @@ msgstr "નવું પાનું %s બનાવે છે" msgid "deleting bucket.." msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216 msgid "done" msgstr "સંપૂર્ણ" @@ -256,8 +256,18 @@ msgstr "" msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:769 -msgid "Comments" +#: ../IkiWiki/Plugin/comments.pm:761 +#, perl-format +msgid "%i comment" +msgid_plural "%i comments" +msgstr[0] "" +msgstr[1] "" + +#. translators: Here "Comment" is a verb; +#. translators: the user clicks on it to +#. translators: post a comment. +#: ../IkiWiki/Plugin/comments.pm:771 +msgid "Comment" msgstr "" #: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 @@ -1079,7 +1089,7 @@ msgstr "રેન્ડર કરે છે %s, જે %s પર આધારિ msgid "building %s, to update its backlinks" msgstr "રેન્ડર કરે છે %s, તેનાં પાછળનાં જોડાણો સુધારવા માટે" -#: ../IkiWiki/Render.pm:696 +#: ../IkiWiki/Render.pm:707 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: %s રેન્ડર કરી શકાતું નથી" @@ -1095,16 +1105,16 @@ msgstr "વાંચી શકાતી નથી %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:80 +#: ../IkiWiki/Setup/Automator.pm:82 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:106 +#: ../IkiWiki/Setup/Automator.pm:108 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:124 +#: ../IkiWiki/Setup/Automator.pm:126 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1142,19 +1152,19 @@ msgstr "ઉપયોગ: ikiwiki [વિકલ્પો] source dest" msgid " ikiwiki --setup configfile" msgstr "" -#: ../ikiwiki.in:91 +#: ../ikiwiki.in:92 msgid "usage: --set var=value" msgstr "" -#: ../ikiwiki.in:140 +#: ../ikiwiki.in:142 msgid "generating wrappers.." msgstr "આવરણ બનાવે છે.." -#: ../ikiwiki.in:195 +#: ../ikiwiki.in:205 msgid "rebuilding wiki.." msgstr "વીકી ફરીથી બનાવે છે.." -#: ../ikiwiki.in:198 +#: ../ikiwiki.in:208 msgid "refreshing wiki.." msgstr "વીકીને તાજી કરે છે.." @@ -1162,38 +1172,38 @@ msgstr "વીકીને તાજી કરે છે.." msgid "Discussion" msgstr "ચર્ચા" -#: ../IkiWiki.pm:507 +#: ../IkiWiki.pm:514 msgid "Must specify url to wiki with --url when using --cgi" msgstr "જ્યારે --cgi ઉપયોગ કરતાં હોય ત્યારે વીકીનું યુઆરએલ સ્પષ્ટ કરવું જ પડશે" -#: ../IkiWiki.pm:553 +#: ../IkiWiki.pm:560 msgid "cannot use multiple rcs plugins" msgstr "" -#: ../IkiWiki.pm:582 +#: ../IkiWiki.pm:589 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1255 +#: ../IkiWiki.pm:1262 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "%s પર શોધાયેલ લુપ %s પર ચલાવે છે %i ઉંડાણ પર" -#: ../IkiWiki.pm:1854 +#: ../IkiWiki.pm:1877 msgid "yes" msgstr "" -#: ../IkiWiki.pm:1997 +#: ../IkiWiki.pm:2020 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2008 +#: ../IkiWiki.pm:2031 #, perl-format msgid "unknown sort type %s" msgstr "અજાણ્યો ગોઠવણી પ્રકાર %s" -#: ../IkiWiki.pm:2027 +#: ../IkiWiki.pm:2050 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "વાંચી શકાતી નથી %s: %s" diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index 4f44e7c74..11af9e4cd 100644 --- a/po/ikiwiki.pot +++ b/po/ikiwiki.pot @@ -8,13 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-02-12 16:48-0500\n" +"POT-Creation-Date: 2010-03-02 22:18-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: ../IkiWiki/CGI.pm:116 msgid "You need to log in first." @@ -54,7 +55,7 @@ msgstr "" msgid "You are banned." msgstr "" -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280 msgid "Error" msgstr "" @@ -135,7 +136,7 @@ msgstr "" msgid "deleting bucket.." msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216 msgid "done" msgstr "" @@ -253,8 +254,18 @@ msgstr "" msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:769 -msgid "Comments" +#: ../IkiWiki/Plugin/comments.pm:761 +#, perl-format +msgid "%i comment" +msgid_plural "%i comments" +msgstr[0] "" +msgstr[1] "" + +#. translators: Here "Comment" is a verb; +#. translators: the user clicks on it to +#. translators: post a comment. +#: ../IkiWiki/Plugin/comments.pm:771 +msgid "Comment" msgstr "" #: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 @@ -1053,7 +1064,7 @@ msgstr "" msgid "building %s, to update its backlinks" msgstr "" -#: ../IkiWiki/Render.pm:696 +#: ../IkiWiki/Render.pm:707 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "" @@ -1069,16 +1080,16 @@ msgstr "" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:80 +#: ../IkiWiki/Setup/Automator.pm:82 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:106 +#: ../IkiWiki/Setup/Automator.pm:108 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:124 +#: ../IkiWiki/Setup/Automator.pm:126 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1116,19 +1127,19 @@ msgstr "" msgid " ikiwiki --setup configfile" msgstr "" -#: ../ikiwiki.in:91 +#: ../ikiwiki.in:92 msgid "usage: --set var=value" msgstr "" -#: ../ikiwiki.in:140 +#: ../ikiwiki.in:142 msgid "generating wrappers.." msgstr "" -#: ../ikiwiki.in:195 +#: ../ikiwiki.in:205 msgid "rebuilding wiki.." msgstr "" -#: ../ikiwiki.in:198 +#: ../ikiwiki.in:208 msgid "refreshing wiki.." msgstr "" @@ -1136,38 +1147,38 @@ msgstr "" msgid "Discussion" msgstr "" -#: ../IkiWiki.pm:507 +#: ../IkiWiki.pm:514 msgid "Must specify url to wiki with --url when using --cgi" msgstr "" -#: ../IkiWiki.pm:553 +#: ../IkiWiki.pm:560 msgid "cannot use multiple rcs plugins" msgstr "" -#: ../IkiWiki.pm:582 +#: ../IkiWiki.pm:589 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1255 +#: ../IkiWiki.pm:1262 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "" -#: ../IkiWiki.pm:1854 +#: ../IkiWiki.pm:1877 msgid "yes" msgstr "" -#: ../IkiWiki.pm:1997 +#: ../IkiWiki.pm:2020 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2008 +#: ../IkiWiki.pm:2031 #, perl-format msgid "unknown sort type %s" msgstr "" -#: ../IkiWiki.pm:2027 +#: ../IkiWiki.pm:2050 #, perl-format msgid "cannot match pages: %s" msgstr "" diff --git a/po/it.po b/po/it.po index cc24cccd5..d664c4d30 100644 --- a/po/it.po +++ b/po/it.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Ikiwiki\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-02-12 16:48-0500\n" +"POT-Creation-Date: 2010-03-02 22:18-0500\n" "PO-Revision-Date: 2009-08-16 11:01+0100\n" "Last-Translator: Luca Bruno \n" "Language-Team: Italian TP \n" @@ -53,7 +53,7 @@ msgstr "Preferenze salvate." msgid "You are banned." msgstr "Avete ricevuto un ban." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280 msgid "Error" msgstr "Errore" @@ -135,7 +135,7 @@ msgstr "creazione nuova pagina %s" msgid "deleting bucket.." msgstr "eliminazione contenitore..." -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216 msgid "done" msgstr "fatto" @@ -255,8 +255,19 @@ msgstr "Moderazione commenti" msgid "comment moderation" msgstr "moderazione commento" -#: ../IkiWiki/Plugin/comments.pm:769 -msgid "Comments" +#: ../IkiWiki/Plugin/comments.pm:761 +#, fuzzy, perl-format +msgid "%i comment" +msgid_plural "%i comments" +msgstr[0] "Commenti" +msgstr[1] "Commenti" + +#. translators: Here "Comment" is a verb; +#. translators: the user clicks on it to +#. translators: post a comment. +#: ../IkiWiki/Plugin/comments.pm:771 +#, fuzzy +msgid "Comment" msgstr "Commenti" #: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 @@ -1083,7 +1094,7 @@ msgstr "compilazione di %s, che dipende da %s" msgid "building %s, to update its backlinks" msgstr "compilazione di %s, per aggiornare i collegamenti ai precedenti" -#: ../IkiWiki/Render.pm:696 +#: ../IkiWiki/Render.pm:707 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: impossibile compilare %s" @@ -1099,16 +1110,16 @@ msgstr "impossibile leggere %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "occorre inserire un wikiname (contente caratteri alfanumerici)" -#: ../IkiWiki/Setup/Automator.pm:80 +#: ../IkiWiki/Setup/Automator.pm:82 #, perl-format msgid "unsupported revision control system %s" msgstr "sistema di controllo di revisione %s non supportato" -#: ../IkiWiki/Setup/Automator.pm:106 +#: ../IkiWiki/Setup/Automator.pm:108 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "impossibile creare un repository tramite ikiwiki-makerepo" -#: ../IkiWiki/Setup/Automator.pm:124 +#: ../IkiWiki/Setup/Automator.pm:126 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1147,19 +1158,19 @@ msgstr "utilizzo: ikiwiki [opzioni] sorgente destinazione" msgid " ikiwiki --setup configfile" msgstr " ikiwiki --setup configfile" -#: ../ikiwiki.in:91 +#: ../ikiwiki.in:92 msgid "usage: --set var=value" msgstr "utilizzo: --set var=valore" -#: ../ikiwiki.in:140 +#: ../ikiwiki.in:142 msgid "generating wrappers.." msgstr "generazione contenitori..." -#: ../ikiwiki.in:195 +#: ../ikiwiki.in:205 msgid "rebuilding wiki.." msgstr "ricostruzione wiki..." -#: ../ikiwiki.in:198 +#: ../ikiwiki.in:208 msgid "refreshing wiki.." msgstr "aggiornamento wiki..." @@ -1167,38 +1178,38 @@ msgstr "aggiornamento wiki..." msgid "Discussion" msgstr "Discussione" -#: ../IkiWiki.pm:507 +#: ../IkiWiki.pm:514 msgid "Must specify url to wiki with --url when using --cgi" msgstr "Occorre specificare l'url del wiki tramite --url quando si usa --cgi" -#: ../IkiWiki.pm:553 +#: ../IkiWiki.pm:560 msgid "cannot use multiple rcs plugins" msgstr "impossibile usare più plugin rcs" -#: ../IkiWiki.pm:582 +#: ../IkiWiki.pm:589 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "impossibile caricare il plugin esterno per il plugin %s: %s" -#: ../IkiWiki.pm:1255 +#: ../IkiWiki.pm:1262 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "ciclo del preprocessore individuato su %s alla profondità %i" -#: ../IkiWiki.pm:1854 +#: ../IkiWiki.pm:1877 msgid "yes" msgstr "sì" -#: ../IkiWiki.pm:1997 +#: ../IkiWiki.pm:2020 msgid "Sort::Naturally needed for title_natural sort" msgstr "Sort::Naturally è richiesto per l'ordinamento title_natural" -#: ../IkiWiki.pm:2008 +#: ../IkiWiki.pm:2031 #, perl-format msgid "unknown sort type %s" msgstr "ordinamento %s sconosciuto" -#: ../IkiWiki.pm:2027 +#: ../IkiWiki.pm:2050 #, perl-format msgid "cannot match pages: %s" msgstr "impossibile trovare pagine corrispondenti: %s" diff --git a/po/pl.po b/po/pl.po index 5c8fc1390..77e1537f4 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: 2010-02-12 16:48-0500\n" +"POT-Creation-Date: 2010-03-02 22:18-0500\n" "PO-Revision-Date: 2007-04-27 22:05+0200\n" "Last-Translator: Pawel Tecza \n" "Language-Team: Debian L10n Polish \n" @@ -57,7 +57,7 @@ msgstr "Preferencje zapisane." msgid "You are banned." msgstr "Twój dostęp został zabroniony przez administratora." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280 msgid "Error" msgstr "Błąd" @@ -139,7 +139,7 @@ msgstr "tworzenie nowej strony %s" msgid "deleting bucket.." msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216 msgid "done" msgstr "gotowe" @@ -260,8 +260,18 @@ msgstr "" msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:769 -msgid "Comments" +#: ../IkiWiki/Plugin/comments.pm:761 +#, perl-format +msgid "%i comment" +msgid_plural "%i comments" +msgstr[0] "" +msgstr[1] "" + +#. translators: Here "Comment" is a verb; +#. translators: the user clicks on it to +#. translators: post a comment. +#: ../IkiWiki/Plugin/comments.pm:771 +msgid "Comment" msgstr "" #: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 @@ -1101,7 +1111,7 @@ msgstr "renderowanie %s zależącego od %s" msgid "building %s, to update its backlinks" msgstr "renderowanie %s w celu aktualizacji powrotnych odnośników" -#: ../IkiWiki/Render.pm:696 +#: ../IkiWiki/Render.pm:707 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: awaria w trakcie tworzenia %s" @@ -1117,16 +1127,16 @@ msgstr "awaria w trakcie odczytu %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:80 +#: ../IkiWiki/Setup/Automator.pm:82 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:106 +#: ../IkiWiki/Setup/Automator.pm:108 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:124 +#: ../IkiWiki/Setup/Automator.pm:126 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1164,19 +1174,19 @@ msgstr "użycie: ikiwiki [parametry] źródło cel" msgid " ikiwiki --setup configfile" msgstr "" -#: ../ikiwiki.in:91 +#: ../ikiwiki.in:92 msgid "usage: --set var=value" msgstr "" -#: ../ikiwiki.in:140 +#: ../ikiwiki.in:142 msgid "generating wrappers.." msgstr "tworzenie osłon..." -#: ../ikiwiki.in:195 +#: ../ikiwiki.in:205 msgid "rebuilding wiki.." msgstr "przebudowywanie wiki..." -#: ../ikiwiki.in:198 +#: ../ikiwiki.in:208 msgid "refreshing wiki.." msgstr "odświeżanie wiki..." @@ -1184,40 +1194,40 @@ msgstr "odświeżanie wiki..." msgid "Discussion" msgstr "Dyskusja" -#: ../IkiWiki.pm:507 +#: ../IkiWiki.pm:514 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:553 +#: ../IkiWiki.pm:560 msgid "cannot use multiple rcs plugins" msgstr "" -#: ../IkiWiki.pm:582 +#: ../IkiWiki.pm:589 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1255 +#: ../IkiWiki.pm:1262 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "polecenie preprocesora %s wykryte w %s na głębokości %i" -#: ../IkiWiki.pm:1854 +#: ../IkiWiki.pm:1877 msgid "yes" msgstr "" -#: ../IkiWiki.pm:1997 +#: ../IkiWiki.pm:2020 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2008 +#: ../IkiWiki.pm:2031 #, perl-format msgid "unknown sort type %s" msgstr "nieznany sposób sortowania %s" -#: ../IkiWiki.pm:2027 +#: ../IkiWiki.pm:2050 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "awaria w trakcie odczytu %s: %s" diff --git a/po/sv.po b/po/sv.po index 62b9d6905..20a8020c1 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: 2010-02-12 16:48-0500\n" +"POT-Creation-Date: 2010-03-02 22:18-0500\n" "PO-Revision-Date: 2007-01-10 23:47+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -54,7 +54,7 @@ msgstr "Inställningar sparades." msgid "You are banned." msgstr "Du är bannlyst." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280 msgid "Error" msgstr "Fel" @@ -136,7 +136,7 @@ msgstr "skapar nya sidan %s" msgid "deleting bucket.." msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216 msgid "done" msgstr "klar" @@ -257,8 +257,18 @@ msgstr "" msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:769 -msgid "Comments" +#: ../IkiWiki/Plugin/comments.pm:761 +#, perl-format +msgid "%i comment" +msgid_plural "%i comments" +msgstr[0] "" +msgstr[1] "" + +#. translators: Here "Comment" is a verb; +#. translators: the user clicks on it to +#. translators: post a comment. +#: ../IkiWiki/Plugin/comments.pm:771 +msgid "Comment" msgstr "" #: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 @@ -1088,7 +1098,7 @@ msgstr "ritar upp %s, vilken är beroende av %s" msgid "building %s, to update its backlinks" msgstr "ritar upp %s, för att uppdatera dess bakåtlänkar" -#: ../IkiWiki/Render.pm:696 +#: ../IkiWiki/Render.pm:707 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: kan inte rita upp %s" @@ -1104,16 +1114,16 @@ msgstr "kan inte läsa %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:80 +#: ../IkiWiki/Setup/Automator.pm:82 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:106 +#: ../IkiWiki/Setup/Automator.pm:108 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:124 +#: ../IkiWiki/Setup/Automator.pm:126 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1151,19 +1161,19 @@ msgstr "användning: ikiwiki [flaggor] källa mål" msgid " ikiwiki --setup configfile" msgstr "" -#: ../ikiwiki.in:91 +#: ../ikiwiki.in:92 msgid "usage: --set var=value" msgstr "" -#: ../ikiwiki.in:140 +#: ../ikiwiki.in:142 msgid "generating wrappers.." msgstr "genererar wrappers.." -#: ../ikiwiki.in:195 +#: ../ikiwiki.in:205 msgid "rebuilding wiki.." msgstr "bygger om wiki.." -#: ../ikiwiki.in:198 +#: ../ikiwiki.in:208 msgid "refreshing wiki.." msgstr "uppdaterar wiki.." @@ -1171,38 +1181,38 @@ msgstr "uppdaterar wiki.." msgid "Discussion" msgstr "Diskussion" -#: ../IkiWiki.pm:507 +#: ../IkiWiki.pm:514 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:553 +#: ../IkiWiki.pm:560 msgid "cannot use multiple rcs plugins" msgstr "" -#: ../IkiWiki.pm:582 +#: ../IkiWiki.pm:589 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1255 +#: ../IkiWiki.pm:1262 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "%s förbehandlingsslinga detekterades på %s, djup %i" -#: ../IkiWiki.pm:1854 +#: ../IkiWiki.pm:1877 msgid "yes" msgstr "" -#: ../IkiWiki.pm:1997 +#: ../IkiWiki.pm:2020 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2008 +#: ../IkiWiki.pm:2031 #, perl-format msgid "unknown sort type %s" msgstr "okänd sorteringstyp %s" -#: ../IkiWiki.pm:2027 +#: ../IkiWiki.pm:2050 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "kan inte läsa %s: %s" diff --git a/po/tr.po b/po/tr.po index 94ad12e9e..b3742ca36 100644 --- a/po/tr.po +++ b/po/tr.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.20091031\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-02-12 16:48-0500\n" +"POT-Creation-Date: 2010-03-02 22:18-0500\n" "PO-Revision-Date: 2009-11-08 03:04+0200\n" "Last-Translator: Recai Oktaş \n" "Language-Team: Turkish \n" @@ -51,7 +51,7 @@ msgstr "Tercihler kaydedildi." msgid "You are banned." msgstr "" -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280 msgid "Error" msgstr "Hata" @@ -132,7 +132,7 @@ msgstr "%s için yeni sayfa oluşturuluyor" msgid "deleting bucket.." msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216 msgid "done" msgstr "" @@ -250,8 +250,18 @@ msgstr "" msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:769 -msgid "Comments" +#: ../IkiWiki/Plugin/comments.pm:761 +#, perl-format +msgid "%i comment" +msgid_plural "%i comments" +msgstr[0] "" +msgstr[1] "" + +#. translators: Here "Comment" is a verb; +#. translators: the user clicks on it to +#. translators: post a comment. +#: ../IkiWiki/Plugin/comments.pm:771 +msgid "Comment" msgstr "" #: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 @@ -1050,7 +1060,7 @@ msgstr "" msgid "building %s, to update its backlinks" msgstr "" -#: ../IkiWiki/Render.pm:696 +#: ../IkiWiki/Render.pm:707 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "" @@ -1066,16 +1076,16 @@ msgstr "" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:80 +#: ../IkiWiki/Setup/Automator.pm:82 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:106 +#: ../IkiWiki/Setup/Automator.pm:108 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:124 +#: ../IkiWiki/Setup/Automator.pm:126 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1113,19 +1123,19 @@ msgstr "" msgid " ikiwiki --setup configfile" msgstr "" -#: ../ikiwiki.in:91 +#: ../ikiwiki.in:92 msgid "usage: --set var=value" msgstr "" -#: ../ikiwiki.in:140 +#: ../ikiwiki.in:142 msgid "generating wrappers.." msgstr "" -#: ../ikiwiki.in:195 +#: ../ikiwiki.in:205 msgid "rebuilding wiki.." msgstr "" -#: ../ikiwiki.in:198 +#: ../ikiwiki.in:208 msgid "refreshing wiki.." msgstr "" @@ -1133,38 +1143,38 @@ msgstr "" msgid "Discussion" msgstr "" -#: ../IkiWiki.pm:507 +#: ../IkiWiki.pm:514 msgid "Must specify url to wiki with --url when using --cgi" msgstr "" -#: ../IkiWiki.pm:553 +#: ../IkiWiki.pm:560 msgid "cannot use multiple rcs plugins" msgstr "" -#: ../IkiWiki.pm:582 +#: ../IkiWiki.pm:589 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1255 +#: ../IkiWiki.pm:1262 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "" -#: ../IkiWiki.pm:1854 +#: ../IkiWiki.pm:1877 msgid "yes" msgstr "" -#: ../IkiWiki.pm:1997 +#: ../IkiWiki.pm:2020 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2008 +#: ../IkiWiki.pm:2031 #, perl-format msgid "unknown sort type %s" msgstr "" -#: ../IkiWiki.pm:2027 +#: ../IkiWiki.pm:2050 #, perl-format msgid "cannot match pages: %s" msgstr "" diff --git a/po/vi.po b/po/vi.po index 9326f2975..cfc7184ef 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: 2010-02-12 16:48-0500\n" +"POT-Creation-Date: 2010-03-02 22:18-0500\n" "PO-Revision-Date: 2007-01-13 15:31+1030\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" @@ -55,7 +55,7 @@ msgstr "Tùy thích đã được lưu." msgid "You are banned." msgstr "Bạn bị cấm ra." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1273 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280 msgid "Error" msgstr "Lỗi" @@ -137,7 +137,7 @@ msgstr "đang tạo trang mới %s" msgid "deleting bucket.." msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216 msgid "done" msgstr "xong" @@ -258,8 +258,17 @@ msgstr "" msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:769 -msgid "Comments" +#: ../IkiWiki/Plugin/comments.pm:761 +#, perl-format +msgid "%i comment" +msgid_plural "%i comments" +msgstr[0] "" + +#. translators: Here "Comment" is a verb; +#. translators: the user clicks on it to +#. translators: post a comment. +#: ../IkiWiki/Plugin/comments.pm:771 +msgid "Comment" msgstr "" #: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 @@ -1089,7 +1098,7 @@ msgstr "đang vẽ %s mà phụ thuộc vào %s" msgid "building %s, to update its backlinks" msgstr "đang vẽ %s để cập nhật các liên kết ngược của nó" -#: ../IkiWiki/Render.pm:696 +#: ../IkiWiki/Render.pm:707 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: không thể vẽ %s" @@ -1105,16 +1114,16 @@ msgstr "không thể đọc %s: %s" msgid "you must enter a wikiname (that contains alphanumerics)" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:80 +#: ../IkiWiki/Setup/Automator.pm:82 #, perl-format msgid "unsupported revision control system %s" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:106 +#: ../IkiWiki/Setup/Automator.pm:108 msgid "failed to set up the repository with ikiwiki-makerepo" msgstr "" -#: ../IkiWiki/Setup/Automator.pm:124 +#: ../IkiWiki/Setup/Automator.pm:126 #, perl-format msgid "** Disabling plugin %s, since it is failing with this message:" msgstr "" @@ -1152,19 +1161,19 @@ msgstr "cách sử dụng: ikiwiki [tùy chọn] nguồn đích" msgid " ikiwiki --setup configfile" msgstr "" -#: ../ikiwiki.in:91 +#: ../ikiwiki.in:92 msgid "usage: --set var=value" msgstr "" -#: ../ikiwiki.in:140 +#: ../ikiwiki.in:142 msgid "generating wrappers.." msgstr "đang tạo ra các bộ bao bọc.." -#: ../ikiwiki.in:195 +#: ../ikiwiki.in:205 msgid "rebuilding wiki.." msgstr "đang xây dựng lại wiki.." -#: ../ikiwiki.in:198 +#: ../ikiwiki.in:208 msgid "refreshing wiki.." msgstr "đang làm tươi wiki.." @@ -1172,38 +1181,38 @@ msgstr "đang làm tươi wiki.." msgid "Discussion" msgstr "Thảo luận" -#: ../IkiWiki.pm:507 +#: ../IkiWiki.pm:514 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:553 +#: ../IkiWiki.pm:560 msgid "cannot use multiple rcs plugins" msgstr "" -#: ../IkiWiki.pm:582 +#: ../IkiWiki.pm:589 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1255 +#: ../IkiWiki.pm:1262 #, fuzzy, perl-format msgid "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" -#: ../IkiWiki.pm:1854 +#: ../IkiWiki.pm:1877 msgid "yes" msgstr "" -#: ../IkiWiki.pm:1997 +#: ../IkiWiki.pm:2020 msgid "Sort::Naturally needed for title_natural sort" msgstr "" -#: ../IkiWiki.pm:2008 +#: ../IkiWiki.pm:2031 #, perl-format msgid "unknown sort type %s" msgstr "kiểu sắp xếp không rõ %s" -#: ../IkiWiki.pm:2027 +#: ../IkiWiki.pm:2050 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "không thể đọc %s: %s" -- cgit v1.2.3 From 7265dbe4149642fff28ad296fc6a65d692f16be1 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 2 Mar 2010 22:23:29 -0500 Subject: add news item for ikiwiki 3.20100302 --- doc/news/version_3.20091202.mdwn | 17 ----------------- doc/news/version_3.20100302.mdwn | 12 ++++++++++++ 2 files changed, 12 insertions(+), 17 deletions(-) delete mode 100644 doc/news/version_3.20091202.mdwn create mode 100644 doc/news/version_3.20100302.mdwn diff --git a/doc/news/version_3.20091202.mdwn b/doc/news/version_3.20091202.mdwn deleted file mode 100644 index 60f17fe63..000000000 --- a/doc/news/version_3.20091202.mdwn +++ /dev/null @@ -1,17 +0,0 @@ -ikiwiki 3.20091202 released with [[!toggle text="these changes"]] -[[!toggleable text=""" - * meta: Generate meta description tags even when the html scrubber is - enabled. - * meta: Allow use of DESCRIPTION in templates to get at the meta description - value. (Thanks, NicolasLimare) - * inline: Use caching of inlined pages to speed up builds of inlines that - include feeds. Speedup of about 25% for small inlines; could be much - larger for inlines of many, or complex pages. - * Added (incomplete) Turkish po file. Closes: #[556744](http://bugs.debian.org/556744) - Thanks, Recai Oktaş - * date: New plugin that allows inserting date directives that expand to - pretty-printed dates, using the same formatting as used for page - modification date display, etc. - * htmllink: Allow a title attribute to be specified. - * calendar: Add title attributes for all links in the calendars. - * calendar: Fix month wraparound error that broke in December."""]] \ No newline at end of file diff --git a/doc/news/version_3.20100302.mdwn b/doc/news/version_3.20100302.mdwn new file mode 100644 index 000000000..f439b1b23 --- /dev/null +++ b/doc/news/version_3.20100302.mdwn @@ -0,0 +1,12 @@ +ikiwiki 3.20100302 released with [[!toggle text="these changes"]] +[[!toggleable text=""" + * comments: Display number of comments in comment action link. + * Rebuild wikis on upgrade to this version to get the comment counts + added to existing pages. + * Loosen regexp, to allow empty quoted parameters in directives. + * Add force\_overwrite setting to make setup automator overwrite existing + files/directories. + * Fix admin openid detection in setup automator, and avoid prompting + for a password. + * Add new --clean option; this makes ikiwiki remove all built + files in the destdir, as well as wrappers and the .ikiwiki directory."""]] \ No newline at end of file -- cgit v1.2.3 From b849c63ce337f988fcbb08b39d197583e6fa6012 Mon Sep 17 00:00:00 2001 From: "http://dmarti.myopenid.com/" Date: Thu, 4 Mar 2010 00:15:00 +0000 Subject: --- doc/todo/salmon_protocol_for_comment_sharing.mdwn | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 doc/todo/salmon_protocol_for_comment_sharing.mdwn diff --git a/doc/todo/salmon_protocol_for_comment_sharing.mdwn b/doc/todo/salmon_protocol_for_comment_sharing.mdwn new file mode 100644 index 000000000..f4fa0c535 --- /dev/null +++ b/doc/todo/salmon_protocol_for_comment_sharing.mdwn @@ -0,0 +1,3 @@ +The Salmon protocol provides for aggregating comments across sites. If a site that syndicates a feed receives a comment on an item in that feed, it can re-post the comment to the original source. + +[[!tag wishlist]] -- cgit v1.2.3 From d72603534e677a4fbc0547ca3e5c9273d0d502ca Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 3 Mar 2010 19:48:23 -0500 Subject: comments --- doc/todo/salmon_protocol_for_comment_sharing.mdwn | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/doc/todo/salmon_protocol_for_comment_sharing.mdwn b/doc/todo/salmon_protocol_for_comment_sharing.mdwn index f4fa0c535..1e56b0a8b 100644 --- a/doc/todo/salmon_protocol_for_comment_sharing.mdwn +++ b/doc/todo/salmon_protocol_for_comment_sharing.mdwn @@ -1,3 +1,21 @@ -The Salmon protocol provides for aggregating comments across sites. If a site that syndicates a feed receives a comment on an item in that feed, it can re-post the comment to the original source. +The Salmon protocol +provides for aggregating comments across sites. If a site that syndicates +a feed receives a comment on an item in that feed, it can re-post the +comment to the original source. + +> Ikiwiki does not allow comments to be posted on items it aggregates. +> So salmon protocol support would only need to handle the comment +> receiving side of the protocol. +> +> The current draft protocol document confuses me when it starts talking +> about using OAuth in the abuse prevention section, since their example +> does not show use of OAuth, and it's not at all clear to me where the +> OAuth relationship between aggregator and original source is supposed +> to come from. +> +> Their security model, which goes on to include Webfinger, +> thirdparty validation services, XRD, and Magic Signatures, looks sorta +> like they kept throwing technology, at it, hoping something will stick. :-P +> --[[Joey]] [[!tag wishlist]] -- cgit v1.2.3 From cb4833742739ebaa2e875b97ae0035285f5b27b6 Mon Sep 17 00:00:00 2001 From: testerer Date: Thu, 4 Mar 2010 09:15:41 +0000 Subject: --- doc/index.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/index.mdwn b/doc/index.mdwn index 732cf7a89..b1ef36b2e 100644 --- a/doc/index.mdwn +++ b/doc/index.mdwn @@ -19,6 +19,8 @@ ikiwiki [[!version ]]. ## developer resources +[jup](http://www.google.de) + The [[RoadMap]] describes where the project is going. The [[forum]] is open for discussions. [[Bugs]], [[TODO]] items, [[wishlist]] items, and [[patches|patch]] @@ -26,3 +28,5 @@ can be submitted and tracked using this wiki. ikiwiki is developed by [[Joey]] and many contributors, and is [[FreeSoftware]]. + + -- cgit v1.2.3 From dd438d3a62615908adfe92868b95151b8c60506a Mon Sep 17 00:00:00 2001 From: testerer Date: Thu, 4 Mar 2010 09:19:22 +0000 Subject: --- doc/index.mdwn | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/index.mdwn b/doc/index.mdwn index b1ef36b2e..88eafa114 100644 --- a/doc/index.mdwn +++ b/doc/index.mdwn @@ -19,7 +19,6 @@ ikiwiki [[!version ]]. ## developer resources -[jup](http://www.google.de) The [[RoadMap]] describes where the project is going. The [[forum]] is open for discussions. -- cgit v1.2.3 From 54f03304b13aa961d433a2e590ae5108bd4e21b3 Mon Sep 17 00:00:00 2001 From: testerer Date: Thu, 4 Mar 2010 09:21:26 +0000 Subject: --- doc/TourBusStop.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/TourBusStop.mdwn b/doc/TourBusStop.mdwn index 8e382bd77..5317c6718 100644 --- a/doc/TourBusStop.mdwn +++ b/doc/TourBusStop.mdwn @@ -9,7 +9,7 @@ This wiki serves as the home for the ikiwiki wiki engine, providing collaborativ * You can turn any set of pages into a [[blog]] or similar news feed, * complete with RSS and Atom support. You can run your weblog on ikiwiki (and [[many_people_do|ikiwikiusers]]), run a Planet-like [[aggregator|plugins/aggregate]] for external feeds, or keep a [[TODO]] and [[bug|bugs]] list with tags for completed items. -* ikiwiki provides a wiki compiler, designed to transform your wiki content into a set of static pages. You can then serve these pages as static content. ikiwiki will not fall over during a Slashdotting, because page views don't require the ikiwiki CGI; as long as your web server can keep up, your site will survive. Furthermore, you can choose whether you want to run the ikiwiki CGI for web edits or only handle commits to the underlying version control system; you can even run ikiwiki privately and just manually copy the content to another server. So if you want to put a wiki up on a server without installing any software on that server, try ikiwiki. +* ikiwiki provides a wiki compiler, designed to transform your wiki content into a set of static pages. You can then serve these pages as static content. ikiwiki will not fall over during a Slashdotting, because page views don't require the ikiwiki CGI; as long as your web server can keep up, your [site](http://dessouse.net) will survive. Furthermore, you can choose whether you want to run the ikiwiki CGI for web edits or only handle commits to the underlying version control system; you can even run ikiwiki privately and just manually copy the content to another server. So if you want to put a wiki up on a server without installing any software on that server, try ikiwiki. ![Picture of the TourBus](http://www.wikiservice.at/image/wikibus.gif) -- cgit v1.2.3 From 07253bb25049eaed06564021accaba1b8cab210c Mon Sep 17 00:00:00 2001 From: "http://www.google.com/profiles/schmonz" Date: Thu, 4 Mar 2010 09:30:24 +0000 Subject: revert spam --- doc/TourBusStop.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/TourBusStop.mdwn b/doc/TourBusStop.mdwn index 5317c6718..8e382bd77 100644 --- a/doc/TourBusStop.mdwn +++ b/doc/TourBusStop.mdwn @@ -9,7 +9,7 @@ This wiki serves as the home for the ikiwiki wiki engine, providing collaborativ * You can turn any set of pages into a [[blog]] or similar news feed, * complete with RSS and Atom support. You can run your weblog on ikiwiki (and [[many_people_do|ikiwikiusers]]), run a Planet-like [[aggregator|plugins/aggregate]] for external feeds, or keep a [[TODO]] and [[bug|bugs]] list with tags for completed items. -* ikiwiki provides a wiki compiler, designed to transform your wiki content into a set of static pages. You can then serve these pages as static content. ikiwiki will not fall over during a Slashdotting, because page views don't require the ikiwiki CGI; as long as your web server can keep up, your [site](http://dessouse.net) will survive. Furthermore, you can choose whether you want to run the ikiwiki CGI for web edits or only handle commits to the underlying version control system; you can even run ikiwiki privately and just manually copy the content to another server. So if you want to put a wiki up on a server without installing any software on that server, try ikiwiki. +* ikiwiki provides a wiki compiler, designed to transform your wiki content into a set of static pages. You can then serve these pages as static content. ikiwiki will not fall over during a Slashdotting, because page views don't require the ikiwiki CGI; as long as your web server can keep up, your site will survive. Furthermore, you can choose whether you want to run the ikiwiki CGI for web edits or only handle commits to the underlying version control system; you can even run ikiwiki privately and just manually copy the content to another server. So if you want to put a wiki up on a server without installing any software on that server, try ikiwiki. ![Picture of the TourBus](http://www.wikiservice.at/image/wikibus.gif) -- cgit v1.2.3 From 070026f12a1e75d4f86ec224abf01fe566f739c9 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 4 Mar 2010 12:37:12 -0500 Subject: Revert spammer's whitespace changes (PS, you're banned.) --- doc/index.mdwn | 3 --- 1 file changed, 3 deletions(-) diff --git a/doc/index.mdwn b/doc/index.mdwn index 88eafa114..732cf7a89 100644 --- a/doc/index.mdwn +++ b/doc/index.mdwn @@ -19,7 +19,6 @@ ikiwiki [[!version ]]. ## developer resources - The [[RoadMap]] describes where the project is going. The [[forum]] is open for discussions. [[Bugs]], [[TODO]] items, [[wishlist]] items, and [[patches|patch]] @@ -27,5 +26,3 @@ can be submitted and tracked using this wiki. ikiwiki is developed by [[Joey]] and many contributors, and is [[FreeSoftware]]. - - -- cgit v1.2.3 From 48e64aa567fd5e1f997f9a6c201e4e6007057c04 Mon Sep 17 00:00:00 2001 From: bhobbit Date: Sun, 7 Mar 2010 08:31:57 +0000 Subject: --- doc/forum/Exception:_Unknown_function___96__this__39___.mdwn | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 doc/forum/Exception:_Unknown_function___96__this__39___.mdwn diff --git a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn new file mode 100644 index 000000000..05d4e3a0a --- /dev/null +++ b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn @@ -0,0 +1,3 @@ +I'm very excited to try out ikiwiki, since it should fit my purposes extremely well, but I'm having trouble with the search plugin. I'm pretty sure that right after I installed ikiwiki and needed dependencies, the search plugin was working fine. However, now when I try to use search, I get "Exception: Unknown function `this'" error on a blank page. I'm not sure how I should go about debugging this issue - my server's (I use Lighttpd 1.4.22) error log has no mention of the exception and there's nothing in /var/log/syslog either. + +What might be causing this exception and how I might go about debugging exceptions? -- cgit v1.2.3 From 8026c09b346c760b3f1ec4a5d1fedc71dc2843df Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 7 Mar 2010 11:40:53 -0500 Subject: response --- doc/forum/Exception:_Unknown_function___96__this__39___.mdwn | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn index 05d4e3a0a..628276b3c 100644 --- a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn +++ b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn @@ -1,3 +1,12 @@ I'm very excited to try out ikiwiki, since it should fit my purposes extremely well, but I'm having trouble with the search plugin. I'm pretty sure that right after I installed ikiwiki and needed dependencies, the search plugin was working fine. However, now when I try to use search, I get "Exception: Unknown function `this'" error on a blank page. I'm not sure how I should go about debugging this issue - my server's (I use Lighttpd 1.4.22) error log has no mention of the exception and there's nothing in /var/log/syslog either. What might be causing this exception and how I might go about debugging exceptions? + +> Appears to be coming from your xapian omega cgi binary. If you +> run `strings /usr/lib/cgi-bin/omega/omega` you can see it has +> "Exception: " in it. +> +> I don´t know what to suggest, other than upgrade/downgrade/reinstall +> xapian-omega. You could try rebuilding your wiki in case it is somehow +> caused by a problem with the xapian database. Failing everything, you +> could switch to [[google_search_plugin|plugins/google]]. --[[Joey]] -- cgit v1.2.3 From 9ba3035ebcbd17888009189131cb34033baf4c3b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 7 Mar 2010 11:44:07 -0500 Subject: update --- doc/forum/Exception:_Unknown_function___96__this__39___.mdwn | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn index 628276b3c..3cbcdc485 100644 --- a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn +++ b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn @@ -4,9 +4,11 @@ What might be causing this exception and how I might go about debugging exceptio > Appears to be coming from your xapian omega cgi binary. If you > run `strings /usr/lib/cgi-bin/omega/omega` you can see it has -> "Exception: " in it. +> "Exception: " in it, and I have found some similar (but not identical) +> error messages from xapian in a web search. > > I don´t know what to suggest, other than upgrade/downgrade/reinstall -> xapian-omega. You could try rebuilding your wiki in case it is somehow +> xapian-omega, and contacting the xapian developers for debugging. +> You could try rebuilding your wiki in case it is somehow > caused by a problem with the xapian database. Failing everything, you > could switch to [[google_search_plugin|plugins/google]]. --[[Joey]] -- cgit v1.2.3 From 904e2c2d1e3eace5f208073d424209bcd5826504 Mon Sep 17 00:00:00 2001 From: danc Date: Sun, 7 Mar 2010 22:21:35 +0000 Subject: --- doc/sandbox/danc.mdwn | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/sandbox/danc.mdwn diff --git a/doc/sandbox/danc.mdwn b/doc/sandbox/danc.mdwn new file mode 100644 index 000000000..9766475a4 --- /dev/null +++ b/doc/sandbox/danc.mdwn @@ -0,0 +1 @@ +ok -- cgit v1.2.3 From b44e42baf13a1798e723cdd5d19ffdfe2c751a4b Mon Sep 17 00:00:00 2001 From: danc Date: Sun, 7 Mar 2010 22:23:26 +0000 Subject: --- doc/sandbox.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index afd7dbeab..1a1b128e6 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -77,3 +77,4 @@ bar Hmm, can I dig it? Test +pop -- cgit v1.2.3 From 7559c7b3ae382191e8d4acde8ddd9e2323edb9a2 Mon Sep 17 00:00:00 2001 From: bhobbit Date: Mon, 8 Mar 2010 02:09:00 +0000 Subject: --- doc/forum/Exception:_Unknown_function___96__this__39___.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn index 3cbcdc485..94de18ceb 100644 --- a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn +++ b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn @@ -12,3 +12,5 @@ What might be causing this exception and how I might go about debugging exceptio > You could try rebuilding your wiki in case it is somehow > caused by a problem with the xapian database. Failing everything, you > could switch to [[google_search_plugin|plugins/google]]. --[[Joey]] + +>> Thanks, Joey. With your help I was able to figure out what was wrong. It's a fun little bug (or feature): the title of my wiki had string `$this` in title and that's what was causing the omega binary to choke. My wiki's title was inserted without escaping into the query template used by omega. Omega treated `$this` in the title as a function name and threw an exception because no such function was defined. To avoid this behavior, I used an html entity in the title, so `$this` became `$this`. I don't think that the wiki title should be inserted into the template without escaping - it can produce an error that's not trivial to debug. If users want to modify the html in the title, they should be editing respective templates, not typing html in the wiki title input. What do you think? --[[dkobozev]] -- cgit v1.2.3 From 12b5aec2985ece32ee640f7d90feaaac464f795d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 7 Mar 2010 22:47:32 -0500 Subject: response --- doc/forum/Exception:_Unknown_function___96__this__39___.mdwn | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn index 94de18ceb..7db12c34a 100644 --- a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn +++ b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn @@ -14,3 +14,10 @@ What might be causing this exception and how I might go about debugging exceptio > could switch to [[google_search_plugin|plugins/google]]. --[[Joey]] >> Thanks, Joey. With your help I was able to figure out what was wrong. It's a fun little bug (or feature): the title of my wiki had string `$this` in title and that's what was causing the omega binary to choke. My wiki's title was inserted without escaping into the query template used by omega. Omega treated `$this` in the title as a function name and threw an exception because no such function was defined. To avoid this behavior, I used an html entity in the title, so `$this` became `$this`. I don't think that the wiki title should be inserted into the template without escaping - it can produce an error that's not trivial to debug. If users want to modify the html in the title, they should be editing respective templates, not typing html in the wiki title input. What do you think? --[[dkobozev]] + +>>> Sounds like a bug in omega, and one that probably would affect other +>>> users of omega too. Ikiwiki could work around it by pre-escaping +>>> data before passing it to xapian. I have not quite managed to reproduce it though; +>>> tried setting a page title to '$this' and 'foo $this'. +>>> That's with version 1.0.18 of omega. +>>> --[[Joey]] -- cgit v1.2.3 From e7755506d10dfd03cc615d74aeaa3cec156631ac Mon Sep 17 00:00:00 2001 From: bhobbit Date: Mon, 8 Mar 2010 04:53:05 +0000 Subject: --- doc/forum/Exception:_Unknown_function___96__this__39___.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn index 7db12c34a..cb75895c8 100644 --- a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn +++ b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn @@ -21,3 +21,5 @@ What might be causing this exception and how I might go about debugging exceptio >>> tried setting a page title to '$this' and 'foo $this'. >>> That's with version 1.0.18 of omega. >>> --[[Joey]] + +>>>> I tried it with both omega 1.0.13 and omega 1.0.18 and the issue is present in both. If I view the contents of {$srcdir}/.ikiwiki/xapian/templates/query, I can see that the wiki title is inserted verbatim and there are calls to `$setmap`, `$set` and `$def` etc in the template. --[[dkobozev]] -- cgit v1.2.3 From 84d41fb86707890ae3bebe5f82fd438715f88c44 Mon Sep 17 00:00:00 2001 From: Thiana Date: Tue, 9 Mar 2010 00:07:17 +0000 Subject: --- doc/ikiwiki/directive/map/discussion.mdwn | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/ikiwiki/directive/map/discussion.mdwn b/doc/ikiwiki/directive/map/discussion.mdwn index 062b4267a..075b91b4d 100644 --- a/doc/ikiwiki/directive/map/discussion.mdwn +++ b/doc/ikiwiki/directive/map/discussion.mdwn @@ -1,3 +1,12 @@ +### Sorting + +Is there a way to have the generated maps sorted by *title* instead of *filename* when show=title is used? +Thanks + +-- Thiana + +---- + Question: Is there a way to generate a listing that shows *both* title and description meta information? Currently, a \[\[!map ...]] shows only one of the two, but I'd like to generate a navigation that looks like a description list. For example: * This is the title meta information. -- cgit v1.2.3 From b9e7064f70980b58b1bae754bee7fe3eff5fc84d Mon Sep 17 00:00:00 2001 From: Thiana Date: Tue, 9 Mar 2010 00:42:38 +0000 Subject: Added use of tag directive so I can play with tags in the sandbox. --- doc/templates/plugin.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/templates/plugin.mdwn b/doc/templates/plugin.mdwn index c1d1974d6..d62c87924 100644 --- a/doc/templates/plugin.mdwn +++ b/doc/templates/plugin.mdwn @@ -6,6 +6,7 @@ Enabled by default: yesno
Included in [[/plugins/goodstuff]]: [[!if test="backlink(plugins/goodstuff)" all=no then="""yes""" else="""no"""]]
Currently enabled: [[!if test="enabled()" then="yes" else="no"]]
+[[!tag plugin ]] [[!if test="sourcepage(plugins/contrib/*)" then="""[[!meta title=" (third party plugin)"]]"""]] [[!tag plugins/type/core]] -- cgit v1.2.3 From 9d6a755d3983d1d7cd1c67c923c8907e09108a70 Mon Sep 17 00:00:00 2001 From: Thiana Date: Tue, 9 Mar 2010 00:50:45 +0000 Subject: --- doc/plugins/conditional/discussion.mdwn | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/plugins/conditional/discussion.mdwn b/doc/plugins/conditional/discussion.mdwn index 629d05940..e34df70a1 100644 --- a/doc/plugins/conditional/discussion.mdwn +++ b/doc/plugins/conditional/discussion.mdwn @@ -1,3 +1,11 @@ +## Conditional broken? + +Using \[\[!if test="tagged(plugin)" then="= Tagged as plugin =" else="*No plugins found*"]] on this wiki *should* present the 'Tagged as plugin' heading, instead it emits 'no plugins found'. Is the conditional plugin currently broken for tags or am I misusing it? Thanks. + +-- Thiana + +---- + Would there be a way for this plugin to emit fewer blank lines (i.e. *none at all*)? For example, having a look at [this page](http://www.bddebian.com/~wiki/Hurd/)'s sidebar. -- cgit v1.2.3 From 2af6a32aba4a7f96f63b3dfc176e1d4b40488a34 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 8 Mar 2010 20:24:02 -0500 Subject: add link --- doc/ikiwiki/directive/map/discussion.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/ikiwiki/directive/map/discussion.mdwn b/doc/ikiwiki/directive/map/discussion.mdwn index 075b91b4d..f6eaa6b80 100644 --- a/doc/ikiwiki/directive/map/discussion.mdwn +++ b/doc/ikiwiki/directive/map/discussion.mdwn @@ -5,6 +5,8 @@ Thanks -- Thiana +> [[bugs/map_sorts_by_pagename_and_not_title_when_show__61__title_is_used]] --[[Joey]] + ---- Question: Is there a way to generate a listing that shows *both* title and description meta information? Currently, a \[\[!map ...]] shows only one of the two, but I'd like to generate a navigation that looks like a description list. For example: -- cgit v1.2.3 From 8f13e52a0d9458470753d8fde13e1e19bb872384 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 8 Mar 2010 20:24:43 -0500 Subject: Revert "Added use of tag directive so I can play with tags in the sandbox." This reverts commit b9e7064f70980b58b1bae754bee7fe3eff5fc84d. Er, no, I don't want a broken tag link on every plugin page, really. --- doc/templates/plugin.mdwn | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/templates/plugin.mdwn b/doc/templates/plugin.mdwn index d62c87924..c1d1974d6 100644 --- a/doc/templates/plugin.mdwn +++ b/doc/templates/plugin.mdwn @@ -6,7 +6,6 @@ Enabled by default: yesno
Included in [[/plugins/goodstuff]]: [[!if test="backlink(plugins/goodstuff)" all=no then="""yes""" else="""no"""]]
Currently enabled: [[!if test="enabled()" then="yes" else="no"]]
-[[!tag plugin ]] [[!if test="sourcepage(plugins/contrib/*)" then="""[[!meta title=" (third party plugin)"]]"""]] [[!tag plugins/type/core]] -- cgit v1.2.3 From 376d0dc9b76a384bc505b4ebc8c70dde4134c220 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 8 Mar 2010 20:27:30 -0500 Subject: response --- doc/plugins/conditional/discussion.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/plugins/conditional/discussion.mdwn b/doc/plugins/conditional/discussion.mdwn index e34df70a1..09e3df923 100644 --- a/doc/plugins/conditional/discussion.mdwn +++ b/doc/plugins/conditional/discussion.mdwn @@ -4,6 +4,10 @@ Using \[\[!if test="tagged(plugin)" then="= Tagged as plugin =" else="*No plugin -- Thiana +> This wiki has no page named "plugin", so nothing links to it; tags are a species of link +> so tagging a large number of pages with a tag that doesn't exist (which change has +> been reverted) doesn't make the pagespec match. It would if the tag's page existed. --[[Joey]] + ---- Would there be a way for this plugin to emit fewer blank lines (i.e. *none at all*)? -- cgit v1.2.3 From 857bcb33eeaa2bc503630646e5a01376f0e8b5b5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 8 Mar 2010 20:30:29 -0500 Subject: response --- doc/forum/Exception:_Unknown_function___96__this__39___.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn index cb75895c8..ac4d7ed12 100644 --- a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn +++ b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn @@ -23,3 +23,7 @@ What might be causing this exception and how I might go about debugging exceptio >>> --[[Joey]] >>>> I tried it with both omega 1.0.13 and omega 1.0.18 and the issue is present in both. If I view the contents of {$srcdir}/.ikiwiki/xapian/templates/query, I can see that the wiki title is inserted verbatim and there are calls to `$setmap`, `$set` and `$def` etc in the template. --[[dkobozev]] + +>>>>> I don't see how that's relevant. It would help if you showed me +>>>>> exactly something that could be inserted into a page to cause the +>>>>> problem. --[[Joey]] -- cgit v1.2.3 From 20635d3610619814e3c36bec913d53cb83d41640 Mon Sep 17 00:00:00 2001 From: Thiana Date: Tue, 9 Mar 2010 03:55:28 +0000 Subject: Clarification request --- doc/plugins/conditional/discussion.mdwn | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/doc/plugins/conditional/discussion.mdwn b/doc/plugins/conditional/discussion.mdwn index 09e3df923..6e84fdfc1 100644 --- a/doc/plugins/conditional/discussion.mdwn +++ b/doc/plugins/conditional/discussion.mdwn @@ -8,6 +8,19 @@ Using \[\[!if test="tagged(plugin)" then="= Tagged as plugin =" else="*No plugin > so tagging a large number of pages with a tag that doesn't exist (which change has > been reverted) doesn't make the pagespec match. It would if the tag's page existed. --[[Joey]] +>> So if I understand this correctly... Assuming the tags Tag_A and Tag_B, the existence of +>> @wiki-home@/tags/Tag_A.creole, and a number of files with a \[\[!tag Tag_A Tag_B]] the +>> following is correct? +>> +>> * \[\[!if test="tagged(Tag_A)" then="OK" else="Fail"]] => OK +>> * \[\[!if test="tagged(Tag_B)" then="OK" else="Fail"]] => Fail +>> * \[\[!if test="tagged(Tag_A) and tagged(Tag_B)" then="OK" else="Fail"]] => Fail +>> +>> Is that the expected behaviour? If so, that's not what I'm seeing here since they all result +>> in a Fail. If not, what exactly is wrong with those conditionals? Thanks. +>> +>> -- Thiana + ---- Would there be a way for this plugin to emit fewer blank lines (i.e. *none at all*)? -- cgit v1.2.3 From 9e603d2640758d8b4c0420f2984ffe21bd78c7d6 Mon Sep 17 00:00:00 2001 From: capitaine Date: Tue, 9 Mar 2010 05:30:53 +0000 Subject: --- doc/bugs/bestlink_returns_deleted_pages.mdwn | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/bugs/bestlink_returns_deleted_pages.mdwn b/doc/bugs/bestlink_returns_deleted_pages.mdwn index 874f18ead..d3c5c8012 100644 --- a/doc/bugs/bestlink_returns_deleted_pages.mdwn +++ b/doc/bugs/bestlink_returns_deleted_pages.mdwn @@ -28,7 +28,7 @@ won't it make sense for bestlink() to check %pagesources first? --[[harishcm]] > maybe by keeping a copy of the old backlinks info, then that fix could be > applied here too. --[[Joey]] ->> Cool that was fast! Well at least half the bug is solved :) For now I'll +>> Cool that was fast! Well at least half the college essay bug is solved :) For now I'll >> probably try using a workaround if using bestlink within the needsbuild >> or scan hooks. Maybe by testing if pagemtime equals zero. --[[harishcm]] @@ -48,8 +48,8 @@ won't it make sense for bestlink() to check %pagesources first? --[[harishcm]] use IkiWiki 3.00; sub import { - hook(type => "getsetup", id => "bestlinkbug", call => \&getsetup); - hook(type => "needsbuild", id => "bestlinkbug", call => \&needsbuild); + hook(type => "getsetup", id => "bestlinkbug", call => &getsetup); + hook(type => "needsbuild", id => "bestlinkbug", call => &needsbuild); } sub getsetup () { -- cgit v1.2.3 From 9ac58f4b88654846e2ffdba5190a1785c3ae6c88 Mon Sep 17 00:00:00 2001 From: capitaine Date: Tue, 9 Mar 2010 05:34:52 +0000 Subject: --- doc/bugs.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/bugs.mdwn b/doc/bugs.mdwn index f634b6e78..f44cfdca2 100644 --- a/doc/bugs.mdwn +++ b/doc/bugs.mdwn @@ -1,5 +1,5 @@ If you've found a bug in ikiwiki, post about it here. [[TODO]] items go -elsewhere. Link items to [[bugs/done]] when done. +elsewhere. Link college essay items to [[bugs/done]] when done. Also see the [Debian bugs](http://bugs.debian.org/ikiwiki). -- cgit v1.2.3 From 312b7d05f82045f400931c8e110efb7d76b69eed Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 9 Mar 2010 00:40:51 -0500 Subject: Revert spam --- doc/bugs.mdwn | 2 +- doc/bugs/bestlink_returns_deleted_pages.mdwn | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/bugs.mdwn b/doc/bugs.mdwn index f44cfdca2..f634b6e78 100644 --- a/doc/bugs.mdwn +++ b/doc/bugs.mdwn @@ -1,5 +1,5 @@ If you've found a bug in ikiwiki, post about it here. [[TODO]] items go -elsewhere. Link college essay items to [[bugs/done]] when done. +elsewhere. Link items to [[bugs/done]] when done. Also see the [Debian bugs](http://bugs.debian.org/ikiwiki). diff --git a/doc/bugs/bestlink_returns_deleted_pages.mdwn b/doc/bugs/bestlink_returns_deleted_pages.mdwn index d3c5c8012..874f18ead 100644 --- a/doc/bugs/bestlink_returns_deleted_pages.mdwn +++ b/doc/bugs/bestlink_returns_deleted_pages.mdwn @@ -28,7 +28,7 @@ won't it make sense for bestlink() to check %pagesources first? --[[harishcm]] > maybe by keeping a copy of the old backlinks info, then that fix could be > applied here too. --[[Joey]] ->> Cool that was fast! Well at least half the college essay bug is solved :) For now I'll +>> Cool that was fast! Well at least half the bug is solved :) For now I'll >> probably try using a workaround if using bestlink within the needsbuild >> or scan hooks. Maybe by testing if pagemtime equals zero. --[[harishcm]] @@ -48,8 +48,8 @@ won't it make sense for bestlink() to check %pagesources first? --[[harishcm]] use IkiWiki 3.00; sub import { - hook(type => "getsetup", id => "bestlinkbug", call => &getsetup); - hook(type => "needsbuild", id => "bestlinkbug", call => &needsbuild); + hook(type => "getsetup", id => "bestlinkbug", call => \&getsetup); + hook(type => "needsbuild", id => "bestlinkbug", call => \&needsbuild); } sub getsetup () { -- cgit v1.2.3 From fa6d082955dbc75de62839e285c0d441cd83acb1 Mon Sep 17 00:00:00 2001 From: bhobbit Date: Tue, 9 Mar 2010 10:50:03 +0000 Subject: --- ...eption:_Unknown_function___96__this__39___.mdwn | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn index ac4d7ed12..4f94b77bd 100644 --- a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn +++ b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn @@ -27,3 +27,26 @@ What might be causing this exception and how I might go about debugging exceptio >>>>> I don't see how that's relevant. It would help if you showed me >>>>> exactly something that could be inserted into a page to cause the >>>>> problem. --[[Joey]] + +>>>>>> Correct me if I'm wrong: ikiwiki generates an Omega template from its own templates, such as searchquery.tmpl and puts it into {$srcdir}/.ikiwiki/xapian/templates/query. Omega has its own template syntax, where function names are prefixed with dollar signs (`$`). So, when I call my wiki `$foobar`, ikiwiki generates an Omega template that looks like this snippet: + +
+ + +
+ $setmap{prefix,title,S} + $setmap{prefix,link,XLINK} + $set{thousand,$.}$set{decimal,.}$setmap{BN,,Any Country,uk,England,fr,France} + ${ + $def{PREV, + $if{$ne{$topdoc,0},, + } + +>>>>>> So `$foobar` clashes with Omega's template tags. Does this help? -- cgit v1.2.3 From 6d27bbd026ebed85f8501b6b4daefaba73061574 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 9 Mar 2010 19:55:19 -0500 Subject: Fix utf8 issues in calls to md5_hex. This prevented comments containing some utf-8, including euro sign, from being submitted. Since md5_hex is a C implementation, the string has to be converted from perl's internal encoding to utf-8 when it is called. Some utf-8 happened to work before, apparently by accident. Note that this will change the checksums returned. unique_comment_location is only used when posting comments, so the checksum does not need to be stable there. I only changed page_to_id for completeness; it is passed a comment page name, and they can currently never contain utf-8. In teximg, the bug could perhaps be triggered if the tex source contained utf-8. If that happens, the checksum will change, and some extra work might be performed on upgrade to rebuild the image. --- IkiWiki/Plugin/comments.pm | 4 ++-- IkiWiki/Plugin/teximg.pm | 3 ++- debian/changelog | 6 ++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 8f8472f07..bbf850a17 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -839,7 +839,7 @@ sub unique_comment_location ($$$) { eval q{use Digest::MD5 'md5_hex'}; error($@) if $@; - my $content_md5=md5_hex(shift); + my $content_md5=md5_hex(Encode::encode_utf8(shift)); my $dir=shift; @@ -862,7 +862,7 @@ sub page_to_id ($) { eval q{use Digest::MD5 'md5_hex'}; error($@) if $@; - return "comment-".md5_hex($page); + return "comment-".md5_hex(Encode::encode_utf8(($page)); } package IkiWiki::PageSpec; diff --git a/IkiWiki/Plugin/teximg.pm b/IkiWiki/Plugin/teximg.pm index 0aaa79698..521af499f 100644 --- a/IkiWiki/Plugin/teximg.pm +++ b/IkiWiki/Plugin/teximg.pm @@ -8,6 +8,7 @@ use strict; use Digest::MD5 qw(md5_hex); use File::Temp qw(tempdir); use HTML::Entities; +use Encode; use IkiWiki 3.00; my $default_prefix = <{page} . "/$digest.png"; my $imglog = $params->{page} . "/$digest.log"; diff --git a/debian/changelog b/debian/changelog index c0f99291f..d1253c079 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +ikiwiki (3.20100303) UNRELEASED; urgency=low + + * Fix utf8 issues in calls to md5_hex. + + -- Joey Hess Tue, 09 Mar 2010 19:46:35 -0500 + ikiwiki (3.20100302) unstable; urgency=low * comments: Display number of comments in comment action link. -- cgit v1.2.3 From 6eb71547dd5ba29d18bf8f19213e58e5d785a015 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 9 Mar 2010 19:55:50 -0500 Subject: typo --- IkiWiki/Plugin/comments.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index bbf850a17..ceb7c7836 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -855,7 +855,7 @@ sub unique_comment_location ($$$) { sub page_to_id ($) { # Converts a comment page name into a unique, legal html id - # addtibute value, that can be used as an anchor to link to the + # attribute value, that can be used as an anchor to link to the # comment. my $page=shift; -- cgit v1.2.3 From f64c04040717baf89f0583b59ded4819c5be29c6 Mon Sep 17 00:00:00 2001 From: jwalzer Date: Wed, 10 Mar 2010 15:26:27 +0000 Subject: suggesting List of tags when editing content (wishlist) --- ...shlist-discussion:_Editformular_showing_existing_tags.mdwn | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 doc/forum/wishlist-discussion:_Editformular_showing_existing_tags.mdwn diff --git a/doc/forum/wishlist-discussion:_Editformular_showing_existing_tags.mdwn b/doc/forum/wishlist-discussion:_Editformular_showing_existing_tags.mdwn new file mode 100644 index 000000000..98e4280cd --- /dev/null +++ b/doc/forum/wishlist-discussion:_Editformular_showing_existing_tags.mdwn @@ -0,0 +1,11 @@ +# How about: + +having a list of all existing tags in the Edit-Formular as a selectionbox? + +Assume I have tagbase=/tags/ and for every tag I have given to articles an existing page there. + +Would it be possible to list all these tags together with the Formular, as selectionbox. +Maybe even with parsing of the content and preselecting the tags, that are given in the article and vice-versa when selecting the fields then also generating the \[\[\!tag\]\]-sourcecode ? + +this would need a bit JS-work and somehow on compiletime we need to put the list of tags somewhere, where the cgi could read them from. +This way, even a pagespec would suffice to determine the usable list of tags and not only the tagbase-variable. -- cgit v1.2.3 From 2f2fbdf3a32ae7c7132441ad90c67553f80c306d Mon Sep 17 00:00:00 2001 From: "http://jmtd.livejournal.com/" Date: Wed, 10 Mar 2010 16:07:55 +0000 Subject: tag2 --- .../wishlist-discussion:_Editformular_showing_existing_tags.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/forum/wishlist-discussion:_Editformular_showing_existing_tags.mdwn b/doc/forum/wishlist-discussion:_Editformular_showing_existing_tags.mdwn index 98e4280cd..49c55e20e 100644 --- a/doc/forum/wishlist-discussion:_Editformular_showing_existing_tags.mdwn +++ b/doc/forum/wishlist-discussion:_Editformular_showing_existing_tags.mdwn @@ -9,3 +9,7 @@ Maybe even with parsing of the content and preselecting the tags, that are given this would need a bit JS-work and somehow on compiletime we need to put the list of tags somewhere, where the cgi could read them from. This way, even a pagespec would suffice to determine the usable list of tags and not only the tagbase-variable. + +> I think this would be very hard to achieve with the current tag plugin, due to the nature of its implementation. +> +> I've had a "tag2" plugin on the go for a while which supports this. It's in a very rough stage but I'll try to find it and upload it somewhere. -- [[Jon]] -- cgit v1.2.3 From 9f82e93fca0da9c325ebf907d7dab00bd5baa3b1 Mon Sep 17 00:00:00 2001 From: dkowis Date: Wed, 10 Mar 2010 19:13:50 +0000 Subject: --- doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn diff --git a/doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn b/doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn new file mode 100644 index 000000000..4c819816e --- /dev/null +++ b/doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn @@ -0,0 +1,16 @@ +In the template for ikiwiki's recent changes page + + /usr/share/ikiwiki/templates/change.tmpl + +there is a missing tag after the + + + +This results in the recentchanges/ page being invalid and rendering quite horrifyingly in Internet Exploder. + +[I'm running](http://wiki.shlrm.org) (linked so you can see the one I'm running if you need to) the latest version of ikiwiki, and I note that it's broken on [ikiwiki.info](http://validator.w3.org/check?uri=http%3A%2F%2Fikiwiki.info%2Frecentchanges%2F&charset=%28detect+automatically%29&doctype=Inline&group=0&user-agent=W3C_Validator%2F1.767) too :) + +[This one on debian](https://www.icanttype.org/recentchanges/) is somehow [valid](http://validator.w3.org/check?uri=https%3A%2F%2Fwww.icanttype.org%2F%2Frecentchanges%2F&charset=%28detect+automatically%29&doctype=Inline&group=0&user-agent=W3C_Validator%2F1.767), although it's using the same template. Perhaps there's an additional scrubbing going on his end. + +Thanks, +David -- cgit v1.2.3 From 1c03cf9ba2aaa4ac6d28eb1d13c0015809fad2c1 Mon Sep 17 00:00:00 2001 From: dkowis Date: Wed, 10 Mar 2010 19:27:26 +0000 Subject: noted that I fixed the template on my box --- doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn b/doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn index 4c819816e..007d763b5 100644 --- a/doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn +++ b/doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn @@ -14,3 +14,5 @@ This results in the recentchanges/ page being invalid and rendering quite horrif Thanks, David + +PS: I have fixed the template by hand on my server, so it will validate, however ikiwiki.info will not. -- cgit v1.2.3 From 03c2cf94e28ac8b90e92dbd18181d52f2338385c Mon Sep 17 00:00:00 2001 From: "http://adam.shand.net/" Date: Thu, 11 Mar 2010 05:32:00 +0000 Subject: --- doc/plugins/getsource/discussion.mdwn | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/plugins/getsource/discussion.mdwn diff --git a/doc/plugins/getsource/discussion.mdwn b/doc/plugins/getsource/discussion.mdwn new file mode 100644 index 000000000..45a1d62b5 --- /dev/null +++ b/doc/plugins/getsource/discussion.mdwn @@ -0,0 +1 @@ +It would be very cool if this plugin was enabled by default. One of the best ways to learn how to do various advanced things is to be able to "view source" on other wiki's which do things you like. -- [[AdamShand]] -- cgit v1.2.3 From 9b656e27ea4045d72698949f19fae120c51b7e3c Mon Sep 17 00:00:00 2001 From: JoshTriplett Date: Thu, 11 Mar 2010 07:42:07 +0000 Subject: Add my homepage. --- doc/ikiwikiusers.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 345604c36..bd9bee3ab 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -141,6 +141,7 @@ Personal sites and blogs * [Mukund's homepage](http://www.mukund.org/) * [Andreas's homepage](http://0x7.ch/) - Ikiwiki, Subversion and CSS template * [Chris Dombroski's boring bliki](https://www.icanttype.org/) +* [Josh Triplett's homepage](http://joshtriplett.org/) - Git backend with the CGI disabled, to publish a static site with the convenience of ikiwiki. Please feel free to add your own ikiwiki site! -- cgit v1.2.3 From d021a1ddbc1890dbeb904711a581ac4fc084545b Mon Sep 17 00:00:00 2001 From: JoshTriplett Date: Thu, 11 Mar 2010 07:44:56 +0000 Subject: Add Serialist, and the amusing/frightening way it uses ikiwiki. --- doc/ikiwikiusers.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index bd9bee3ab..8e567ec0d 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -53,6 +53,7 @@ Projects & Organizations * [IPOL Image Processing On Line](http://www.ipol.im) * [Debian Costa Rica](http://cr.debian.net/) * [Fvwm Wiki](http://fvwmwiki.xteddy.org) +* [Serialist](http://serialist.net/)'s static pages (documentation, blog). We actually have ikiwiki generate its static content as HTML fragments using a modified page.tmpl template, and then the FastCGI powering our site grabs those fragments and embeds them in the standard dynamic site template. Personal sites and blogs ======================== -- cgit v1.2.3 From b72757b6aecfd2a5d8d3789bc0cdb6fb5783f8fb Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 11 Mar 2010 18:15:44 +0000 Subject: Add missing to change.tmpl COMMITDATE, fixing well-formedness This only affects people who don't use either htmltidy or htmlbalance. Bug: http://ikiwiki.info/bugs/templateForRecentChangesMissingCloseSpan/ --- templates/change.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/change.tmpl b/templates/change.tmpl index 0e61a80f4..c9f6ce42b 100644 --- a/templates/change.tmpl +++ b/templates/change.tmpl @@ -27,7 +27,7 @@
Commit type:

Date:
- +
-- cgit v1.2.3 From e4ed8a51c1eb7bd80f416dcc59231a13e3d1255e Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Thu, 11 Mar 2010 18:20:10 +0000 Subject: fix in a branch --- doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn b/doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn index 007d763b5..536af3473 100644 --- a/doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn +++ b/doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn @@ -16,3 +16,9 @@ Thanks, David PS: I have fixed the template by hand on my server, so it will validate, however ikiwiki.info will not. + +> [[!template id="gitbranch" branch=smcv/trivia author="[[smcv]]"]] [[!tag patch]] +> Enabling either [[plugins/htmltidy]] or [[plugins/htmlbalance]] will automatically fix unbalanced +> markup like this; using [[plugins/comments]] without having one or other of those is a bad idea +> from the point of view of avoiding comment forgery, which is probably why icanttype.org works +> correctly. Anyway, I've fixed this in a branch: Joey, care to review smcv/trivia? --[[smcv]] -- cgit v1.2.3 From ac3aac560f74457ded48ba3b5a14d0bbbf9b6d92 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Mar 2010 15:44:10 -0500 Subject: moderatedcomments: Added moderate_pagespec * moderatedcomments: Added moderate_pagespec that can be used to control which users or comment locations are moderated. This can be used, just for example, to moderate http://myopenid.com/* if you're getting a lot of spammers from one particular openid provider (who should perhaps answer your emails about them), while not moderating other users. * moderatedcomments: The moderate_users setting is deprecated. Instead, set moderate_pagespec to "!admin()" or "user(*)" instead. --- IkiWiki/Plugin/moderatedcomments.pm | 37 ++++++++++++++++++++++++++++--------- debian/changelog | 8 ++++++++ doc/plugins/moderatedcomments.mdwn | 8 +++++--- 3 files changed, 41 insertions(+), 12 deletions(-) diff --git a/IkiWiki/Plugin/moderatedcomments.pm b/IkiWiki/Plugin/moderatedcomments.pm index afe1ceedf..b0a328a06 100644 --- a/IkiWiki/Plugin/moderatedcomments.pm +++ b/IkiWiki/Plugin/moderatedcomments.pm @@ -17,10 +17,11 @@ sub getsetup () { rebuild => 0, section => "auth", }, - moderate_users => { - type => 'boolean', - example => 1, - description => 'Moderate comments of logged-in users?', + moderate_pagespec => { + type => 'pagespec', + example => 'user(http://*)', + description => 'PageSpec matching users or comment locations to moderate', + link => 'ikiwiki/PageSpec', safe => 1, rebuild => 0, }, @@ -32,14 +33,32 @@ sub checkcontent (@) { # only handle comments return undef unless pagespec_match($params{page}, "postcomment(*)", location => $params{page}); + + # backwards compatability + if (exists $config{moderate_users} && + ! exists $config{moderate_pagespec}) { + $config{moderate_pagespec} = $config{moderate_users} + ? "!admin()" + : "!user(*)"; + } + + # default is to moderate all except admins + if (! exists $config{moderate_pagespec}) { + $config{moderate_pagespec}="!admin()"; + } - # admins and maybe users can comment w/o moderation my $session=$params{session}; my $user=$session->param("name") if $session; - return undef if defined $user && (IkiWiki::is_admin($user) || - (exists $config{moderate_users} && ! $config{moderate_users})); - - return gettext("comment needs moderation"); + if (pagespec_match($params{page}, $config{moderate_pagespec}, + location => $params{page}, + (defined $user ? (user => $user) : ()), + (defined $ENV{REMOTE_ADDR} ? (ip => $ENV{REMOTE_ADDR}) : ()), + )) { + return gettext("comment needs moderation"); + } + else { + return undef; + } } 1 diff --git a/debian/changelog b/debian/changelog index d1253c079..c58e612db 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,14 @@ ikiwiki (3.20100303) UNRELEASED; urgency=low * Fix utf8 issues in calls to md5_hex. + * moderatedcomments: Added moderate_pagespec that can be used + to control which users or comment locations are moderated. + This can be used, just for example, to moderate http://myopenid.com/* + if you're getting a lot of spammers from one particular openid + provider (who should perhaps answer your emails about them), + while not moderating other users. + * moderatedcomments: The moderate_users setting is deprecated. Instead, + set moderate_pagespec to "!admin()" or "user(*)" instead. -- Joey Hess Tue, 09 Mar 2010 19:46:35 -0500 diff --git a/doc/plugins/moderatedcomments.mdwn b/doc/plugins/moderatedcomments.mdwn index 97924d742..c29b0b052 100644 --- a/doc/plugins/moderatedcomments.mdwn +++ b/doc/plugins/moderatedcomments.mdwn @@ -5,6 +5,8 @@ This plugin causes [[comments]] to be held for manual moderation. Admins can access the comment moderation queue via their preferences page. By default, all comments made by anyone who is not an admin will be held -for moderation. The `moderate_users` setting can be set to false to avoid -moderating comments of logged-in users, while still moderating anonymous -comments. +for moderation. The `moderate_pagespec` setting can be used to specify a +[[ikiwiki/PageSpec]] to match comments and users who should be moderated. +For example, to avoid moderating comments from logged-in users, set +`moderate_pagespec` to "!user(*)". Or to moderate everyone except for +admins, set it to "!admin(*)". -- cgit v1.2.3 From f259f33a0ad4858ce33f458148f1733351b91d92 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Mar 2010 15:49:48 -0500 Subject: Fix missing span on recentchanges page template. --- debian/changelog | 1 + doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn | 2 ++ 2 files changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index c58e612db..6b5671e3e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,6 +9,7 @@ ikiwiki (3.20100303) UNRELEASED; urgency=low while not moderating other users. * moderatedcomments: The moderate_users setting is deprecated. Instead, set moderate_pagespec to "!admin()" or "user(*)" instead. + * Fix missing span on recentchanges page template. -- Joey Hess Tue, 09 Mar 2010 19:46:35 -0500 diff --git a/doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn b/doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn index 536af3473..5c322991a 100644 --- a/doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn +++ b/doc/bugs/templateForRecentChangesMissingCloseSpan.mdwn @@ -22,3 +22,5 @@ PS: I have fixed the template by hand on my server, so it will validate, however > markup like this; using [[plugins/comments]] without having one or other of those is a bad idea > from the point of view of avoiding comment forgery, which is probably why icanttype.org works > correctly. Anyway, I've fixed this in a branch: Joey, care to review smcv/trivia? --[[smcv]] + +[[done]], thanks guys --[[Joey]] -- cgit v1.2.3 From 45dfdcb2571953be6815342510b9bb2a73ce59e7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Mar 2010 16:10:04 -0500 Subject: search: Avoid '$' in the wikiname appearing unescaped on omega's query template, where it might crash omega. Really, a more general fix, this deals with any $ that might appear on the misctemplate. --- IkiWiki/Plugin/search.pm | 15 +++++++++++++-- debian/changelog | 2 ++ .../Exception:_Unknown_function___96__this__39___.mdwn | 6 ++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm index fb68396a1..c0e8703d8 100644 --- a/IkiWiki/Plugin/search.pm +++ b/IkiWiki/Plugin/search.pm @@ -110,6 +110,7 @@ sub index (@) { # data used by omega # Decode html entities in it, since omega re-encodes them. eval q{use HTML::Entities}; + error $@ if $@; $doc->set_data( "url=".urlto($params{page}, "")."\n". "sample=".decode_entities($sample)."\n". @@ -214,9 +215,19 @@ sub setupfiles () { writefile("omega.conf", $config{wikistatedir}."/xapian", "database_dir .\n". "template_dir ./templates\n"); + + # Avoid omega interpreting anything in the misctemplate + # as an omegascript command. + my $misctemplate=IkiWiki::misctemplate(gettext("search"), "\0"); + eval q{use HTML::Entities}; + error $@ if $@; + $misctemplate=encode_entities($misctemplate, '\$'); + + my $querytemplate=readfile(IkiWiki::template_file("searchquery.tmpl")); + $misctemplate=~s/\0/$querytemplate/; + writefile("query", $config{wikistatedir}."/xapian/templates", - IkiWiki::misctemplate(gettext("search"), - readfile(IkiWiki::template_file("searchquery.tmpl")))); + $misctemplate); $setup=1; } } diff --git a/debian/changelog b/debian/changelog index 6b5671e3e..6828e6b3f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,8 @@ ikiwiki (3.20100303) UNRELEASED; urgency=low * moderatedcomments: The moderate_users setting is deprecated. Instead, set moderate_pagespec to "!admin()" or "user(*)" instead. * Fix missing span on recentchanges page template. + * search: Avoid '$' in the wikiname appearing unescaped on omega's + query template, where it might crash omega. -- Joey Hess Tue, 09 Mar 2010 19:46:35 -0500 diff --git a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn index 4f94b77bd..035247100 100644 --- a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn +++ b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn @@ -50,3 +50,9 @@ What might be causing this exception and how I might go about debugging exceptio } >>>>>> So `$foobar` clashes with Omega's template tags. Does this help? + +>>>>>>> Ahh. I had somehow gotten it into my head that you were talking +>>>>>>> about the title of a single page, not of the whole wiki. But +>>>>>>> you were clear all along it was the wiki title. Sorry for +>>>>>>> misunderstanding. I've put in a complete fix for this problem. +>>>>>>> if this was in [[bugs]], I'd close it. :) --[[Joey]] -- cgit v1.2.3 From d1ebdcd0a23617a578e78e464e3b36f0390f3c4d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Mar 2010 16:28:32 -0500 Subject: redundancy --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 6828e6b3f..2a0217dc4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,7 +8,7 @@ ikiwiki (3.20100303) UNRELEASED; urgency=low provider (who should perhaps answer your emails about them), while not moderating other users. * moderatedcomments: The moderate_users setting is deprecated. Instead, - set moderate_pagespec to "!admin()" or "user(*)" instead. + set moderate_pagespec to "!admin()" or "user(*)". * Fix missing span on recentchanges page template. * search: Avoid '$' in the wikiname appearing unescaped on omega's query template, where it might crash omega. -- cgit v1.2.3 From 9c274a001a17df01d9ea609c1c39eae72e4c6404 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Mar 2010 16:29:00 -0500 Subject: formatting --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 2a0217dc4..bae0e7ee0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,7 +3,7 @@ ikiwiki (3.20100303) UNRELEASED; urgency=low * Fix utf8 issues in calls to md5_hex. * moderatedcomments: Added moderate_pagespec that can be used to control which users or comment locations are moderated. - This can be used, just for example, to moderate http://myopenid.com/* + This can be used, just for example, to moderate "user(http://myopenid.com/*)" if you're getting a lot of spammers from one particular openid provider (who should perhaps answer your emails about them), while not moderating other users. -- cgit v1.2.3 From 98facfc958fedf459c838269cd2b6cdf67bbac80 Mon Sep 17 00:00:00 2001 From: "http://oneingray.myopenid.com/" Date: Fri, 12 Mar 2010 17:50:16 +0000 Subject: Added a page for myself. --- doc/users/ivan_shmakov.mdwn | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 doc/users/ivan_shmakov.mdwn diff --git a/doc/users/ivan_shmakov.mdwn b/doc/users/ivan_shmakov.mdwn new file mode 100644 index 000000000..41bf9b09a --- /dev/null +++ b/doc/users/ivan_shmakov.mdwn @@ -0,0 +1,3 @@ +… To put it short: an Ikiwiki newbie. + +I run an Ikiwiki instance at (though the DNS servers seem to be temporarily out of smoke as of 2010-03-12Z.) -- cgit v1.2.3 From 58a6847cfb445dbb87716e4064f8151cc44a233a Mon Sep 17 00:00:00 2001 From: "http://oneingray.myopenid.com/" Date: Fri, 12 Mar 2010 17:51:17 +0000 Subject: Note that, actually, SVG could be embedded into an Ikiwiki page, albeit in a somewhat crude manner. --- doc/todo/svg.mdwn | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/todo/svg.mdwn b/doc/todo/svg.mdwn index 89b183db6..2099751e3 100644 --- a/doc/todo/svg.mdwn +++ b/doc/todo/svg.mdwn @@ -57,3 +57,11 @@ in the trunk if other people think it's useful. [htmlscrubber.pm]:http://xbeta.org/gitweb/?p=xbeta/ikiwiki.git;a=blob;f=IkiWiki/Plugin/htmlscrubber.pm;h=3c0ddc8f25bd8cb863634a9d54b40e299e60f7df;hb=fe333c8e5b4a5f374a059596ee698dacd755182d [diff]: http://xbeta.org/gitweb/?p=xbeta/ikiwiki.git;a=blobdiff;f=IkiWiki/Plugin/htmlscrubber.pm;h=3c0ddc8f25bd8cb863634a9d54b40e299e60f7df;hp=3bdaccea119ec0e1b289a0da2f6d90e2219b8d66;hb=fe333c8e5b4a5f374a059596ee698dacd755182d;hpb=be0b4f603f918444b906e42825908ddac78b7073 + +* * * + +Actually, there's a way to embed SVG into MarkDown sources using the [data: URI scheme][rfc2397], [like this](data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHdpZHRoPSIxOTIiIGhlaWdodD0iMTkyIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIDwhLS0gQ3JlYXRlZCB3aXRoIFNWRy1lZGl0IC0gaHR0cDovL3N2Zy1lZGl0Lmdvb2dsZWNvZGUuY29tLyAtLT4KIDx0aXRsZT5IZWxsbywgd29ybGQhPC90aXRsZT4KIDxnPgogIDx0aXRsZT5MYXllciAxPC90aXRsZT4KICA8ZyB0cmFuc2Zvcm09InJvdGF0ZSgtNDUsIDk3LjY3MTksIDk3LjY2OCkiIGlkPSJzdmdfNyI+CiAgIDxyZWN0IHN0cm9rZS13aWR0aD0iNSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjRkYwMDAwIiBpZD0ic3ZnXzUiIGhlaWdodD0iNTYuMDAwMDAzIiB3aWR0aD0iMTc1IiB5PSI2OS42Njc5NjkiIHg9IjEwLjE3MTg3NSIvPgogICA8dGV4dCB4bWw6c3BhY2U9InByZXNlcnZlIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iMjQiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZjAwIiBpZD0ic3ZnXzYiIHk9IjEwNS42NjgiIHg9Ijk5LjY3MTkiPkhlbGxvLCB3b3JsZCE8L3RleHQ+CiAgPC9nPgogPC9nPgo8L3N2Zz4=). +Of course, this way to display an image one needs to click a link, but it may be considered a feature. +— [[Ivan_Shmakov]], 2010-03-12Z. + +[rfc2397]: http://tools.ietf.org/html/rfc2397 -- cgit v1.2.3 From 844bb8134b5ff6e3d73dc3c8b91ed516fa618c41 Mon Sep 17 00:00:00 2001 From: "http://oneingray.myopenid.com/" Date: Fri, 12 Mar 2010 18:33:10 +0000 Subject: Added an wishlist item. --- ...er_control_over___60__object___47____62__s.mdwn | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 doc/todo/finer_control_over___60__object___47____62__s.mdwn diff --git a/doc/todo/finer_control_over___60__object___47____62__s.mdwn b/doc/todo/finer_control_over___60__object___47____62__s.mdwn new file mode 100644 index 000000000..714f5ae50 --- /dev/null +++ b/doc/todo/finer_control_over___60__object___47____62__s.mdwn @@ -0,0 +1,41 @@ +IIUC, the current version of [HTML::Scrubber][] allows for the `object` tags to be either enabled or disabled entirely. However, while `object` can be used to add *code* (which is indeed a potential security hole) to a document, reading [Objects, Images, and Applets in HTML documents][objects-html] reveals that the “dangerous” are not all the `object`s, but rather those having the following attributes: + + classid %URI; #IMPLIED -- identifies an implementation -- + codebase %URI; #IMPLIED -- base URI for classid, data, archive-- + codetype %ContentType; #IMPLIED -- content type for code -- + archive CDATA #IMPLIED -- space-separated list of URIs -- + +It seems that the following attributes are, OTOH, safe: + + declare (declare) #IMPLIED -- declare but don't instantiate flag -- + data %URI; #IMPLIED -- reference to object's data -- + type %ContentType; #IMPLIED -- content type for data -- + standby %Text; #IMPLIED -- message to show while loading -- + height %Length; #IMPLIED -- override height -- + width %Length; #IMPLIED -- override width -- + usemap %URI; #IMPLIED -- use client-side image map -- + name CDATA #IMPLIED -- submit as part of form -- + tabindex NUMBER #IMPLIED -- position in tabbing order -- + +Should the former attributes be *scrubbed* while the latter left intact, the use of the `object` tag would seemingly become safe. + +Note also that allowing `object` (either restricted in such a way or not) automatically solves the [[/todo/svg]] issue. + +For Ikiwiki, it may be nice to be able to restrict [URI's][URI] (as required by the `data` and `usemap` attributes) to, say, relative and `data:` (as per [RFC 2397][]) ones as well, though it requires some more consideration. + +— [[Ivan_Shmakov]], 2010-03-12Z. + +[[wishlist]] + +## See also + +* [Objects, Images, and Applets in HTML documents][objects-html] +* [[plugins/htmlscrubber|/plugins/htmlscrubber]] +* [[todo/svg|/todo/svg]] +* [RFC 2397: The “data” URL scheme. L. Masinter. August 1998.][RFC 2397] +* [Uniform Resource Identifier — the free encyclopedia][URI] + +[HTML::Scrubber]: http://search.cpan.org/~podmaster/HTML-Scrubber-0.08/Scrubber.pm +[objects-html]: http://www.w3.org/TR/1999/REC-html401-19991224/struct/objects.html +[RFC 2397]: http://tools.ietf.org/html/rfc2397 +[URI]: http://en.wikipedia.org/wiki/Uniform_Resource_Identifier -- cgit v1.2.3 From 556181d417e3461de56c43445ec9b2b0aefc7141 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Mar 2010 14:29:54 -0500 Subject: data:image/svg is a security hole as javascript can presumably be inserted --- doc/todo/svg.mdwn | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/todo/svg.mdwn b/doc/todo/svg.mdwn index 2099751e3..274ebf3e3 100644 --- a/doc/todo/svg.mdwn +++ b/doc/todo/svg.mdwn @@ -58,6 +58,8 @@ in the trunk if other people think it's useful. [htmlscrubber.pm]:http://xbeta.org/gitweb/?p=xbeta/ikiwiki.git;a=blob;f=IkiWiki/Plugin/htmlscrubber.pm;h=3c0ddc8f25bd8cb863634a9d54b40e299e60f7df;hb=fe333c8e5b4a5f374a059596ee698dacd755182d [diff]: http://xbeta.org/gitweb/?p=xbeta/ikiwiki.git;a=blobdiff;f=IkiWiki/Plugin/htmlscrubber.pm;h=3c0ddc8f25bd8cb863634a9d54b40e299e60f7df;hp=3bdaccea119ec0e1b289a0da2f6d90e2219b8d66;hb=fe333c8e5b4a5f374a059596ee698dacd755182d;hpb=be0b4f603f918444b906e42825908ddac78b7073 +> Unfortuantly these links are broken. --[[Joey]] + * * * Actually, there's a way to embed SVG into MarkDown sources using the [data: URI scheme][rfc2397], [like this](data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHdpZHRoPSIxOTIiIGhlaWdodD0iMTkyIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIDwhLS0gQ3JlYXRlZCB3aXRoIFNWRy1lZGl0IC0gaHR0cDovL3N2Zy1lZGl0Lmdvb2dsZWNvZGUuY29tLyAtLT4KIDx0aXRsZT5IZWxsbywgd29ybGQhPC90aXRsZT4KIDxnPgogIDx0aXRsZT5MYXllciAxPC90aXRsZT4KICA8ZyB0cmFuc2Zvcm09InJvdGF0ZSgtNDUsIDk3LjY3MTksIDk3LjY2OCkiIGlkPSJzdmdfNyI+CiAgIDxyZWN0IHN0cm9rZS13aWR0aD0iNSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjRkYwMDAwIiBpZD0ic3ZnXzUiIGhlaWdodD0iNTYuMDAwMDAzIiB3aWR0aD0iMTc1IiB5PSI2OS42Njc5NjkiIHg9IjEwLjE3MTg3NSIvPgogICA8dGV4dCB4bWw6c3BhY2U9InByZXNlcnZlIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iMjQiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZjAwIiBpZD0ic3ZnXzYiIHk9IjEwNS42NjgiIHg9Ijk5LjY3MTkiPkhlbGxvLCB3b3JsZCE8L3RleHQ+CiAgPC9nPgogPC9nPgo8L3N2Zz4=). @@ -65,3 +67,11 @@ Of course, this way to display an image one needs to click a link, but it may be — [[Ivan_Shmakov]], 2010-03-12Z. [rfc2397]: http://tools.ietf.org/html/rfc2397 + +> You can do the same with img src actually. +> +> If svg markup allows unsafe elements (ie, javascript), +> which it appears to, +> then this is a security hole, and the htmlscrubber +> needs to lock it down more. Darn, now I have to spend my afternoon making +> security releases! --[[Joey]] -- cgit v1.2.3 From 2ad3e60ee8272b7cccfd83ae02d5b45e2cec003d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Mar 2010 14:49:13 -0500 Subject: htmlscrubber: Security fix: In data:image/* uris, only allow a few whitelisted image types. No svg. --- IkiWiki/Plugin/htmlscrubber.pm | 6 +++--- debian/changelog | 4 +++- doc/security.mdwn | 12 ++++++++++++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm index ee284a45c..26e18ffc7 100644 --- a/IkiWiki/Plugin/htmlscrubber.pm +++ b/IkiWiki/Plugin/htmlscrubber.pm @@ -30,9 +30,9 @@ sub import { "msnim", "notes", "rsync", "secondlife", "skype", "ssh", "sftp", "smb", "sms", "snews", "webcal", "ymsgr", ); - # data is a special case. Allow data:image/*, but - # disallow data:text/javascript and everything else. - $safe_url_regexp=qr/^(?:(?:$uri_schemes):|data:image\/|[^:]+(?:$|\/))/i; + # data is a special case. Allow a few data:image/ types, + # but disallow data:text/javascript and everything else. + $safe_url_regexp=qr/^(?:(?:$uri_schemes):|data:image\/(?:png|jpeg|gif)|[^:]+(?:$|\/))/i; } sub getsetup () { diff --git a/debian/changelog b/debian/changelog index bae0e7ee0..7fdbbcb63 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -ikiwiki (3.20100303) UNRELEASED; urgency=low +ikiwiki (3.20100312) unstable; urgency=HIGH * Fix utf8 issues in calls to md5_hex. * moderatedcomments: Added moderate_pagespec that can be used @@ -12,6 +12,8 @@ ikiwiki (3.20100303) UNRELEASED; urgency=low * Fix missing span on recentchanges page template. * search: Avoid '$' in the wikiname appearing unescaped on omega's query template, where it might crash omega. + * htmlscrubber: Security fix: In data:image/* uris, only allow a few + whitelisted image types. No svg. -- Joey Hess Tue, 09 Mar 2010 19:46:35 -0500 diff --git a/doc/security.mdwn b/doc/security.mdwn index 3924186c2..21aef316b 100644 --- a/doc/security.mdwn +++ b/doc/security.mdwn @@ -427,3 +427,15 @@ enabling TeX configuration options that disallow unsafe TeX commands. The fix was released on 30 Aug 2009 in version 3.1415926, and was backported to stable in version 2.53.4. If you use the teximg plugin, I recommend upgrading. ([[!cve CVE-2009-2944]]) + +## javascript insertion via svg uris + +Ivan Shmakov pointed out that the htmlscrubber allowed `data:image/*` urls, +including `data:image/svg+xml`. But svg can contain javascript, so that is +unsafe. + +This hole was discovered on 12 March 2010 and fixed the same day +with the release of ikiwiki 3.20100312. +A fix was also backported to Debian etch, as version 2.53.5. I recommend +upgrading to one of these versions if your wiki can be edited by third +parties. -- cgit v1.2.3 From 4711076fad54ff8152f03a7e4bdd4b5c2df1916c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Mar 2010 15:00:39 -0500 Subject: clarify --- doc/todo/mercurial.mdwn | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/todo/mercurial.mdwn b/doc/todo/mercurial.mdwn index e71c8106a..de1f148e5 100644 --- a/doc/todo/mercurial.mdwn +++ b/doc/todo/mercurial.mdwn @@ -119,3 +119,11 @@ I have a few notes on mercurial usage after trying it out for a while: >> I think the ideal solution would be to build `$destdir/recentchanges/*` directly from the output of `hg log`. --[[buo]] >>>> That would be 100 times as slow, so I chose not to do that. --[[Joey]] + +>>>> Since this is confusing people, allow me to clarify: Ikiwiki's +>>>> recentchanges generation pulls log information directly out of the VCS as +>>>> needed. It caches it in recentchanges/* in the `scrdir`. These cache +>>>> files need not be preserved, should never be checked into VCS, and if +>>>> you want to you can configure your VCSignore file to ignore them, +>>>> just as you can configure it to ignore the `.ikiwiki` directory in the +>>>> `scrdir`. --[[Joey]] -- cgit v1.2.3 From edec9514f49bf335e8c71a19b169ccbba6a0ba95 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Mar 2010 15:01:24 -0500 Subject: typo --- IkiWiki/Plugin/comments.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index ceb7c7836..98786f432 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -862,7 +862,7 @@ sub page_to_id ($) { eval q{use Digest::MD5 'md5_hex'}; error($@) if $@; - return "comment-".md5_hex(Encode::encode_utf8(($page)); + return "comment-".md5_hex(Encode::encode_utf8(($page))); } package IkiWiki::PageSpec; -- cgit v1.2.3 From 0daa7a122f5e5c51fbd091a1f0c7b720b59a6172 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Mar 2010 15:09:33 -0500 Subject: fix escaping of indented dot --- mdwn2man | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mdwn2man b/mdwn2man index e4ba5aadf..090174534 100755 --- a/mdwn2man +++ b/mdwn2man @@ -9,7 +9,7 @@ print ".TH $prog $section\n"; while (<>) { s{(\\?)\[\[([^\s\|\]]+)(\|[^\s\]]+)?\]\]}{$1 ? "[[$2]]" : $2}eg; s/\`//g; - s/^\./\\&./g; + s/^\s*\./\\&./g; if (/^#\s/) { s/^#\s/.SH /; <>; # blank; -- cgit v1.2.3 From 20bf162e30e26e7e3bd97edc3b0c5956ec0f7791 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Mar 2010 15:14:28 -0500 Subject: releasing version 3.20100312 --- ikiwiki.spec | 2 +- po/ikiwiki.pot | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ikiwiki.spec b/ikiwiki.spec index 73ea7a9c6..2bb87724d 100644 --- a/ikiwiki.spec +++ b/ikiwiki.spec @@ -1,5 +1,5 @@ Name: ikiwiki -Version: 3.20100302 +Version: 3.20100312 Release: 1%{?dist} Summary: A wiki compiler diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index 11af9e4cd..df3000feb 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: 2010-03-02 22:18-0500\n" +"POT-Creation-Date: 2010-03-12 15:02-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -494,7 +494,7 @@ msgstr "" msgid "Mirror" msgstr "" -#: ../IkiWiki/Plugin/moderatedcomments.pm:42 +#: ../IkiWiki/Plugin/moderatedcomments.pm:57 msgid "comment needs moderation" msgstr "" @@ -864,12 +864,12 @@ msgstr "" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:183 +#: ../IkiWiki/Plugin/search.pm:184 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "" -#: ../IkiWiki/Plugin/search.pm:218 +#: ../IkiWiki/Plugin/search.pm:221 msgid "search" msgstr "" @@ -960,11 +960,11 @@ msgstr "" msgid "failed to process:" msgstr "" -#: ../IkiWiki/Plugin/teximg.pm:71 +#: ../IkiWiki/Plugin/teximg.pm:72 msgid "missing tex code" msgstr "" -#: ../IkiWiki/Plugin/teximg.pm:123 +#: ../IkiWiki/Plugin/teximg.pm:124 msgid "failed to generate image from code" msgstr "" -- cgit v1.2.3 From afa930a9c4ada59ea840d626f583f8b4fb3c3f20 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Mar 2010 15:22:32 -0500 Subject: add news item for ikiwiki 3.20100312 --- doc/news/version_3.20091218.mdwn | 11 ----------- doc/news/version_3.20100312.mdwn | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 11 deletions(-) delete mode 100644 doc/news/version_3.20091218.mdwn create mode 100644 doc/news/version_3.20100312.mdwn diff --git a/doc/news/version_3.20091218.mdwn b/doc/news/version_3.20091218.mdwn deleted file mode 100644 index 224e81c4e..000000000 --- a/doc/news/version_3.20091218.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -ikiwiki 3.20091218 released with [[!toggle text="these changes"]] -[[!toggleable text=""" - * Add complete Spanish basewiki translation done by Fernando Gonzalez de - Requena. - * Improve javascript onload handling. - * monotone: Deal with format change in version 0.45. - (Thanks, Richard Levitte) - * cvs: Add missing bit to Automator. - * attachment: Fix reversion in attachment sorting by age. - * Fix utf-8 problems in rename, remove, attachment, 404, sourcepage, and - goto."""]] \ No newline at end of file diff --git a/doc/news/version_3.20100312.mdwn b/doc/news/version_3.20100312.mdwn new file mode 100644 index 000000000..10c34425d --- /dev/null +++ b/doc/news/version_3.20100312.mdwn @@ -0,0 +1,16 @@ +ikiwiki 3.20100312 released with [[!toggle text="these changes"]] +[[!toggleable text=""" + * Fix utf8 issues in calls to md5\_hex. + * moderatedcomments: Added moderate\_pagespec that can be used + to control which users or comment locations are moderated. + This can be used, just for example, to moderate "user(http://myopenid.com/*)" + if you're getting a lot of spammers from one particular openid + provider (who should perhaps answer your emails about them), + while not moderating other users. + * moderatedcomments: The moderate\_users setting is deprecated. Instead, + set moderate\_pagespec to "!admin()" or "user(*)". + * Fix missing span on recentchanges page template. + * search: Avoid '$' in the wikiname appearing unescaped on omega's + query template, where it might crash omega. + * htmlscrubber: Security fix: In data:image/* uris, only allow a few + whitelisted image types. No svg."""]] \ No newline at end of file -- cgit v1.2.3 From 08485ec444cf81015e39c52e6ce8e7b933a036f6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Mar 2010 15:40:47 -0500 Subject: response --- doc/todo/finer_control_over___60__object___47____62__s.mdwn | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/todo/finer_control_over___60__object___47____62__s.mdwn b/doc/todo/finer_control_over___60__object___47____62__s.mdwn index 714f5ae50..ac4b55568 100644 --- a/doc/todo/finer_control_over___60__object___47____62__s.mdwn +++ b/doc/todo/finer_control_over___60__object___47____62__s.mdwn @@ -27,6 +27,13 @@ For Ikiwiki, it may be nice to be able to restrict [URI's][URI] (as required by [[wishlist]] +> SVG can contain embedded javascript. The spec that you link to contains +> examples of objects that contain python scripts, Microsoft OLE +> objects, and Java. And then there's flash. I don't think ikiwiki can +> assume all the possibilities are handled securely, particularly WRT XSS +> attacks. +> --[[Joey]] + ## See also * [Objects, Images, and Applets in HTML documents][objects-html] -- cgit v1.2.3 From 0c3f59d33aa6af6c327d863a4110337ac9cae898 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Mar 2010 16:16:47 -0500 Subject: move bug report to bugs and close --- ...eption:_Unknown_function___96__this__39___.mdwn | 60 ++++++++++++++++++++++ ...eption:_Unknown_function___96__this__39___.mdwn | 58 --------------------- 2 files changed, 60 insertions(+), 58 deletions(-) create mode 100644 doc/bugs/Exception:_Unknown_function___96__this__39___.mdwn delete mode 100644 doc/forum/Exception:_Unknown_function___96__this__39___.mdwn diff --git a/doc/bugs/Exception:_Unknown_function___96__this__39___.mdwn b/doc/bugs/Exception:_Unknown_function___96__this__39___.mdwn new file mode 100644 index 000000000..9eac8eae5 --- /dev/null +++ b/doc/bugs/Exception:_Unknown_function___96__this__39___.mdwn @@ -0,0 +1,60 @@ +I'm very excited to try out ikiwiki, since it should fit my purposes extremely well, but I'm having trouble with the search plugin. I'm pretty sure that right after I installed ikiwiki and needed dependencies, the search plugin was working fine. However, now when I try to use search, I get "Exception: Unknown function `this'" error on a blank page. I'm not sure how I should go about debugging this issue - my server's (I use Lighttpd 1.4.22) error log has no mention of the exception and there's nothing in /var/log/syslog either. + +What might be causing this exception and how I might go about debugging exceptions? + +> Appears to be coming from your xapian omega cgi binary. If you +> run `strings /usr/lib/cgi-bin/omega/omega` you can see it has +> "Exception: " in it, and I have found some similar (but not identical) +> error messages from xapian in a web search. +> +> I don´t know what to suggest, other than upgrade/downgrade/reinstall +> xapian-omega, and contacting the xapian developers for debugging. +> You could try rebuilding your wiki in case it is somehow +> caused by a problem with the xapian database. Failing everything, you +> could switch to [[google_search_plugin|plugins/google]]. --[[Joey]] + +>> Thanks, Joey. With your help I was able to figure out what was wrong. It's a fun little bug (or feature): the title of my wiki had string `$this` in title and that's what was causing the omega binary to choke. My wiki's title was inserted without escaping into the query template used by omega. Omega treated `$this` in the title as a function name and threw an exception because no such function was defined. To avoid this behavior, I used an html entity in the title, so `$this` became `$this`. I don't think that the wiki title should be inserted into the template without escaping - it can produce an error that's not trivial to debug. If users want to modify the html in the title, they should be editing respective templates, not typing html in the wiki title input. What do you think? --[[dkobozev]] + +>>> Sounds like a bug in omega, and one that probably would affect other +>>> users of omega too. Ikiwiki could work around it by pre-escaping +>>> data before passing it to xapian. I have not quite managed to reproduce it though; +>>> tried setting a page title to '$this' and 'foo $this'. +>>> That's with version 1.0.18 of omega. +>>> --[[Joey]] + +>>>> I tried it with both omega 1.0.13 and omega 1.0.18 and the issue is present in both. If I view the contents of {$srcdir}/.ikiwiki/xapian/templates/query, I can see that the wiki title is inserted verbatim and there are calls to `$setmap`, `$set` and `$def` etc in the template. --[[dkobozev]] + +>>>>> I don't see how that's relevant. It would help if you showed me +>>>>> exactly something that could be inserted into a page to cause the +>>>>> problem. --[[Joey]] + +>>>>>> Correct me if I'm wrong: ikiwiki generates an Omega template from its own templates, such as searchquery.tmpl and puts it into {$srcdir}/.ikiwiki/xapian/templates/query. Omega has its own template syntax, where function names are prefixed with dollar signs (`$`). So, when I call my wiki `$foobar`, ikiwiki generates an Omega template that looks like this snippet: + +
+ + +
+ $setmap{prefix,title,S} + $setmap{prefix,link,XLINK} + $set{thousand,$.}$set{decimal,.}$setmap{BN,,Any Country,uk,England,fr,France} + ${ + $def{PREV, + $if{$ne{$topdoc,0},, + } + +>>>>>> So `$foobar` clashes with Omega's template tags. Does this help? + +>>>>>>> Ahh. I had somehow gotten it into my head that you were talking +>>>>>>> about the title of a single page, not of the whole wiki. But +>>>>>>> you were clear all along it was the wiki title. Sorry for +>>>>>>> misunderstanding. I've put in a complete fix for this problem. +>>>>>>> if this was in [[bugs]], I'd close it. :) --[[Joey]] + +[[done]] diff --git a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn b/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn deleted file mode 100644 index 035247100..000000000 --- a/doc/forum/Exception:_Unknown_function___96__this__39___.mdwn +++ /dev/null @@ -1,58 +0,0 @@ -I'm very excited to try out ikiwiki, since it should fit my purposes extremely well, but I'm having trouble with the search plugin. I'm pretty sure that right after I installed ikiwiki and needed dependencies, the search plugin was working fine. However, now when I try to use search, I get "Exception: Unknown function `this'" error on a blank page. I'm not sure how I should go about debugging this issue - my server's (I use Lighttpd 1.4.22) error log has no mention of the exception and there's nothing in /var/log/syslog either. - -What might be causing this exception and how I might go about debugging exceptions? - -> Appears to be coming from your xapian omega cgi binary. If you -> run `strings /usr/lib/cgi-bin/omega/omega` you can see it has -> "Exception: " in it, and I have found some similar (but not identical) -> error messages from xapian in a web search. -> -> I don´t know what to suggest, other than upgrade/downgrade/reinstall -> xapian-omega, and contacting the xapian developers for debugging. -> You could try rebuilding your wiki in case it is somehow -> caused by a problem with the xapian database. Failing everything, you -> could switch to [[google_search_plugin|plugins/google]]. --[[Joey]] - ->> Thanks, Joey. With your help I was able to figure out what was wrong. It's a fun little bug (or feature): the title of my wiki had string `$this` in title and that's what was causing the omega binary to choke. My wiki's title was inserted without escaping into the query template used by omega. Omega treated `$this` in the title as a function name and threw an exception because no such function was defined. To avoid this behavior, I used an html entity in the title, so `$this` became `$this`. I don't think that the wiki title should be inserted into the template without escaping - it can produce an error that's not trivial to debug. If users want to modify the html in the title, they should be editing respective templates, not typing html in the wiki title input. What do you think? --[[dkobozev]] - ->>> Sounds like a bug in omega, and one that probably would affect other ->>> users of omega too. Ikiwiki could work around it by pre-escaping ->>> data before passing it to xapian. I have not quite managed to reproduce it though; ->>> tried setting a page title to '$this' and 'foo $this'. ->>> That's with version 1.0.18 of omega. ->>> --[[Joey]] - ->>>> I tried it with both omega 1.0.13 and omega 1.0.18 and the issue is present in both. If I view the contents of {$srcdir}/.ikiwiki/xapian/templates/query, I can see that the wiki title is inserted verbatim and there are calls to `$setmap`, `$set` and `$def` etc in the template. --[[dkobozev]] - ->>>>> I don't see how that's relevant. It would help if you showed me ->>>>> exactly something that could be inserted into a page to cause the ->>>>> problem. --[[Joey]] - ->>>>>> Correct me if I'm wrong: ikiwiki generates an Omega template from its own templates, such as searchquery.tmpl and puts it into {$srcdir}/.ikiwiki/xapian/templates/query. Omega has its own template syntax, where function names are prefixed with dollar signs (`$`). So, when I call my wiki `$foobar`, ikiwiki generates an Omega template that looks like this snippet: - -
- - -
- $setmap{prefix,title,S} - $setmap{prefix,link,XLINK} - $set{thousand,$.}$set{decimal,.}$setmap{BN,,Any Country,uk,England,fr,France} - ${ - $def{PREV, - $if{$ne{$topdoc,0},, - } - ->>>>>> So `$foobar` clashes with Omega's template tags. Does this help? - ->>>>>>> Ahh. I had somehow gotten it into my head that you were talking ->>>>>>> about the title of a single page, not of the whole wiki. But ->>>>>>> you were clear all along it was the wiki title. Sorry for ->>>>>>> misunderstanding. I've put in a complete fix for this problem. ->>>>>>> if this was in [[bugs]], I'd close it. :) --[[Joey]] -- cgit v1.2.3 From b5e27e60ba38365f3e252df80c2a22503f00eb06 Mon Sep 17 00:00:00 2001 From: "http://oneingray.myopenid.com/" Date: Fri, 12 Mar 2010 21:24:53 +0000 Subject: Note that still may be allowed, although in a form not suitable for, say, SVG inclusion. --- ...er_control_over___60__object___47____62__s.mdwn | 34 +++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/doc/todo/finer_control_over___60__object___47____62__s.mdwn b/doc/todo/finer_control_over___60__object___47____62__s.mdwn index ac4b55568..c37d052db 100644 --- a/doc/todo/finer_control_over___60__object___47____62__s.mdwn +++ b/doc/todo/finer_control_over___60__object___47____62__s.mdwn @@ -27,13 +27,43 @@ For Ikiwiki, it may be nice to be able to restrict [URI's][URI] (as required by [[wishlist]] -> SVG can contain embedded javascript. The spec that you link to contains +> SVG can contain embedded javascript. + +>> Indeed. + +>> So, a more general tool (`XML::Scrubber`?) will be necessary to +>> refine both [XHTML][] and SVG. + +>> … And to leave [MathML][] as is (?.) + +>> — [[Ivan_Shmakov]], 2010-03-12Z. + +> The spec that you link to contains > examples of objects that contain python scripts, Microsoft OLE > objects, and Java. And then there's flash. I don't think ikiwiki can > assume all the possibilities are handled securely, particularly WRT XSS > attacks. > --[[Joey]] +>> I've scanned over all the `object` examples in the specification and +>> all of those that hold references to code (as opposed to data) have a +>> distinguishing `classid` attribute. + +>> While I won't assert that it's impossible to reference code with +>> `data` (and, thanks to `text/xhtml+xml` and `image/svg+xml`, it is +>> *not* impossible), throwing away any of the “insecure” +>> attributes listed above together with limiting the possible URI's +>> (i. e., only *local* and certain `data:` ones for `data` and +>> `usemap`) should make `object` almost as harmless as, say, `img`. + +>> (Though it certainly won't solve the [[SVG_problem|/todo/SVG]] being +>> restricted in such a way.) + +>> Of the remaining issues I could only think of recursive +>> `object` — the one that references its container document. + +>> — [[Ivan_Shmakov]], 2010-03-12Z. + ## See also * [Objects, Images, and Applets in HTML documents][objects-html] @@ -43,6 +73,8 @@ For Ikiwiki, it may be nice to be able to restrict [URI's][URI] (as required by * [Uniform Resource Identifier — the free encyclopedia][URI] [HTML::Scrubber]: http://search.cpan.org/~podmaster/HTML-Scrubber-0.08/Scrubber.pm +[MathML]: http://en.wikipedia.org/wiki/MathML [objects-html]: http://www.w3.org/TR/1999/REC-html401-19991224/struct/objects.html [RFC 2397]: http://tools.ietf.org/html/rfc2397 [URI]: http://en.wikipedia.org/wiki/Uniform_Resource_Identifier +[XHTML]: http://en.wikipedia.org/wiki/XHTML -- cgit v1.2.3 From 29ca20b87c565412fa603127425ccdaf4ca58b79 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Mar 2010 16:50:04 -0500 Subject: response --- doc/todo/finer_control_over___60__object___47____62__s.mdwn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/todo/finer_control_over___60__object___47____62__s.mdwn b/doc/todo/finer_control_over___60__object___47____62__s.mdwn index c37d052db..0ca949954 100644 --- a/doc/todo/finer_control_over___60__object___47____62__s.mdwn +++ b/doc/todo/finer_control_over___60__object___47____62__s.mdwn @@ -56,6 +56,11 @@ For Ikiwiki, it may be nice to be able to restrict [URI's][URI] (as required by >> (i. e., only *local* and certain `data:` ones for `data` and >> `usemap`) should make `object` almost as harmless as, say, `img`. +>>> But with local data, one could not embed youtube videos, which surely +>>> is the most obvious use case? Note that youtube embedding uses an +>>> object element with no classid. The swf file is provided via an +>>> enclosed param element. --[[Joey]] + >> (Though it certainly won't solve the [[SVG_problem|/todo/SVG]] being >> restricted in such a way.) -- cgit v1.2.3 From c26b6c3be864aaf49fe0b0fc15c0af59323b7dde Mon Sep 17 00:00:00 2001 From: "http://oneingray.myopenid.com/" Date: Fri, 12 Mar 2010 22:12:41 +0000 Subject: Note the use of on YouTube. --- .../finer_control_over___60__object___47____62__s.mdwn | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/doc/todo/finer_control_over___60__object___47____62__s.mdwn b/doc/todo/finer_control_over___60__object___47____62__s.mdwn index 0ca949954..50c4d43bf 100644 --- a/doc/todo/finer_control_over___60__object___47____62__s.mdwn +++ b/doc/todo/finer_control_over___60__object___47____62__s.mdwn @@ -57,10 +57,23 @@ For Ikiwiki, it may be nice to be able to restrict [URI's][URI] (as required by >> `usemap`) should make `object` almost as harmless as, say, `img`. >>> But with local data, one could not embed youtube videos, which surely ->>> is the most obvious use case? Note that youtube embedding uses an +>>> is the most obvious use case? + +>>>> Allowing a “remote” object to render on one's page is a + security issue by itself. + Though, of course, having an explicit whitelist of URI's may make + this issue more tolerable. + — [[Ivan_Shmakov]], 2010-03-12Z. + +>>> Note that youtube embedding uses an >>> object element with no classid. The swf file is provided via an >>> enclosed param element. --[[Joey]] +>>>> I've just checked a random video on YouTube and I see that the + `.swf` file is provided via an enclosed `embed` element. Whether + to allow those or not is a different issue. + — [[Ivan_Shmakov]], 2010-03-12Z. + >> (Though it certainly won't solve the [[SVG_problem|/todo/SVG]] being >> restricted in such a way.) -- cgit v1.2.3 From e56ec7a96c3a2064941a82619bf6cb0d2e8392e0 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 13 Mar 2010 15:08:00 -0500 Subject: websetup: Add websetup_unsafe to allow marking other settings as unsafe. --- IkiWiki/Plugin/websetup.pm | 22 ++++++++++++++++++---- debian/changelog | 7 +++++++ doc/plugins/websetup.mdwn | 3 ++- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/IkiWiki/Plugin/websetup.pm b/IkiWiki/Plugin/websetup.pm index 5c19c9b63..d444c0a3d 100644 --- a/IkiWiki/Plugin/websetup.pm +++ b/IkiWiki/Plugin/websetup.pm @@ -27,6 +27,13 @@ sub getsetup () { safe => 0, rebuild => 0, }, + websetup_unsafe => { + type => "string", + example => [], + description => "list of additional setup field keys to treat as unsafe", + safe => 0, + rebuild => 0, + }, websetup_show_unsafe => { type => "boolean", example => 1, @@ -57,6 +64,12 @@ sub formatexample ($$) { } } +sub issafe ($) { + my $key=shift; + + return ! grep { $_ eq $key } @{$config{websetup_unsafe}}; +} + sub showfields ($$$@) { my $form=shift; my $plugin=shift; @@ -78,7 +91,8 @@ sub showfields ($$$@) { # XXX hashes not handled yet next if ref $config{$key} && ref $config{$key} eq 'HASH' || ref $info{example} eq 'HASH'; # maybe skip unsafe settings - next if ! $info{safe} && ! ($config{websetup_show_unsafe} && $config{websetup_advanced}); + next if ! ($config{websetup_show_unsafe} && $config{websetup_advanced}) && + (! $info{safe} || ! issafe($key)); # maybe skip advanced settings next if $info{advanced} && ! $config{websetup_advanced}; # these are handled specially, so don't show @@ -156,7 +170,7 @@ sub showfields ($$$@) { if (ref $value eq 'ARRAY' || ref $info{example} eq 'ARRAY') { $value=[(ref $value eq 'ARRAY' ? map { Encode::encode_utf8($_) } @{$value} : "")]; - push @$value, "", "" if $info{safe}; # blank items for expansion + push @$value, "", "" if $info{safe} && issafe($key); # blank items for expansion } else { $value=Encode::encode_utf8($value); @@ -210,7 +224,7 @@ sub showfields ($$$@) { } } - if (! $info{safe}) { + if (! $info{safe} || ! issafe($key)) { $form->field(name => $name, disabled => 1); } else { @@ -346,7 +360,7 @@ sub showform ($$) { @value=0; } - if (! $info{safe}) { + if (! $info{safe} || ! issafe($key)) { error("unsafe field $key"); # should never happen } diff --git a/debian/changelog b/debian/changelog index 7fdbbcb63..9e779bb18 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +ikiwiki (3.20100313) UNRELEASED; urgency=low + + * websetup: Add websetup_unsafe to allow marking other settings + as unsafe. + + -- Joey Hess Sat, 13 Mar 2010 14:48:10 -0500 + ikiwiki (3.20100312) unstable; urgency=HIGH * Fix utf8 issues in calls to md5_hex. diff --git a/doc/plugins/websetup.mdwn b/doc/plugins/websetup.mdwn index f1756ba8f..b4d23ba9c 100644 --- a/doc/plugins/websetup.mdwn +++ b/doc/plugins/websetup.mdwn @@ -16,7 +16,8 @@ enabled and disabled using it too. Some settings are not considered safe enough to be manipulated over the web; these are still shown, by default, but cannot be modified. To hide them, set `websetup_show_unsafe` to false in the setup file. A few settings have too complex a data type to be -configured via the web. +configured via the web. To mark additional settings as unsafe, you can +list them in `websetup_unsafe`. Plugins that should not be enabled/disabled via the web interface can be listed in `websetup_force_plugins` in the setup file. -- cgit v1.2.3 From 4da6e94305c2c7f4adab057b362d9e58a7494439 Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawm-ebiIfxbKD3KNa-Cu9LvvD9edMLW7BAo" Date: Sat, 13 Mar 2010 21:14:35 +0000 Subject: Google's OpenID and discovery protocol --- doc/forum/google_openid_broken__63__.mdwn | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/forum/google_openid_broken__63__.mdwn b/doc/forum/google_openid_broken__63__.mdwn index 68b44f2c1..0e41d4ced 100644 --- a/doc/forum/google_openid_broken__63__.mdwn +++ b/doc/forum/google_openid_broken__63__.mdwn @@ -50,3 +50,11 @@ The openid is (what a mouthfull!), and I don't know who that is or how to use it since it points to a fairly useless xml document, rather than a web page. --[[Joey]] + +> That string is what's received via the discovery protocol. The user logging in with a Google account is not supposed to write that when logging in, but rather . The OpenID client library will accept that and redirect the user to a sign in page, which will return that string as the OpenID. It's not really usable as an identifier for edits and whatnots, but an alternative would be to use the attribute exchange extension to get the email address and display that. See . + +> Yahoo's OpenID implementation works alike, but I haven't looked at it as much. It uses to receive the endpoint. + +> I've added buttons that submit the two above URLs for logging in with a Google and Yahoo OpenID, respectively, to my locally changed OpenID login plugin. + +> Using the Google profile page as the OpenID is really orthogonal to the above. --[[kaol]] -- cgit v1.2.3 From e8f6c06ca81e4ebd8d244e3863d21517d87b6620 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 13 Mar 2010 17:29:06 -0500 Subject: update; openid email addresses now available so this is unblocked --- doc/todo/avatar.mdwn | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/doc/todo/avatar.mdwn b/doc/todo/avatar.mdwn index b8aa2327f..4409e7b14 100644 --- a/doc/todo/avatar.mdwn +++ b/doc/todo/avatar.mdwn @@ -1,35 +1,24 @@ [[!tag wishlist]] It would be nice if ikiwiki, particularly [[plugins/comments]] -supported user avatar icons. I was considering adding a directive for this, -as designed below. +supported user avatar icons. -However, there is no *good* service for mapping openids to avatars -- -openavatar has many issues, including not supporting delegated openids, and -after trying it, I don't trust it to push users toward. -Perhaps instead ikiwiki could get the email address from the openid -provider, though I think the perl openid modules don't support the openid -2.x feature that allows that. - -At the moment, working on this doesn't feel like a good use of my time. ---[[Joey]] - -Hmm.. unless is just always used a single provider (gravatar) and hashed -the openid. Then wavatars could be used to get a unique avatar per openid -at least. --[[Joey]] - ----- - -The directive displays a small avatar image for a user. Pass it the -email address, openid, or wiki username of the user. +Idea is to add a directive that displays a small avatar image for a user. +Pass it the email address, openid, or wiki username of the user. \[[!avatar user@example.com]] \[[!avatar http://joey.kitenet.net/]] \[[!avatar user]] +These directives can then be hand-inserted onto pages, or more likely, +included in eg, a comment post via a template. Possibly included in a +recentchanges page item via that template too? + The avatars are provided by various sites. For email addresses, it uses a [gravatar](http://gravatar.com/). For openid, -[openavatar](http://www.openvatar.com/) is used. For a wiki username, the +[openavatar](http://www.openvatar.com/) could used, but I am not very happy +with it; probably better to just get the email via SREG (as is done now for +openid), and use that. For a wiki username, the user's email address is looked up and the gravatar for that user is displayed. (Of course, the user has to have filled in their email address on their Preferences page for that to work.) -- cgit v1.2.3 From e2c9b425415a00012b2c579c40c369da4ac7c98b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 13 Mar 2010 17:46:28 -0500 Subject: thoughts --- doc/todo/Separate_OpenIDs_and_usernames.mdwn | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/doc/todo/Separate_OpenIDs_and_usernames.mdwn b/doc/todo/Separate_OpenIDs_and_usernames.mdwn index 2cd52e8c4..ae427d540 100644 --- a/doc/todo/Separate_OpenIDs_and_usernames.mdwn +++ b/doc/todo/Separate_OpenIDs_and_usernames.mdwn @@ -6,6 +6,25 @@ I see this being implemented in one of two possible ways. The easiest seems like A slightly more complex next step would be to request sreg from the provider and, if provided, automatically set the identity's username and email address from the provided persona. If username login to accounts with blank passwords is disabled, then you have the best of both worlds. Passwordless signin, human-friendly attribution, automatic setting of preferences. +> Given that openids are a global user identifier, that can look as pretty +> as the user cares to make it look via delegation, I am not a fan of +> having a site-local identifier that layered on top of that. Perhaps +> partly because every site that I have seen that does that has openid +> implemented as a badly-done wart on the side of their regular login +> system. +> +> Openid Simple Registration is now used to populate the userdb with the +> email address for openid users. +> +> I am considering displaying the userid or fullname, if available, +> instead of the munged openid url in recentchanges. It would be nice +> for those nasty [[google_openids|forum/google_openid_broken?]]. But, +> I first have to find a way to encode the name in the VCS commit log, +> while still keeping the openid of the committer in there too. +> Perhaps something like this (for git): --[[Joey]] +> +> Author: Joey Hess + Unfortunately I don't speak Perl, so hopefully someone thinks these suggestions are good enough to code up. I've hacked on openid code in Ruby before, so hopefully these changes aren't all that difficult to implement. Even if you don't get any data via sreg, you're no worse off than where you are now, so I don't think there'd need to be much in the way of error/sanity-checking of returned data. If it's null or not available then no big deal, typing in a username is no sweat. [[!tag wishlist]] -- cgit v1.2.3 From a01e0679f4134f849473f8a98cb43f5a4aa8d7d8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 13 Mar 2010 19:08:15 -0500 Subject: openid: Use Openid Simple Registration or OpenID Attribute Exchange to get the user's email address and username. The info is stored in the session database, not the user database. There should be no reason to need it when a user is not logged in. Also, hide the email field in the preferences page for openid users. Note that the email and username are not yet actually used for anything. The email will be useful for gravatar, while the username might be used for a more pretty display of the openid. --- IkiWiki/Plugin/openid.pm | 44 ++++++++++++++++++++++++++++++++++++++++++++ debian/changelog | 2 ++ 2 files changed, 46 insertions(+) diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index bb99446b4..9355cd85a 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -90,6 +90,7 @@ sub formbuilder_setup (@) { value => $session->param("name"), size => 50, force => 1, fieldset => "login"); + $form->field(name => "email", type => "hidden"); } } @@ -113,6 +114,26 @@ sub validate ($$$;$) { } } + # Ask for client to provide a name and email, if possible. + # Try sreg and ax + $claimed_identity->set_extension_args( + 'http://openid.net/extensions/sreg/1.1', + { + optional => 'email,fullname,nickname', + }, + ); + $claimed_identity->set_extension_args( + 'http://openid.net/srv/ax/1.0', + { + mode => 'fetch_request', + 'required' => 'email,fullname,nickname,firstname', + 'type.email' => "http://schema.openid.net/contact/email", + 'type.fullname' => "http://axschema.org/namePerson", + 'type.nickname' => "http://axschema.org/namePerson/friendly", + 'type.firstname' => "http://axschema.org/namePerson/first", + }, + ); + my $check_url = $claimed_identity->check_url( return_to => IkiWiki::cgiurl(do => "postsignin"), trust_root => $config{cgiurl}, @@ -139,6 +160,29 @@ sub auth ($$) { } elsif (my $vident = $csr->verified_identity) { $session->param(name => $vident->url); + + my @extensions=grep { defined } ( + $vident->signed_extension_fields('http://openid.net/extensions/sreg/1.1'), + $vident->signed_extension_fields('http://openid.net/srv/ax/1.0'), + ); + foreach my $ext (@extensions) { + foreach my $field (qw{value.email email}) { + if (exists $ext->{$field} && + defined $ext->{$field} && + length $ext->{$field}) { + $session->param(email => $ext->{$field}); + last; + } + } + foreach my $field (qw{value.nickname nickname value.fullname fullname value.firstname}) { + if (exists $ext->{$field} && + defined $ext->{$field} && + length $ext->{$field}) { + $session->param(username => $ext->{$field}); + last; + } + } + } } else { error("OpenID failure: ".$csr->err); diff --git a/debian/changelog b/debian/changelog index 9e779bb18..854d83130 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,8 @@ ikiwiki (3.20100313) UNRELEASED; urgency=low * websetup: Add websetup_unsafe to allow marking other settings as unsafe. + * openid: Use Openid Simple Registration or OpenID Attribute Exchange + to get the user's email address and username. -- Joey Hess Sat, 13 Mar 2010 14:48:10 -0500 -- cgit v1.2.3 From 4f6c544fa8e7dd21450952f0a9fc3918ee600705 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 13 Mar 2010 19:12:52 -0500 Subject: munge to avoid markdown eating email addresses --- doc/todo/git_attribution/discussion.mdwn | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/todo/git_attribution/discussion.mdwn b/doc/todo/git_attribution/discussion.mdwn index dfb490bc2..6905d9b4b 100644 --- a/doc/todo/git_attribution/discussion.mdwn +++ b/doc/todo/git_attribution/discussion.mdwn @@ -72,7 +72,7 @@ no determination of uniqueness) > GIT_AUTHOR_EMAIL can also be set. > > There is one thing yet to be solved, and that is how to tell the -> difference between a web commit by 'Joey Hess ', +> difference between a web commit by 'Joey Hess ', > and a git commit by the same. I think we do want to differentiate these, > and the best way to do it seems to be to add a line to the end of the > commit message. Something like: "\n\nWeb-commit: true" @@ -94,5 +94,5 @@ no determination of uniqueness) > * github pushes to twitter ;-) > > So while I tried that way at first, I'm now leaning toward encoding the -> username in the email address. Like "user ", or -> "joey ". +> username in the email address. Like "user ", or +> "joey ". -- cgit v1.2.3 From 8f4f81cdfdcb68be5efb385dc07e4a0a04352a9d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 13 Mar 2010 19:24:51 -0500 Subject: wrinkles --- doc/todo/Separate_OpenIDs_and_usernames.mdwn | 9 ++++++--- doc/todo/avatar.mdwn | 14 ++++++++++---- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/doc/todo/Separate_OpenIDs_and_usernames.mdwn b/doc/todo/Separate_OpenIDs_and_usernames.mdwn index ae427d540..3fb952f96 100644 --- a/doc/todo/Separate_OpenIDs_and_usernames.mdwn +++ b/doc/todo/Separate_OpenIDs_and_usernames.mdwn @@ -13,8 +13,9 @@ A slightly more complex next step would be to request sreg from the provider and > implemented as a badly-done wart on the side of their regular login > system. > -> Openid Simple Registration is now used to populate the userdb with the -> email address for openid users. +> The openid plugin now attempts to get an email and a username, and stores +> them in the session database for later use (ie, when the user edits a +> page). > > I am considering displaying the userid or fullname, if available, > instead of the munged openid url in recentchanges. It would be nice @@ -23,7 +24,9 @@ A slightly more complex next step would be to request sreg from the provider and > while still keeping the openid of the committer in there too. > Perhaps something like this (for git): --[[Joey]] > -> Author: Joey Hess +> Author: Joey Hess <http://joey.kitenet.net/@web> +> +> Unfortunately I don't speak Perl, so hopefully someone thinks these suggestions are good enough to code up. I've hacked on openid code in Ruby before, so hopefully these changes aren't all that difficult to implement. Even if you don't get any data via sreg, you're no worse off than where you are now, so I don't think there'd need to be much in the way of error/sanity-checking of returned data. If it's null or not available then no big deal, typing in a username is no sweat. diff --git a/doc/todo/avatar.mdwn b/doc/todo/avatar.mdwn index 4409e7b14..3a4e64b95 100644 --- a/doc/todo/avatar.mdwn +++ b/doc/todo/avatar.mdwn @@ -15,14 +15,20 @@ included in eg, a comment post via a template. Possibly included in a recentchanges page item via that template too? The avatars are provided by various sites. For email addresses, it uses a -[gravatar](http://gravatar.com/). For openid, -[openavatar](http://www.openvatar.com/) could used, but I am not very happy -with it; probably better to just get the email via SREG (as is done now for -openid), and use that. For a wiki username, the +[gravatar](http://gravatar.com/). For a wiki username, the user's email address is looked up and the gravatar for that user is displayed. (Of course, the user has to have filled in their email address on their Preferences page for that to work.) +For openid, openavatar sucked and is now dead. So we need to use an email +address instead, I guess. Problem is that the email address of a given +openid is only known when that user is logged in and making a change. +And we don't want to leak an openid user's email into a page either. +Hmm. Suppose the gravatar hash could be calculated from the email address +and embedded instead of the openid? + +Or, for openid, could use . + An optional second parameter can be included, containing additional options to pass in the [gravatar url](http://en.gravatar.com/site/implement/url). -- cgit v1.2.3 From 702c097ac29f1b208158936a99317ebad3e4116f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 13 Mar 2010 19:40:20 -0500 Subject: update --- doc/todo/Separate_OpenIDs_and_usernames.mdwn | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/doc/todo/Separate_OpenIDs_and_usernames.mdwn b/doc/todo/Separate_OpenIDs_and_usernames.mdwn index 3fb952f96..7cfe49a5a 100644 --- a/doc/todo/Separate_OpenIDs_and_usernames.mdwn +++ b/doc/todo/Separate_OpenIDs_and_usernames.mdwn @@ -18,15 +18,25 @@ A slightly more complex next step would be to request sreg from the provider and > page). > > I am considering displaying the userid or fullname, if available, -> instead of the munged openid url in recentchanges. It would be nice -> for those nasty [[google_openids|forum/google_openid_broken?]]. But, -> I first have to find a way to encode the name in the VCS commit log, +> instead of the munged openid url in recentchanges and comments. +> It would be nice for those nasty [[google_openids|forum/google_openid_broken?]]. +> But, I first have to find a way to encode the name in the VCS commit log, > while still keeping the openid of the committer in there too. > Perhaps something like this (for git): --[[Joey]] > > Author: Joey Hess <http://joey.kitenet.net/@web> > +> So, what needs to be done: > +> * Change `rcs_commit` and `rcs_commit_staged` to take a session object, +> instead of just a userid. (For back-compat, if the parameter is +> not an object, it's a userid.) Bump ikiwiki plugin interface version. +> * Modify all RCS plugins to include the session username somewhere +> in the commit, and parse it back out in `rcs_recentchanges`. +> * Modify recentchanges plugin to display the username instead of the +> `openiduser`. +> * Modify comment plugin to put the session username in the comment +> template instead of the `openiduser`. Unfortunately I don't speak Perl, so hopefully someone thinks these suggestions are good enough to code up. I've hacked on openid code in Ruby before, so hopefully these changes aren't all that difficult to implement. Even if you don't get any data via sreg, you're no worse off than where you are now, so I don't think there'd need to be much in the way of error/sanity-checking of returned data. If it's null or not available then no big deal, typing in a username is no sweat. -- cgit v1.2.3 From fd43e83fcf7bf24493ecfff54111c1c5f1cab573 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 13 Mar 2010 19:56:54 -0500 Subject: update --- doc/forum/google_openid_broken__63__.mdwn | 13 +++++++++++++ doc/todo/Separate_OpenIDs_and_usernames.mdwn | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/doc/forum/google_openid_broken__63__.mdwn b/doc/forum/google_openid_broken__63__.mdwn index 0e41d4ced..4ca5cac93 100644 --- a/doc/forum/google_openid_broken__63__.mdwn +++ b/doc/forum/google_openid_broken__63__.mdwn @@ -58,3 +58,16 @@ points to a fairly useless xml document, rather than a web page. --[[Joey]] > I've added buttons that submit the two above URLs for logging in with a Google and Yahoo OpenID, respectively, to my locally changed OpenID login plugin. > Using the Google profile page as the OpenID is really orthogonal to the above. --[[kaol]] + +>> Displaying email addresses is not really an option, because ikiwiki +>> can't leak user email addresses like that. Displaying nicknames or +>> usernames is, see [[todo/Separate_OpenIDs_and_usernames]]. +>> +>> It would probably be good if the openid plugin could be configured with +>> a list of generic openid urls, so it can add quick login buttons using +>> those urls. +>> +>> The ugly google url will still be exposed here and there where +>> a unique user id is needed. That can be avoided by not using the generic +>> , but instead your own profile +>> like . --[[Joey]] diff --git a/doc/todo/Separate_OpenIDs_and_usernames.mdwn b/doc/todo/Separate_OpenIDs_and_usernames.mdwn index 7cfe49a5a..fcdb49f6d 100644 --- a/doc/todo/Separate_OpenIDs_and_usernames.mdwn +++ b/doc/todo/Separate_OpenIDs_and_usernames.mdwn @@ -26,6 +26,13 @@ A slightly more complex next step would be to request sreg from the provider and > > Author: Joey Hess <http://joey.kitenet.net/@web> > +> Only problem with the above is that the openid will still be displayed +> by CIA. Other option is this, which solves that, but at the expense of +> having to munge the username to fit inside the email address, +> and generally seems backwards: --[[Joey]] +> +> Author: http://joey.kitenet.net/ <Joey_Hess@web> +> > So, what needs to be done: > > * Change `rcs_commit` and `rcs_commit_staged` to take a session object, -- cgit v1.2.3 From c0ad4929deb455804ddfc6451820c6c67a298ea1 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 13 Mar 2010 20:10:50 -0500 Subject: Improve openid url munging; do not display anchors and cgi parameters, as used by yahoo and google urls. --- IkiWiki.pm | 2 +- debian/changelog | 2 ++ doc/forum/google_openid_broken__63__.mdwn | 6 ++++++ t/openiduser.t | 7 ++++++- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 00eadfd98..251ed8cc8 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1131,7 +1131,7 @@ sub openiduser ($) { # Convert "http://somehost.com/user" to "user [somehost.com]". # (also "https://somehost.com/user/") if ($display !~ /\[/) { - $display=~s/^https?:\/\/(.+)\/([^\/]+)\/?$/$2 [$1]/; + $display=~s/^https?:\/\/(.+)\/([^\/#?]+)\/?(?:[#?].*)?$/$2 [$1]/; } $display=~s!^https?://!!; # make sure this is removed eval q{use CGI 'escapeHTML'}; diff --git a/debian/changelog b/debian/changelog index 854d83130..0a9679618 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,8 @@ ikiwiki (3.20100313) UNRELEASED; urgency=low as unsafe. * openid: Use Openid Simple Registration or OpenID Attribute Exchange to get the user's email address and username. + * Improve openid url munging; do not display anchors and cgi parameters, + as used by yahoo and google urls. -- Joey Hess Sat, 13 Mar 2010 14:48:10 -0500 diff --git a/doc/forum/google_openid_broken__63__.mdwn b/doc/forum/google_openid_broken__63__.mdwn index 4ca5cac93..96ba2d791 100644 --- a/doc/forum/google_openid_broken__63__.mdwn +++ b/doc/forum/google_openid_broken__63__.mdwn @@ -59,6 +59,12 @@ points to a fairly useless xml document, rather than a web page. --[[Joey]] > Using the Google profile page as the OpenID is really orthogonal to the above. --[[kaol]] +>> First, I don't accept that the openid google returns from their +>> generic signin url *has* to be so freaking ugly. For contrast, +>> look at the openid you log in as if you use the yahoo url. +>> . Nice and clean, now +>> munged by ikiwiki to "joeyhess [me.yahoo.com]". +>> >> Displaying email addresses is not really an option, because ikiwiki >> can't leak user email addresses like that. Displaying nicknames or >> usernames is, see [[todo/Separate_OpenIDs_and_usernames]]. diff --git a/t/openiduser.t b/t/openiduser.t index 52d879484..caabbcefc 100755 --- a/t/openiduser.t +++ b/t/openiduser.t @@ -10,7 +10,7 @@ BEGIN { eval q{use Test::More skip_all => "Net::OpenID::VerifiedIdentity not available"}; } else { - eval q{use Test::More tests => 9}; + eval q{use Test::More tests => 11}; } use_ok("IkiWiki::Plugin::openid"); } @@ -28,6 +28,11 @@ $^W=1; is(IkiWiki::openiduser('http://yam655.livejournal.com/'), 'yam655 [livejournal.com]'); is(IkiWiki::openiduser('http://id.mayfirst.org/jamie/'), 'jamie [id.mayfirst.org]'); +# yahoo has an anchor in the url +is(IkiWiki::openiduser('https://me.yahoo.com/joeyhess#35f22'), 'joeyhess [me.yahoo.com]'); +# google urls are horrendous, but the worst bit is after a ?, so can be dropped +is(IkiWiki::openiduser('https://www.google.com/accounts/o8/id?id=AItOawm-ebiIfxbKD3KNa-Cu9LvvD9edMLW7BAo'), 'id [www.google.com/accounts/o8]'); + # and some less typical ones taken from the ikiwiki commit history is(IkiWiki::openiduser('http://thm.id.fedoraproject.org/'), 'thm [id.fedoraproject.org]'); -- cgit v1.2.3 From 725a1cf0e8d1fbdb7f449b632ee1fa3cb84835c7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 13 Mar 2010 20:45:44 -0500 Subject: update; bleargh --- doc/todo/avatar.mdwn | 50 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/doc/todo/avatar.mdwn b/doc/todo/avatar.mdwn index 3a4e64b95..f0599e4ed 100644 --- a/doc/todo/avatar.mdwn +++ b/doc/todo/avatar.mdwn @@ -1,42 +1,60 @@ [[!tag wishlist]] It would be nice if ikiwiki, particularly [[plugins/comments]] -supported user avatar icons. +(but also, ideally, recentchanges) supported user avatar icons. Idea is to add a directive that displays a small avatar image for a user. -Pass it the email address, openid, or wiki username of the user. +Pass it a user's the email address, openid, username, or the md5 hash +of their email address: \[[!avatar user@example.com]] \[[!avatar http://joey.kitenet.net/]] \[[!avatar user]] + \[[!avatar hash]] These directives can then be hand-inserted onto pages, or more likely, -included in eg, a comment post via a template. Possibly included in a -recentchanges page item via that template too? +included in eg, a comment post via a template. + +An optional second parameter can be included, containing additional +options to pass in the +[gravatar url](http://en.gravatar.com/site/implement/url). +For example, this asks for a smaller gravatar, and if a user does +not have a gravatar, uses a cute auto-generated "wavatar" avatar. + + \[[!gravatar user@example.com "size=40&default=wavatar"]] + +The `gravitar_options` setting in the setup file can be used to +specify additional options to pass. So for example if you want +to use wavatars everywhere, set it to "default=wavatar". The avatars are provided by various sites. For email addresses, it uses a [gravatar](http://gravatar.com/). For a wiki username, the user's email address is looked up and the gravatar for that user is displayed. (Of course, the user has to have filled in their email address -on their Preferences page for that to work.) +on their Preferences page for that to work. Also, when the user changes +their email address in Preferences, the gravatar won't change until the +wiki is rebuilt.) For openid, openavatar sucked and is now dead. So we need to use an email address instead, I guess. Problem is that the email address of a given openid is only known when that user is logged in and making a change. And we don't want to leak an openid user's email into a page either. Hmm. Suppose the gravatar hash could be calculated from the email address -and embedded instead of the openid? +and embedded instead of the openid? That would work for comments, +but not if the directive were used elsewhere. -Or, for openid, could use . +Or, for openid, could use . Which +works fine, but users are not likely to figure out what they need to do to +get an avatar associated with their openid. -An optional second parameter can be included, containing additional -options to pass in the -[gravatar url](http://en.gravatar.com/site/implement/url). -For example, this asks for a smaller gravatar, and if a user does -not have a gravatar, uses a cute auto-generated "wavatar" avatar. +--- - \[[!gravatar user@example.com "size=40&default=wavatar"]] +Alternative, not overdesigned approach: -The `gravitar_options` setting in the setup file can be used to -specify additional options to pass. So for example if you want -to use wavatars everywhere, set it to "default=wavatar". +Modify comments plugin to have an option to display avatars. + +When posting a comment, fill in the avatarhash field in the template. +The hash is calculated from the user's email address. If the user's email +is not known, skip it. + +End. :P -- cgit v1.2.3 From 7bca48f5ce8233cada3a4d87a4c93c1fed8aae80 Mon Sep 17 00:00:00 2001 From: "https://launchpad.net/~ojwb" Date: Sun, 14 Mar 2010 04:56:13 +0000 Subject: --- doc/bugs/Exception:_Unknown_function___96__this__39___.mdwn | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/bugs/Exception:_Unknown_function___96__this__39___.mdwn b/doc/bugs/Exception:_Unknown_function___96__this__39___.mdwn index 9eac8eae5..189ba740f 100644 --- a/doc/bugs/Exception:_Unknown_function___96__this__39___.mdwn +++ b/doc/bugs/Exception:_Unknown_function___96__this__39___.mdwn @@ -57,4 +57,14 @@ What might be causing this exception and how I might go about debugging exceptio >>>>>>> misunderstanding. I've put in a complete fix for this problem. >>>>>>> if this was in [[bugs]], I'd close it. :) --[[Joey]] +>>>>>>>> Rather than escaping `$` as an HTML entity, it would be more natural +>>>>>>>> to escape it as `$$` (since you are escaping it for Omega, not for +>>>>>>>> the web browser. +>>>>>>>> +>>>>>>>> Also if ikiwiki can put arbitrary text inside the parameters of an +>>>>>>>> OmegaScript command, you should also escape `{`, `}` and `,` as +>>>>>>>> `$(`, `$)` and `$.`. It's only necessary to do so inside the +>>>>>>>> parameters of a command, but it will work and be easier to escape +>>>>>>>> them in any substituted text. --OllyBetts + [[done]] -- cgit v1.2.3 From 7c5bfbe2b614b1cadc13fcab2a427abc711579b0 Mon Sep 17 00:00:00 2001 From: "http://pmate.myopenid.com/" Date: Sun, 14 Mar 2010 12:19:34 +0000 Subject: --- doc/sandbox/prova_blog.html | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 doc/sandbox/prova_blog.html diff --git a/doc/sandbox/prova_blog.html b/doc/sandbox/prova_blog.html new file mode 100644 index 000000000..d69937ea8 --- /dev/null +++ b/doc/sandbox/prova_blog.html @@ -0,0 +1,8 @@ +Questa è una prova. +Vediamo se funziona + +
+#!/bin/bash
+
+echo "ciao"
+
-- cgit v1.2.3 From 30c30a0cdde44491370a1e5a0ef371a4f92c4965 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 14 Mar 2010 13:15:55 -0400 Subject: Add complete German basewiki and directives translation done by Sebastian Kuhnert. --- debian/changelog | 2 + debian/copyright | 1 + po/de.po | 57 ++- po/underlay.setup | 2 +- po/underlays/basewiki/ikiwiki.de.po | 69 ++++ po/underlays/basewiki/ikiwiki/directive.de.po | 137 +++++++ po/underlays/basewiki/ikiwiki/formatting.de.po | 299 ++++++++++++++ po/underlays/basewiki/ikiwiki/markdown.de.po | 52 +++ po/underlays/basewiki/ikiwiki/openid.de.po | 115 ++++++ po/underlays/basewiki/ikiwiki/pagespec.de.po | 258 ++++++++++++ .../basewiki/ikiwiki/pagespec/attachment.de.po | 122 ++++++ po/underlays/basewiki/ikiwiki/pagespec/po.de.po | 70 ++++ .../basewiki/ikiwiki/pagespec/sorting.de.po | 48 +++ po/underlays/basewiki/ikiwiki/searching.de.po | 92 +++++ po/underlays/basewiki/ikiwiki/subpage.de.po | 54 +++ .../basewiki/ikiwiki/subpage/linkingrules.de.po | 109 +++++ po/underlays/basewiki/ikiwiki/wikilink.de.po | 111 +++++ po/underlays/basewiki/index.de.po | 29 ++ po/underlays/basewiki/recentchanges.de.po | 38 ++ po/underlays/basewiki/sandbox.de.po | 91 +++++ po/underlays/basewiki/shortcuts.de.po | 287 +++++++++++++ po/underlays/basewiki/templates.de.po | 256 ++++++++++++ po/underlays/basewiki/templates/note.de.po | 42 ++ po/underlays/basewiki/templates/popup.de.po | 59 +++ .../directives/ikiwiki/directive/aggregate.de.po | 189 +++++++++ .../directives/ikiwiki/directive/brokenlinks.de.po | 57 +++ .../directives/ikiwiki/directive/calendar.de.po | 183 +++++++++ .../directives/ikiwiki/directive/color.de.po | 97 +++++ .../directives/ikiwiki/directive/comment.de.po | 133 ++++++ .../directives/ikiwiki/directive/copy.de.po | 25 ++ .../directives/ikiwiki/directive/cut.de.po | 25 ++ .../directives/ikiwiki/directive/cutpaste.de.po | 153 +++++++ .../directives/ikiwiki/directive/date.de.po | 64 +++ .../ikiwiki/directive/edittemplate.de.po | 99 +++++ .../directives/ikiwiki/directive/format.de.po | 93 +++++ .../directives/ikiwiki/directive/fortune.de.po | 42 ++ .../directives/ikiwiki/directive/graph.de.po | 88 ++++ .../directives/ikiwiki/directive/haiku.de.po | 60 +++ po/underlays/directives/ikiwiki/directive/if.de.po | 145 +++++++ .../directives/ikiwiki/directive/img.de.po | 115 ++++++ .../directives/ikiwiki/directive/inline.de.po | 385 +++++++++++++++++ .../directives/ikiwiki/directive/linkmap.de.po | 99 +++++ .../ikiwiki/directive/listdirectives.de.po | 72 ++++ .../directives/ikiwiki/directive/map.de.po | 77 ++++ .../directives/ikiwiki/directive/meta.de.po | 455 +++++++++++++++++++++ .../directives/ikiwiki/directive/more.de.po | 63 +++ .../directives/ikiwiki/directive/orphans.de.po | 60 +++ .../directives/ikiwiki/directive/pagecount.de.po | 48 +++ .../directives/ikiwiki/directive/pagestats.de.po | 99 +++++ .../ikiwiki/directive/pagetemplate.de.po | 64 +++ .../directives/ikiwiki/directive/paste.de.po | 25 ++ .../directives/ikiwiki/directive/ping.de.po | 69 ++++ .../directives/ikiwiki/directive/poll.de.po | 87 ++++ .../directives/ikiwiki/directive/polygen.de.po | 50 +++ .../ikiwiki/directive/postsparkline.de.po | 149 +++++++ .../directives/ikiwiki/directive/progress.de.po | 68 +++ .../directives/ikiwiki/directive/shortcut.de.po | 46 +++ .../directives/ikiwiki/directive/sparkline.de.po | 178 ++++++++ .../directives/ikiwiki/directive/table.de.po | 147 +++++++ .../directives/ikiwiki/directive/tag.de.po | 112 +++++ .../directives/ikiwiki/directive/taglink.de.po | 25 ++ .../directives/ikiwiki/directive/template.de.po | 71 ++++ .../ikiwiki/directive/testpagespec.de.po | 84 ++++ .../directives/ikiwiki/directive/teximg.de.po | 84 ++++ .../directives/ikiwiki/directive/toc.de.po | 85 ++++ .../directives/ikiwiki/directive/toggle.de.po | 113 +++++ .../directives/ikiwiki/directive/toggleable.de.po | 25 ++ .../directives/ikiwiki/directive/version.de.po | 50 +++ po/underlays/smiley/smileys.de.po | 211 ++++++++++ 69 files changed, 7036 insertions(+), 33 deletions(-) create mode 100644 po/underlays/basewiki/ikiwiki.de.po create mode 100644 po/underlays/basewiki/ikiwiki/directive.de.po create mode 100644 po/underlays/basewiki/ikiwiki/formatting.de.po create mode 100644 po/underlays/basewiki/ikiwiki/markdown.de.po create mode 100644 po/underlays/basewiki/ikiwiki/openid.de.po create mode 100644 po/underlays/basewiki/ikiwiki/pagespec.de.po create mode 100644 po/underlays/basewiki/ikiwiki/pagespec/attachment.de.po create mode 100644 po/underlays/basewiki/ikiwiki/pagespec/po.de.po create mode 100644 po/underlays/basewiki/ikiwiki/pagespec/sorting.de.po create mode 100644 po/underlays/basewiki/ikiwiki/searching.de.po create mode 100644 po/underlays/basewiki/ikiwiki/subpage.de.po create mode 100644 po/underlays/basewiki/ikiwiki/subpage/linkingrules.de.po create mode 100644 po/underlays/basewiki/ikiwiki/wikilink.de.po create mode 100644 po/underlays/basewiki/index.de.po create mode 100644 po/underlays/basewiki/recentchanges.de.po create mode 100644 po/underlays/basewiki/sandbox.de.po create mode 100644 po/underlays/basewiki/shortcuts.de.po create mode 100644 po/underlays/basewiki/templates.de.po create mode 100644 po/underlays/basewiki/templates/note.de.po create mode 100644 po/underlays/basewiki/templates/popup.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/aggregate.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/brokenlinks.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/calendar.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/color.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/comment.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/copy.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/cut.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/cutpaste.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/date.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/edittemplate.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/format.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/fortune.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/graph.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/haiku.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/if.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/img.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/inline.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/linkmap.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/listdirectives.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/map.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/meta.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/more.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/orphans.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/pagecount.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/pagestats.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/pagetemplate.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/paste.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/ping.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/poll.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/polygen.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/postsparkline.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/progress.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/shortcut.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/sparkline.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/table.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/tag.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/taglink.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/template.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/testpagespec.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/teximg.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/toc.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/toggle.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/toggleable.de.po create mode 100644 po/underlays/directives/ikiwiki/directive/version.de.po create mode 100644 po/underlays/smiley/smileys.de.po diff --git a/debian/changelog b/debian/changelog index 0a9679618..92afe661f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,8 @@ ikiwiki (3.20100313) UNRELEASED; urgency=low to get the user's email address and username. * Improve openid url munging; do not display anchors and cgi parameters, as used by yahoo and google urls. + * Add complete German basewiki and directives translation done by + Sebastian Kuhnert. -- Joey Hess Sat, 13 Mar 2010 14:48:10 -0500 diff --git a/debian/copyright b/debian/copyright index 050a4dd61..ad72a0459 100644 --- a/debian/copyright +++ b/debian/copyright @@ -163,6 +163,7 @@ Copyright: 2007 Cyril Brulebois 2007 Daniel Nylander 2009 Fernando González de Requena + 2010 Sebastian Kuhnert License: Redistribution and use in source and compiled forms, with or without modification, are permitted under any circumstances. No warranty. diff --git a/po/de.po b/po/de.po index 9433501cc..f69b98603 100644 --- a/po/de.po +++ b/po/de.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: ikiwiki 3.14159\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-02 22:18-0500\n" -"PO-Revision-Date: 2009-07-23 01:07+0100\n" -"Last-Translator: Kurt Gramlich \n" +"PO-Revision-Date: 2010-03-14 16:09+0530\n" +"Last-Translator: Sebastian Kuhnert \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -152,12 +152,10 @@ msgid "Failed to create S3 bucket: " msgstr "Konnte Behälter (bucket) in S3 nicht anlegen: " #: ../IkiWiki/Plugin/amazon_s3.pm:225 -#, fuzzy msgid "Failed to save file to S3: " msgstr "Konnte die Datei nicht in S3 speichern: " #: ../IkiWiki/Plugin/amazon_s3.pm:247 -#, fuzzy msgid "Failed to delete file from S3: " msgstr "Konnte die Datei nicht in S3 löschen: " @@ -262,19 +260,18 @@ msgid "comment moderation" msgstr "Kommentar-Moderation" #: ../IkiWiki/Plugin/comments.pm:761 -#, fuzzy, perl-format +#, perl-format msgid "%i comment" msgid_plural "%i comments" -msgstr[0] "Kommentare" -msgstr[1] "Kommentare" +msgstr[0] "%i Kommentar" +msgstr[1] "%i Kommentare" #. translators: Here "Comment" is a verb; #. translators: the user clicks on it to #. translators: post a comment. #: ../IkiWiki/Plugin/comments.pm:771 -#, fuzzy msgid "Comment" -msgstr "Kommentare" +msgstr "Kommentieren" #: ../IkiWiki/Plugin/conditional.pm:28 ../IkiWiki/Plugin/cutpaste.pm:31 #: ../IkiWiki/Plugin/cutpaste.pm:46 ../IkiWiki/Plugin/cutpaste.pm:62 @@ -349,14 +346,13 @@ msgid "The page %s does not exist." msgstr "Die Seite %s existiert nicht." #: ../IkiWiki/Plugin/getsource.pm:75 -#, fuzzy msgid "not a page" -msgstr "Kann die Seiten nicht zuordnen: %s" +msgstr "Keine Seite" #: ../IkiWiki/Plugin/getsource.pm:77 -#, fuzzy, perl-format +#, perl-format msgid "%s is an attachment, not a page." -msgstr "Seite %s kann nicht bearbeitet werden" +msgstr "Seite %s ist ein Anhang und keine Seite." #: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 #: ../IkiWiki/Receive.pm:130 @@ -405,9 +401,8 @@ msgstr "" "through" #: ../IkiWiki/Plugin/htmltidy.pm:50 -#, fuzzy msgid "htmltidy failed to parse this html" -msgstr "Smileys konnten nicht ausgewertet werden" +msgstr "htmltidy konnte dieses HTML nicht auswerten" #: ../IkiWiki/Plugin/img.pm:69 msgid "Image::Magick is not installed" @@ -450,7 +445,7 @@ msgstr "fehlender Seitenparameter" #: ../IkiWiki/Plugin/inline.pm:192 #, perl-format msgid "the %s and %s parameters cannot be used together" -msgstr "" +msgstr "die Parameter %s und %s können nicht zusammen benutzt werden" #: ../IkiWiki/Plugin/inline.pm:313 msgid "Add a new post titled:" @@ -472,7 +467,7 @@ msgstr "dot konnte nicht ausgeführt werden" #: ../IkiWiki/Plugin/linkmap.pm:85 msgid "linkmap" -msgstr "" +msgstr "Verknüpfungskarte" #: ../IkiWiki/Plugin/lockedit.pm:49 #, perl-format @@ -513,9 +508,8 @@ msgid "Mirror" msgstr "Spiegel" #: ../IkiWiki/Plugin/moderatedcomments.pm:42 -#, fuzzy msgid "comment needs moderation" -msgstr "Kommentar-Moderation" +msgstr "Kommentar muss moderiert werden" #: ../IkiWiki/Plugin/more.pm:8 msgid "more" @@ -534,9 +528,8 @@ msgid "Get an OpenID" msgstr "Eine OpenID anfordern" #: ../IkiWiki/Plugin/orphans.pm:56 -#, fuzzy msgid "All pages have other pages linking to them." -msgstr "Alle Seiten haben mindenstens einen Verweis von einer anderen Seite." +msgstr "Alle Seiten haben mindestens einen Verweis von einer anderen Seite." #: ../IkiWiki/Plugin/pagetemplate.pm:30 msgid "bad or missing template" @@ -544,11 +537,11 @@ msgstr "fehlerhafte oder fehlende Vorlage" #: ../IkiWiki/Plugin/passwordauth.pm:229 msgid "Your user page: " -msgstr "" +msgstr "Ihre Benutzerseite: " #: ../IkiWiki/Plugin/passwordauth.pm:236 msgid "Create your user page" -msgstr "" +msgstr "Benutzerseite erstellen" #: ../IkiWiki/Plugin/passwordauth.pm:264 msgid "Account creation successful. Now you can Login." @@ -604,7 +597,7 @@ msgstr "LWP nicht gefunden, führe Ping nicht aus" #: ../IkiWiki/Plugin/po.pm:15 msgid "warning: Old po4a detected! Recommend upgrade to 0.35." -msgstr "" +msgstr "Warnung: Altes po4a erkannt! Empfehle Aktualisierung auf 0.35" #: ../IkiWiki/Plugin/po.pm:139 #, perl-format @@ -663,9 +656,9 @@ msgid "POT file (%s) does not exist" msgstr "POT-Datei (%s) existiert nicht" #: ../IkiWiki/Plugin/po.pm:885 -#, fuzzy, perl-format +#, perl-format msgid "failed to copy underlay PO file to %s" -msgstr "kopieren der POT-Datei nach %s fehlgeschlagen" +msgstr "konnte die PO-Datei nicht aus dem Underlay nach %s kopieren" #: ../IkiWiki/Plugin/po.pm:894 #, perl-format @@ -889,14 +882,14 @@ msgid "update for rename of %s to %s" msgstr "aktualisiert zum Umbenennen von %s nach %s" #: ../IkiWiki/Plugin/rsync.pm:37 -#, fuzzy, perl-format +#, perl-format msgid "failed to execute rsync_command: %s" -msgstr "lesen von %s fehlgeschlagen" +msgstr "konnte das rsync_command nicht ausführen: %s" #: ../IkiWiki/Plugin/rsync.pm:40 #, perl-format msgid "rsync_command exited %d" -msgstr "" +msgstr "rsync_command gibt Fehler %d zurück" #: ../IkiWiki/Plugin/search.pm:183 #, perl-format @@ -1003,14 +996,14 @@ msgid "failed to generate image from code" msgstr "konnte kein Bild aus dem Code erzeugen" #: ../IkiWiki/Plugin/websetup.pm:91 -#, fuzzy, perl-format +#, perl-format msgid "%s plugin:" -msgstr "Erweiterung" +msgstr "%s-Erweiterung:" #: ../IkiWiki/Plugin/websetup.pm:107 #, fuzzy, perl-format msgid "%s plugins" -msgstr "Erweiterungen" +msgstr "%s-Erweiterungen" #: ../IkiWiki/Plugin/websetup.pm:121 #, perl-format diff --git a/po/underlay.setup b/po/underlay.setup index 333d331d1..c34045981 100644 --- a/po/underlay.setup +++ b/po/underlay.setup @@ -8,7 +8,7 @@ use IkiWiki::Setup::Standard { # will excessively bloat things. po_slave_languages => { 'es' => 'Español', - #'de' => 'Deutsch', + 'de' => 'Deutsch', 'fr' => 'Français', 'da' => 'Dansk', 'cs' => 'česky', diff --git a/po/underlays/basewiki/ikiwiki.de.po b/po/underlays/basewiki/ikiwiki.de.po new file mode 100644 index 000000000..1420df3e6 --- /dev/null +++ b/po/underlays/basewiki/ikiwiki.de.po @@ -0,0 +1,69 @@ +# German translation of basewiki/ikiwiki page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-12 09:37+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "" +"This wiki is powered by [ikiwiki](http://ikiwiki.info/).\n" +"[[!if test=\"enabled(version)\"\n" +" then=\"(Currently running version [[!version ]].)\"\n" +"]]\n" +msgstr "" +"Dieses Wiki basiert auf [ikiwiki](http://ikiwiki.info/).\n" +"[[!if test=\"enabled(version)\"\n" +" then=\"(Es läuft Version [[!version ]].)\"\n" +"]]\n" + +#. type: Plain text +msgid "Some documentation on using ikiwiki:" +msgstr "Dokumentation zur Verwendung von ikiwiki:" + +#. type: Bullet: '* ' +msgid "[[ikiwiki/formatting]]" +msgstr "[[Formatierung|ikiwiki/formatting]]" + +#. type: Bullet: '* ' +msgid "[[ikiwiki/wikilink]]" +msgstr "[[ikiwiki/wikilink]]" + +#. type: Bullet: '* ' +msgid "[[ikiwiki/subpage]]" +msgstr "[[Unterseiten|ikiwiki/subpage]]" + +#. type: Bullet: '* ' +msgid "[[ikiwiki/pagespec]]" +msgstr "[[ikiwiki/pagespec]]" + +#. type: Bullet: '* ' +msgid "[[ikiwiki/directive]]" +msgstr "[[Anweisungen|ikiwiki/directive]]" + +#. type: Bullet: '* ' +msgid "[[ikiwiki/markdown]]" +msgstr "[[ikiwiki/markdown]]" + +#. type: Bullet: '* ' +msgid "[[ikiwiki/openid]]" +msgstr "[[ikiwiki/openid]]" + +#. type: Bullet: '* ' +msgid "[[ikiwiki/searching]]" +msgstr "[[Suchen|ikiwiki/searching]]" + diff --git a/po/underlays/basewiki/ikiwiki/directive.de.po b/po/underlays/basewiki/ikiwiki/directive.de.po new file mode 100644 index 000000000..b8a610c83 --- /dev/null +++ b/po/underlays/basewiki/ikiwiki/directive.de.po @@ -0,0 +1,137 @@ +# German translation of basewiki/ikiwiki/directive page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 15:16+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "" +"[[!meta title=\"Anweisungen\"]]\n" +"[[!meta robots=\"noindex, follow\"]]\n" + +#. type: Plain text +msgid "" +"Directives are similar to a [[ikiwiki/WikiLink]] in form, except they begin " +"with `!` and may contain parameters. The general form is:" +msgstr "" +"Anweisungen haben eine ähnliche Form wie ein [[ikiwiki/WikiLink]], " +"allerdings beginnen sie mit `!` und sie können Parameter enthalten. " +"Die allgemeine Form ist:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!directive param=\"value\" param=\"value\"]]\n" +msgstr "\t\\[[!anweisung param=\"Wert\" param=\"Wert\"]]\n" + +#. type: Plain text +msgid "" +"This gets expanded before the rest of the page is processed, and can be used " +"to transform the page in various ways." +msgstr "" +"Dies wird expandiert, bevor der Rest der Seite verarbeitet wird, und kann " +"auf unterschiedliche Weise genutzt werden, die Seite zu verändern." + +#. type: Plain text +msgid "" +"The quotes around values can be omitted if the value is a simple word. " +"Also, some directives may use parameters without values, for example:" +msgstr "" +"Die Anführungszeichen um die Werte können weggelassen werden, " +"wenn der Wert ein einfaches Wort ist. Einige Anweisungen verwenden " +"auch Parameter ohne Wert, zum Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!tag foo]]\n" +msgstr "\t\\[[!tag foo]]\n" + +#. type: Plain text +msgid "" +"A directive does not need to all be on one line, it can be wrapped to " +"multiple lines if you like:" +msgstr "" +"Eine Anweisung muss nicht ganz in einer einzelnen Zeile stehen, " +"sie kann auch auf mehrere Zeilen verteilt werden:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!directive foo=\"baldersnatch\"\n" +"\tbar=\"supercalifragilisticexpialidocious\" baz=11]]\n" +msgstr "" +"\t\\[[!anweisung foo=\"baldersnatch\"\n" +"\tbar=\"supercalifragilisticexpialidocious\" baz=11]]\n" + +#. type: Plain text +msgid "" +"Also, multiple lines of *quoted* text can be used for a value. To allow " +"quote marks inside the quoted text, delimit the block of text with " +"triple-quotes:" +msgstr "" +"Außerdem können mehrere Zeilen Text *in Anführungszeichen* für einen " +"Wert verwendet werden. Um Anführungszeichen innerhalb des Werts zu " +"ermöglichen, trenne den Textblock durch dreifache Anführungszeichen ab:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!directive text=\"\"\"\n" +msgstr "\t\\[[!anweisung text=\"\"\"\n" + +#. type: Bullet: ' 1. ' +msgid "\"foo\"" +msgstr "\"foo\"" + +#. type: Bullet: ' 2. ' +msgid "\"bar\"" +msgstr "\"bar\"" + +#. type: Bullet: ' 3. ' +msgid "\"baz\"" +msgstr "\"baz\"" + +#. type: Plain text +msgid "" +"ikiwiki also has an older syntax for directives, which requires a space in " +"directives to distinguish them from [[wikilinks|ikiwiki/wikilink]]. This " +"syntax has several disadvantages: it requires a space after directives with " +"no parameters (such as `\\[[pagecount ]]`), and it prohibits spaces in " +"[[wikilinks|ikiwiki/wikilink]]. ikiwiki now provides the `!`-prefixed " +"syntax shown above as default. However, ikiwiki still supports wikis using " +"the older syntax, if the `prefix_directives` option is disabled." +msgstr "" +"Es gibt in ikiwiki auch eine ältere Syntax für Anweisungen, die ein " +"Leerzeichen in erfordert, um sie von [[Wiki-Links|ikiwiki/wikilink]] zu " +"unterscheiden. Diese Syntax hat mehrere Nachteile: Sie erfordert ein " +"Leerzeichen nach Anweisungen ohne Parameter (so wie " +"`\\[[pagecount ]]`), and sie verbietet Leerzeichen in " +"[[Wiki-Links|ikiwiki/wikilink]]. Die oben gezeigte Syntax mit `!`-Präfix " +"ist nun der Standard in ikiwiki. Die alte Syntax wird allerdings auch " +"noch unterstützt, wenn die Option `prefix_directives` deaktiviert wird." + +#. type: Plain text +#, no-wrap +msgid "[[!if test=\"enabled(listdirectives)\" then=\"\"\"\n" +msgstr "[[!if test=\"enabled(listdirectives)\" then=\"\"\"\n" + +#. type: Plain text +msgid "Here is a list of currently available directives in this wiki:" +msgstr "" +"Hier ist eine Liste der aktuell verfügbaren Anweisungen in diesem Wiki:" + +#. type: Plain text +#, no-wrap +msgid "[[!listdirectives ]]\n" +msgstr "[[!listdirectives ]]\n" + + diff --git a/po/underlays/basewiki/ikiwiki/formatting.de.po b/po/underlays/basewiki/ikiwiki/formatting.de.po new file mode 100644 index 000000000..04b604289 --- /dev/null +++ b/po/underlays/basewiki/ikiwiki/formatting.de.po @@ -0,0 +1,299 @@ +# German translation of basewiki/ikiwiki/formatting page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 13:35+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta title=\"Formatting wiki pages\"]]\n" +msgstr "[[!meta title=\"Wiki-Seiten formatieren\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + +#. type: Plain text +msgid "" +"Text on this wiki is, by default, written in a form very close to how you " +"might write text for an email message. This style of text formatting is " +"called [[MarkDown]], and it works like this:" +msgstr "" +"Text wird in diesem Wiki standardmäßig in einer Form geschrieben, die " +"sehr stark dem ähnelt, wie man eine E-Mail schreibt. Dieser " +"Formatierungs-Stil wird [[MarkDown]] genannt und funktioniert folgendermaßen:" + +#. type: Plain text +msgid "Leave blank lines between paragraphs." +msgstr "Lasse Leerzeilen zwischen Absätzen." + +#. type: Plain text +msgid "" +"You can *\\*emphasise\\** or **\\*\\*strongly emphasise\\*\\*** text by " +"placing it in single or double asterisks." +msgstr "" +"Man kann Text *\\*hervorheben\\** oder **\\*\\*stark hervorheben\\*\\***, " +"indem man ihn zwischen einfache oder doppelte Sternchen setzt." + +#. type: Plain text +msgid "To create a list, start each line with an asterisk:" +msgstr "Um eine Liste zu erstellen, beginne jede Zeile mit einem Sternchen:" + +#. type: Bullet: '* ' +msgid "\"* this is my list\"" +msgstr "\"* Dies ist meine Liste\"" + +#. type: Bullet: '* ' +msgid "\"* another item\"" +msgstr "\"* Noch ein Eintrag.\"" + +#. type: Plain text +msgid "" +"To make a numbered list, start each line with a number (any number will do) " +"followed by a period:" +msgstr "" +"Um eine nummerierte Liste zu erhalten, beginne jede Zeile mit einer Zahl " +"(welche ist egal), auf die ein Punkt folgt:" + +#. type: Bullet: '1. ' +msgid "\"1. first line\"" +msgstr "\"1. Erste Zeile\"" + +#. type: Bullet: '2. ' +msgid "\"2. second line\"" +msgstr "\"2. Zweite Zeile\"" + +#. type: Bullet: '2. ' +msgid "\"2. third line\"" +msgstr "\"2. Dritte Zeile\"" + +#. type: Plain text +msgid "" +"To create a header, start a line with one or more `#` characters followed by " +"a space and the header text. The number of `#` characters controls the size " +"of the header:" +msgstr "" +"Um eine Überschrift zu erstellen, beginne eine Zeile mit einem oder mehreren " +"`#`-Zeichen gefolgt von einem Leerzeichen und dem Text der Überschrift. " +"Die Anzahl der `#` steuert die Größe der Überschriften:" + +#. type: Title # +#, no-wrap +msgid "# h1" +msgstr "# h1 " + +#. type: Title ## +#, no-wrap +msgid "## h2" +msgstr "## h2" + +#. type: Title ### +#, no-wrap +msgid "### h3" +msgstr "### h3" + +#. type: Title #### +#, no-wrap +msgid "#### h4" +msgstr "#### h4" + +#. type: Title ##### +#, no-wrap +msgid "##### h5" +msgstr "##### h5" + +#. type: Title ###### +#, no-wrap +msgid "###### h6" +msgstr "###### h6" + +#. type: Plain text +msgid "" +"To create a horizontal rule, just write three or more dashes or stars on " +"their own line:" +msgstr "" +"Um eine horizontale Linie zu erzeugen, schreibe einfach drei oder mehr " +"Bindestriche oder Sternchen allein in eine Zeile:" + +#. type: Plain text +#, no-wrap +msgid "To quote someone, prefix the quote with \">\":\n" +msgstr "Um jemanden zu zitieren, stelle dem Zitat `>` voran:\n" + +#. type: Plain text +#, no-wrap +msgid "" +"> To be or not to be,\n" +"> that is the question.\n" +msgstr "" +"> Sein oder nicht sein,\n" +"> das ist die Frage.\n" + +#. type: Plain text +msgid "To write a code block, indent each line with a tab or 4 spaces:" +msgstr "" +"Um einen Block mit Programmcode zu schreiben, rücke jede Zeile mit " +"einem Tabulatorzeichen oder 4 Leerzeichen ein:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t10 PRINT \"Hello, world!\"\n" +"\t20 GOTO 10\n" +msgstr "" +"\t10 PRINT \"Hallo, Welt!\"\n" +"\t20 GOTO 10\n" + +#. type: Plain text +#, no-wrap +msgid "" +"To link to an url or email address, you can just put the\n" +"url in angle brackets: <>, or you can use the\n" +"form \\[link text\\]\\(url\\)\n" +msgstr "" +"Um eine URL oder E-Mail-Adresse zu verlinken, kann man die\n" +"URL einfach ein spitze Klammern schreiben: <>; " +"man kann auch die Form \\[Link-Text\\]\\(URL)\) verwenden.\n" + +#. type: Plain text +msgid "" +"In addition to basic html formatting using [[MarkDown]], this wiki lets you " +"use the following additional features:" +msgstr "" +"Zusätzlich zu der einfachen HTML-Formatierung mit [[MarkDown]] können " +"in diesem Wiki die folgenden zusätzlichen Funktionen verwenden werden:" + +#. type: Bullet: '* ' +msgid "" +"To link to another page on the wiki, place the page's name inside double " +"square brackets. So you would use `\\[[WikiLink]]` to link to [[WikiLink]]." +msgstr "" +"Um eine andere Seite des Wikis zu verlinken, schreibe den Namen dieser " +"Seite in doppelte eckige Klammern. Zum Beispiel kann man mit " +"`\\[[WikiLink]]` auf [[WikiLink]] verweisen." + +#. type: Plain text +#, no-wrap +msgid "[[!if test=\"enabled(smiley) and smileys\" then=\"\"\"\n" +msgstr "[[!if test=\"enabled(smiley) and smileys\" then=\"\"\"\n" + +#. type: Bullet: '* ' +msgid "Insert [[smileys]] and some other useful symbols. :-)" +msgstr "[[Smileys|smileys]] und einige andere nützliche Symbole einfügen. :-)" + +#. type: Plain text +#, no-wrap +msgid "[[!if test=\"enabled(shortcut) and shortcuts\" then=\"\"\"\n" +msgstr "[[!if test=\"enabled(shortcut) and shortcuts\" then=\"\"\"\n" + +#. type: Bullet: '* ' +msgid "Use [[shortcuts]] to link to common resources." +msgstr "" +"[[Abkürzungen|shortcuts]] verwenden, um auf gängige Quellen zu verweisen." + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!wikipedia War\\_of\\_1812]]\n" +msgstr "\t\\[[!wikipedia War\\_of\\_1812]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!if test=\"enabled(template) and templates\" then=\"\"\"\n" +msgstr "[[!if test=\"enabled(template) and templates\" then=\"\"\"\n" + +#. type: Bullet: '* ' +msgid "" +"Create and fill out [[templates]] for repeated chunks of parameterized wiki " +"text." +msgstr "" +"[[Vorlagen|templates]] erstellen und ausfüllen für wiederholte Blöcke " +"von parametrisiertem Wiki-Text." + +#. type: Plain text +#, no-wrap +msgid "" +"* Insert various [[directives|directive]] onto a page to perform useful\n" +" actions.\n" +"[[!if test=\"enabled(toc) or enabled(meta) or enabled(inline)\" " +"then=\"\"\"\n" +msgstr "" +"* Unterschiedliche [[Anweisungen|directives]] in eine Seite einfügen,\n" +" die nützliche Aktionen durchführen.\n" +"[[!if test=\"enabled(toc) or enabled(meta) or enabled(inline)\" " +"then=\"\"\"\n" + +#. type: Plain text +#, no-wrap +msgid " For example, you can:\n" +msgstr " Zum Beispiel kann man:\n" + +#. type: Plain text +#, no-wrap +msgid "[[!if test=\"enabled(toc)\" then=\"\"\"\n" +msgstr "[[!if test=\"enabled(toc)\" then=\"\"\"\n" + +#. type: Bullet: ' * ' +msgid "Add a table of contents to a page:" +msgstr "Ein Inhaltsverzeichnis zu einer Seite hinzufügen:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!toc]]\n" +msgstr "\t\\[[!toc]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!if test=\"enabled(meta)\" then=\"\"\"\n" +msgstr "[[!if test=\"enabled(meta)\" then=\"\"\"\n" + +#. type: Bullet: ' * ' +msgid "Change the title of a page:" +msgstr "Den Titel einer Seite verändern:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!meta title=\"full page title\"]]\n" +msgstr "\t\\[[!meta title=\"Vollständiger Titel der Seite\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!if test=\"enabled(inline)\" then=\"\"\"\n" +msgstr "[[!if test=\"enabled(inline)\" then=\"\"\"\n" + +#. type: Bullet: ' * ' +msgid "Create a blog by inlining a set of pages:" +msgstr "Einen Blog durch Einbetten mehrerer Seiten erstellen:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!inline pages=\"blog/*\"]]\n" +msgstr "\t\\[[!inline pages=\"blog/*\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!if test=\"enabled(listdirectives)\" then=\"\"\"\n" +msgstr "[[!if test=\"enabled(listdirectives)\" then=\"\"\"\n" + +#. type: Plain text +#, no-wrap +msgid " Full list of [[directives|directive]] enabled for this wiki:\n" +msgstr "" +" Eine vollständige Liste der in diesem Wiki aktivierten " +"[[Anweisungen|directive]]:\n" + +#. type: Plain text +#, no-wrap +msgid " [[!listdirectives ]]\n" +msgstr " [[!listdirectives ]]\n" + + diff --git a/po/underlays/basewiki/ikiwiki/markdown.de.po b/po/underlays/basewiki/ikiwiki/markdown.de.po new file mode 100644 index 000000000..a42c41439 --- /dev/null +++ b/po/underlays/basewiki/ikiwiki/markdown.de.po @@ -0,0 +1,52 @@ +# German translation of basewiki/ikiwiki/markdown page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 13:36+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + +#. type: Plain text +msgid "" +"[Markdown](http://daringfireball.net/projects/markdown/) is a minimal " +"markup language that resembles plain text as used in email messages. It is " +"the markup language used by this wiki by default." +msgstr "" +"[Markdown](http://daringfireball.net/projects/markdown/) ist eine minimale " +"Sprache für Hervorhebungen, die sich an einfachem Text orientiert, wie er " +"in " +"E-Mail-Nachrichten verwendet wird. Diese Hervorhebungssprache wird " +"standardmäßig in diesem Wiki verwendet." + +#. type: Plain text +msgid "" +"For documentation about the markdown syntax, see [[formatting]] and " +"[Markdown: syntax](http://daringfireball.net/projects/markdown/syntax)." +msgstr "" +"Für die Dokumentation der Markdown-Syntax siehe " +"[[Formatierung|formatting]] " +"und [Markdown: Syntax](http://daringfireball.net/projects/markdown/syntax)." + +#. type: Plain text +msgid "" +"Note that [[WikiLinks|WikiLink]] and [[directives|directive]] are not part " +"of the markdown syntax, and are the only bit of markup that this wiki " +"handles internally." +msgstr "" +"Beachte dabei, dass [[WikiLinks|WikiLink]] und [[Anweisungen|directive]] " +"nicht Teil der Markdown-Syntax sind: Sie sind die einzigen " +"Formatierungsanweisungen, die dieses Wiki intern verarbeitet." + + diff --git a/po/underlays/basewiki/ikiwiki/openid.de.po b/po/underlays/basewiki/ikiwiki/openid.de.po new file mode 100644 index 000000000..f278e64fc --- /dev/null +++ b/po/underlays/basewiki/ikiwiki/openid.de.po @@ -0,0 +1,115 @@ +# German translation of basewiki/ikiwiki/openid page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-12 22:29+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta title=\"OpenID\"]]\n" +msgstr "[[!meta title=\"OpenID\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "" +"[[!if test=\"enabled(openid)\"\n" +" then=\"This wiki has OpenID **enabled**.\"\n" +" else=\"This wiki has OpenID **disabled**.\"]]\n" +msgstr "" +"[[!if test=\"enabled(openid)\"\n" +" then=\"In diesem Wiki ist OpenID **aktiviert**.\"\n" +" else=\"In diesem Wiki ist OpenID **deaktiviert**.\"]]\n" + +#. type: Plain text +msgid "" +"[OpenID](http://openid.net) is a decentralized authentication mechanism that " +"allows you to have one login that you can use on a growing number of " +"websites." +msgstr "" +"[OpenID](http://openid.net) ist ein Mechanismus zur dezentralen " +"Authentifizierung, der es erlaubt, sich mit einem einzigen Benutzerkonto bei " +"einer wachsenden Anzahl von Webseiten anzumelden." + +#. type: Plain text +msgid "To sign up for an OpenID, visit one of the following identity providers:" +msgstr "" +"Eine OpenID kann man bei einem der folgenden Identitäts-Anbieter erhalten:" + +#. type: Bullet: '* ' +msgid "[MyOpenID](https://www.myopenid.com/)" +msgstr "[MyOpenID](https://www.myopenid.com/)" + +#. type: Bullet: '* ' +msgid "[GetOpenID](https://getopenid.com/)" +msgstr "[GetOpenID](https://getopenid.com/)" + +#. type: Bullet: '* ' +msgid "[LiveJournal](http://www.livejournal.com/openid/)" +msgstr "[LiveJournal](http://www.livejournal.com/openid/)" + +#. type: Bullet: '* ' +msgid "[TrustBearer](https://openid.trustbearer.com/)" +msgstr "[TrustBearer](https://openid.trustbearer.com/)" + +#. type: Bullet: '* ' +msgid "" +"or any of the [many others out " +"there](http://openiddirectory.com/openid-providers-c-1.html)" +msgstr "" +"oder einem der [vielen anderen](http://openiddirectory." +"com/openid-providers-c-1.html)." + +#. type: Plain text +#, no-wrap +msgid "" +"Your OpenID is the URL that you are given when you sign up.\n" +"[[!if test=\"enabled(openid)\" then=\"\"\"\n" +msgstr "" +"Eine OpenID ist eine URL, die man bei der Anmeldung von seinem Anbieter " +"erhält.\n" +"[[!if test=\"enabled(openid)\" then=\"\"\"\n" + +#. type: Plain text +msgid "" +"To sign in to this wiki using OpenID, just enter it in the OpenID field in " +"the signin form. You do not need to give this wiki a password or go through " +"any registration process when using OpenID." +msgstr "" +"In diesem Wiki kann man sich per OpenID anmelden, indem man einfach seine " +"OpenID im entsprechenden Feld des Anmeldeformulars eingibt. Man muss in " +"diesem Wiki kein Passwort setzen und auch keinen Registrierungsprozess " +"durchlaufen, wenn man OpenID verwendet." + +#. type: Plain text +msgid "" +"It's also possible to make a page in the wiki usable as an OpenID url, by " +"delegating it to an openid server. Here's an example of how to do that:" +msgstr "" +"Außerdem ist es möglich, eine Seite dieses Wikis als OpenID-URL verwendbar zu " +"machen, indem sie an einen OpenID-Server weitergereicht wird. Hier ist ein " +"Beispiel, wie dies gemacht wird:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!meta openid=\"http://yourid.myopenid.com/\"\n" +"\t server=\"http://www.myopenid.com/server\"]]\n" +msgstr "" +"\t\\[[!meta openid=\"http://yourid.myopenid.com/\"\n" +"\t server=\"http://www.myopenid.com/server\"]]\n" + + diff --git a/po/underlays/basewiki/ikiwiki/pagespec.de.po b/po/underlays/basewiki/ikiwiki/pagespec.de.po new file mode 100644 index 000000000..ab4d62da3 --- /dev/null +++ b/po/underlays/basewiki/ikiwiki/pagespec.de.po @@ -0,0 +1,258 @@ +# German translation of basewiki/ikiwiki/pagespec page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 13:39+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + +#. type: Plain text +msgid "" +"To select a set of pages, such as pages that are locked, pages whose commit " +"emails you want subscribe to, or pages to combine into a blog, the wiki uses " +"a PageSpec. This is an expression that matches a set of pages." +msgstr "" +"Um eine Menge von Seiten auszuwählen (etwa Seiten, die gesperrt werden sollen, " +"deren Einrechungs-Mails man abonnieren will, oder die man zu einem Blog " +"kombinieren will), verwendet das Wiki eine PageSpec. Dies ist ein Ausdruck, " +"der auf bestimmte Seiten passt." + +#. type: Plain text +msgid "" +"The simplest PageSpec is a simple list of pages. For example, this matches " +"any of the three listed pages:" +msgstr "" +"Die einfachste PageSpec ist eine einfache Liste von Seiten. Zum Beispiel passt " +"dies " +"auf jede der drei aufgezählten Seiten:" + +#. type: Plain text +#, no-wrap +msgid "\tfoo or bar or baz\n" +msgstr "\tfoo or bar or baz\n" + +#. type: Plain text +msgid "" +"More often you will want to match any pages that have a particular thing in " +"their name. You can do this using a glob pattern. \"`*`\" stands for any " +"part of a page name, and \"`?`\" for any single letter of a page name. So " +"this matches all pages about music, and any [[SubPage]]s of the SandBox, but " +"does not match the SandBox itself:" +msgstr "" +"Häufiger wird es vorkommen, dass man Seiten erfassen will, deren Name etwas " +"bestimmtes enthält. Man kann dies mit einem Muster tun: \"`*`\" steht für " +"einen beliebigen Teil eines Seitennamens und \"`?`\" steht für einen beliebigen " +"Buchstaben eines Seitennamens. Also passt dies alle Seiten über Musik, und alle " +"[[Unterseiten|SubPage]] des Sandkastens, aber nicht auf den Sandkasten selbst:" + +#. type: Plain text +#, no-wrap +msgid "\t*music* or SandBox/*\n" +msgstr "\t*music* or SandBox/*\n" + +#. type: Plain text +msgid "" +"You can also prefix an item with \"`!`\" to skip pages that match it. So to " +"match all pages except for Discussion pages and the SandBox:" +msgstr "" +"Man kann einem Eintrag ein \"`!`\" voranstellen, um die betreffenden Seiten " +"auszuschließen. Auf diese Weise können alle Seiten außer Diskussionsseiten und " +"Sandkasten erfasst werden:" + +#. type: Bullet: ' * ' +msgid "and !SandBox and !*/Discussion" +msgstr "and !SandBox and !*/Discussion" + +#. type: Plain text +msgid "" +"Some more elaborate limits can be added to what matches using these " +"functions:" +msgstr "" +"Einige weitergehende Einschränkungen können hinzugefügt werden, indem die " +"folgenden Funktionen verwendet werden:" + +#. type: Bullet: '* ' +msgid "\"`link(page)`\" - matches only pages that link to a given page (or glob)" +msgstr "" +"\"`link(page)`\" - passt nur auf Seiten, die einen Link auf die angegebene Seite " +"(oder das angegebene Muster) enthalten" + +#. type: Bullet: '* ' +msgid "" +"\"`tagged(tag)`\" - matches pages that are tagged or link to the given tag " +"(or tags matched by a glob)" +msgstr "" +"\"`tagged(tag)`\" - passt nur auf Seiten, die mit dem angegebenen Tag versehen " +"sind oder auf diesen verweisen (auch hier kann ein Muster verwendet werden)" + +#. type: Bullet: '* ' +msgid "\"`backlink(page)`\" - matches only pages that a given page links to" +msgstr "" +"\"`backlink(page)`\" - passt nur auf Seiten, auf die von der angegebenen Seite " +"verwiesen wird" + +#. type: Bullet: '* ' +msgid "\"`creation_month(month)`\" - matches only pages created on the given month" +msgstr "" +"\"`creation_month(month)`\" - passt nur auf Seiten, die im angegebenen Monat " +"erstellt wurden" + +#. type: Bullet: '* ' +msgid "\"`creation_day(mday)`\" - or day of the month" +msgstr "\"`creation_day(mday)`\" - genauso für einen Tag im Monat" + +#. type: Bullet: '* ' +msgid "\"`creation_year(year)`\" - or year" +msgstr "\"`creation_year(year)`\" - der ein Jahr" + +#. type: Bullet: '* ' +msgid "" +"\"`created_after(page)`\" - matches only pages created after the given page " +"was created" +msgstr "" +"\"`created_after(page)`\" - passt nur auf Seiten, die nach der angegebenen Seite " +"angelegt wurden" + +#. type: Bullet: '* ' +msgid "" +"\"`created_before(page)`\" - matches only pages created before the given " +"page was created" +msgstr "" +"\"`created_before(page)`\" - passt nur auf Seiten, die vor der angegebenen Seite " +"angelegt wurden." + +#. type: Bullet: '* ' +msgid "" +"\"`glob(someglob)`\" - matches pages that match the given glob. Just writing " +"the glob by itself is actually a shorthand for this function." +msgstr "" +"\"`glob(someglob)`\" - passt nur auf Seiten, auf die das angegebene Muster passt." +" " +"Das Muster direkt anzugeben ist eine Abkürzung für diese Funktion." + +#. type: Bullet: '* ' +msgid "" +"\"`internal(glob)`\" - like `glob()`, but matches even internal-use pages " +"that globs do not usually match." +msgstr "" +"\"`internal(glob)`\" - wie `glob()`, aber es werden auch intern verwendete " +"Seiten " +"erfasst, auf die normale Muster nicht passen." + +#. type: Bullet: '* ' +msgid "" +"\"`title(glob)`\", \"`author(glob)`\", \"`authorurl(glob)`\", " +"\"`license(glob)`\", \"`copyright(glob)`\" - match pages that have the given " +"metadata, matching the specified glob." +msgstr "" +"\"`title(glob)`\", \"`author(glob)`\", \"`authorurl(glob)`\", " +"\"`license(glob)`\", \"`copyright(glob)`\" - passt auf Seiten, deren Metadaten " +"auf die angegebenen Muster passen." + +#. type: Bullet: '* ' +msgid "" +"\"`user(username)`\" - tests whether a modification is being made by a user " +"with the specified username. If openid is enabled, an openid can also be put " +"here. Glob patterns can be used in the username. For example, to match all " +"openid users, use `user(*://*)`" +msgstr "" +"\"`user(username)`\" - prüft ob eine Änderung von einem Benutzer mit dem " +"angegebenen Namen gemacht wird. Wenn OpenID aktiviert ist, kann auch eine " +"OpenID angegeben werden. Muster können im Benutzernamen verwendet werden. " +"zum Beispiel können alle OpenID-Nutzer mit `user(*://*)` erfasst werden." + +#. type: Bullet: '* ' +msgid "" +"\"`admin()`\" - tests whether a modification is being made by one of the " +"wiki admins." +msgstr "" +"\"`admin()`\" - prüft ob eine Änderung durch einen der Wiki-Administratoren " +"gemacht wird." + +#. type: Bullet: '* ' +msgid "" +"\"`ip(address)`\" - tests whether a modification is being made from the " +"specified IP address." +msgstr "" +"\"`ip(address)`\" - prüft ob eine Änderung von der angegebenen IP-Adresse aus " +"gemacht wird." + +#. type: Bullet: '* ' +msgid "" +"\"`postcomment(glob)`\" - matches only when comments are being posted to a " +"page matching the specified glob" +msgstr "" +"\"`postcomment(glob)`\" - passt nur, wenn ein Kommentar zu einer durch das " +"Muster angegebenen Seite gemacht wird" + +#. type: Plain text +msgid "" +"For example, to match all pages in a blog that link to the page about music " +"and were written in 2005:" +msgstr "" +"Zum Beispiel können alle Seiten eines Blogs ausgewählt werden, die einen Link " +"zu einer Seite über Musik enthalten und 2005 geschrieben wurden:" + +#. type: Plain text +#, no-wrap +msgid "\tblog/* and link(music) and creation_year(2005)\n" +msgstr "\tblog/* and link(music) and creation_year(2005)\n" + +#. type: Plain text +msgid "" +"Note the use of \"and\" in the above example, that means that only pages " +"that match each of the three expressions match the whole. Use \"and\" when " +"you want to combine expression like that; \"or\" when it's enough for a page " +"to match one expression. Note that it doesn't make sense to say \"index and " +"SandBox\", since no page can match both expressions." +msgstr "" +"Beachte die Verwendung von `and` im obigen Beispiel: Dies bewirkt, dass " +"nur die Seiten auf den gesamten Ausdruck passen, die auf alle drei " +"Teilausdrücke passen. Verwende `and` um Ausdrücke so zu kombinieren " +"und `or` wenn eine Seite nur auf einen der Ausdrücke passen soll. Beachte " +"dass es sinnlos ist, `index and SandBox` zu sagen, da keine Seite auf beide " +"Ausdrücke passen kann." + +#. type: Plain text +msgid "" +"More complex expressions can also be created, by using parentheses for " +"grouping. For example, to match pages in a blog that are tagged with either " +"of two tags, use:" +msgstr "" +"Es können auch komplexere Ausdrücke erstellt werden, indem Klammern " +"zur Gruppierung verwendet werden. Zum Beispiel passt der folgende " +"Ausdruck auf Blog-Seiten, die mit einem der beiden angegebenen Tags " +"versehen sind:" + +#. type: Plain text +#, no-wrap +msgid "\tblog/* and (tagged(foo) or tagged(bar))\n" +msgstr "\tblog/* and (tagged(foo) or tagged(bar))\n" + +#. type: Plain text +msgid "" +"Note that page names in PageSpecs are matched against the absolute filenames " +"of the pages in the wiki, so a pagespec \"foo\" used on page \"a/b\" will " +"not match a page named \"a/foo\" or \"a/b/foo\". To match relative to the " +"directory of the page containing the pagespec, you can use \"./\". For " +"example, \"./foo\" on page \"a/b\" matches page \"a/foo\"." +msgstr "" +"Beachte, dass Seitennamen in PageSpecs auf den absoluten Dateinamen " +"der Seiten im Wiki passen müssen: Die PageSpec `foo` auf der Seite `a/b` " +"wird weder auf `a/foo` noch auf `a/b/foo` passen. Um relative Pfade zum " +"Verzeichnis der Seite, die die PageSpec enthält, zu verwenden, kannst du " +"`./` verwenden. Zum Beispiel passt `./foo` auf der Seite `a/b` auf `a/foo`." + + diff --git a/po/underlays/basewiki/ikiwiki/pagespec/attachment.de.po b/po/underlays/basewiki/ikiwiki/pagespec/attachment.de.po new file mode 100644 index 000000000..690e41636 --- /dev/null +++ b/po/underlays/basewiki/ikiwiki/pagespec/attachment.de.po @@ -0,0 +1,122 @@ +# German translation of basewiki/ikiwiki/pagespec/attachment page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 15:17+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "" +"[[!meta title=\"Anhänge\"]]\n" +"[[!meta robots=\"noindex, follow\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "" +"[[!if test=\"enabled(attachment)\"\n" +" then=\"This wiki has attachments **enabled**.\"\n" +" else=\"This wiki has attachments **disabled**.\"]]\n" +msgstr "" +"[[!if test=\"enabled(attachment)\"\n" +" then=\"In diesem Wiki sind Anhänge **aktiviert**.\"\n" +" else=\"In diesem Wiki sind Anhänge **deaktiviert**.\"]]\n" + +#. type: Plain text +msgid "" +"If attachments are enabled, the wiki admin can control what types of " +"attachments will be accepted, via the `allowed_attachments` configuration " +"setting." +msgstr "" +"Wenn Anhänge aktiviert sind, kann der Administrator des Wikis bestimmen, " +"welche Arten von Anhängen akzeptiert werden, indem er die Einstellung " +"`allowed_attachments` verändert." + +#. type: Plain text +msgid "" +"For example, to limit arbitrary files to 50 kilobytes, but allow larger mp3 " +"files to be uploaded by joey into a specific directory, and check all " +"attachments for viruses, something like this could be used:" +msgstr "" +"Zum Beispiel können beliebige Dateien auf 50 Kilobyte beschränkt, " +"aber größere mp3-Dateien von joey in einem bestimmten Verzeichnis erlaubt, " +"und alle Anhänge nach Viren durchsucht werden, indem etwas wie " +"das Folgende verwendet wird:" + +#. type: Plain text +#, no-wrap +msgid "" +"\tvirusfree() and ((user(joey) and podcast/*.mp3 and mimetype(audio/mpeg) " +"and maxsize(15mb)) or (!ispage() and maxsize(50kb)))\n" +msgstr "" +"\tvirusfree() and ((user(joey) and podcast/*.mp3 and mimetype(audio/mpeg) " +"and maxsize(15mb)) or (!ispage() and maxsize(50kb)))\n" + +#. type: Plain text +msgid "" +"The regular [[ikiwiki/PageSpec]] syntax is expanded with the following " +"additional tests:" +msgstr "" +"Die reguläre [[ikiwiki/PageSpec]]-Syntax ist um die folgenden zusätzlichen " +"Tests erweitert:" + +#. type: Bullet: '* ' +msgid "" +"\"`maxsize(size)`\" - tests whether the attachment is no larger than the " +"specified size. The size defaults to being in bytes, but \"kb\", \"mb\", " +"\"gb\" etc can be used to specify the units." +msgstr "" +"\"`maxsize(size)`\" - prüft ob der Anhang nicht größer ist als angegeben. " +"Die Größe wird standardmäßig in Bytes angegeben, aber `kb`, `mb`, " +"`gb` und so weiter kann verwendet werden, um die Einheit anzugeben." + +#. type: Bullet: '* ' +msgid "" +"\"`minsize(size)`\" - tests whether the attachment is no smaller than the " +"specified size." +msgstr "" +"\"`minsize(size)`\" - prüft ob der Anhang nicht kleiner ist als angegeben." + +#. type: Bullet: '* ' +msgid "" +"\"`ispage()`\" - tests whether the attachment will be treated by ikiwiki as " +"a wiki page. (Ie, if it has an extension of \".mdwn\", or of any other " +"enabled page format)." +msgstr "" +"\"`ispage()`\" - prüft ob der Anhang von ikiwiki als Wiki-Seite behandelt " +"wird. Dies ist der Fall, wenn er die Endung `.mdwn` oder die eines anderen " +"aktivierten Seitenformats hat." + +#. type: Plain text +#, no-wrap +msgid "" +" So, if you don't want to allow wiki pages to be uploaded as attachments,\n" +" use `!ispage()` ; if you only want to allow wiki pages to be uploaded\n" +" as attachments, use `ispage()`.\n" +msgstr "" +" Wenn man also verhindern will, dass Wiki-Seiten als Anhang hochgeladen\n" +" werden, kann `!ispage()` verwendet werden; wenn nur Wiki-Seiten\n" +" hochgeladen werden können sollen, geht dies mit `ispage()`.\n" + +#. type: Bullet: '* ' +msgid "" +"\"`mimetype(foo/bar)`\" - checks the MIME type of the attachment. You can " +"include a glob in the type, for example `mimetype(image/*)`." +msgstr "" +"\"`mimetype(foo/bar)`\" - prüft den MIME-Typ des Anhangs. Man kann ein " +"Muster für den Typen verwenden, zum Beispiel `mimetype(image/*)`." + +#. type: Bullet: '* ' +msgid "\"`virusfree()`\" - checks the attachment with an antiviral program." +msgstr "\"`virusfree()`\" - prüft den Anhang mit einem Virenscanner." + + diff --git a/po/underlays/basewiki/ikiwiki/pagespec/po.de.po b/po/underlays/basewiki/ikiwiki/pagespec/po.de.po new file mode 100644 index 000000000..056552a4f --- /dev/null +++ b/po/underlays/basewiki/ikiwiki/pagespec/po.de.po @@ -0,0 +1,70 @@ +# German translation of basewiki/ikiwiki/pagespec/po page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 13:55+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "" +"[[!if test=\"enabled(po)\"\n" +" then=\"This wiki has po support **enabled**.\"\n" +" else=\"This wiki has po support **disabled**.\"]]\n" +msgstr "" +"[[!if test=\"enabled(po)\"\n" +" then=\"In diesem Wiki ist die po-Unterstützung **aktiviert**.\"\n" +" else=\"In diesem Wiki ist die po-Unterstützung **deaktiviert**.\"]]\n" + +#. type: Plain text +msgid "" +"If the [[!iki plugins/po desc=po]] plugin is enabled, the regular " +"[[ikiwiki/PageSpec]] syntax is expanded with the following additional tests " +"that can be used to improve user navigation in a multi-lingual wiki:" +msgstr "" +"Wenn die [[!iki plugins/po desc=po]]-Erweiterung aktiviert ist, ist die " +"reguläre " +"[[ikiwiki/PageSpec]]-Syntax um die folgenden zusätzlichen Tests erweitert, " +"die zur Verbesserung der Benutzernavigation in mehrsprachigen Wikis " +"verwendet werden kann:" + +#. type: Bullet: '* ' +msgid "" +"\"`lang(LL)`\" - tests whether a page is written in the language specified " +"as a ISO639-1 (two-letter) language code." +msgstr "" +"\"`lang(LL)`\" - prüft ob eine Seite in der angegebenen Sprache geschrieben " +"ist. " +"Die Sprache wird als (zweibuchstabiger) Sprachcode nach ISO639-1 angegeben." + +#. type: Bullet: '* ' +msgid "" +"\"`currentlang()`\" - tests whether a page is written in the same language " +"as the current page." +msgstr "" +"\"`currentlang()`\" - prüft, ob eine Seite in der gleichen Sprache " +"geschrieben ist wie " +"die aktuelle Seite." + +#. type: Plain text +msgid "" +"Note that every non-po page is considered to be written in " +"`po_master_language`, as specified in `ikiwiki.setup`." +msgstr "" +"Beachte, dass als Sprache jeder nicht-po-Seite `po_master_language` " +" angenommen wird, wie in `ikiwiki.setup` angegeben." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/basewiki/ikiwiki/pagespec/sorting.de.po b/po/underlays/basewiki/ikiwiki/pagespec/sorting.de.po new file mode 100644 index 000000000..7ca179a6a --- /dev/null +++ b/po/underlays/basewiki/ikiwiki/pagespec/sorting.de.po @@ -0,0 +1,48 @@ +# German translation of basewiki/ikiwiki/pagespec/sorting page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 15:19+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"Some [[directives|ikiwiki/directive]] that use " +"[[PageSpecs|ikiwiki/pagespec]] allow specifying the order that matching " +"pages are shown in. The following sort orders can be specified." +msgstr "" +"[[!meta title=\"Sortierung\"]]\n" +"Bei einigen der [[Anweisungen|ikiwiki/directive]], die [[PageSpecs|ikiwiki/pagespec]] verwenden, kann eine Reihenfolge angegeben werden, in der die ausgewählten Seiten angezeigt werden. Die folgenden Sortierreihenfolgen können angegeben werden:" + +#. type: Bullet: '* ' +msgid "`age` - List pages from the most recently created to the oldest." +msgstr "`age` - Zeige die Seiten von der zuletzt angelegten zur ältesten." + +#. type: Bullet: '* ' +msgid "`mtime` - List pages with the most recently modified first." +msgstr "`mtime` - Zeige die Seiten mit der zuletzt veränderten zuerst." + +#. type: Bullet: '* ' +msgid "`title` - Order by title." +msgstr "`title` - Sortiere nach Titel." + +#. type: Bullet: '* ' +msgid "" +"`title_natural` - Only available if [[!cpan Sort::Naturally]] is " +"installed. Orders by title, but numbers in the title are treated as such, " +"(\"1 2 9 10 20\" instead of \"1 10 2 20 9\")" +msgstr "" +"`title_natural` - Nur verfügbar, wenn [[!cpan Sort::Naturally]] " +"installiert ist. " +"Sortiert nach Titel, aber Zahlen im Titel werden als solche behandelt" +"(\"1 2 9 10 20\" statt \"1 10 2 20 9\")." + + diff --git a/po/underlays/basewiki/ikiwiki/searching.de.po b/po/underlays/basewiki/ikiwiki/searching.de.po new file mode 100644 index 000000000..211117995 --- /dev/null +++ b/po/underlays/basewiki/ikiwiki/searching.de.po @@ -0,0 +1,92 @@ +# German translation of basewiki/ikiwiki/searching page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 15:14+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "" +"[[!meta robots=\"noindex, follow\"]]\n" +"[[!meta title=\"Suchen\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "" +"[[!if test=\"enabled(search)\"\n" +"then=\"This wiki has searching **enabled**.\"\n" +"else=\"This wiki has searching **disabled**.\"]]\n" +msgstr "" +"[[!if test=\"enabled(search)\"\n" +"then=\"In diesem Wiki ist Suchen **aktiviert**.\"\n" +"else=\"In diesem Wiki ist Suchen **deaktiviert**.\"]]\n" + +#. type: Plain text +msgid "" +"If searching is enabled, you can enter search terms in the search field, as " +"you'd expect. There are a few special things you can do to construct more " +"powerful searches." +msgstr "" +"Wenn Suchen aktiviert ist, kann man wie erwartet Suchausdrücke in das " +"Suchfeld eintragen. Es gibt einige spezielle Ausdrücke, um mächtigere " +"Suchen zu erstellen." + +#. type: Bullet: '* ' +msgid "To match a phrase, enclose it in double quotes." +msgstr "" +"Um nach einer Phrase aus mehreren Wörtern zu suchen, schreibe sie in " +"Anführungszeichen." + +#. type: Bullet: '* ' +msgid "`AND` can be used to search for documents containing two expressions." +msgstr "" +"`AND` kann verwendet werden, um nach Dokumenten mit zwei Ausdrücken zu " +"suchen." + +#. type: Bullet: '* ' +msgid "" +"`OR` can be used to search for documents containing either one of two " +"expressions." +msgstr "" +"`OR` kann verwendet werden, um nach Dokumenten mit einem der beiden " +"Ausdrücke zu suchen." + +#. type: Bullet: '* ' +msgid "" +"Parentheses can be used to build up complicated search expressions. For " +"example, \"(foo AND bar) OR (me AND you)\"" +msgstr "" +"Klammern können verwendet werden, um komplexere Suchausdrücke aufzubauen. " +"Zum Beispiel `(foo AND bar) OR (ich AND du)`." + +#. type: Bullet: '* ' +msgid "" +"Prefix a search term with \"-\" to avoid it from appearing in the results. " +"For example, \"-discussion\" will omit \"discussion\"." +msgstr "" +"Stelle einem Suchausdruck `-` voran, damit er nicht in den Ergebnissen " +"auftaucht. " +"Zum Beispiel wird `-Diskussion`alle Seiten mit \"Diskussion\" ausschließen." + +#. type: Bullet: '* ' +msgid "To search for a page with a given title, use \"title:foo\"." +msgstr "" +"Um nach einer Seite mit einem bestimmten Titel zu suchen, verwende " +"`title:foo`." + +#. type: Bullet: '* ' +msgid "To search for pages that contain a \"bar\" link, use \"link:bar\"." +msgstr "" +"Um nach Seiten mit einem Link auf \"bar\" zu suchen, verwende `link:bar`." + + diff --git a/po/underlays/basewiki/ikiwiki/subpage.de.po b/po/underlays/basewiki/ikiwiki/subpage.de.po new file mode 100644 index 000000000..3594ab445 --- /dev/null +++ b/po/underlays/basewiki/ikiwiki/subpage.de.po @@ -0,0 +1,54 @@ +# German translation of basewiki/ikiwiki/subpage page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 15:19+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "" +"[[!meta title=\"Unterseiten\"]]\n" +"[[!meta robots=\"noindex, follow\"]]\n" + +#. type: Plain text +msgid "" +"ikiwiki supports placing pages in a directory hierarchy. For example, this " +"page, [[SubPage]] has some related pages placed under it, like " +"[[SubPage/LinkingRules]]. This is a useful way to add some order to your " +"wiki rather than just having a great big directory full of pages." +msgstr "" +"In ikiwiki werden Seiten in einem Verzeichnisbaum angeordnet. Zum Beispiel " +"gibt es unterhalb dieser Seite, [[SubPage]], einige verwandte Seiten, etwa " +"[[SubPage/LinkingRules]]. Dies ist eine nützliche Möglichkeit, Ordnung in " +"ein Wiki zu bringen und nicht nur ein riesiges Verzeichnis voller Seiten zu " +"haben." + +#. type: Plain text +msgid "" +"To add a SubPage, just make a subdirectory and put pages in it. For example, " +"this page is SubPage.mdwn in this wiki's source, and there is also a SubPage " +"subdirectory, which contains SubPage/LinkingRules.mdwn. Subpages can be " +"nested as deeply as you'd like." +msgstr "" +"Um eine Unterseite hinzuzufügen, legt man einfach ein Unterverzeichnis an " +"und erstellt darin Seiten. Zum Beispiel ist diese Seite `SubPage.mdwn` in " +"der Quelle dieses Wikis und es existiert auch ein Unterverzeichnis " +"`SubPage`, das `SubPage/LinkingRules.mdwn` enthält. Unterseiten können " +"beliebig tief verschachtelt werden." + +#. type: Plain text +msgid "Linking to and from a SubPage is explained in [[LinkingRules]]." +msgstr "" +"Wie Links auf Unterseiten gesetzt werden, wird in [[LinkingRules]] erklärt." + + diff --git a/po/underlays/basewiki/ikiwiki/subpage/linkingrules.de.po b/po/underlays/basewiki/ikiwiki/subpage/linkingrules.de.po new file mode 100644 index 000000000..5702c5fcd --- /dev/null +++ b/po/underlays/basewiki/ikiwiki/subpage/linkingrules.de.po @@ -0,0 +1,109 @@ +# German translation of basewiki/ikiwiki/subpage/linkingrules page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 15:21+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "" +"[[!meta title=\"Regeln für Links\"]]\n" +"[[!meta robots=\"noindex, follow\"]]\n" + +#. type: Plain text +msgid "" +"To link to or from a [[SubPage]], you can normally use a regular " +"[[WikiLink]] that does not contain the name of the parent directory of the " +"[[SubPage]]. Ikiwiki descends the directory hierarchy looking for a page " +"that matches your link." +msgstr "" +"Um einen Link von oder zu einer [[Unterseite|SubPage]] anzulegen, kann man " +"normalerweise einfache WikiLinks verwenden, ohne dass diese den Namen des " +"Verzeichnisses enthalten, in dem die [[Unterseite|SubPage]] liegt. " +"Ikiwiki läuft dann die Verzeichnishierarchie ab und sucht nach einer Seite, " +"die zu dem angegebenen Link passt." + +#. type: Plain text +msgid "" +"For example, if FooBar/SubPage links to \"OtherPage\", ikiwiki will first " +"prefer pointing the link to FooBar/SubPage/OtherPage if it exists, next to " +"FooBar/OtherPage and finally to OtherPage in the root of the wiki." +msgstr "" +"Wenn zum Beispiel `FooBar/UnterSeite` einen Link auf `AndereSeite` enthält, " +"wird ikiwiki bevorzugt auf `FooBar/UnterSeite/AndereSeite` verweisen, wenn " +"diese existiert, dann auf `FooBar/AndereSeite` und schließlich auf " +"`AndereSeite` im Wurzelverzeichnis des Wikis." + +#. type: Plain text +msgid "" +"Note that this means that if a link on FooBar/SomePage to \"OtherPage\" " +"currently links to OtherPage, in the root of the wiki, and FooBar/OtherPage " +"is created, the link will _change_ to point to FooBar/OtherPage. On the " +"other hand, a link from BazBar to \"OtherPage\" would be unchanged by this " +"creation of a [[SubPage]] of FooBar." +msgstr "" +"Insbesondere bedeutet dies, dass wenn ein Link auf `FooBar/EineSeite` auf " +"`AndereSeite` momentan auf `AndereSeite` im Wurzelverzeichnis des Wikis " +"verweist, und `FooBar/AndereSeite` erstellt wird, dann _ändert_ sich das " +"Ziel des Links auf `FooBar/AndereSeite`. Andererseits würde ein Link von " +"`BazBar` auf `AndereSeite` durch das Anlegen einer [[Unterseite|SubPage]] " +"von `FooBar` unverändert bleiben." + +#. type: Plain text +msgid "" +"You can also specify a link that contains a directory name, like " +"\"FooBar/OtherPage\" to more exactly specify what page to link to. This is " +"the only way to link to an unrelated [[SubPage]]." +msgstr "" +"Man kann auch einen Link mit Verzeichnisnamen angeben, etwa " +"`FooBar/AndereSeite`, um genauer anzugeben auf welche Seite verwiesen werden " +"soll. Nur so kann auf eine [[Unterseite|SubPage]] einer anderen Seite " +"verwiesen werden." + +#. type: Plain text +msgid "" +"You can use this to, for example, to link from BazBar to \"FooBar/SubPage\", " +"or from BazBar/SubPage to \"FooBar/SubPage\"." +msgstr "" +"Man kann dies zum Beispiel dazu verwenden, um einen Link von `BazBar` auf " +"`FooBar/UnterSeite` oder von `BazBar/UnterSeite` auf `FooBar/UnterSeite` " +"anzulegen." + +#. type: Plain text +msgid "" +"You can also use \"/\" at the start of a link, to specify exactly which page " +"to link to, when there are multiple pages with similar names and the link " +"goes to the wrong page by default. For example, linking from " +"\"FooBar/SubPage\" to \"/OtherPage\" will link to the \"OtherPage\" in the " +"root of the wiki, even if there is a \"FooBar/OtherPage\"." +msgstr "" +"Man kann auch `/` am Anfang des Links verwenden, um die Zielseite genau zu " +"spezifizieren, wenn es mehrere Seiten mit ähnlichen Namen gibt und der Link " +"standardmäßig zur falschen geht. Zum Beispiel zeigt der Link `/AndereSeite` " +"auf der Seite `FooBar/UnterSeite` auf `AndereSeite` im Wurzelverzeichnis des " +"Wikis, selbst wenn es eine `FooBar/AndereSeite` gibt." + +#. type: Plain text +msgid "" +"Also, if the wiki is configured with a userdir, you can link to pages within " +"the userdir without specifying a path to them. This is to allow for easy " +"linking to a user's page in the userdir, to sign a comment. These links are " +"checked for last of all." +msgstr "" +"Wenn das Wiki mit einem `userdir` konfiguriert ist, kann man außerdem " +"die Seiten im Benutzerverzeichnis direkt verlinken, ohne einen Pfad " +"anzugeben. Dadurch können leichter Links auf die Seite eines Benutzers " +"gesetzt werden, etwa beim Signieren eines Kommentars. Diese Links " +"werden als letzte von allen in Betracht gezogen." + + diff --git a/po/underlays/basewiki/ikiwiki/wikilink.de.po b/po/underlays/basewiki/ikiwiki/wikilink.de.po new file mode 100644 index 000000000..7bd9130e3 --- /dev/null +++ b/po/underlays/basewiki/ikiwiki/wikilink.de.po @@ -0,0 +1,111 @@ +# German translation of basewiki/ikiwiki/wikilink page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 13:41+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + +#. type: Plain text +msgid "" +"WikiLinks provide easy linking between pages of the wiki. To create a " +"[[WikiLink]], just put the name of the page to link to in double brackets. " +"For example `\\[[WikiLink]]`." +msgstr "" +"WikiLinks ermöglichen es, auf einfache Weise Links zwischen Seiten im Wiki " +"zu setzen. " +"Um einen [[WikiLink]] zu erstellen, setze einfach den Namen der Zielseite in " +"doppelte eckige Klammern, zum Beispiel `\\[[WikiLink]]`." + +#. type: Plain text +msgid "" +"If you ever need to write something like `\\[[WikiLink]]` without creating a " +"wikilink, just prefix it with a `\\`, like `\\\\[[WikiLink]]`." +msgstr "" +"Wenn man irgendwann einmal etwas wie `\\[[WikiLink]]` schreiben will, " +"ohne einen WikiLink zu erzeugen, stellt man einfach ein `\\` voran, wie in " +"`\\\\[[WikiLink]]`." + +#. type: Plain text +msgid "" +"There are some special [[SubPage/LinkingRules]] that come into play when " +"linking between [[SubPages|SubPage]]." +msgstr "" +"Es gibt einige spezielle [[Regeln für Links|SubPage/LinkingRules]], die beim " +"setzen von Links zwischen [[Unterseiten|SubPage]] ins Spiel kommen." + +#. type: Plain text +msgid "" +"Also, if the file linked to by a WikiLink looks like an image, it will be " +"displayed inline on the page." +msgstr "" +"Wenn das Ziel eines WikiLinks nach einem Bild aussieht, wird dieses " +"innerhalb der Seite angezeigt." + +#. type: Plain text +msgid "" +"WikiLinks are matched with page names in a case-insensitive manner, so you " +"don't need to worry about getting the case the same, and can capitalise " +"links at the start of a sentence, and so on." +msgstr "" +"WikiLinks werden unabhängig von der Groß- und Kleinschreibung gefunden, " +"man braucht sich also keine Gedanken über identische Schreibweise zu machen " +"und kann zum Beispiel das erste Wort eines Satzes groß schreiben." + +#. type: Plain text +msgid "" +"It's also possible to write a WikiLink that uses something other than the " +"page name as the link text. For example `\\[[foo_bar|SandBox]]` links to the " +"SandBox page, but the link will appear like this: [[foo_bar|SandBox]]." +msgstr "" +"Es ist auch möglich einen WikiLink zu schreiben, der etwas anderes als den " +"Seitennamen als Text für den Link verwendet. Zum Beispiel verweist " +"`\\[[foo_bar|SandBox]]` auf die Sandkasten-Seite, aber der Link erscheint " +"als [[foo_bar|SandBox]]." + +#. type: Plain text +msgid "" +"To link to an anchor inside a page, you can use something like " +"`\\[[WikiLink#foo]]` ." +msgstr "" +"Um auf ein Ziel innerhalb einer Seite zu verweisen, kann man etwas wie " +"`\\[[WikiLink#foo]]` verwenden." + +#. type: Title ## +#, no-wrap +msgid "Directives and WikiLinks" +msgstr "Anweisungen und WikiLinks" + +#. type: Plain text +msgid "" +"ikiwiki has two syntaxes for [[directives|directive]]. The older syntax " +"used spaces to distinguish between directives and wikilinks; as a result, " +"with that syntax in use, you cannot use spaces in WikiLinks, and must " +"replace spaces with underscores. The newer syntax, enabled with the " +"`prefix_directives` option in an ikiwiki setup file, prefixes directives " +"with `!`, and thus does not prevent links with spaces. Future versions of " +"ikiwiki will turn this option on by default." +msgstr "" +"Es gibt in ikiwiki zwei Syntaxen für [[Anweisungen|directive]]. Die ältere " +"Syntax verwendete Leerzeichen, um zwischen Anweisungen und WikiLinks " +"zu unterscheiden; mit dem Ergebnis, dass bei Verwendung dieser Syntax " +"keine Leerzeichen in WikiLinks verwendet werden können und durch " +"Unterstriche ersetzt werden müssen. Die neuere Syntax, aktiviert durch " +"die Option `prefix_directives` in einer ikiwiki-Setup-Datei, stellt " +"Anweisungen `!` voran und ermöglicht so Links mit Leerzeichen. " +"Zukünftige Versionen von ikiwiki werden diese Option standardmäßig " +"aktivieren." + + diff --git a/po/underlays/basewiki/index.de.po b/po/underlays/basewiki/index.de.po new file mode 100644 index 000000000..037412d55 --- /dev/null +++ b/po/underlays/basewiki/index.de.po @@ -0,0 +1,29 @@ +# German translation of basewiki/index page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-12 09:40+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "Welcome to your new wiki." +msgstr "Willkommen in Ihrem neuen Wiki." + +#. type: Plain text +msgid "All wikis are supposed to have a [[SandBox]], so this one does too." +msgstr "" +"Alle Wikis sollten einen [[Sandkasten|SandBox]] haben, also hat dieses " +"auch einen." + +#. type: Plain text +msgid "This wiki is powered by [[ikiwiki]]." +msgstr "Dieses Wiki wird mit [[ikiwiki]] betrieben." + diff --git a/po/underlays/basewiki/recentchanges.de.po b/po/underlays/basewiki/recentchanges.de.po new file mode 100644 index 000000000..f1e75acd9 --- /dev/null +++ b/po/underlays/basewiki/recentchanges.de.po @@ -0,0 +1,38 @@ +# German translation of basewiki/recentchanges page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-12 09:41+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!if test=\"enabled(meta)\" then=\"\"\"\n" +msgstr "[[!if test=\"enabled(meta)\" then=\"\"\"\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta title=\"RecentChanges\"]]\n" +msgstr "[[!meta title=\"Letzte Änderungen\"]]\n" + +#. type: Plain text +msgid "Recent changes to this wiki:" +msgstr "Die letzten Änderungen an diesem Wiki:" + +#. type: Plain text +#, no-wrap +msgid "" +"[[!inline pages=\"internal(recentchanges/change_*) and !*/Discussion\" \n" +"template=recentchanges show=0]]\n" +msgstr "" +"[[!inline pages=\"internal(recentchanges/change_*) and !*/Discussion\" \n" +"template=recentchanges show=0]]\n" + diff --git a/po/underlays/basewiki/sandbox.de.po b/po/underlays/basewiki/sandbox.de.po new file mode 100644 index 000000000..0e8d354f8 --- /dev/null +++ b/po/underlays/basewiki/sandbox.de.po @@ -0,0 +1,91 @@ +# German translation of basewiki/sandbox page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 15:14+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, fuzzy +msgid "This is the SandBox, a page anyone can edit to learn how to use the wiki." +msgstr "" +"[[!meta title=\"Sandkasten\"]]\n" +"Dies ist der Sandkasten: Eine Seite die jeder bearbeiten kann, um zu lernen wie man das Wiki benutzt." + +#. type: Plain text +msgid "Here's a paragraph." +msgstr "Dies ist ein Absatz." + +#. type: Plain text +msgid "Here's another one with *emphasised* text." +msgstr "Dies ist noch ein Absatz mit *hervorgehobenem* Text." + +#. type: Title # +#, no-wrap +msgid "Header" +msgstr "Überschrift" + +#. type: Title ## +#, no-wrap +msgid "Subheader" +msgstr "Unterüberschrift" + +#. type: Plain text +#, no-wrap +msgid "" +"> This is a blockquote.\n" +">\n" +"> This is the first level of quoting.\n" +">\n" +"> > This is nested blockquote.\n" +">\n" +"> Back to the first level.\n" +msgstr "" +"> Dies ist ein zitierter Absatz.\n" +">\n" +"> Dies ist die erste Zitatebene.\n" +">\n" +"> > Dies ist ein verschachteltes Zitat.\n" +">\n" +"> Zurück zur ersten Ebene.\n" + +#. type: Plain text +msgid "Numbered list" +msgstr "Nummerierte Aufzählung" + +#. type: Bullet: '1. ' +msgid "First item." +msgstr "Erster Eintrag" + +#. type: Bullet: '1. ' +msgid "Another." +msgstr "Noch einer." + +#. type: Bullet: '1. ' +msgid "And another.." +msgstr "Und noch einer ..." + +#. type: Plain text +msgid "Bulleted list" +msgstr "Einfache Aufzählung" + +#. type: Bullet: '* ' +msgid "*item*" +msgstr "*Eintrag*" + +#. type: Bullet: '* ' +msgid "item" +msgstr "Eintrag" + +#. type: Plain text +msgid "[[ikiwiki/WikiLink]]" +msgstr "[[ikiwiki/WikiLink]]" + diff --git a/po/underlays/basewiki/shortcuts.de.po b/po/underlays/basewiki/shortcuts.de.po new file mode 100644 index 000000000..36be14729 --- /dev/null +++ b/po/underlays/basewiki/shortcuts.de.po @@ -0,0 +1,287 @@ +# German translation of basewiki/shortcuts page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 15:14+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "" +"[[!if test=\"enabled(shortcut)\"\n" +" then=\"This wiki has shortcuts **enabled**.\"\n" +" else=\"This wiki has shortcuts **disabled**.\"]]\n" +msgstr "" +"[[!meta title=\"Abkürzungen\"]]\n" +"[[!if test=\"enabled(shortcut)\"\n" +" then=\"In diesem Wiki sind Abkürzungen **aktiviert**.\"\n" +" else=\"In diesem Wiki sind Abkürzungen **deaktiviert**.\"]]\n" + +#. type: Plain text +msgid "Some examples of using shortcuts include:" +msgstr "Abkürzungen können unter anderem so benutzt werden:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!google foo]]\n" +"\t\\[[!wikipedia War_of_1812]]\n" +"\t\\[[!debbug 12345]]\n" +"\tCheck the \\[[!cia ikiwiki desc=\"CIA page for %s\"]].\n" +msgstr "" +"\t\\[[!google foo]]\n" +"\t\\[[!wikipedia War_of_1812]]\n" +"\t\\[[!debbug 12345]]\n" +"\tBetrachte die \\[[!cia ikiwiki desc=\"CIA-Seite für %s\"]].\n" + +#. type: Plain text +msgid "This page controls what shortcut links the wiki supports." +msgstr "Diese Seite bestimmt, welche Abkürzungen das Wiki unterstützt." + +#. type: Bullet: '* ' +msgid "[[!shortcut name=google url=\"http://www.google.com/search?q=%s\"]]" +msgstr "[[!shortcut name=google url=\"http://www.google.com/search?q=%s\"]]" + +#. type: Bullet: '* ' +msgid "[[!shortcut name=archive url=\"http://web.archive.org/*/%S\"]]" +msgstr "[[!shortcut name=archive url=\"http://web.archive.org/*/%S\"]]" + +#. type: Bullet: '* ' +msgid "[[!shortcut name=gmap url=\"http://maps.google.com/maps?q=%s\"]]" +msgstr "[[!shortcut name=gmap url=\"http://maps.google.com/maps?q=%s\"]]" + +#. type: Bullet: '* ' +msgid "[[!shortcut name=gmsg url=\"http://groups.google.com/groups?selm=%s\"]]" +msgstr "[[!shortcut name=gmsg url=\"http://groups.google.com/groups?selm=%s\"]]" + +#. type: Bullet: '* ' +msgid "[[!shortcut name=wikipedia url=\"http://en.wikipedia.org/wiki/%s\"]]" +msgstr "[[!shortcut name=wikipedia url=\"http://en.wikipedia.org/wiki/%s\"]]" + +#. type: Bullet: '* ' +msgid "[[!shortcut name=wikitravel url=\"http://wikitravel.org/en/%s\"]]" +msgstr "[[!shortcut name=wikitravel url=\"http://wikitravel.org/en/%s\"]]" + +#. type: Bullet: '* ' +msgid "[[!shortcut name=wiktionary url=\"http://en.wiktionary.org/wiki/%s\"]]" +msgstr "[[!shortcut name=wiktionary url=\"http://en.wiktionary.org/wiki/%s\"]]" + +#. type: Bullet: '* ' +msgid "" +"[[!shortcut name=debbug url=\"http://bugs.debian.org/%S\" desc=\"Debian bug " +"#%s\"]]" +msgstr "" +"[[!shortcut name=debbug url=\"http://bugs.debian.org/%S\" desc=\"Debian bug " +"#%s\"]]" + +#. type: Bullet: '* ' +msgid "" +"[[!shortcut name=deblist url=\"http://lists.debian.org/debian-%s\" " +"desc=\"debian-%s@lists.debian.org\"]]" +msgstr "" +"[[!shortcut name=deblist url=\"http://lists.debian.org/debian-%s\" " +"desc=\"debian-%s@lists.debian.org\"]]" + +#. type: Bullet: '* ' +msgid "[[!shortcut name=debpkg url=\"http://packages.debian.org/%s\"]]" +msgstr "[[!shortcut name=debpkg url=\"http://packages.debian.org/%s\"]]" + +#. type: Bullet: '* ' +msgid "[[!shortcut name=debpkgsid url=\"http://packages.debian.org/sid/%s\"]]" +msgstr "[[!shortcut name=debpkgsid url=\"http://packages.debian.org/sid/%s\"]]" + +#. type: Bullet: '* ' +msgid "[[!shortcut name=debpts url=\"http://packages.qa.debian.org/%s\"]]" +msgstr "[[!shortcut name=debpts url=\"http://packages.qa.debian.org/%s\"]]" + +#. type: Bullet: '* ' +msgid "[[!shortcut name=debmsg url=\"http://lists.debian.org/msgid-search/%s\"]]" +msgstr "[[!shortcut name=debmsg url=\"http://lists.debian.org/msgid-search/%s\"]]" + +#. type: Bullet: '* ' +msgid "" +"[[!shortcut name=debrt " +"url=\"https://rt.debian.org/Ticket/Display.html?id=%s\"]]" +msgstr "" +"[[!shortcut name=debrt " +"url=\"https://rt.debian.org/Ticket/Display.html?id=%s\"]]" + +#. type: Plain text +#, no-wrap +msgid "" +"* [[!shortcut name=debss url=\"http://snapshot.debian.net/package/%s\"]]\n" +" * Usage: `\\[[!debss package]]`, `\\[[!debss package#version]]`, or " +"`\\[[!debss package/version]]`. See http://snapshot.debian.net for " +"details.\n" +"* [[!shortcut name=debwiki url=\"http://wiki.debian.org/%s\"]]\n" +"* [[!shortcut name=fdobug " +"url=\"https://bugs.freedesktop.org/show_bug.cgi?id=%s\" " +"desc=\"freedesktop.org bug #%s\"]]\n" +"* [[!shortcut name=fdolist " +"url=\"http://lists.freedesktop.org/mailman/listinfo/%s\" " +"desc=\"%s@lists.freedesktop.org\"]]\n" +"* [[!shortcut name=gnomebug " +"url=\"http://bugzilla.gnome.org/show_bug.cgi?id=%s\" desc=\"GNOME bug " +"#%s\"]]\n" +"* [[!shortcut name=linuxbug " +"url=\"http://bugzilla.kernel.org/show_bug.cgi?id=%s\" desc=\"Linux bug " +"#%s\"]]\n" +"* [[!shortcut name=mozbug " +"url=\"https://bugzilla.mozilla.org/show_bug.cgi?id=%s\" desc=\"Mozilla bug " +"#%s\"]]\n" +"* [[!shortcut name=gnulist url=\"http://lists.gnu.org/mailman/listinfo/%s\" " +"desc=\"%s@gnu.org\"]]\n" +"* [[!shortcut name=marcmsg url=\"http://marc.info/?i=%s\"]]\n" +"* [[!shortcut name=marclist url=\"http://marc.info/?l=%s\"]]\n" +"* [[!shortcut name=gmane url=\"http://dir.gmane.org/gmane.%s\" " +"desc=\"gmane.%s\"]]\n" +"* [[!shortcut name=gmanemsg url=\"http://mid.gmane.org/%s\"]]\n" +"* [[!shortcut name=cpan " +"url=\"http://search.cpan.org/search?mode=dist&query=%s\"]]\n" +"* [[!shortcut name=ctan " +"url=\"http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=%s\"]]\n" +"* [[!shortcut name=hoogle url=\"http://haskell.org/hoogle/?q=%s\"]]\n" +"* [[!shortcut name=iki url=\"http://ikiwiki.info/%S/\"]]\n" +"* [[!shortcut name=ljuser url=\"http://%s.livejournal.com/\"]]\n" +"* [[!shortcut name=rfc url=\"http://www.ietf.org/rfc/rfc%s.txt\" desc=\"RFC " +"%s\"]]\n" +"* [[!shortcut name=c2 url=\"http://c2.com/cgi/wiki?%s\"]]\n" +"* [[!shortcut name=meatballwiki " +"url=\"http://www.usemod.com/cgi-bin/mb.pl?%s\"]]\n" +"* [[!shortcut name=emacswiki " +"url=\"http://www.emacswiki.org/cgi-bin/wiki/%s\"]]\n" +"* [[!shortcut name=haskellwiki url=\"http://haskell.org/haskellwiki/%s\"]]\n" +"* [[!shortcut name=dict " +"url=\"http://www.dict.org/bin/Dict?Form=Dict1&Strategy=*&Database=*&Query=%s\"]]\n" +"* [[!shortcut name=imdb url=\"http://imdb.com/find?q=%s\"]]\n" +"* [[!shortcut name=gpg " +"url=\"http://pgpkeys.mit.edu:11371/pks/lookup?op=vindex&exact=on&search=0x%s\"]]\n" +"* [[!shortcut name=perldoc " +"url=\"http://perldoc.perl.org/search.html?q=%s\"]]\n" +"* [[!shortcut name=whois " +"url=\"http://reports.internic.net/cgi/whois?whois_nic=%s&type=domain\"]]\n" +"* [[!shortcut name=cve " +"url=\"http://cve.mitre.org/cgi-bin/cvename.cgi?name=%s\"]]\n" +"* [[!shortcut name=cia url=\"http://cia.vc/stats/project/%s\"]]\n" +"* [[!shortcut name=ciauser url=\"http://cia.vc/stats/user/%s\"]]\n" +"* [[!shortcut name=flickr url=\"http://www.flickr.com/photos/%s\"]]\n" +"* [[!shortcut name=man url=\"http://linux.die.net/man/%s\"]]\n" +"* [[!shortcut name=ohloh url=\"http://www.ohloh.net/projects/%s\"]]\n" +"* [[!shortcut name=cpanrt " +"url=\"https://rt.cpan.org/Ticket/Display.html?id=%s\" desc=\"CPAN " +"RT#%s\"]]\n" +"* [[!shortcut name=novellbug " +"url=\"https://bugzilla.novell.com/show_bug.cgi?id=%s\" desc=\"bug %s\"]]\n" +msgstr "" +"* [[!shortcut name=debss url=\"http://snapshot.debian.net/package/%s\"]]\n" +" * Verwendung: `\\[[!debss Paket]]`, `\\[[!debss Paket#Version]]`, or " +"`\\[[!debss Paket/Version]]`. Details unter http://snapshot.debian.net.\n" +"* [[!shortcut name=debwiki url=\"http://wiki.debian.org/%s\"]]\n" +"* [[!shortcut name=fdobug " +"url=\"https://bugs.freedesktop.org/show_bug.cgi?id=%s\" " +"desc=\"freedesktop.org bug #%s\"]]\n" +"* [[!shortcut name=fdolist " +"url=\"http://lists.freedesktop.org/mailman/listinfo/%s\" " +"desc=\"%s@lists.freedesktop.org\"]]\n" +"* [[!shortcut name=gnomebug " +"url=\"http://bugzilla.gnome.org/show_bug.cgi?id=%s\" desc=\"GNOME bug " +"#%s\"]]\n" +"* [[!shortcut name=linuxbug " +"url=\"http://bugzilla.kernel.org/show_bug.cgi?id=%s\" desc=\"Linux bug " +"#%s\"]]\n" +"* [[!shortcut name=mozbug " +"url=\"https://bugzilla.mozilla.org/show_bug.cgi?id=%s\" desc=\"Mozilla bug " +"#%s\"]]\n" +"* [[!shortcut name=gnulist url=\"http://lists.gnu.org/mailman/listinfo/%s\" " +"desc=\"%s@gnu.org\"]]\n" +"* [[!shortcut name=marcmsg url=\"http://marc.info/?i=%s\"]]\n" +"* [[!shortcut name=marclist url=\"http://marc.info/?l=%s\"]]\n" +"* [[!shortcut name=gmane url=\"http://dir.gmane.org/gmane.%s\" " +"desc=\"gmane.%s\"]]\n" +"* [[!shortcut name=gmanemsg url=\"http://mid.gmane.org/%s\"]]\n" +"* [[!shortcut name=cpan " +"url=\"http://search.cpan.org/search?mode=dist&query=%s\"]]\n" +"* [[!shortcut name=ctan " +"url=\"http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=%s\"]]\n" +"* [[!shortcut name=hoogle url=\"http://haskell.org/hoogle/?q=%s\"]]\n" +"* [[!shortcut name=iki url=\"http://ikiwiki.info/%S/\"]]\n" +"* [[!shortcut name=ljuser url=\"http://%s.livejournal.com/\"]]\n" +"* [[!shortcut name=rfc url=\"http://www.ietf.org/rfc/rfc%s.txt\" desc=\"RFC " +"%s\"]]\n" +"* [[!shortcut name=c2 url=\"http://c2.com/cgi/wiki?%s\"]]\n" +"* [[!shortcut name=meatballwiki " +"url=\"http://www.usemod.com/cgi-bin/mb.pl?%s\"]]\n" +"* [[!shortcut name=emacswiki " +"url=\"http://www.emacswiki.org/cgi-bin/wiki/%s\"]]\n" +"* [[!shortcut name=haskellwiki url=\"http://haskell.org/haskellwiki/%s\"]]\n" +"* [[!shortcut name=dict " +"url=\"http://www.dict.org/bin/Dict?Form=Dict1&Strategy=*&Database=*&Query=%s\"]]\n" +"* [[!shortcut name=imdb url=\"http://imdb.com/find?q=%s\"]]\n" +"* [[!shortcut name=gpg " +"url=\"http://pgpkeys.mit.edu:11371/pks/lookup?op=vindex&exact=on&search=0x%s\"]]\n" +"* [[!shortcut name=perldoc " +"url=\"http://perldoc.perl.org/search.html?q=%s\"]]\n" +"* [[!shortcut name=whois " +"url=\"http://reports.internic.net/cgi/whois?whois_nic=%s&type=domain\"]]\n" +"* [[!shortcut name=cve " +"url=\"http://cve.mitre.org/cgi-bin/cvename.cgi?name=%s\"]]\n" +"* [[!shortcut name=cia url=\"http://cia.vc/stats/project/%s\"]]\n" +"* [[!shortcut name=ciauser url=\"http://cia.vc/stats/user/%s\"]]\n" +"* [[!shortcut name=flickr url=\"http://www.flickr.com/photos/%s\"]]\n" +"* [[!shortcut name=man url=\"http://linux.die.net/man/%s\"]]\n" +"* [[!shortcut name=ohloh url=\"http://www.ohloh.net/projects/%s\"]]\n" +"* [[!shortcut name=cpanrt " +"url=\"https://rt.cpan.org/Ticket/Display.html?id=%s\" desc=\"CPAN " +"RT#%s\"]]\n" +"* [[!shortcut name=novellbug " +"url=\"https://bugzilla.novell.com/show_bug.cgi?id=%s\" desc=\"bug %s\"]]\n" + +#. type: Plain text +msgid "" +"To add a new shortcut, use the `shortcut` [[ikiwiki/directive]]. In the url, " +"\"%s\" is replaced with the text passed to the named shortcut, after " +"[[!wikipedia url_encoding]] it, and '%S' is replaced with the raw, " +"non-encoded text. The optional `desc` parameter controls the description of " +"the link." +msgstr "" +"Um eine neue Abkürzung hinzuzufügen, verwende die " +"shortcut-[[Anweisung|ikiwiki/directive]]. " +"In der URL wird `%s` durch den der Abkürzung übergebenen Text in " +"URL-Kodierung ersetzt. Außerdem wird `%S` durch den unveränderten Text ersetzt. " +"Der optionale Parameter `desc` steuert die Beschriftung der Verknüpfung." + +#. type: Plain text +msgid "" +"Remember that the `name` you give the shortcut will become a new " +"[[ikiwiki/directive]]. Avoid using a `name` that conflicts with an existing " +"directive. These directives also accept a `desc` parameter that will " +"override the one provided at definition time." +msgstr "" +"Denke daran, dass der angegebene `name` eine neue " +"[[Anweisung|ikiwiki/directive]] wird. Deshalb sollte man es vermeiden, " +"einen Namen zu verwenden, der mit einer bestehenden " +"[[Anweisung|ikiwiki/directive]] in Konflikt steht. Diese Anweisungen akzeptieren " +"einen optionalen Parameter `desc`, der statt des Werts aus der Definition " +"verwendet wird." + +#. type: Plain text +msgid "" +"If you come up with a shortcut that you think others might find useful, " +"consider contributing it to the [shortcuts page on the ikiwiki " +"wiki](http://ikiwiki.info/shortcuts/), so that future versions of ikiwiki " +"will include your shortcut in the standard underlay." +msgstr "" +"Wenn Sie eine Idee für eine Abkürzung haben, die auch andere nützlich " +"finden könnten, können Sie diese auf der [Abkürzungs-Seite des " +"ikiwiki-Wiki](http://ikiwiki.info/shortcuts/) eintragen, damit künftige " +"Versionen von ikiwiki diese Abkürzung standardmäßig zur Verfügung stellen." + + diff --git a/po/underlays/basewiki/templates.de.po b/po/underlays/basewiki/templates.de.po new file mode 100644 index 000000000..1bc6c7513 --- /dev/null +++ b/po/underlays/basewiki/templates.de.po @@ -0,0 +1,256 @@ +# German translation of basewiki/templates page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 15:15+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "" +"[[!if test=\"enabled(template)\"\n" +"then=\"This wiki has templates **enabled**.\"\n" +"else=\"This wiki has templates **disabled**.\"\n" +"]]\n" +msgstr "" +"[[!meta title=\"Vorlagen\"]]\n" +"[[!if test=\"enabled(template)\"\n" +"then=\"In diesem Wiki sind Vorlagen **aktiviert**.\"\n" +"else=\"In diesem Wiki sind Vorlagen **deaktiviert**.\"\n" +"]]\n" + +#. type: Plain text +msgid "" +"Templates are files that can be filled out and inserted into pages in the " +"wiki." +msgstr "" +"Vorlagen sind Dateien, die ausgefüllt und in Wiki-Seiten eingefügt werden " +"können." + +#. type: Plain text +#, no-wrap +msgid "[[!if test=\"enabled(template) and enabled(inline)\" then=\"\"\"\n" +msgstr "[[!if test=\"enabled(template) and enabled(inline)\" then=\"\"\"\n" + +#. type: Plain text +msgid "These templates are available for inclusion onto other pages in this wiki:" +msgstr "" +"Diese Vorlagen sind verfügbar und können in andere Seiten dieses " +"Wikis eingebettet werden:" + +#. type: Plain text +#, no-wrap +msgid "" +"[[!inline pages=\"templates/* and !*/discussion\" feeds=no archive=yes\n" +"sort=title template=titlepage]]\n" +msgstr "" +"[[!inline pages=\"templates/* and !*/discussion\" feeds=no archive=yes\n" +"sort=title template=titlepage]]\n" + +#. type: Title ## +#, no-wrap +msgid "Using a template" +msgstr "Verwenden einer Vorlage" + +#. type: Plain text +msgid "Using a template works like this:" +msgstr "Eine Vorlage kann folgendermaßen verwendet werden:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!template id=note text=\"\"\"Here is the text to insert into my " +"note.\"\"\"]]\n" +msgstr "" +"\t\\[[!template id=note text=\"\"\"Hier ist der Text, der in meine " +"Notiz eingefügt werden soll.\"\"\"]]\n" + +#. type: Plain text +msgid "" +"This fills out the [[note]] template, filling in the `text` field with the " +"specified value, and inserts the result into the page." +msgstr "" +"Dies verwendet die Vorlage [[note]], wobei das `text`-Feld mit dem " +"angegebenen Wert gefüllt wird, und fügt das Ergebnis in die Seite ein." + +#. type: Plain text +msgid "" +"Generally, a value can include any markup that would be allowed in the wiki " +"page outside the template. Triple-quoting the value even allows quotes to be " +"included in it. Combined with multi-line quoted values, this allows for " +"large chunks of marked up text to be embedded into a template:" +msgstr "" +"Ein Wert kann im allgemeinen beliebige Formatierungsanweisungen enthalten, " +"die im Wiki außerhalb der Vorlage zulässig sind. Durch die Verwendung dreier " +"Anführungszeichen können sogar Anführungszeichen enthalten sein. In Kombination " +"mit mehrzeiligen Werten in Anführungszeichen können so große Mengen an " +"zu formatierendem Text in die Vorlage eingefügt werden:" + +#. type: Plain text +#, no-wrap +msgid "" +" \\[[!template id=foo name=\"Sally\" color=\"green\" age=8 " +"notes=\"\"\"\n" +msgstr "" +" \\[[!template id=foo name=\"Anna\" color=\"grün\" age=8 " +"notes=\"\"\"\n" + +#. type: Bullet: ' * ' +msgid "\\[[Charley]]'s sister." +msgstr "\\[[Thomas]] Schwester." + +#. type: Bullet: ' * ' +msgid "\"I want to be an astronaut when I grow up.\"" +msgstr "\"Ich will ein Astronaut werden, wenn ich erwachsen bin.\"" + +#. type: Bullet: ' * ' +msgid "Really 8 and a half." +msgstr "Wirklich achteinhalb." + +#. type: Title ## +#, no-wrap +msgid "Creating a template" +msgstr "Erstellen einer Vorlage" + +#. type: Plain text +msgid "" +"To create a template, simply add a template directive to a page, and the " +"page will provide a link that can be used to create the template. The " +"template is a regular wiki page, located in the `templates/` subdirectory " +"inside the source directory of the wiki." +msgstr "" +"Um eine Vorlage zu erstellen, füge einfach die Anweisung `template` zu " +"einer Seite hinzu. Diese Seite bietet dann einen Link zur Erstellung der " +"Vorlage an. Die Vorlage ist eine normale Wiki-Seite, die im Unterverzeichnis " +"`templates/` des Wiki-Quellverzeichnisses liegt." + +#. type: Plain text +msgid "" +"The template uses the syntax used by the [[!cpan HTML::Template]] perl " +"module, which allows for some fairly complex things to be done. Consult its " +"documentation for the full syntax, but all you really need to know are a few " +"things:" +msgstr "" +"Die Vorlage verwendet die Syntax des Perl-Moduls [[!cpan HTML::Template]], " +"das die Umsetzung auch komplexer Vorhaben ermöglicht. In seiner Dokumentation " +"ist die vollständige Syntax beschrieben, zur Verwendung muss man aber nur " +"das Folgende wirklich wissen:" + +#. type: Bullet: '* ' +msgid "" +"Each parameter you pass to the template directive will generate a template " +"variable. There are also some pre-defined variables like PAGE and BASENAME." +msgstr "" +"Jeder Parameter, der der template-Anweisung übergeben wird, erzeugt eine " +"Variable, die in der Vorlage verwendet werden kann. Es gibt auch einige " +"vordefinierte Variablen wie PAGE und BASENAME." + +#. type: Bullet: '* ' +msgid "" +"To insert the value of a variable, use ``. Wiki markup in " +"the value will first be converted to html." +msgstr "" +"Um den Wert einer Variable einzufügen, verwende ``. " +"Wiki-Formatierung im Wert wird zuvor zu HTML konvertiert werden." + +#. type: Bullet: '* ' +msgid "" +"To insert the raw value of a variable, with wiki markup not yet converted to " +"html, use ``." +msgstr "" +"Um den unformatierten Wert einer Variable einzufügen, der die unveränderten " +"Wiki-Formatierungsanweisungen enthält, verwende ``." + +#. type: Bullet: '* ' +msgid "" +"To make a block of text conditional on a variable being set use `text`." +msgstr "" +"Wenn ein Textblock nur dann angezeigt werden soll, wenn eine Variable gesetzt " +"ist, " +"verwende `Text`." + +#. type: Bullet: '* ' +msgid "" +"To use one block of text if a variable is set and a second if it's not, use " +"`textother text`" +msgstr "" +"Um einen Textblock anzuzeigen, wenn eine Variable gesetzt ist, und einen " +"anderen, wenn sie es nicht ist, verwende `Textanderer Text`." + +#. type: Plain text +msgid "Here's a sample template:" +msgstr "Hier ist eine Beispiel-Vorlage:" + +#. type: Plain text +#, no-wrap +msgid "" +" \n" +" Name: \\[[]]
\n" +" Age:
\n" +" \n" +" Favorite color:
\n" +" \n" +" No favorite color.
\n" +"
\n" +" \n" +"
\n" +" \n" +"
\n" +"
\n" +msgstr "" +" \n" +" Name: \\[[]]
\n" +" Alter:
\n" +" \n" +" Lieblingsfarbe:
\n" +" \n" +" Keine Lieblingsfarbe.
\n" +"
\n" +" \n" +"
\n" +" \n" +"
\n" +"
\n" + +#. type: Plain text +msgid "" +"The filled out template will be formatted the same as the rest of the page " +"that contains it, so you can include WikiLinks and all other forms of wiki " +"markup in the template. Note though that such WikiLinks will not show up as " +"backlinks to the page that uses the template." +msgstr "" +"Die ausgefüllte Vorlage wird genauso formatiert wie der Rest der Seite, die " +"sie enthält, man kann also WikiLinks und alle anderen Arten von " +"Wiki-Formatierung in der Vorlage verwenden. Zu beachten ist aber, dass " +"solche WikiLinks nicht als Rückwärts-Links zu der Seite auftauchen, die " +"die Vorlage verwendet." + +#. type: Plain text +msgid "" +"Note the use of \"raw_name\" inside the [[ikiwiki/WikiLink]] generator. This " +"ensures that if the name contains something that might be mistaken for wiki " +"markup, it's not converted to html before being processed as a " +"[[ikiwiki/WikiLink]]." +msgstr "" +"Beachte auch die Verwendung von `raw_name` innerhalb des Generators für " +"den [[ikiwiki/WikiLink]]. Dies stellt sicher, dass der Name nicht nach HTML " +"konvertiert wird, selbst wenn er etwas enthält, was für eine " +"Wiki-Formatierungsanweisung gehalten werden könnte, bevor er als " +"[[ikiwiki/WikiLink]] verarbeitet wird." + + diff --git a/po/underlays/basewiki/templates/note.de.po b/po/underlays/basewiki/templates/note.de.po new file mode 100644 index 000000000..2aa5aa9d6 --- /dev/null +++ b/po/underlays/basewiki/templates/note.de.po @@ -0,0 +1,42 @@ +# German translation of basewiki/templates/note page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-12 20:04+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "" +"
\n" +"\n" +"
\n" +"\n" +"Use this template to insert a note into a page. The note will be styled to\n" +"float to the right of other text on the page. This template has one\n" +"parameter:\n" +"
    \n" +"
  • `text` - the text to display in the note\n" +"
\n" +"
\n" +msgstr "" +"
\n" +"\n" +"
\n" +"\n" +"Verwende diese Vorlage, um eine Notiz in eine Seite einzufügen. Die Notiz\n" +"wird rechts vom restlichen Text der Seite schwebend angezeigt werden.\n" +"Diese Vorlage hat einen Parameter:" +"
    \n" +"
  • `text` - der Text, der in der Notiz angezeigt werden soll.\n" +"
\n" +"
\n" + diff --git a/po/underlays/basewiki/templates/popup.de.po b/po/underlays/basewiki/templates/popup.de.po new file mode 100644 index 000000000..37ba31ff8 --- /dev/null +++ b/po/underlays/basewiki/templates/popup.de.po @@ -0,0 +1,59 @@ +# German translation of basewiki/templates/popup page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-12 20:08+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "" +"\n" +"Use this template to create a popup window that is displayed when the " +"mouse\n" +"is over part of the page. This template has two parameters:\n" +"
    \n" +"
  • `mouseover` - This is the text or other content that triggers the\n" +"popup.\n" +"
  • `popup` - This should be the content of the popup window. It can be\n" +"anything, even images or a whole little wiki page, but should not be too\n" +"large for good usability.\n" +"
\n" +"Note that browsers that do not support the CSS will display the popup\n" +"inline in the page, inside square brackets.\n" +"
\n" +"\n" +"[]\n" +"\n" +msgstr "" +"\n" +"Verwende diese Vorlage, um ein Popup-Fenster anzuzeigen, wenn sich die " +"Maus\n" +"über diesem Teil der Seite befindet. Dies Vorlage hat zwei Parameter:\n" +"
    \n" +"
  • `mouseover` - Dies ist der Text oder andere Inhalt, der das " +"Popup-Fenster\n" +"auslöst.\n" +"
  • `popup` - Dies ist der Inhalt des Popup-Fensters. Er kann beliebig " +"sein,\n" +"sogar Bilder oder eine ganze kleine Wiki-Seite. Im Interesse guter " +"Benutzbarkeit\n" +"sollte er aber nicht zu groß sein." +"
\n" +"Beachte, dass Browser, die CSS nicht unterstützen, das Popup innerhalb\n" +"der Seite anzeigen, eingerahmt durch eckige Klammern.\n" +"
\n" +"\n" +"[]\n" +"\n" + diff --git a/po/underlays/directives/ikiwiki/directive/aggregate.de.po b/po/underlays/directives/ikiwiki/directive/aggregate.de.po new file mode 100644 index 000000000..518190ade --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/aggregate.de.po @@ -0,0 +1,189 @@ +# German translation of directives/ikiwiki/directive/aggregate page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 13:56+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `aggregate` directive is supplied by the [[!iki plugins/aggregate " +"desc=aggregate]] plugin. This plugin requires extra setup, specifically, a " +"cron job. See the plugin's documentation for details." +msgstr "" +"Die `aggregate`-Anweisung wird durch die [[!iki plugins/aggregate " +"desc=aggregate]]-Erweiterung zur Verfügung gestellt. Diese Erweiterung erfordert " +"zusätzliche Konfiguration, insbesondere einen cron-Job. Für Details siehe die " +"Dokumentation der Erweiterung." + +#. type: Plain text +msgid "" +"This directive allows content from other feeds to be aggregated into the " +"wiki. Aggregate a feed as follows:" +msgstr "" +"Diese Anweisung erlaubt es, Inhalt von anderen Feeds in diesem Wiki " +"gesammelt zur Verfügung zu stellen. Dies funktioniert wie folgt:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!aggregate name=\"example blog\" dir=\"example\"\n" +"\tfeedurl=\"http://example.com/index.rss\"\n" +"\turl=\"http://example.com/\" updateinterval=\"15\"]]\n" +msgstr "" +"\t\\[[!aggregate name=\"Beispiel-Blog\" dir=\"beispiel\"\n" +"\tfeedurl=\"http://beispiel.de/index.rss\"\n" +"\turl=\"http://beispiel.de/\" updateinterval=\"15\"]]\n" + +#. type: Plain text +msgid "" +"That example aggregates posts from the specified RSS feed, updating no more " +"frequently than once every 15 minutes (though possibly less frequently, if " +"the cron job runs less frequently than that), and puts a page per post under " +"the example/ directory in the wiki." +msgstr "" +"In diesem Beispiel werden Beiträge aus dem angegebenen RSS-Feed " +"eingesammelt, und zwar nicht öfter als alle 15 Minuten (möglicherweise " +"aber seltener, wenn der cron-Job seltener läuft), und dann als eine Seite " +"pro Beitrag im Verzeichnis `beispiel/` des Wikis gespeichert." + +#. type: Plain text +msgid "" +"You can then use ikiwiki's [[inline]] directive to create a blog of one or " +"more aggregated feeds. For example:" +msgstr "" +"Man kann dann ikiwikis [[inline]]-Anweisun nutzen, um einen Blog aus " +"einem oder mehreren eingesammelten Feeds zu erstellen. Zum Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!inline pages=\"internal(example/*)\"]]\n" +msgstr "\t\\[[!inline pages=\"internal(beispiel/*)\"]]\n" + +#. type: Plain text +msgid "" +"Note the use of `internal()` in the [[ikiwiki/PageSpec]] to match aggregated " +"pages. By default, aggregated pages are internal pages, which prevents them " +"from showing up directly in the wiki, and so this special [[PageSpec]] is " +"needed to match them." +msgstr "" +"Dabei ist es wichtig, `internal()` in der [[ikiwiki/PageSpec]] zur Erfassung der " +"eingesammelten Seiten zu verwenden. Diese werden standardmäßig als interne " +"Seiten gespeichert: Dies verhindert, dass sie direkt im Wiki auftauchen. Deshalb " +"ist diese spezielle [[ikiwiki/PageSpec]] nötig, um sie zu erfassen." + +#. type: Title ## +#, no-wrap +msgid "usage" +msgstr "Verwendung" + +#. type: Plain text +msgid "" +"Here are descriptions of all the supported parameters to the `aggregate` " +"directive:" +msgstr "" +"Hier die Beschreibung aller unterstützter Parameter der " +"`aggregate`-Anweisung:" + +#. type: Bullet: '* ' +msgid "`name` - A name for the feed. Each feed must have a unique name. Required." +msgstr "" +"`name` - Ein Name für den Feed. Jeder Feed muss einen nur einmal vergebenen " +"Namen haben. Erforderlich." + +#. type: Bullet: '* ' +msgid "" +"`url` - The url to the web page for the feed that's being aggregated. " +"Required." +msgstr "" +"`url` - Die URL mit der Webseite des Feeds, der eingesammelt werden soll. " +"Erforderlich." + +#. type: Bullet: '* ' +msgid "" +"`dir` - The directory in the wiki where pages should be saved. Optional, if " +"not specified, the directory is based on the name of the feed." +msgstr "" +"`dir` - Das Verzeichnis im Wiki, in dem die Seiten gespeichert werden sollen. " +"Optional, wenn nicht angegeben, wird der Verzeichnisname vom Namen des Feeds " +"abgeleitet." + +#. type: Bullet: '* ' +msgid "" +"`feedurl` - The url to the feed. Optional, if it's not specified ikiwiki " +"will look for feeds on the `url`. RSS and atom feeds are supported." +msgstr "" +"`feedurl` - Die URL des Feeds. Optional, wenn nicht angegeben, sucht ikiwiki in " +"unter der `url` nach feeds. Unterstützt werden RSS- und Atom-Feeds." + +#. type: Bullet: '* ' +msgid "" +"`updateinterval` - How often to check for new posts, in minutes. Default is " +"15 minutes." +msgstr "" +"`updateinterval` - Wie oft nach neuen Beiträgen geschaut werden soll. " +"Voreingestellt sind 15 Minuten." + +#. type: Bullet: '* ' +msgid "" +"`expireage` - Expire old items from this feed if they are older than a " +"specified number of days. Default is to never expire on age." +msgstr "" +"`expireage` - Entferne alte Einträge aus diesem Feed, wenn sie älter sind als " +"die angegebene Anzahl von Tagen. Voreingestellt ist, niemals Einträge aufgrund " +"ihres Alters zu entfernen." + +#. type: Bullet: '* ' +msgid "" +"`expirecount` - Expire old items from this feed if there are more than the " +"specified number total. Oldest items will be expired first. Default is to " +"never expire on count." +msgstr "" +"`expirecount` - Entferne alte Einträge aus diesem Feed, wenn es insgesamt mehr " +"als die angegebene Anzahl von Beiträgen gibt. Die ältesten Einträge werden " +"zuerst entfernt. Voreingestellt ist, niemals Einträge aufgrund der Anzahl zu " +"entfernen." + +#. type: Bullet: '* ' +msgid "" +"`tag` - A tag to tag each post from the feed with. A good tag to use is the " +"name of the feed. Can be repeated multiple times. The [[tag]] plugin must be " +"enabled for this to work." +msgstr "" +"`tag` - Ein Tag, mit dem alle Beiträge dieses Feeds versehen werden. Gut eignet " +"sich der Name des Feeds. Kann mehrmals angegeben werden. Die [[tag]]-Erweiterung " +"muss " +"aktiviert sein, damit dies funktioniert." + +#. type: Bullet: '* ' +msgid "" +"`template` - Template to use for creating the aggregated pages. Defaults to " +"aggregatepost." +msgstr "" +"`template` - Vorlage, die bei der Erstellung der eingesammelten Seiten verwendet " +"wird. Voreingestellt ist `aggregatepost`." + +#. type: Plain text +msgid "" +"Note that even if you are using subversion or another revision control " +"system, pages created by aggregation will *not* be checked into revision " +"control." +msgstr "" +"Dabei ist zu beachten, dass die beim Einsammeln erstellten Seiten nicht in der " +"Versionsverwaltung registriert werden, selbst wenn subversion oder ein " +"anderes solches System verwendet wird." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/brokenlinks.de.po b/po/underlays/directives/ikiwiki/directive/brokenlinks.de.po new file mode 100644 index 000000000..ff258a562 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/brokenlinks.de.po @@ -0,0 +1,57 @@ +# German translation of directives/ikiwiki/directive/brokenlinks page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 13:57+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `brokenlinks` directive is supplied by the [[!iki plugins/brokenlinks " +"desc=brokenlinks]] plugin." +msgstr "" +"Die `brokenlinks`-Anweisung wird durch die [[!iki plugins/brokenlinks " +"desc=brokenlinks]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive generates a list of broken links on pages in the wiki. This " +"is a useful way to find pages that still need to be written, or links that " +"are written wrong." +msgstr "" +"Diese Anweisung erzeugt eine Liste aller defekter Links im Wiki. Dies ist " +"ein nützlicher Weg zu erfahren, welche Seiten noch geschrieben werden " +"müssen und welche Links Fehler enthalten." + +#. type: Plain text +msgid "" +"The optional parameter \"pages\" can be a [[ikiwiki/PageSpec]] specifying " +"the pages to search for broken links, default is search them all." +msgstr "" +"Der optionale Parameter `pages` kann eine [[ikiwiki/PageSpec]] enthalten, " +"die angibt welche Seiten nach defekten Links durchsucht werden sollen. " +"Standardmäßig werden alle durchsucht." + +#. type: Plain text +msgid "Example:" +msgstr "Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!brokenlinks pages=\"* and !recentchanges\"]]\n" +msgstr "\t\\[[!brokenlinks pages=\"* and !recentchanges\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/calendar.de.po b/po/underlays/directives/ikiwiki/directive/calendar.de.po new file mode 100644 index 000000000..5c6868e18 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/calendar.de.po @@ -0,0 +1,183 @@ +# German translation of directives/ikiwiki/directive/calendar page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 13:57+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `calendar` directive is supplied by the [[!iki plugins/calendar " +"desc=calendar]] plugin." +msgstr "" +"Die `calendar`-Anweisung wird durch die [[!iki plugins/calendar " +"desc=calendar]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive displays a calendar, similar to the typical calendars shown " +"on some blogs." +msgstr "" +"Diese Anweisung zeigt einen Kalender, ähnlich denen, die auf manchen Blogs " +"angezeigt werden." + +#. type: Title # +#, no-wrap +msgid "examples" +msgstr "Beispiele" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!calendar ]]\n" +msgstr "\t\\[[!calendar ]]\n" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!calendar type=\"month\" pages=\"blog/* and !*/Discussion\"]]\n" +msgstr "\t\\[[!calendar type=\"month\" pages=\"blog/* and !*/Discussion\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!calendar type=\"year\" year=\"2005\" pages=\"blog/* and " +"!*/Discussion\"]]\n" +msgstr "" +"\t\\[[!calendar type=\"year\" year=\"2005\" pages=\"blog/* and " +"!*/Discussion\"]]\n" + +#. type: Title ## +#, no-wrap +msgid "setup" +msgstr "Einrichtung" + +#. type: Plain text +msgid "" +"The calendar is essentially a fancy front end to archives of previous pages, " +"usually used for blogs. It can produce a calendar for a given month, or a " +"list of months for a given year. The month format calendar simply links to " +"any page posted on each day of the month. The year format calendar links to " +"archive pages, with names like `archives/2007` (for all of 2007) and " +"`archives/2007/01` (for January, 2007)." +msgstr "" +"Der Kalender ist im Wesentlichen eine schicke Schnittstelle zu einem Archiv mit " +"früheren Seiten und wird normalerweise für Blogs verwendet. Er kann einen " +"Kalender für einen angegebenen Monat erzeugen, oder eine Liste der Monate eines " +"angegebenen Jahres. Der Kalender im Jahresformat enthält einfach Links zu den " +"Archivseiten mit Namen wie `archiv/2007` (für ganz 2007) und `archiv/2007/01` " +"(für Januar 2007)." + +#. type: Plain text +msgid "" +"While you can insert calendar directives anywhere on your wiki, including in " +"the sidebar, you'll also need to create these archive pages. They typically " +"use this directive to display a calendar, and also use [[inline]] to display " +"or list pages created in the given time frame." +msgstr "" +"Während `calendar`-Anweisungen überall im Wiki verwendet werden können, auch in " +"der Sidebar, muss man auch die Archiv-Seiten anlegen. Dort wird typischerweise " +"diese Anweisung verwendet, um einen Kalender anzuzeigen, und außerdem die Seiten " +"aus dem entsprechenden Zeitraum über [[inline]] eingebunden." + +#. type: Plain text +msgid "" +"The `ikiwiki-calendar` command can be used to automatically generate the " +"archive pages. It also refreshes the wiki, updating the calendars to " +"highlight the current day. This command is typically run at midnight from " +"cron. An example crontab:" +msgstr "" +"Der `ikiwiki-calendar`-Befehl kann verwendet werden, um die Archivseiten " +"automatisch zu erzeugen. Es aktualisiert auch das Wiki und hebt in den Kalendern " +"den aktuellen Tag hervor. Dieser Befehl wird typischerweise um Mitternacht von " +"cron ausgeführt, beispielsweise durch folgenden crontab-Eintrag:" + +#. type: Plain text +msgid "An example crontab:" +msgstr "Ein Beispiel-Eintrag in crontab:" + +#. type: Plain text +#, no-wrap +msgid "\t0 0 * * * ikiwiki-calendar ~/ikiwiki.setup \"posts/* and !*/Discussion\"\n" +msgstr "" +"\t0 0 * * * ikiwiki-calendar ~/ikiwiki.setup \"posts/* and !*/Discussion\"\n" + +#. type: Title ## +#, no-wrap +msgid "usage" +msgstr "Verwendung" + +#. type: Bullet: '* ' +msgid "" +"`type` - Used to specify the type of calendar wanted. Can be one of " +"\"month\" or \"year\". The default is a month view calendar." +msgstr "" +"`type` - Hiermit wird die Art des zu erzeugenden Kalenders angegeben. Kann " +"entweder \"month\" oder \"year\" sein. Vorgeingestellt ist die Monatsansicht." + +#. type: Bullet: '* ' +msgid "" +"`pages` - Specifies the [[ikiwiki/PageSpec]] of pages to link to from the " +"month calendar. Defaults to \"*\"." +msgstr "" +"`pages` - Gibt die [[ikiwiki/PageSpec]] der Seiten an, auf die aus dem " +"Monatskalender verwiesen werden soll. Voreingestellt ist \"*\"." + +#. type: Bullet: '* ' +msgid "" +"`archivebase` - Configures the base of the archives hierarchy. The default " +"is \"archives\". Note that this default can also be overridden for the whole " +"wiki by setting `archivebase` in ikiwiki's setup file." +msgstr "" +"`archivebase` - Konfiguriert die Basis der Archiv-Hierarchie. Voreingestellt ist " +"\"archives\". Dies kann auch für das gesamte Wiki geändert werden, indem " +"`archivebase` in der Setup-Datei von ikiwiki gesetzt wird." + +#. type: Bullet: '* ' +msgid "" +"`year` - The year for which the calendar is requested. Defaults to the " +"current year." +msgstr "" +"`year` - Das Jahr, für das der Kalender angezeigt werden soll. Voreingestellt ist " +"das aktuelle Jahr." + +#. type: Bullet: '* ' +msgid "" +"`month` - The numeric month for which the calendar is requested, in the " +"range 1..12. Used only for the month view calendar, and defaults to the " +"current month." +msgstr "" +"`month` - Der Monat, für den der Kalender angezeigt werden soll, als Zahl von 1 " +"bis 12. Wird nur für Monatskalender verwendet. Voreingestellt ist der aktuelle " +"Monat." + +#. type: Bullet: '* ' +msgid "" +"`week_start_day` - A number, in the range 0..6, which represents the day of " +"the week that the month calendar starts with. 0 is Sunday, 1 is Monday, and " +"so on. Defaults to 0, which is Sunday." +msgstr "" +"`week_start_day` - Eine Zahl aus dem Bereich 0 bis 6, die den Wochentag angibt, " +"mit dem ein Monatskalender anfängt. 0 ist Sonntag, 1 ist Montag, und so weiter. " +"Voreingestellt ist 0, also Sonntag." + +#. type: Bullet: '* ' +msgid "" +"`months_per_row` - In the annual calendar, number of months to place in each " +"row. Defaults to 3." +msgstr "" +"`months_per_row` - Anzahl der Monate, die in einem Jahreskalender in einer Zeile " +"platziert werden. Voreingestellt ist 3." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/color.de.po b/po/underlays/directives/ikiwiki/directive/color.de.po new file mode 100644 index 000000000..1cc36f8ee --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/color.de.po @@ -0,0 +1,97 @@ +# German translation of directives/ikiwiki/directive/color page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 13:58+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `color` directive is supplied by the [[!iki plugins/color desc=color]] " +"plugin." +msgstr "" +"Die `color`-Anweisung wird durch die [[!iki plugins/color " +"desc=color]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive can be used to color a piece of text on a page. It can be " +"used to set the foreground and/or background color of the text." +msgstr "" +"Diese Anweisung kann verwendet werden, um ein Stück Text auf einer Seite zu " +"färben. Sie kann die Schrift- und/oder Hintergrundfarbe verändern." + +#. type: Plain text +msgid "" +"You can use a color name (e.g. `white`) or HTML code (e.g. `#ffffff`) to " +"define colors." +msgstr "" +"Man kann einen Farbnamen (z.B. `white`) oder HTML-Code (z.B. `#ffffff`) " +"verwenden, um eine Farbe zu definieren." + +#. type: Title ## +#, no-wrap +msgid "examples" +msgstr "Beispiele" + +#. type: Plain text +msgid "" +"Here the foreground color is defined as a word, while the background color " +"is defined as a HTML color code:" +msgstr "" +"Hier wird die Schriftfarbe durch ein Wort und die Hintergrundfarbe durch eine " +"HTML-Farbe definiert:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!color foreground=white background=#ff0000 text=\"White text on red " +"background\"]]\n" +msgstr "" +"\t\\[[!color foreground=white background=#ff0000 text=\"Weißer Text auf rotem " +"Hintergrund\"]]\n" + +#. type: Plain text +msgid "" +"The background color is missing, so the text is displayed on default " +"background:" +msgstr "" +"Die Hintergrundfarbe fehlt, also wird der Text auf dem Standardhintergrund " +"dargestellt:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!color foreground=white text=\"White text on default color " +"background\"]]\n" +msgstr "" +"\t\\[[!color foreground=white text=\"Weißer Text auf Hintergrund in " +"Standardfarbe\"]]\n" + +#. type: Plain text +msgid "The foreground is missing, so the text has the default foreground color:" +msgstr "Die Schriftfarbe fehlt, also wird hierfür die Standardfarbe verwendet:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!color background=#ff0000 text=\"Default color text on red " +"background\"]]\n" +msgstr "" +"\t\\[[!color background=#ff0000 text=\"Schrift in Standardfarbe auf rotem " +"Hintergrund\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/comment.de.po b/po/underlays/directives/ikiwiki/directive/comment.de.po new file mode 100644 index 000000000..70d0d7d50 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/comment.de.po @@ -0,0 +1,133 @@ +# German translation of directives/ikiwiki/directive/comment page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 13:58+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `comment` directive is supplied by the [[!iki plugins/comments " +"desc=comments]] plugin, and is used to add a comment to a page. Typically, " +"the directive is the only thing on a comment page, and is filled out by the " +"comment plugin when a user posts a comment." +msgstr "" +"Die `comment`-Anweisung wird durch die [[!iki plugins/comments " +"desc=comments]]-Erweiterung bereitgestellt, und wird zum Hinzufügen von " +"Kommentaren zu einer Seite verwendet. Typischerweise ist diese Anweisung " +"das Einzige auf einer Kommentarseite, und wird von der comment-Erweiterung " +"ausgefüllt, wenn ein Benutzer einen Kommentar veröffentlicht." + +#. type: Plain text +msgid "Example:" +msgstr "Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!comment format=mdwn\n" +"\tusername=\"foo\"\n" +"\tsubject=\"Bar\"\n" +"\tdate=\"2009-06-02T19:05:01Z\"\n" +"\tcontent=\"\"\"\n" +msgstr "" +"\t\\[[!comment format=mdwn\n" +"\tusername=\"foo\"\n" +"\tsubject=\"Bar\"\n" +"\tdate=\"2009-06-02T19:05:01Z\"\n" +"\tcontent=\"\"\"\n" + +#. type: Plain text +#, no-wrap +msgid "" +"\tBlah blah.\n" +"\t\"\"\"\n" +msgstr "" +"\tBla bla.\n" +"\t\"\"\"\n" + +#. type: Plain text +#, no-wrap +msgid "\t]]\n" +msgstr "\t]]\n" + +#. type: Title ## +#, no-wrap +msgid "usage" +msgstr "Verwendung" + +#. type: Plain text +msgid "" +"The only required parameter is `content`, the others just add or override " +"metadata of the comment." +msgstr "" +"Der einzige erforderliche Parameter ist `content`, die übrigen fügen nur " +"Metadaten zu dem Kommentar hinzu oder ändern diese." + +#. type: Bullet: '* ' +msgid "" +"`content` - Text to display for the comment. Note that " +"[[directives|ikiwiki/directive]] may not be allowed, depending on the " +"configuration of the comment plugin." +msgstr "" +"`content` - Text, der in diesem Kommentar angezeigt werden soll. " +"[[Anweisungen|ikiwiki/directive]] sind hier unter Umständen nicht erlaubt, " +"abhängig von der Konfiguration der comment-Erweiterung." + +#. type: Bullet: '* ' +msgid "`format` - Specifies the markup used for the content." +msgstr "" +"`format` - Gibt die Formatierungssprache an, die für den Inhalt verwendet " +"wird." + +#. type: Bullet: '* ' +msgid "`subject` - Subject for the comment." +msgstr "`subject` - Betreff des Kommentars." + +#. type: Bullet: '* ' +msgid "" +"`date` - Date the comment was posted. Can be entered in nearly any format, " +"since it's parsed by [[!cpan TimeDate]]" +msgstr "" +"`date` - Datum, an dem der Kommentar veröffentlicht wurde. Kann in beinahe " +"beliebigem Format angegeben werden, da es von [[!cpan TimeDate]] " +"ausgewertet wird." + +#. type: Bullet: '* ' +msgid "" +"`username` - Used to record the username (or OpenID) of a logged in " +"commenter." +msgstr "" +"`username` - Hier wird der Benutzername (oder die OpenID) eines " +"angemeldeten Kommentators gespeichert." + +#. type: Bullet: '* ' +msgid "" +"`ip` - Can be used to record the IP address of a commenter, if they posted " +"anonymously." +msgstr "" +"`ip` - Hier kann die IP-Adresse eines Kommentators gespeichert werden, wenn " +"der Kommentar anonym abgegeben wurde." + +#. type: Bullet: '* ' +msgid "" +"`claimedauthor` - Records the name that the user entered, if anonymous " +"commenters are allowed to enter their (unverified) name." +msgstr "" +"`claimedauthor` - Speichert den Namen, den der Benutzer angegeben hat, wenn " +"anonyme Kommentatoren ihren (nicht verifizierten) Namen angeben dürfen." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/copy.de.po b/po/underlays/directives/ikiwiki/directive/copy.de.po new file mode 100644 index 000000000..33f902da8 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/copy.de.po @@ -0,0 +1,25 @@ +# German translation of directives/ikiwiki/directive/copy page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-12 22:05+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta redir=/ikiwiki/directive/cutpaste]]\n" +msgstr "[[!meta redir=/ikiwiki/directive/cutpaste]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + diff --git a/po/underlays/directives/ikiwiki/directive/cut.de.po b/po/underlays/directives/ikiwiki/directive/cut.de.po new file mode 100644 index 000000000..33f902da8 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/cut.de.po @@ -0,0 +1,25 @@ +# German translation of directives/ikiwiki/directive/copy page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-12 22:05+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta redir=/ikiwiki/directive/cutpaste]]\n" +msgstr "[[!meta redir=/ikiwiki/directive/cutpaste]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + diff --git a/po/underlays/directives/ikiwiki/directive/cutpaste.de.po b/po/underlays/directives/ikiwiki/directive/cutpaste.de.po new file mode 100644 index 000000000..ff3503ed5 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/cutpaste.de.po @@ -0,0 +1,153 @@ +# German translation of directives/ikiwiki/directive/cutpaste page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 13:59+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `copy`, `cut` and `paste` directives are supplied by the [[!iki " +"plugins/cutpaste desc=cutpaste]] plugin." +msgstr "" +"Die `copy`- `cut`- und `paste`-Anweisungen werden durch die [[!iki " +"plugins/cutpaste desc=cutpaste]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "With these directives you can store and recall pieces of text in a page:" +msgstr "" +"Mit diesen Anweisungen kann man Textabschnitte innerhalb einer Seite " +"speichern und wieder abrufen:" + +#. type: Bullet: ' * ' +msgid "" +"`\\[[!cut id=name text=\"text\"]]` memorizes the text allowing to recall it " +"using the given ID. The text being cut is not included in the output." +msgstr "" +"`\\[[!cut id=name text=\"text\"]]` merkt sich den Text und erlaubt es, ihn " +"über die angegebene id wieder abzurufen. Der Text taucht an dieser Stelle " +"nicht in der Ausgabe auf." + +#. type: Bullet: ' * ' +msgid "" +"`\\[[!copy id=name text=\"text\"]]` memorizes the text allowing to recall it " +"using the given ID. The text being cut *is* included in the output." +msgstr "" +"`\\[[!copy id=name text=\"text\"]]` merkt sich den Text und erlaubt es, ihn " +"über die angegebene id wieder abzurufen. Der Text *wird* an dieser Stelle " +"ausgegeben." + +#. type: Bullet: ' * ' +msgid "`\\[[!paste id=name]]` is replaced by the previously memorized text." +msgstr "`\\[[!paste id=name]]` wird durch den zuvor gemerkten Text ersetzt." + +#. type: Plain text +msgid "" +"The text being cut, copied and pasted can freely include wiki markup, " +"including more calls to cut, copy and paste." +msgstr "" +"Der ausgeschnittene, kopierte und eingefügte Text kann beliebige " +"Wiki-Formatierungsanweisungen enthalten, inklusive weiterer Aufrufe von " +"`cut`, `copy` und `paste`." + +#. type: Plain text +msgid "" +"You do not need to memorize the text before using it: a cut directive can " +"follow the paste directive that uses its text. In fact, this is quite " +"useful to postpone big blocks of text like long annotations and have a more " +"natural flow. For example:" +msgstr "" +"Man muss sich einen Text nicht vor seiner Verwendung merken: Eine " +"`cut`-Anweisung kann auch erst nach der `paste`-Anweisung kommen, die ihren " +"Text verwendet. Dies ist ein durchaus nützlich, um größere Blöcke von Text " +"wie lange Anmerkungen erst später anzugeben und so für einen natürlicheren " +"Textfluss zu sorgen. Zum Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!toggleable id=\"cut\" text=\"[[!paste id=cutlongdesc]]\"]]\n" +"\t\\[[!toggleable id=\"copy\" text=\"[[!paste id=copylongdesc]]\"]]\n" +"\t\\[[!toggleable id=\"paste\" text=\"[[!paste id=pastelongdesc]]\"]]\n" +msgstr "" +"\t\\[[!toggleable id=\"cut\" text=\"[[!paste id=beschreibungcut]]\"]]\n" +"\t\\[[!toggleable id=\"copy\" text=\"[[!paste id=beschreibungcopy]]\"]]\n" +"\t\\[[!toggleable id=\"paste\" text=\"[[!paste id=beschreibungpaste]]\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "\t[...some time later...]\n" +msgstr "\t[… und später …]\n" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!cut id=cutlongdesc text=\"\"\"\n" +msgstr "\t\\[[!cut id=beschreibungcut text=\"\"\"\n" + +#. type: Plain text +#: +#, no-wrap +msgid "\t blah blah blah\n" +msgstr "\t bla bla bla\n" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!cut id=copylongdesc text=\"\"\"\n" +msgstr "\t\\[[!cut id=beschreibungcopy text=\"\"\"\n" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!cut id=pastelongdesc text=\"\"\"\n" +msgstr "\t\\[[!cut id=beschreibungpaste text=\"\"\"\n" + +#. type: Plain text +msgid "" +"This can potentially be used to create loops, but ikiwiki is clever and " +"breaks them." +msgstr "" +"Auf diese Weise können möglicherweise Schleifen erzeugt werden, aber ikiwiki " +"ist schlau und bricht diese auf." + +#. type: Plain text +msgid "" +"Since you can paste without using double quotes, copy and paste can be used " +"to nest directives that require multiline parameters inside each other:" +msgstr "" +"Da man `paste` ohne Anführungszeichen verwenden kann, können mit `copy` und " +"`paste` Anweisungen ineinander geschachtelt werden, die mehrzeilige Parameter " +"benötigen:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!toggleable id=foo text=\"\"\"\n" +msgstr "\t\\[[!toggleable id=foo text=\"\"\"\n" + +#. type: Plain text +#, no-wrap +msgid "\t [[!toggleable id=bar text=\"[[!paste id=baz]]\"]]\n" +msgstr "\t [[!toggleable id=bar text=\"[[!paste id=baz]]\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!cut id=baz text=\"\"\"\n" +msgstr "\t\\[[!cut id=baz text=\"\"\"\n" + +#. type: Plain text +#, no-wrap +msgid "\tmultiline parameter!\n" +msgstr "\tmehrzeiliger Parameter!\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/date.de.po b/po/underlays/directives/ikiwiki/directive/date.de.po new file mode 100644 index 000000000..7baa1b3a4 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/date.de.po @@ -0,0 +1,64 @@ +# German translation of directives/ikiwiki/directive/date page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 13:59+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `date` directive is supplied by the [[!iki plugins/date desc=date]] " +"plugin." +msgstr "" +"Die `date`-Anweisung wird durch die [[!iki plugins/date desc=date]]-Erweiterung " +"bereitgestellt." + +#. type: Plain text +msgid "" +"This directive can be used to display a date on a page, using the same " +"display method that is used to display the modification date in the page " +"footer, and other dates in the wiki. This can be useful for consistency of " +"display, or if you want to embed parseable dates into the page source." +msgstr "" +"Diese Anweisung kann verwendet werden, um ein Datum auf einer Seite anzuzeigen, " +"und verwendet dieselbe Methode, die auch zur Anzeige des Datums der letzten " +"Änderung im Seitenfuß und anderer Daten im Wiki verwendet wird. Dies ist " +"nützlich für die Konsistenz der Ausgabe, oder wenn der Seitenquelltext ein " +"maschinenlesbares Datum enthalten soll." + +#. type: Plain text +msgid "" +"Like the dates used by the [[meta]] directive, the date can be entered in " +"nearly any format, since it's parsed by [[!cpan TimeDate]]." +msgstr "" +"Wie auch in der [[meta]]-Anweisung kann das Datum in nahezu beliebigem Format " +"angegeben werden, da es durch [[!cpan TimeDate]] interpretiert wird." + +#. type: Plain text +msgid "" +"For example, an update to a page with an embedded date stamp could look " +"like:" +msgstr "" +"Zum Beispiel könnte eine Seite mit eingebettetem Zeitstempel folgendermaßen " +"aussehen:" + +#. type: Plain text +#, no-wrap +msgid "\tUpdated \\[[!date \"Wed, 25 Nov 2009 01:11:55 -0500\"]]: mumble mumble\n" +msgstr "" +"\tAktualisiert \\[[!date \"Wed, 25 Nov 2009 01:11:55 -0500\"]]: murmel murmel\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/edittemplate.de.po b/po/underlays/directives/ikiwiki/directive/edittemplate.de.po new file mode 100644 index 000000000..f47140c09 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/edittemplate.de.po @@ -0,0 +1,99 @@ +# German translation of directives/ikiwiki/directive/edittemplate page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 13:59+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `edittemplate` directive is supplied by the [[!iki plugins/edittemplate " +"desc=edittemplate]] plugin." +msgstr "" +"Die `edittemplate`-Anweisung wird durch die [[!iki plugins/edittemplate " +"desc=edittemplate]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive allows registering template pages, that provide default " +"content for new pages created using the web frontend. To register a " +"template, insert a [[ikiwiki/directive/template]] directive on some other " +"page." +msgstr "" +"Diese Anweisung erlaubt es, Vorlagen-Seiten zu registrieren, die einen " +"Standardinhalt für neue Seiten bereitstellen, die über das Webfrontend " +"angelegt werden. Um eine Vorlage zu registrieren, fügt man eine " +"[[ikiwiki/directive/template]]-Anweisung auf einer anderen Seite ein." + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!edittemplate template=\"bugtemplate\" match=\"bugs/*\"]]\n" +msgstr "\t\\[[!edittemplate template=\"bugtemplate\" match=\"bugs/*\"]]\n" + +#. type: Plain text +msgid "" +"In the above example, the page named \"bugtemplate\" is registered as a " +"template to be used when any page named \"bugs/*\" is created. To avoid the " +"directive displaying a note about the template being registered, add " +"\"silent=yes\"." +msgstr "" +"Im obigen Beispiel wird die Seite mit Namen \"bugtemplate\" für alle Seiten " +"als Vorlage registriert, die mit Namen \"bugs/*\" angelegt werden. Um den " +"Hinweis über die Registrierung der Vorlage zu unterdrücken, kann man " +"`silent=yes` hinzufügen." + +#. type: Plain text +msgid "" +"Often the template page contains a simple skeleton for a particular type of " +"page. For the bug report pages in the above example, it might look something " +"like:" +msgstr "" +"Oft enthält eine Vorlagen-Seite ein einfaches Skelett für einen bestimmten " +"Seitentyp. Für die Fehlerberichte aus dem obigen Beispiel könnte sie " +"folgendermaßen aussehen:" + +#. type: Plain text +#, no-wrap +msgid "" +"\tPackage: \n" +"\tVersion: \n" +"\tReproducible: y/n\n" +"\tDetails:\n" +msgstr "" +"\tPaket: \n" +"\tVersion: \n" +"\tReproduzierbar: ja/nein\n" +"\tDetails:\n" + +#. type: Plain text +#, no-wrap +msgid "" +"The template page can also contain [[!cpan HTML::Template]] directives,\n" +"similar to other ikiwiki [[templates]]. Currently only one variable is\n" +"set: `` is replaced with the name of the page being\n" +"created.\n" +msgstr "" + +#. type: Plain text +msgid "" +"It's generally not a good idea to put the `edittemplate` directive in the " +"template page itself, since the directive would then be included as part of " +"the template on new pages, which would then in turn be registered as " +"templates. If multiple pages are registered as templates for a new page, an " +"arbitrary one is chosen, so that could get confusing." +msgstr "" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "" + + diff --git a/po/underlays/directives/ikiwiki/directive/format.de.po b/po/underlays/directives/ikiwiki/directive/format.de.po new file mode 100644 index 000000000..2db9e5af6 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/format.de.po @@ -0,0 +1,93 @@ +# German translation of directives/ikiwiki/directive/format page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:00+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `format` directive is supplied by the [[!iki plugins/format " +"desc=format]] plugin." +msgstr "" +"Die `format`-Anweisung wird durch die [[!iki plugins/format " +"desc=format]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"The directive allows formatting a chunk of text using any available page " +"format. It takes two parameters. First is the type of format to use, ie the " +"extension that would be used for a standalone file of this type. Second is " +"the text to format." +msgstr "" +"Die Anweisung erlaubt es, einen Textabschnitt mit einem beliebigen " +"Seitenformat zu formatieren. Sie hat zwei Parameter. Der erste ist das zu " +"verwendende Seitenformat – also die Erweiterung, die für eine " +"eigenständige Seite dieses Typs verwendet würde. Der zweite ist der zu " +"formatierende Text." + +#. type: Plain text +msgid "" +"For example, this will embed an otl outline inside a page using mdwn or some " +"other format:" +msgstr "" +"Zum Beispiel bettet dies eine otl-Gliederung in eine Seite ein, die mdwn " +"oder ein anderes Format verwendet:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!format otl \"\"\"\n" +msgstr "\t\\[[!format otl \"\"\"\n" + +#. type: Plain text +#, no-wrap +msgid "" +"\tfoo\n" +"\t\t1\n" +"\t\t2\n" +"\tbar\n" +"\t\t3\n" +"\t\t4\n" +msgstr "" +"\tfoo\n" +"\t\t1\n" +"\t\t2\n" +"\tbar\n" +"\t\t3\n" +"\t\t4\n" + +#. type: Plain text +msgid "" +"Note that if the highlight plugin is enabled, this directive can also be " +"used to display syntax highlighted code. Many languages and formats are " +"supported. For example:" +msgstr "" +"Wenn die highlight-Erweiterung installiert ist, kann diese Anweisung auch " +"zur " +"Anzeige von Programmcode mit Syntaxhervorhebung verwendet werden. Viele " +"Sprachen und Formate werden unterstützt. Zum Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!format perl \"\"\"\n" +msgstr "\t\\[[!format perl \"\"\"\n" + +#. type: Plain text +#, no-wrap +msgid "\tprint \"hello, world\\n\";\n" +msgstr "\tprint \"hello, world\\n\";\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/fortune.de.po b/po/underlays/directives/ikiwiki/directive/fortune.de.po new file mode 100644 index 000000000..89cdf84aa --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/fortune.de.po @@ -0,0 +1,42 @@ +# German translation of directives/ikiwiki/directive/fortune page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:00+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `fortune` directive is supplied by the [[!iki plugins/fortune " +"desc=fortune]] plugin." +msgstr "" +"Die `fortune`-Anweisung wird durch die [[!iki plugins/fortune " +"desc=fortune]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This just uses the `fortune` program to insert a fortune cookie into the " +"page. Usage:" +msgstr "" +"Sie verwendet einfach das Programm `fortune`, um einen Spruch (engl. " +"*fortune cookie*) in die Seite einzubinden. Verwendung:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!fortune ]]\n" +msgstr "\t\\[[!fortune ]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/graph.de.po b/po/underlays/directives/ikiwiki/directive/graph.de.po new file mode 100644 index 000000000..4f9d6a346 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/graph.de.po @@ -0,0 +1,88 @@ +# German translation of directives/ikiwiki/directive/graph page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:01+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `graph` directive is supplied by the [[!iki plugins/graphviz " +"desc=graphviz]] plugin." +msgstr "" +"Die `graph`-Anweisung wird durch die [[!iki plugins/graphviz " +"desc=graphviz]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive allows embedding [graphviz](http://www.graphviz.org/) graphs " +"in a page. Example usage:" +msgstr "" +"Diese Anweisung erlaubt es, von [graphviz](http://www.graphviz.org/) " +"erzeugte Graphen in eine Seite einzubinden. Verwendungsbeispiel:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!graph src=\"a -> b -> c; a -> c;\"]]\n" +msgstr "\t\\[[!graph src=\"a -> b -> c; a -> c;\"]]\n" + +#. type: Plain text +msgid "" +"Note that graphs will only show up in previews if your browser has " +"[[!wikipedia data: URI]] support, or if the same graph already exists on " +"that page." +msgstr "" +"Zu beachten ist, dass der Graph nur dann in der Vorschau auftaucht, wenn der " +"verwendete Browser [[!wikipedia data: URI]] unterstützt, oder wenn derselbe " +"Graph bereits auf der Seite existiert." + +#. type: Plain text +msgid "The `graph` directive supports the following parameters:" +msgstr "Die `graph`-Anweisung unterstützt die folgenden Parameter:" + +#. type: Bullet: '- ' +msgid "`src` - The graphviz source to render." +msgstr "`src` - Der graphviz-Quelltext des zu erzeugenden Graphen." + +#. type: Bullet: '- ' +msgid "" +"`type` - The type of graph to render: `graph` or `digraph`. Defaults to " +"`digraph`." +msgstr "" +"`type` - Die Art des zu erzeugenden Graphen: `graph` oder `digraph`. " +"Voreingestellt ist `digraph`." + +#. type: Bullet: '- ' +msgid "" +"`prog` - The graphviz program to render with: `dot`, `neato`, `fdp`, " +"`twopi`, or `circo`. Defaults to `dot`." +msgstr "" +"`prog` - Das graphviz-Programm, mit dem der Graph erzeugt werden soll: " +"`dot`, `neato`, `fdp`, " +"`twopi` oder `circo`. Voreingestellt ist `dot`." + +#. type: Bullet: '- ' +msgid "" +"`height`, `width` - Limit the size of the graph to a given height and width, " +"in inches. You must specify both to limit the size; otherwise, graphviz will " +"choose a size, without any limit." +msgstr "" +"`height`, `width` - Begrenzt die Größe des erzeugten Graphen durch die in " +"Inch angegebene Höhe und Breite. Es müssen beide angegeben werden, um die " +"Größe zu beschränken, graphviz sucht sich sonst selbst eine Größe aus, ohne " +"jede Beschränkung." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/haiku.de.po b/po/underlays/directives/ikiwiki/directive/haiku.de.po new file mode 100644 index 000000000..7923a1395 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/haiku.de.po @@ -0,0 +1,60 @@ +# German translation of directives/ikiwiki/directive/haiku page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:01+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `haiku` directive is supplied by the [[!iki plugins/haiku desc=haiku]] " +"plugin." +msgstr "" +"Die `haiku`-Anweisung wird durch die [[!iki plugins/haiku " +"desc=haiku]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive allows inserting a randomly generated haiku into a wiki " +"page. Just type:" +msgstr "" +"Diese Anweisung erlaubt es, ein zufällig erzeugtes Haiku in eine Wiki-Seite " +"einzufügen. Dafür genügt:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!haiku hint=\"argument\"]]\n" +msgstr "\t\\[[!haiku hint=\"argument\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!haiku hint=\"argument test\"]]\n" +msgstr "[[!haiku hint=\"argument test\"]]\n" + +#. type: Plain text +msgid "" +"The hint parameter can be omitted, it only provides the generator a hint of " +"what to write the haiku about. If no hint is given, it might base it on the " +"page name. Since the vocabulary it knows is very small, many hints won't " +"affect the result at all." +msgstr "" +"Der `hint`-Parameter kann weggelassen werden, er gibt dem Generator nur " +"einen Hinweis, worüber er das Haiku schreiben soll. Wenn kein solcher " +"Hinweis gegeben wird, könnte er den Seitennamen verwenden. Da das ihm " +"bekannte Vokabular sehr klein ist, werden viele Hinweise das Ergebnis in " +"keiner Weise beeinflussen." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/if.de.po b/po/underlays/directives/ikiwiki/directive/if.de.po new file mode 100644 index 000000000..e28e45936 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/if.de.po @@ -0,0 +1,145 @@ +# German translation of directives/ikiwiki/directive/if page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:02+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `if` directive is supplied by the [[!iki plugins/conditional " +"desc=conditional]] plugin." +msgstr "" +"Die `if`-Anweisung wird durch die [[!iki plugins/conditional " +"desc=conditional]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"With this directive, you can make text be conditionally displayed on a " +"page. For example:" +msgstr "" +"Mit dieser Anweisung kann die Anzeige von Text an bestimmte Bedingungen " +"geknüpft werden. Zum Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!if test=\"enabled(smiley)\"\n" +"\t then=\"The smiley plugin is enabled :-)\"\n" +"\t else=\"No smiley plugin here..\"]]\n" +msgstr "" +"\t\\[[!if test=\"enabled(smiley)\"\n" +"\t then=\"Die smiley-Erweiterung ist aktiviert :-)\"\n" +"\t else=\"Hier gibt es keine smiley-Erweiterung …\"]]\n" + +#. type: Plain text +msgid "" +"If the specified `test` succeeds, the `then` text will be displayed, " +"otherwise the `else` text will be displayed. The `else` part is optional." +msgstr "" +"Wenn der angegebene `test` erfolgreich ist, wird der `then`-Text angezeigt, " +"sonst der `else`-Text. Der `else`-Teil ist optional." + +#. type: Plain text +msgid "" +"The `then` and `else` values can include any markup that would be allowed in " +"the wiki page outside the template. Triple-quoting the values even allows " +"quotes to be included." +msgstr "" +"Die Werte für `then` und `else` können beliebige Formatierungsanweisungen " +"enthalten, die außerhalb der Anweisung erlaubt wären. Werten die Werte durch " +"dreifache Anführungszeichen abgetrennt, können sie sogar Anführungszeichen " +"enthalten." + +#. type: Plain text +msgid "" +"The `test` is a [[ikiwiki/PageSpec]]; if it matches any page in the wiki " +"then it succeeds. So you can do things like testing for the existence of a " +"page or pages, testing to see if any pages were created in a given month, " +"and so on." +msgstr "" +"Der `test` ist eine [[ikiwiki/PageSpec]]; wenn sie auf irgendeine Seite im " +"Wiki passt, hat der Test Erfolg. Dadurch kann man die Existenz einer oder " +"mehrerer Seiten überprüfen, überprüfen ob in einem bestimmten Monat Seiten " +"angelegt wurden, und so weiter." + +#. type: Plain text +msgid "" +"If you want the [[ikiwiki/PageSpec]] to only match against the page that " +"contains the conditional, rather than matching against all pages in the " +"wiki, set the \"all\" parameter to \"no\"." +msgstr "" +"Wenn die [[ikiwiki/PageSpec]] nur auf die aktuelle Seite angewendet werden " +"soll, die die Bedingung enthält (und nicht auf alle Seiten im Wiki), kann " +"der optionale `all`-Parameter auf `no` gesetzt werden." + +#. type: Plain text +msgid "" +"In an `if` directive, the regular [[ikiwiki/PageSpec]] syntax is expanded " +"with the following additional tests:" +msgstr "" +"In einer `if`-Anweisung sind neben der regulären [[ikiwiki/PageSpec]]-Syntax " +"die folgenden zusätzlichen Test verfügbar:" + +#. type: Bullet: '* ' +msgid "enabled(plugin)" +msgstr "enabled(plugin)" + +#. type: Plain text +#, no-wrap +msgid " Tests whether the specified plugin is enabled.\n" +msgstr " Prüft, ob die angegebene Erweiterung aktiviert ist.\n" + +#. type: Bullet: '* ' +msgid "sourcepage(glob)" +msgstr "sourcepage(glob)" + +#. type: Plain text +#, no-wrap +msgid "" +" Tests whether the glob matches the name of the page that contains the\n" +" conditional.\n" +msgstr "" +" Prüft, ob das angegebene Muster auf den Namen der Seite passt, die die\n" +" Bedingung enthält.\n" + +#. type: Bullet: '* ' +msgid "destpage(glob)" +msgstr "destpage(glob)" + +#. type: Plain text +#, no-wrap +msgid "" +" Tests whether the glob matches the name of the page that is being built.\n" +" That might be different than the name of the page that contains the\n" +" conditional, if it's being inlined into another page.\n" +msgstr "" +" Prüft, ob das Muster auf den namen der Seite passt, die gerade erzeugt\n" +" wird. Dies kann ein anderer Name sein als der der Seite, die die " +"Bedingung\n" +" enthält, wenn diese über [[inline]] in eine andere Seite eingebunden wird." +"\n" + +#. type: Bullet: '* ' +msgid "included()" +msgstr "included()" + +#. type: Plain text +#, no-wrap +msgid " Tests whether the page is being included onto another page.\n" +msgstr " Prüft, ob die Seite gerade in eine andere eingebunden wird.\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/img.de.po b/po/underlays/directives/ikiwiki/directive/img.de.po new file mode 100644 index 000000000..f28a1597b --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/img.de.po @@ -0,0 +1,115 @@ +# German translation of directives/ikiwiki/directive/img page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:02+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "The `img` directive is supplied by the [[!iki plugins/img desc=img]] plugin." +msgstr "" +"Die `img`-Anweisung wird durch die [[!iki plugins/img desc=img]]-Erweiterung " +"bereitgestellt." + +#. type: Plain text +msgid "" +"This is an image handling directive. While ikiwiki supports inlining " +"full-size images by making a [[ikiwiki/WikiLink]] that points to the image, " +"using this directive you can easily scale down an image for inclusion onto a " +"page, providing a link to a full-size version." +msgstr "" +"Diese Anweisung verarbeitet Bilder. Während ikiwiki das Einbinden von Bildern in " +"voller Größe durch einen [[ikiwiki/WikiLink]] auf das Bild unterstützt, kann man " +"mit dieser Anweisung ein Bild einfach herunterskalieren, um es in eine Seite " +"einzubinden, und einen Link auf das Bild in Originalgröße setzen." + +#. type: Title ## +#, no-wrap +msgid "usage" +msgstr "Verwendung" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!img image1.jpg size=\"200x200\" alt=\"clouds\"]]\n" +msgstr "\t\\[[!img image1.jpeg size=\"200x200\" alt=\"Wolken\"]]\n" + +#. type: Plain text +msgid "" +"The image file will be searched for using the same rules as used to find the " +"file pointed to by a [[ikiwiki/WikiLink]]." +msgstr "" +"Diese Bilddatei wird nach den gleichen Regeln gesucht wie das Ziel eines " +"[[ikiwiki/WikiLink]]." + +#. type: Plain text +msgid "" +"The `size` parameter is optional, defaulting to full size. Note that the " +"original image's aspect ratio is always preserved, even if this means making " +"the image smaller than the specified size. You can also specify only the " +"width or the height, and the other value will be calculated based on it: " +"\"200x\", \"x200\"" +msgstr "" +"Der Parameter `size` ist optional, voreingestellt ist die volle Größe. Das " +"Seitenverhältnis des Originalbildes wird immer bewahrt, auch wenn das Bild " +"dadurch kleiner wird als angegeben. Man kann auch nur die Breite oder nur die " +"Höhe angeben, dann wird der jeweils andere Wert automatisch berechnet: `200x`, " +"`x200`." + +#. type: Plain text +msgid "" +"You can also pass `alt`, `title`, `class`, `align` and `id` parameters. " +"These are passed through unchanged to the html img tag. If you include a " +"`caption` parameter, the caption will be displayed centered beneath the " +"image." +msgstr "" +"Man kann auch die Parameter `alt`, `title`, `class`, `align` und `id` übergeben. " +"Diese werden an den img-Tag im erzeugten HTML-Code weitergereicht. Wird der " +"Parameter `caption` angegeben, wird sein Wert unter dem Bild zentriert angezeigt." + +#. type: Plain text +msgid "" +"The `link` parameter is used to control whether the scaled image links to " +"the full size version. By default it does; set \"link=somepage\" to link to " +"another page instead, or \"link=no\" to disable the link, or " +"\"link=http://url\" to link to a given url." +msgstr "" +"Der Parameter `link` steuert, ob herunterskalierte Bilder mit dem Originalbild " +"verlinkt werden. In der Voreinstellung ist dies der Fall; mit `link=AndereSeite` " +"zeigt der Link auf eine andere Seite, mit `link=no` wird der Link deaktiviert, " +"mit `link=http://url` zeigt er auf die angegebene URL." + +#. type: Plain text +msgid "" +"You can also set default values that will be applied to all later images on " +"the page, unless overridden. Useful when including many images on a page." +msgstr "" +"Man kann auch die Voreinstellung für die weiter unten auf der Seite eingebundenen " +"Bilder verändern. Dies ist nützlich, wenn es auf einer Seite viele Bilder gibt." + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!img defaults size=200x200 alt=\"wedding photo\"]]\n" +"\t\\[[!img photo1.jpg]]\n" +"\t\\[[!img photo2.jpg]]\n" +"\t\\[[!img photo3.jpg size=200x600]]\n" +msgstr "" +"\t\\[[!img defaults size=200x200 alt=\"Hochzeitsfoto\"]]\n" +"\t\\[[!img photo1.jpg]]\n" +"\t\\[[!img photo2.jpg]]\n" +"\t\\[[!img photo3.jpg size=200x600]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/inline.de.po b/po/underlays/directives/ikiwiki/directive/inline.de.po new file mode 100644 index 000000000..17e5c19d2 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/inline.de.po @@ -0,0 +1,385 @@ +# German translation of directives/ikiwiki/directive/inline page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:02+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `inline` directive is supplied by the [[!iki plugins/inline " +"desc=inline]] plugin." +msgstr "" +"Die `inline`-Anweisung wird durch die [[!iki plugins/inline " +"desc=inline]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This is a directive that allows including one wiki page inside another. The " +"most common use of inlining is generating blogs and RSS or Atom feeds." +msgstr "" +"Diese Anweisung erlaubt das Einbinden einer Wiki-Seite in eine andere. Die " +"häufigste Verwendung ist das Erzeugen von Blogs und RSS- oder Atom-Feeds." + +#. type: Plain text +msgid "Example:" +msgstr "Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!inline pages=\"blog/* and !*/Discussion\" show=\"10\" " +"rootpage=\"blog\"]]\n" +msgstr "" +"\t\\[[!inline pages=\"blog/* and !*/Discussion\" show=\"10\" " +"rootpage=\"blog\"]]\n" + +#. type: Plain text +msgid "" +"Any pages that match the specified [[PageSpec]] (in the example, any " +"[[SubPage]] of \"blog\") will be part of the blog, and the newest 10 of them " +"will appear in the page. Note that if files that are not pages match the " +"[[PageSpec]], they will be included in the feed using RSS enclosures, which " +"is useful for podcasting." +msgstr "" +"Es wird jede Seite Teil des Blogs, die auf die angegebene [[PageSpec]] passt " +"(im Beispiel jede [[Unterseite|subpage]] von \"blog\"), und die zehn neusten " +"davon erscheinen auf der Seite. Übrigens werden Dateien, die keine Seiten sind " +"und auf die [[PageSpec]] passen, als RSS-Einbettungen Teil des Feeds: Dies ist " +"nützlich für Podcasts." + +#. type: Plain text +msgid "" +"The optional `rootpage` parameter tells the wiki that new posts to this blog " +"should default to being [[SubPages|SubPage]] of \"blog\", and enables a form " +"at the top of the blog that can be used to add new items." +msgstr "" +"Der optionale Parameter `rootpage` teilt dem Wiki mit, dass neue Einträge in " +"diesem Blog [[Unterseiten|subpage]] von \"blog\" sein sollen; in diesem Fall " +"wird ein Formular zum Hinzufügen neuer Beiträge am Anfang der Seite angezeigt." + +#. type: Plain text +msgid "" +"If you want your blog to have an archive page listing every post ever made " +"to it, you can accomplish that like this:" +msgstr "" +"Wenn es zu einem Blog eine Archivseite mit allen bisherigen Einträgen geben " +"soll, kann dies wie folgt erreicht werden:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!inline pages=\"blog/* and !*/Discussion\" archive=\"yes\"]]\n" +msgstr "\t\\[[!inline pages=\"blog/* and !*/Discussion\" archive=\"yes\"]]\n" + +#. type: Plain text +msgid "" +"You can even create an automatically generated list of all the pages on the " +"wiki, with the most recently added at the top, like this:" +msgstr "" +"Mit dem folgenden Code kann man sogar eine automatisch erzeugte Liste mit " +"allen Seiten des Wikis erstellen (die neuesten erscheinen oben):" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!inline pages=\"* and !*/Discussion\" archive=\"yes\"]]\n" +msgstr "\t\\[[!inline pages=\"* and !*/Discussion\" archive=\"yes\"]]\n" + +#. type: Plain text +msgid "" +"If you want to be able to add pages to a given blog feed by tagging them, " +"you can do that too. To tag a page, just make it link to a page or pages " +"that represent its tags. Then use the special `link()` [[PageSpec]] to match " +"all pages that have a given tag:" +msgstr "" +"Es ist auch möglich, dass Seiten durch das Hinzufügen eines Tags Teil des " +"Blogs werden. Hierzu kann auf der betreffenden Seite einfach ein Link auf die " +"Seite (oder die Seiten) erstellt, die die Tags repräsentieren. Dann kann die " +"spezielle `link()`-[[PageSpec]] verwendet werden, um alle Seiten mit einem " +"gegebenen Tag zu erfassen:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!inline pages=\"link(life)\"]]\n" +msgstr "\t\\[[!inline pages=\"link(life)\"]]\n" + +#. type: Plain text +msgid "Or include some tags and exclude others:" +msgstr "" +"Es ist auch möglich, bestimmte Tags inzuschließen, während andere " +"ausgeschlossen werden:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!inline pages=\"link(debian) and !link(social)\"]]\n" +msgstr "\t\\[[!inline pages=\"link(debian) and !link(social)\"]]\n" + +#. type: Title ## +#, no-wrap +msgid "usage" +msgstr "Verwendung" + +#. type: Plain text +msgid "" +"There are many parameters you can use with the `inline` directive. These are " +"the commonly used ones:" +msgstr "" +"Es gibt viele Parameter, die man mit der `inline`-Anweisung verwenden kann. " +"Dies sind die am häufigsten benutzten:" + +#. type: Bullet: '* ' +msgid "`pages` - A [[PageSpec]] of the pages to inline." +msgstr "`pages` - Eine [[PageSpec]] der einzubindenden Seiten." + +#. type: Bullet: '* ' +msgid "" +"`show` - Specify the maximum number of matching pages to inline. Default is " +"10, unless archiving, when the default is to show all. Set to 0 to show all " +"matching pages." +msgstr "" +"`show` - Gibt die maximale Anzahl von Seiten an, die eingebunden werden sollen." +" Voreingestellt sind 10, außer wenn archiviert wird, dass sind es alle. Ist " +"der Wert 0, werden alle passenden Seiten angezeigt." + +#. type: Bullet: '* ' +msgid "" +"`archive` - If set to \"yes\", only list page titles and some metadata, not " +"full contents." +msgstr "" +"`archive` - Hat dieser Parameter den Wert `yes`, werden nur der Titel und " +"einige Metadaten angezeigt, aber nicht der komplette Inhalt." + +#. type: Bullet: '* ' +msgid "" +"`description` - Sets the description of the rss feed if one is generated. " +"Defaults to the name of the wiki." +msgstr "" +"`description` - Setzt die Beschreibung des RSS-Feeds, wenn einer erzeugt wird. " +"Voreingestellt ist der Name des Wikis." + +#. type: Bullet: '* ' +msgid "" +"`skip` - Specify a number of pages to skip displaying. Can be useful to " +"produce a feed that only shows archived pages." +msgstr "" +"`skip` - Gibt die Anzahl von Seiten an, die bei der Anzeige übersprungen " +"werden. Dies kann nützlich sein, um einen Feed zu erstellen, der nur " +"archivierte Seiten enthält." + +#. type: Bullet: '* ' +msgid "`postform` - Set to \"yes\" to enable a form to post new pages to a blog." +msgstr "" +"`postform` - Bei dem Wert `yes`, wird ein Formular zum Erstellen neuer " +"Einträge in dem Blog angezeigt." + +#. type: Bullet: '* ' +msgid "`postformtext` - Set to specify text that is displayed in a postform." +msgstr "`postformtext` - Gibt an, welcher Text im 'postform' angezeigt wird." + +#. type: Bullet: '* ' +msgid "" +"`rootpage` - Enables the postform, and allows controling where newly posted " +"pages should go, by specifiying the page that they should be a [[SubPage]] " +"of." +msgstr "" +"`rootpage` - Aktiviert `postform` und erlaubt gleichzeitig die Kontrolle " +"darüber, wo neu erstellte Seiten landen sollen, indem eine Seite angegeben " +"wird, deren [[Unterseite|subpage]] die neuen Seiten werden sollen." + +#. type: Plain text +msgid "Here are some less often needed parameters:" +msgstr "Hier sind einige weniger häufig benötigte Parameter:" + +#. type: Bullet: '* ' +msgid "" +"`actions` - If set to \"yes\" add links to the bottom of the inlined pages " +"for editing and discussion (if they would be shown at the top of the page " +"itself)." +msgstr "" +"`actions` - Wenn `yes`, füge Links zum Bearbeiten und zur Diskussion am " +"unteren Ende jeder eingebundenen Seite ein (wenn sie im Kopf der jeweiligen " +"Seite angezeigt werden würden)." + +#. type: Bullet: '* ' +msgid "" +"`rss` - controls generation of an rss feed. If the wiki is configured to " +"generate rss feeds by default, set to \"no\" to disable. If the wiki is " +"configured to `allowrss`, set to \"yes\" to enable." +msgstr "" +"`rss` - Steuert die Erzeugung eines RSS-Feeds. Wenn das Wiki so konfiguriert " +"ist, dass es standardmäßig RSS-Feeds erzeugt, kann dies durch den Wert `no` " +"verhindert werden. Wenn das Wiki RSS erlaubt (`allowrss` in der " +"Konfigurationsdatei), dann kann der RSS-Feed mit `yes` aktiviert werden." + +#. type: Bullet: '* ' +msgid "" +"`atom` - controls generation of an atom feed. If the wiki is configured to " +"generate atom feeds by default, set to \"no\" to disable. If the wiki is " +"configured to `allowatom`, set to \"yes\" to enable." +msgstr "" +"`atom` - Steuert die Erzeugung eines Atom-Feeds. Wenn das Wiki so konfiguriert " +"ist, dass es standardmäßig Atom-Feeds erzeugt, kann dies durch den Wert `no` " +"verhindert werden. Wenn das Wiki Atom erlaubt (`allowatom` in der " +"Konfigurationsdatei), dann kann der Atom-Feed mit `yes` aktiviert werden." + +#. type: Bullet: '* ' +msgid "" +"`feeds` - controls generation of all types of feeds. Set to \"no\" to " +"disable generating any feeds." +msgstr "" +"`feeds` - Steuert die Erzeugung aller Feed-Typen. Ein Wert von `no` " +"unterdrückt alle Feeds." + +#. type: Bullet: '* ' +msgid "" +"`emptyfeeds` - Set to \"no\" to disable generation of empty feeds. Has no " +"effect if `rootpage` or `postform` is set." +msgstr "" +"`emptyfeeds` - Bei `no` werden keine leeren Feeds erzeugt. Dies hat keine " +"Auswirkung, wenn `rootpage` oder `postform` aktiv sind." + +#. type: Bullet: '* ' +msgid "" +"`template` - Specifies the template to fill out to display each inlined " +"page. By default the `inlinepage` template is used, while the `archivepage` " +"template is used for archives. Set this parameter to use some other, custom " +"template, such as the `titlepage` template that only shows post titles or " +"the `microblog` template, optimised for microblogging. Note that you should " +"still set `archive=yes` if your custom template does not include the page " +"content." +msgstr "" +"`template` - Gibt die Vorlage an, die für die Anzeige der einzelnen " +"eingebundenen Seiten verwendet wird. Voreingestellt ist die " +"`inlinepage`-Vorlage, für Archive wird `archivepage` verwendet. Es können auch " +"andere, angepasste Vorlagen verwendet werden, etwa `titlepage` (zeigt nur die " +"Titel der Blog-Einträge) oder `microblog` (optimiert für Microblogging). Wenn " +"die angepasste Vorlage den Seiteninhalt nicht einbindet, kann zusätzlich " +"`archive=yes` gesetzt werden." + +#. type: Bullet: '* ' +msgid "" +"`raw` - Rather than the default behavior of creating a blog, if raw is set " +"to \"yes\", the page will be included raw, without additional markup around " +"it, as if it were a literal part of the source of the inlining page." +msgstr "" +"`raw` - Statt des voreingestellten Verhaltens, einen Blog zu erzeugen, wird " +"bei `raw=yes` die Seite ohne zusätzliches Drumherum eingebunden, als ob sie " +"ein Teil des Quelltextes der einbindenden Seite wäre." + +#. type: Bullet: '* ' +msgid "" +"`sort` - Controls how inlined pages are [[sorted|pagespec/sorting]]. The " +"default is to sort the newest created pages first." +msgstr "" +"`sort` - Steuert wie die eingebundenen Seiten [[sortiert|pagespec/sorting]] " +"werden. In der Voreinstellung kommen die zuletzt angelegten Seiten zuerst." + +#. type: Bullet: '* ' +msgid "`reverse` - If set to \"yes\", causes the sort order to be reversed." +msgstr "`reverse` - Bei `yes` wird die Sortierung umgekehrt." + +#. type: Bullet: '* ' +msgid "" +"`feedshow` - Specify the maximum number of matching pages to include in the " +"rss/atom feeds. The default is the same as the `show` value above." +msgstr "" +"`feedshow` - Gibt an, wie viele Seiten höchstens in den RSS- und Atom-Feeds " +"eingebunden werden. Voreingestellt ist der Wert von `show`." + +#. type: Bullet: '* ' +msgid "" +"`feedonly` - Only generate the feed, do not display the pages inline on the " +"page." +msgstr "" +"`feedonly` - Erzeuge nur den Feed, zeige die Seiten nicht eingebettet auf der " +"Seite an." + +#. type: Bullet: '* ' +msgid "" +"`quick` - Build archives in quick mode, without reading page contents for " +"metadata. This also turns off generation of any feeds." +msgstr "" +"`quick` - Erzeuge Archive im Schnelldurchlauf, ohne im Seiteninhalt nach " +"Metadaten zu suchen. Dies deaktiviert auch das Erzeugen von Feeds." + +#. type: Bullet: '* ' +msgid "" +"`timeformat` - Use this to specify how to display the time or date for pages " +"in the blog. The format string is passed to the strftime(3) function." +msgstr "" +"`timeformat` - Hiermit kann gesteuert werden, wie die Zeit oder das Datum der " +"Blogeinträge dargestellt wird. Der Wert wird an die Funktion strftime(3) " +"weitergereicht." + +#. type: Bullet: '* ' +msgid "" +"`feedpages` - A [[PageSpec]] of inlined pages to include in the rss/atom " +"feeds. The default is the same as the `pages` value above, and only pages " +"matched by that value are included, but some of those can be excluded by " +"specifying a tighter [[PageSpec]] here." +msgstr "" +"`feedpages` - Eine [[PageSpec]] mit Seiten, die im RSS- bzw. Atom-Feed " +"auftachen sollen. Voreingestellt ist der Wert von `pages`, und nur Seiten die " +"darauf passen werden eingebunden, aber einige davon können ausgeschlossen " +"werden, indem hier eine striktere [[PageSpec]] angegeben wird." + +#. type: Bullet: '* ' +msgid "" +"`guid` - If a URI is given here (perhaps a UUID prefixed with `urn:uuid:`), " +"the Atom feed will have this as its ``. The default is to use the URL of " +"the page containing the `inline` directive." +msgstr "" +"`guid` - Wenn hier eine URI angegeben wird (möglicherweise eine UUID mit " +"Präfix `urn:uuid:`), dann hat der Atom-Feed diese als seine ``. " +"Voreingestellt ist der Name der Seite, die die inline-Anweisung enthält." + +#. type: Bullet: '* ' +msgid "" +"`feedfile` - Can be used to change the name of the file generated for the " +"feed. This is particularly useful if a page contains multiple feeds. For " +"example, set \"feedfile=feed\" to cause it to generate `page/feed.atom` " +"and/or `page/feed.rss`. This option is not supported if the wiki is " +"configured not to use `usedirs`." +msgstr "" +"`feedfile` - Hiermit kann der Name der Datei verändert werden, die für den " +"Feed erzeugt wird. Dies ist insbesondere dann nützlich, wenn eine Seite " +"mehrere Feeds enthält. Zum Beispiel kann man `feedfile=feed` setzen, um " +"`page/feed.atom` und/oder `page/feed.rss` zu erzeugen. Diese Option ist nicht " +"verfügbar, wenn das Wiki die Option `usedirs` nicht verwendet." + +#. type: Bullet: '* ' +msgid "" +"`pagenames` - If given instead of `pages`, this is interpreted as a " +"space-separated list of links to pages (with the same " +"[[SubPage/LinkingRules]] as in a [[ikiwiki/WikiLink]]), and they are inlined " +"in exactly the order given: the `sort` and `pages` parameters cannot be used " +"in conjunction with this one." +msgstr "" +"`pagenames` - Kann anstelle von `pages` angegeben werden und wird als " +"Leerzeichen-separierte Liste von Links zu Seiten interpretiert (mit den " +"gleichen [[Verlinkungsregeln|SubPage/LinkingRules]] wie in einem " +"[[ikiwiki/WikiLink]]), und werden dann genau in der angegebenen Reihenfolge " +"eingebunden. Die Parameter `sort` und `pages` können nicht in Kombination mit " +"diesem verwendet werden." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + +#. type: Plain text +msgid "" +"A related directive is the [[ikiwiki/directive/edittemplate]] directive, " +"which allows default text for a new page to be specified." +msgstr "" +"Eine verwandte Anweisung ist die [[ikiwiki/directive/edittemplate]]-Anweisung, " +"mit der für eine neue Seite ein voreingestellter Text angegeben werden kann." + + diff --git a/po/underlays/directives/ikiwiki/directive/linkmap.de.po b/po/underlays/directives/ikiwiki/directive/linkmap.de.po new file mode 100644 index 000000000..1695ca659 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/linkmap.de.po @@ -0,0 +1,99 @@ +# German translation of directives/ikiwiki/directive/linkmap page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:03+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `linkmap` directive is supplied by the [[!iki plugins/linkmap " +"desc=linkmap]] plugin." +msgstr "" +"Die `linkmap`-Anweisung wird durch die [[!iki plugins/linkmap " +"desc=linkmap]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive uses [graphviz](http://www.graphviz.org/) to generate a graph " +"showing the links between a set of pages in the wiki. Example usage:" +msgstr "" +"Diese Anweisung verwendet [graphviz](http://www.graphviz.org/), um einen " +"Graph mit den Links zwischen den Seiten im Wiki zu erstellen. Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!linkmap pages=\"* and !blog/* and !*/Discussion\"]]\n" +msgstr "\t\\[[!linkmap pages=\"* and !blog/* and !*/Discussion\"]]\n" + +#. type: Plain text +msgid "" +"Only links between mapped pages will be shown; links pointing to or from " +"unmapped pages will be omitted. If the pages to include are not specified, " +"the links between all pages (and other files) in the wiki are mapped." +msgstr "" +"Nur Links zwischen den angegebenen Seiten werden angezeigt; Links die auf " +"andere Seiten zeigen werden ausgelassen. Wenn die einzuschließenden Seiten " +"nicht angegeben werden, werden Links zwischen allen Seiten (und anderen " +"Dateien) im Wiki angezeigt." + +#. type: Plain text +msgid "" +"Here are descriptions of all the supported parameters to the `linkmap` " +"directive:" +msgstr "" +"Hier die Beschreibung aller unterstützter Parameter der `linkmap`-Anweisung:" + +#. type: Bullet: '* ' +msgid "`pages` - A [[ikiwiki/PageSpec]] of the pages to map." +msgstr "`pages` - Eine [[ikiwiki/PageSpec]] der darzustellenden Seiten." + +#. type: Bullet: '* ' +msgid "" +"`height`, `width` - Limit the size of the map to a given height and width, " +"in inches. Both must be specified for the limiting to take effect, otherwise " +"the map's size is not limited." +msgstr "" +"`height`, `width` - Begrenzt die Größe der erzeugten Graphik auf die (in " +"Inch) angegebene Breite und Höne. Beide müssen angegeben werden, damit die " +"Beschränkung wirksam wird." + +#. type: Bullet: '* ' +msgid "" +"`connected` - Controls whether to include pages on the map that link to no " +"other pages (connected=no, the default), or to only show pages that link to " +"others (connected=yes)." +msgstr "" +"`connected` - Steuert ob auch Seiten dargestellt werden, die keinen Link zu " +"anderen Seiten enthalten (`connected=no`, die Voreinstellung), oder ob nur " +"Seiten angezeigt werden, die auf andere verlinken (`connected=yes`)." + +#. type: Plain text +msgid "" +"For best results, only a small set of pages should be mapped, since " +"otherwise the map can become very large, unwieldy, and complicated. If too " +"many pages are included, the map may get so large that graphviz cannot " +"render it. Using the `connected` parameter is a good way to prune out pages " +"that clutter the map." +msgstr "" +"Um die besten Ergebnisse zu erzielen, sollte nur eine kleine Teilmenge der " +"Seiten angegeben werden, da die erzeugte Karte sonst groß, unhandlich und " +"kompliziert wird. Wenn zu viele Seiten angegeben werden, kann die Karte zu " +"kompliziert werden, als dass graphviz sie noch rendern könnte. Der Parameter " +"`connected` ist ein guter Weg Seiten loszuwerden, die die Karte " +"unübersichtlich machen." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/listdirectives.de.po b/po/underlays/directives/ikiwiki/directive/listdirectives.de.po new file mode 100644 index 000000000..18d0a6da0 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/listdirectives.de.po @@ -0,0 +1,72 @@ +# German translation of directives/ikiwiki/directive/listdirectives page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:03+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `listdirectives` directive is supplied by the [[!iki " +"plugins/listdirectives desc=listdirectives]] plugin." +msgstr "" +"Die `listdirectives`-Anweisung wird durch die [[!iki " +"plugins/listdirectives desc=listdirectives]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive generates a list of available " +"[[directives|ikiwiki/directive]]." +msgstr "" +"Diese Anweisung erzeugt eine Liste der verfügbaren " +"[[Anweisungen|ikiwiki/directives]]." + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!listdirectives]]\n" +msgstr "\t\\[[!listdirectives]]\n" + +#. type: Plain text +msgid "" +"There is one optional keyword argument, `generated`. Normally the " +"`listdirectives` directive will list all built in directives and directives " +"directly registered by plugins. With this keyword, `listdirectives` will " +"also list directives generated later. For example, all [[shortcuts]] are " +"directives generated in turn by the `shortcut` directive. They will only be " +"listed if the `generated` argument is supplied." +msgstr "" +"Es gibt nur ein optionales Argument, `generated`. Normalerweise zeigt die " +"`listdirectives`-Anweisung alle eingebauten und alle durch eine Erweiterung " +"registrierten Anweisungen an. Mit diesem Schlüsselwort zeigt " +"`listdirectives` auch Anweisungen an, die erst später erzeugt wurden. Zum " +"Beispiel werden alle [[Abkürzungen|shortcuts]] durch die " +"`shortcut`-Anweisung erzeugt und werden nur aufgelistet, wenn das Argument " +"`generated` angegeben wird." + +#. type: Plain text +#, no-wrap +msgid " \\[[!listdirectives generated]]\n" +msgstr " \\[[!listdirectives generated]]\n" + +#. type: Plain text +msgid "" +"This extended list is often quite long, and often contains many undocumented " +"directives." +msgstr "" +"Diese erweiterte Liste ist oft ziemlich lang und enthält oft viele " +"undokumentierte Anweisungen." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/map.de.po b/po/underlays/directives/ikiwiki/directive/map.de.po new file mode 100644 index 000000000..303624b2c --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/map.de.po @@ -0,0 +1,77 @@ +# German translation of directives/ikiwiki/directive/map page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:03+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "The `map` directive is supplied by the [[!iki plugins/map desc=map]] plugin." +msgstr "" +"Die `map`-Anweisung wird durch die [[!iki plugins/map desc=map]]-Erweiterung " +"bereitgestellt." + +#. type: Plain text +msgid "" +"This directive generates a hierarchical page map for the wiki. Example " +"usage:" +msgstr "" +"Diese Anweisung erzeugt eine hierarchische Liste der Seiten im Wiki. Beispiel für " +"die Verwendung:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!map pages=\"* and !blog/* and !*/Discussion\"]]\n" +msgstr "\t\\[[!map pages=\"* and !blog/* and !*/Discussion\"]]\n" + +#. type: Plain text +msgid "" +"If the pages to include are not specified, all pages (and other files) in " +"the wiki are mapped." +msgstr "" +"Wenn die anzuzeigenden Seiten nicht angegeben werden, kommen alle Seiten (und " +"andere Dateien) in die Liste." + +#. type: Plain text +msgid "" +"By default, the names of pages are shown in the map. The `show` parameter " +"can be used to show the titles or descriptions of pages instead (as set by " +"the [[meta]] directive). For example:" +msgstr "" +"In der Voreinstellung werden in der Liste die Namen der Seiten angezeigt. Mit dem " +"Parameter `show` können stattdessen der Titel (`title`) oder die Beschreibung " +"(`description`) verwendet werden, die mit der [[meta]]-Anweisung gesetzt wurden. " +"Zum Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!map pages=\"* and !blog/* and !*/Discussion\" show=title]]\n" +msgstr "\t\\[[!map pages=\"* and !blog/* and !*/Discussion\" show=title]]\n" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!map pages=\"* and !blog/* and !*/Discussion\" show=description]]\n" +msgstr "\t\\[[!map pages=\"* and !blog/* and !*/Discussion\" show=description]]\n" + +#. type: Plain text +msgid "" +"Hint: To limit the map to displaying pages less than a certain level deep, " +"use a [[ikiwiki/PageSpec]] like this: `pages=\"* and !*/*/*\"`" +msgstr "" +"Tipp: Um nur Seiten bis zu einer bestimmten Ebene anzuzeigen, kann eine " +"[[ikiwiki/PageSpec]] wie `pages=\"* and !*/*/*\"` verwendet werden." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/meta.de.po b/po/underlays/directives/ikiwiki/directive/meta.de.po new file mode 100644 index 000000000..aab5fd806 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/meta.de.po @@ -0,0 +1,455 @@ +# German translation of directives/ikiwiki/directive/meta page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:04+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `meta` directive is supplied by the [[!iki plugins/meta desc=meta]] " +"plugin." +msgstr "" +"Die `meta`-Anweisung wird durch die [[!iki plugins/meta desc=meta]]-Erweiterung " +"bereitgestellt." + +#. type: Plain text +msgid "" +"This directive allows inserting arbitrary metadata into the source of a " +"page. Enter the metadata as follows:" +msgstr "" +"Diese Anweisung erlaubt es, beliebige Metadaten in den Quelltext einer Seite " +"einzufügen. Dies geschieht wie folgt:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!meta field=\"value\"]]\n" +"\t\\[[!meta field=\"value\" param=\"value\" param=\"value\"]]\n" +msgstr "" +"\t\\[[!meta field=\"value\"]]\n" +"\t\\[[!meta field=\"value\" param=\"value\" param=\"value\"]]\n" + +#. type: Plain text +msgid "" +"The first form sets a given field to a given value, while the second form " +"also specifies some additional sub-parameters." +msgstr "" +"In der ersten Form wird das angegebene Feld auf den angegebenen Wert gesetzt. In " +"der zweiten Form werden zusätzlich einige Unter-Parameter angegeben." + +#. type: Plain text +msgid "" +"The field values are treated as HTML entity-escaped text, so you can include " +"a quote in the text by writing `"` and so on." +msgstr "" +"Die Feldwerte können HTML-Entities enthalten, zum Beispiel kann durch `"` " +"ein Anführungszeichen eingefügt werden." + +#. type: Plain text +msgid "Supported fields:" +msgstr "Unterstützte Felder:" + +#. type: Bullet: '* ' +msgid "title" +msgstr "`title` " + +#. type: Plain text +#, no-wrap +msgid "" +" Overrides the title of the page, which is generally the same as the\n" +" page name.\n" +msgstr "" +" Überschreibt den Titel der Seite, der normalerweise dem Namen\n" +" der Seite entspricht." + +#. type: Plain text +#, no-wrap +msgid "" +" Note that if the title is overridden, a \"title_overridden\" variable " +"will\n" +" be set to a true value in the template; this can be used to format " +"things\n" +" differently in this case.\n" +msgstr "" +" Wenn der Titel so überschrieben wird, wird die Template-Variable\n" +" `title_overridden` auf wahr gesetzt. Eine Vorlage kann in diesem\n" +" Fall eine andere Darstellung wählen.\n" + +#. type: Bullet: '* ' +msgid "license" +msgstr "`license`" + +#. type: Plain text +#, no-wrap +msgid "" +" Specifies a license for the page, for example, \"GPL\". Can contain\n" +" WikiLinks and arbitrary markup.\n" +msgstr "" +" Gibt eine Lizenz für die Seite an, etwa `GPL`. Kann WikiLinks und\n" +" beliebige Formatierungsanweisungen enhalten.\n" + +#. type: Bullet: '* ' +msgid "copyright" +msgstr "`copyright`" + +#. type: Plain text +#, no-wrap +msgid "" +" Specifies the copyright of the page, for example, \"Copyright 2007 by\n" +" Joey Hess\". Can contain WikiLinks and arbitrary markup.\n" +msgstr "" +" Gibt die Urheberrechte der Seite an, zum Beispiel `Copyright 2007\n" +" by Joey Hess`. Kann WikiLinks und beliebige\n" +" Formatierungsanweisungen enhalten.\n" + +#. type: Bullet: '* ' +msgid "author" +msgstr "`author`" + +#. type: Plain text +#, no-wrap +msgid " Specifies the author of a page.\n" +msgstr " Gibt den Autor der Seite an.\n" + +#. type: Bullet: '* ' +msgid "authorurl" +msgstr "`authorurl`" + +#. type: Plain text +#, no-wrap +msgid " Specifies an url for the author of a page.\n" +msgstr " Gibt eine URL für den Autor der Seite an.\n" + +#. type: Bullet: '* ' +msgid "description" +msgstr "`description`" + +#. type: Plain text +#, no-wrap +msgid "" +" Specifies a short description for the page. This will be put in\n" +" the html header, and can also be displayed by eg, the [[map]] directive.\n" +msgstr "" +" Gibt eine kurze Beschreibung der Seite an. Diese wird im\n" +" HTML-Header angegeben und kann zum Beispiel auch durch die\n" +" [[map]]-Anweisung ausgegeben werden.\n" + +#. type: Bullet: '* ' +msgid "permalink" +msgstr "`permalink`" + +#. type: Plain text +#, no-wrap +msgid "" +" Specifies a permanent link to the page, if different than the page\n" +" generated by ikiwiki.\n" +msgstr "" +" Gibt einen dauerhaften Link zu der Seite an, wenn dieser anders ist\n" +" als die von ikiwiki generierte Seite.\n" + +#. type: Bullet: '* ' +msgid "date" +msgstr "`date`" + +#. type: Plain text +#, no-wrap +msgid "" +" Specifies the creation date of the page. The date can be entered in\n" +" nearly any format, since it's parsed by [[!cpan TimeDate]].\n" +msgstr "" +" Gibt das Erstellungsdatum der Seite an. Das Datum kann in\n" +" nahezu beliebigem Format angegeben werden, da es durch\n" +" [[!cpan TimeDate]] interpretiert wird.\n" + +#. type: Bullet: '* ' +msgid "stylesheet" +msgstr "`stylesheet`" + +#. type: Plain text +#, no-wrap +msgid "" +" Adds a stylesheet to a page. The stylesheet is treated as a wiki link to\n" +" a `.css` file in the wiki, so it cannot be used to add links to external\n" +" stylesheets. Example:\n" +msgstr "" +" Fügt ein Stylesheet zu der Seite hinzu. Der angegebene Name wird als\n" +" WikiLink zu einer `.css`-Datei im Wiki behandelt, es können also keine\n" +" externen Stylesheets eingebunden werden. Beispiel:\n" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!meta stylesheet=somestyle rel=\"alternate stylesheet\"\n" +"\ttitle=\"somestyle\"]]\n" +msgstr "" +"\t\\[[!meta stylesheet=somestyle rel=\"alternate stylesheet\"\n" +"\ttitle=\"somestyle\"]]\n" + +#. type: Bullet: '* ' +msgid "openid" +msgstr "`openid`" + +#. type: Plain text +#, no-wrap +msgid "" +" Adds html <link> tags to perform OpenID delegation to an external\n" +" OpenID server. This lets you use an ikiwiki page as your OpenID.\n" +msgstr "" +" Fügt die nötigen <link>-Tags für die Weiterleitung an einen externen\n" +" OpenID-Server ein. Dadurch kann eine ikiwiki-Seite als OpenID\n" +" verwendet werden.\n" + +#. type: Plain text +#, no-wrap +msgid "" +" By default this will delegate for both `openid` and `openid2`. To only\n" +" delegate for one, add a parameter such as `delegate=openid`.\n" +msgstr "" +" Standardmäßig werden sowohl `openid` als auch `openid2`\n" +" weitergeleitet. Um nur eines davon weiterzuleiten, kann ein\n" +" Parameter wie `delegate=openid` verwendet werden.\n" + +#. type: Plain text +#, no-wrap +msgid "" +" An optional `xrds-location`\n" +" parameter lets you specify the location of any [eXtensible Resource\n" +" DescriptorS](http://www.windley.com/archives/2007/05/using_xrds.shtml).\n" +msgstr "" +" Der optionale Parameter `xrds-location` erlaubt es, den Ort eines\n" +" [eXtensible Resource\n" +" DescriptorS](http://www.windley.com/archives/2007/05/using_xrds.shtml)\n" +" anzugeben.\n" + +#. type: Plain text +#, no-wrap +msgid " Example:\n" +msgstr " Beispiel:\n" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\\\[[!meta openid=\"http://joeyh.myopenid.com/\"\n" +"\tserver=\"http://www.myopenid.com/server\"\n" +"\txrds-location=\"http://www.myopenid.com/xrds?username=joeyh.myopenid.com\"\"]]\n" +msgstr "" +"\t\\\\[[!meta openid=\"http://joeyh.myopenid.com/\"\n" +"\tserver=\"http://www.myopenid.com/server\"\n" +"\txrds-location=\"http://www.myopenid.com/xrds?username=joeyh.myopenid.com\"\"]]\n" + +#. type: Bullet: '* ' +msgid "link" +msgstr "`link`" + +#. type: Plain text +#, no-wrap +msgid "" +" Specifies a link to another page. This can be used as a way to make the\n" +" wiki treat one page as linking to another without displaying a " +"user-visible\n" +" [[ikiwiki/WikiLink]]:\n" +msgstr "" +" Gibt einen Link zu einer anderen Seite an. Auf diese Weise kann das Wiki\n" +" dazu gebracht werden, eine Seite so zu behandeln, als ob sie einen Link\n" +" auf eine andere enthält, ohne dass die Benutzer einen [[ikiwiki/WikiLink]]\n" +" zu Gesicht bekommen:\n" + +#. type: Plain text +#, no-wrap +msgid " \\[[!meta link=otherpage]]\n" +msgstr " \\[[!meta link=andereseite]]\n" + +#. type: Plain text +#, no-wrap +msgid " It can also be used to insert a html <link> tag. For example:\n" +msgstr "" +" Es kann auch ein HTML <link>-Tag eingefügt werden, zum\n" +" Beispiel:\n" + +#. type: Plain text +#, no-wrap +msgid "" +" \\[[!meta link=\"http://joeyh.myopenid.com/\" " +"rel=\"openid.delegate\"]]\n" +msgstr "" +" \\[[!meta link=\"http://joeyh.myopenid.com/\" " +"rel=\"openid.delegate\"]]\n" + +#. type: Plain text +#: +#, no-wrap +msgid "" +" However, this latter syntax won't be allowed if the \n" +" [[!iki plugins/htmlscrubber desc=htmlscrubber]] plugin is enabled, since " +"it can be used to\n" +" insert unsafe content.\n" +msgstr "" +" Allerdings ist diese zweite Syntax nicht erlaubt, wenn die\n" +" [[!iki plugins/htmlscrubber desc=htmlscrubber]]-Erweiterung aktiviert ist,\n" +" weil auf diese Weise unsichere Inhalte eingefügt werden können.\n" + +#. type: Bullet: '* ' +msgid "redir" +msgstr "`redir`" + +#. type: Plain text +#, no-wrap +msgid " Causes the page to redirect to another page in the wiki.\n" +msgstr " Lässt die Seite auf eine andere Seite im Wiki weiterleiten.\n" + +#. type: Plain text +#, no-wrap +msgid " \t\\[[!meta redir=otherpage]]\n" +msgstr " \t\\[[!meta redir=andereseite]]\n" + +#. type: Plain text +#, no-wrap +msgid "" +" Optionally, a delay (in seconds) can be specified. The default is to\n" +" redirect without delay.\n" +msgstr "" +" Es kann optional eine Verzögerung (`delay=seconds`) angegeben\n" +" werden. Voreingestellt ist, ohne Verzögerung weiterzuleiten.\n" + +#. type: Plain text +#, no-wrap +msgid " It can also be used to redirect to an external url. For example:\n" +msgstr "" +" Es kann auch auf eine externe URL weitergeleitet werden. Zum\n" +" Beispiel:\n" + +#. type: Plain text +#, no-wrap +msgid " \t\\[[!meta redir=\"http://example.com/\"]]\n" +msgstr " \t\\[[!meta redir=\"http://beispiel.de/\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "" +" For both cases, an anchor to jump to inside the destination page may also " +"be\n" +" specified using the common `#ANCHOR` syntax.\n" +msgstr "" +" In beiden Fällen kann ein anzuspringender Anker auf der Zielseite\n" +" angegeben werden, indem die übliche `#ANKER`-Syntax verwendet wird.\n " + +#. type: Bullet: '* ' +msgid "robots" +msgstr "`robots`" + +#. type: Plain text +#, no-wrap +msgid " Causes the robots meta tag to be written:\n" +msgstr " Schreibt den robots-Meta-Tag:\n" + +#. type: Plain text +#, no-wrap +msgid " \\[[!meta robots=\"index, nofollow\"]]\n" +msgstr " \\[[!meta robots=\"index, nofollow\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "" +" Valid values for the attribute are: \"index\", \"noindex\", \"follow\", " +"and\n" +" \"nofollow\". Multiple comma-separated values are allowed, but obviously " +"only\n" +" some combinations make sense. If there is no robots meta tag, \"index,\n" +" follow\" is used as the default.\n" +msgstr "" +" Zulässige Werte sind `index`, `noindex`, `follow` und `nofollow`. Es\n" +" können mehrere Werte durch Kommas getrennt angegeben werden, aber\n" +" offensichtlich ergeben nur einige Kombinationen Sinn. Wenn der\n" +" robots-Meta-Tag nicht explizit angegeben wird, wird als Voreinstellung\n" +" \"index,follow\" angenommen.\n" + +#. type: Plain text +#, no-wrap +msgid " The value is escaped, but its contents are not otherwise checked.\n" +msgstr " Der Wert wird nicht auf Zulässigkeit geprüft.\n" + +#. type: Bullet: '* ' +msgid "guid" +msgstr "`guid`" + +#. type: Plain text +#, no-wrap +msgid "" +" Specifies a globally unique ID for a page. This guid should be a URI\n" +" (in particular, it can be `urn:uuid:` followed by a UUID, as per\n" +" [[!rfc 4122]]), and it will be used to identify the page's entry in RSS\n" +" and Atom feeds. If not given, the default is to use the page's URL as " +"its\n" +" guid.\n" +msgstr "" +" Gibt eine global einmalige ID für die Seite an. Diese guid sollte eine\n" +" URI sein (insbesondere kann sie nach [[!rfc 4122]] `urn:uuid:`\n" +" gefolgt von einer UUID sein). Sie wird verwendet, um den Eintrag der\n" +" Seite in RSS- und Atom-Feeds zu identifizieren. Wird keine guid\n" +" angegeben, wird an dieser Stelle die URL der Seite verwendet.\n" + +#. type: Plain text +#, no-wrap +msgid "" +" This is mostly useful when a page has moved, to keep the guids for\n" +" pages unchanged and avoid_flooding_aggregators\n" +" (see [[!iki tips/howto_avoid_flooding_aggregators]]).\n" +msgstr "" +" Diese Angabe ist in erster Linie dann nützlich, wenn eine Seite\n" +" verschoben wurde: Indem die guids unverändert gelassen werden,\n" +" kann das Fluten von Aggregatoren vermieden werden (siehe\n" +" [[!iki tips/howto_avoid_flooding_aggregators]]).\n" + +#. type: Bullet: '* ' +msgid "updated" +msgstr "`updated`" + +#. type: Plain text +#, no-wrap +msgid "" +" Specifies a fake modification time for a page, to be output into RSS and\n" +" Atom feeds. This is useful to avoid flooding aggregators that sort by\n" +" modification time, like Planet: for instance, when editing an old blog " +"post\n" +" to add tags, you could set `updated` to be one second later than the " +"original\n" +" value. The date/time can be given in any format that\n" +" [[!cpan TimeDate]] can understand, just like the `date` field.\n" +msgstr "" +" Gibt eine gefälschte Änderungszeit für die Seite an, die dann von RSS-\n" +" und Atom-Feeds ausgegeben wird. Dies ist nützlich, um Aggregatoren\n" +" nicht zu fluten, die nach Änderungszeit sortieren, wie etwa Planet:\n" +" Wenn man zum Beispiel einen alten Blog-Eintrag bearbeitet (etwa um\n" +" Tags hinzuzufügen), kann man `updated` auf eine Sekunde später als\n" +" den ursprünglichen Wert setzen. Das Datum mit Uhrzeit kann in jedem\n" +" Format angegeben werden, das von [[!cpan TimeDate]] verstanden\n" +" wird, genauso wie im Feld `date`.\n" + +#. type: Plain text +msgid "" +"If the field is not one of the above predefined fields, the metadata will be " +"written to the generated html page as a <meta> header. However, this " +"won't be allowed if the [[!iki plugins/htmlscrubber desc=htmlscrubber]] " +"plugin is enabled, since it can be used to insert unsafe content." +msgstr "" +"Wenn das Feld nicht eines der oben vordefinierten ist, werden die Metadaten als " +"<meta>-Header in die generierte Seite geschrieben. Dies ist allerdings " +"nicht erlaubt, wenn die [[!iki plugins/htmlscrubber " +"desc=htmlscrubber]]-Erweiterung aktiv ist, da auf diese Weise unsichere Inhalte " +"eingefügt werden können." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/more.de.po b/po/underlays/directives/ikiwiki/directive/more.de.po new file mode 100644 index 000000000..bffb3a247 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/more.de.po @@ -0,0 +1,63 @@ +# German translation of directives/ikiwiki/directive/more page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:04+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `more` directive is supplied by the [[!iki plugins/more desc=more]] " +"plugin." +msgstr "" +"Die `more`-Anweisung wird durch die [[!iki plugins/more desc=more]]-Erweiterung " +"bereitgestellt." + +#. type: Plain text +msgid "" +"This directive provides a way to have a \"more\" link on a post in a blog, " +"that leads to the full version of the page. Use it like this:" +msgstr "" +"Diese Anweise stellt eine Möglichkeit zur Verfügung, einen \"mehr\"-Link in " +"einem Blogeintrag anzuzeigen, der zur kompletten Version der Seite führt. " +"Benutzt wird sie folgendermaßen:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!more linktext=\"click for more\" text=\"\"\"\n" +msgstr "\t\\[[!more linktext=\"mehr …\" text=\"\"\"\n" + +#. type: Plain text +#, no-wrap +msgid "" +"\tThis is the rest of my post. Not intended for people catching up on\n" +"\ttheir blogs at 30,000 feet. Because I like to make things\n" +"\tdifficult.\n" +msgstr "" +"\tDies ist der Rest meines Blog-Eintrags. Er ist nicht für Leute\n" +"\tgedacht, die auf 10000m Blogs lesen, weil ich es gerne kompliziert\n" +"\tmache.\n" + +#. type: Plain text +msgid "If the `linktext` parameter is omitted it defaults to just \"more\"." +msgstr "" +"Wenn der Parameter `linktext` weggelassen wird, wird einfach \"more\" angezeigt." + +#. type: Plain text +msgid "Note that you can accomplish something similar using a [[toggle]] instead." +msgstr "Etwas ähnliches kann auch mit einem [[toggle]] erreicht werden." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/orphans.de.po b/po/underlays/directives/ikiwiki/directive/orphans.de.po new file mode 100644 index 000000000..45ba378db --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/orphans.de.po @@ -0,0 +1,60 @@ +# German translation of directives/ikiwiki/directive/orphans page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:04+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `orphans` directive is supplied by the [[!iki plugins/orphans " +"desc=orphans]] plugin." +msgstr "" +"Die `orphans`-Anweisung wird durch die [[!iki plugins/orphans " +"desc=orphans]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive generates a list of possibly orphaned pages -- pages that no " +"other page links to. Example:" +msgstr "" +"Diese Anweisung erzeugt eine Liste von möglicherweise verwaisten Seiten " +"– Seiten auf die von keiner anderen aus verlinkt wird. Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!orphans pages=\"* and !blog/*\"]]\n" +msgstr "\t\\[[!orphans pages=\"* and !blog/*\"]]\n" + +#. type: Plain text +msgid "" +"The optional parameter \"pages\" can be a [[ikiwiki/PageSpec]] specifying " +"the pages to check for orphans, default is search them all." +msgstr "" +"Im optionalen Parameter `pages` kann durch eine [[ikiwiki/PageSpec]] " +"angegeben werden, welche Seiten auf Verwaistheit überprüft werden. In der " +"Voreinstellung werden alle geprüft." + +#. type: Plain text +msgid "" +"Note that it takes backlinks into account, but does not count inlining a " +"page as linking to it, so will generally count many blog-type pages as " +"orphans." +msgstr "" +"Dabei werden backlinks berücksichtigt, nicht aber Einbetten mit [[inline]]. " +"Viele blogartige Seiten werden also als Waisen eingestuft werden." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/pagecount.de.po b/po/underlays/directives/ikiwiki/directive/pagecount.de.po new file mode 100644 index 000000000..63aa98db5 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/pagecount.de.po @@ -0,0 +1,48 @@ +# German translation of directives/ikiwiki/directive/pagecount page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:05+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `pagecount` directive is supplied by the [[!iki plugins/pagecount " +"desc=pagecount]] plugin." +msgstr "" +"Die `pagecount`-Anweisung wird durch die [[!iki plugins/pagecount " +"desc=pagecount]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "This directive counts pages currently in the wiki. Example:" +msgstr "" +"Diese Anweisung zählt die Seiten, die es gerade im Wiki gibt. Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!pagecount pages=\"*\"]]\n" +msgstr "\t\\[[!pagecount pages=\"*\"]]\n" + +#. type: Plain text +msgid "" +"The optional parameter \"pages\" can be a [[ikiwiki/PageSpec]] specifying " +"the pages to count, default is to count them all." +msgstr "" +"Im optionalen Parameter `pages` kann mit einer [[ikiwiki/PageSpec]] " +"angegeben werden, welche Seiten gezählt werden sollen, ein der " +"Voreinstellung werden alle gezählt." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/pagestats.de.po b/po/underlays/directives/ikiwiki/directive/pagestats.de.po new file mode 100644 index 000000000..427f273ed --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/pagestats.de.po @@ -0,0 +1,99 @@ +# German translation of directives/ikiwiki/directive/pagestats page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:05+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `pagestats` directive is supplied by the [[!iki plugins/pagestats " +"desc=pagestats]] plugin." +msgstr "" +"Die `pagestats`-Anweisung wird durch die [[!iki plugins/pagestats " +"desc=pagestats]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive can generate stats about how pages link to each other. It can " +"produce either a tag cloud, or a table counting the number of links to each " +"page." +msgstr "" +"Diese Anweisung kann Statistiken darüber erzeugen, wie Seiten aufeinander " +"verlinken. Sie kann entweder eine Tag-Wolke erzeugen oder eine Tabelle mit " +"den Häufigkeiten, wie oft auf die einzelnen Seiten verwiesen wurde." + +#. type: Plain text +msgid "Here's how to use it to create a [[tag]] cloud:" +msgstr "So kann eine [[tag]]-Wolke erzeugt werden:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!pagestats pages=\"tags/*\"]]\n" +msgstr "\t\\[[!pagestats pages=\"tags/*\"]]\n" + +#. type: Plain text +msgid "And here's how to create a table of all the pages on the wiki:" +msgstr "Und so kann eine Tabelle mit allen Seiten im Wiki erzeugt werden:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!pagestats style=\"table\"]]\n" +msgstr "\t\\[[!pagestats style=\"table\"]]\n" + +#. type: Plain text +msgid "" +"The optional `among` parameter limits the pages whose outgoing links are " +"considered. For instance, to display a cloud of tags used on blog entries, " +"while ignoring other pages that use those tags, you could use:" +msgstr "" +"Der optionale Parameter `among` beschränkt die Seiten, deren ausgehende " +"Links berücksichtigt werden. Zum Beispiel kann folgendermaßen eine Tag-Wolke " +"erzeugt werden, die nur Vorkommen in Blogeinträgen berücksichtigt:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!pagestats pages=\"tags/*\" among=\"blog/posts/*\"]]\n" +msgstr "\t\\[[!pagestats pages=\"tags/*\" among=\"blog/posts/*\"]]\n" + +#. type: Plain text +msgid "Or to display a cloud of tags related to Linux, you could use:" +msgstr "Oder um eine Wolke mit Tags anzuzeigen, die mit Linux verwandt sind:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!pagestats pages=\"tags/* and not tags/linux\" " +"among=\"tagged(linux)\"]]\n" +msgstr "" +"\t\\[[!pagestats pages=\"tags/* and not tags/linux\" " +"among=\"tagged(linux)\"]]\n" + +#. type: Plain text +msgid "" +"The optional `show` parameter limits display to the specified number of " +"pages. For instance, to show a table of the top ten pages with the most " +"links:" +msgstr "" +"Der optionale Parameter `show` zeigt nur die angegebene Anzahl von Seiten an." +" Zum Beispiel kann man eine Tabelle mit den zehn häufigsten Links anzeigen:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!pagestats style=\"table\" show=\"10\"]]\n" +msgstr "\t\\[[!pagestats style=\"table\" show=\"10\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/pagetemplate.de.po b/po/underlays/directives/ikiwiki/directive/pagetemplate.de.po new file mode 100644 index 000000000..8fddac168 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/pagetemplate.de.po @@ -0,0 +1,64 @@ +# German translation of directives/ikiwiki/directive/pagetemplate page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:05+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `pagetemplate` directive is supplied by the [[!iki plugins/pagetemplate " +"desc=pagetemplate]] plugin." +msgstr "" +"Die `pagetemplate`-Anweisung wird durch die [[!iki plugins/pagetemplate " +"desc=pagetemplate]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive allows a page to be displayed using a different template than " +"the default `page.tmpl` template." +msgstr "" +"Diese Anweisung erlaubt es, für eine Seite eine andere als die " +"voreingestellte Vorlage `page.tmpl` zu verwenden." + +#. type: Plain text +msgid "" +"The page text is inserted into the template, so the template controls the " +"overall look and feel of the wiki page. This is in contrast to the " +"[[ikiwiki/directive/template]] directive, which allows inserting templates " +"_into_ the body of a page." +msgstr "" +"Der Seiteninhalt wird in die Vorlage eingefügt, die Vorlage steuert also das " +"allgemeine Erscheinungsbild der Seite. Im Gegensatz dazu erlaubt die " +"[[ikiwiki/directive/template]]-Anweisung, Vorlagen _in_ den Text einer Seite " +"einzufügen." + +#. type: Plain text +msgid "" +"This directive can only reference templates that are already installed by " +"the system administrator, typically into the `/usr/share/ikiwiki/templates` " +"directory. Example:" +msgstr "" +"Diese Anweisung kann nur auf Vorlagen zurückgreifen, die bereits durch den " +"Systemadministrator installiert wurden, typischerweise im Verzeichnis " +"`/usr/share/ikiwiki/templates`. Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!pagetemplate template=\"my_fancy.tmpl\"]]\n" +msgstr "\t\\[[!pagetemplate template=\"my_fancy.tmpl\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/paste.de.po b/po/underlays/directives/ikiwiki/directive/paste.de.po new file mode 100644 index 000000000..48a08bf29 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/paste.de.po @@ -0,0 +1,25 @@ +# German translation of directives/ikiwiki/directive/paste page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-13 23:32+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta redir=/ikiwiki/directive/cutpaste]]\n" +msgstr "[[!meta redir=/ikiwiki/directive/cutpaste]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + diff --git a/po/underlays/directives/ikiwiki/directive/ping.de.po b/po/underlays/directives/ikiwiki/directive/ping.de.po new file mode 100644 index 000000000..364813bb5 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/ping.de.po @@ -0,0 +1,69 @@ +# German translation of directives/ikiwiki/directive/ping page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:06+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `ping` directive is supplied by the [[!iki plugins/pinger desc=pinger]] " +"plugin." +msgstr "" +"Die `ping`-Anweisung wird durch die [[!iki plugins/pinger " +"desc=pinger]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive allows ikiwiki to be configured to hit a URL each time it " +"updates the wiki. One way to use this is in conjunction with the [[!iki " +"plugins/pingee desc=pingee]] plugin to set up a loosely coupled mirror " +"network, or a branched version of a wiki. By pinging the mirror or branch " +"each time the main wiki changes, it can be kept up-to-date." +msgstr "" +"Diese Anweisung erlaubt es ikiwiki so zu konfigurieren, dass eine bestimmte " +"URL jedes mal aufgerufen wird, wenn das Wiki aktualisiert wird. Dies kann " +"in Kombination mit der [[!iki plugins/pingee desc=pingee]]-Erweiterung dazu " +"verwendet werden, ein eng gekoppeltes Netzwerk mit gespiegelten oder " +"abgeleiteten Wikis einzurichten. Durch das Anpingen kann bei jeder Änderung " +"der Spiegel oder das abgeleitete Wiki aktuell gehalten werden." + +#. type: Plain text +#, no-wrap +msgid "" +" \\[[!ping from=\"http://mywiki.com/\"\n" +" to=\"http://otherwiki.com/ikiwiki.cgi?do=ping\"]]\n" +msgstr "" +" \\[[!ping from=\"http://mywiki.com/\"\n" +" to=\"http://otherwiki.com/ikiwiki.cgi?do=ping\"]]\n" + +#. type: Plain text +msgid "" +"The \"from\" parameter must be identical to the url of the wiki that is " +"doing the pinging. This is used to prevent ping loops." +msgstr "" +"Der Parameter `from` muss identisch zur URL des Wikis sein, dass den Ping " +"durchführt. Dies wird verwendet, um Schleifen zu verhindern." + +#. type: Plain text +msgid "" +"The \"to\" parameter is the url to ping. The example shows how to ping " +"another ikiwiki instance." +msgstr "" +"Der Parameter `to` ist die URL, die aufgerufen werden soll. Das Beispiel " +"zeigt, wie eine andere ikiwiki-Instanz angepingt werden kann." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/poll.de.po b/po/underlays/directives/ikiwiki/directive/poll.de.po new file mode 100644 index 000000000..1a4e6b5c4 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/poll.de.po @@ -0,0 +1,87 @@ +# German translation of directives/ikiwiki/directive/poll page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:06+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `poll` directive is supplied by the [[!iki plugins/poll desc=poll]] " +"plugin." +msgstr "" +"Die `poll`-Anweisung wird durch die [[!iki plugins/poll desc=poll]]-Erweiterung " +"bereitgestellt." + +#. type: Plain text +msgid "" +"This directive allows you to create online polls in the wiki. Here's an " +"example use:" +msgstr "" +"Diese Anweisung erlaubt es, Online-Umfragen im Wiki durchzuführen. Zum Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!poll 0 \"red\" 0 \"green\" 0 \"blue\"]]\n" +msgstr "\t\\[[!poll 0 \"red\" 0 \"green\" 0 \"blue\"]]\n" + +#. type: Plain text +msgid "" +"The numbers indicate how many users voted for that choice. When a user votes " +"for a choice in the poll, the page is modified and the number incremented." +msgstr "" +"Die Zahlen geben an, wie viele Benutzer für diese Möglichkeit gestimmt haben. " +"Wenn ein Benutzer seine Stimme abgibt, wird die Seite modifiziert und die " +"entsprechende Zahl hochgezählt." + +#. type: Plain text +msgid "" +"While some basic precautions are taken to prevent users from accidentially " +"voting twice, this sort of poll should not be counted on to be very " +"accurate; all the usual concerns about web based polling apply. Unless the " +"page that the poll is in is locked, users can even edit the page and change " +"the numbers!" +msgstr "" +"Obwohl einige einfache Vorsichtsmaßnahmen getroffen wurden, damit Benutzer nicht " +"ausversehen mehrmals abstimmen, sollte diese Art Umfrage nicht als besonders " +"verlässlich angesehen werden; alle üblichen Bedenken bezüglich webbasierten " +"Abstimmungen treffen zu. Wenn die Seite mit der Abstimmung nicht zum Bearbeiten " +"gesperrt ist, können Benutzer sogar direkt die Zahlen verändern!" + +#. type: Plain text +msgid "Parameters:" +msgstr "Parameter:" + +#. type: Bullet: '* ' +msgid "" +"`open` - Whether voting is still open. Set to \"no\" to close the poll to " +"voting." +msgstr "" +"`open` - Ob die Abstimmung noch offen ist. Beim Wert `no` werden keine weiteren " +"Stimmen angenommen." + +#. type: Bullet: '* ' +msgid "`total` - Show total number of votes at bottom of poll. Default is \"yes\"." +msgstr "" +"`total` - Zeige die bisherige Anzahl der Stimmen unterhalb des " +"Abstimmungsformulars an. Voreingestellt ist `yes`." + +#. type: Bullet: '* ' +msgid "`percent` - Whether to display percents. Default is \"yes\"." +msgstr "" +"`percent` - Ob Prozentzahlen angezeigt werden sollen. Voreingestellt ist `yes`." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/polygen.de.po b/po/underlays/directives/ikiwiki/directive/polygen.de.po new file mode 100644 index 000000000..8b7f46557 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/polygen.de.po @@ -0,0 +1,50 @@ +# German translation of directives/ikiwiki/directive/polygen page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:06+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `polygen` directive is supplied by the [[!iki plugins/polygen " +"desc=polygen]] plugin." +msgstr "" +"Die `polygen`-Anweisung wird durch die [[!iki plugins/polygen " +"desc=polygen]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive allows inserting text generated by polygen into a wiki page. " +"For example:" +msgstr "" +"Diese Anweisung erlaubt es, durch *polygen* erzeugten Text in eine " +"Wiki-Seite einzubinden. Zum Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!polygen grammar=\"genius\"]]\n" +msgstr "\t\\[[!polygen grammar=\"genius\"]]\n" + +#. type: Plain text +msgid "" +"It's also possible to specify a starting nonterminal for the grammar by " +"including `symbol=\"text\"` in the directive." +msgstr "" +"Es ist auch möglich, ein Start-Nichtterminal für die Grammatik anzugeben, " +"indem `symbol=\"text\"` mit in der Anweisung angegeben wird." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/postsparkline.de.po b/po/underlays/directives/ikiwiki/directive/postsparkline.de.po new file mode 100644 index 000000000..140774bcc --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/postsparkline.de.po @@ -0,0 +1,149 @@ +# German translation of directives/ikiwiki/directive/postsparkline page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:07+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `postsparkline` directive is supplied by the [[!iki " +"plugins/postsparkline desc=postsparkline]] plugin." +msgstr "" +"Die `postsparkline`-Anweisung wird durch die [[!iki " +"plugins/postsparkline desc=postsparkline]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive uses the [[!iki plugins/sparkline desc=sparkline]] plugin to " +"create a [[sparkline]] of statistics about a set of pages, such as posts to " +"a blog." +msgstr "" +"Diese Anweisung verwendet die [[!iki plugins/sparkline " +"desc=sparkline]]-Erweiterung, um eine [[sparkline]] mit Statistiken über " +"bestimmte Seiten anzuzeigen, etwa über Einträge in einem Blog." + +#. type: Title # +#, no-wrap +msgid "examples" +msgstr "Beispiele" + +#. type: Plain text +#, no-wrap +msgid "" +"\tPost interval: \n" +"\t\\[[!postsparkline pages=\"blog/* and !*/Discussion\" max=100\n" +"\tformula=interval style=bar barwidth=2 barspacing=1 height=13]]\n" +msgstr "" +"\tIntervall der Einträge: \n" +"\t\\[[!postsparkline pages=\"blog/* and !*/Discussion\" max=100\n" +"\tformula=interval style=bar barwidth=2 barspacing=1 height=13]]\n" + +#. type: Plain text +#, no-wrap +msgid "" +"\tPosts per month this year: \n" +"\t\\[[!postsparkline pages=\"blog/* and !*/Discussion\" max=12\n" +"\tformula=permonth style=bar barwidth=2 barspacing=1 height=13]]\n" +msgstr "" +"\tEinträge pro Monat in diesem Jahr: \n" +"\t\\[[!postsparkline pages=\"blog/* and !*/Discussion\" max=12\n" +"\tformula=permonth style=bar barwidth=2 barspacing=1 height=13]]\n" + +#. type: Title # +#, no-wrap +msgid "usage" +msgstr "Verwendung" + +#. type: Plain text +msgid "" +"All options aside from the `pages`, `max`, `formula`, `time`, and `color` " +"options are the same as in [[sparkline]] directive." +msgstr "" +"Alle Parameter außer `pages`, `max`, `formula`, `time` und `color` sind die " +"gleichen wie in der [[sparkline]]-Anweisung." + +#. type: Plain text +msgid "" +"You don't need to specify any data points (though you can if you want to). " +"Instead, data points are automatically generated based on the creation times " +"of pages matched by the specified `pages` [[ikiwiki/PageSpec]]. A maximum of " +"`max` data points will be generated." +msgstr "" +"Es müssen keine Datenpunkte angegeben werden (auch wenn dies möglich ist). " +"Stattdessen werden die Datenpunkte ausgehend vom Erstellungsdatum der durch " +"`pages` angegebenen Seiten (eine [[ikiwiki/PageSpec]]) automatisch generiert." +" Es werden höchstens `max` Datenpunkte erzeugt." + +#. type: Plain text +msgid "" +"The `formula` parameter controls the formula used to generate data points. " +"Available formulae:" +msgstr "" +"Der Parameter `formula` steuert die Formel, mit der die Datenpunkte erzeugt " +"werden. Verfügbare Formeln:" + +#. type: Bullet: '* ' +msgid "" +"`interval` - The height of each point represents how long it has been since " +"the previous post." +msgstr "" +"`interval` - Die Höhe jedes Punkts steht für den zeitlichen Abstand zum " +"vorherigen Eintrag." + +#. type: Bullet: '* ' +msgid "" +"`perday` - Each point represents a day; the height represents how many posts " +"were made that day." +msgstr "" +"`perday` - Jeder Punkt entspricht einem Tag; die Höhe stellt die Anzahl der " +"an diesem Tag gemachten Einträge dar." + +#. type: Bullet: '* ' +msgid "" +"`permonth` - Each point represents a month; the height represents how many " +"posts were made that month." +msgstr "" +"`permonth` - Jeder Punkt entspricht einem Monat; die Höhe stellt die Anzahl " +"der in diesem Monat gemachten Einträge dar." + +#. type: Bullet: '* ' +msgid "" +"`peryear` - Each point represents a year; the height represents how many " +"posts were made that year." +msgstr "" +"`peryear` - Jeder Punkt entspricht einem Jahr; die Höhe stellt die Anzahl " +"der in diesem Jahr gemachten Einträge dar." + +#. type: Plain text +msgid "" +"The `time` parameter has a default value of \"ctime\", since formulae use " +"the creation times of pages by default. If you instead want them to use the " +"modification times of pages, set it to \"mtime\"." +msgstr "" +"Der Parameter `time` hat standardmäßig den Wert `ctime` und es werden die " +"Erstellungszeiten der Seiten verwendet. Sollen stattdessen die " +"Änderungszeiten verwendet werden, kann `mtime` angegeben werden." + +#. type: Plain text +msgid "" +"To change the color used to draw the sparkline, use the `color` parameter. " +"For example, \"color=red\"." +msgstr "" +"Die Farbe der sparkline kann mit dem Parameter `color` verändert werden, " +"etwa durch `color=red`." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/progress.de.po b/po/underlays/directives/ikiwiki/directive/progress.de.po new file mode 100644 index 000000000..72ad7a134 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/progress.de.po @@ -0,0 +1,68 @@ +# German translation of directives/ikiwiki/directive/progress page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:07+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `progress` directive is supplied by the [[!iki plugins/progress " +"desc=progress]] plugin." +msgstr "" +"Die `progress`-Anweisung wird durch die [[!iki plugins/progress " +"desc=progress]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "This directive generates a progress bar." +msgstr "Diese Anweisung erzeugt einen Fortschrittsbalken." + +#. type: Plain text +msgid "" +"There are two possible parameter sets. The first is a single parameter " +"\"percent\" which holds a percentage figure of how complete the progress bar " +"is." +msgstr "" +"Es gibt zwei mögliche Parameter-Mengen. Die erste besteht aus dem einzelnen " +"Parameter `percent`, der die Prozentzahl enthält, wie vollständig der " +"Fortschrittsbalken ist." + +#. type: Plain text +msgid "" +"The second possible set of parameters is a pair of [[ikiwiki/PageSpec]]s, " +"`totalpages` and `donepages`. The directive counts the number of pages in " +"each pagespec and shows the percentage of the total pages that are done." +msgstr "" +"Die zweite mögliche Parameter-Menge ist ein Paar von [[ikiwiki/PageSpec]]s, " +"`totalpages` und `donepages`. Die Anweisung zählt dann jeweils die passenden " +"Seiten und zeigt an, welcher Anteil der Seiten fertig ist." + +#. type: Plain text +msgid "For example, to show what percentage of pages have discussion pages:" +msgstr "" +"Zum Beispiel kann man anzeigen, welcher Anteil der Seiten eine " +"Diskussionsseite haben:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!progress totalpages=\"* and !*/Discussion\" " +"donepages=\"*/Discussion\"]]\n" +msgstr "" +"\t\\[[!progress totalpages=\"* and !*/Discussion\" " +"donepages=\"*/Discussion\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/shortcut.de.po b/po/underlays/directives/ikiwiki/directive/shortcut.de.po new file mode 100644 index 000000000..7d5616b3f --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/shortcut.de.po @@ -0,0 +1,46 @@ +# German translation of directives/ikiwiki/directive/shortcut page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:07+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `shortcut` directive is supplied by the [[!iki plugins/shortcut " +"desc=shortcut]] plugin." +msgstr "" +"Die `shortcut`-Anweisung wird durch die [[!iki plugins/shortcut " +"desc=shortcut]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive allows external links to commonly linked to sites to be made " +"more easily using shortcuts." +msgstr "" +"Diese Anweisung erlaubt es, Links auf häufig verwendete externe Seiten " +"einfacher zu setzen." + +#. type: Plain text +msgid "" +"The available shortcuts are defined on the [[shortcuts]] page in the " +"wiki. The `shortcut` directive can only be used on that page." +msgstr "" +"Die verfügbaren Abkürzungen werden im Wiki auf der Seite [[shortcuts]] " +"definiert. Die `shortcut`-Anweisung kann nur auf dieser Seite verwendet " +"werden." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/sparkline.de.po b/po/underlays/directives/ikiwiki/directive/sparkline.de.po new file mode 100644 index 000000000..f1a5ac44a --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/sparkline.de.po @@ -0,0 +1,178 @@ +# German translation of directives/ikiwiki/directive/sparkline page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:08+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `sparkline` directive is supplied by the [[!iki plugins/sparkline " +"desc=sparkline]] plugin." +msgstr "" +"Die `sparkline`-Anweisung wird durch die [[!iki plugins/sparkline " +"desc=sparkline]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive allows for embedding sparklines into wiki pages. A sparkline " +"is a small word-size graphic chart, that is designed to be displayed " +"alongside text." +msgstr "" +"Diese Anweisung erlaubt es, sparklines in Wiki-Seiten einzubetten. Eine " +"sparkline ist eine kleine Graphik, die so groß wie ein Wort ist und sich " +"deshalb zur Anzeige neben Text eignet." + +#. type: Title # +#, no-wrap +msgid "examples" +msgstr "Beispiele" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!sparkline 1 3 5 -3 10 0 width=40 height=16\n" +"\tfeaturepoint=\"4,-3,red,3\" featurepoint=\"5,10,green,3\"]]\n" +msgstr "" +"\t\\[[!sparkline 1 3 5 -3 10 0 width=40 height=16\n" +"\tfeaturepoint=\"4,-3,red,3\" featurepoint=\"5,10,green,3\"]]\n" + +#. type: Plain text +msgid "" +"This creates a simple line graph, graphing several points. It will be drawn " +"40 pixels wide and 16 pixels high. The high point in the line has a green " +"marker, and the low point has a red marker." +msgstr "" +"Dies erzeugt eine einfache Liniengrafik, die aus mehreren Punkten besteht. " +"Sie wird mit 40 Pixel Breite und 16 Pixel Höhe erzeugt. Der hohe Punkt auf " +"der Linie hat eine grüne Markierung, der niedrige eine rote." + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!sparkline 1 -1(red) 1 -1(red) 1 1 1 -1(red) -1(red) style=bar " +"barwidth=2\n" +"\tbarspacing=1 height=13]]\n" +msgstr "" +"\t\\[[!sparkline 1 -1(red) 1 -1(red) 1 1 1 -1(red) -1(red) style=bar " +"barwidth=2\n" +"\tbarspacing=1 height=13]]\n" + +#. type: Plain text +msgid "" +"This more complex example generates a bar graph. The bars are 2 pixels " +"wide, and separated by one pixel, and the graph is 13 pixels tall. Width is " +"determined automatically for bar graphs. The points with negative values are " +"colored red, instead of the default black." +msgstr "" +"Dies ist ein komplexeres Beispiel, das eine Balkengrafik erzeugt. Die Balken " +"sind 2 Pixel breit und werden durch ein Pixel getrennt; die Grafik ist 14 " +"Pixel hoch. Die Breite für Balkengrafiken automatisch bestimmt. Punkte mit " +"negativen Werten haben abweichend vom voreingestellten Schwarz die Farbe rot." + +#. type: Title # +#, no-wrap +msgid "usage" +msgstr "Verwendung" + +#. type: Plain text +msgid "" +"The form for the data points is \"x,y\", or just \"y\" if the x values don't " +"matter. Bar graphs can also add \"(color)\" to specify a color for that bar." +msgstr "" +"Die Form für Datenpunkte ist `x,y`, oder einfach nur `y`, wenn die x-Werte " +"unerheblich sind. Balkengrafiken können auch `(color)` hinzufügen, um eine " +"Farbe für den Balken anzugeben." + +#. type: Plain text +msgid "" +"The following named parameters are recognised. Most of these are the same as " +"those used by the underlying sparkline library, which is documented in more " +"detail in [its wiki](http://sparkline.wikispaces.com/usage)." +msgstr "" +"Die folgenden benannten Parameter werden erkannt. Die meisten entsprechen " +"denen der zugrundeliegenden sparkline-Bibliothek, die [in ihrem " +"Wiki](http://sparkline.wikispaces.com/usage) genauer beschrieben wird." + +#. type: Bullet: '* ' +msgid "`style` - Either \"line\" (the default) or \"bar\"." +msgstr "`style` - Entweder `line` (die Voreinstellung) oder `bar`." + +#. type: Bullet: '* ' +msgid "`width` - Width of the graph in pixels. Only needed for line graphs." +msgstr "" +"`width` - Die Breite der Grafik in Pixeln. Wird nur für Linien-Grafiken " +"benötigt." + +#. type: Bullet: '* ' +msgid "`height` - Height of the graph in pixels. Defaults to 16." +msgstr "`height` - Höhe des Grafen in Pixeln. Voreingestellt sind 16." + +#. type: Bullet: '* ' +msgid "`barwidth` - Width of bars in a bar graph. Default is 1 pixel." +msgstr "" +"`barwidth` - Breite der Balken in einer Balkengrafik. Voreingestellt ist 1 " +"Pixel." + +#. type: Bullet: '* ' +msgid "" +"`barspacing` - Spacing between bars in a bar graph, in pixels. Default is 1 " +"pixel." +msgstr "" +"`barspacing` - Abstand zwischen den Balken einer Balkengrafik in Pixeln. " +"Voreingestellt ist 1 Pixel." + +#. type: Bullet: '* ' +msgid "" +"`ymin`, `ymax` - Minimum and maximum values for the Y axis. This is normally " +"calculated automatically, but can be explicitly specified to get the same " +"values for multiple related graphs." +msgstr "" +"`ymin`, `ymax` - Minimaler und maximaler Wert für die y-Achse. Dies wird " +"normalerweise automatisch berechnet, kann aber auch explizit angegeben " +"werden, um mehrere verwandte Grafiken zu erhalten." + +#. type: Bullet: '* ' +msgid "" +"`featurepoint` - Adds a circular marker to a line graph, with optional " +"text. This can be used to label significant points." +msgstr "" +"`featurepoint` - Fügt eine kreisförmige Markierung zu einer Liniengrafik " +"hinzu, mit optionalem Text. So können bedeutsame Punkte beschriftet werden." + +#. type: Plain text +#, no-wrap +msgid "" +" The value is a comma-delimited list of parameters specifying the feature\n" +" point: X value, Y value, color name, circle diameter, text (optional),\n" +" and text location (optional). Example: `featurepoint=\"3,5,blue,3\"`\n" +msgstr "" +" Der Wert ist eine Komma-separierte Liste von Parametern, die den\n" +" hervorzuhebenden Punkt angeben: x-Wert, y-Wert, Farbname,\n" +" Kreisdurchmesser, Text (optional) und Platzierung des Textes (optional).\n" +" Beispiel: `featurepoint=\"3,5,blue,3\"`\n" + +#. type: Plain text +#, no-wrap +msgid "" +" Available values for the text location are: \"top\", \"right\", " +"\"bottom\", and\n" +" \"left\".\n" +msgstr "" +" Verfügbare Werte für die Platzierung des Textes sind `top`,\n" +" `right`, `bottom` und `left`.\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/table.de.po b/po/underlays/directives/ikiwiki/directive/table.de.po new file mode 100644 index 000000000..414bfc68c --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/table.de.po @@ -0,0 +1,147 @@ +# German translation of directives/ikiwiki/directive/table page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:08+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `table` directive is supplied by the [[!iki plugins/table desc=table]] " +"plugin." +msgstr "" +"Die `table`-Anweisung wird durch die [[!iki plugins/table " +"desc=table]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive can build HTML tables from data in CSV (comma-separated " +"values) or DSV (delimiter-separated values) format." +msgstr "" +"Diese Anweisung kann HTML-Tabellen aus Daten im CSV-Format (Komma-separierte " +"Werte) oder DSV-Format (Trennzeichen-separierte Werte) erzeugen." + +#. type: Title ## +#, no-wrap +msgid "examples" +msgstr "Beispiele" + +#. type: Plain text +#: +#, no-wrap +msgid "\t\\[[!table data=\"\"\"\n" +msgstr "\t\\[[!table data=\"\"\"\n" + +#. type: Plain text +#, no-wrap +msgid "" +"\tCustomer|Amount\n" +"\tFulanito|134,34\n" +"\tMenganito|234,56\n" +"\tMenganito|234,56\n" +msgstr "" +"\tKunde|Betrag\n" +"\tFulanito|134,34\n" +"\tMenganito|234,56\n" +"\tMenganito|234,56\n" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!table class=\"book_record\" format=csv " +"file=\"data/books/record1\"]]\n" +msgstr "" +"\t\\[[!table class=\"book_record\" format=csv " +"file=\"data/books/record1\"]]\n" + +#. type: Plain text +msgid "In this second example the `record1` page should be similar to:" +msgstr "" +"Im zweiten Beispiel sollte die `record1`-Seite ähnlich wie das Folgende " +"aussehen:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\"Title\",\"Perl Best Practices\"\n" +"\t\"Author\",\"Damian Conway\"\n" +"\t\"Publisher\",\"O’Reilly\"\n" +msgstr "" +"\t\"Title\",\"Perl Best Practices\"\n" +"\t\"Author\",\"Damian Conway\"\n" +"\t\"Publisher\",\"O’Reilly\"\n" + +#. type: Plain text +msgid "" +"To make a cell span multiple columns, follow it with one or more empty " +"cells. For example:" +msgstr "" +"Um eine Zelle zu erhalten, die über mehrere Spalten geht, kann man die " +"folgenden Zellen leer lassen. Zum Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "" +"\tleft||right|\n" +"\ta|b|c|d\n" +"\tthis cell spans 4 columns|||\n" +msgstr "" +"\tlinks||rechts|\n" +"\ta|b|c|d\n" +"\tdiese Zelle geht über 4 Spalten|||\n" + +#. type: Title ## +#, no-wrap +msgid "usage" +msgstr "Verwendung" + +#. type: Bullet: '* ' +msgid "`data` - Values for the table." +msgstr "`data` - Werte für die Tabelle." + +#. type: Bullet: '* ' +msgid "`file` - A file in the wiki containing the data." +msgstr "`file` - Eine Datei im Wiki, die die Daten enthält." + +#. type: Bullet: '* ' +msgid "" +"`format` - The format of the data, either \"csv\", \"dsv\", or \"auto\" (the " +"default)." +msgstr "" +"`format` - Das Format der Daten, entweder `csv`, `dsv` oder `auto` " +"(letzteres ist voreingestellt)." + +#. type: Plain text +#, no-wrap +msgid "" +"* `delimiter` - The character used to separate fields. By default,\n" +" DSV format uses a pipe (`|`), and CSV uses a comma (`,`).\n" +"* `class` - A CSS class for the table html element.\n" +"* `header` - By default, or if set to \"row\", the first data line is used\n" +" as the table header. Set it to \"no\" to make a table without a header, " +"or\n" +" \"column\" to make the first column be the header.\n" +msgstr "" +"* `delimiter` - Das Zeichen, durch das die Zellen getrennt werden.\n" +" Im DSV-Format ist der senkrechte Strich (`|`) voreingestellt, im\n" +" CSV-Format das Komma (`,`).\n" +"* `class` - Eine CSS-Klasse für das HTML-Element <table>.\n" +"* `header` - In der Voreinstellung, oder wenn `row` angegeben wird,\n" +" wird die erste Zeile der Daten als Tabellenüberschrift verwendet.\n" +" Mit `no` wird eine Tabelle ohne Überschrift erzeugt, mit `column`\n" +" wird die erste Spalte als Überschrift verwendet.\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/tag.de.po b/po/underlays/directives/ikiwiki/directive/tag.de.po new file mode 100644 index 000000000..226900b59 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/tag.de.po @@ -0,0 +1,112 @@ +# German translation of directives/ikiwiki/directive/tag page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:08+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `tag` and `taglink` directives are supplied by the [[!iki plugins/tag " +"desc=tag]] plugin." +msgstr "" +"Die `tag`- und `taglink`-Anweisungen werden durch die [[!iki plugins/tag " +"desc=tag]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "These directives allow tagging pages. List tags as follows:" +msgstr "" +"Diese Anweisungen erlauben es, Seiten mit einer Markierung (englisch *tag*) " +"zu versehen. Diese werden wie folgt angegeben:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!tag tech life linux]]\n" +msgstr "\t\\[[!tag tech life linux]]\n" + +#. type: Plain text +msgid "" +"The tags work the same as if you had put a (hidden) [[ikiwiki/WikiLink]] on " +"the page for each tag, so you can use a [[ikiwiki/PageSpec]] match all pages " +"that are tagged with a given tag, for example. The tags will also show up on " +"blog entries and at the bottom of the tagged pages, as well as in RSS and " +"Atom feeds." +msgstr "" +"Die Markierungen verhalten sich genauso, wie wenn ein (versteckter) " +"[[ikiwiki/WikiLink]] für jede Markierung vorhanden wäre. Man kann also zum " +"Beispiel eine [[ikiwiki/PageSpec]] verwenden, um alle Seiten zu erfassen, " +"die eine bestimmte Markierung tragen. In Blogeinträgen werden die " +"Markierungen auch am Ende der markierten Seiten und in RSS- und Atom-Feeds " +"angezeigt." + +#. type: Plain text +msgid "" +"If you want a visible [[ikiwiki/WikiLink]] along with the tag, use taglink " +"instead:" +msgstr "" +"Wenn gleichzeitig mit dem Tag ein sichtbarer [[ikiwiki/WikiLink]] erzeugt " +"werden soll, kann stattdessen `taglink` verwendet werden:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!taglink foo]]\n" +"\t\\[[!taglink tagged_as_foo|foo]]\n" +msgstr "" +"\t\\[[!taglink foo]]\n" +"\t\\[[!taglink markiert_als_foo|foo]]\n" + +#. type: Plain text +msgid "" +"Note that if the wiki is configured to use a tagbase, then the tags will be " +"located under a base directory, such as \"tags/\". This is a useful way to " +"avoid having to write the full path to tags, if you want to keep them " +"grouped together out of the way." +msgstr "" +"Wenn im Wiki eine zu verwendende `tagbase` konfiguriert ist, tauchen die " +"Markierungen unterhalb dieses Verzeichnisses auf, etwa unter \"tags/\". Auf " +"diese Weise muss man nicht den kompletten Pfad zu den Markierungen angeben, " +"wenn man sie gruppieren und getrennt von den restlichen Seiten halten will." + +#. type: Plain text +msgid "" +"Bear in mind that specifying a tagbase means you will need to incorporate it " +"into the `link()` [[ikiwiki/PageSpec]] you use: e.g., if your tagbase is " +"`tag`, you would match pages tagged \"foo\" with `link(tag/foo)`." +msgstr "" +"In der `link()`-[[ikiwiki/PageSpec]] muss diese `tagbase` allerdings " +"angegeben werden. Wenn zum Beispiel `tag` als `tagbase` verwendet wird, " +"können die mit \"foo\" markierten Seiten durch `link(tag/foo)` ausgewählt " +"werden." + +#. type: Plain text +msgid "" +"If you want to override the tagbase for a particular tag, you can use " +"something like this:" +msgstr "" +"Wenn für eine einzelne Markierung eine abweichende `tagbase` verwendet " +"werden soll, kann etwas wie das Folgende verwendet werden:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!tag ./foo]]\n" +"\t\\[[!taglink /foo]]\n" +msgstr "" +"\t\\[[!tag ./foo]]\n" +"\t\\[[!taglink /foo]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/taglink.de.po b/po/underlays/directives/ikiwiki/directive/taglink.de.po new file mode 100644 index 000000000..769347eeb --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/taglink.de.po @@ -0,0 +1,25 @@ +# German translation of directives/ikiwiki/directive/taglink page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 11:31+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta redir=/ikiwiki/directive/tag]]\n" +msgstr "[[!meta redir=/ikiwiki/directive/tag]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + diff --git a/po/underlays/directives/ikiwiki/directive/template.de.po b/po/underlays/directives/ikiwiki/directive/template.de.po new file mode 100644 index 000000000..a153cfc94 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/template.de.po @@ -0,0 +1,71 @@ +# German translation of directives/ikiwiki/directive/template page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:09+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `template` directive is supplied by the [[!iki plugins/template " +"desc=template]] plugin." +msgstr "" +"Die `template`-Anweisung wird durch die [[!iki plugins/template " +"desc=template]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"[[Templates]] are files that can be filled out and inserted into pages in " +"the wiki, by using the template directive. The directive has an `id` " +"parameter that identifies the template to use. The remaining parameters are " +"used to fill out the template." +msgstr "" +"[[Vorlagen|templates]] sind Dateien, die ausgefüllt und in Wiki-Seiten " +"eingefügt werden können, indem die template-Anweisung verwendet wird. Die " +"Anweisung hat einen `id`-Parameter, der die zu verwendende Vorlage " +"identifiziert. Die restlichen Parameter werden verwendet, um die Vorlage " +"auszufüllen." + +#. type: Plain text +msgid "Example:" +msgstr "Beispiel:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!template id=note text=\"\"\"Here is the text to insert into my " +"note.\"\"\"]]\n" +msgstr "" +"\t\\[[!template id=note text=\"\"\"Hier ist der Text, der in meine Notiz " +"eingefügt werden soll.\"\"\"]]\n" + +#. type: Plain text +msgid "" +"This fills out the `note` template, filling in the `text` field with the " +"specified value, and inserts the result into the page." +msgstr "" +"Dies füllt die Vorlage `note` aus, wobei das Feld `text` mit dem angegebenen " +"Wert gefüllt wird, und fügt das Ergebnis in die Seite ein." + +#. type: Plain text +msgid "" +"For a list of available templates, and details about how to create more, see " +"the [[templates]] page." +msgstr "" +"Auf der [[Vorlagen|templates]]-Seite gibt es eine Liste der verfügbaren " +"Vorlagen und auch eine Anleitung, wie weitere angelegt werden können." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/testpagespec.de.po b/po/underlays/directives/ikiwiki/directive/testpagespec.de.po new file mode 100644 index 000000000..22da164e3 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/testpagespec.de.po @@ -0,0 +1,84 @@ +# German translation of directives/ikiwiki/directive/testpagespec page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:09+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `testpagespec` directive is supplied by the [[!iki plugins/testpagespec " +"desc=testpagespec]] plugin." +msgstr "" +"Die `testpagespec`-Anweisung wird durch die [[!iki plugins/testpagespec " +"desc=testpagespec]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"This directive allows testing a [[ikiwiki/PageSpec]] to see if it matches a " +"page, and to see the part that matches, or causes the match to fail." +msgstr "" +"Mit dieser Anweisung kann geprüft werden, ob eine [[ikiwiki/PageSpec]] auf eine " +"Seite passt. Sie zeigt außerdem an, welcher Teil das Passen oder Nicht-Passen " +"verursacht." + +#. type: Plain text +msgid "Example uses:" +msgstr "Beispiele zur Verwendung:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!testpagespec pagespec=\"foopage and barpage\" match=\"foopage\"]]\n" +msgstr "" +"\t\\[[!testpagespec pagespec=\"foopage and barpage\" match=\"foopage\"]]\n" + +#. type: Plain text +msgid "" +"This will print out something like \"no match: barpage does not match " +"foopage\", highlighting which part of the [[ikiwiki/PageSpec]] is causing " +"the match to fail." +msgstr "" +"Dies wird etwas wie \"no match: barpage does not match foopage\" anzeigen und " +"damit darauf hinweisen, welcher Teil der [[ikiwiki/PageSpec]] ein Passen " +"verhindert." + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!testpagespec pagespec=\"foopage or !bar*\" match=\"barpage\"]]\n" +msgstr "\t\\[[!testpagespec pagespec=\"foopage or !bar*\" match=\"barpage\"]]\n" + +#. type: Plain text +msgid "" +"This will print out something like \"no match: bar* matches barpage\", since " +"the part of the [[ikiwiki/PageSpec]] that fails is this negated match." +msgstr "" +"Dies wird etwas wie \"no match: bar* matches barpage\" anzeigen, weil der Teil " +"der das Passen verhindert negiert ist." + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!testpagespec pagespec=\"foopage or barpage\" match=\"barpage\"]]\n" +msgstr "\t\\[[!testpagespec pagespec=\"foopage or barpage\" match=\"barpage\"]]\n" + +#. type: Plain text +msgid "" +"This will print out something like \"match: barpage matches barpage\", " +"indicating the part of the [[ikiwiki/PageSpec]] that caused it to match." +msgstr "" +"Dies wird etwas wie \"match: barpage matches barpage\" anzeigen und damit " +"angeben, welcher Teil der [[ikiwiki/PageSpec]] passt." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/teximg.de.po b/po/underlays/directives/ikiwiki/directive/teximg.de.po new file mode 100644 index 000000000..f0553e7c9 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/teximg.de.po @@ -0,0 +1,84 @@ +# German translation of directives/ikiwiki/directive/teximg page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:09+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `teximg` directive is supplied by the [[!iki plugins/teximg " +"desc=teximg]] plugin." +msgstr "" +"Die `teximg`-Anweisung wird durch die [[!iki plugins/teximg " +"desc=teximg]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "This directive renders LaTeX formulas into images." +msgstr "Diese Anweisung wandelt LaTeX-Formeln in Bilder um." + +#. type: Title ## +#, no-wrap +msgid "examples" +msgstr "Beispiele" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!teximg code=\"\\frac{1}{2}\"]]\n" +"\t\\[[!teximg code=\"E = - \\frac{Z^2 \\cdot \\mu \\cdot e^4}{32\\pi^2 " +"\\epsilon_0^2 \\hbar^2 n^2}\" ]]\n" +msgstr "" +"\t\\[[!teximg code=\"\\frac{1}{2}\"]]\n" +"\t\\[[!teximg code=\"E = - \\frac{Z^2 \\cdot \\mu \\cdot e^4}{32\\pi^2 " +"\\epsilon_0^2 \\hbar^2 n^2}\" ]]\n" + +#. type: Plain text +msgid "To scale the image, use height=x:" +msgstr "" +"Um die Größe des Bilds zu verändern, kann `height=y` angegeben werden:" + +#. type: Plain text +#, no-wrap +msgid "" +"\t\\[[!teximg code=\"\\frac{1}{2}\" height=\"17\"]]\n" +"\t\\[[!teximg code=\"\\frac{1}{2}\" height=\"8\"]]\n" +msgstr "" +"\t\\[[!teximg code=\"\\frac{1}{2}\" height=\"17\"]]\n" +"\t\\[[!teximg code=\"\\frac{1}{2}\" height=\"8\"]]\n" + +#. type: Plain text +msgid "" +"If no height is chosen the default height 12 is used. Valid heights are: 8, " +"9, 10, 11, 12, 14, 17, 20. If another height is entered, the closest " +"available height is used." +msgstr "" +"Wenn keine Höhe angegeben wird, wird 12 verwendet. Zulässige Höhen sind 8, " +"9, 10, 11, 12, 14, 17 und 20. Wird eine andere Höhe angegeben, wird " +"stattdessen die nächste zulässige verwendet." + +#. type: Plain text +msgid "To add an alt text to the image, use alt=\"text\":" +msgstr "" +"Um einen `alt`-Text zu dem Bild hinzuzufügen, kann `alt=\"Text\"` verwendet " +"werden:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!teximg code=\"\\frac{1}{2}\" alt=\"1/2\"]]\n" +msgstr "\t\\[[!teximg code=\"\\frac{1}{2}\" alt=\"1/2\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/toc.de.po b/po/underlays/directives/ikiwiki/directive/toc.de.po new file mode 100644 index 000000000..c2ddda74c --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/toc.de.po @@ -0,0 +1,85 @@ +# German translation of directives/ikiwiki/directive/toc page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:10+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "The `toc` directive is supplied by the [[!iki plugins/toc desc=toc]] plugin." +msgstr "" +"Die `toc`-Anweisung wird durch die [[!iki plugins/toc desc=toc]]-Erweiterung " +"bereitgestellt." + +#. type: Plain text +msgid "Add a table of contents to a page:" +msgstr "Sie fügt ein Inhaltsverzeichnis in eine Seite ein:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!toc ]]\n" +msgstr "\t\\[[!toc ]]\n" + +#. type: Plain text +msgid "" +"The table of contents will be automatically generated based on the headers " +"of the page. By default only the largest headers present on the page will be " +"shown; to control how many levels of headers are shown, use the `levels` " +"parameter:" +msgstr "" +"Das Inhaltsverzeichnis wird automatisch ausgehend von den Überschriften der Seite " +"erzeugt. In der Voreinstellung werden nur die größten Überschriften der Seite " +"angezeigt; mit dem Parameter `levels` kann aber die Anzahl der angezeigten " +"Überschriftsebenen gesteuert werden:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!toc levels=2]]\n" +msgstr "\t\\[[!toc levels=2]]\n" + +#. type: Plain text +msgid "" +"The toc directive will take the level of the first header as the topmost " +"level, even if there are higher levels seen later in the file." +msgstr "" +"Die `toc`-Anweisung verwendet die Ebene der ersten Überschrift als die oberste, " +"selbst wenn es weiter unten in der Datei höhere Überschriften gibt." + +#. type: Plain text +msgid "" +"To create a table of contents that only shows headers starting with a given " +"level, use the `startlevel` parameter. For example, to show only h2 and " +"smaller headers:" +msgstr "" +"Um in einem Inhaltsverzeichnis nur die Überschriften beginnend mit einer " +"bestimmten Ebene anzuzeigen, kann der `startlevel`-Parameter verwendet werden. " +"Zum Beispiel, um nur <h2>- und kleinere Überschriften anzuzeigen:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!toc startlevel=2]]\n" +msgstr "\t\\[[!toc startlevel=2]]\n" + +#. type: Plain text +msgid "" +"The table of contents will be created as an ordered list. If you want an " +"unordered list instead, you can change the list-style in your local style " +"sheet." +msgstr "" +"Das Inhaltsverzeichnis wird als nummerierte Liste erzeugt. Um eine ungeordnete " +"Liste zu erhalten, kann `list-style` im lokalen Stylesheet verändert werden." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/toggle.de.po b/po/underlays/directives/ikiwiki/directive/toggle.de.po new file mode 100644 index 000000000..6c316c5e4 --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/toggle.de.po @@ -0,0 +1,113 @@ +# German translation of directives/ikiwiki/directive/toggle page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:10+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `toggle` and `toggleable` directives are supplied by the [[!iki " +"plugins/toggle desc=toggle]] plugin." +msgstr "" +"Die `toggle`- und `toggleable`-Anweisungen werden durch die [[!iki " +"plugins/toggle desc=toggle]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "" +"With these directives you can create links on pages that, when clicked, " +"toggle display of other parts of the page." +msgstr "" +"Mit diesen Anweisungen kann man auf Seiten Links erstellen, die beim " +"Anklicken andere Teile der Seite anzeigen." + +#. type: Plain text +msgid "" +"It uses javascript to accomplish this; browsers without javascript will " +"always see the full page content." +msgstr "" +"Um dies zu erreichen, wird Javascript verwendet; Browser ohne Javascript " +"sehen immer den kompletten Inhalt." + +#. type: Plain text +msgid "Example use:" +msgstr "Beispiel für die Benutzung:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!toggle id=\"ipsum\" text=\"show\"]]\n" +msgstr "\t\\[[!toggle id=\"ipsum\" text=\"anzeigen\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!toggleable id=\"ipsum\" text=\"\"\"\n" +msgstr "\t\\[[!toggleable id=\"ipsum\" text=\"\"\"\n" + +#. type: Plain text +#, no-wrap +msgid "" +"\tLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do\n" +"\teiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim\n" +"\tad minim veniam, quis nostrud exercitation ullamco laboris nisi ut\n" +"\taliquip ex ea commodo consequat.\n" +msgstr "" +"\tLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do\n" +"\teiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim\n" +"\tad minim veniam, quis nostrud exercitation ullamco laboris nisi ut\n" +"\taliquip ex ea commodo consequat.\n" + +#. type: Plain text +#, no-wrap +msgid "\t[[!toggle id=\"ipsum\" text=\"hide\"]]\n" +msgstr "\t[[!toggle id=\"ipsum\" text=\"verbergen\"]]\n" + +#. type: Plain text +msgid "" +"Note that you can include wiki markup in the toggleable text, including even " +"additional toggles, as shown in the above example." +msgstr "" +"In dem umschaltbaren Text können beliebige Wiki-Formatierungen verwendet " +"werden, sogar wie im obigen Beispiel weitere `toggle`-Anweisungen." + +#. type: Plain text +msgid "" +"Also, the toggle and the togglable definitions do not need to be next to " +"each other, but can be located anywhere on the page. There can also be " +"mutiple toggles that all toggle a single togglable." +msgstr "" +"Außerdem müssen die Definitionen von `toggle` und `toggleable` nicht " +"nebeneinander stehen, sondern können beliebig über die Seite verteilt werden." +" Es kann auch mehrere `toggle` geben, die das gleiche `toggleable` " +"umschalten." + +#. type: Plain text +msgid "" +"The id has a default value of \"default\", so can be omitted in simple " +"cases." +msgstr "" +"Als `id` ist \"default\" voreingestellt, sodass diese Angabe in einfachen " +"Fällen weggelassen werden kann." + +#. type: Plain text +msgid "" +"If you'd like a toggleable to be displayed by default, and toggle to hidden, " +"then pass a parameter \"open=yes\" when setting up the toggleable." +msgstr "" +"Wenn ein `toggleable` zu Beginn angezeigt werden soll (um es dann verbergen " +"zu können), kann bei seiner Einrichtung der Parameter `open=yes` angegeben " +"werden." + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/directives/ikiwiki/directive/toggleable.de.po b/po/underlays/directives/ikiwiki/directive/toggleable.de.po new file mode 100644 index 000000000..db99bdb5a --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/toggleable.de.po @@ -0,0 +1,25 @@ +# German translation of directives/ikiwiki/directive/toggleable page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 11:52+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta redir=/ikiwiki/directive/toggle]]\n" +msgstr "[[!meta redir=/ikiwiki/directive/toggle]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + diff --git a/po/underlays/directives/ikiwiki/directive/version.de.po b/po/underlays/directives/ikiwiki/directive/version.de.po new file mode 100644 index 000000000..eca114e4c --- /dev/null +++ b/po/underlays/directives/ikiwiki/directive/version.de.po @@ -0,0 +1,50 @@ +# German translation of directives/ikiwiki/directive/version page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-14 14:11+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"The `version` directive is supplied by the [[!iki plugins/version " +"desc=version]] plugin." +msgstr "" +"Die `version`-Anweisung wird durch die [[!iki plugins/version " +"desc=version]]-Erweiterung bereitgestellt." + +#. type: Plain text +msgid "This directive allows inserting the version of ikiwiki onto a page." +msgstr "Diese Anweisung fügt die Version von ikiwiki in eine Seite ein." + +#. type: Plain text +msgid "" +"Whenever ikiwiki is upgraded to a new version, the page will be rebuilt, " +"updating the version number." +msgstr "" +"Immer wenn ikiwiki auf eine neue Version aktualisiert wird, wird diese " +"Seite erneuert, um die Versionsnummer zu aktualisieren." + +#. type: Plain text +msgid "Use is simple:" +msgstr "Die Verwendung ist einfach:" + +#. type: Plain text +#, no-wrap +msgid "\t\\[[!version ]]\n" +msgstr "\t\\[[!version ]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!meta robots=\"noindex, follow\"]]\n" +msgstr "[[!meta robots=\"noindex, follow\"]]\n" + + diff --git a/po/underlays/smiley/smileys.de.po b/po/underlays/smiley/smileys.de.po new file mode 100644 index 000000000..3da3037f9 --- /dev/null +++ b/po/underlays/smiley/smileys.de.po @@ -0,0 +1,211 @@ +# German translation of smiley/smileys page for ikiwiki. +# Copyright © 2010 Sebastian Kuhnert +# Redistribution and use in source and compiled forms, with or without +# modification, are permitted under any circumstances. No warranty. +msgid "" +msgstr "" +"POT-Creation-Date: 2010-03-12 09:29+0530\n" +"PO-Revision-Date: 2010-03-12 20:57+0530\n" +"Last-Translator: Sebastian Kuhnert \n" +"Language-Team: None\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. type: Plain text +msgid "" +"This page is used to control what smileys are supported by the wiki. Just " +"write the text of a smiley to display it." +msgstr "" +"Diese Seite steuert, welche Smileys von ikiwiki unterstützt werden. " +"Schreibe einfach den Text eines Smileys in den Text, um es anzuzeigen." + +#. type: Bullet: '* ' +msgid "\\\\:)\t[[smileys/smile.png]]" +msgstr "\\\\:)\t[[smileys/smile.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:-)\t[[smileys/smile.png]]" +msgstr "\\\\:-)\t[[smileys/smile.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:D\t[[smileys/biggrin.png]]" +msgstr "\\\\:D\t[[smileys/biggrin.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:-D\t[[smileys/biggrin.png]]" +msgstr "\\\\:-D\t[[smileys/biggrin.png]]" + +#. type: Bullet: '* ' +msgid "\\\\B)\t[[smileys/smile2.png]]" +msgstr "\\\\B)\t[[smileys/smile2.png]]" + +#. type: Bullet: '* ' +msgid "\\\\B-)\t[[smileys/smile2.png]]" +msgstr "\\\\B-)\t[[smileys/smile2.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:))\t[[smileys/smile3.png]]" +msgstr "\\\\:))\t[[smileys/smile3.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:-))\t[[smileys/smile3.png]]" +msgstr "\\\\:-))\t[[smileys/smile3.png]]" + +#. type: Bullet: '* ' +msgid "\\\\;)\t[[smileys/smile4.png]]" +msgstr "\\\\;)\t[[smileys/smile4.png]]" + +#. type: Bullet: '* ' +msgid "\\\\;-)\t[[smileys/smile4.png]]" +msgstr "\\\\;-)\t[[smileys/smile4.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:\\\t[[smileys/ohwell.png]]" +msgstr "\\\\:\\\t[[smileys/ohwell.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:-\\\t[[smileys/ohwell.png]]" +msgstr "\\\\:-\\\t[[smileys/ohwell.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:/\t[[smileys/ohwell.png]]" +msgstr "\\\\:/\t[[smileys/ohwell.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:-/\t[[smileys/ohwell.png]]" +msgstr "\\\\:-/\t[[smileys/ohwell.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:|\t[[smileys/neutral.png]]" +msgstr "\\\\:|\t[[smileys/neutral.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:-|\t[[smileys/neutral.png]]" +msgstr "\\\\:-|\t[[smileys/neutral.png]]" + +#. type: Bullet: '* ' +msgid "\\\\>:>\t[[smileys/devil.png]]" +msgstr "\\\\>:>\t[[smileys/devil.png]]" + +#. type: Bullet: '* ' +msgid "\\\\X-(\t[[smileys/angry.png]]" +msgstr "\\\\X-(\t[[smileys/angry.png]]" + +#. type: Bullet: '* ' +msgid "\\\\<:(\t[[smileys/frown.png]]" +msgstr "\\\\<:(\t[[smileys/frown.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:(\t[[smileys/sad.png]]" +msgstr "\\\\:(\t[[smileys/sad.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:-(\t[[smileys/sad.png]]" +msgstr "\\\\:-(\t[[smileys/sad.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:-?\t[[smileys/tongue.png]]" +msgstr "\\\\:-?\t[[smileys/tongue.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:-P\t[[smileys/tongue.png]]" +msgstr "\\\\:-P\t[[smileys/tongue.png]]" + +#. type: Bullet: '* ' +msgid "\\\\:o\t[[smileys/redface.png]]" +msgstr "\\\\:o\t[[smileys/redface.png]]" + +#. type: Bullet: '* ' +msgid "\\\\|)\t[[smileys/tired.png]]" +msgstr "\\\\|)\t[[smileys/tired.png]]" + +#. type: Bullet: '* ' +msgid "\\\\|-)\t[[smileys/tired.png]]" +msgstr "\\\\|-)\t[[smileys/tired.png]]" + +#. type: Bullet: '* ' +msgid "\\\\{OK}\t[[smileys/thumbs-up.png]]" +msgstr "\\\\{OK}\t[[smileys/thumbs-up.png]]" + +#. type: Bullet: '* ' +msgid "\\\\{X}\t[[smileys/icon-error.png]]" +msgstr "\\\\{X}\t[[smileys/icon-error.png]]" + +#. type: Bullet: '* ' +msgid "\\\\{i}\t[[smileys/icon-info.png]]" +msgstr "\\\\{i}\t[[smileys/icon-info.png]]" + +#. type: Bullet: '* ' +msgid "\\\\(./)\t[[smileys/checkmark.png]]" +msgstr "\\\\(./)\t[[smileys/checkmark.png]]" + +#. type: Bullet: '* ' +msgid "\\\\(!)\t[[smileys/idea.png]]" +msgstr "\\\\(!)\t[[smileys/idea.png]]" + +#. type: Bullet: '* ' +msgid "\\\\[!]\t[[smileys/attention.png]]" +msgstr "\\\\[!]\t[[smileys/attention.png]]" + +#. type: Bullet: '* ' +msgid "\\\\/!\\\t[[smileys/alert.png]]" +msgstr "\\\\/!\\\t[[smileys/alert.png]]" + +#. type: Bullet: '* ' +msgid "\\\\(?)\t[[smileys/question.png]]" +msgstr "\\\\(?)\t[[smileys/question.png]]" + +#. type: Bullet: '* ' +msgid "\\\\{x}\t[[smileys/star_on.png]]" +msgstr "\\\\{x}\t[[smileys/star_on.png]]" + +#. type: Bullet: '* ' +msgid "\\\\{*}\t[[smileys/star_on.png]]" +msgstr "\\\\{*}\t[[smileys/star_on.png]]" + +#. type: Bullet: '* ' +msgid "\\\\{o}\t[[smileys/star_off.png]]" +msgstr "\\\\{o}\t[[smileys/star_off.png]]" + +#. type: Bullet: '* ' +msgid "\\\\{1}\t[[smileys/prio1.png]]" +msgstr "\\\\{1}\t[[smileys/prio1.png]]" + +#. type: Bullet: '* ' +msgid "\\\\{2}\t[[smileys/prio2.png]]" +msgstr "\\\\{2}\t[[smileys/prio2.png]]" + +#. type: Bullet: '* ' +msgid "\\\\{3}\t[[smileys/prio3.png]]" +msgstr "\\\\{3}\t[[smileys/prio3.png]]" + +#. type: Plain text +msgid "For example: {x} B) {x}" +msgstr "Zum Beispiel: {x} B) {x}" + +#. type: Plain text +msgid "" +"To change the supported smileys, just edit the lists on this page. Note " +"that the format is important; each list item should start with the text that " +"is turned into the smiley, escaped so that users can see what produces it, " +"followed by a [[ikiwiki/WikiLink]] to the image to display." +msgstr "" +"Um die unterstützten Simleys zu verändern, bearbeite einfach diese Seite. " +"Beachte dass das Format wichtig ist: Jeder Eintrag in der Liste sollte mit " +"dem Text zum Anzeige des Smileys beginnen (geschützt sodass Benutzer " +"sehen können, wodurch ein Smiley erzeugt wird), gefolgt von einem " +"[[ikiwiki/WikiLink]] auf das anzuzeigende Bild." + +#. type: Plain text +msgid "" +"/!\\ Bear in mind that the link to the image needs to be written in a way " +"that will work if it's copied to other pages on the wiki. So be sure to " +"include the smileys directory in the path to the file." +msgstr "" +"/!\\ Denke daran, dass der Link auf das Bild so geschrieben sein muss, dass " +"er auch dann funktioniert, wenn er in andere Teile des Wikis kopiert wird. " +"Stelle also sicher, dass das Verzeichnis der Smiley-Datei mit angegeben wird." + + -- cgit v1.2.3 From a79c52337c1d42f18492caf0ba3da970874210c1 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 14 Mar 2010 13:44:01 -0400 Subject: fix missing close quote on all the Content-Transfer-Encoding in the German po files --- po/underlays/basewiki/ikiwiki.de.po | 2 +- po/underlays/basewiki/ikiwiki/directive.de.po | 2 +- po/underlays/basewiki/ikiwiki/formatting.de.po | 2 +- po/underlays/basewiki/ikiwiki/markdown.de.po | 2 +- po/underlays/basewiki/ikiwiki/openid.de.po | 2 +- po/underlays/basewiki/ikiwiki/pagespec.de.po | 2 +- po/underlays/basewiki/ikiwiki/pagespec/attachment.de.po | 2 +- po/underlays/basewiki/ikiwiki/pagespec/po.de.po | 2 +- po/underlays/basewiki/ikiwiki/pagespec/sorting.de.po | 2 +- po/underlays/basewiki/ikiwiki/searching.de.po | 2 +- po/underlays/basewiki/ikiwiki/subpage.de.po | 2 +- po/underlays/basewiki/ikiwiki/subpage/linkingrules.de.po | 2 +- po/underlays/basewiki/ikiwiki/wikilink.de.po | 2 +- po/underlays/basewiki/index.de.po | 2 +- po/underlays/basewiki/recentchanges.de.po | 2 +- po/underlays/basewiki/sandbox.de.po | 2 +- po/underlays/basewiki/shortcuts.de.po | 2 +- po/underlays/basewiki/templates.de.po | 2 +- po/underlays/basewiki/templates/note.de.po | 2 +- po/underlays/basewiki/templates/popup.de.po | 2 +- po/underlays/directives/ikiwiki/directive/aggregate.de.po | 2 +- po/underlays/directives/ikiwiki/directive/brokenlinks.de.po | 2 +- po/underlays/directives/ikiwiki/directive/calendar.de.po | 2 +- po/underlays/directives/ikiwiki/directive/color.de.po | 2 +- po/underlays/directives/ikiwiki/directive/comment.de.po | 2 +- po/underlays/directives/ikiwiki/directive/copy.de.po | 2 +- po/underlays/directives/ikiwiki/directive/cut.de.po | 2 +- po/underlays/directives/ikiwiki/directive/cutpaste.de.po | 2 +- po/underlays/directives/ikiwiki/directive/date.de.po | 2 +- po/underlays/directives/ikiwiki/directive/edittemplate.de.po | 2 +- po/underlays/directives/ikiwiki/directive/format.de.po | 2 +- po/underlays/directives/ikiwiki/directive/fortune.de.po | 2 +- po/underlays/directives/ikiwiki/directive/graph.de.po | 2 +- po/underlays/directives/ikiwiki/directive/haiku.de.po | 2 +- po/underlays/directives/ikiwiki/directive/if.de.po | 2 +- po/underlays/directives/ikiwiki/directive/img.de.po | 2 +- po/underlays/directives/ikiwiki/directive/inline.de.po | 2 +- po/underlays/directives/ikiwiki/directive/linkmap.de.po | 2 +- po/underlays/directives/ikiwiki/directive/listdirectives.de.po | 2 +- po/underlays/directives/ikiwiki/directive/map.de.po | 2 +- po/underlays/directives/ikiwiki/directive/meta.de.po | 2 +- po/underlays/directives/ikiwiki/directive/more.de.po | 2 +- po/underlays/directives/ikiwiki/directive/orphans.de.po | 2 +- po/underlays/directives/ikiwiki/directive/pagecount.de.po | 2 +- po/underlays/directives/ikiwiki/directive/pagestats.de.po | 2 +- po/underlays/directives/ikiwiki/directive/pagetemplate.de.po | 2 +- po/underlays/directives/ikiwiki/directive/paste.de.po | 2 +- po/underlays/directives/ikiwiki/directive/ping.de.po | 2 +- po/underlays/directives/ikiwiki/directive/poll.de.po | 2 +- po/underlays/directives/ikiwiki/directive/polygen.de.po | 2 +- po/underlays/directives/ikiwiki/directive/postsparkline.de.po | 2 +- po/underlays/directives/ikiwiki/directive/progress.de.po | 2 +- po/underlays/directives/ikiwiki/directive/shortcut.de.po | 2 +- po/underlays/directives/ikiwiki/directive/sparkline.de.po | 2 +- po/underlays/directives/ikiwiki/directive/table.de.po | 2 +- po/underlays/directives/ikiwiki/directive/tag.de.po | 2 +- po/underlays/directives/ikiwiki/directive/taglink.de.po | 2 +- po/underlays/directives/ikiwiki/directive/template.de.po | 2 +- po/underlays/directives/ikiwiki/directive/testpagespec.de.po | 2 +- po/underlays/directives/ikiwiki/directive/teximg.de.po | 2 +- po/underlays/directives/ikiwiki/directive/toc.de.po | 2 +- po/underlays/directives/ikiwiki/directive/toggle.de.po | 2 +- po/underlays/directives/ikiwiki/directive/toggleable.de.po | 2 +- po/underlays/directives/ikiwiki/directive/version.de.po | 2 +- po/underlays/smiley/smileys.de.po | 2 +- 65 files changed, 65 insertions(+), 65 deletions(-) diff --git a/po/underlays/basewiki/ikiwiki.de.po b/po/underlays/basewiki/ikiwiki.de.po index 1420df3e6..1eb8429f3 100644 --- a/po/underlays/basewiki/ikiwiki.de.po +++ b/po/underlays/basewiki/ikiwiki.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/ikiwiki/directive.de.po b/po/underlays/basewiki/ikiwiki/directive.de.po index b8a610c83..d969f8102 100644 --- a/po/underlays/basewiki/ikiwiki/directive.de.po +++ b/po/underlays/basewiki/ikiwiki/directive.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/ikiwiki/formatting.de.po b/po/underlays/basewiki/ikiwiki/formatting.de.po index 04b604289..d4955eeb8 100644 --- a/po/underlays/basewiki/ikiwiki/formatting.de.po +++ b/po/underlays/basewiki/ikiwiki/formatting.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/ikiwiki/markdown.de.po b/po/underlays/basewiki/ikiwiki/markdown.de.po index a42c41439..1d1d84980 100644 --- a/po/underlays/basewiki/ikiwiki/markdown.de.po +++ b/po/underlays/basewiki/ikiwiki/markdown.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/ikiwiki/openid.de.po b/po/underlays/basewiki/ikiwiki/openid.de.po index f278e64fc..27c74679a 100644 --- a/po/underlays/basewiki/ikiwiki/openid.de.po +++ b/po/underlays/basewiki/ikiwiki/openid.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/ikiwiki/pagespec.de.po b/po/underlays/basewiki/ikiwiki/pagespec.de.po index ab4d62da3..401b4f4b7 100644 --- a/po/underlays/basewiki/ikiwiki/pagespec.de.po +++ b/po/underlays/basewiki/ikiwiki/pagespec.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/ikiwiki/pagespec/attachment.de.po b/po/underlays/basewiki/ikiwiki/pagespec/attachment.de.po index 690e41636..1a20a5f0e 100644 --- a/po/underlays/basewiki/ikiwiki/pagespec/attachment.de.po +++ b/po/underlays/basewiki/ikiwiki/pagespec/attachment.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/ikiwiki/pagespec/po.de.po b/po/underlays/basewiki/ikiwiki/pagespec/po.de.po index 056552a4f..785b16ffa 100644 --- a/po/underlays/basewiki/ikiwiki/pagespec/po.de.po +++ b/po/underlays/basewiki/ikiwiki/pagespec/po.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/ikiwiki/pagespec/sorting.de.po b/po/underlays/basewiki/ikiwiki/pagespec/sorting.de.po index 7ca179a6a..dbc6dbb95 100644 --- a/po/underlays/basewiki/ikiwiki/pagespec/sorting.de.po +++ b/po/underlays/basewiki/ikiwiki/pagespec/sorting.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/ikiwiki/searching.de.po b/po/underlays/basewiki/ikiwiki/searching.de.po index 211117995..ca50e05d4 100644 --- a/po/underlays/basewiki/ikiwiki/searching.de.po +++ b/po/underlays/basewiki/ikiwiki/searching.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/ikiwiki/subpage.de.po b/po/underlays/basewiki/ikiwiki/subpage.de.po index 3594ab445..184144ca0 100644 --- a/po/underlays/basewiki/ikiwiki/subpage.de.po +++ b/po/underlays/basewiki/ikiwiki/subpage.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/ikiwiki/subpage/linkingrules.de.po b/po/underlays/basewiki/ikiwiki/subpage/linkingrules.de.po index 5702c5fcd..08ffd8cbf 100644 --- a/po/underlays/basewiki/ikiwiki/subpage/linkingrules.de.po +++ b/po/underlays/basewiki/ikiwiki/subpage/linkingrules.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/ikiwiki/wikilink.de.po b/po/underlays/basewiki/ikiwiki/wikilink.de.po index 7bd9130e3..ccdd20303 100644 --- a/po/underlays/basewiki/ikiwiki/wikilink.de.po +++ b/po/underlays/basewiki/ikiwiki/wikilink.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/index.de.po b/po/underlays/basewiki/index.de.po index 037412d55..c2dcdd341 100644 --- a/po/underlays/basewiki/index.de.po +++ b/po/underlays/basewiki/index.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/recentchanges.de.po b/po/underlays/basewiki/recentchanges.de.po index f1e75acd9..88ff46fca 100644 --- a/po/underlays/basewiki/recentchanges.de.po +++ b/po/underlays/basewiki/recentchanges.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/sandbox.de.po b/po/underlays/basewiki/sandbox.de.po index 0e8d354f8..bb1b837c6 100644 --- a/po/underlays/basewiki/sandbox.de.po +++ b/po/underlays/basewiki/sandbox.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/shortcuts.de.po b/po/underlays/basewiki/shortcuts.de.po index 36be14729..abfa26bdc 100644 --- a/po/underlays/basewiki/shortcuts.de.po +++ b/po/underlays/basewiki/shortcuts.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/templates.de.po b/po/underlays/basewiki/templates.de.po index 1bc6c7513..beb92b49f 100644 --- a/po/underlays/basewiki/templates.de.po +++ b/po/underlays/basewiki/templates.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/templates/note.de.po b/po/underlays/basewiki/templates/note.de.po index 2aa5aa9d6..c408d11a0 100644 --- a/po/underlays/basewiki/templates/note.de.po +++ b/po/underlays/basewiki/templates/note.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/basewiki/templates/popup.de.po b/po/underlays/basewiki/templates/popup.de.po index 37ba31ff8..c75b79d94 100644 --- a/po/underlays/basewiki/templates/popup.de.po +++ b/po/underlays/basewiki/templates/popup.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/aggregate.de.po b/po/underlays/directives/ikiwiki/directive/aggregate.de.po index 518190ade..07803ffb9 100644 --- a/po/underlays/directives/ikiwiki/directive/aggregate.de.po +++ b/po/underlays/directives/ikiwiki/directive/aggregate.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/brokenlinks.de.po b/po/underlays/directives/ikiwiki/directive/brokenlinks.de.po index ff258a562..773eb95ae 100644 --- a/po/underlays/directives/ikiwiki/directive/brokenlinks.de.po +++ b/po/underlays/directives/ikiwiki/directive/brokenlinks.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/calendar.de.po b/po/underlays/directives/ikiwiki/directive/calendar.de.po index 5c6868e18..56a8c7e7e 100644 --- a/po/underlays/directives/ikiwiki/directive/calendar.de.po +++ b/po/underlays/directives/ikiwiki/directive/calendar.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/color.de.po b/po/underlays/directives/ikiwiki/directive/color.de.po index 1cc36f8ee..48cd5736f 100644 --- a/po/underlays/directives/ikiwiki/directive/color.de.po +++ b/po/underlays/directives/ikiwiki/directive/color.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/comment.de.po b/po/underlays/directives/ikiwiki/directive/comment.de.po index 70d0d7d50..fed27cf75 100644 --- a/po/underlays/directives/ikiwiki/directive/comment.de.po +++ b/po/underlays/directives/ikiwiki/directive/comment.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/copy.de.po b/po/underlays/directives/ikiwiki/directive/copy.de.po index 33f902da8..54f7caef0 100644 --- a/po/underlays/directives/ikiwiki/directive/copy.de.po +++ b/po/underlays/directives/ikiwiki/directive/copy.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/cut.de.po b/po/underlays/directives/ikiwiki/directive/cut.de.po index 33f902da8..54f7caef0 100644 --- a/po/underlays/directives/ikiwiki/directive/cut.de.po +++ b/po/underlays/directives/ikiwiki/directive/cut.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/cutpaste.de.po b/po/underlays/directives/ikiwiki/directive/cutpaste.de.po index ff3503ed5..b99826e82 100644 --- a/po/underlays/directives/ikiwiki/directive/cutpaste.de.po +++ b/po/underlays/directives/ikiwiki/directive/cutpaste.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/date.de.po b/po/underlays/directives/ikiwiki/directive/date.de.po index 7baa1b3a4..517af753c 100644 --- a/po/underlays/directives/ikiwiki/directive/date.de.po +++ b/po/underlays/directives/ikiwiki/directive/date.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/edittemplate.de.po b/po/underlays/directives/ikiwiki/directive/edittemplate.de.po index f47140c09..d2ca0c29f 100644 --- a/po/underlays/directives/ikiwiki/directive/edittemplate.de.po +++ b/po/underlays/directives/ikiwiki/directive/edittemplate.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/format.de.po b/po/underlays/directives/ikiwiki/directive/format.de.po index 2db9e5af6..499816ac4 100644 --- a/po/underlays/directives/ikiwiki/directive/format.de.po +++ b/po/underlays/directives/ikiwiki/directive/format.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/fortune.de.po b/po/underlays/directives/ikiwiki/directive/fortune.de.po index 89cdf84aa..1e63609dc 100644 --- a/po/underlays/directives/ikiwiki/directive/fortune.de.po +++ b/po/underlays/directives/ikiwiki/directive/fortune.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/graph.de.po b/po/underlays/directives/ikiwiki/directive/graph.de.po index 4f9d6a346..0d62a55dc 100644 --- a/po/underlays/directives/ikiwiki/directive/graph.de.po +++ b/po/underlays/directives/ikiwiki/directive/graph.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/haiku.de.po b/po/underlays/directives/ikiwiki/directive/haiku.de.po index 7923a1395..779621673 100644 --- a/po/underlays/directives/ikiwiki/directive/haiku.de.po +++ b/po/underlays/directives/ikiwiki/directive/haiku.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/if.de.po b/po/underlays/directives/ikiwiki/directive/if.de.po index e28e45936..337a84bd6 100644 --- a/po/underlays/directives/ikiwiki/directive/if.de.po +++ b/po/underlays/directives/ikiwiki/directive/if.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/img.de.po b/po/underlays/directives/ikiwiki/directive/img.de.po index f28a1597b..9ebdae5bc 100644 --- a/po/underlays/directives/ikiwiki/directive/img.de.po +++ b/po/underlays/directives/ikiwiki/directive/img.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/inline.de.po b/po/underlays/directives/ikiwiki/directive/inline.de.po index 17e5c19d2..429ea59a3 100644 --- a/po/underlays/directives/ikiwiki/directive/inline.de.po +++ b/po/underlays/directives/ikiwiki/directive/inline.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/linkmap.de.po b/po/underlays/directives/ikiwiki/directive/linkmap.de.po index 1695ca659..e06368e6e 100644 --- a/po/underlays/directives/ikiwiki/directive/linkmap.de.po +++ b/po/underlays/directives/ikiwiki/directive/linkmap.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/listdirectives.de.po b/po/underlays/directives/ikiwiki/directive/listdirectives.de.po index 18d0a6da0..2c9205880 100644 --- a/po/underlays/directives/ikiwiki/directive/listdirectives.de.po +++ b/po/underlays/directives/ikiwiki/directive/listdirectives.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/map.de.po b/po/underlays/directives/ikiwiki/directive/map.de.po index 303624b2c..f09598232 100644 --- a/po/underlays/directives/ikiwiki/directive/map.de.po +++ b/po/underlays/directives/ikiwiki/directive/map.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/meta.de.po b/po/underlays/directives/ikiwiki/directive/meta.de.po index aab5fd806..47415c306 100644 --- a/po/underlays/directives/ikiwiki/directive/meta.de.po +++ b/po/underlays/directives/ikiwiki/directive/meta.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/more.de.po b/po/underlays/directives/ikiwiki/directive/more.de.po index bffb3a247..65615049b 100644 --- a/po/underlays/directives/ikiwiki/directive/more.de.po +++ b/po/underlays/directives/ikiwiki/directive/more.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/orphans.de.po b/po/underlays/directives/ikiwiki/directive/orphans.de.po index 45ba378db..aeaebdf61 100644 --- a/po/underlays/directives/ikiwiki/directive/orphans.de.po +++ b/po/underlays/directives/ikiwiki/directive/orphans.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/pagecount.de.po b/po/underlays/directives/ikiwiki/directive/pagecount.de.po index 63aa98db5..5f2db30df 100644 --- a/po/underlays/directives/ikiwiki/directive/pagecount.de.po +++ b/po/underlays/directives/ikiwiki/directive/pagecount.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/pagestats.de.po b/po/underlays/directives/ikiwiki/directive/pagestats.de.po index 427f273ed..86ce00d9b 100644 --- a/po/underlays/directives/ikiwiki/directive/pagestats.de.po +++ b/po/underlays/directives/ikiwiki/directive/pagestats.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/pagetemplate.de.po b/po/underlays/directives/ikiwiki/directive/pagetemplate.de.po index 8fddac168..71ea68e81 100644 --- a/po/underlays/directives/ikiwiki/directive/pagetemplate.de.po +++ b/po/underlays/directives/ikiwiki/directive/pagetemplate.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/paste.de.po b/po/underlays/directives/ikiwiki/directive/paste.de.po index 48a08bf29..390d6e9ec 100644 --- a/po/underlays/directives/ikiwiki/directive/paste.de.po +++ b/po/underlays/directives/ikiwiki/directive/paste.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/ping.de.po b/po/underlays/directives/ikiwiki/directive/ping.de.po index 364813bb5..9276d6902 100644 --- a/po/underlays/directives/ikiwiki/directive/ping.de.po +++ b/po/underlays/directives/ikiwiki/directive/ping.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/poll.de.po b/po/underlays/directives/ikiwiki/directive/poll.de.po index 1a4e6b5c4..680bc1887 100644 --- a/po/underlays/directives/ikiwiki/directive/poll.de.po +++ b/po/underlays/directives/ikiwiki/directive/poll.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/polygen.de.po b/po/underlays/directives/ikiwiki/directive/polygen.de.po index 8b7f46557..8acb98379 100644 --- a/po/underlays/directives/ikiwiki/directive/polygen.de.po +++ b/po/underlays/directives/ikiwiki/directive/polygen.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/postsparkline.de.po b/po/underlays/directives/ikiwiki/directive/postsparkline.de.po index 140774bcc..e857d10fc 100644 --- a/po/underlays/directives/ikiwiki/directive/postsparkline.de.po +++ b/po/underlays/directives/ikiwiki/directive/postsparkline.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/progress.de.po b/po/underlays/directives/ikiwiki/directive/progress.de.po index 72ad7a134..5f10f9942 100644 --- a/po/underlays/directives/ikiwiki/directive/progress.de.po +++ b/po/underlays/directives/ikiwiki/directive/progress.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/shortcut.de.po b/po/underlays/directives/ikiwiki/directive/shortcut.de.po index 7d5616b3f..50ffebc21 100644 --- a/po/underlays/directives/ikiwiki/directive/shortcut.de.po +++ b/po/underlays/directives/ikiwiki/directive/shortcut.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/sparkline.de.po b/po/underlays/directives/ikiwiki/directive/sparkline.de.po index f1a5ac44a..3223b8811 100644 --- a/po/underlays/directives/ikiwiki/directive/sparkline.de.po +++ b/po/underlays/directives/ikiwiki/directive/sparkline.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/table.de.po b/po/underlays/directives/ikiwiki/directive/table.de.po index 414bfc68c..6aaeef79f 100644 --- a/po/underlays/directives/ikiwiki/directive/table.de.po +++ b/po/underlays/directives/ikiwiki/directive/table.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/tag.de.po b/po/underlays/directives/ikiwiki/directive/tag.de.po index 226900b59..b33c3bcb0 100644 --- a/po/underlays/directives/ikiwiki/directive/tag.de.po +++ b/po/underlays/directives/ikiwiki/directive/tag.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/taglink.de.po b/po/underlays/directives/ikiwiki/directive/taglink.de.po index 769347eeb..4ae84ecdb 100644 --- a/po/underlays/directives/ikiwiki/directive/taglink.de.po +++ b/po/underlays/directives/ikiwiki/directive/taglink.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/template.de.po b/po/underlays/directives/ikiwiki/directive/template.de.po index a153cfc94..faa2be614 100644 --- a/po/underlays/directives/ikiwiki/directive/template.de.po +++ b/po/underlays/directives/ikiwiki/directive/template.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/testpagespec.de.po b/po/underlays/directives/ikiwiki/directive/testpagespec.de.po index 22da164e3..f936d7ec3 100644 --- a/po/underlays/directives/ikiwiki/directive/testpagespec.de.po +++ b/po/underlays/directives/ikiwiki/directive/testpagespec.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/teximg.de.po b/po/underlays/directives/ikiwiki/directive/teximg.de.po index f0553e7c9..fc2ffab47 100644 --- a/po/underlays/directives/ikiwiki/directive/teximg.de.po +++ b/po/underlays/directives/ikiwiki/directive/teximg.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/toc.de.po b/po/underlays/directives/ikiwiki/directive/toc.de.po index c2ddda74c..55906e0d0 100644 --- a/po/underlays/directives/ikiwiki/directive/toc.de.po +++ b/po/underlays/directives/ikiwiki/directive/toc.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/toggle.de.po b/po/underlays/directives/ikiwiki/directive/toggle.de.po index 6c316c5e4..5cb83aa8b 100644 --- a/po/underlays/directives/ikiwiki/directive/toggle.de.po +++ b/po/underlays/directives/ikiwiki/directive/toggle.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/toggleable.de.po b/po/underlays/directives/ikiwiki/directive/toggleable.de.po index db99bdb5a..03fe46ff3 100644 --- a/po/underlays/directives/ikiwiki/directive/toggleable.de.po +++ b/po/underlays/directives/ikiwiki/directive/toggleable.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/directives/ikiwiki/directive/version.de.po b/po/underlays/directives/ikiwiki/directive/version.de.po index eca114e4c..7080a1a43 100644 --- a/po/underlays/directives/ikiwiki/directive/version.de.po +++ b/po/underlays/directives/ikiwiki/directive/version.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text diff --git a/po/underlays/smiley/smileys.de.po b/po/underlays/smiley/smileys.de.po index 3da3037f9..35ae5b9ed 100644 --- a/po/underlays/smiley/smileys.de.po +++ b/po/underlays/smiley/smileys.de.po @@ -10,7 +10,7 @@ msgstr "" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. type: Plain text -- cgit v1.2.3 From 823ec815d4fc9625d6fa3553ad03e9f2ff737659 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 14 Mar 2010 14:58:13 -0400 Subject: Add a include setting, which can be used to make ikiwiki process wiki source files, such as .htaccess, that would normally be skipped for security or other reasons. Closes: #447267 (Thanks to Aaron Wilson for the original patch.) --- IkiWiki.pm | 13 +++++++++++++ debian/changelog | 4 ++++ doc/tips/htaccess_file.mdwn | 30 ++++++++++++++++++++++++++++++ doc/todo/enable-htaccess-files.mdwn | 5 +++++ doc/usage.mdwn | 6 ++++++ ikiwiki.in | 3 +++ 6 files changed, 61 insertions(+) create mode 100644 doc/tips/htaccess_file.mdwn diff --git a/IkiWiki.pm b/IkiWiki.pm index 251ed8cc8..ee94ce659 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -334,6 +334,15 @@ sub getsetup () { safe => 0, # paranoia rebuild => 0, }, + include => { + type => "string", + default => undef, + example => '^\.htaccess$', + description => "regexp of normally ignored source files to include", + advanced => 1, + safe => 0, # regexp + rebuild => 1, + }, exclude => { type => "string", default => undef, @@ -1820,6 +1829,10 @@ sub file_pruned ($;$) { $file =~ s#^\Q$base\E/+##; } + if (defined $config{include} && length $config{include}) { + return 0 if $file =~ m/$config{include}/; + } + my $regexp='('.join('|', @{$config{wiki_file_prune_regexps}}).')'; return $file =~ m/$regexp/; } diff --git a/debian/changelog b/debian/changelog index 92afe661f..e5347e2a1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,10 @@ ikiwiki (3.20100313) UNRELEASED; urgency=low as used by yahoo and google urls. * Add complete German basewiki and directives translation done by Sebastian Kuhnert. + * Add a include setting, which can be used to make ikiwiki process + wiki source files, such as .htaccess, that would normally be skipped + for security or other reasons. Closes: #447267 + (Thanks to Aaron Wilson for the original patch.) -- Joey Hess Sat, 13 Mar 2010 14:48:10 -0500 diff --git a/doc/tips/htaccess_file.mdwn b/doc/tips/htaccess_file.mdwn new file mode 100644 index 000000000..5266eba41 --- /dev/null +++ b/doc/tips/htaccess_file.mdwn @@ -0,0 +1,30 @@ +If you try to include a `.htaccess` file in your wiki's source, in order to +configure the web server, you'll find that ikiwiki excludes it from +processing. In fact, ikiwiki excludes any file starting with a dot, as well +as a lot of other files, for good security reasons. + +You can tell ikiwiki not to exclude the .htaccess file by adding this to +your setup file: + + include => '^\.htaccess$', + +Caution! Before you do that, please think for a minute about who can edit +your wiki. Are attachment uploads enabled? Can users commit changes +directly to the version control system? Do you trust everyone who can +make a change to not do Bad Things with the htaccess file? Do you trust +everyone who *might* be able to make a change in the future? Note that a +determined attacker who can write to the htaccess file can probably get a +shell on your web server. + +If any of these questions have given you pause, I suggest you find a +different way to configure the web server. One way is to not put the +`.htaccess` file under ikiwiki's control, and just manually install it +in the destdir. + +[Apache's documentation](http://httpd.apache.org/docs/1.3/howto/htaccess.html) +says +> In general, you should never use .htaccess files unless you don't have +> access to the main server configuration file. +This is good advice -- if you can edit apache's main configuration files, +then you should not use a htaccess file. +--[[Joey]] diff --git a/doc/todo/enable-htaccess-files.mdwn b/doc/todo/enable-htaccess-files.mdwn index 412cb5eba..c895db75d 100644 --- a/doc/todo/enable-htaccess-files.mdwn +++ b/doc/todo/enable-htaccess-files.mdwn @@ -61,3 +61,8 @@ It should be off by default of course. --Max +1 for various purposes (but sometimes the filename isn't `.htaccess`, so please make it configurable) --[[schmonz]] > I've described a workaround for one use case at the [[plugins/rsync]] [[plugins/rsync/discussion]] page. --[[schmonz]] + +--- + +[[done]], you can use the `include` setting to override the default +excludes now. Please use extreme caution when doing so. --[[Joey]] diff --git a/doc/usage.mdwn b/doc/usage.mdwn index a105d7e59..f735170f0 100644 --- a/doc/usage.mdwn +++ b/doc/usage.mdwn @@ -234,6 +234,12 @@ also be configured using a setup file. Specifies a rexexp of source files to exclude from processing. May be specified multiple times to add to exclude list. +* --include regexp + + Specifies a rexexp of source files, that would normally be excluded, + but that you wish to include in processing. + May be specified multiple times to add to include list. + * --adminuser name Specifies a username of a user (or, if openid is enabled, an openid) diff --git a/ikiwiki.in b/ikiwiki.in index ae1251ff6..da5555629 100755 --- a/ikiwiki.in +++ b/ikiwiki.in @@ -65,6 +65,9 @@ sub getconfig () { "exclude=s@" => sub { push @{$config{wiki_file_prune_regexps}}, $_[1]; }, + "include=s@" => sub { + $config{include}=defined $config{include} && length $config{include} ? "$config{include}|$_[1]" : $_[1]; + }, "adminuser=s@" => sub { push @{$config{adminuser}}, $_[1] }, -- cgit v1.2.3 From a5ee40104481ba06eaaf277ed2f6c363dd326608 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 14 Mar 2010 15:08:41 -0400 Subject: note that the patch on this page is complely broken, and allows any file starting with a dot to be included If you applied that patch to your site, you should remove it right away! --- doc/todo/enable-htaccess-files.mdwn | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/todo/enable-htaccess-files.mdwn b/doc/todo/enable-htaccess-files.mdwn index c895db75d..c08502bdd 100644 --- a/doc/todo/enable-htaccess-files.mdwn +++ b/doc/todo/enable-htaccess-files.mdwn @@ -12,6 +12,13 @@ qr/(^|\/).svn\//, qr/.arch-ids\//, qr/{arch}\//], wiki_link_regexp => qr/\[\[(?:([^\]\|]+)\|)?([^\s\]#]+)(?:#([^\s\]]+))?\]\]/, +> Note that the above patch is **completely broken**. +> It removes the crucial excludes of all files starting with a dot. +> The negative regexps for htaccess have no effect, so the whole +> thing only "works" because it allows *any* file starting with a dot. +> If you applied this patch to your ikiwiki, you opened a huge security +> hole. --[[Joey]] + [[!tag patch patch/core]] This lets the site administrator have a `.htaccess` file in their underlay -- cgit v1.2.3 From 223b8efab0a55075bd53d03fe3cb2df07f13d9c1 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 14 Mar 2010 15:12:59 -0400 Subject: update --- doc/todo/enable-htaccess-files.mdwn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/todo/enable-htaccess-files.mdwn b/doc/todo/enable-htaccess-files.mdwn index c08502bdd..3b9721d50 100644 --- a/doc/todo/enable-htaccess-files.mdwn +++ b/doc/todo/enable-htaccess-files.mdwn @@ -64,6 +64,11 @@ It should be off by default of course. --Max --- +1 I want `.htaccess` so I can rewrite some old Wordpress URLs to make feeds work again. --[[hendry]] +> Unless you cannot modify apache's configuration, you do not need htaccess +> to do that. Apache's documentation recommends against using htaccess +> unless you're a user who cannot modify the main server configuration. +> --[[Joey]] + --- +1 for various purposes (but sometimes the filename isn't `.htaccess`, so please make it configurable) --[[schmonz]] -- cgit v1.2.3 From a5ded6437dc8170fafe170b758c54a44912cb7a8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 14 Mar 2010 15:21:42 -0400 Subject: slight optimisation to file_pruned Precompile the regexp, rather than rebuilding on every call. --- IkiWiki.pm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index ee94ce659..1c2ddbd91 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1819,6 +1819,7 @@ sub deptype (@) { return $deptype; } +my $file_prune_regexp; sub file_pruned ($;$) { my $file=shift; if (@_) { @@ -1833,8 +1834,11 @@ sub file_pruned ($;$) { return 0 if $file =~ m/$config{include}/; } - my $regexp='('.join('|', @{$config{wiki_file_prune_regexps}}).')'; - return $file =~ m/$regexp/; + if (! defined $file_prune_regexp) { + $file_prune_regexp='('.join('|', @{$config{wiki_file_prune_regexps}}).')'; + $file_prune_regexp=qr/$file_prune_regexp/; + } + return $file =~ m/$file_prune_regexp/; } sub define_gettext () { -- cgit v1.2.3 From 87a36bbb467c22ebb68a6e9999f0ded2b017e5df Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 14 Mar 2010 15:22:45 -0400 Subject: update --- t/file_pruned.t | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/t/file_pruned.t b/t/file_pruned.t index 00542d580..f9c1c257e 100755 --- a/t/file_pruned.t +++ b/t/file_pruned.t @@ -1,12 +1,13 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 26; +use Test::More tests => 27; BEGIN { use_ok("IkiWiki"); } %config=IkiWiki::defaultconfig(); +ok(IkiWiki::file_pruned("src/.htaccess", "src")); ok(IkiWiki::file_pruned("src/.ikiwiki/", "src")); ok(IkiWiki::file_pruned("src/.ikiwiki/index", "src")); ok(IkiWiki::file_pruned("src/CVS/foo", "src")); -- cgit v1.2.3 From ceadd862930411fed21eab16c428227fdcdc10ba Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 14 Mar 2010 15:26:24 -0400 Subject: update --- doc/tips/htaccess_file.mdwn | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/doc/tips/htaccess_file.mdwn b/doc/tips/htaccess_file.mdwn index 5266eba41..7b4b0901a 100644 --- a/doc/tips/htaccess_file.mdwn +++ b/doc/tips/htaccess_file.mdwn @@ -22,9 +22,7 @@ different way to configure the web server. One way is to not put the in the destdir. [Apache's documentation](http://httpd.apache.org/docs/1.3/howto/htaccess.html) -says +says: > In general, you should never use .htaccess files unless you don't have > access to the main server configuration file. -This is good advice -- if you can edit apache's main configuration files, -then you should not use a htaccess file. --[[Joey]] -- cgit v1.2.3 From d958e96b01ca459055b2c34f140f7c6ec7168f92 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 14 Mar 2010 15:28:50 -0400 Subject: update --- doc/tips/htaccess_file.mdwn | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/tips/htaccess_file.mdwn b/doc/tips/htaccess_file.mdwn index 7b4b0901a..0c1b0f2f7 100644 --- a/doc/tips/htaccess_file.mdwn +++ b/doc/tips/htaccess_file.mdwn @@ -19,10 +19,9 @@ shell on your web server. If any of these questions have given you pause, I suggest you find a different way to configure the web server. One way is to not put the `.htaccess` file under ikiwiki's control, and just manually install it -in the destdir. +in the destdir. --[[Joey]] [Apache's documentation](http://httpd.apache.org/docs/1.3/howto/htaccess.html) says: > In general, you should never use .htaccess files unless you don't have > access to the main server configuration file. ---[[Joey]] -- cgit v1.2.3 From aa36cd66baeca85ca4bca1c35c43b7a01c8a5cf7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 14 Mar 2010 15:30:18 -0400 Subject: update --- doc/tips/htaccess_file.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/tips/htaccess_file.mdwn b/doc/tips/htaccess_file.mdwn index 0c1b0f2f7..6964cf24e 100644 --- a/doc/tips/htaccess_file.mdwn +++ b/doc/tips/htaccess_file.mdwn @@ -21,7 +21,7 @@ different way to configure the web server. One way is to not put the `.htaccess` file under ikiwiki's control, and just manually install it in the destdir. --[[Joey]] -[Apache's documentation](http://httpd.apache.org/docs/1.3/howto/htaccess.html) +[Apache's documentation](http://httpd.apache.org/docs/2.2/howto/htaccess.html) says: > In general, you should never use .htaccess files unless you don't have > access to the main server configuration file. -- cgit v1.2.3 From 4cff2b62332fc4e62ae64937567f84658055bce3 Mon Sep 17 00:00:00 2001 From: tschwinge Date: Mon, 15 Mar 2010 08:55:37 +0000 Subject: No more Discussion Pages of Discussion Pages of... --- doc/users/tschwinge.mdwn | 6 ------ 1 file changed, 6 deletions(-) diff --git a/doc/users/tschwinge.mdwn b/doc/users/tschwinge.mdwn index 20d8d16a8..414612aff 100644 --- a/doc/users/tschwinge.mdwn +++ b/doc/users/tschwinge.mdwn @@ -99,12 +99,6 @@ page that uses \[[!meta redir]]. ## [[bugs/Broken Parentlinks]] -## Discussion Pages of Discussion Pages of... - -Is it useful to have Discussion pages of Discussion pages (etc.)? -- On -, -this possibility is offered. - ## Modifying [[plugins/inline]] for showing only an *appetizer* Currently ikiwiki's inline plugin will either show the full page or nothing of -- cgit v1.2.3 From c4e46dfeba11aee2feec7475970cfdb7591c1943 Mon Sep 17 00:00:00 2001 From: moy Date: Tue, 16 Mar 2010 08:57:27 +0000 Subject: Removed pop --- doc/sandbox.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 1a1b128e6..aef928d8e 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -77,4 +77,4 @@ bar Hmm, can I dig it? Test -pop + -- cgit v1.2.3 From 0f433ed01c58978ba6d7845d5aaebb1ec8cefc9e Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Wed, 17 Mar 2010 00:42:38 +0000 Subject: link to highlight --- doc/plugins/contrib/highlightcode.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/plugins/contrib/highlightcode.mdwn b/doc/plugins/contrib/highlightcode.mdwn index 8abb76583..f1df204bb 100644 --- a/doc/plugins/contrib/highlightcode.mdwn +++ b/doc/plugins/contrib/highlightcode.mdwn @@ -1,6 +1,8 @@ [[!template id=plugin name=highlightcode author="[[sabr]]"]] [[!tag type/format]] +(An alternative to this plugin, [[plugins/highlight]], is now provided with IkiWiki. --[[smcv]]) + A small plugin to allow Ikiwiki to display source files complete with syntax highlighting. Files with recognized extensions (i.e. my-file.cpp) are be rendered just like any other Ikiwiki page. You can even edit your source files with Ikiwiki's editor. It uses the Syntax::Highlight::Engine::Kate Perl module to do the highlighting. -- cgit v1.2.3 From 4054f8d8ce0802b43e1c2c6f9cb71badbbcaf919 Mon Sep 17 00:00:00 2001 From: kierun Date: Wed, 17 Mar 2010 09:14:46 +0000 Subject: --- doc/todo/ACL.mdwn | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/todo/ACL.mdwn b/doc/todo/ACL.mdwn index d40701d60..57979385d 100644 --- a/doc/todo/ACL.mdwn +++ b/doc/todo/ACL.mdwn @@ -76,3 +76,12 @@ Any idea when this is going to be finished? If you want, I am happy to beta tes > Example of use to only allow two users to edit the tipjar page: > locked_pages => 'tipjar and !(user(joey) or user(bob))', > --[[Joey]] + +> > Thank you for the hint but I am being still confused (read: dense)... What I am trying to do is this: + +> > * No anonymous access. +> > * Logged in users can edit and create pages. +> > * Users can set who can edit their pages. +> > * Some pages are only viewable by admins. + +> > Is it possible? If so how?... -- cgit v1.2.3 From cbc5fcff6182e620578fff619ae021eb5b30024c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 17 Mar 2010 23:21:35 -0400 Subject: set exclude example to match *.private and improve its description --- IkiWiki.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 1c2ddbd91..a782e463a 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -338,7 +338,7 @@ sub getsetup () { type => "string", default => undef, example => '^\.htaccess$', - description => "regexp of normally ignored source files to include", + description => "regexp of normally excluded files to include", advanced => 1, safe => 0, # regexp rebuild => 1, @@ -346,8 +346,8 @@ sub getsetup () { exclude => { type => "string", default => undef, - example => '\.wav$', - description => "regexp of source files to ignore", + example => '^*\.private$', + description => "regexp of files that should be skipped", advanced => 1, safe => 0, # regexp rebuild => 1, -- cgit v1.2.3 From 60b71996da47b4ce8e065443de362e9dbca47ce9 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 17 Mar 2010 23:24:31 -0400 Subject: add Makefile to exclude example --- IkiWiki.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index a782e463a..a618836cf 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -346,7 +346,7 @@ sub getsetup () { exclude => { type => "string", default => undef, - example => '^*\.private$', + example => '^(*\.private|Makefile)$', description => "regexp of files that should be skipped", advanced => 1, safe => 0, # regexp -- cgit v1.2.3 From a78212be3364887b5ff9f9902cfb65eb211b269b Mon Sep 17 00:00:00 2001 From: nil Date: Thu, 18 Mar 2010 07:21:09 +0000 Subject: --- .../post-update_hook_can__39__t_be_compiled_with_tcc.mdwn | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 doc/bugs/post-update_hook_can__39__t_be_compiled_with_tcc.mdwn diff --git a/doc/bugs/post-update_hook_can__39__t_be_compiled_with_tcc.mdwn b/doc/bugs/post-update_hook_can__39__t_be_compiled_with_tcc.mdwn new file mode 100644 index 000000000..1594036dc --- /dev/null +++ b/doc/bugs/post-update_hook_can__39__t_be_compiled_with_tcc.mdwn @@ -0,0 +1,14 @@ +Thinking that any c compiler would do the job, I tried to use tcc with ikiwiki, as explicitely allowed by the Debian package dependencies. + +I installed `tcc` and `libc6-dev` (for `libcrt1`). The wrapper compilation was OK, but the wrapper fails to run correctly and dies with + + usage: ikiwiki [options] source dest + ikiwiki --setup configfile + +Everything works fine with gcc. + +versions: Debian etch+backports + + + + -- cgit v1.2.3 From 7b7d1cfcb75451bf9f8fc7efb3814c47deef0059 Mon Sep 17 00:00:00 2001 From: nil Date: Thu, 18 Mar 2010 07:56:15 +0000 Subject: distro confusion --- doc/bugs/post-update_hook_can__39__t_be_compiled_with_tcc.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/bugs/post-update_hook_can__39__t_be_compiled_with_tcc.mdwn b/doc/bugs/post-update_hook_can__39__t_be_compiled_with_tcc.mdwn index 1594036dc..4226c026a 100644 --- a/doc/bugs/post-update_hook_can__39__t_be_compiled_with_tcc.mdwn +++ b/doc/bugs/post-update_hook_can__39__t_be_compiled_with_tcc.mdwn @@ -7,7 +7,7 @@ I installed `tcc` and `libc6-dev` (for `libcrt1`). The wrapper compilation was O Everything works fine with gcc. -versions: Debian etch+backports +versions: Debian lenny + backports -- cgit v1.2.3 From 73c2551dd482b29e65b697376708a25ad8e85fbb Mon Sep 17 00:00:00 2001 From: p4f Date: Thu, 18 Mar 2010 12:03:34 +0000 Subject: --- doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn diff --git a/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn b/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn new file mode 100644 index 000000000..9f3f0cddd --- /dev/null +++ b/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn @@ -0,0 +1,9 @@ +Hi all! +I really like ikiwiki and i tested it on my local machine but i have one question that i can't answer reading documentation (my fault of course)... +I have an account and some space on a free hosting service. +Now, i want to put my ikiwiki on this remote web space so that i can browse it from wherever i want. +I have my source dir and my git dir on my local machine. +How can i upload my ikiwiki on the remote host and manage it via git as i can do when i test it locally? +Where is specified? Where can i find documentation about it? + +Thanks in advance! -- cgit v1.2.3 From a02a06cb9dc0a82dd4028c9f4b506dcf899c9a41 Mon Sep 17 00:00:00 2001 From: p4f Date: Thu, 18 Mar 2010 12:05:33 +0000 Subject: --- doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn b/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn index 9f3f0cddd..862694d4b 100644 --- a/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn +++ b/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn @@ -6,4 +6,6 @@ I have my source dir and my git dir on my local machine. How can i upload my ikiwiki on the remote host and manage it via git as i can do when i test it locally? Where is specified? Where can i find documentation about it? -Thanks in advance! +Thanks in advance! + +Pab -- cgit v1.2.3 From ea07442e7ac6ef80cd98625b32f66bafc6af26b5 Mon Sep 17 00:00:00 2001 From: Jon Dowland Date: Thu, 18 Mar 2010 15:21:38 +0000 Subject: comment --- doc/todo/ACL.mdwn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/todo/ACL.mdwn b/doc/todo/ACL.mdwn index 57979385d..c1f5d86f0 100644 --- a/doc/todo/ACL.mdwn +++ b/doc/todo/ACL.mdwn @@ -21,6 +21,11 @@ something, that I think is very valuable. >>>> Which would rule out openid, or other fun forms of auth. And routing all access >>>> through the CGI sort of defeats the purpose of ikiwiki. --[[Ethan]] +>>>>> I think what Joey is suggesting is to use apache ACLs in conjunction +>>>>> with basic HTTP auth to control read access, and ikiwiki can use the +>>>>> information via the httpauth plugin for other ACLs (write, admin). But +>>>>> yes, that would rule out non-httpauth mechanisms. -- [[Jon]] + Also see [[!debbug 443346]]. > Just a few quick thoughts about this: -- cgit v1.2.3 From 760c315589dc0e3fa0ba5380113f4e86a989a7d9 Mon Sep 17 00:00:00 2001 From: Jon Dowland Date: Thu, 18 Mar 2010 15:23:18 +0000 Subject: comment --- doc/todo/ACL.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/todo/ACL.mdwn b/doc/todo/ACL.mdwn index c1f5d86f0..cac6c9f18 100644 --- a/doc/todo/ACL.mdwn +++ b/doc/todo/ACL.mdwn @@ -90,3 +90,6 @@ Any idea when this is going to be finished? If you want, I am happy to beta tes > > * Some pages are only viewable by admins. > > Is it possible? If so how?... + +>>> I don't believe this is currently possible. What is missing is the concept +>>> of page 'ownership'. -- [[Jon]] -- cgit v1.2.3 From fed7383903c402d68ff2fc2d3734c55b35d520a4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 18 Mar 2010 13:37:35 -0400 Subject: update --- doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn b/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn index 862694d4b..0b370473e 100644 --- a/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn +++ b/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn @@ -9,3 +9,18 @@ Where is specified? Where can i find documentation about it? Thanks in advance! Pab + +> There are several ways to accomplish this, depending on what you really +> want to do. +> +> If your goal is to continue generating the site locally, but then +> transfer it to the remote host for serving, you could use the +> [[plugins/rsync]] plugin. +> +> If your goal is to install and run the ikiwiki software on the remote host, +> then you would follow a similar path to the ones described in these tips: +> [[tips/nearlyfreespeech]] [[tips/DreamHost]]. Or even [[install]] ikiwiki +> from a regular package if you have that kind of access. Then you could +> push changes from your local git to git on the remote host to update the +> wiki. [[tips/Laptop_wiki_with_git]] explains one way to do that. +> --[[Joey]] -- cgit v1.2.3 From b4ab74e722aaca406922fe614d9e6541dd87c3bf Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 18 Mar 2010 17:35:59 -0400 Subject: C warning cleanup --- IkiWiki/Wrapper.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm index 5427a5c80..830b04877 100644 --- a/IkiWiki/Wrapper.pm +++ b/IkiWiki/Wrapper.pm @@ -76,8 +76,8 @@ EOF { int fd=open("$config{wikistatedir}/cgilock", O_CREAT | O_RDWR, 0666); if (fd != -1 && flock(fd, LOCK_EX) == 0) { - char *fd_s; - asprintf(&fd_s, "%i", fd); + char *fd_s=malloc(8); + sprintf(fd_s, "%i", fd); setenv("IKIWIKI_CGILOCK_FD", fd_s, 1); } } @@ -105,7 +105,7 @@ extern char **environ; char *newenviron[$#envsave+6]; int i=0; -addenv(char *var, char *val) { +void addenv(char *var, char *val) { char *s=malloc(strlen(var)+1+strlen(val)+1); if (!s) perror("malloc"); -- cgit v1.2.3 From dddd6aa99055d8505f73e39b12f049633d9cb4c3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 18 Mar 2010 17:44:46 -0400 Subject: Allow wrappers to be built using tcc. --- IkiWiki/Wrapper.pm | 10 +++++++--- debian/changelog | 1 + .../post-update_hook_can__39__t_be_compiled_with_tcc.mdwn | 11 ++++++++--- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm index 830b04877..f175b4a0b 100644 --- a/IkiWiki/Wrapper.pm +++ b/IkiWiki/Wrapper.pm @@ -101,7 +101,6 @@ EOF #include #include -extern char **environ; char *newenviron[$#envsave+6]; int i=0; @@ -121,8 +120,13 @@ $check_commit_hook $envsave newenviron[i++]="HOME=$ENV{HOME}"; newenviron[i++]="WRAPPED_OPTIONS=$configstring"; - newenviron[i]=NULL; - environ=newenviron; + + if (clearenv() != 0) { + perror("clearenv"); + exit(1); + } + for (; i>0; i--) + putenv(newenviron[i-1]); if (setregid(getegid(), -1) != 0 && setregid(getegid(), -1) != 0) { diff --git a/debian/changelog b/debian/changelog index e5347e2a1..73f6fcff8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -12,6 +12,7 @@ ikiwiki (3.20100313) UNRELEASED; urgency=low wiki source files, such as .htaccess, that would normally be skipped for security or other reasons. Closes: #447267 (Thanks to Aaron Wilson for the original patch.) + * Allow wrappers to be built using tcc. -- Joey Hess Sat, 13 Mar 2010 14:48:10 -0500 diff --git a/doc/bugs/post-update_hook_can__39__t_be_compiled_with_tcc.mdwn b/doc/bugs/post-update_hook_can__39__t_be_compiled_with_tcc.mdwn index 4226c026a..a8fb19888 100644 --- a/doc/bugs/post-update_hook_can__39__t_be_compiled_with_tcc.mdwn +++ b/doc/bugs/post-update_hook_can__39__t_be_compiled_with_tcc.mdwn @@ -9,6 +9,11 @@ Everything works fine with gcc. versions: Debian lenny + backports - - - +> Seems that tcc does not respect changing where `environ` points as a way +> to change the environment seen after `exec` +> +> Given that the man page for `clearenv` suggests using `environ=NULL` +> if `clearenv` is not available, I would be lerry or using tcc to compile +> stuff, since that could easily lead to a security compromise of code that +> expects that to work. However, I have fixed ikiwiki to use `clearenv`. +> --[[Joey]] [[done]] -- cgit v1.2.3 From 9a6a28512025c91b7518d8c9b69678e124c44128 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Thu, 18 Mar 2010 22:33:18 +0000 Subject: corrected the update-the-laptop-from-the-server section --- doc/tips/laptop_wiki_with_git.mdwn | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/tips/laptop_wiki_with_git.mdwn b/doc/tips/laptop_wiki_with_git.mdwn index 85e26c729..857083325 100644 --- a/doc/tips/laptop_wiki_with_git.mdwn +++ b/doc/tips/laptop_wiki_with_git.mdwn @@ -68,5 +68,12 @@ used by the ikiwiki CGI, and another which you can use for updating via git). When you want to update the server from the laptop, do a `git push` from -within the laptop's bare repository, and likewise do a `git pull` to update -the laptop from the server. +within the laptop's bare repository. + +To update the laptop from the server, add a section for the laptop to the config file of the server's bare repository: + + [remote "laptop"] + fetch = +refs/*:refs/* + url = me@laptop:/path/to/bare/repository + +Then do a `git push laptop` from within the server's bare repository. -- cgit v1.2.3 From deb3cd8c490f1a6b615366beaa1b5d736f825c59 Mon Sep 17 00:00:00 2001 From: haho Date: Thu, 18 Mar 2010 23:39:42 +0000 Subject: --- doc/sandbox.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index aef928d8e..8a6780741 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -77,4 +77,5 @@ bar Hmm, can I dig it? Test +test2 -- cgit v1.2.3 From fe86a91ffe4e26d59e1e64ae8a00285d1bf09d4a Mon Sep 17 00:00:00 2001 From: haho Date: Thu, 18 Mar 2010 23:43:04 +0000 Subject: --- doc/sandbox.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 8a6780741..8cba8973f 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -3,7 +3,7 @@ This is the [[SandBox]], a page anyone can edit to try out ikiwiki (version [[!v # Header -## Subheader +## Subheader2 > This is a blockquote. > -- cgit v1.2.3 From 4f4e09f925344940876c2e62de1e89e55ea1650e Mon Sep 17 00:00:00 2001 From: p4f Date: Fri, 19 Mar 2010 00:56:27 +0000 Subject: --- doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn b/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn index 0b370473e..036fe0d44 100644 --- a/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn +++ b/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn @@ -24,3 +24,9 @@ Pab > push changes from your local git to git on the remote host to update the > wiki. [[tips/Laptop_wiki_with_git]] explains one way to do that. > --[[Joey]] + +Thanks a lot for your answer. +rsync plugin would be perfect but... how would i manage blog post? +I mean... is it possible to manage ikiwiki blog too with rsync plugin in the way you told me? + +Pab -- cgit v1.2.3 From f54b5f583dfcb1f908b33d1687782ce8a2bfb30d Mon Sep 17 00:00:00 2001 From: p4f Date: Fri, 19 Mar 2010 00:57:03 +0000 Subject: --- doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn b/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn index 036fe0d44..5dcd01619 100644 --- a/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn +++ b/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn @@ -27,6 +27,4 @@ Pab Thanks a lot for your answer. rsync plugin would be perfect but... how would i manage blog post? -I mean... is it possible to manage ikiwiki blog too with rsync plugin in the way you told me? - -Pab +I mean... is it possible to manage ikiwiki blog too with rsync plugin in the way you told me? --Pab -- cgit v1.2.3 From 2c310f8349182ca155a8cad1d8454f9937e87527 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Fri, 19 Mar 2010 01:09:44 +0000 Subject: comment about comments --- doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn b/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn index 5dcd01619..473b06b39 100644 --- a/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn +++ b/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn @@ -28,3 +28,5 @@ Pab Thanks a lot for your answer. rsync plugin would be perfect but... how would i manage blog post? I mean... is it possible to manage ikiwiki blog too with rsync plugin in the way you told me? --Pab + +> If you want to allow people to make comments on your blog, no, the rsync plugin will not help, since it will upload a completely static site where nobody can make comments. Comments require a full IkiWiki setup with CGI enabled, so that people add content (comments) from the web. --[[KathrynAndersen]] -- cgit v1.2.3 From eef4768d2d277925b42de8efda576b00cf64bee8 Mon Sep 17 00:00:00 2001 From: p4f Date: Fri, 19 Mar 2010 07:57:40 +0000 Subject: --- doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn b/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn index 473b06b39..1c0f8f561 100644 --- a/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn +++ b/doc/forum/how_to_setup_ikiwiki_on_a_remote_host.mdwn @@ -30,3 +30,6 @@ rsync plugin would be perfect but... how would i manage blog post? I mean... is it possible to manage ikiwiki blog too with rsync plugin in the way you told me? --Pab > If you want to allow people to make comments on your blog, no, the rsync plugin will not help, since it will upload a completely static site where nobody can make comments. Comments require a full IkiWiki setup with CGI enabled, so that people add content (comments) from the web. --[[KathrynAndersen]] + +Ok, i understand, thanks. +Is there any hosting service that permits to have a full installation of iwkiwiki or i am forced to get a vps or to mantain a personal server for that? --Pab -- cgit v1.2.3 From 96a54b35fe2cdcdc1450b5d38c80e7b27b428c14 Mon Sep 17 00:00:00 2001 From: kierun Date: Fri, 19 Mar 2010 15:45:26 +0000 Subject: --- doc/todo/ACL.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/todo/ACL.mdwn b/doc/todo/ACL.mdwn index cac6c9f18..dd9793233 100644 --- a/doc/todo/ACL.mdwn +++ b/doc/todo/ACL.mdwn @@ -93,3 +93,6 @@ Any idea when this is going to be finished? If you want, I am happy to beta tes >>> I don't believe this is currently possible. What is missing is the concept >>> of page 'ownership'. -- [[Jon]] + +>>>> GAH! That is really a shame... Any chance of adding that? No, I do not really expect it to be added, after all my requirements are pushing the boundary of what a wikiwiki + should be. Nonetheless, thanks for your help! -- cgit v1.2.3 From cbf269eee29a66e1350e5553f38eee5b4683be8a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Mar 2010 13:10:17 -0400 Subject: audited use POSIX The POSIX perl module exports a huge number of functions by default, so make sure all imports are qualified. (And remove one that was not necessary.) --- IkiWiki.pm | 2 +- IkiWiki/Plugin/calendar.pm | 2 +- IkiWiki/Plugin/relativedate.pm | 2 +- IkiWiki/Plugin/wmd.pm | 1 - 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index a618836cf..6e333504e 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -7,7 +7,7 @@ use strict; use Encode; use HTML::Entities; use URI::Escape q{uri_escape_utf8}; -use POSIX; +use POSIX (); use Storable; use open qw{:utf8 :std}; diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm index aaee2c610..ff84bc440 100644 --- a/IkiWiki/Plugin/calendar.pm +++ b/IkiWiki/Plugin/calendar.pm @@ -22,7 +22,7 @@ use warnings; use strict; use IkiWiki 3.00; use Time::Local; -use POSIX; +use POSIX (); my $time=time; my @now=localtime($time); diff --git a/IkiWiki/Plugin/relativedate.pm b/IkiWiki/Plugin/relativedate.pm index 06df2efd5..7f006af83 100644 --- a/IkiWiki/Plugin/relativedate.pm +++ b/IkiWiki/Plugin/relativedate.pm @@ -5,7 +5,7 @@ use warnings; no warnings 'redefine'; use strict; use IkiWiki 3.00; -use POSIX; +use POSIX (); use Encode; sub import { diff --git a/IkiWiki/Plugin/wmd.pm b/IkiWiki/Plugin/wmd.pm index 5361d2914..99b136281 100644 --- a/IkiWiki/Plugin/wmd.pm +++ b/IkiWiki/Plugin/wmd.pm @@ -4,7 +4,6 @@ package IkiWiki::Plugin::wmd; use warnings; use strict; use IkiWiki 3.00; -use POSIX; use Encode; sub import { -- cgit v1.2.3 From af83b4c5f576633c03c157a67994af6bfaff617a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Mar 2010 13:40:02 -0400 Subject: Revert "corrected the update-the-laptop-from-the-server section" No, we don't normally push from servers to laptops. Because most laptops do not have publicly accessible IP addresses, for one thing. Also because there's really no reason to ssh to the server from your laptop in order to update the laptop when you can just pull. --- doc/tips/laptop_wiki_with_git.mdwn | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/doc/tips/laptop_wiki_with_git.mdwn b/doc/tips/laptop_wiki_with_git.mdwn index 857083325..85e26c729 100644 --- a/doc/tips/laptop_wiki_with_git.mdwn +++ b/doc/tips/laptop_wiki_with_git.mdwn @@ -68,12 +68,5 @@ used by the ikiwiki CGI, and another which you can use for updating via git). When you want to update the server from the laptop, do a `git push` from -within the laptop's bare repository. - -To update the laptop from the server, add a section for the laptop to the config file of the server's bare repository: - - [remote "laptop"] - fetch = +refs/*:refs/* - url = me@laptop:/path/to/bare/repository - -Then do a `git push laptop` from within the server's bare repository. +within the laptop's bare repository, and likewise do a `git pull` to update +the laptop from the server. -- cgit v1.2.3 From 6dc6fe2f9bc6bcd532291c703a637d24dfe58956 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Mar 2010 13:45:43 -0400 Subject: fix apparently confusing wording --- doc/tips/laptop_wiki_with_git.mdwn | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/tips/laptop_wiki_with_git.mdwn b/doc/tips/laptop_wiki_with_git.mdwn index 85e26c729..cfa565d1a 100644 --- a/doc/tips/laptop_wiki_with_git.mdwn +++ b/doc/tips/laptop_wiki_with_git.mdwn @@ -67,6 +67,5 @@ as many times as you want (thus being able to have a repository which is used by the ikiwiki CGI, and another which you can use for updating via git). -When you want to update the server from the laptop, do a `git push` from -within the laptop's bare repository, and likewise do a `git pull` to update -the laptop from the server. +Use standard git commands, run in the laptop's bare git repository +to handle pulling from and pushing to the server. -- cgit v1.2.3 From b1dade8d960ce7ccb549e5652d35a8e9dbccf5c6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Mar 2010 14:52:17 -0400 Subject: allow multiple setup file types, and support safe parsing Finally removed the last hardcoding of IkiWiki::Setup::Standard. Take the first "IkiWiki::Setup::*" in the setup file to define the setuptype, and remember that type to use in dumping later. (But it can be overridden using --set, etc.) Also, support setup file types that are not evaled. --- IkiWiki.pm | 7 +++++++ IkiWiki/Setup.pm | 40 +++++++++++++++++++++++++++++----------- IkiWiki/Setup/Standard.pm | 4 +++- 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 6e333504e..241fb45b7 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -467,6 +467,13 @@ sub getsetup () { safe => 0, rebuild => 0, }, + setuptype => { + type => "internal", + default => "IkiWiki::Setup::Standard", + description => "perl class to use to dump setup file", + safe => 0, + rebuild => 0, + }, allow_symlinks_before_srcdir => { type => "boolean", default => 0, diff --git a/IkiWiki/Setup.pm b/IkiWiki/Setup.pm index a3fd5ce66..3accf3591 100644 --- a/IkiWiki/Setup.pm +++ b/IkiWiki/Setup.pm @@ -1,6 +1,8 @@ #!/usr/bin/perl -# Ikiwiki setup files are perl files that 'use IkiWiki::Setup::foo', -# passing it some sort of configuration data. +# Ikiwiki setup files can be perl files that 'use IkiWiki::Setup::foo', +# passing it some sort of configuration data. Or, they can contain +# the module name at the top, without the 'use', and the whole file is +# then fed into that module. package IkiWiki::Setup; @@ -10,24 +12,39 @@ use IkiWiki; use open qw{:utf8 :std}; use File::Spec; -sub load ($) { +sub load ($;$) { my $setup=IkiWiki::possibly_foolish_untaint(shift); + my $safemode=shift; + $config{setupfile}=File::Spec->rel2abs($setup); #translators: The first parameter is a filename, and the second #translators: is a (probably not translated) error message. open (IN, $setup) || error(sprintf(gettext("cannot read %s: %s"), $setup, $!)); - my $code; + my $content; { local $/=undef; - $code= || error("$setup: $!"); + $content= || error("$setup: $!"); } - - ($code)=$code=~/(.*)/s; close IN; - eval $code; - error("$setup: ".$@) if $@; + if ($content=~/(use\s+)?(IkiWiki::Setup::\w+)/) { + $config{setuptype}=$2; + if ($1) { + error sprintf(gettext("cannot load %s in safe mode"), $setup) + if $safemode; + eval IkiWiki::possibly_foolish_untaint($content); + error("$setup: ".$@) if $@; + } + else { + eval qq{require $config{setuptype}}; + error $@ if $@; + $config{setuptype}->loaddump(IkiWiki::possibly_foolish_untaint($content)); + } + } + else { + error sprintf(gettext("failed to parse %s"), $setup); + } } sub merge ($) { @@ -133,8 +150,9 @@ sub getsetup () { sub dump ($) { my $file=IkiWiki::possibly_foolish_untaint(shift); - require IkiWiki::Setup::Standard; - my @dump=IkiWiki::Setup::Standard::gendump("Setup file for ikiwiki."); + eval qq{require $config{setuptype}}; + error $@ if $@; + my @dump=$config{setuptype}->gendump("Setup file for ikiwiki."); open (OUT, ">", $file) || die "$file: $!"; print OUT "$_\n" foreach @dump; diff --git a/IkiWiki/Setup/Standard.pm b/IkiWiki/Setup/Standard.pm index f7a322317..4022ff03c 100644 --- a/IkiWiki/Setup/Standard.pm +++ b/IkiWiki/Setup/Standard.pm @@ -82,8 +82,10 @@ sub dumpvalues ($@) { return @ret; } -sub gendump ($) { +sub gendump ($$) { + my $class=shift; my $description=shift; + my %setup=(%config); my @ret; -- cgit v1.2.3 From 8a5084bc62d8f59320efc43fcd5e36bcc668374d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Mar 2010 15:09:08 -0400 Subject: whitespace --- IkiWiki/Plugin/darcs.pm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/IkiWiki/Plugin/darcs.pm b/IkiWiki/Plugin/darcs.pm index 1c9538e83..bc8394b90 100644 --- a/IkiWiki/Plugin/darcs.pm +++ b/IkiWiki/Plugin/darcs.pm @@ -51,7 +51,7 @@ sub darcs_info ($$$) { return $_; } -sub file_in_vc($$) { +sub file_in_vc ($$) { my $repodir = shift; my $file = shift; @@ -69,7 +69,7 @@ sub file_in_vc($$) { return $found; } -sub darcs_rev($) { +sub darcs_rev ($) { my $file = shift; # Relative to the repodir. my $repodir = $config{srcdir}; @@ -78,7 +78,7 @@ sub darcs_rev($) { return defined $hash ? $hash : ""; } -sub checkconfig() { +sub checkconfig () { if (defined $config{darcs_wrapper} && length $config{darcs_wrapper}) { push @{$config{wrappers}}, { wrapper => $config{darcs_wrapper}, @@ -87,7 +87,7 @@ sub checkconfig() { } } -sub getsetup() { +sub getsetup () { return plugin => { safe => 0, # rcs plugin @@ -238,7 +238,7 @@ sub rcs_commit ($$$;$$) { } } -sub rcs_commit_staged($$$) { +sub rcs_commit_staged ($$$) { my ($message, $user, $ipaddr) = @_; my $author; -- cgit v1.2.3 From 522daa7ea8111482701ce222800096edaf8eb2d2 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Mar 2010 15:27:15 -0400 Subject: factored out generic commented line dumping --- IkiWiki/Setup.pm | 94 +++++++++++++++++++++++++++++++++++++++-------- IkiWiki/Setup/Standard.pm | 94 +++++++++-------------------------------------- 2 files changed, 96 insertions(+), 92 deletions(-) diff --git a/IkiWiki/Setup.pm b/IkiWiki/Setup.pm index 3accf3591..369ff44d0 100644 --- a/IkiWiki/Setup.pm +++ b/IkiWiki/Setup.pm @@ -13,28 +13,28 @@ use open qw{:utf8 :std}; use File::Spec; sub load ($;$) { - my $setup=IkiWiki::possibly_foolish_untaint(shift); + my $file=IkiWiki::possibly_foolish_untaint(shift); my $safemode=shift; - $config{setupfile}=File::Spec->rel2abs($setup); + $config{setupfile}=File::Spec->rel2abs($file); #translators: The first parameter is a filename, and the second #translators: is a (probably not translated) error message. - open (IN, $setup) || error(sprintf(gettext("cannot read %s: %s"), $setup, $!)); + open (IN, $file) || error(sprintf(gettext("cannot read %s: %s"), $file, $!)); my $content; { local $/=undef; - $content= || error("$setup: $!"); + $content= || error("$file: $!"); } close IN; if ($content=~/(use\s+)?(IkiWiki::Setup::\w+)/) { $config{setuptype}=$2; if ($1) { - error sprintf(gettext("cannot load %s in safe mode"), $setup) + error sprintf(gettext("cannot load %s in safe mode"), $file) if $safemode; eval IkiWiki::possibly_foolish_untaint($content); - error("$setup: ".$@) if $@; + error("$file: ".$@) if $@; } else { eval qq{require $config{setuptype}}; @@ -43,10 +43,22 @@ sub load ($;$) { } } else { - error sprintf(gettext("failed to parse %s"), $setup); + error sprintf(gettext("failed to parse %s"), $file); } } +sub dump ($) { + my $file=IkiWiki::possibly_foolish_untaint(shift); + + eval qq{require $config{setuptype}}; + error $@ if $@; + my @dump=$config{setuptype}->gendump("Setup file for ikiwiki."); + + open (OUT, ">", $file) || die "$file: $!"; + print OUT "$_\n" foreach @dump; + close OUT; +} + sub merge ($) { # Merge setup into existing config and untaint. my %setup=%{shift()}; @@ -147,16 +159,68 @@ sub getsetup () { } keys %sections; } -sub dump ($) { - my $file=IkiWiki::possibly_foolish_untaint(shift); +sub commented_dump ($) { + my $dumpline=shift; + + my %setup=(%config); + my @ret; - eval qq{require $config{setuptype}}; - error $@ if $@; - my @dump=$config{setuptype}->gendump("Setup file for ikiwiki."); + # disable logging to syslog while dumping + $config{syslog}=undef; + + eval q{use Text::Wrap}; + die $@ if $@; + + my %section_plugins; + push @ret, commented_dumpvalues($dumpline, \%setup, IkiWiki::getsetup()); + foreach my $pair (IkiWiki::Setup::getsetup()) { + my $plugin=$pair->[0]; + my $setup=$pair->[1]; + my %s=@{$setup}; + my $section=$s{plugin}->{section}; + push @{$section_plugins{$section}}, $plugin; + if (@{$section_plugins{$section}} == 1) { + push @ret, "", "\t".("#" x 70), "\t# $section plugins", + sub { + wrap("\t# (", "\t# ", + join(", ", @{$section_plugins{$section}})).")" + }, + "\t".("#" x 70); + } - open (OUT, ">", $file) || die "$file: $!"; - print OUT "$_\n" foreach @dump; - close OUT; + my @values=commented_dumpvalues($dumpline, \%setup, @{$setup}); + if (@values) { + push @ret, "", "\t# $plugin plugin", @values; + } + } + + return map { ref $_ ? $_->() : $_ } @ret; +} + +sub commented_dumpvalues ($$@) { + my $dumpline=shift; + my $setup=shift; + my @ret; + while (@_) { + my $key=shift; + my %info=%{shift()}; + + next if $key eq "plugin" || $info{type} eq "internal"; + + push @ret, "\t# ".$info{description} if exists $info{description}; + + if (exists $setup->{$key} && defined $setup->{$key}) { + push @ret, $dumpline->($key, $setup->{$key}, $info{type}, ""); + delete $setup->{$key}; + } + elsif (exists $info{example}) { + push @ret, $dumpline->($key, $info{example}, $info{type}, "#"); + } + else { + push @ret, $dumpline->($key, "", $info{type}, "#"); + } + } + return @ret; } 1 diff --git a/IkiWiki/Setup/Standard.pm b/IkiWiki/Setup/Standard.pm index 4022ff03c..9c177e497 100644 --- a/IkiWiki/Setup/Standard.pm +++ b/IkiWiki/Setup/Standard.pm @@ -1,7 +1,6 @@ #!/usr/bin/perl # Standard ikiwiki setup module. -# Parameters to import should be all the standard ikiwiki config stuff, -# plus an array of wrappers to set up. +# Parameters to import should be all the standard ikiwiki config stuff. package IkiWiki::Setup::Standard; @@ -13,6 +12,22 @@ sub import { IkiWiki::Setup::merge($_[1]); } +sub gendump ($$) { + my $class=shift; + my $description=shift; + + "#!/usr/bin/perl", + "# $description", + "#", + "# Passing this to ikiwiki --setup will make ikiwiki generate", + "# wrappers and build the wiki.", + "#", + "# Remember to re-run ikiwiki --setup any time you edit this file.", + "use IkiWiki::Setup::Standard {", + IkiWiki::Setup::commented_dump(\&dumpline), + "}"; +} + sub dumpline ($$$$) { my $key=shift; my $value=shift; @@ -57,79 +72,4 @@ sub dumpline ($$$$) { return "\t$prefix$key => $dumpedvalue,"; } -sub dumpvalues ($@) { - my $setup=shift; - my @ret; - while (@_) { - my $key=shift; - my %info=%{shift()}; - - next if $key eq "plugin" || $info{type} eq "internal"; - - push @ret, "\t# ".$info{description} if exists $info{description}; - - if (exists $setup->{$key} && defined $setup->{$key}) { - push @ret, dumpline($key, $setup->{$key}, $info{type}, ""); - delete $setup->{$key}; - } - elsif (exists $info{example}) { - push @ret, dumpline($key, $info{example}, $info{type}, "#"); - } - else { - push @ret, dumpline($key, "", $info{type}, "#"); - } - } - return @ret; -} - -sub gendump ($$) { - my $class=shift; - my $description=shift; - - my %setup=(%config); - my @ret; - - # disable logging to syslog while dumping - $config{syslog}=undef; - - eval q{use Text::Wrap}; - die $@ if $@; - - my %section_plugins; - push @ret, dumpvalues(\%setup, IkiWiki::getsetup()); - foreach my $pair (IkiWiki::Setup::getsetup()) { - my $plugin=$pair->[0]; - my $setup=$pair->[1]; - my %s=@{$setup}; - my $section=$s{plugin}->{section}; - push @{$section_plugins{$section}}, $plugin; - if (@{$section_plugins{$section}} == 1) { - push @ret, "", "\t".("#" x 70), "\t# $section plugins", - sub { - wrap("\t# (", "\t# ", - join(", ", @{$section_plugins{$section}})).")" - }, - "\t".("#" x 70); - } - - my @values=dumpvalues(\%setup, @{$setup}); - if (@values) { - push @ret, "", "\t# $plugin plugin", @values; - } - } - - unshift @ret, - "#!/usr/bin/perl", - "# $description", - "#", - "# Passing this to ikiwiki --setup will make ikiwiki generate", - "# wrappers and build the wiki.", - "#", - "# Remember to re-run ikiwiki --setup any time you edit this file.", - "use IkiWiki::Setup::Standard {"; - push @ret, "}"; - - return map { ref $_ ? $_->() : $_ } @ret; -} - 1 -- cgit v1.2.3 From bbe1f2e493f009b49aba6ab83304f9484e37c61d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Mar 2010 15:35:21 -0400 Subject: move generic comment into IkiWiki::Setup --- IkiWiki/Setup.pm | 9 ++++++++- IkiWiki/Setup/Standard.pm | 11 +++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/IkiWiki/Setup.pm b/IkiWiki/Setup.pm index 369ff44d0..45f263bc8 100644 --- a/IkiWiki/Setup.pm +++ b/IkiWiki/Setup.pm @@ -52,7 +52,14 @@ sub dump ($) { eval qq{require $config{setuptype}}; error $@ if $@; - my @dump=$config{setuptype}->gendump("Setup file for ikiwiki."); + my @dump=$config{setuptype}->gendump( + "Setup file for ikiwiki.", + "", + "Passing this to ikiwiki --setup will make ikiwiki generate", + "wrappers and build the wiki.", + "", + "Remember to re-run ikiwiki --setup any time you edit this file.", + ); open (OUT, ">", $file) || die "$file: $!"; print OUT "$_\n" foreach @dump; diff --git a/IkiWiki/Setup/Standard.pm b/IkiWiki/Setup/Standard.pm index 9c177e497..92e97c4b4 100644 --- a/IkiWiki/Setup/Standard.pm +++ b/IkiWiki/Setup/Standard.pm @@ -12,20 +12,15 @@ sub import { IkiWiki::Setup::merge($_[1]); } -sub gendump ($$) { +sub gendump ($@) { my $class=shift; - my $description=shift; "#!/usr/bin/perl", - "# $description", "#", - "# Passing this to ikiwiki --setup will make ikiwiki generate", - "# wrappers and build the wiki.", - "#", - "# Remember to re-run ikiwiki --setup any time you edit this file.", + (map { "# $_" } @_), "use IkiWiki::Setup::Standard {", IkiWiki::Setup::commented_dump(\&dumpline), - "}"; + "}" } sub dumpline ($$$$) { -- cgit v1.2.3 From 10f8a2c85841d5884ccee096145498af96f06f05 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Mar 2010 15:36:33 -0400 Subject: improve comments --- IkiWiki/Setup/Standard.pm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/IkiWiki/Setup/Standard.pm b/IkiWiki/Setup/Standard.pm index 92e97c4b4..33b578e12 100644 --- a/IkiWiki/Setup/Standard.pm +++ b/IkiWiki/Setup/Standard.pm @@ -1,6 +1,4 @@ #!/usr/bin/perl -# Standard ikiwiki setup module. -# Parameters to import should be all the standard ikiwiki config stuff. package IkiWiki::Setup::Standard; @@ -8,6 +6,7 @@ use warnings; use strict; use IkiWiki; +# Parameters to import should be all the standard ikiwiki config, in a hash. sub import { IkiWiki::Setup::merge($_[1]); } -- cgit v1.2.3 From 19a794b4829c548a7f5b9dc22e22c24d7f28bad8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Mar 2010 15:44:28 -0400 Subject: parameterized indent --- IkiWiki/Setup.pm | 20 +++++++++++--------- IkiWiki/Setup/Standard.pm | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/IkiWiki/Setup.pm b/IkiWiki/Setup.pm index 45f263bc8..a71a12d9d 100644 --- a/IkiWiki/Setup.pm +++ b/IkiWiki/Setup.pm @@ -166,8 +166,9 @@ sub getsetup () { } keys %sections; } -sub commented_dump ($) { +sub commented_dump ($$) { my $dumpline=shift; + my $indent=shift; my %setup=(%config); my @ret; @@ -179,7 +180,7 @@ sub commented_dump ($) { die $@ if $@; my %section_plugins; - push @ret, commented_dumpvalues($dumpline, \%setup, IkiWiki::getsetup()); + push @ret, commented_dumpvalues($dumpline, $indent, \%setup, IkiWiki::getsetup()); foreach my $pair (IkiWiki::Setup::getsetup()) { my $plugin=$pair->[0]; my $setup=$pair->[1]; @@ -187,25 +188,26 @@ sub commented_dump ($) { my $section=$s{plugin}->{section}; push @{$section_plugins{$section}}, $plugin; if (@{$section_plugins{$section}} == 1) { - push @ret, "", "\t".("#" x 70), "\t# $section plugins", + push @ret, "", $indent.("#" x 70), "$indent# $section plugins", sub { - wrap("\t# (", "\t# ", + wrap("$indent# (", "$indent# ", join(", ", @{$section_plugins{$section}})).")" }, - "\t".("#" x 70); + $indent.("#" x 70); } - my @values=commented_dumpvalues($dumpline, \%setup, @{$setup}); + my @values=commented_dumpvalues($dumpline, $indent, \%setup, @{$setup}); if (@values) { - push @ret, "", "\t# $plugin plugin", @values; + push @ret, "", "$indent# $plugin plugin", @values; } } return map { ref $_ ? $_->() : $_ } @ret; } -sub commented_dumpvalues ($$@) { +sub commented_dumpvalues ($$$@) { my $dumpline=shift; + my $indent=shift; my $setup=shift; my @ret; while (@_) { @@ -214,7 +216,7 @@ sub commented_dumpvalues ($$@) { next if $key eq "plugin" || $info{type} eq "internal"; - push @ret, "\t# ".$info{description} if exists $info{description}; + push @ret, "$indent# ".$info{description} if exists $info{description}; if (exists $setup->{$key} && defined $setup->{$key}) { push @ret, $dumpline->($key, $setup->{$key}, $info{type}, ""); diff --git a/IkiWiki/Setup/Standard.pm b/IkiWiki/Setup/Standard.pm index 33b578e12..c85069304 100644 --- a/IkiWiki/Setup/Standard.pm +++ b/IkiWiki/Setup/Standard.pm @@ -18,7 +18,7 @@ sub gendump ($@) { "#", (map { "# $_" } @_), "use IkiWiki::Setup::Standard {", - IkiWiki::Setup::commented_dump(\&dumpline), + IkiWiki::Setup::commented_dump(\&dumpline, "\t"), "}" } -- cgit v1.2.3 From bba513a3e52170dc06b545a44f2d859ae4b757b5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Mar 2010 15:50:59 -0400 Subject: Add support for setup files written in YAML. Not the default. (Yet?) --- IkiWiki/Setup/Yaml.pm | 43 +++++++++++++++++++++++++++++++++++++++++++ debian/changelog | 1 + 2 files changed, 44 insertions(+) create mode 100644 IkiWiki/Setup/Yaml.pm diff --git a/IkiWiki/Setup/Yaml.pm b/IkiWiki/Setup/Yaml.pm new file mode 100644 index 000000000..ba9192faf --- /dev/null +++ b/IkiWiki/Setup/Yaml.pm @@ -0,0 +1,43 @@ +#!/usr/bin/perl + +package IkiWiki::Setup::Yaml; + +use warnings; +use strict; +use IkiWiki; +use YAML; + +sub loaddump ($$) { + my $class=shift; + my $content=shift; + + IkiWiki::Setup::merge(Load($content)); +} + +sub gendump ($@) { + my $class=shift; + + "# IkiWiki::Setup::Yaml - YAML formatted setup file", + "#", + (map { "# $_" } @_), + "#", + IkiWiki::Setup::commented_dump(\&dumpline, "") +} + + +sub dumpline ($$$$) { + my $key=shift; + my $value=shift; + my $type=shift; + my $prefix=shift; + + $YAML::UseHeader=0; + my $dump=Dump({$key => $value}); + chomp $dump; + if (length $prefix) { + $dump=join("", map { $prefix.$_ } split(/\n/, $dump)); + } + return $dump; +} + +1 diff --git a/debian/changelog b/debian/changelog index 73f6fcff8..e020b380f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,6 +13,7 @@ ikiwiki (3.20100313) UNRELEASED; urgency=low for security or other reasons. Closes: #447267 (Thanks to Aaron Wilson for the original patch.) * Allow wrappers to be built using tcc. + * Add support for setup files written in YAML. -- Joey Hess Sat, 13 Mar 2010 14:48:10 -0500 -- cgit v1.2.3 From 07bb08d0944a0282d6ed332deeefe347bc88139c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Mar 2010 15:55:10 -0400 Subject: shorten setuptype --- IkiWiki.pm | 2 +- IkiWiki/Setup.pm | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 241fb45b7..022bfe3bd 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -469,7 +469,7 @@ sub getsetup () { }, setuptype => { type => "internal", - default => "IkiWiki::Setup::Standard", + default => "Standard", description => "perl class to use to dump setup file", safe => 0, rebuild => 0, diff --git a/IkiWiki/Setup.pm b/IkiWiki/Setup.pm index a71a12d9d..2cf01ea68 100644 --- a/IkiWiki/Setup.pm +++ b/IkiWiki/Setup.pm @@ -28,7 +28,7 @@ sub load ($;$) { } close IN; - if ($content=~/(use\s+)?(IkiWiki::Setup::\w+)/) { + if ($content=~/(use\s+)?IkiWiki::Setup::(\w+)/) { $config{setuptype}=$2; if ($1) { error sprintf(gettext("cannot load %s in safe mode"), $file) @@ -37,9 +37,9 @@ sub load ($;$) { error("$file: ".$@) if $@; } else { - eval qq{require $config{setuptype}}; + eval qq{require IkiWiki::Setup::$config{setuptype}}; error $@ if $@; - $config{setuptype}->loaddump(IkiWiki::possibly_foolish_untaint($content)); + "IkiWiki::Setup::$config{setuptype}"->loaddump(IkiWiki::possibly_foolish_untaint($content)); } } else { @@ -50,9 +50,9 @@ sub load ($;$) { sub dump ($) { my $file=IkiWiki::possibly_foolish_untaint(shift); - eval qq{require $config{setuptype}}; + eval qq{require IkiWiki::Setup::$config{setuptype}}; error $@ if $@; - my @dump=$config{setuptype}->gendump( + my @dump="IkiWiki::Setup::$config{setuptype}"->gendump( "Setup file for ikiwiki.", "", "Passing this to ikiwiki --setup will make ikiwiki generate", -- cgit v1.2.3 From 3b08789e6fb5809dd9b8f51f5c5e7df1d78e6930 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Mar 2010 16:09:07 -0400 Subject: load YAML on demand so as not to break test suite if YAML is not avilable --- IkiWiki/Setup/Yaml.pm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Setup/Yaml.pm b/IkiWiki/Setup/Yaml.pm index ba9192faf..c7ff1988e 100644 --- a/IkiWiki/Setup/Yaml.pm +++ b/IkiWiki/Setup/Yaml.pm @@ -5,17 +5,21 @@ package IkiWiki::Setup::Yaml; use warnings; use strict; use IkiWiki; -use YAML; sub loaddump ($$) { my $class=shift; my $content=shift; + eval q{use YAML}; + die $@ if $@; IkiWiki::Setup::merge(Load($content)); } sub gendump ($@) { my $class=shift; + + eval q{use YAML}; + die $@ if $@; "# IkiWiki::Setup::Yaml - YAML formatted setup file", "#", -- cgit v1.2.3 From dc128dd829bfd08dba5d6929956d9064e7d37b81 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Mar 2010 17:54:58 -0400 Subject: fix newlines in commented defaults --- IkiWiki/Setup/Yaml.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Setup/Yaml.pm b/IkiWiki/Setup/Yaml.pm index c7ff1988e..0fc273675 100644 --- a/IkiWiki/Setup/Yaml.pm +++ b/IkiWiki/Setup/Yaml.pm @@ -39,7 +39,7 @@ sub dumpline ($$$$) { my $dump=Dump({$key => $value}); chomp $dump; if (length $prefix) { - $dump=join("", map { $prefix.$_ } split(/\n/, $dump)); + $dump=join("\n", map { $prefix.$_ } split(/\n/, $dump)); } return $dump; } -- cgit v1.2.3 From 9fb3409613d32e447ababb99bc963867b80340e9 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Mar 2010 17:58:40 -0400 Subject: new tip --- doc/tips/yaml_setup_files.mdwn | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 doc/tips/yaml_setup_files.mdwn diff --git a/doc/tips/yaml_setup_files.mdwn b/doc/tips/yaml_setup_files.mdwn new file mode 100644 index 000000000..4ae0de4aa --- /dev/null +++ b/doc/tips/yaml_setup_files.mdwn @@ -0,0 +1,10 @@ +Here's how to convert your existing standard format ikiwiki setup file into +the new YAML format recently added to ikiwiki. + +1. First, make sure you have the [[!cpan YAML]] perl module installed. + (Run: `apt-get install libyaml-perl`) +2. Run: `ikiwiki -setup my.setup -dumpsetup my.setup --set setuptype=Yaml` + +The format of the YAML setup file should be fairly self-explanatory. + +--[[Joey]] -- cgit v1.2.3 From aea5bf9b40f6676e93f987c28d9f2aa23608f5da Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 21 Mar 2010 14:51:47 -0400 Subject: reset setuptype to standard after an automator setup file is loaded so a standard file is generated (by default) --- IkiWiki/Setup/Automator.pm | 1 + 1 file changed, 1 insertion(+) diff --git a/IkiWiki/Setup/Automator.pm b/IkiWiki/Setup/Automator.pm index 9da594e99..9f694e18e 100644 --- a/IkiWiki/Setup/Automator.pm +++ b/IkiWiki/Setup/Automator.pm @@ -39,6 +39,7 @@ sub sanitize_wikiname ($) { sub import (@) { my $this=shift; IkiWiki::Setup::merge({@_}); + $config{setuptype}='Standard'; if (! $config{force_overwrite}) { # Avoid overwriting any existing files. -- cgit v1.2.3 From 85778f59fd0d84410f6e4191802e634b0f3c8935 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 21 Mar 2010 14:52:21 -0400 Subject: check for 'require' instead of 'use' --- IkiWiki/Setup.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Setup.pm b/IkiWiki/Setup.pm index 2cf01ea68..06102058b 100644 --- a/IkiWiki/Setup.pm +++ b/IkiWiki/Setup.pm @@ -28,7 +28,7 @@ sub load ($;$) { } close IN; - if ($content=~/(use\s+)?IkiWiki::Setup::(\w+)/) { + if ($content=~/((?:use|require)\s+)?IkiWiki::Setup::(\w+)/) { $config{setuptype}=$2; if ($1) { error sprintf(gettext("cannot load %s in safe mode"), $file) -- cgit v1.2.3 From 440e18bc15389780833fc8b9c04116a97eeaeaa2 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 21 Mar 2010 14:59:21 -0400 Subject: reset setuptype first, actually so setup file can override default --- IkiWiki/Setup/Automator.pm | 2 +- debian/changelog | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Setup/Automator.pm b/IkiWiki/Setup/Automator.pm index 9f694e18e..e9a572450 100644 --- a/IkiWiki/Setup/Automator.pm +++ b/IkiWiki/Setup/Automator.pm @@ -38,8 +38,8 @@ sub sanitize_wikiname ($) { sub import (@) { my $this=shift; - IkiWiki::Setup::merge({@_}); $config{setuptype}='Standard'; + IkiWiki::Setup::merge({@_}); if (! $config{force_overwrite}) { # Avoid overwriting any existing files. diff --git a/debian/changelog b/debian/changelog index e020b380f..4d0639a58 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -ikiwiki (3.20100313) UNRELEASED; urgency=low +ikiwiki (3.20100320) UNRELEASED; urgency=low * websetup: Add websetup_unsafe to allow marking other settings as unsafe. -- cgit v1.2.3 From cc9621a6811dde5e1d28eb152133bcd448a125d8 Mon Sep 17 00:00:00 2001 From: "http://jcftang.myopenid.com/" Date: Mon, 22 Mar 2010 20:57:27 +0000 Subject: sadly we moved to using drupal for most of our site --- doc/ikiwikiusers.mdwn | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 8e567ec0d..b40fd461d 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -40,7 +40,6 @@ Projects & Organizations * [Chaos Computer Club Düsseldorf](https://www.chaosdorf.de) * [monkeysphere](http://web.monkeysphere.info/) * [The Walden Effect](http://www.waldeneffect.org/) -* The support pages for [Trinity Centre for High Performance Computing](http://www.tchpc.tcd.ie/support/) * [St Hugh of Lincoln Catholic Primary School in Surrey](http://www.sthugh-of-lincoln.surrey.sch.uk/) * [Cosin Homepage](http://cosin.ch) uses an Ikiwiki with a subversion repository. * [Bosco Free Orienteering Software](http://bosco.durcheinandertal.ch) -- cgit v1.2.3 From e74a85c671cf9fe1e445ad183d66e059beaec2f9 Mon Sep 17 00:00:00 2001 From: "http://jmtd.livejournal.com/" Date: Mon, 22 Mar 2010 23:01:00 +0000 Subject: rename forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn to forum/utf8_warnings_for___34____92__xAB__34__.mdwn --- ...__44_____60____36__in__62___chunk_1.__39__.mdwn | 47 ---------------------- .../utf8_warnings_for___34____92__xAB__34__.mdwn | 47 ++++++++++++++++++++++ 2 files changed, 47 insertions(+), 47 deletions(-) delete mode 100644 doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn create mode 100644 doc/forum/utf8_warnings_for___34____92__xAB__34__.mdwn diff --git a/doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn b/doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn deleted file mode 100644 index 72f2d38e0..000000000 --- a/doc/forum/Warnings:___39__utf8___34____92__xAB__34___does_not_map_to_Unicode_at___47__usr__47__share__47__perl5__47__IkiWiki.pm_line_774__44_____60____36__in__62___chunk_1.__39__.mdwn +++ /dev/null @@ -1,47 +0,0 @@ -# getting Warnings about UTF8-Chars. - -I'm getting multiple warnings: - - utf8 "\xAB" does not map to Unicode at /usr/share/perl5/IkiWiki.pm line 774, <$in> chunk 1. - - -I'm assuming this is once per File, but even in verbose mode, it doesn't tell me which file is a problem. -It first reads all the files, and afterwards when parsing/compiling them, it outputs the warning, so I can't -deduce the offending files. - -Is there a way to have ikiwiki output the position, where it encounters the character? - -Probably all this has to do with locale-settings, and usage of mixed locales in a distributed setup ... -I'd rather cleanup some of the file(name)s of unexpected characters. --[[jwalzer]] - --------- - -**Update** : So I took the chance to insert debug into ikiwiki.pm: - - root@novalis:/usr/share/perl5# diff -p /tmp/IkiWiki.orig.pm IkiWiki.pm - *** /tmp/IkiWiki.orig.pm Sun Feb 14 15:16:08 2010 - --- IkiWiki.pm Sun Feb 14 15:16:28 2010 - *************** sub readfile ($;$$) { - *** 768,773 **** - --- 768,774 ---- - } - - local $/=undef; - + debug("opening File: $file:"); - open (my $in, "<", $file) || error("failed to read $file: $!"); - binmode($in) if ($binary); - return \*$in if $wantfd; - - -But what I see now is not quite helpful, as it seems, STDERR and DEBUG are asyncronous, so they mix up in a way, that I can't really see, whats the problem ... Maybe I'm better off for troubleshooting, to insert an printf to strerr to have it in the same stream.. --[[jwalzer]] - - ----- - -**Update:** The "print STDERR $file;"-Trick did it .. I was able to find a mdwn-file, that (was generated by a script of me) had \0xAB in it. - -Nevertheless I still wonder if this should be a problem. This character happend to be in an *\[\[meta title='$CHAR'\]\]-tag* and an *\[$CHAR\]http://foo)-Link* - -Should this throw an warning? Maybe this warning could be catched an reported inclusively the containing filename? maybe even with an override, if one knows that it is correct that way? --[[jwalzer]] - -[[!tag solved]] diff --git a/doc/forum/utf8_warnings_for___34____92__xAB__34__.mdwn b/doc/forum/utf8_warnings_for___34____92__xAB__34__.mdwn new file mode 100644 index 000000000..72f2d38e0 --- /dev/null +++ b/doc/forum/utf8_warnings_for___34____92__xAB__34__.mdwn @@ -0,0 +1,47 @@ +# getting Warnings about UTF8-Chars. + +I'm getting multiple warnings: + + utf8 "\xAB" does not map to Unicode at /usr/share/perl5/IkiWiki.pm line 774, <$in> chunk 1. + + +I'm assuming this is once per File, but even in verbose mode, it doesn't tell me which file is a problem. +It first reads all the files, and afterwards when parsing/compiling them, it outputs the warning, so I can't +deduce the offending files. + +Is there a way to have ikiwiki output the position, where it encounters the character? + +Probably all this has to do with locale-settings, and usage of mixed locales in a distributed setup ... +I'd rather cleanup some of the file(name)s of unexpected characters. --[[jwalzer]] + +-------- + +**Update** : So I took the chance to insert debug into ikiwiki.pm: + + root@novalis:/usr/share/perl5# diff -p /tmp/IkiWiki.orig.pm IkiWiki.pm + *** /tmp/IkiWiki.orig.pm Sun Feb 14 15:16:08 2010 + --- IkiWiki.pm Sun Feb 14 15:16:28 2010 + *************** sub readfile ($;$$) { + *** 768,773 **** + --- 768,774 ---- + } + + local $/=undef; + + debug("opening File: $file:"); + open (my $in, "<", $file) || error("failed to read $file: $!"); + binmode($in) if ($binary); + return \*$in if $wantfd; + + +But what I see now is not quite helpful, as it seems, STDERR and DEBUG are asyncronous, so they mix up in a way, that I can't really see, whats the problem ... Maybe I'm better off for troubleshooting, to insert an printf to strerr to have it in the same stream.. --[[jwalzer]] + + +---- + +**Update:** The "print STDERR $file;"-Trick did it .. I was able to find a mdwn-file, that (was generated by a script of me) had \0xAB in it. + +Nevertheless I still wonder if this should be a problem. This character happend to be in an *\[\[meta title='$CHAR'\]\]-tag* and an *\[$CHAR\]http://foo)-Link* + +Should this throw an warning? Maybe this warning could be catched an reported inclusively the containing filename? maybe even with an override, if one knows that it is correct that way? --[[jwalzer]] + +[[!tag solved]] -- cgit v1.2.3 From e67a9382f67e745af3be7d367fe7a0d36c1777e6 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Wed, 24 Mar 2010 00:29:10 +0000 Subject: Allow hooks to add sorting functions to pagespec_match_list --- IkiWiki.pm | 6 +++++- doc/ikiwiki/pagespec/sorting.mdwn | 2 ++ doc/plugins/write.mdwn | 15 +++++++++++++++ t/pagespec_match_list.t | 6 +++++- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 022bfe3bd..1a4dc47dd 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2035,7 +2035,11 @@ sub pagespec_match_list ($$;@) { if (defined $params{sort}) { my $f; - if ($params{sort} eq 'title') { + + if (exists $hooks{sort}{$params{sort}}{call}) { + $f = sub { $hooks{sort}{$params{sort}}{call}($a, $b) }; + } + elsif ($params{sort} eq 'title') { $f=sub { pagetitle(basename($a)) cmp pagetitle(basename($b)) }; } elsif ($params{sort} eq 'title_natural') { diff --git a/doc/ikiwiki/pagespec/sorting.mdwn b/doc/ikiwiki/pagespec/sorting.mdwn index 697818a2a..9007c23bf 100644 --- a/doc/ikiwiki/pagespec/sorting.mdwn +++ b/doc/ikiwiki/pagespec/sorting.mdwn @@ -10,4 +10,6 @@ orders can be specified. installed. Orders by title, but numbers in the title are treated as such, ("1 2 9 10 20" instead of "1 10 2 20 9") +Plugins can add additional sort orders. + [[!meta robots="noindex, follow"]] diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 96a2aa16d..bfa6617bd 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -588,6 +588,21 @@ describes the plugin as a whole. For example: This hook is used to inject C code (which it returns) into the `main` function of the ikiwiki wrapper when it is being generated. +### sort + + hook(type => "sort", id => "foo", call => \&sort_by_foo); + +This hook adds an additional [[ikiwiki/pagespec/sorting]] order or overrides +an existing one. The callback is given two page names as arguments, and +returns negative, zero or positive if the first page should come before, +close to (i.e. undefined order), or after the second page. + +For instance, the built-in `title` sort order could be reimplemented as + + sub sort_by_title { + pagetitle(basename($_[0])) cmp pagetitle(basename($_[1])); + } + ## Exported variables Several variables are exported to your plugin when you `use IkiWiki;` diff --git a/t/pagespec_match_list.t b/t/pagespec_match_list.t index dd5dcc5b0..b34ee769f 100755 --- a/t/pagespec_match_list.t +++ b/t/pagespec_match_list.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 88; +use Test::More tests => 89; BEGIN { use_ok("IkiWiki"); } @@ -9,6 +9,8 @@ BEGIN { use_ok("IkiWiki"); } $config{srcdir}=$config{destdir}="/dev/null"; IkiWiki::checkconfig(); +hook(type => "sort", id => "path", call => sub { $_[0] cmp $_[1] }); + %pagesources=( foo => "foo.mdwn", foo2 => "foo2.mdwn", @@ -34,6 +36,8 @@ is_deeply([pagespec_match_list("foo", "post/*", sort => "title", num => 50)], is_deeply([pagespec_match_list("foo", "post/*", sort => "title", filter => sub { $_[0] =~ /3/}) ], ["post/1", "post/2"]); +is_deeply([pagespec_match_list("foo", "*", sort => "path", num => 2)], + ["bar", "foo"]); my $r=eval { pagespec_match_list("foo", "beep") }; ok(eval { pagespec_match_list("foo", "beep") } == 0); ok(! $@, "does not fail with error when unable to match anything"); -- cgit v1.2.3 From 4fd05df4d4cd64905c13ceb4c9d8821f4f26d0bc Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Wed, 24 Mar 2010 03:04:16 +0000 Subject: cross-reference --- ...ap_sorts_by_pagename_and_not_title_when_show__61__title_is_used.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/bugs/map_sorts_by_pagename_and_not_title_when_show__61__title_is_used.mdwn b/doc/bugs/map_sorts_by_pagename_and_not_title_when_show__61__title_is_used.mdwn index de178d415..d12414d55 100644 --- a/doc/bugs/map_sorts_by_pagename_and_not_title_when_show__61__title_is_used.mdwn +++ b/doc/bugs/map_sorts_by_pagename_and_not_title_when_show__61__title_is_used.mdwn @@ -16,3 +16,5 @@ The [[ikiwiki/directive/map]] directive sort by pagename. That looks kind of odd >> 2. I cannot get inline to create a list when the htmltidy plugin is switched on. I have a template which is enclosed in an li tag, and i put the ul tag around the inline manually, but htmltidy breaks this. --martin >>>> You might want to check if the [[plugins/contrib/report]] plugin solves your problem. It can sort by title, among other things. --[[KathrynAndersen]] + +>> See also: [[todo/sort_parameter_for_map_plugin_and_directive]] --[[smcv]] -- cgit v1.2.3 From 0618f099dab8bd4f7f47e2695db01eabe49e3316 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Wed, 24 Mar 2010 00:59:01 +0000 Subject: Have the meta plugin add a meta_title sort order --- IkiWiki/Plugin/meta.pm | 15 +++++++++++++++ doc/ikiwiki/pagespec/sorting.mdwn | 7 ++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm index 5f046cb2a..bf8159814 100644 --- a/IkiWiki/Plugin/meta.pm +++ b/IkiWiki/Plugin/meta.pm @@ -13,6 +13,7 @@ sub import { hook(type => "needsbuild", id => "meta", call => \&needsbuild); hook(type => "preprocess", id => "meta", call => \&preprocess, scan => 1); hook(type => "pagetemplate", id => "meta", call => \&pagetemplate); + hook(type => "sort", id => "meta_title", call => \&sort_meta_title); } sub getsetup () { @@ -282,6 +283,20 @@ sub pagetemplate (@) { } } +sub title { + my $title = $pagestate{$_[0]}{meta}{title}; + + if (defined $title) { + return $title; + } + + return pagetitle(IkiWiki::basename($_[0])); +} + +sub sort_meta_title { + return title($_[0]) cmp title($_[1]); +} + sub match { my $field=shift; my $page=shift; diff --git a/doc/ikiwiki/pagespec/sorting.mdwn b/doc/ikiwiki/pagespec/sorting.mdwn index 9007c23bf..3a9fef9b6 100644 --- a/doc/ikiwiki/pagespec/sorting.mdwn +++ b/doc/ikiwiki/pagespec/sorting.mdwn @@ -9,7 +9,12 @@ orders can be specified. * `title_natural` - Only available if [[!cpan Sort::Naturally]] is installed. Orders by title, but numbers in the title are treated as such, ("1 2 9 10 20" instead of "1 10 2 20 9") +[[!if test="enabled(meta)" then=""" +* `meta_title` - Order by the full title set by the `\[[!meta title="foo"]]` + [[ikiwiki/directive]]. +"""]] -Plugins can add additional sort orders. +Plugins can add additional sort orders, so more might be available on this +wiki. [[!meta robots="noindex, follow"]] -- cgit v1.2.3 From b0ae19872d443860aeaab7069255e3a68a520887 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Wed, 24 Mar 2010 03:18:24 +0000 Subject: Add an optional "sort" argument to meta titles, defaulting to the title This allows correct sorting of titles, names, etc., with: [[!meta title="David Bowie" sort="Bowie, David"]] [[!meta title="The Beatles" sort="Beatles, The"]] --- IkiWiki/Plugin/meta.pm | 16 +++++++++++----- doc/ikiwiki/directive/meta.mdwn | 7 +++++++ doc/ikiwiki/pagespec/sorting.mdwn | 7 ++++--- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm index bf8159814..a470041c9 100644 --- a/IkiWiki/Plugin/meta.pm +++ b/IkiWiki/Plugin/meta.pm @@ -90,6 +90,12 @@ sub preprocess (@) { # Metadata collection that needs to happen during the scan pass. if ($key eq 'title') { $pagestate{$page}{meta}{title}=HTML::Entities::encode_numeric($value); + if (exists $params{sort}) { + $pagestate{$page}{meta}{titlesort}=$params{sort}; + } + else { + $pagestate{$page}{meta}{titlesort}=$value; + } return ""; } elsif ($key eq 'description') { @@ -283,18 +289,18 @@ sub pagetemplate (@) { } } -sub title { - my $title = $pagestate{$_[0]}{meta}{title}; +sub titlesort { + my $key = $pagestate{$_[0]}{meta}{titlesort}; - if (defined $title) { - return $title; + if (defined $key) { + return $key; } return pagetitle(IkiWiki::basename($_[0])); } sub sort_meta_title { - return title($_[0]) cmp title($_[1]); + return titlesort($_[0]) cmp titlesort($_[1]); } sub match { diff --git a/doc/ikiwiki/directive/meta.mdwn b/doc/ikiwiki/directive/meta.mdwn index 557441c0b..8d2a5b1ad 100644 --- a/doc/ikiwiki/directive/meta.mdwn +++ b/doc/ikiwiki/directive/meta.mdwn @@ -23,6 +23,13 @@ Supported fields: be set to a true value in the template; this can be used to format things differently in this case. + An optional `sort` parameter will be used preferentially when + [[ikiwiki/pagespec/sorting]] by `meta_title`: + + \[[!meta title="The Beatles" sort="Beatles, The"]] + + \[[!meta title="David Bowie" sort="Bowie, David"]] + * license Specifies a license for the page, for example, "GPL". Can contain diff --git a/doc/ikiwiki/pagespec/sorting.mdwn b/doc/ikiwiki/pagespec/sorting.mdwn index 3a9fef9b6..61516bec5 100644 --- a/doc/ikiwiki/pagespec/sorting.mdwn +++ b/doc/ikiwiki/pagespec/sorting.mdwn @@ -5,13 +5,14 @@ orders can be specified. * `age` - List pages from the most recently created to the oldest. * `mtime` - List pages with the most recently modified first. -* `title` - Order by title. +* `title` - Order by title (page name). * `title_natural` - Only available if [[!cpan Sort::Naturally]] is installed. Orders by title, but numbers in the title are treated as such, ("1 2 9 10 20" instead of "1 10 2 20 9") [[!if test="enabled(meta)" then=""" -* `meta_title` - Order by the full title set by the `\[[!meta title="foo"]]` - [[ikiwiki/directive]]. +* `meta_title` - Order according to the `\[[!meta title="foo" sort="bar"]]` + or `\[[!meta title="foo"]]` [[ikiwiki/directive]], or the page name if no + full title was set. """]] Plugins can add additional sort orders, so more might be available on this -- cgit v1.2.3 From 1c7d5eabd7c9e94498af7f89a005311a850d742c Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Wed, 24 Mar 2010 03:24:15 +0000 Subject: propsed branch --- doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 doc/todo/allow_plugins_to_add_sorting_methods.mdwn diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn new file mode 100644 index 000000000..3aa1d94a6 --- /dev/null +++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn @@ -0,0 +1,47 @@ +[[!template id=gitbranch branch=smcv/sort-hooks author="[[Simon_McVittie|smcv]]"]] +[[!tag patch]] + +The available [[ikiwiki/pagespec/sorting]] methods are currently hard-coded in +IkiWiki.pm, making it difficult to add any extra sorting mechanisms. I've +prepared a branch which adds 'sort' as a hook type and uses it to implement a +new `meta_title` sort type. + +Someone could use this hook to make `\[[!inline sort=title]]` prefer the meta +title over the page name, but for compatibility, I'm not going to (I do wonder +whether it would be worth making sort=name an alias for the current sort=title, +and changing the meaning of sort=title in 4.0, though). + +Gitweb: + + +## Documentation extracted from the branch + +### sort hook (added to [[plugins/write]]) + + hook(type => "sort", id => "foo", call => \&sort_by_foo); + +This hook adds an additional [[ikiwiki/pagespec/sorting]] order or overrides +an existing one. The callback is given two page names as arguments, and +returns negative, zero or positive if the first page should come before, +close to (i.e. undefined order), or after the second page. + +For instance, the built-in `title` sort order could be reimplemented as + + sub sort_by_title { + pagetitle(basename($_[0])) cmp pagetitle(basename($_[1])); + } + +### meta_title sort order (conditionally added to [[ikiwiki/pagespec/sorting]]) + +* `meta_title` - Order according to the `\[[!meta title="foo" sort="bar"]]` + or `\[[!meta title="foo"]]` [[ikiwiki/directive]], or the page name if no + full title was set. + +### meta title sort parameter (added to [[ikiwiki/directive/meta]]) + +An optional `sort` parameter will be used preferentially when +[[ikiwiki/pagespec/sorting]] by `meta_title`: + + \[[!meta title="The Beatles" sort="Beatles, The"]] + + \[[!meta title="David Bowie" sort="Bowie, David"]] -- cgit v1.2.3 From 7fbddb032ee952c6d0b1ee290568ea4f42ef181f Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Wed, 24 Mar 2010 03:27:11 +0000 Subject: link to an alternative approach that I decided against --- doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn index 3aa1d94a6..1533b6c44 100644 --- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn +++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn @@ -14,6 +14,12 @@ and changing the meaning of sort=title in 4.0, though). Gitweb: +I briefly tried to turn *all* the current sort types into hook functions, and +have some of them pre-registered, but decided that probably wasn't a good idea. +That earlier version of the branch is also available for comparison: + + + ## Documentation extracted from the branch ### sort hook (added to [[plugins/write]]) -- cgit v1.2.3 From 48c09d44637dd724d084b1d06e2277f11e80d489 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Wed, 24 Mar 2010 03:30:06 +0000 Subject: note: old version untested --- doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn index 1533b6c44..99f256fbe 100644 --- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn +++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn @@ -20,6 +20,11 @@ That earlier version of the branch is also available for comparison: +(The older version is untested, and probably doesn't really work as-is - I +misunderstood the details of how the built-in function `sort` works when using +`$a` and `$b`. The newer version has been tested, and has a regression test for +its core functionality.) + ## Documentation extracted from the branch ### sort hook (added to [[plugins/write]]) -- cgit v1.2.3 From 8108a7f4ba315bf93fd2f5acb233ae9cc6a33393 Mon Sep 17 00:00:00 2001 From: cian Date: Wed, 24 Mar 2010 13:36:59 +0000 Subject: --- doc/sandbox.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 8cba8973f..c323153c8 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -1,6 +1,6 @@ This is the [[SandBox]], a page anyone can edit to try out ikiwiki (version [[!version ]]). - +[[Testing 1 2 3| test]] # Header ## Subheader2 -- cgit v1.2.3 From 9d4bedf760fbbbdba28986c01c3e429f67386217 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Wed, 24 Mar 2010 17:11:17 +0000 Subject: relationship with [[plugins/contrib/report]] --- doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn index 99f256fbe..21800f4de 100644 --- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn +++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn @@ -25,6 +25,21 @@ misunderstood the details of how the built-in function `sort` works when using `$a` and `$b`. The newer version has been tested, and has a regression test for its core functionality.) +This hook *isn't* (yet) sufficient to implement [[plugins/contrib/report]]'s +NIH'd sorting mechanisms: + +* `report` can sort by any [[plugins/contrib/field]], whereas this one has a + finite number of hooks: if the `field` plugin's functionality is desirable, + perhaps parameterized sort mechanisms similar to pagespec match functions + would be useful? Then the `field` plugin could register + `hook(type => "sort", id => "field")` and you could have + `\[[!inline ... sort="field(Mood)"]]` or something? + +* `report` can sort by multiple criteria, with independent direction-changing: + if this is desirable, perhaps `pagespec_match_list` could be enhanced to + interpret `sort="x -y z(w)"` as sorting by (pseudocode) + `{ $cmp_x->($a, $b) || (-$cmp_y->($a, $b)) || $cmp_z->($a, $b, "w") }`? + ## Documentation extracted from the branch ### sort hook (added to [[plugins/write]]) -- cgit v1.2.3 From 27f1e77bc6ff74f1760a4fdb9e174c77ea4698ea Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Wed, 24 Mar 2010 17:26:46 +0000 Subject: thoughts --- ...an_alternative_approach_to_structured_data.mdwn | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/doc/forum/an_alternative_approach_to_structured_data.mdwn b/doc/forum/an_alternative_approach_to_structured_data.mdwn index eb6ee4445..188e627f0 100644 --- a/doc/forum/an_alternative_approach_to_structured_data.mdwn +++ b/doc/forum/an_alternative_approach_to_structured_data.mdwn @@ -27,3 +27,27 @@ I have written additional plugins which integrate with the [[plugins/contrib/fie * [[plugins/contrib/ymlfront]] - looks for YAML-format data at the front of a page; this is just one possible back-end for the structured data --[[KathrynAndersen]] + +> I'm not an IkiWiki committer ([[Joey]] is the only one I think) +> but I really like the look of this scheme. In particular, +> having `getfield` interop with `field` without being *part of* +> `field` makes me happy, since I'm not very keen on `getfield`'s +> syntax (i.e. "ugh, yet another mini-markup-language without a +> proper escaping mechanism"), but this way people can experiment +> with different syntaxes while keeping `field` for the +> behind-the-scenes bits. +> +> My [[plugins/contrib/album]] plugin could benefit from +> integration with [[field]] for photos' captions and so on, +> probably... I'll try to work on that at some point. +> +> [[plugins/contrib/report]] may be doing too much, though: +> it seems to be an variation on `\[[inline archive="yes"]]`, +> with an enhanced version of sorting, a mini version of +> [[todo/wikitrails]], and some other misc. I suspect it could +> usefully be divided up into discrete features? One good way +> to do that might be to shuffle bits of its functionality into +> the IkiWiki distribution and/or separate plugins, until there's +> nothing left in `report` itself and it can just go away. +> +> --[[smcv]] -- cgit v1.2.3 From 271449062a2a3fa897aff7f5bb40d6b5da06a1a8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 24 Mar 2010 14:30:38 -0400 Subject: use YAML::Any to allow faster versions to be used if available --- IkiWiki/Setup/Yaml.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Setup/Yaml.pm b/IkiWiki/Setup/Yaml.pm index 0fc273675..58cba4222 100644 --- a/IkiWiki/Setup/Yaml.pm +++ b/IkiWiki/Setup/Yaml.pm @@ -10,7 +10,7 @@ sub loaddump ($$) { my $class=shift; my $content=shift; - eval q{use YAML}; + eval q{use YAML::Any}; die $@ if $@; IkiWiki::Setup::merge(Load($content)); } @@ -18,7 +18,7 @@ sub loaddump ($$) { sub gendump ($@) { my $class=shift; - eval q{use YAML}; + eval q{use YAML::Any}; die $@ if $@; "# IkiWiki::Setup::Yaml - YAML formatted setup file", -- cgit v1.2.3 From 4415686d0571a33d4ac7b887d1abdc019d398414 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 24 Mar 2010 14:30:54 -0400 Subject: add YAML suggests --- Bundle/IkiWiki/Extras.pm | 1 + debian/control | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Bundle/IkiWiki/Extras.pm b/Bundle/IkiWiki/Extras.pm index 48bd127f1..5bbd7b8c6 100644 --- a/Bundle/IkiWiki/Extras.pm +++ b/Bundle/IkiWiki/Extras.pm @@ -35,6 +35,7 @@ Text::WikiCreole Term::ReadLine::Gnu HTML::Tree Sort::Naturally +YAML =head1 AUTHOR diff --git a/debian/control b/debian/control index b20f4db55..24c2c96a5 100644 --- a/debian/control +++ b/debian/control @@ -37,7 +37,7 @@ Suggests: viewvc | gitweb | viewcvs, libsearch-xapian-perl, libtext-csv-perl, libdigest-sha1-perl, graphviz, libnet-amazon-s3-perl, sparkline-php, texlive, dvipng, libtext-wikicreole-perl, libsort-naturally-perl, libtext-textile-perl, libhighlight-perl, - po4a (>= 0.35-1), gettext + po4a (>= 0.35-1), gettext, libyaml-perl Conflicts: ikiwiki-plugin-table Replaces: ikiwiki-plugin-table Provides: ikiwiki-plugin-table -- cgit v1.2.3 From c64c4b99626286ee08f67999a18c43c769e21e6a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 24 Mar 2010 14:39:50 -0400 Subject: Add --set-yaml switch for setting more complex config file options. --- debian/changelog | 1 + doc/usage.mdwn | 10 +++++++--- ikiwiki.in | 9 +++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4d0639a58..e7499b6f2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -14,6 +14,7 @@ ikiwiki (3.20100320) UNRELEASED; urgency=low (Thanks to Aaron Wilson for the original patch.) * Allow wrappers to be built using tcc. * Add support for setup files written in YAML. + * Add --set-yaml switch for setting more complex config file options. -- Joey Hess Sat, 13 Mar 2010 14:48:10 -0500 diff --git a/doc/usage.mdwn b/doc/usage.mdwn index f735170f0..db1e36a10 100644 --- a/doc/usage.mdwn +++ b/doc/usage.mdwn @@ -331,9 +331,13 @@ also be configured using a setup file. * --set var=value This allows setting an arbitrary configuration variable, the same as if it - were set via a setup file. Since most options can be configured - using command-line switches, you will rarely need to use this, but it can be - useful for the odd option that lacks a command-line switch. + were set via a setup file. Since most options commonly used options can be + configured using command-line switches, you will rarely need to use this. + +* --set-yaml var=value + + This is like --set, but it allows setting configuration variables that + use complex data structures, by passing in a YAML document. # EXAMPLES diff --git a/ikiwiki.in b/ikiwiki.in index da5555629..7028bdb7d 100755 --- a/ikiwiki.in +++ b/ikiwiki.in @@ -96,6 +96,15 @@ sub getconfig () { } $config{$var}=$val; }, + "set-yaml=s" => sub { + my ($var, $val)=split('=', $_[1], 2); + if (! defined $var || ! defined $val) { + die gettext("usage: --set-yaml var=value"), "\n"; + } + eval q{use YAML::Any}; + die $@ if $@; + $config{$var}=Load($val); + }, "version" => sub { print "ikiwiki version $IkiWiki::version\n"; exit; -- cgit v1.2.3 From 3166479fe4b170bf6ffd3f06c1422f65f7bbfe7e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 24 Mar 2010 14:53:32 -0400 Subject: fall back from YAML::Any to just YAML for portabilty to old YAML in Debian stable that lacks the former. --- IkiWiki/Setup/Yaml.pm | 2 ++ ikiwiki.in | 1 + 2 files changed, 3 insertions(+) diff --git a/IkiWiki/Setup/Yaml.pm b/IkiWiki/Setup/Yaml.pm index 58cba4222..8ad44eb4a 100644 --- a/IkiWiki/Setup/Yaml.pm +++ b/IkiWiki/Setup/Yaml.pm @@ -11,6 +11,7 @@ sub loaddump ($$) { my $content=shift; eval q{use YAML::Any}; + eval q{use YAML} if $@; die $@ if $@; IkiWiki::Setup::merge(Load($content)); } @@ -19,6 +20,7 @@ sub gendump ($@) { my $class=shift; eval q{use YAML::Any}; + eval q{use YAML} if $@; die $@ if $@; "# IkiWiki::Setup::Yaml - YAML formatted setup file", diff --git a/ikiwiki.in b/ikiwiki.in index 7028bdb7d..a8343ed0f 100755 --- a/ikiwiki.in +++ b/ikiwiki.in @@ -102,6 +102,7 @@ sub getconfig () { die gettext("usage: --set-yaml var=value"), "\n"; } eval q{use YAML::Any}; + eval q{use YAML} if $@; die $@ if $@; $config{$var}=Load($val); }, -- cgit v1.2.3 From 601caffac038e334d59ed4cc312750f8f4f8df2b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 24 Mar 2010 15:25:10 -0400 Subject: add newline to --set-yaml value YAML is picky about the data ending with a newline, and this makes it easier to accomplish that --- ikiwiki.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ikiwiki.in b/ikiwiki.in index a8343ed0f..1758399ea 100755 --- a/ikiwiki.in +++ b/ikiwiki.in @@ -104,7 +104,7 @@ sub getconfig () { eval q{use YAML::Any}; eval q{use YAML} if $@; die $@ if $@; - $config{$var}=Load($val); + $config{$var}=Load($val."\n"); }, "version" => sub { print "ikiwiki version $IkiWiki::version\n"; -- cgit v1.2.3 From a76206d4809364eaab288df45b126893887e46f4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 24 Mar 2010 15:32:35 -0400 Subject: fix back-compat with old Net::OpenID Debian stable's Net::OpenID does not support getting extension fields. --- IkiWiki/Plugin/openid.pm | 47 ++++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index 9355cd85a..7b1a17831 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -116,23 +116,25 @@ sub validate ($$$;$) { # Ask for client to provide a name and email, if possible. # Try sreg and ax - $claimed_identity->set_extension_args( - 'http://openid.net/extensions/sreg/1.1', - { - optional => 'email,fullname,nickname', - }, - ); - $claimed_identity->set_extension_args( - 'http://openid.net/srv/ax/1.0', - { - mode => 'fetch_request', - 'required' => 'email,fullname,nickname,firstname', - 'type.email' => "http://schema.openid.net/contact/email", - 'type.fullname' => "http://axschema.org/namePerson", - 'type.nickname' => "http://axschema.org/namePerson/friendly", - 'type.firstname' => "http://axschema.org/namePerson/first", - }, - ); + if ($claimed_identity->can("set_extension_args")) { + $claimed_identity->set_extension_args( + 'http://openid.net/extensions/sreg/1.1', + { + optional => 'email,fullname,nickname', + }, + ); + $claimed_identity->set_extension_args( + 'http://openid.net/srv/ax/1.0', + { + mode => 'fetch_request', + 'required' => 'email,fullname,nickname,firstname', + 'type.email' => "http://schema.openid.net/contact/email", + 'type.fullname' => "http://axschema.org/namePerson", + 'type.nickname' => "http://axschema.org/namePerson/friendly", + 'type.firstname' => "http://axschema.org/namePerson/first", + }, + ); + } my $check_url = $claimed_identity->check_url( return_to => IkiWiki::cgiurl(do => "postsignin"), @@ -161,10 +163,13 @@ sub auth ($$) { elsif (my $vident = $csr->verified_identity) { $session->param(name => $vident->url); - my @extensions=grep { defined } ( - $vident->signed_extension_fields('http://openid.net/extensions/sreg/1.1'), - $vident->signed_extension_fields('http://openid.net/srv/ax/1.0'), - ); + my @extensions; + if ($vident->can("signed_extension_fields")) { + @extensions=grep { defined } ( + $vident->signed_extension_fields('http://openid.net/extensions/sreg/1.1'), + $vident->signed_extension_fields('http://openid.net/srv/ax/1.0'), + ); + } foreach my $ext (@extensions) { foreach my $field (qw{value.email email}) { if (exists $ext->{$field} && -- cgit v1.2.3 From eb06a0135511fc5b5422f07ca5344ce114402a61 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 24 Mar 2010 16:12:35 -0400 Subject: use perl YAML for dumping Only it understands $YAML::UseHeader --- IkiWiki/Setup/Yaml.pm | 8 ++++---- debian/changelog | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/IkiWiki/Setup/Yaml.pm b/IkiWiki/Setup/Yaml.pm index 8ad44eb4a..8b876e297 100644 --- a/IkiWiki/Setup/Yaml.pm +++ b/IkiWiki/Setup/Yaml.pm @@ -19,10 +19,6 @@ sub loaddump ($$) { sub gendump ($@) { my $class=shift; - eval q{use YAML::Any}; - eval q{use YAML} if $@; - die $@ if $@; - "# IkiWiki::Setup::Yaml - YAML formatted setup file", "#", (map { "# $_" } @_), @@ -37,7 +33,11 @@ sub dumpline ($$$$) { my $type=shift; my $prefix=shift; + eval q{use YAML::Old}; + eval q{use YAML} if $@; + die $@ if $@; $YAML::UseHeader=0; + my $dump=Dump({$key => $value}); chomp $dump; if (length $prefix) { diff --git a/debian/changelog b/debian/changelog index e7499b6f2..12dd0dc02 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -ikiwiki (3.20100320) UNRELEASED; urgency=low +ikiwiki (3.20100324) UNRELEASED; urgency=low * websetup: Add websetup_unsafe to allow marking other settings as unsafe. -- cgit v1.2.3 From 021952969933388021001b259462406cbc94c2a6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 24 Mar 2010 16:19:50 -0400 Subject: fix unicode with YAML::Syck Syck-- it doesn't use unicode by default?! Hello, 2010 calling.. --- IkiWiki/Setup/Yaml.pm | 1 + ikiwiki.in | 1 + 2 files changed, 2 insertions(+) diff --git a/IkiWiki/Setup/Yaml.pm b/IkiWiki/Setup/Yaml.pm index 8b876e297..904784728 100644 --- a/IkiWiki/Setup/Yaml.pm +++ b/IkiWiki/Setup/Yaml.pm @@ -13,6 +13,7 @@ sub loaddump ($$) { eval q{use YAML::Any}; eval q{use YAML} if $@; die $@ if $@; + $YAML::Syck::ImplicitUnicode=1; IkiWiki::Setup::merge(Load($content)); } diff --git a/ikiwiki.in b/ikiwiki.in index 1758399ea..b62962ad8 100755 --- a/ikiwiki.in +++ b/ikiwiki.in @@ -103,6 +103,7 @@ sub getconfig () { } eval q{use YAML::Any}; eval q{use YAML} if $@; + $YAML::Syck::ImplicitUnicode=1; die $@ if $@; $config{$var}=Load($val."\n"); }, -- cgit v1.2.3 From f38e61c53bfdde4c92e9d8cb5930420bfa95775a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 24 Mar 2010 16:40:37 -0400 Subject: work around silly warning --- ikiwiki.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ikiwiki.in b/ikiwiki.in index b62962ad8..38e4d3201 100755 --- a/ikiwiki.in +++ b/ikiwiki.in @@ -103,8 +103,8 @@ sub getconfig () { } eval q{use YAML::Any}; eval q{use YAML} if $@; - $YAML::Syck::ImplicitUnicode=1; die $@ if $@; + eval q{$YAML::Syck::ImplicitUnicode=1}; $config{$var}=Load($val."\n"); }, "version" => sub { -- cgit v1.2.3 From 3b08b19b4e36f82864c73ca035cfdec83b3a43aa Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Wed, 24 Mar 2010 21:33:03 +0000 Subject: use `` to avoid markdown eating example pagespecs --- doc/plugins/moderatedcomments.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/plugins/moderatedcomments.mdwn b/doc/plugins/moderatedcomments.mdwn index c29b0b052..f9466e833 100644 --- a/doc/plugins/moderatedcomments.mdwn +++ b/doc/plugins/moderatedcomments.mdwn @@ -8,5 +8,5 @@ By default, all comments made by anyone who is not an admin will be held for moderation. The `moderate_pagespec` setting can be used to specify a [[ikiwiki/PageSpec]] to match comments and users who should be moderated. For example, to avoid moderating comments from logged-in users, set -`moderate_pagespec` to "!user(*)". Or to moderate everyone except for -admins, set it to "!admin(*)". +`moderate_pagespec` to "`!user(*)`". Or to moderate everyone except for +admins, set it to "`!admin(*)`". -- cgit v1.2.3 From 1a587504e949bf0584acdf7737597c8332467332 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Wed, 24 Mar 2010 22:48:47 +0000 Subject: what about a SortSpec rather than a sort-hook? --- doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn index 21800f4de..5bfe102ac 100644 --- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn +++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn @@ -40,6 +40,8 @@ NIH'd sorting mechanisms: interpret `sort="x -y z(w)"` as sorting by (pseudocode) `{ $cmp_x->($a, $b) || (-$cmp_y->($a, $b)) || $cmp_z->($a, $b, "w") }`? +>> I wonder if IkiWiki would benefit from the concept of a "sortspec", like a [[ikiwiki/PageSpec]] but dedicated to sorting lists of pages rather than defining lists of pages? Rather than defining a sort-hook, define a SortSpec class, and enable people to add their own sort methods as functions defined inside that class, similarly to the way they can add their own pagespec definitions. --[[KathrynAndersen]] + ## Documentation extracted from the branch ### sort hook (added to [[plugins/write]]) -- cgit v1.2.3 From 60edd2dc3157f756f4f7a213ee15836fe7bbb769 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Wed, 24 Mar 2010 23:51:48 +0000 Subject: Allow sorting to be combined and/or reversed --- IkiWiki.pm | 84 ++++++++++++++++++++++++++++----------- doc/ikiwiki/pagespec/sorting.mdwn | 4 ++ doc/plugins/write.mdwn | 17 +++++++- t/pagespec_match_list.t | 12 +++++- 4 files changed, 91 insertions(+), 26 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 1a4dc47dd..ce8fdd454 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2005,6 +2005,64 @@ sub pagespec_match ($$;@) { return $sub->($page, @params); } +sub get_sort_function { + my $method = $_[0]; + + if ($method =~ m/\s/) { + my @methods = map { get_sort_function($_) } split(' ', $method); + + return sub { + foreach my $method (@methods) { + my $answer = $method->($_[0], $_[1]); + return $answer if $answer; + } + + return 0; + }; + } + + my $sense = 1; + + if ($method =~ s/^-//) { + $sense = -1; + } + + my $token = $method; + my $parameter = undef; + + if ($method =~ m/^(\w+)\((.*)\)$/) { + $token = $1; + $parameter = $2; + } + + if (exists $hooks{sort}{$token}{call}) { + my $callback = $hooks{sort}{$token}{call}; + return sub { $sense * $callback->($_[0], $_[1], $parameter) }; + } + + if ($method eq 'title') { + return sub { $sense * (pagetitle(basename($_[0])) cmp pagetitle(basename($_[1]))) }; + } + + if ($method eq 'title_natural') { + eval q{use Sort::Naturally}; + if ($@) { + error(gettext("Sort::Naturally needed for title_natural sort")); + } + return sub { $sense * Sort::Naturally::ncmp(pagetitle(basename($_[0])), pagetitle(basename($_[1]))) }; + } + + if ($method eq 'mtime') { + return sub { $sense * ($pagemtime{$_[1]} <=> $pagemtime{$_[0]}) }; + } + + if ($method eq 'age') { + return sub { $sense * ($pagectime{$_[1]} <=> $pagectime{$_[0]}) }; + } + + error sprintf(gettext("unknown sort type %s"), $method); +} + sub pagespec_match_list ($$;@) { my $page=shift; my $pagespec=shift; @@ -2034,31 +2092,9 @@ sub pagespec_match_list ($$;@) { } if (defined $params{sort}) { - my $f; + my $f = get_sort_function($params{sort}); - if (exists $hooks{sort}{$params{sort}}{call}) { - $f = sub { $hooks{sort}{$params{sort}}{call}($a, $b) }; - } - elsif ($params{sort} eq 'title') { - $f=sub { pagetitle(basename($a)) cmp pagetitle(basename($b)) }; - } - elsif ($params{sort} eq 'title_natural') { - eval q{use Sort::Naturally}; - if ($@) { - error(gettext("Sort::Naturally needed for title_natural sort")); - } - $f=sub { Sort::Naturally::ncmp(pagetitle(basename($a)), pagetitle(basename($b))) }; - } - elsif ($params{sort} eq 'mtime') { - $f=sub { $pagemtime{$b} <=> $pagemtime{$a} }; - } - elsif ($params{sort} eq 'age') { - $f=sub { $pagectime{$b} <=> $pagectime{$a} }; - } - else { - error sprintf(gettext("unknown sort type %s"), $params{sort}); - } - @candidates = sort { &$f } @candidates; + @candidates = sort { $f->($a, $b) } @candidates; } @candidates=reverse(@candidates) if $params{reverse}; diff --git a/doc/ikiwiki/pagespec/sorting.mdwn b/doc/ikiwiki/pagespec/sorting.mdwn index 61516bec5..f27972d4e 100644 --- a/doc/ikiwiki/pagespec/sorting.mdwn +++ b/doc/ikiwiki/pagespec/sorting.mdwn @@ -15,6 +15,10 @@ orders can be specified. full title was set. """]] +In addition, you can combine several sort orders and/or reverse the order of +sorting, with a string like `age -title` (which would sort by age, then by +title in reverse order if two pages have the same age). + Plugins can add additional sort orders, so more might be available on this wiki. diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index bfa6617bd..1010e76e4 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -593,7 +593,9 @@ function of the ikiwiki wrapper when it is being generated. hook(type => "sort", id => "foo", call => \&sort_by_foo); This hook adds an additional [[ikiwiki/pagespec/sorting]] order or overrides -an existing one. The callback is given two page names as arguments, and +an existing one. + +The callback is given two page names followed by the parameter as arguments, and returns negative, zero or positive if the first page should come before, close to (i.e. undefined order), or after the second page. @@ -603,6 +605,19 @@ For instance, the built-in `title` sort order could be reimplemented as pagetitle(basename($_[0])) cmp pagetitle(basename($_[1])); } +and to sort by an arbitrary `meta` value, you could use: + + # usage: sort="meta(description)" + sub sort_by_meta { + my $param = $_[2]; + error "sort=meta requires a parameter" unless defined $param; + my $left = $pagestate{$_[0]}{meta}{$param}; + $left = "" unless defined $left; + my $right = $pagestate{$_[1]}{meta}{$param}; + $right = "" unless defined $right; + return $left cmp $right; + } + ## Exported variables Several variables are exported to your plugin when you `use IkiWiki;` diff --git a/t/pagespec_match_list.t b/t/pagespec_match_list.t index b34ee769f..309961f1c 100755 --- a/t/pagespec_match_list.t +++ b/t/pagespec_match_list.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 89; +use Test::More tests => 90; BEGIN { use_ok("IkiWiki"); } @@ -20,6 +20,13 @@ hook(type => "sort", id => "path", call => sub { $_[0] cmp $_[1] }); "post/2" => "post/2.mdwn", "post/3" => "post/3.mdwn", ); +$IkiWiki::pagectime{foo} = 2; +$IkiWiki::pagectime{foo2} = 2; +$IkiWiki::pagectime{foo3} = 1; +$IkiWiki::pagectime{bar} = 3; +$IkiWiki::pagectime{"post/1"} = 6; +$IkiWiki::pagectime{"post/2"} = 6; +$IkiWiki::pagectime{"post/3"} = 6; $links{foo}=[qw{post/1 post/2}]; $links{foo2}=[qw{bar}]; $links{foo3}=[qw{bar}]; @@ -38,6 +45,9 @@ is_deeply([pagespec_match_list("foo", "post/*", sort => "title", ["post/1", "post/2"]); is_deeply([pagespec_match_list("foo", "*", sort => "path", num => 2)], ["bar", "foo"]); +is_deeply([pagespec_match_list("foo", "foo* or bar*", + sort => "-age title")], # oldest first, break ties by title + ["foo3", "foo", "foo2", "bar"]); my $r=eval { pagespec_match_list("foo", "beep") }; ok(eval { pagespec_match_list("foo", "beep") } == 0); ok(! $@, "does not fail with error when unable to match anything"); -- cgit v1.2.3 From 81cd30690024db1fc0b300e3a09504f1c613be21 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 25 Mar 2010 00:05:58 +0000 Subject: an updated branch --- doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 29 +++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn index 5bfe102ac..419a73419 100644 --- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn +++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn @@ -40,8 +40,13 @@ NIH'd sorting mechanisms: interpret `sort="x -y z(w)"` as sorting by (pseudocode) `{ $cmp_x->($a, $b) || (-$cmp_y->($a, $b)) || $cmp_z->($a, $b, "w") }`? +> I've now added both of these features to the sort-hooks branch. --[[smcv]] + >> I wonder if IkiWiki would benefit from the concept of a "sortspec", like a [[ikiwiki/PageSpec]] but dedicated to sorting lists of pages rather than defining lists of pages? Rather than defining a sort-hook, define a SortSpec class, and enable people to add their own sort methods as functions defined inside that class, similarly to the way they can add their own pagespec definitions. --[[KathrynAndersen]] +>>> I'd be inclined to think that's overkill, but it probably wouldn't be +>>> all that hard to implement... Joey? Any thoughts? --s + ## Documentation extracted from the branch ### sort hook (added to [[plugins/write]]) @@ -49,7 +54,9 @@ NIH'd sorting mechanisms: hook(type => "sort", id => "foo", call => \&sort_by_foo); This hook adds an additional [[ikiwiki/pagespec/sorting]] order or overrides -an existing one. The callback is given two page names as arguments, and +an existing one. + +The callback is given two page names followed by the parameter as arguments, and returns negative, zero or positive if the first page should come before, close to (i.e. undefined order), or after the second page. @@ -59,12 +66,32 @@ For instance, the built-in `title` sort order could be reimplemented as pagetitle(basename($_[0])) cmp pagetitle(basename($_[1])); } +and to sort by an arbitrary `meta` value, you could use: + + # usage: sort="meta(description)" + sub sort_by_meta { + my $param = $_[2]; + error "sort=meta requires a parameter" unless defined $param; + my $left = $pagestate{$_[0]}{meta}{$param}; + $left = "" unless defined $left; + my $right = $pagestate{$_[1]}{meta}{$param}; + $right = "" unless defined $right; + return $left cmp $right; + } + + ### meta_title sort order (conditionally added to [[ikiwiki/pagespec/sorting]]) * `meta_title` - Order according to the `\[[!meta title="foo" sort="bar"]]` or `\[[!meta title="foo"]]` [[ikiwiki/directive]], or the page name if no full title was set. +### Multiple sort orders (added to [[ikiwiki/pagespec/sorting]]) + +In addition, you can combine several sort orders and/or reverse the order of +sorting, with a string like `age -title` (which would sort by age, then by +title in reverse order if two pages have the same age). + ### meta title sort parameter (added to [[ikiwiki/directive/meta]]) An optional `sort` parameter will be used preferentially when -- cgit v1.2.3 From dc966032129e07b9a6002a97bc9e6b86c712b4d2 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Thu, 25 Mar 2010 03:35:14 +0000 Subject: bug and fix --- doc/bugs/filecheck_failing_to_find_files.mdwn | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 doc/bugs/filecheck_failing_to_find_files.mdwn diff --git a/doc/bugs/filecheck_failing_to_find_files.mdwn b/doc/bugs/filecheck_failing_to_find_files.mdwn new file mode 100644 index 000000000..95ea5c763 --- /dev/null +++ b/doc/bugs/filecheck_failing_to_find_files.mdwn @@ -0,0 +1,23 @@ +Using the attachment plugin, when filecheck was checking the mime-type of the attachment before allowing the attachment to be removed, it was returning with an error saying that the mime-type of the file was "unknown" (when the mime-type definitely was known!) + +It turns out that the filecheck plugin couldn't find the file, because it was merely using the $pagesources hash, rather than finding the absolute path of the file in question. + +The following patch fixes the problem: + + diff --git a/IkiWiki/Plugin/filecheck.pm b/IkiWiki/Plugin/filecheck.pm + index 01d4909..1cec0cf 100644 + --- a/IkiWiki/Plugin/filecheck.pm + +++ b/IkiWiki/Plugin/filecheck.pm + @@ -118,6 +118,10 @@ sub match_mimetype ($$;@) { + if (! defined $file) { + return IkiWiki::ErrorReason->new("no file specified"); + } + + if (! -e $file) { + + # get the absolute path of the file if you can't find it + + $file = IkiWiki::srcfile($file); + + } + + # Use ::magic to get the mime type, the idea is to only trust + # data obtained by examining the actual file contents. + +[[!tag patch]] -- cgit v1.2.3 From c757cfa64f56fc17b2c3e4b2c36279f3fcf0f812 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Thu, 25 Mar 2010 03:38:14 +0000 Subject: I'm not sure if I'm supposed to tag this as patch, so I removed the tag. --- doc/bugs/filecheck_failing_to_find_files.mdwn | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/bugs/filecheck_failing_to_find_files.mdwn b/doc/bugs/filecheck_failing_to_find_files.mdwn index 95ea5c763..49de3d435 100644 --- a/doc/bugs/filecheck_failing_to_find_files.mdwn +++ b/doc/bugs/filecheck_failing_to_find_files.mdwn @@ -19,5 +19,3 @@ The following patch fixes the problem: # Use ::magic to get the mime type, the idea is to only trust # data obtained by examining the actual file contents. - -[[!tag patch]] -- cgit v1.2.3 From 1030d23a2ca1be2680a6fac8366f880a1d1760c6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 25 Mar 2010 00:11:39 -0400 Subject: response --- doc/bugs/filecheck_failing_to_find_files.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/bugs/filecheck_failing_to_find_files.mdwn b/doc/bugs/filecheck_failing_to_find_files.mdwn index 49de3d435..e41793ee8 100644 --- a/doc/bugs/filecheck_failing_to_find_files.mdwn +++ b/doc/bugs/filecheck_failing_to_find_files.mdwn @@ -2,6 +2,9 @@ Using the attachment plugin, when filecheck was checking the mime-type of the at It turns out that the filecheck plugin couldn't find the file, because it was merely using the $pagesources hash, rather than finding the absolute path of the file in question. +> I don't understand why the file was not in `%pagesources`. Do you? +> --[[Joey]] + The following patch fixes the problem: diff --git a/IkiWiki/Plugin/filecheck.pm b/IkiWiki/Plugin/filecheck.pm -- cgit v1.2.3 From 46f8f72793e23b56d3deb1ed0ed6b1a0fbd56ad6 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Thu, 25 Mar 2010 04:43:16 +0000 Subject: response --- doc/bugs/filecheck_failing_to_find_files.mdwn | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/bugs/filecheck_failing_to_find_files.mdwn b/doc/bugs/filecheck_failing_to_find_files.mdwn index e41793ee8..be6cdbb20 100644 --- a/doc/bugs/filecheck_failing_to_find_files.mdwn +++ b/doc/bugs/filecheck_failing_to_find_files.mdwn @@ -3,7 +3,12 @@ Using the attachment plugin, when filecheck was checking the mime-type of the at It turns out that the filecheck plugin couldn't find the file, because it was merely using the $pagesources hash, rather than finding the absolute path of the file in question. > I don't understand why the file was not in `%pagesources`. Do you? -> --[[Joey]] +> --[[Joey]] + +>> The file *was* in `%pagesources`, but what returns from that is the filename relative to the `srcdir` directory; for example, `foo/bar.gif`. +>> When File::MimeInfo::Magic::magic is given that, it can't find the file. +>> But if it is given `/path/to/srcdir/foo/bar.gif` instead, then it *can* find the file, and returns the mime-type correctly. +>> --[[KathrynAndersen]] The following patch fixes the problem: -- cgit v1.2.3 From baa07e0b526fd23630f6cedcdc04960c99703722 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 25 Mar 2010 14:23:16 -0400 Subject: remove a few leftover manual folding indicators --- IkiWiki/Plugin/filecheck.pm | 2 +- IkiWiki/Plugin/po.pm | 2 +- IkiWiki/Plugin/tla.pm | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/IkiWiki/Plugin/filecheck.pm b/IkiWiki/Plugin/filecheck.pm index 01d490961..0501ba99c 100644 --- a/IkiWiki/Plugin/filecheck.pm +++ b/IkiWiki/Plugin/filecheck.pm @@ -5,7 +5,7 @@ use warnings; use strict; use IkiWiki 3.00; -my %units=( #{{{ # size in bytes +my %units=( # size in bytes B => 1, byte => 1, KB => 2 ** 10, diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 2cbfb0a45..2250a7f9f 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -308,7 +308,7 @@ sub pagetemplate (@) { if (ishomepage($page) && $template->query(name => "title")) { $template->param(title => $config{wikiname}); } -} # }}} +} # Add the renamed page translations to the list of to-be-renamed pages. sub renamepages (@) { diff --git a/IkiWiki/Plugin/tla.pm b/IkiWiki/Plugin/tla.pm index 16d73b136..764da9b98 100644 --- a/IkiWiki/Plugin/tla.pm +++ b/IkiWiki/Plugin/tla.pm @@ -162,7 +162,7 @@ sub rcs_remove ($) { error("rcs_remove not implemented for tla"); # TODO } -sub rcs_rename ($$) { # {{{a +sub rcs_rename ($$) { my ($src, $dest) = @_; error("rcs_rename not implemented for tla"); # TODO -- cgit v1.2.3 From 3d671ea8c1df4534d8ffa59b235dd6ded99bb13f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 25 Mar 2010 14:39:09 -0400 Subject: filecheck: Fix bug that prevented the pagespecs from matching when not called by attachment plugin. --- IkiWiki/Plugin/filecheck.pm | 16 ++++++++-------- debian/changelog | 2 ++ doc/bugs/filecheck_failing_to_find_files.mdwn | 5 +++++ 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/IkiWiki/Plugin/filecheck.pm b/IkiWiki/Plugin/filecheck.pm index 0501ba99c..1549b82db 100644 --- a/IkiWiki/Plugin/filecheck.pm +++ b/IkiWiki/Plugin/filecheck.pm @@ -75,9 +75,9 @@ sub match_maxsize ($$;@) { } my %params=@_; - my $file=exists $params{file} ? $params{file} : $IkiWiki::pagesources{$page}; + my $file=exists $params{file} ? $params{file} : IkiWiki::srcfile($IkiWiki::pagesources{$page}); if (! defined $file) { - return IkiWiki::ErrorReason->new("no file specified"); + return IkiWiki::ErrorReason->new("file does not exist"); } if (-s $file > $maxsize) { @@ -96,9 +96,9 @@ sub match_minsize ($$;@) { } my %params=@_; - my $file=exists $params{file} ? $params{file} : $IkiWiki::pagesources{$page}; + my $file=exists $params{file} ? $params{file} : IkiWiki::srcfile($IkiWiki::pagesources{$page}); if (! defined $file) { - return IkiWiki::ErrorReason->new("no file specified"); + return IkiWiki::ErrorReason->new("file does not exist"); } if (-s $file < $minsize) { @@ -114,9 +114,9 @@ sub match_mimetype ($$;@) { my $wanted=shift; my %params=@_; - my $file=exists $params{file} ? $params{file} : $IkiWiki::pagesources{$page}; + my $file=exists $params{file} ? $params{file} : IkiWiki::srcfile($IkiWiki::pagesources{$page}); if (! defined $file) { - return IkiWiki::ErrorReason->new("no file specified"); + return IkiWiki::ErrorReason->new("file does not exist"); } # Use ::magic to get the mime type, the idea is to only trust @@ -147,9 +147,9 @@ sub match_virusfree ($$;@) { my $wanted=shift; my %params=@_; - my $file=exists $params{file} ? $params{file} : $IkiWiki::pagesources{$page}; + my $file=exists $params{file} ? $params{file} : IkiWiki::srcfile($IkiWiki::pagesources{$page}); if (! defined $file) { - return IkiWiki::ErrorReason->new("no file specified"); + return IkiWiki::ErrorReason->new("file does not exist"); } if (! exists $IkiWiki::config{virus_checker} || diff --git a/debian/changelog b/debian/changelog index 12dd0dc02..7249cdfa4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -15,6 +15,8 @@ ikiwiki (3.20100324) UNRELEASED; urgency=low * Allow wrappers to be built using tcc. * Add support for setup files written in YAML. * Add --set-yaml switch for setting more complex config file options. + * filecheck: Fix bug that prevented the pagespecs from matching when + not called by attachment plugin. -- Joey Hess Sat, 13 Mar 2010 14:48:10 -0500 diff --git a/doc/bugs/filecheck_failing_to_find_files.mdwn b/doc/bugs/filecheck_failing_to_find_files.mdwn index be6cdbb20..e896f2129 100644 --- a/doc/bugs/filecheck_failing_to_find_files.mdwn +++ b/doc/bugs/filecheck_failing_to_find_files.mdwn @@ -10,6 +10,11 @@ It turns out that the filecheck plugin couldn't find the file, because it was me >> But if it is given `/path/to/srcdir/foo/bar.gif` instead, then it *can* find the file, and returns the mime-type correctly. >> --[[KathrynAndersen]] +>>> Ok, so it's not removal specific, can in fact be triggered by using +>>> testpagespec (or really anything besides attachment, which passes +>>> the filename parameter). Nor is it limited to mimetype, all the tests in +>>> filecheck have the problem. [[Fixed|done]] --[[Joey]] + The following patch fixes the problem: diff --git a/IkiWiki/Plugin/filecheck.pm b/IkiWiki/Plugin/filecheck.pm -- cgit v1.2.3 From b86276ffed7ee001b35cd610e5d56e5afb4088cf Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 25 Mar 2010 23:31:53 +0000 Subject: Reimplement extensible sorting mechanisms, in the same way as pagespecs --- IkiWiki.pm | 145 ++++++++++++++++++++++++++++-------------------- IkiWiki/Plugin/meta.pm | 11 ++-- doc/plugins/write.mdwn | 53 ++++++++---------- t/pagespec_match_list.t | 6 +- 4 files changed, 120 insertions(+), 95 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index ce8fdd454..a89c14058 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -37,6 +37,7 @@ our $DEPEND_LINKS=4; # Optimisation. use Memoize; memoize("abs2rel"); +memoize("cmpspec_translate"); memoize("pagespec_translate"); memoize("template_file"); @@ -1934,6 +1935,70 @@ sub add_link ($$) { unless grep { $_ eq $link } @{$links{$page}}; } +sub cmpspec_translate ($) { + my $spec = shift; + + my $code = ""; + my @data; + while ($spec =~ m{ + \s* + (-?) # group 1: perhaps negated + \s* + ( # group 2: a word + \w+\([^\)]*\) # command(params) + | + [^\s]+ # or anything else + ) + \s* + }gx) { + my $negated = $1; + my $word = $2; + my $params = undef; + + if ($word =~ m/^(\w+)\((.*)\)$/) { + # command with parameters + $params = $2; + $word = $1; + } + elsif ($word !~ m/^\w+$/) { + error(sprintf(gettext("invalid sort type %s"), $word)); + } + + if (length $code) { + $code .= " || "; + } + + if ($negated) { + $code .= "-"; + } + + if (exists $IkiWiki::PageSpec::{"cmp_$word"}) { + if (exists $IkiWiki::PageSpec::{"check_cmp_$word"}) { + $IkiWiki::PageSpec::{"check_cmp_$word"}->($params); + } + + if (defined $params) { + push @data, $params; + $code .= "IkiWiki::PageSpec::cmp_$word(\@_, \$data[$#data])"; + } + else { + $code .= "IkiWiki::PageSpec::cmp_$word(\@_, undef)"; + } + } + else { + error(sprintf(gettext("unknown sort type %s"), $word)); + } + } + + if (! length $code) { + # undefined sorting method... sort arbitrarily + return sub { 0 }; + } + + no warnings; + return eval 'sub { '.$code.' }'; +} + sub pagespec_translate ($) { my $spec=shift; @@ -2005,64 +2070,6 @@ sub pagespec_match ($$;@) { return $sub->($page, @params); } -sub get_sort_function { - my $method = $_[0]; - - if ($method =~ m/\s/) { - my @methods = map { get_sort_function($_) } split(' ', $method); - - return sub { - foreach my $method (@methods) { - my $answer = $method->($_[0], $_[1]); - return $answer if $answer; - } - - return 0; - }; - } - - my $sense = 1; - - if ($method =~ s/^-//) { - $sense = -1; - } - - my $token = $method; - my $parameter = undef; - - if ($method =~ m/^(\w+)\((.*)\)$/) { - $token = $1; - $parameter = $2; - } - - if (exists $hooks{sort}{$token}{call}) { - my $callback = $hooks{sort}{$token}{call}; - return sub { $sense * $callback->($_[0], $_[1], $parameter) }; - } - - if ($method eq 'title') { - return sub { $sense * (pagetitle(basename($_[0])) cmp pagetitle(basename($_[1]))) }; - } - - if ($method eq 'title_natural') { - eval q{use Sort::Naturally}; - if ($@) { - error(gettext("Sort::Naturally needed for title_natural sort")); - } - return sub { $sense * Sort::Naturally::ncmp(pagetitle(basename($_[0])), pagetitle(basename($_[1]))) }; - } - - if ($method eq 'mtime') { - return sub { $sense * ($pagemtime{$_[1]} <=> $pagemtime{$_[0]}) }; - } - - if ($method eq 'age') { - return sub { $sense * ($pagectime{$_[1]} <=> $pagectime{$_[0]}) }; - } - - error sprintf(gettext("unknown sort type %s"), $method); -} - sub pagespec_match_list ($$;@) { my $page=shift; my $pagespec=shift; @@ -2092,7 +2099,7 @@ sub pagespec_match_list ($$;@) { } if (defined $params{sort}) { - my $f = get_sort_function($params{sort}); + my $f = cmpspec_translate($params{sort}); @candidates = sort { $f->($a, $b) } @candidates; } @@ -2407,4 +2414,24 @@ sub match_ip ($$;@) { } } +sub cmp_title { + IkiWiki::pagetitle(IkiWiki::basename($_[0])) + cmp + IkiWiki::pagetitle(IkiWiki::basename($_[1])) +} + +sub cmp_mtime { $IkiWiki::pagemtime{$_[1]} <=> $IkiWiki::pagemtime{$_[0]} } +sub cmp_age { $IkiWiki::pagectime{$_[1]} <=> $IkiWiki::pagectime{$_[0]} } + +sub check_cmp_title_natural { + eval q{use Sort::Naturally}; + if ($@) { + error(gettext("Sort::Naturally needed for title_natural sort")); + } +} +sub cmp_title_natural { + Sort::Naturally::ncmp(IkiWiki::pagetitle(IkiWiki::basename($_[0])), + IkiWiki::pagetitle(IkiWiki::basename($_[1]))) +} + 1 diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm index a470041c9..e8cc1e392 100644 --- a/IkiWiki/Plugin/meta.pm +++ b/IkiWiki/Plugin/meta.pm @@ -13,7 +13,6 @@ sub import { hook(type => "needsbuild", id => "meta", call => \&needsbuild); hook(type => "preprocess", id => "meta", call => \&preprocess, scan => 1); hook(type => "pagetemplate", id => "meta", call => \&pagetemplate); - hook(type => "sort", id => "meta_title", call => \&sort_meta_title); } sub getsetup () { @@ -299,10 +298,6 @@ sub titlesort { return pagetitle(IkiWiki::basename($_[0])); } -sub sort_meta_title { - return titlesort($_[0]) cmp titlesort($_[1]); -} - sub match { my $field=shift; my $page=shift; @@ -353,4 +348,10 @@ sub match_copyright ($$;@) { IkiWiki::Plugin::meta::match("copyright", @_); } +sub cmp_meta_title { + IkiWiki::Plugin::meta::titlesort($_[0]) + cmp + IkiWiki::Plugin::meta::titlesort($_[1]) +} + 1 diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 1010e76e4..de2b47015 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -588,36 +588,6 @@ describes the plugin as a whole. For example: This hook is used to inject C code (which it returns) into the `main` function of the ikiwiki wrapper when it is being generated. -### sort - - hook(type => "sort", id => "foo", call => \&sort_by_foo); - -This hook adds an additional [[ikiwiki/pagespec/sorting]] order or overrides -an existing one. - -The callback is given two page names followed by the parameter as arguments, and -returns negative, zero or positive if the first page should come before, -close to (i.e. undefined order), or after the second page. - -For instance, the built-in `title` sort order could be reimplemented as - - sub sort_by_title { - pagetitle(basename($_[0])) cmp pagetitle(basename($_[1])); - } - -and to sort by an arbitrary `meta` value, you could use: - - # usage: sort="meta(description)" - sub sort_by_meta { - my $param = $_[2]; - error "sort=meta requires a parameter" unless defined $param; - my $left = $pagestate{$_[0]}{meta}{$param}; - $left = "" unless defined $left; - my $right = $pagestate{$_[1]}{meta}{$param}; - $right = "" unless defined $right; - return $left cmp $right; - } - ## Exported variables Several variables are exported to your plugin when you `use IkiWiki;` @@ -1140,6 +1110,29 @@ For example, "backlink(foo)" is influenced by the contents of page foo; they match; "created_before(foo)" is influenced by the metadata of foo; while "glob(*)" is not influenced by the contents of any page. +### Sorting plugins + +Similarly, it's possible to write plugins that add new functions as +[[ikiwiki/pagespec/sorting]] methods. To achieve this, add a function to +the IkiWiki::PageSpec package named `cmp_foo`, which will be used when sorting +by `foo` or `foo(...)` is requested. + +The function will be passed three or more parameters. The first two are +page names, and the third is `undef` if invoked as `foo`, or the parameter +`"bar"` if invoked as `foo(bar)`. It may also be passed additional, named +parameters. + +It should return the same thing as Perl's `cmp` and `<=>` operators: negative +if the first argument is less than the second, positive if the first argument +is greater, or zero if they are considered equal. It may also raise an +error using `error`, for instance if it needs a parameter but one isn't +provided. + +You can also define a function called `check_cmp_foo` in the same package. +If you do, it will be called while preparing to sort by `foo` or `foo(bar)`, +with argument `undef` or `"bar"` respectively; it may raise an error using +`error`, if sorting like that isn't going to work. + ### Setup plugins The ikiwiki setup file is loaded using a pluggable mechanism. If you look diff --git a/t/pagespec_match_list.t b/t/pagespec_match_list.t index 309961f1c..743ae4637 100755 --- a/t/pagespec_match_list.t +++ b/t/pagespec_match_list.t @@ -9,7 +9,11 @@ BEGIN { use_ok("IkiWiki"); } $config{srcdir}=$config{destdir}="/dev/null"; IkiWiki::checkconfig(); -hook(type => "sort", id => "path", call => sub { $_[0] cmp $_[1] }); +{ + package IkiWiki::PageSpec; + + sub cmp_path { $_[0] cmp $_[1] } +} %pagesources=( foo => "foo.mdwn", -- cgit v1.2.3 From 959d5b197d842e494076034f89d7bca84e531a45 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Thu, 25 Mar 2010 23:39:45 +0000 Subject: an alternative way to do plugins, as rubykat suggested --- doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 37 ++++++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn index 419a73419..f37a0758e 100644 --- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn +++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn @@ -44,10 +44,13 @@ NIH'd sorting mechanisms: >> I wonder if IkiWiki would benefit from the concept of a "sortspec", like a [[ikiwiki/PageSpec]] but dedicated to sorting lists of pages rather than defining lists of pages? Rather than defining a sort-hook, define a SortSpec class, and enable people to add their own sort methods as functions defined inside that class, similarly to the way they can add their own pagespec definitions. --[[KathrynAndersen]] ->>> I'd be inclined to think that's overkill, but it probably wouldn't be ->>> all that hard to implement... Joey? Any thoughts? --s +>>> [[!template id=gitbranch branch=smcv/sort-package author="[[Simon_McVittie|smcv]]"]] +>>> I'd be inclined to think that's overkill, but it wasn't very hard to +>>> implement, and in a way is more elegant. I set it up so sort mechanisms +>>> share the `IkiWiki::PageSpec` package, but with a `cmp_` prefix. Gitweb: +>>> -## Documentation extracted from the branch +## Documentation from sort-hooks branch ### sort hook (added to [[plugins/write]]) @@ -100,3 +103,31 @@ An optional `sort` parameter will be used preferentially when \[[!meta title="The Beatles" sort="Beatles, The"]] \[[!meta title="David Bowie" sort="Bowie, David"]] + +## Documentation from sort-hooks branch + +The changes to [[ikiwiki/pagespec/sorting]] are the same. +The changes to [[plugins/write]] are replaced by: + +### Sorting plugins + +Similarly, it's possible to write plugins that add new functions as +[[ikiwiki/pagespec/sorting]] methods. To achieve this, add a function to +the IkiWiki::PageSpec package named `cmp_foo`, which will be used when sorting +by `foo` or `foo(...)` is requested. + +The function will be passed three or more parameters. The first two are +page names, and the third is `undef` if invoked as `foo`, or the parameter +`"bar"` if invoked as `foo(bar)`. It may also be passed additional, named +parameters. + +It should return the same thing as Perl's `cmp` and `<=>` operators: negative +if the first argument is less than the second, positive if the first argument +is greater, or zero if they are considered equal. It may also raise an +error using `error`, for instance if it needs a parameter but one isn't +provided. + +You can also define a function called `check_cmp_foo` in the same package. +If you do, it will be called while preparing to sort by `foo` or `foo(bar)`, +with argument `undef` or `"bar"` respectively; it may raise an error using +`error`, if sorting like that isn't going to work. -- cgit v1.2.3 From b68aa11732a1782886793e426f06652656c155cb Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Fri, 26 Mar 2010 01:40:32 +0000 Subject: oh dear not fixed after all --- doc/bugs/filecheck_failing_to_find_files.mdwn | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/bugs/filecheck_failing_to_find_files.mdwn b/doc/bugs/filecheck_failing_to_find_files.mdwn index e896f2129..33975f05c 100644 --- a/doc/bugs/filecheck_failing_to_find_files.mdwn +++ b/doc/bugs/filecheck_failing_to_find_files.mdwn @@ -13,7 +13,13 @@ It turns out that the filecheck plugin couldn't find the file, because it was me >>> Ok, so it's not removal specific, can in fact be triggered by using >>> testpagespec (or really anything besides attachment, which passes >>> the filename parameter). Nor is it limited to mimetype, all the tests in ->>> filecheck have the problem. [[Fixed|done]] --[[Joey]] +>>> filecheck have the problem. --[[Joey]] + +>>>> Alas, not fixed. It seems I was mistaken in some of my assumptions. +>>>> It still happens when attempting to remove attachments. +>>>> With your fix, the `IkiWiki::srcfile` function is only called when the filename is not passed in, but it appears that in the case of removing attachments, the filename IS passed in, but it is the relative filename as mentioned above. Thus, the file is still not found, and the mime-type comes back as unknown. +>>>> The reason my patch worked is because, rather than checking whether a filename was passed in before applying IkiWiki::srcfile to the filename, it checks whether the file can be found, and if it cannot be found, then it applies IkiWiki::srcfile to the filename. +>>>> --[[KathrynAndersen]] The following patch fixes the problem: -- cgit v1.2.3 From 5dd8c9e99911b112ddffc163d5cca9d7257adc6a Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Fri, 26 Mar 2010 01:44:52 +0000 Subject: now my main site uses IkiWiki fully --- doc/users/KathrynAndersen.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/users/KathrynAndersen.mdwn b/doc/users/KathrynAndersen.mdwn index 16cb390c4..8e827b0da 100644 --- a/doc/users/KathrynAndersen.mdwn +++ b/doc/users/KathrynAndersen.mdwn @@ -1,8 +1,8 @@ * aka [[rubykat]] -* Currently an active [PmWiki](http://www.pmwiki.org) user, but investigating changing over to ikiwiki (if I can write the plugins I need). * -* +* (uses IkiWiki!) * +* Also an active [PmWiki](http://www.pmwiki.org) user, interested in having the best of both worlds. Has written the following plugins: [[!map pages="!*/Discussion and ((link(users/KathrynAndersen) or link(users/rubykat)) and plugins/*) "]] -- cgit v1.2.3 From fb39dc5f5f3e0dc4b5006b2cf7c85ce0e895ebfa Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 25 Mar 2010 23:40:38 -0400 Subject: patch --- doc/bugs/filecheck_failing_to_find_files.mdwn | 53 +++++++++++++++++++-------- 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/doc/bugs/filecheck_failing_to_find_files.mdwn b/doc/bugs/filecheck_failing_to_find_files.mdwn index 33975f05c..3209c8f53 100644 --- a/doc/bugs/filecheck_failing_to_find_files.mdwn +++ b/doc/bugs/filecheck_failing_to_find_files.mdwn @@ -21,20 +21,41 @@ It turns out that the filecheck plugin couldn't find the file, because it was me >>>> The reason my patch worked is because, rather than checking whether a filename was passed in before applying IkiWiki::srcfile to the filename, it checks whether the file can be found, and if it cannot be found, then it applies IkiWiki::srcfile to the filename. >>>> --[[KathrynAndersen]] -The following patch fixes the problem: +>>>>> Can you test if this patch fixes that? --[[Joey]] - diff --git a/IkiWiki/Plugin/filecheck.pm b/IkiWiki/Plugin/filecheck.pm - index 01d4909..1cec0cf 100644 - --- a/IkiWiki/Plugin/filecheck.pm - +++ b/IkiWiki/Plugin/filecheck.pm - @@ -118,6 +118,10 @@ sub match_mimetype ($$;@) { - if (! defined $file) { - return IkiWiki::ErrorReason->new("no file specified"); - } - + if (! -e $file) { - + # get the absolute path of the file if you can't find it - + $file = IkiWiki::srcfile($file); - + } - - # Use ::magic to get the mime type, the idea is to only trust - # data obtained by examining the actual file contents. +
+diff --git a/IkiWiki/Plugin/remove.pm b/IkiWiki/Plugin/remove.pm
+index f59d026..0fc180f 100644
+--- a/IkiWiki/Plugin/remove.pm
++++ b/IkiWiki/Plugin/remove.pm
+@@ -49,7 +49,7 @@ sub check_canremove ($$$) {
+ 	# This is sorta overkill, but better safe than sorry.
+ 	if (! defined pagetype($pagesources{$page})) {
+ 		if (IkiWiki::Plugin::attachment->can("check_canattach")) {
+-			IkiWiki::Plugin::attachment::check_canattach($session, $page, $file);
++			IkiWiki::Plugin::attachment::check_canattach($session, $page, "$config{srcdir}/$file");
+ 		}
+ 		else {
+ 			error("removal of attachments is not allowed");
+diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm
+index 3908443..1a9da63 100644
+--- a/IkiWiki/Plugin/rename.pm
++++ b/IkiWiki/Plugin/rename.pm
+@@ -50,7 +50,7 @@ sub check_canrename ($$$$$$) {
+ 	IkiWiki::check_canedit($src, $q, $session);
+ 	if ($attachment) {
+ 		if (IkiWiki::Plugin::attachment->can("check_canattach")) {
+-			IkiWiki::Plugin::attachment::check_canattach($session, $src, $srcfile);
++			IkiWiki::Plugin::attachment::check_canattach($session, $src, "$config{srcdir}/$srcfile");
+ 		}
+ 		else {
+ 			error("renaming of attachments is not allowed");
+@@ -85,7 +85,7 @@ sub check_canrename ($$$$$$) {
+ 		if ($attachment) {
+ 			# Note that $srcfile is used here, not $destfile,
+ 			# because it wants the current file, to check it.
+-			IkiWiki::Plugin::attachment::check_canattach($session, $dest, $srcfile);
++			IkiWiki::Plugin::attachment::check_canattach($session, $dest, "$config{srcdir}/$srcfile");
+ 		}
+ 	}
+
-- cgit v1.2.3 From 62306d85f998b5bbd64d213e8c591809dbc07cb8 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Fri, 26 Mar 2010 04:06:31 +0000 Subject: It works! --- doc/bugs/filecheck_failing_to_find_files.mdwn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/bugs/filecheck_failing_to_find_files.mdwn b/doc/bugs/filecheck_failing_to_find_files.mdwn index 3209c8f53..f8d8e83e6 100644 --- a/doc/bugs/filecheck_failing_to_find_files.mdwn +++ b/doc/bugs/filecheck_failing_to_find_files.mdwn @@ -21,7 +21,9 @@ It turns out that the filecheck plugin couldn't find the file, because it was me >>>> The reason my patch worked is because, rather than checking whether a filename was passed in before applying IkiWiki::srcfile to the filename, it checks whether the file can be found, and if it cannot be found, then it applies IkiWiki::srcfile to the filename. >>>> --[[KathrynAndersen]] ->>>>> Can you test if this patch fixes that? --[[Joey]] +>>>>> Can you test if this patch fixes that? --[[Joey]] + +>>>>>> Yes, it works! --[[KathrynAndersen]]
 diff --git a/IkiWiki/Plugin/remove.pm b/IkiWiki/Plugin/remove.pm
-- 
cgit v1.2.3


From 0f28f310472a333134af63a18b73372f044b8278 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 26 Mar 2010 00:12:22 -0400
Subject: security?

---
 doc/plugins/contrib/pod/discussion.mdwn | 8 ++++++++
 1 file changed, 8 insertions(+)
 create mode 100644 doc/plugins/contrib/pod/discussion.mdwn

diff --git a/doc/plugins/contrib/pod/discussion.mdwn b/doc/plugins/contrib/pod/discussion.mdwn
new file mode 100644
index 000000000..8f4b625ee
--- /dev/null
+++ b/doc/plugins/contrib/pod/discussion.mdwn
@@ -0,0 +1,8 @@
+My one concern about this plugin is the `=for` markup in POD.
+
+> Some format names that formatters currently are known to
+> accept include "roff", "man", "latex", "tex", "text", and "html".
+
+I don't know which of these [[!cpan Pod::Xml]] supports. If it currently
+supports, or later support latex, that could be problimatic since that
+could maybe be used to include files or run code. --[[Joey]]
-- 
cgit v1.2.3


From 6693b3eafed5edb061ac31e046a441189660cd77 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 26 Mar 2010 00:15:15 -0400
Subject: on plugins and stuff

---
 doc/users/KathrynAndersen/discussion.mdwn | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 doc/users/KathrynAndersen/discussion.mdwn

diff --git a/doc/users/KathrynAndersen/discussion.mdwn b/doc/users/KathrynAndersen/discussion.mdwn
new file mode 100644
index 000000000..c44b28a93
--- /dev/null
+++ b/doc/users/KathrynAndersen/discussion.mdwn
@@ -0,0 +1,6 @@
+Had a look at your site. Sprawling, individualistic, using ikiwiki in lots of
+ways. Makes me happy. :) I see that I have let a lot of contrib plugins
+pile up. I will try to get to these. I'm particularly interested in
+your use of yaml+fields. Encourage you to go ahead with any others you
+have not submitted here, like pmap. (Unless it makes more sense to submit
+that as a patch to the existing map plugin.) --[[Joey]] 
-- 
cgit v1.2.3


From 243b0dd082cf4b66dfef55b2c9b459109bee7398 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 26 Mar 2010 00:16:21 -0400
Subject: fix the other half of the filecheck filename bug

---
 IkiWiki/Plugin/remove.pm                      | 2 +-
 IkiWiki/Plugin/rename.pm                      | 4 ++--
 debian/changelog                              | 2 +-
 doc/bugs/filecheck_failing_to_find_files.mdwn | 2 ++
 4 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/IkiWiki/Plugin/remove.pm b/IkiWiki/Plugin/remove.pm
index f59d0269e..0fc180f69 100644
--- a/IkiWiki/Plugin/remove.pm
+++ b/IkiWiki/Plugin/remove.pm
@@ -49,7 +49,7 @@ sub check_canremove ($$$) {
 	# This is sorta overkill, but better safe than sorry.
 	if (! defined pagetype($pagesources{$page})) {
 		if (IkiWiki::Plugin::attachment->can("check_canattach")) {
-			IkiWiki::Plugin::attachment::check_canattach($session, $page, $file);
+			IkiWiki::Plugin::attachment::check_canattach($session, $page, "$config{srcdir}/$file");
 		}
 		else {
 			error("removal of attachments is not allowed");
diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm
index 3908443ca..1a9da6363 100644
--- a/IkiWiki/Plugin/rename.pm
+++ b/IkiWiki/Plugin/rename.pm
@@ -50,7 +50,7 @@ sub check_canrename ($$$$$$) {
 	IkiWiki::check_canedit($src, $q, $session);
 	if ($attachment) {
 		if (IkiWiki::Plugin::attachment->can("check_canattach")) {
-			IkiWiki::Plugin::attachment::check_canattach($session, $src, $srcfile);
+			IkiWiki::Plugin::attachment::check_canattach($session, $src, "$config{srcdir}/$srcfile");
 		}
 		else {
 			error("renaming of attachments is not allowed");
@@ -85,7 +85,7 @@ sub check_canrename ($$$$$$) {
 		if ($attachment) {
 			# Note that $srcfile is used here, not $destfile,
 			# because it wants the current file, to check it.
-			IkiWiki::Plugin::attachment::check_canattach($session, $dest, $srcfile);
+			IkiWiki::Plugin::attachment::check_canattach($session, $dest, "$config{srcdir}/$srcfile");
 		}
 	}
 
diff --git a/debian/changelog b/debian/changelog
index 7249cdfa4..da1ab890e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -15,7 +15,7 @@ ikiwiki (3.20100324) UNRELEASED; urgency=low
   * Allow wrappers to be built using tcc.
   * Add support for setup files written in YAML.
   * Add --set-yaml switch for setting more complex config file options.
-  * filecheck: Fix bug that prevented the pagespecs from matching when
+  * filecheck: Fix bugs that prevented the pagespecs from matching when
     not called by attachment plugin.
 
  -- Joey Hess   Sat, 13 Mar 2010 14:48:10 -0500
diff --git a/doc/bugs/filecheck_failing_to_find_files.mdwn b/doc/bugs/filecheck_failing_to_find_files.mdwn
index f8d8e83e6..6501508e4 100644
--- a/doc/bugs/filecheck_failing_to_find_files.mdwn
+++ b/doc/bugs/filecheck_failing_to_find_files.mdwn
@@ -25,6 +25,8 @@ It turns out that the filecheck plugin couldn't find the file, because it was me
 
 >>>>>> Yes, it works! --[[KathrynAndersen]]
 
+applied && [[done]]
+
 
 diff --git a/IkiWiki/Plugin/remove.pm b/IkiWiki/Plugin/remove.pm
 index f59d026..0fc180f 100644
-- 
cgit v1.2.3


From 3cea3eb5da0a8f09a495deea9f2a2c73dc76deab Mon Sep 17 00:00:00 2001
From: "http://kerravonsen.dreamwidth.org/"
 
Date: Fri, 26 Mar 2010 04:30:43 +0000
Subject: response

---
 doc/plugins/contrib/pod/discussion.mdwn | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/doc/plugins/contrib/pod/discussion.mdwn b/doc/plugins/contrib/pod/discussion.mdwn
index 8f4b625ee..76e858680 100644
--- a/doc/plugins/contrib/pod/discussion.mdwn
+++ b/doc/plugins/contrib/pod/discussion.mdwn
@@ -3,6 +3,8 @@ My one concern about this plugin is the `=for` markup in POD.
 > Some format names that formatters currently are known to
 > accept include "roff", "man", "latex", "tex", "text", and "html".
 
-I don't know which of these [[!cpan Pod::Xml]] supports. If it currently
+I don't know which of these [[!cpan Pod::Xhtml]] supports. If it currently
 supports, or later support latex, that could be problimatic since that
 could maybe be used to include files or run code. --[[Joey]]
+
+> I don't know, either; the documentation for [[!cpan Pod:Xhtml]] is silent on this subject. --[[KathrynAndersen]]
-- 
cgit v1.2.3


From 8b09b29735b1dbbfe0ef33ad347ecb9bbdf45b75 Mon Sep 17 00:00:00 2001
From: "http://kerravonsen.dreamwidth.org/"
 
Date: Fri, 26 Mar 2010 04:41:37 +0000
Subject: response

---
 doc/users/KathrynAndersen/discussion.mdwn | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/doc/users/KathrynAndersen/discussion.mdwn b/doc/users/KathrynAndersen/discussion.mdwn
index c44b28a93..288ea8c51 100644
--- a/doc/users/KathrynAndersen/discussion.mdwn
+++ b/doc/users/KathrynAndersen/discussion.mdwn
@@ -4,3 +4,11 @@ pile up. I will try to get to these. I'm particularly interested in
 your use of yaml+fields. Encourage you to go ahead with any others you
 have not submitted here, like pmap. (Unless it makes more sense to submit
 that as a patch to the existing map plugin.) --[[Joey]] 
+
+> Thanks.  I would have put more up, but I didn't want to until they were properly documented, and other things have taken a higher priority.
+
+> I think pmap is probably better as a separate plugin, because it has additional dependencies (HTML::LinkList) which people might not want to have to install.
+
+> The "includepage" plugin I'm not sure whether it is worth releasing or not; it's basically a cut-down version of "inline", because the inline plugin is so complicated and has so many options, I felt more at ease to have something simpler.
+
+> --[[KathrynAndersen]]
-- 
cgit v1.2.3


From 1093c7e4b2ec5f3b4052ed5c1b5530560864a920 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 26 Mar 2010 00:57:46 -0400
Subject: new bug

---
 doc/bugs/depends_simple_mixup.mdwn | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
 create mode 100644 doc/bugs/depends_simple_mixup.mdwn

diff --git a/doc/bugs/depends_simple_mixup.mdwn b/doc/bugs/depends_simple_mixup.mdwn
new file mode 100644
index 000000000..506bef904
--- /dev/null
+++ b/doc/bugs/depends_simple_mixup.mdwn
@@ -0,0 +1,18 @@
+The [[bugs]] page, at least before I commit this, has a bug at the top that
+has been modified to link to done, and ikiwiki's dependency calculations
+failed to notice and update the bugs page. Looking at the indexdb, I saw
+that the page was not included in the `depends_simple` of the bugs page. 
+
+I was able to replicate the problem locally by starting off with the page
+not marked done (when it did appear in the bugs page `depends_simple`
+(appropriatly as a link dependency, since a change to the page removing the
+link would make it match)), then removing the done link. 
+
+At that point, it vanished from `depends_simple`. Presumably because
+the main (pagespec) depends for the bugs page now matched it, as a content
+dependency. But, it seems to me it should still be listed in
+`depends_simple` here. This, I think, is the cause of the bug.
+
+Then re-add the done link, and the dependency calc code breaks down,
+not noticing that bugs dependeded on the page and needs to be updated.
+--[[Joey]]
-- 
cgit v1.2.3


From 4cb464d6e52344b8a0dfd29e82ede78aef1385d3 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 26 Mar 2010 01:05:22 -0400
Subject: typo

---
 doc/bugs/depends_simple_mixup.mdwn | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/bugs/depends_simple_mixup.mdwn b/doc/bugs/depends_simple_mixup.mdwn
index 506bef904..c2845240d 100644
--- a/doc/bugs/depends_simple_mixup.mdwn
+++ b/doc/bugs/depends_simple_mixup.mdwn
@@ -4,7 +4,7 @@ failed to notice and update the bugs page. Looking at the indexdb, I saw
 that the page was not included in the `depends_simple` of the bugs page. 
 
 I was able to replicate the problem locally by starting off with the page
-not marked done (when it did appear in the bugs page `depends_simple`
+marked done (when it did appear in the bugs page `depends_simple`
 (appropriatly as a link dependency, since a change to the page removing the
 link would make it match)), then removing the done link. 
 
-- 
cgit v1.2.3


From 0d524ad672333fd0bafa64e81e261fd297c25580 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 26 Mar 2010 01:38:53 -0400
Subject: Fix incorrect influence info returned by a failing link() pagespec,
 that could lead to bad dependency handling in certian situations.

---
 IkiWiki.pm                         | 4 ++--
 debian/changelog                   | 2 ++
 doc/bugs/depends_simple_mixup.mdwn | 5 +++++
 t/pagespec_match.t                 | 8 +++++++-
 4 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/IkiWiki.pm b/IkiWiki.pm
index 022bfe3bd..927d62940 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -2215,7 +2215,7 @@ sub match_link ($$;@) {
 	my $from=exists $params{location} ? $params{location} : '';
 
 	my $links = $IkiWiki::links{$page};
-	return IkiWiki::FailReason->new("$page has no links", "" => 1)
+	return IkiWiki::FailReason->new("$page has no links", $page => $IkiWiki::DEPEND_LINKS, "" => 1)
 		unless $links && @{$links};
 	my $bestlink = IkiWiki::bestlink($from, $link);
 	foreach my $p (@{$links}) {
@@ -2232,7 +2232,7 @@ sub match_link ($$;@) {
 				if match_glob($p_rel, $link, %params);
 		}
 	}
-	return IkiWiki::FailReason->new("$page does not link to $link", "" => 1);
+	return IkiWiki::FailReason->new("$page does not link to $link", $page => $IkiWiki::DEPEND_LINKS, "" => 1);
 }
 
 sub match_backlink ($$;@) {
diff --git a/debian/changelog b/debian/changelog
index da1ab890e..b9a105552 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -17,6 +17,8 @@ ikiwiki (3.20100324) UNRELEASED; urgency=low
   * Add --set-yaml switch for setting more complex config file options.
   * filecheck: Fix bugs that prevented the pagespecs from matching when
     not called by attachment plugin.
+  * Fix incorrect influence info returned by a failing link() pagespec,
+    that could lead to bad dependency handling in certian situations.
 
  -- Joey Hess   Sat, 13 Mar 2010 14:48:10 -0500
 
diff --git a/doc/bugs/depends_simple_mixup.mdwn b/doc/bugs/depends_simple_mixup.mdwn
index c2845240d..2603ff04c 100644
--- a/doc/bugs/depends_simple_mixup.mdwn
+++ b/doc/bugs/depends_simple_mixup.mdwn
@@ -15,4 +15,9 @@ dependency. But, it seems to me it should still be listed in
 
 Then re-add the done link, and the dependency calc code breaks down,
 not noticing that bugs dependeded on the page and needs to be updated.
+
+Ok.. Turns out this was not a problem with the actual influences
+calculation or dependency calculation code. Whew! `match_link`
+just didn't set the influence correctly when failing. [[fixed|done]]
+
 --[[Joey]]
diff --git a/t/pagespec_match.t b/t/pagespec_match.t
index 8b0be4e8a..ade9bca5a 100755
--- a/t/pagespec_match.t
+++ b/t/pagespec_match.t
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 use warnings;
 use strict;
-use Test::More tests => 72;
+use Test::More tests => 75;
 
 BEGIN { use_ok("IkiWiki"); }
 
@@ -54,6 +54,7 @@ $config{userdir}="";
 $links{foo}=[qw{bar baz}];
 $links{bar}=[];
 $links{baz}=[];
+$links{meh}=[];
 $links{"bugs/foo"}=[qw{bugs/done}];
 $links{"bugs/done"}=[];
 $links{"bugs/bar"}=[qw{done}];
@@ -82,6 +83,7 @@ ok(! pagespec_match("bar", ""), "empty pagespec should match nothing");
 ok(! pagespec_match("bar", "    	"), "blank pagespec should match nothing");
 ok(pagespec_match("ook", "link(blog/tags/foo)"), "link internal absolute success");
 ok(pagespec_match("ook", "link(/blog/tags/foo)"), "link explicit absolute success");
+ok(pagespec_match("meh", "!link(done)"), "negated failing match is a success");
 
 $IkiWiki::pagectime{foo}=1154532692; # Wed Aug  2 11:26 EDT 2006
 $IkiWiki::pagectime{bar}=1154532695; # after
@@ -122,3 +124,7 @@ $i=pagespec_match("foo", "link(baz) and created_after(bar)")->influences;
 is(join(",", sort keys %$i), 'bar,foo', "influences add up over OR");
 $i=pagespec_match("foo", "!link(baz) and !created_after(bar)")->influences;
 is(join(",", sort keys %$i), 'bar,foo', "influences unaffected by negation");
+$i=pagespec_match("foo", "!link(baz) and !created_after(bar)")->influences;
+is(join(",", sort keys %$i), 'bar,foo', "influences unaffected by negation");
+$i=pagespec_match("meh", "!link(done)")->influences;
+is(join(",", sort keys %$i), 'meh', "a negated, failing link test is successful, so the page is a link influence");
-- 
cgit v1.2.3


From 0dec80ee0cb9a2ac9dd4287645d02e5a216f2d0b Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 26 Mar 2010 01:48:37 -0400
Subject: close, unreproducible

---
 ...n_recentchange_entry_for_a_change_removing_an_invalid_pagespec.mdwn | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/doc/bugs/barfs_on_recentchange_entry_for_a_change_removing_an_invalid_pagespec.mdwn b/doc/bugs/barfs_on_recentchange_entry_for_a_change_removing_an_invalid_pagespec.mdwn
index 42e6b9e27..c3cbff43e 100644
--- a/doc/bugs/barfs_on_recentchange_entry_for_a_change_removing_an_invalid_pagespec.mdwn
+++ b/doc/bugs/barfs_on_recentchange_entry_for_a_change_removing_an_invalid_pagespec.mdwn
@@ -39,3 +39,6 @@ a year ago in September 2007.
 > ikiwiki. (Doesn't quite seem to be version 2.53.x either) Try with a current
 > version, and see if you can send me a source tree that can reproduce the
 > problem? --[[Joey]]
+
+Did not hear back, so calling this [[done]], unless I hear differently.
+--[[Joey]]
-- 
cgit v1.2.3


From 22b9582cddfcb0ee073c99f8867537f67d79fc38 Mon Sep 17 00:00:00 2001
From: "http://users.itk.ppke.hu/~cstamas/openid/"
 
Date: Fri, 26 Mar 2010 08:57:20 +0000
Subject: init page bugreport

---
 ...-transition_does_not_set_perl_moduels_path_properly.mdwn | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 doc/bugs/ikiwiki-transition_does_not_set_perl_moduels_path_properly.mdwn

diff --git a/doc/bugs/ikiwiki-transition_does_not_set_perl_moduels_path_properly.mdwn b/doc/bugs/ikiwiki-transition_does_not_set_perl_moduels_path_properly.mdwn
new file mode 100644
index 000000000..7f8045164
--- /dev/null
+++ b/doc/bugs/ikiwiki-transition_does_not_set_perl_moduels_path_properly.mdwn
@@ -0,0 +1,13 @@
+When installing ikiwiki the perl module path is setup correctly
+
+    use lib '/usr/local/ikiwiki-3.20100312/share/perl/5.10.0';
+
+This is not true for ikiwiki-transition:
+
+    $ PATH=/usr/local/ikiwiki-3.20100312/bin ikiwiki-transition prefix_directives ikiwiki.setup
+    Can't locate IkiWiki.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/local/ikiwiki-3.20100312/bin/ikiwiki-transition line 4.
+    BEGIN failed--compilation aborted at /usr/local/ikiwiki-3.20100312/bin/ikiwiki-transition line 4.
+
+The missing line should be added.
+
+Thanks!
-- 
cgit v1.2.3


From 99b402cd622d38cb8337498d8fdb4f135e8be03c Mon Sep 17 00:00:00 2001
From: "http://users.itk.ppke.hu/~cstamas/openid/"
 
Date: Fri, 26 Mar 2010 08:58:41 +0000
Subject: line break for better view

---
 .../ikiwiki-transition_does_not_set_perl_moduels_path_properly.mdwn   | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/doc/bugs/ikiwiki-transition_does_not_set_perl_moduels_path_properly.mdwn b/doc/bugs/ikiwiki-transition_does_not_set_perl_moduels_path_properly.mdwn
index 7f8045164..5dd4bc780 100644
--- a/doc/bugs/ikiwiki-transition_does_not_set_perl_moduels_path_properly.mdwn
+++ b/doc/bugs/ikiwiki-transition_does_not_set_perl_moduels_path_properly.mdwn
@@ -5,7 +5,9 @@ When installing ikiwiki the perl module path is setup correctly
 This is not true for ikiwiki-transition:
 
     $ PATH=/usr/local/ikiwiki-3.20100312/bin ikiwiki-transition prefix_directives ikiwiki.setup
-    Can't locate IkiWiki.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/local/ikiwiki-3.20100312/bin/ikiwiki-transition line 4.
+    Can't locate IkiWiki.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0
+     /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .)
+     at /usr/local/ikiwiki-3.20100312/bin/ikiwiki-transition line 4.
     BEGIN failed--compilation aborted at /usr/local/ikiwiki-3.20100312/bin/ikiwiki-transition line 4.
 
 The missing line should be added.
-- 
cgit v1.2.3


From d29419ab0bd181beda6971bf622c3ba8bdd2fd8c Mon Sep 17 00:00:00 2001
From: "http://users.itk.ppke.hu/~cstamas/openid/"
 
Date: Fri, 26 Mar 2010 09:43:50 +0000
Subject: me too - thanks

---
 doc/bugs/Error:_Your_login_session_has_expired._.mdwn | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/doc/bugs/Error:_Your_login_session_has_expired._.mdwn b/doc/bugs/Error:_Your_login_session_has_expired._.mdwn
index 046d6e10d..b993cd8e7 100644
--- a/doc/bugs/Error:_Your_login_session_has_expired._.mdwn
+++ b/doc/bugs/Error:_Your_login_session_has_expired._.mdwn
@@ -41,4 +41,6 @@ Whilst trying to edit http://hugh.vm.bytemark.co.uk/ikiwiki.cgi via OpenID. Any
 
 Thanks for you excellent analysis. The bug was due to old pre-3.0 **templates** laying about. After deleting them, ikiwiki defaults to its own templates. Clever. :-)
 
+Great, this saved me big time! It is a google 1st hit. I had the same with accidentally using old templates. Thanks! --[[cstamas]]
+
 [[bugs/done]]
-- 
cgit v1.2.3


From 087085899f7049434ac19761f27826cec9e458d5 Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Fri, 26 Mar 2010 13:03:37 +0000
Subject:

---
 doc/forum/an_alternative_approach_to_structured_data.mdwn | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/doc/forum/an_alternative_approach_to_structured_data.mdwn b/doc/forum/an_alternative_approach_to_structured_data.mdwn
index 188e627f0..045bfd7aa 100644
--- a/doc/forum/an_alternative_approach_to_structured_data.mdwn
+++ b/doc/forum/an_alternative_approach_to_structured_data.mdwn
@@ -37,8 +37,12 @@ I have written additional plugins which integrate with the [[plugins/contrib/fie
 > with different syntaxes while keeping `field` for the
 > behind-the-scenes bits.
 >
+>> I've started using `field` on a private site and it's working
+>> well for me; I'll try to do some code review on its
+>> [[plugins/contrib/field/discussion]] page. --s
+>
 > My [[plugins/contrib/album]] plugin could benefit from
-> integration with [[field]] for photos' captions and so on,
+> integration with `field` for photos' captions and so on,
 > probably... I'll try to work on that at some point.
 >
 > [[plugins/contrib/report]] may be doing too much, though:
-- 
cgit v1.2.3


From d88af43011193bb0eef79b749ae9a93eda5d266e Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Fri, 26 Mar 2010 13:20:33 +0000
Subject: brief review of field; fieldsort plugin

---
 doc/plugins/contrib/field/discussion.mdwn | 62 +++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)
 create mode 100644 doc/plugins/contrib/field/discussion.mdwn

diff --git a/doc/plugins/contrib/field/discussion.mdwn b/doc/plugins/contrib/field/discussion.mdwn
new file mode 100644
index 000000000..fc1759fab
--- /dev/null
+++ b/doc/plugins/contrib/field/discussion.mdwn
@@ -0,0 +1,62 @@
+Having tried out `field`, some comments (from [[smcv]]):
+
+The general concept looks great.
+
+The `pagetemplate` hook seems quite namespace-polluting: on a site containing
+a list of books, I'd like to have an `author` field, but that would collide
+with IkiWiki's use of `` for the author of the *page*
+(i.e. me). Perhaps it'd be better if the pagetemplate hook was only active for
+`` or something? (For those who want the current
+behaviour, an auxiliary plugin would be easy.)
+
+From a coding style point of view, the `$CamelCase` variable names aren't
+IkiWiki style, and the `match_foo` functions look as though they could benefit
+from being thin wrappers around a common `&IkiWiki::Plugin::field::match`
+function (see `meta` for a similar approach).
+
+I think the documentation would probably be clearer in a less manpage-like
+and more ikiwiki-like style?
+
+If one of my branches from [[todo/allow_plugins_to_add_sorting_methods]] is
+accepted, a `field()` cmp type would mean that [[plugins/contrib/report]] can
+stop reimplementing sorting. Here's the implementation I'm using, with
+your "sortspec" concept (a sort-hook would be very similar): if merged,
+I think it should just be part of `field` rather than a separate plugin.
+
+	# Copyright © 2010 Simon McVittie, released under GNU LGPL >= 2.1
+	package IkiWiki::Plugin::fieldsort;
+	use warnings;
+	use strict;
+	use IkiWiki 3.00;
+	use IkiWiki::Plugin::field;
+
+	sub import {
+		hook(type => "getsetup", id => "fieldsort",  call => \&getsetup);
+	}
+
+	sub getsetup () {
+		return
+			plugin => {
+				safe => 1,
+				rebuild => undef,
+			},
+	}
+
+	package IkiWiki::PageSpec;
+
+	sub check_cmp_field {
+		if (!length $_[0]) {
+			error("sort=field requires a parameter");
+		}
+	}
+
+	sub cmp_field {
+		my $left = IkiWiki::Plugin::field::field_get_value($_[2], $_[0]);
+		my $right = IkiWiki::Plugin::field::field_get_value($_[2], $_[1]);
+
+		$left = "" unless defined $left;
+		$right = "" unless defined $right;
+		return $left cmp $right;
+	}
+
+	1;
-- 
cgit v1.2.3


From bea828a2f6b455c46f2b5d6c16805958a2e3412a Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Fri, 26 Mar 2010 13:30:52 +0000
Subject: doesn't field+template already cover this?

---
 doc/plugins/contrib/ftemplate/discussion.mdwn | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 doc/plugins/contrib/ftemplate/discussion.mdwn

diff --git a/doc/plugins/contrib/ftemplate/discussion.mdwn b/doc/plugins/contrib/ftemplate/discussion.mdwn
new file mode 100644
index 000000000..851ccf960
--- /dev/null
+++ b/doc/plugins/contrib/ftemplate/discussion.mdwn
@@ -0,0 +1,6 @@
+Is this actually necessary? Doesn't the combination of [[plugins/template]]
+with [[plugins/contrib/field]]'s `pagetemplate` hook provide the same
+functionality? I suppose one missing thing is that `ftemplate` looks in
+the "system" templates directories, not just in the wiki, but that
+seems orthogonal (and might even be a good enhancement to `template`).
+--[[smcv]]
-- 
cgit v1.2.3


From fffd7e7e026f61e03b2fa052acdf7130889f6343 Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Fri, 26 Mar 2010 13:43:37 +0000
Subject: oh, my mistake... this *is* necessary, but could perhaps be done
 better?

---
 doc/plugins/contrib/ftemplate/discussion.mdwn | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/doc/plugins/contrib/ftemplate/discussion.mdwn b/doc/plugins/contrib/ftemplate/discussion.mdwn
index 851ccf960..eb2ec6f13 100644
--- a/doc/plugins/contrib/ftemplate/discussion.mdwn
+++ b/doc/plugins/contrib/ftemplate/discussion.mdwn
@@ -1,6 +1,13 @@
-Is this actually necessary? Doesn't the combination of [[plugins/template]]
-with [[plugins/contrib/field]]'s `pagetemplate` hook provide the same
-functionality? I suppose one missing thing is that `ftemplate` looks in
+I initially thought this wasn't actually necessary - the combination
+of [[plugins/template]] with [[plugins/contrib/field]]'s `pagetemplate`
+hook ought to provide the same functionality. However, `template`
+doesn't run `pagetemplate` hooks; a more general version of this
+plugin would be to have a variant of `template` that runs `pagetemplate`
+hooks (probably easiest to just patch `template` to implement a
+second directive, or have a special parameter `run_hooks="yes"`,
+or something).
+
+Another missing thing is that `ftemplate` looks in
 the "system" templates directories, not just in the wiki, but that
-seems orthogonal (and might even be a good enhancement to `template`).
+seems orthogonal (and might be a good enhancement to `template` anyway).
 --[[smcv]]
-- 
cgit v1.2.3


From b9958fe3cf1a27b58d3e2bd59c76553eb0046782 Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Fri, 26 Mar 2010 14:09:04 +0000
Subject: brief review of report

---
 doc/plugins/contrib/report/discussion.mdwn | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 doc/plugins/contrib/report/discussion.mdwn

diff --git a/doc/plugins/contrib/report/discussion.mdwn b/doc/plugins/contrib/report/discussion.mdwn
new file mode 100644
index 000000000..6b1e28f6a
--- /dev/null
+++ b/doc/plugins/contrib/report/discussion.mdwn
@@ -0,0 +1,23 @@
+Wow, this plugin does a lot... it seems to be `inline` (but without the feeds
+or the ability to not have `archive="yes"`), plus part of
+[[plugins/contrib/trail]], plus some sorting, plus an ingenious workaround
+for template evaluation being relatively stateless.
+
+A large part of this plugin would just fall off if one of the versions of
+[[todo/allow_add_plugins_to_add_sorting_methods]] was merged, which was a
+large part of the idea of that feature request :-) To make use of that
+you'd have to use `pagespec_match_list` in the trail case too, but that's
+easy enough - just add `list => [@the_trail_pages]` to the arguments.
+
+Another large part would fall off if this plugin required, and internally
+invoked, `inline` (like my `comments` plugin does) - `inline` runs
+`pagetemplate` hooks, and in particular, it'll run the `field` hook.
+Alternatively, this plugin could invoke `pagetemplate` hooks itself,
+removing the special case for `field`.
+
+Perhaps the `headers` thing could migrate into inline somehow? That might
+lead to making inline too big, though.
+
+Is the intention that the `trail` part is a performance hack, or a way
+to select pages? How does it relate to [[todo/wikitrails]] or
+[[plugins/contrib/trail]]? --[[smcv]]
-- 
cgit v1.2.3


From 3c98cf653f6d6950a425620acf0279df902d004b Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Fri, 26 Mar 2010 15:09:11 +0000
Subject: fix link

---
 doc/plugins/contrib/report/discussion.mdwn | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/plugins/contrib/report/discussion.mdwn b/doc/plugins/contrib/report/discussion.mdwn
index 6b1e28f6a..918d0779b 100644
--- a/doc/plugins/contrib/report/discussion.mdwn
+++ b/doc/plugins/contrib/report/discussion.mdwn
@@ -4,7 +4,7 @@ or the ability to not have `archive="yes"`), plus part of
 for template evaluation being relatively stateless.
 
 A large part of this plugin would just fall off if one of the versions of
-[[todo/allow_add_plugins_to_add_sorting_methods]] was merged, which was a
+"[[todo/allow_plugins_to_add_sorting_methods]]" was merged, which was a
 large part of the idea of that feature request :-) To make use of that
 you'd have to use `pagespec_match_list` in the trail case too, but that's
 easy enough - just add `list => [@the_trail_pages]` to the arguments.
-- 
cgit v1.2.3


From 1273f1de52998cf54afb3445fd8c616bce53e698 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 26 Mar 2010 13:11:02 -0400
Subject: Add preprocessed 'use lib' line to ikiwiki-transition and
 ikiwiki-calendar if necessary for unusual install.

---
 .gitignore                                         |   3 +-
 Makefile.PL                                        |  16 +-
 debian/changelog                                   |   2 +
 ...on_does_not_set_perl_moduels_path_properly.mdwn |   2 +
 ikiwiki-calendar                                   |  57 ----
 ikiwiki-calendar.in                                |  58 ++++
 ikiwiki-transition                                 | 348 --------------------
 ikiwiki-transition.in                              | 349 +++++++++++++++++++++
 ikiwiki.spec                                       |   2 +-
 9 files changed, 423 insertions(+), 414 deletions(-)
 delete mode 100755 ikiwiki-calendar
 create mode 100755 ikiwiki-calendar.in
 delete mode 100755 ikiwiki-transition
 create mode 100755 ikiwiki-transition.in

diff --git a/.gitignore b/.gitignore
index 8de36e2c8..e9ab152b6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,9 +5,10 @@ blib/*
 doc/.ikiwiki/*
 html/*
 ikiwiki.out
+ikiwiki-transition.out
+ikiwiki-calendar.out
 pm_to_blib
 *.man
-build-stamp
 po/po2wiki_stamp
 po/underlays/*/*.mdwn
 po/underlays/basewiki/*/*.mdwn
diff --git a/Makefile.PL b/Makefile.PL
index 52421a711..5a9028b51 100755
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -28,15 +28,16 @@ W3M_CGI_BIN?=$(PREFIX)/lib/w3m/cgi-bin
 
 tflag=$(shell if [ -n "$$NOTAINT" ] && [ "$$NOTAINT" != 1 ]; then printf -- "-T"; fi)
 extramodules=$(shell if [ "$$PROFILE" = 1 ]; then printf -- "-d:NYTProf"; fi)
+outprogs=ikiwiki.out ikiwiki-transition.out ikiwiki-calendar.out
 
-ikiwiki.out: ikiwiki.in
-	./pm_filter $(PREFIX) $(VER) $(PROBABLE_INST_LIB) < ikiwiki.in > ikiwiki.out
-	chmod +x ikiwiki.out
+%.out: %.in
+	./pm_filter $(PREFIX) $(VER) $(PROBABLE_INST_LIB) < $< > $@
+	chmod +x $@
 
 ikiwiki.setup: ikiwiki.out
 	HOME=/home/me $(PERL) -Iblib/lib $(extramodules) $(tflag) ikiwiki.out -libdir . -dumpsetup ikiwiki.setup
 
-extra_build: ikiwiki.out ikiwiki.setup docwiki
+extra_build: $(outprogs) ikiwiki.setup docwiki
 	./mdwn2man ikiwiki 1 doc/usage.mdwn > ikiwiki.man
 	./mdwn2man ikiwiki-mass-rebuild 8 doc/ikiwiki-mass-rebuild.mdwn > ikiwiki-mass-rebuild.man
 	./mdwn2man ikiwiki-makerepo 1 doc/ikiwiki-makerepo.mdwn > ikiwiki-makerepo.man
@@ -52,7 +53,7 @@ docwiki: ikiwiki.out
 
 extra_clean:
 	$(PERL) -I. $(extramodules) $(tflag) ikiwiki.in -libdir . -setup docwiki.setup -clean
-	rm -f *.man ikiwiki.out ikiwiki.setup plugins/*.pyc
+	rm -f *.man $(outprogs) ikiwiki.setup plugins/*.pyc
 	$(MAKE) -C po clean
 
 underlay_install:
@@ -115,8 +116,9 @@ extra_install: underlay_install
 	install ikiwiki-w3m.cgi $(DESTDIR)$(W3M_CGI_BIN)
 
 	install -d $(DESTDIR)$(PREFIX)/bin
-	install ikiwiki.out $(DESTDIR)$(PREFIX)/bin/ikiwiki
-	install ikiwiki-makerepo ikiwiki-transition ikiwiki-update-wikilist ikiwiki-calendar $(DESTDIR)$(PREFIX)/bin/
+	for prog in $(outprogs); do \
+		install $$prog $(DESTDIR)$(PREFIX)/bin/$$(shell echo $$prog | sed 's/\.out//'); \
+	done
 
 	$(MAKE) -C po install DESTDIR=$(DESTDIR) PREFIX=$(PREFIX)
 	
diff --git a/debian/changelog b/debian/changelog
index b9a105552..57406c6d3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -19,6 +19,8 @@ ikiwiki (3.20100324) UNRELEASED; urgency=low
     not called by attachment plugin.
   * Fix incorrect influence info returned by a failing link() pagespec,
     that could lead to bad dependency handling in certian situations.
+  * Add preprocessed 'use lib' line to ikiwiki-transition and ikiwiki-calendar
+    if necessary for unusual install.
 
  -- Joey Hess   Sat, 13 Mar 2010 14:48:10 -0500
 
diff --git a/doc/bugs/ikiwiki-transition_does_not_set_perl_moduels_path_properly.mdwn b/doc/bugs/ikiwiki-transition_does_not_set_perl_moduels_path_properly.mdwn
index 5dd4bc780..b3e87b529 100644
--- a/doc/bugs/ikiwiki-transition_does_not_set_perl_moduels_path_properly.mdwn
+++ b/doc/bugs/ikiwiki-transition_does_not_set_perl_moduels_path_properly.mdwn
@@ -13,3 +13,5 @@ This is not true for ikiwiki-transition:
 The missing line should be added.
 
 Thanks!
+
+[[done]] --[[Joey]] 
diff --git a/ikiwiki-calendar b/ikiwiki-calendar
deleted file mode 100755
index a9548d6ec..000000000
--- a/ikiwiki-calendar
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/perl
-use warnings;
-use strict;
-use IkiWiki;
-use IkiWiki::Setup;
-use Getopt::Long;
-
-sub usage () {
-	die gettext("usage: ikiwiki-calendar [-f] your.setup [pagespec] [year]"), "\n";
-}
-
-my $force=0;
-GetOptions(
-	"force" => \$force,
-) || usage();
-my $setup=shift		|| usage();
-my $pagespec=shift	|| "*";
-my $startyear=shift	|| 1900+(localtime(time))[5];
-my $endyear=shift	|| $startyear;
-
-%config=IkiWiki::defaultconfig();
-IkiWiki::Setup::load($setup);
-IkiWiki::loadplugins();
-IkiWiki::checkconfig();
-
-my $archivebase = 'archives';
-$archivebase = $config{archivebase} if defined $config{archivebase};
-
-sub writearchive ($$;$) {
-	my $template=template(shift);
-	my $year=shift;
-	my $month=shift;
-
-	my $page=defined $month ? "$year/$month" : $year;
-
-	my $pagefile=newpagefile("$archivebase/$page", $config{default_pageext});
-	$template->param(pagespec => $pagespec);
-	$template->param(year => $year);
-	$template->param(month => $month) if defined $month;
-
-	if ($force || ! -e "$config{srcdir}/$pagefile") {
-		writefile($pagefile, $config{srcdir}, $template->output);
-		IkiWiki::rcs_add($pagefile) if $config{rcs};
-	}
-}
-
-foreach my $y ($startyear..$endyear) {
-	writearchive("calendaryear.tmpl", $y);
-	foreach my $m (qw{01 02 03 04 05 06 07 08 09 10 11 12}) {
-		writearchive("calendarmonth.tmpl", $y, $m);
-	}
-}
-
-IkiWiki::rcs_commit_staged(gettext("calendar update"), undef, undef)
-	if $config{rcs};
-
-system("ikiwiki", "-setup", $setup, "-refresh");
diff --git a/ikiwiki-calendar.in b/ikiwiki-calendar.in
new file mode 100755
index 000000000..9738ea5f7
--- /dev/null
+++ b/ikiwiki-calendar.in
@@ -0,0 +1,58 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use lib '.'; # For use in nonstandard directory, munged by Makefile.
+use IkiWiki;
+use IkiWiki::Setup;
+use Getopt::Long;
+
+sub usage () {
+	die gettext("usage: ikiwiki-calendar [-f] your.setup [pagespec] [year]"), "\n";
+}
+
+my $force=0;
+GetOptions(
+	"force" => \$force,
+) || usage();
+my $setup=shift		|| usage();
+my $pagespec=shift	|| "*";
+my $startyear=shift	|| 1900+(localtime(time))[5];
+my $endyear=shift	|| $startyear;
+
+%config=IkiWiki::defaultconfig();
+IkiWiki::Setup::load($setup);
+IkiWiki::loadplugins();
+IkiWiki::checkconfig();
+
+my $archivebase = 'archives';
+$archivebase = $config{archivebase} if defined $config{archivebase};
+
+sub writearchive ($$;$) {
+	my $template=template(shift);
+	my $year=shift;
+	my $month=shift;
+
+	my $page=defined $month ? "$year/$month" : $year;
+
+	my $pagefile=newpagefile("$archivebase/$page", $config{default_pageext});
+	$template->param(pagespec => $pagespec);
+	$template->param(year => $year);
+	$template->param(month => $month) if defined $month;
+
+	if ($force || ! -e "$config{srcdir}/$pagefile") {
+		writefile($pagefile, $config{srcdir}, $template->output);
+		IkiWiki::rcs_add($pagefile) if $config{rcs};
+	}
+}
+
+foreach my $y ($startyear..$endyear) {
+	writearchive("calendaryear.tmpl", $y);
+	foreach my $m (qw{01 02 03 04 05 06 07 08 09 10 11 12}) {
+		writearchive("calendarmonth.tmpl", $y, $m);
+	}
+}
+
+IkiWiki::rcs_commit_staged(gettext("calendar update"), undef, undef)
+	if $config{rcs};
+
+system("ikiwiki", "-setup", $setup, "-refresh");
diff --git a/ikiwiki-transition b/ikiwiki-transition
deleted file mode 100755
index 1bebb1176..000000000
--- a/ikiwiki-transition
+++ /dev/null
@@ -1,348 +0,0 @@
-#!/usr/bin/perl
-use warnings;
-use strict;
-use IkiWiki;
-use HTML::Entities;
-
-my $regex = qr{
-	(\\?)		# 1: escape?
-	\[\[(!?)	# directive open; 2: optional prefix
-	([-\w]+)	# 3: command
-	(		# 4: the parameters (including initial whitespace)
-	\s+
-		(?:
-			(?:[-\w]+=)?		# named parameter key?
-			(?:
-				""".*?"""	# triple-quoted value
-				|
-				"[^"]+"		# single-quoted value
-				|
-				[^\s\]]+	# unquoted value
-			)
-			\s*			# whitespace or end
-						# of directive
-		)
-	*)		# 0 or more parameters
-	\]\]		# directive closed
-}sx;
-
-sub handle_directive {
-	my $escape = shift;
-	my $prefix = shift;
-	my $directive = shift;
-	my $args = shift;
-
-	if (length $escape) {
-		return "${escape}[[${prefix}${directive}${args}]]"
-	}
-	if ($directive =~ m/^(if|more|table|template|toggleable)$/) {
-		$args =~ s{$regex}{handle_directive($1, $2, $3, $4)}eg;
-	}
-	return "[[!${directive}${args}]]"
-}
-
-sub prefix_directives {
-	loadsetup(shift);
-
-	IkiWiki::loadplugins();
-	IkiWiki::checkconfig();
-	IkiWiki::loadindex();
-
-	if (! %pagesources) {
-		error "ikiwiki has not built this wiki yet, cannot transition";
-	}
-
-	foreach my $page (values %pagesources) {
-		next unless defined pagetype($page) &&
-		            -f $config{srcdir}."/".$page;
-		my $content=readfile($config{srcdir}."/".$page);
-		my $oldcontent=$content;
-		$content=~s{$regex}{handle_directive($1, $2, $3, $4)}eg;
-		if ($oldcontent ne $content) {
-			writefile($page, $config{srcdir}, $content);
-		}
-	}
-}
-
-sub indexdb {
-	setstatedir(shift);
-
-	# Note: No lockwiki here because ikiwiki already locks it
-	# before calling this.	
-	if (! IkiWiki::oldloadindex()) {
-		die "failed to load index\n";
-	}
-	if (! IkiWiki::saveindex()) {
-		die "failed to save indexdb\n"
-	}
-	if (! IkiWiki::loadindex()) {
-		die "transition failed, cannot load new indexdb\n";
-	}
-	if (! unlink("$config{wikistatedir}/index")) {
-		die "unlink failed: $!\n";
-	}
-}
-
-sub hashpassword {
-	setstatedir(shift);
-
-	eval q{use IkiWiki::UserInfo};
-	eval q{use Authen::Passphrase::BlowfishCrypt};
-	if ($@) {
-		error("ikiwiki-transition hashpassword: failed to load Authen::Passphrase, passwords not hashed");
-	}
-
-	IkiWiki::lockwiki();
-	IkiWiki::loadplugin("passwordauth");
-	my $userinfo = IkiWiki::userinfo_retrieve();
-	foreach my $user (keys %{$userinfo}) {
-		if (ref $userinfo->{$user} &&
-		    exists $userinfo->{$user}->{password} &&
-		    length $userinfo->{$user}->{password} &&
-		    ! exists $userinfo->{$user}->{cryptpassword}) {
-			IkiWiki::Plugin::passwordauth::setpassword($user, $userinfo->{$user}->{password});
-		}
-	}
-}
-
-sub aggregateinternal {
-	loadsetup(shift);
-	require IkiWiki::Plugin::aggregate;
-	IkiWiki::checkconfig();
-	IkiWiki::Plugin::aggregate::migrate_to_internal();
-}
-
-sub setupformat {
-	my $setup=shift;
-
-	loadsetup($setup);
-	IkiWiki::checkconfig();
-	
-	# unpack old-format wrappers setting into new fields
-	my $cgi_seen=0;
-	my $rcs_seen=0;
-	foreach my $wrapper (@{$config{wrappers}}) {
-		if ($wrapper->{cgi}) {
-			if ($cgi_seen) {
-				die "don't know what to do with second cgi wrapper ".$wrapper->{wrapper}."\n";
-			}
-			$cgi_seen++;
-			print "setting cgi_wrapper to ".$wrapper->{wrapper}."\n";
-			$config{cgi_wrapper}=$wrapper->{wrapper};
-			$config{cgi_wrappermode}=$wrapper->{wrappermode}
-				if exists $wrapper->{wrappermode};
-		}
-		elsif ($config{rcs}) {
-			if ($rcs_seen) {
-				die "don't know what to do with second rcs wrapper ".$wrapper->{wrapper}."\n";
-			}
-			$rcs_seen++;
-			print "setting $config{rcs}_wrapper to ".$wrapper->{wrapper}."\n";
-			$config{$config{rcs}."_wrapper"}=$wrapper->{wrapper};
-			$config{$config{rcs}."_wrappermode"}=$wrapper->{wrappermode}
-				if exists $wrapper->{wrappermode};
-		}
-		else {
-			die "don't know what to do with wrapper ".$wrapper->{wrapper}."\n";
-		}
-	}
-
-	IkiWiki::Setup::dump($setup);
-}
-
-sub moveprefs {
-	my $setup=shift;
-
-	loadsetup($setup);
-	IkiWiki::checkconfig();
-
-	eval q{use IkiWiki::UserInfo};
-	error $@ if $@;
-
-	foreach my $field (qw{allowed_attachments locked_pages}) {
-		my $orig=$config{$field};
-		foreach my $admin (@{$config{adminuser}}) {
-			my $a=IkiWiki::userinfo_get($admin, $field);
-			if (defined $a && length $a &&
-			    # might already have been moved
-			    (! defined $orig || $a ne $orig)) {
-			    	if (defined $config{$field} &&
-				    length $config{$field}) {
-					$config{$field}=IkiWiki::pagespec_merge($config{$field}, $a);
-				}
-				else {
-					$config{$field}=$a;
-				}
-			}
-		}
-	}
-
-	my %banned=map { $_ => 1 } @{$config{banned_users}}, IkiWiki::get_banned_users();
-	$config{banned_users}=[sort keys %banned];
-
-	IkiWiki::Setup::dump($setup);
-}
-
-sub deduplinks {
-	loadsetup(shift);
-	IkiWiki::loadplugins();
-	IkiWiki::checkconfig();
-	IkiWiki::loadindex();
-	foreach my $page (keys %links) {
-		my %l;
-		$l{$_}=1 foreach @{$links{$page}};
-		$links{$page}=[keys %l]
-	}
-	IkiWiki::saveindex();
-}
-
-sub setstatedir {
-	my $dirorsetup=shift;
-
-	if (! defined $dirorsetup) {
-		usage();		
-	}
-
-	if (-d $dirorsetup) {
-		$config{wikistatedir}=$dirorsetup."/.ikiwiki";
-	}
-	elsif (-f $dirorsetup) {
-		loadsetup($dirorsetup);
-	}
-	else {
-		error("ikiwiki-transition: $dirorsetup does not exist");
-	}
-
-	if (! -d $config{wikistatedir}) {
-		error("ikiwiki-transition: $config{wikistatedir} does not exist");
-	}
-}
-	
-sub loadsetup {
-	my $setup=shift;
-	if (! defined $setup) {
-		usage();
-	}
-
-	require IkiWiki::Setup;
-
-	%config = IkiWiki::defaultconfig();
-	IkiWiki::Setup::load($setup);
-}
-
-sub usage {
-	print STDERR "Usage: ikiwiki-transition type ...\n";
-	print STDERR "Currently supported transition subcommands:\n";
-	print STDERR "\tprefix_directives setupfile ...\n";
-	print STDERR "\taggregateinternal setupfile\n";
-	print STDERR "\tsetupformat setupfile\n";
-	print STDERR "\tmoveprefs setupfile\n";
-	print STDERR "\thashpassword setupfile|srcdir\n";
-	print STDERR "\tindexdb setupfile|srcdir\n";
-	print STDERR "\tdeduplinks setupfile\n";
-	exit 1;
-}
-
-usage() unless @ARGV;
-
-my $mode=shift;
-if ($mode eq 'prefix_directives') {
-	prefix_directives(@ARGV);
-}
-elsif ($mode eq 'hashpassword') {
-	hashpassword(@ARGV);
-}
-elsif ($mode eq 'indexdb') {
-	indexdb(@ARGV);
-}
-elsif ($mode eq 'aggregateinternal') {
-	aggregateinternal(@ARGV);
-}
-elsif ($mode eq 'setupformat') {
-	setupformat(@ARGV);
-}
-elsif ($mode eq 'moveprefs') {
-	moveprefs(@ARGV);
-}
-elsif ($mode eq 'deduplinks') {
-	deduplinks(@ARGV);
-}
-else {
-	usage();
-}
-
-package IkiWiki;
-
-# A slightly modified version of the old loadindex function.
-sub oldloadindex {
-	%oldrenderedfiles=%pagectime=();
-	if (! $config{rebuild}) {
-		%pagesources=%pagemtime=%oldlinks=%links=%depends=
-			%destsources=%renderedfiles=%pagecase=%pagestate=();
-	}
-	open (my $in, "<", "$config{wikistatedir}/index") || return;
-	while (<$in>) {
-		chomp;
-		my %items;
-		$items{link}=[];
-		$items{dest}=[];
-		foreach my $i (split(/ /, $_)) {
-			my ($item, $val)=split(/=/, $i, 2);
-			push @{$items{$item}}, decode_entities($val);
-		}
-
-		next unless exists $items{src}; # skip bad lines for now
-
-		my $page=pagename($items{src}[0]);
-		if (! $config{rebuild}) {
-			$pagesources{$page}=$items{src}[0];
-			$pagemtime{$page}=$items{mtime}[0];
-			$oldlinks{$page}=[@{$items{link}}];
-			$links{$page}=[@{$items{link}}];
-			$depends{$page}={ $items{depends}[0] => $IkiWiki::DEPEND_CONTENT } if exists $items{depends};
-			$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}[0];
-			}
-		}
-		$oldrenderedfiles{$page}=[@{$items{dest}}];
-		$pagectime{$page}=$items{ctime}[0];
-	}
-
-	# saveindex relies on %hooks being populated, else it won't save
-	# the page state owned by a given hook. But no plugins are loaded
-	# by this program, so populate %hooks with all hook ids that
-	# currently have page state.
-	foreach my $page (keys %pagemtime) {
-		foreach my $id (keys %{$pagestate{$page}}) {
-			$hooks{_dummy}{$id}=1;
-		}
-	}
-	
-	return close($in);
-}
-
-# Used to be in IkiWiki/UserInfo, but only used here now.
-sub get_banned_users () {
-	my @ret;
-	my $userinfo=userinfo_retrieve();
-	foreach my $user (keys %{$userinfo}) {
-		push @ret, $user if $userinfo->{$user}->{banned};
-	}
-	return @ret;
-}
-
-# Used to be in IkiWiki, but only used here (to migrate admin prefs into the
-# setup file) now.
-sub pagespec_merge ($$) {
-	my $a=shift;
-	my $b=shift;
-
-	return $a if $a eq $b;
-	return "($a) or ($b)";
-}
-
-1
diff --git a/ikiwiki-transition.in b/ikiwiki-transition.in
new file mode 100755
index 000000000..e3be645cc
--- /dev/null
+++ b/ikiwiki-transition.in
@@ -0,0 +1,349 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use lib '.'; # For use in nonstandard directory, munged by Makefile.
+use IkiWiki;
+use HTML::Entities;
+
+my $regex = qr{
+	(\\?)		# 1: escape?
+	\[\[(!?)	# directive open; 2: optional prefix
+	([-\w]+)	# 3: command
+	(		# 4: the parameters (including initial whitespace)
+	\s+
+		(?:
+			(?:[-\w]+=)?		# named parameter key?
+			(?:
+				""".*?"""	# triple-quoted value
+				|
+				"[^"]+"		# single-quoted value
+				|
+				[^\s\]]+	# unquoted value
+			)
+			\s*			# whitespace or end
+						# of directive
+		)
+	*)		# 0 or more parameters
+	\]\]		# directive closed
+}sx;
+
+sub handle_directive {
+	my $escape = shift;
+	my $prefix = shift;
+	my $directive = shift;
+	my $args = shift;
+
+	if (length $escape) {
+		return "${escape}[[${prefix}${directive}${args}]]"
+	}
+	if ($directive =~ m/^(if|more|table|template|toggleable)$/) {
+		$args =~ s{$regex}{handle_directive($1, $2, $3, $4)}eg;
+	}
+	return "[[!${directive}${args}]]"
+}
+
+sub prefix_directives {
+	loadsetup(shift);
+
+	IkiWiki::loadplugins();
+	IkiWiki::checkconfig();
+	IkiWiki::loadindex();
+
+	if (! %pagesources) {
+		error "ikiwiki has not built this wiki yet, cannot transition";
+	}
+
+	foreach my $page (values %pagesources) {
+		next unless defined pagetype($page) &&
+		            -f $config{srcdir}."/".$page;
+		my $content=readfile($config{srcdir}."/".$page);
+		my $oldcontent=$content;
+		$content=~s{$regex}{handle_directive($1, $2, $3, $4)}eg;
+		if ($oldcontent ne $content) {
+			writefile($page, $config{srcdir}, $content);
+		}
+	}
+}
+
+sub indexdb {
+	setstatedir(shift);
+
+	# Note: No lockwiki here because ikiwiki already locks it
+	# before calling this.	
+	if (! IkiWiki::oldloadindex()) {
+		die "failed to load index\n";
+	}
+	if (! IkiWiki::saveindex()) {
+		die "failed to save indexdb\n"
+	}
+	if (! IkiWiki::loadindex()) {
+		die "transition failed, cannot load new indexdb\n";
+	}
+	if (! unlink("$config{wikistatedir}/index")) {
+		die "unlink failed: $!\n";
+	}
+}
+
+sub hashpassword {
+	setstatedir(shift);
+
+	eval q{use IkiWiki::UserInfo};
+	eval q{use Authen::Passphrase::BlowfishCrypt};
+	if ($@) {
+		error("ikiwiki-transition hashpassword: failed to load Authen::Passphrase, passwords not hashed");
+	}
+
+	IkiWiki::lockwiki();
+	IkiWiki::loadplugin("passwordauth");
+	my $userinfo = IkiWiki::userinfo_retrieve();
+	foreach my $user (keys %{$userinfo}) {
+		if (ref $userinfo->{$user} &&
+		    exists $userinfo->{$user}->{password} &&
+		    length $userinfo->{$user}->{password} &&
+		    ! exists $userinfo->{$user}->{cryptpassword}) {
+			IkiWiki::Plugin::passwordauth::setpassword($user, $userinfo->{$user}->{password});
+		}
+	}
+}
+
+sub aggregateinternal {
+	loadsetup(shift);
+	require IkiWiki::Plugin::aggregate;
+	IkiWiki::checkconfig();
+	IkiWiki::Plugin::aggregate::migrate_to_internal();
+}
+
+sub setupformat {
+	my $setup=shift;
+
+	loadsetup($setup);
+	IkiWiki::checkconfig();
+	
+	# unpack old-format wrappers setting into new fields
+	my $cgi_seen=0;
+	my $rcs_seen=0;
+	foreach my $wrapper (@{$config{wrappers}}) {
+		if ($wrapper->{cgi}) {
+			if ($cgi_seen) {
+				die "don't know what to do with second cgi wrapper ".$wrapper->{wrapper}."\n";
+			}
+			$cgi_seen++;
+			print "setting cgi_wrapper to ".$wrapper->{wrapper}."\n";
+			$config{cgi_wrapper}=$wrapper->{wrapper};
+			$config{cgi_wrappermode}=$wrapper->{wrappermode}
+				if exists $wrapper->{wrappermode};
+		}
+		elsif ($config{rcs}) {
+			if ($rcs_seen) {
+				die "don't know what to do with second rcs wrapper ".$wrapper->{wrapper}."\n";
+			}
+			$rcs_seen++;
+			print "setting $config{rcs}_wrapper to ".$wrapper->{wrapper}."\n";
+			$config{$config{rcs}."_wrapper"}=$wrapper->{wrapper};
+			$config{$config{rcs}."_wrappermode"}=$wrapper->{wrappermode}
+				if exists $wrapper->{wrappermode};
+		}
+		else {
+			die "don't know what to do with wrapper ".$wrapper->{wrapper}."\n";
+		}
+	}
+
+	IkiWiki::Setup::dump($setup);
+}
+
+sub moveprefs {
+	my $setup=shift;
+
+	loadsetup($setup);
+	IkiWiki::checkconfig();
+
+	eval q{use IkiWiki::UserInfo};
+	error $@ if $@;
+
+	foreach my $field (qw{allowed_attachments locked_pages}) {
+		my $orig=$config{$field};
+		foreach my $admin (@{$config{adminuser}}) {
+			my $a=IkiWiki::userinfo_get($admin, $field);
+			if (defined $a && length $a &&
+			    # might already have been moved
+			    (! defined $orig || $a ne $orig)) {
+			    	if (defined $config{$field} &&
+				    length $config{$field}) {
+					$config{$field}=IkiWiki::pagespec_merge($config{$field}, $a);
+				}
+				else {
+					$config{$field}=$a;
+				}
+			}
+		}
+	}
+
+	my %banned=map { $_ => 1 } @{$config{banned_users}}, IkiWiki::get_banned_users();
+	$config{banned_users}=[sort keys %banned];
+
+	IkiWiki::Setup::dump($setup);
+}
+
+sub deduplinks {
+	loadsetup(shift);
+	IkiWiki::loadplugins();
+	IkiWiki::checkconfig();
+	IkiWiki::loadindex();
+	foreach my $page (keys %links) {
+		my %l;
+		$l{$_}=1 foreach @{$links{$page}};
+		$links{$page}=[keys %l]
+	}
+	IkiWiki::saveindex();
+}
+
+sub setstatedir {
+	my $dirorsetup=shift;
+
+	if (! defined $dirorsetup) {
+		usage();		
+	}
+
+	if (-d $dirorsetup) {
+		$config{wikistatedir}=$dirorsetup."/.ikiwiki";
+	}
+	elsif (-f $dirorsetup) {
+		loadsetup($dirorsetup);
+	}
+	else {
+		error("ikiwiki-transition: $dirorsetup does not exist");
+	}
+
+	if (! -d $config{wikistatedir}) {
+		error("ikiwiki-transition: $config{wikistatedir} does not exist");
+	}
+}
+	
+sub loadsetup {
+	my $setup=shift;
+	if (! defined $setup) {
+		usage();
+	}
+
+	require IkiWiki::Setup;
+
+	%config = IkiWiki::defaultconfig();
+	IkiWiki::Setup::load($setup);
+}
+
+sub usage {
+	print STDERR "Usage: ikiwiki-transition type ...\n";
+	print STDERR "Currently supported transition subcommands:\n";
+	print STDERR "\tprefix_directives setupfile ...\n";
+	print STDERR "\taggregateinternal setupfile\n";
+	print STDERR "\tsetupformat setupfile\n";
+	print STDERR "\tmoveprefs setupfile\n";
+	print STDERR "\thashpassword setupfile|srcdir\n";
+	print STDERR "\tindexdb setupfile|srcdir\n";
+	print STDERR "\tdeduplinks setupfile\n";
+	exit 1;
+}
+
+usage() unless @ARGV;
+
+my $mode=shift;
+if ($mode eq 'prefix_directives') {
+	prefix_directives(@ARGV);
+}
+elsif ($mode eq 'hashpassword') {
+	hashpassword(@ARGV);
+}
+elsif ($mode eq 'indexdb') {
+	indexdb(@ARGV);
+}
+elsif ($mode eq 'aggregateinternal') {
+	aggregateinternal(@ARGV);
+}
+elsif ($mode eq 'setupformat') {
+	setupformat(@ARGV);
+}
+elsif ($mode eq 'moveprefs') {
+	moveprefs(@ARGV);
+}
+elsif ($mode eq 'deduplinks') {
+	deduplinks(@ARGV);
+}
+else {
+	usage();
+}
+
+package IkiWiki;
+
+# A slightly modified version of the old loadindex function.
+sub oldloadindex {
+	%oldrenderedfiles=%pagectime=();
+	if (! $config{rebuild}) {
+		%pagesources=%pagemtime=%oldlinks=%links=%depends=
+			%destsources=%renderedfiles=%pagecase=%pagestate=();
+	}
+	open (my $in, "<", "$config{wikistatedir}/index") || return;
+	while (<$in>) {
+		chomp;
+		my %items;
+		$items{link}=[];
+		$items{dest}=[];
+		foreach my $i (split(/ /, $_)) {
+			my ($item, $val)=split(/=/, $i, 2);
+			push @{$items{$item}}, decode_entities($val);
+		}
+
+		next unless exists $items{src}; # skip bad lines for now
+
+		my $page=pagename($items{src}[0]);
+		if (! $config{rebuild}) {
+			$pagesources{$page}=$items{src}[0];
+			$pagemtime{$page}=$items{mtime}[0];
+			$oldlinks{$page}=[@{$items{link}}];
+			$links{$page}=[@{$items{link}}];
+			$depends{$page}={ $items{depends}[0] => $IkiWiki::DEPEND_CONTENT } if exists $items{depends};
+			$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}[0];
+			}
+		}
+		$oldrenderedfiles{$page}=[@{$items{dest}}];
+		$pagectime{$page}=$items{ctime}[0];
+	}
+
+	# saveindex relies on %hooks being populated, else it won't save
+	# the page state owned by a given hook. But no plugins are loaded
+	# by this program, so populate %hooks with all hook ids that
+	# currently have page state.
+	foreach my $page (keys %pagemtime) {
+		foreach my $id (keys %{$pagestate{$page}}) {
+			$hooks{_dummy}{$id}=1;
+		}
+	}
+	
+	return close($in);
+}
+
+# Used to be in IkiWiki/UserInfo, but only used here now.
+sub get_banned_users () {
+	my @ret;
+	my $userinfo=userinfo_retrieve();
+	foreach my $user (keys %{$userinfo}) {
+		push @ret, $user if $userinfo->{$user}->{banned};
+	}
+	return @ret;
+}
+
+# Used to be in IkiWiki, but only used here (to migrate admin prefs into the
+# setup file) now.
+sub pagespec_merge ($$) {
+	my $a=shift;
+	my $b=shift;
+
+	return $a if $a eq $b;
+	return "($a) or ($b)";
+}
+
+1
diff --git a/ikiwiki.spec b/ikiwiki.spec
index 2bb87724d..532a91885 100644
--- a/ikiwiki.spec
+++ b/ikiwiki.spec
@@ -1,5 +1,5 @@
 Name:           ikiwiki
-Version: 3.20100312
+Version: 3.20100324
 Release:        1%{?dist}
 Summary:        A wiki compiler
 
-- 
cgit v1.2.3


From c4108d58dcef2805deeb1370367d718d9b8f3184 Mon Sep 17 00:00:00 2001
From: "http://oneingray.myopenid.com/" 
Date: Sun, 28 Mar 2010 05:06:52 +0000
Subject: Better URL for my Ikiwiki instance; changed the note about DNS.

---
 doc/users/ivan_shmakov.mdwn | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/doc/users/ivan_shmakov.mdwn b/doc/users/ivan_shmakov.mdwn
index 41bf9b09a..de58cb207 100644
--- a/doc/users/ivan_shmakov.mdwn
+++ b/doc/users/ivan_shmakov.mdwn
@@ -1,3 +1,4 @@
 … To put it short: an Ikiwiki newbie.
 
-I run an Ikiwiki instance at  (though the DNS servers seem to be temporarily out of smoke as of 2010-03-12Z.)
+I run an Ikiwiki instance at 
+(though the DNS servers may be flacky due to transition to Dyn Inc.)
-- 
cgit v1.2.3


From ec110abc6d412db5f65ea5b9311596bbe7799fd4 Mon Sep 17 00:00:00 2001
From: Redtexture 
Date: Sun, 28 Mar 2010 12:21:51 +0000
Subject: add "wait"  (best to wait to tackle...)

---
 doc/tips/spam_and_softwaresites.mdwn | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/tips/spam_and_softwaresites.mdwn b/doc/tips/spam_and_softwaresites.mdwn
index fe73518ef..78a35ff05 100644
--- a/doc/tips/spam_and_softwaresites.mdwn
+++ b/doc/tips/spam_and_softwaresites.mdwn
@@ -82,5 +82,5 @@ Caveat: if there are no commits you want to keep (i.e. all the commits since
 the last merge into master are either spam or spam reverts) then `git rebase`
 will abort. Therefore, this approach only works if you have at least one
 non-spam commit to the documentation since the last merge into `master`. For
-this reason, it's best to tackle spam with reverts until you have at least one
+this reason, it's best wait to tackle spam with reverts until you have at least one
 commit you want merged back into the main history.
-- 
cgit v1.2.3


From 9c6b12fe3de453869be7fa2ae5c1d07e9751a69c Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Sun, 28 Mar 2010 14:52:03 +0000
Subject: revert misleading clarification, and try to clarify better

---
 doc/tips/spam_and_softwaresites.mdwn | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/doc/tips/spam_and_softwaresites.mdwn b/doc/tips/spam_and_softwaresites.mdwn
index 78a35ff05..507858c0c 100644
--- a/doc/tips/spam_and_softwaresites.mdwn
+++ b/doc/tips/spam_and_softwaresites.mdwn
@@ -82,5 +82,6 @@ Caveat: if there are no commits you want to keep (i.e. all the commits since
 the last merge into master are either spam or spam reverts) then `git rebase`
 will abort. Therefore, this approach only works if you have at least one
 non-spam commit to the documentation since the last merge into `master`. For
-this reason, it's best wait to tackle spam with reverts until you have at least one
-commit you want merged back into the main history.
+this reason, it's best to wait until you have at least one
+commit you want merged back into the main history before doing a rebase,
+and until then, tackle spam with reverts.
-- 
cgit v1.2.3


From ba05b907e3563f9aa25a4322abd9ab2d5b56b36b Mon Sep 17 00:00:00 2001
From: "http://oneingray.myopenid.com/" 
Date: Sun, 28 Mar 2010 15:58:37 +0000
Subject: More wishlist items for the `xslt` plugin.

---
 doc/plugins/contrib/xslt/discussion.mdwn | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/doc/plugins/contrib/xslt/discussion.mdwn b/doc/plugins/contrib/xslt/discussion.mdwn
index 9cda02f88..72cce083c 100644
--- a/doc/plugins/contrib/xslt/discussion.mdwn
+++ b/doc/plugins/contrib/xslt/discussion.mdwn
@@ -20,3 +20,30 @@ possible. Can it also read other arbitrary files, run other programs, etc?
 > For the second point, I think the main concern would be resource usage.  XSLT is a pretty limited language; it can read other XML files, but it can't run other programs so far as I know.
 
 > -- [[KathrynAndersen]]
+
+>> XSLT is, indeed, a Turing-complete programming language.
+   However, [XML::LibXSLT][] provides a set of functions to help
+   to minimize the damage that may be caused by running a random
+   program.
+
+>> In particular, `max_depth ()` allows for the maximum
+   recursion depth to be set, while
+   `read_file ()`, `write_file ()`, `create_dir ()`,
+   `read_net ()` and `write_net ()`
+   are the callbacks that allow any of the possible file
+   operations to be denied.
+
+>> To be honest, I'd prefer for the `read_file ()` callback to
+   only grant access to the files below the Ikiwiki source
+   directory, and for all the `write_`… and
+   …`_net` callbacks to deny the access unconditionally.
+
+>> One more wishlist item: allow the set of locations to take
+   `.xsl` files from to be preconfigured, so that, e. g.,
+   one could allow (preasumably trusted) system stylesheets,
+   while disallowing any stylesheets that are placed on the Wiki
+   itself.
+
+>> — Ivan Shmakov, 2010-03-28Z.
+
+[XML::LibXSLT]: http://search.cpan.org/~PAJAS/XML-LibXSLT/LibXSLT.pm
-- 
cgit v1.2.3


From e1eee27fc59dd6126e80ef21e4cc44191119902c Mon Sep 17 00:00:00 2001
From: "http://hendry.iki.fi/" 
Date: Sun, 28 Mar 2010 20:01:41 +0000
Subject:

---
 doc/bugs/Comments_dissapeared.mdwn | 9 +++++++++
 1 file changed, 9 insertions(+)
 create mode 100644 doc/bugs/Comments_dissapeared.mdwn

diff --git a/doc/bugs/Comments_dissapeared.mdwn b/doc/bugs/Comments_dissapeared.mdwn
new file mode 100644
index 000000000..f71a442b8
--- /dev/null
+++ b/doc/bugs/Comments_dissapeared.mdwn
@@ -0,0 +1,9 @@
+Although I have comments enabled and I have been using them successfully for ages now, I've come to notice that they have stopped working in the last week or two.
+
+I am running version 3.20100312 with the following configuration:
+
+
+
+In my (HTML5 modified page.tmpl) it doesn't seem to enter the "TMPL_IF COMMENTS" block anymore. I tried the stock page.tmpl and they didn't seem to work either, so the variable name hasn't changed has it?
+
+Any other ideas? With thanks,
-- 
cgit v1.2.3


From 0d07bca315d19e6e957072004393138db6f33d3d Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sun, 28 Mar 2010 17:17:07 -0400
Subject: fix printing of $@, which is clobbered by the call to gettext

problem reported by viric
---
 IkiWiki/Setup/Automator.pm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/IkiWiki/Setup/Automator.pm b/IkiWiki/Setup/Automator.pm
index e9a572450..38e0d4422 100644
--- a/IkiWiki/Setup/Automator.pm
+++ b/IkiWiki/Setup/Automator.pm
@@ -124,9 +124,10 @@ sub import (@) {
 				IkiWiki::run_hooks(checkconfig => sub { shift->() });
 			};
 			if ($@) {
+				my $err=$@;
 				print STDERR sprintf(gettext("** Disabling plugin %s, since it is failing with this message:"),
 					$plugin)."\n";
-				print STDERR "$@\n";
+				print STDERR "$err\n";
 				push @{$bakconfig{disable_plugins}}, $plugin;
 			}
 		}
-- 
cgit v1.2.3


From a1f50f6a31d4e9f7acd6f8d445e5fb39edba5138 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sun, 28 Mar 2010 17:37:42 -0400
Subject: response

---
 doc/bugs/Comments_dissapeared.mdwn | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/doc/bugs/Comments_dissapeared.mdwn b/doc/bugs/Comments_dissapeared.mdwn
index f71a442b8..b737d9bef 100644
--- a/doc/bugs/Comments_dissapeared.mdwn
+++ b/doc/bugs/Comments_dissapeared.mdwn
@@ -7,3 +7,9 @@ I am running version 3.20100312 with the following configuration:
 In my (HTML5 modified page.tmpl) it doesn't seem to enter the "TMPL_IF COMMENTS" block anymore. I tried the stock page.tmpl and they didn't seem to work either, so the variable name hasn't changed has it?
 
 Any other ideas? With thanks,
+
+	comments_pagespec => 'archives/* and !*/Discussion',
+
+> Your setup file only allows comments to pages under archives. That 
+> seems unlikely to be right, so I guess it is causing your problem.
+> --[[Joey]] 
-- 
cgit v1.2.3


From 7e9d1932a2b90d5092315c18603cf495da28d6da Mon Sep 17 00:00:00 2001
From: "http://schors.livejournal.com/" 
Date: Sun, 28 Mar 2010 22:01:53 +0000
Subject:

---
 doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn | 2 ++
 1 file changed, 2 insertions(+)
 create mode 100644 doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn

diff --git a/doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn b/doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn
new file mode 100644
index 000000000..6ad7975eb
--- /dev/null
+++ b/doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn
@@ -0,0 +1,2 @@
+When build wrapper on FreeBSD system, is error occured with clearenv reference. clearenv() das not exists at FreeBSD system, use workaround environ[0]=NULL;
+P.S. new git instalation, FreeBSD 7.x
-- 
cgit v1.2.3


From 0c6e467aa6931ec6bd7720ecaea5e33aeca4d1be Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sun, 28 Mar 2010 18:27:23 -0400
Subject: use __TINYC__ define to avoid tinyc compat fixes breaking FreeBSD

To review, tcc does not really use environ, so you have to use clearenv
there. But POSIX, in their wisdom, didn't standardise clearenv yet,
so on FreeBSD, one still needs to manipulate environ on their own.

(If you use tcc on FreeBSD, this may leave you unsatisfied.)
---
 IkiWiki/Wrapper.pm                             | 6 ++++++
 doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn | 3 +++
 2 files changed, 9 insertions(+)

diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm
index f175b4a0b..3f3e63ca6 100644
--- a/IkiWiki/Wrapper.pm
+++ b/IkiWiki/Wrapper.pm
@@ -101,6 +101,7 @@ EOF
 #include 
 #include 
 
+extern char **environ;
 char *newenviron[$#envsave+6];
 int i=0;
 
@@ -121,12 +122,17 @@ $envsave
 	newenviron[i++]="HOME=$ENV{HOME}";
 	newenviron[i++]="WRAPPED_OPTIONS=$configstring";
 
+#ifdef __TINYC__
 	if (clearenv() != 0) {
 		perror("clearenv");
 		exit(1);
 	}
 	for (; i>0; i--)
 		putenv(newenviron[i-1]);
+#else
+	newenviron[i]=NULL;
+	environ=newenviron;
+#endif
 
 	if (setregid(getegid(), -1) != 0 &&
 	    setregid(getegid(), -1) != 0) {
diff --git a/doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn b/doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn
index 6ad7975eb..c2355d6aa 100644
--- a/doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn
+++ b/doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn
@@ -1,2 +1,5 @@
 When build wrapper on FreeBSD system, is error occured with clearenv reference. clearenv() das not exists at FreeBSD system, use workaround environ[0]=NULL;
 P.S. new git instalation, FreeBSD 7.x
+
+> #include  fixed with nasty ifdefs to handle tcc w/o
+> breaking everything else. ||done]] --[[Joey]] 
-- 
cgit v1.2.3


From 6d04e182c4f4f44da37725444a540851fd36ba13 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sun, 28 Mar 2010 18:36:37 -0400
Subject: formatting

---
 doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn b/doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn
index c2355d6aa..ac82541a3 100644
--- a/doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn
+++ b/doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn
@@ -1,5 +1,5 @@
 When build wrapper on FreeBSD system, is error occured with clearenv reference. clearenv() das not exists at FreeBSD system, use workaround environ[0]=NULL;
 P.S. new git instalation, FreeBSD 7.x
 
-> #include  fixed with nasty ifdefs to handle tcc w/o
+> `#include ` fixed with nasty ifdefs to handle tcc w/o
 > breaking everything else. ||done]] --[[Joey]] 
-- 
cgit v1.2.3


From 15164671ceeed70f25cbfe53d81143eb5b13c863 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sun, 28 Mar 2010 18:37:00 -0400
Subject: formatting

---
 doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn b/doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn
index ac82541a3..f38c86e03 100644
--- a/doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn
+++ b/doc/bugs/clearenv_not_present_at_FreeBSD_.mdwn
@@ -2,4 +2,4 @@ When build wrapper on FreeBSD system, is error occured with clearenv reference.
 P.S. new git instalation, FreeBSD 7.x
 
 > `#include ` fixed with nasty ifdefs to handle tcc w/o
-> breaking everything else. ||done]] --[[Joey]] 
+> breaking everything else. [[done]] --[[Joey]] 
-- 
cgit v1.2.3


From 1de069338de86dd6e785d9771140b2b687100451 Mon Sep 17 00:00:00 2001
From: "http://schors.livejournal.com/" 
Date: Sun, 28 Mar 2010 22:43:24 +0000
Subject:

---
 doc/bugs/wrapper_can__39__t_find_the_perl_modules.mdwn | 5 +++++
 1 file changed, 5 insertions(+)
 create mode 100644 doc/bugs/wrapper_can__39__t_find_the_perl_modules.mdwn

diff --git a/doc/bugs/wrapper_can__39__t_find_the_perl_modules.mdwn b/doc/bugs/wrapper_can__39__t_find_the_perl_modules.mdwn
new file mode 100644
index 000000000..61964539d
--- /dev/null
+++ b/doc/bugs/wrapper_can__39__t_find_the_perl_modules.mdwn
@@ -0,0 +1,5 @@
+If i intsall perl modules in my custom directory, cgi wrapper can't find them. I found clearing enviroment variables in code  of wrapper. But information about custom directories put to perl with PERL5LIB variable.
+
+Workaround: add newenviron variable PERL5LIB
+
+My additional question - what wrapper do? I'am russian hosting provider. I am interesting with ikiwiki.
-- 
cgit v1.2.3


From 02e6ec9dd2c5e1e260a1f18406942059fe3d2064 Mon Sep 17 00:00:00 2001
From: "http://schors.livejournal.com/" 
Date: Sun, 28 Mar 2010 22:47:17 +0000
Subject:

---
 doc/bugs/clearenv_not_present_at_FreeBSD_/discussion.mdwn | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 doc/bugs/clearenv_not_present_at_FreeBSD_/discussion.mdwn

diff --git a/doc/bugs/clearenv_not_present_at_FreeBSD_/discussion.mdwn b/doc/bugs/clearenv_not_present_at_FreeBSD_/discussion.mdwn
new file mode 100644
index 000000000..713198b61
--- /dev/null
+++ b/doc/bugs/clearenv_not_present_at_FreeBSD_/discussion.mdwn
@@ -0,0 +1 @@
+Mmmm... i see. But it not setup under FreeBSD without magic manual passes.
-- 
cgit v1.2.3


From 911533655186f7c43ac229a4cdbc5be3e7f80d49 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sun, 28 Mar 2010 18:49:15 -0400
Subject: response

---
 README                                                 |  2 +-
 doc/bugs/wrapper_can__39__t_find_the_perl_modules.mdwn | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/README b/README
index a4dc0d641..7efc59a51 100644
--- a/README
+++ b/README
@@ -5,7 +5,7 @@ All other documentation is in the ikiwiki documentation wiki, which is also
 available online at 
 
 
-A few special variables you can set while using the Makefile:
+A few special variables you can set while using the Makefile.PL:
 
   PROFILE=1 turns on profiling for the build of the doc wiki.
   (Uses Devel::NYTProf)
diff --git a/doc/bugs/wrapper_can__39__t_find_the_perl_modules.mdwn b/doc/bugs/wrapper_can__39__t_find_the_perl_modules.mdwn
index 61964539d..9804d86c5 100644
--- a/doc/bugs/wrapper_can__39__t_find_the_perl_modules.mdwn
+++ b/doc/bugs/wrapper_can__39__t_find_the_perl_modules.mdwn
@@ -3,3 +3,14 @@ If i intsall perl modules in my custom directory, cgi wrapper can't find them. I
 Workaround: add newenviron variable PERL5LIB
 
 My additional question - what wrapper do? I'am russian hosting provider. I am interesting with ikiwiki.
+
+> The wrapper allows ikiwiki to run as the user who owns the wiki, which
+> is generally not the same as the user that runs the web server.
+> (It also handles some other things, like some locking.)
+> 
+> As a suid program, the wrapper cannot safely let environment variables
+> pass through.
+> 
+> If you want to install ikiwiki's perl modules in a nonstandard location,
+> you can set `INSTALL_BASE` when running `Makefile.PL`. ikiwiki will then
+> be built to look in that location. --[[Joey]]  [[!tag done]]
-- 
cgit v1.2.3


From 6e7bfbe7bb8ba4b94d0e8c203b2117477b217384 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sun, 28 Mar 2010 19:23:34 -0400
Subject: auto-blog.setup: Set tagbase by default, since most bloggers will
 want it.

Also modified first_post page to use a tag format that will work whether
or not tagbase is set.
---
 auto-blog.setup                         | 1 +
 debian/changelog                        | 1 +
 doc/examples/blog/posts/first_post.mdwn | 2 +-
 3 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/auto-blog.setup b/auto-blog.setup
index 7ff413187..95347167f 100644
--- a/auto-blog.setup
+++ b/auto-blog.setup
@@ -48,4 +48,5 @@ IkiWiki::Setup::Automator->import(
 	blogspam_pagespec => "postcomment(*)",
 	discussion => 0,
 	locked_pages => "*",
+	tagbase => "tags",
 )
diff --git a/debian/changelog b/debian/changelog
index 57406c6d3..2d82c4dba 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -21,6 +21,7 @@ ikiwiki (3.20100324) UNRELEASED; urgency=low
     that could lead to bad dependency handling in certian situations.
   * Add preprocessed 'use lib' line to ikiwiki-transition and ikiwiki-calendar
     if necessary for unusual install.
+  * auto-blog.setup: Set tagbase by default, since most bloggers will want it.
 
  -- Joey Hess   Sat, 13 Mar 2010 14:48:10 -0500
 
diff --git a/doc/examples/blog/posts/first_post.mdwn b/doc/examples/blog/posts/first_post.mdwn
index d49432341..7f814fbb1 100644
--- a/doc/examples/blog/posts/first_post.mdwn
+++ b/doc/examples/blog/posts/first_post.mdwn
@@ -1,4 +1,4 @@
 This is the first post to this example blog. To add new posts, just add
 files to the posts/ subdirectory, or use the web form.
 
-[[!tag tags/tech]]
+[[!tag ./tags/tech]]
-- 
cgit v1.2.3


From b6666f5ac81ef4c8646a6290cf5c885adf0e385f Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sun, 28 Mar 2010 19:28:48 -0400
Subject: fix tag

Actually, tags can't be made to work with and w/o tagbase, so just make it
assume tagbase is set. Better example anyway.

(It'll be a broken link on ikiwiki.info though.)
---
 doc/examples/blog/posts/first_post.mdwn | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/examples/blog/posts/first_post.mdwn b/doc/examples/blog/posts/first_post.mdwn
index 7f814fbb1..f2729fcef 100644
--- a/doc/examples/blog/posts/first_post.mdwn
+++ b/doc/examples/blog/posts/first_post.mdwn
@@ -1,4 +1,4 @@
 This is the first post to this example blog. To add new posts, just add
 files to the posts/ subdirectory, or use the web form.
 
-[[!tag ./tags/tech]]
+[[!tag tech]]
-- 
cgit v1.2.3


From 799b93d258bad917262ac160df74136f05d4a451 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sun, 28 Mar 2010 20:23:22 -0400
Subject: don't check $@ after pagespec_translate

pagespec_translate may set $@ if it fails to parse a pagespec, but
due to memoization, this is not reliable. If a memoized call is repeated,
and $@ is already set for some other reason previously, it will remain
set through the call to pagespec_translate.

Instead, just check if pagespec_translate returns undef.
---
 IkiWiki.pm        | 9 ++++-----
 IkiWiki/Render.pm | 2 +-
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/IkiWiki.pm b/IkiWiki.pm
index 927d62940..6739ba56c 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -1796,7 +1796,7 @@ sub add_depends ($$;$) {
 
 	# Add explicit dependencies for influences.
 	my $sub=pagespec_translate($pagespec);
-	return if $@;
+	return unless defined $sub;
 	foreach my $p (keys %pagesources) {
 		my $r=$sub->($p, location => $page);
 		my $i=$r->influences;
@@ -2001,7 +2001,7 @@ sub pagespec_match ($$;@) {
 
 	my $sub=pagespec_translate($spec);
 	return IkiWiki::ErrorReason->new("syntax error in pagespec \"$spec\"")
-		if $@ || ! defined $sub;
+		if ! defined $sub;
 	return $sub->($page, @params);
 }
 
@@ -2019,7 +2019,7 @@ sub pagespec_match_list ($$;@) {
 
 	my $sub=pagespec_translate($pagespec);
 	error "syntax error in pagespec \"$pagespec\""
-		if $@ || ! defined $sub;
+		if ! defined $sub;
 
 	my @candidates;
 	if (exists $params{list}) {
@@ -2092,8 +2092,7 @@ sub pagespec_match_list ($$;@) {
 sub pagespec_valid ($) {
 	my $spec=shift;
 
-	my $sub=pagespec_translate($spec);
-	return ! $@;
+	return defined pagespec_translate($spec);
 }
 
 sub glob2re ($) {
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index af24df155..abafb0887 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -565,7 +565,7 @@ sub render_dependent ($$$$$$$) {
 		if (exists $depends{$p} && ! defined $reason) {
 			foreach my $dep (keys %{$depends{$p}}) {
 				my $sub=pagespec_translate($dep);
-				next if $@ || ! defined $sub;
+				next unless defined $sub;
 
 				# only consider internal files
 				# if the page explicitly depends
-- 
cgit v1.2.3


From ae4e9b25b714b02ed7003a21da781fccf9475f38 Mon Sep 17 00:00:00 2001
From: "http://hendry.iki.fi/" 
Date: Mon, 29 Mar 2010 08:15:43 +0000
Subject:

---
 doc/bugs/Comments_dissapeared.mdwn | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/doc/bugs/Comments_dissapeared.mdwn b/doc/bugs/Comments_dissapeared.mdwn
index b737d9bef..ad1638236 100644
--- a/doc/bugs/Comments_dissapeared.mdwn
+++ b/doc/bugs/Comments_dissapeared.mdwn
@@ -13,3 +13,8 @@ Any other ideas? With thanks,
 > Your setup file only allows comments to pages under archives. That 
 > seems unlikely to be right, so I guess it is causing your problem.
 > --[[Joey]] 
+
+That's the only place where I want comments. 
+Has the pagespec changed? Is it `archives/*/*` or something like that?
+
+It worked just fine with this configuration. I swear I have not modified it. :) -- [[Kai Hendry]]
-- 
cgit v1.2.3


From 263d9548969dcdf9a6add96f46fe03ba7701a1ca Mon Sep 17 00:00:00 2001
From: Jon Dowland 
Date: Mon, 29 Mar 2010 14:58:21 +0100
Subject: ping joey: consider patch for next release?

---
 doc/todo/allow_site-wide_meta_definitions.mdwn | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/doc/todo/allow_site-wide_meta_definitions.mdwn b/doc/todo/allow_site-wide_meta_definitions.mdwn
index 99a9cf1e2..be66db99d 100644
--- a/doc/todo/allow_site-wide_meta_definitions.mdwn
+++ b/doc/todo/allow_site-wide_meta_definitions.mdwn
@@ -183,3 +183,5 @@ definitions essentially.
 >>> ikiwiki for the break, and now I've returned to watching recentchanges.
 >>> Hopefully I'll be back in the mix soon, too. In the meantime, Joey, have
 >>> you had a chance to look at this yet? -- [[Jon]]
+>>>> Ping :) Hi.  [[Joey]], would you consider this patch for the next
+>>>> ikiwiki release? -- [[Jon]]
-- 
cgit v1.2.3


From 891238e075f0c4716ec8f51d5832745b0348ab77 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Mon, 29 Mar 2010 11:54:18 -0400
Subject: add warning messages about bzr and mercurial hooks that are not
 correctly setup

---
 IkiWiki/Setup/Automator.pm | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/IkiWiki/Setup/Automator.pm b/IkiWiki/Setup/Automator.pm
index 38e0d4422..402212150 100644
--- a/IkiWiki/Setup/Automator.pm
+++ b/IkiWiki/Setup/Automator.pm
@@ -72,9 +72,11 @@ sub import (@) {
 		}
 		elsif ($config{rcs} eq 'bzr') {
 			# TODO
+			print STDERR "warning: do not know how to set up the bzr_wrapper hook!\n";
 		}
 		elsif ($config{rcs} eq 'mercurial') {
 			# TODO
+			print STDERR "warning: do not know how to set up the mercurial_wrapper hook!\n";
 		}
 		elsif ($config{rcs} eq 'cvs') {
 			$config{cvs_wrapper}=$config{repository}."/CVSROOT/post-commit";
-- 
cgit v1.2.3


From 97898ce585b36dbcb0a83356ef3e54c41d369437 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Mon, 29 Mar 2010 12:16:53 -0400
Subject: review, multiple concerns

---
 doc/todo/allow_site-wide_meta_definitions.mdwn | 46 ++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/doc/todo/allow_site-wide_meta_definitions.mdwn b/doc/todo/allow_site-wide_meta_definitions.mdwn
index 99a9cf1e2..e4638f94b 100644
--- a/doc/todo/allow_site-wide_meta_definitions.mdwn
+++ b/doc/todo/allow_site-wide_meta_definitions.mdwn
@@ -36,6 +36,30 @@ definitions essentially.
 >> I've made may not be acceptable, though -- I'd appreciate someone providing
 >> some feedback on that hunk!
 
+>>> Well, re that hunk, taint checking is currently disabled, but
+>>> if the perl bug that disallows it is fixed and it is turned back on,
+>>> the hash values will remain tainted, which will probably lead to
+>>> problems.
+>>>
+>>> I'm also leery of using such a complex data structure in config.
+>>> The websetup plugin would be hard pressed to provide a UI for such a
+>>> data structure. (It lacks even UI for a single hash ref yet, let alone
+>>> a list.)
+>>> 
+>>> Also, it seems sorta wrong to have two so very different syntaxes to 
+>>> represent the same meta data. A user without a lot of experience will
+>>> be hard pressed to map from a directive to this in the setup file.
+>>>
+>>> All of which leads me to think the setup file could just contain
+>>> a text that could hold meta directives. Which generalizes really to
+>>> a text that contains any directives, and is, perhaps appended to the
+>>> top of every page. Which nearly generalizes to the sidebar plugin,
+>>> or perhaps something more general than that... 
+>>>
+>>> However, excessive generalization is the root of all evil, so 
+>>> I'm not necessarily saying that's a good idea. Indeed, my memory
+>>> concerns below invalidate this idea pretty well. --[[Joey]] 
+
     diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm
     index 6fe9cda..2f8c098 100644
     --- a/IkiWiki/Plugin/meta.pm
@@ -125,6 +149,10 @@ definitions essentially.
 >> are only relevant to defined fields that you wouldn't want to specify a
 >> global default for anyway.
 >>
+>>> I generally agree with this. It is *possible* that meta would have a new
+>>> field added, that takes parameters and make sense to use globally.
+>>> --[[Joey]] 
+>>
 >> Due to this, and the added complexity of the second patch (having to adjust
 >> `IkiWiki/Setup.pm`), I think the first patch makes more sense. I've thus
 >> reverted to it here.
@@ -183,3 +211,21 @@ definitions essentially.
 >>> ikiwiki for the break, and now I've returned to watching recentchanges.
 >>> Hopefully I'll be back in the mix soon, too. In the meantime, Joey, have
 >>> you had a chance to look at this yet? -- [[Jon]]
+
+>>> For this to work with websetup and --dumpsetup, it needs to define the
+>>> `meta_*` settings in the getsetup function.
+>>>
+>>> I also have some concerns about both these patches, since both throw
+>>> a lot of redundant data at meta, which then stores it in a very redundant
+>>> way. Specifically, meta populates a per-page `%metaheaders` hash
+>>> as well as storing per-page metadata in `%pagestate`. So, if you have
+>>> a wiki with a thousand pages, and you add a 1k site-wide license text,
+>>> that will bloat the memory usage of ikiwiki by in excess of 2
+>>> megabytes. It will also cause ikiwiki to write a similar amount more data
+>>> to its state file which has to be loaded back in each
+>>> run.
+>>>
+>>> Seems that this could be managed much more efficiently by having
+>>> meta special-case the site-wide settings, not store them in these
+>>> per-page data structures, and just make them be used if no per-page
+>>> metadata of the given type is present. --[[Joey]]
-- 
cgit v1.2.3


From 7a8bcf2a6745d570bf9055df7b0390f9a9ca8a0d Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Mon, 29 Mar 2010 12:19:22 -0400
Subject: fix bogus math

---
 doc/todo/allow_site-wide_meta_definitions.mdwn | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/todo/allow_site-wide_meta_definitions.mdwn b/doc/todo/allow_site-wide_meta_definitions.mdwn
index 704cb2c64..01cf12c1a 100644
--- a/doc/todo/allow_site-wide_meta_definitions.mdwn
+++ b/doc/todo/allow_site-wide_meta_definitions.mdwn
@@ -222,7 +222,7 @@ definitions essentially.
 >>> a lot of redundant data at meta, which then stores it in a very redundant
 >>> way. Specifically, meta populates a per-page `%metaheaders` hash
 >>> as well as storing per-page metadata in `%pagestate`. So, if you have
->>> a wiki with a thousand pages, and you add a 1k site-wide license text,
+>>> a wiki with 10 thousand pages, and you add a 1k site-wide license text,
 >>> that will bloat the memory usage of ikiwiki by in excess of 2
 >>> megabytes. It will also cause ikiwiki to write a similar amount more data
 >>> to its state file which has to be loaded back in each
-- 
cgit v1.2.3


From e466d11fd363b4758bc4f624ff73664d89891f9e Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Mon, 29 Mar 2010 13:17:32 -0400
Subject: add warning about incomplete tla support

---
 IkiWiki/Setup/Automator.pm | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/IkiWiki/Setup/Automator.pm b/IkiWiki/Setup/Automator.pm
index 402212150..2dcb424e5 100644
--- a/IkiWiki/Setup/Automator.pm
+++ b/IkiWiki/Setup/Automator.pm
@@ -78,6 +78,10 @@ sub import (@) {
 			# TODO
 			print STDERR "warning: do not know how to set up the mercurial_wrapper hook!\n";
 		}
+		elsif ($config{rcs} eq 'tla') {
+			# TODO
+			print STDERR "warning: do not know how to set up the tla_wrapper hook!\n";
+		}
 		elsif ($config{rcs} eq 'cvs') {
 			$config{cvs_wrapper}=$config{repository}."/CVSROOT/post-commit";
 		}
-- 
cgit v1.2.3


From 3e192a4c4a2e80ce35ce35d5edc9afd6b2373f83 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Mon, 29 Mar 2010 13:17:49 -0400
Subject: add a table summarizing state of each rcs plugin

---
 doc/rcs.mdwn  | 23 ++++++++++++++++++++---
 docwiki.setup |  2 +-
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/doc/rcs.mdwn b/doc/rcs.mdwn
index f66b85495..cd41e7f49 100644
--- a/doc/rcs.mdwn
+++ b/doc/rcs.mdwn
@@ -7,10 +7,27 @@ Ikiwiki started out supporting only [[Subversion|svn]], but the interface
 ikiwiki uses to a revision control system is sufficiently simple and
 generic that it can be adapted to work with many systems by writing a
 [[plugin|plugins/write]]. [[Subversion|svn]] is still a recommended choice;
-[[git]] is another well-tested option.
+[[git]] is another well-tested option. 
 
-These are all the supported revision control systems:
-[[!inline pages="rcs/* and !*/Discussion and !rcs/details" archive=yes]]
+While all supported revision control systems work well enough for basic use,
+some advanced or special features are not supported in all of them.
+Lack of support in [[ikiwiki-makerepo]] or auto.setup can make it harder to
+set up a wiki using that revision control system. The `rcs_commit_staged`
+hook is needed to use [[plugins/attachments]] or [[plugins/comments]]. And so
+on. The table below summarises this for each revision control system and links
+to more information about each.
+
+[[!table data="""
+feature             |[[git]]|[[svn]]|[[bzr]]   |[[monotone]]|[[mercurial]]|[[darcs]]|[[tla]]   |[[cvs]]
+[[ikiwiki-makerepo]]|yes    |yes    |yes       |yes         |yes          |yes      |no        |yes
+auto.setup          |yes    |yes    |incomplete|yes         |incomplete   |yes      |incomplete|yes
+`rcs_commit_staged` |yes    |yes    |yes       |yes         |no           |yes      |no        |yes
+`rcs_rename`        |yes    |yes    |yes       |yes         |no           |yes      |no        |yes
+`rcs_remove`        |yes    |yes    |yes       |yes         |no           |yes      |no        |yes
+`rcs_diff`          |yes    |yes    |yes       |yes         |no           |yes      |yes       |yes
+anonymous push      |yes    |no     |no        |no          |no           |no       |no        |no
+conflict handling   |yes    |yes    |yes       |buggy       |yes          |yes      |yes       |yes
+"""]]
 
 There is a page with [[details]] about how the different systems work with
 ikiwiki, for the curious.
diff --git a/docwiki.setup b/docwiki.setup
index 86f012c50..8278b73ea 100644
--- a/docwiki.setup
+++ b/docwiki.setup
@@ -16,5 +16,5 @@ use IkiWiki::Setup::Standard {
 	userdir => "users",
 	usedirs => 0,
 	prefix_directives => 1,
-	add_plugins => [qw{goodstuff version haiku polygen fortune}],
+	add_plugins => [qw{goodstuff version haiku polygen fortune table}],
 }
-- 
cgit v1.2.3


From 6798a80acab43ce9b6869dea7236887faebc19e1 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Mon, 29 Mar 2010 13:18:49 -0400
Subject: fix link

---
 doc/rcs.mdwn | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/doc/rcs.mdwn b/doc/rcs.mdwn
index cd41e7f49..4e7a8d2a6 100644
--- a/doc/rcs.mdwn
+++ b/doc/rcs.mdwn
@@ -9,13 +9,13 @@ generic that it can be adapted to work with many systems by writing a
 [[plugin|plugins/write]]. [[Subversion|svn]] is still a recommended choice;
 [[git]] is another well-tested option. 
 
-While all supported revision control systems work well enough for basic use,
-some advanced or special features are not supported in all of them.
+While all supported revision control systems work well enough for basic
+use, some advanced or special features are not supported in all of them.
 Lack of support in [[ikiwiki-makerepo]] or auto.setup can make it harder to
 set up a wiki using that revision control system. The `rcs_commit_staged`
-hook is needed to use [[plugins/attachments]] or [[plugins/comments]]. And so
-on. The table below summarises this for each revision control system and links
-to more information about each.
+hook is needed to use [[attachments|plugins/attachment]] or
+[[plugins/comments]]. And so on. The table below summarises this for each
+revision control system and links to more information about each.
 
 [[!table data="""
 feature             |[[git]]|[[svn]]|[[bzr]]   |[[monotone]]|[[mercurial]]|[[darcs]]|[[tla]]   |[[cvs]]
-- 
cgit v1.2.3


From 68c67efeffd0f51e01cd557722632367f0dc3849 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Mon, 29 Mar 2010 13:27:50 -0400
Subject: clarify example with whitespace

---
 doc/ikiwiki/directive/table.mdwn | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/ikiwiki/directive/table.mdwn b/doc/ikiwiki/directive/table.mdwn
index e27a94b7c..2dac97724 100644
--- a/doc/ikiwiki/directive/table.mdwn
+++ b/doc/ikiwiki/directive/table.mdwn
@@ -6,8 +6,8 @@ or DSV (delimiter-separated values) format.
 ## examples
 
 	\[[!table data="""
-	Customer|Amount
-	Fulanito|134,34
+	Customer |Amount
+	Fulanito |134,34
 	Menganito|234,56
 	Menganito|234,56
 	"""]]
-- 
cgit v1.2.3


From aa116d67ab315dcc3e2150bb080958753df5dfca Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Mon, 29 Mar 2010 13:37:16 -0400
Subject: update

---
 debian/changelog | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 2d82c4dba..5ec52d3c0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,8 +2,6 @@ ikiwiki (3.20100324) UNRELEASED; urgency=low
 
   * websetup: Add websetup_unsafe to allow marking other settings
     as unsafe.
-  * openid: Use Openid Simple Registration or OpenID Attribute Exchange
-    to get the user's email address and username.
   * Improve openid url munging; do not display anchors and cgi parameters,
     as used by yahoo and google urls.
   * Add complete German basewiki and directives translation done by
@@ -12,7 +10,6 @@ ikiwiki (3.20100324) UNRELEASED; urgency=low
     wiki source files, such as .htaccess, that would normally be skipped
     for security or other reasons. Closes: #447267
     (Thanks to Aaron Wilson for the original patch.)
-  * Allow wrappers to be built using tcc.
   * Add support for setup files written in YAML.
   * Add --set-yaml switch for setting more complex config file options.
   * filecheck: Fix bugs that prevented the pagespecs from matching when
@@ -22,6 +19,10 @@ ikiwiki (3.20100324) UNRELEASED; urgency=low
   * Add preprocessed 'use lib' line to ikiwiki-transition and ikiwiki-calendar
     if necessary for unusual install.
   * auto-blog.setup: Set tagbase by default, since most bloggers will want it.
+  * Allow wrappers to be built using tcc. (Workaround #452876)
+  * openid: Use Openid Simple Registration or OpenID Attribute Exchange
+    to get the user's email address and username. (Neither is yet
+    used, but they are available in the session object now.)
 
  -- Joey Hess   Sat, 13 Mar 2010 14:48:10 -0500
 
-- 
cgit v1.2.3


From 675e34527f56021ce39e56e4288e8f0e32b36cfa Mon Sep 17 00:00:00 2001
From: Jon Dowland 
Date: Mon, 29 Mar 2010 19:59:40 +0100
Subject: thanks for the review, patch to be revised

---
 doc/todo/allow_site-wide_meta_definitions.mdwn | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/doc/todo/allow_site-wide_meta_definitions.mdwn b/doc/todo/allow_site-wide_meta_definitions.mdwn
index 01cf12c1a..7129a44ac 100644
--- a/doc/todo/allow_site-wide_meta_definitions.mdwn
+++ b/doc/todo/allow_site-wide_meta_definitions.mdwn
@@ -232,3 +232,6 @@ definitions essentially.
 >>> meta special-case the site-wide settings, not store them in these
 >>> per-page data structures, and just make them be used if no per-page
 >>> metadata of the given type is present. --[[Joey]]
+
+>>>> Thanks for the review - these are all valid points. I'll get working
+>>>> on a revised patch. -- [[Jon]]
-- 
cgit v1.2.3


From 0b63800df32fd6e5287a253ca01a099f79b77e6e Mon Sep 17 00:00:00 2001
From: Jon Dowland 
Date: Mon, 29 Mar 2010 20:00:56 +0100
Subject: this sounds like the correct approach

---
 doc/todo/more_flexible_inline_postform.mdwn | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/doc/todo/more_flexible_inline_postform.mdwn b/doc/todo/more_flexible_inline_postform.mdwn
index bc8bc0809..414476bd7 100644
--- a/doc/todo/more_flexible_inline_postform.mdwn
+++ b/doc/todo/more_flexible_inline_postform.mdwn
@@ -16,3 +16,8 @@ logical first step towards doing comment-like things with inlined pages).
 > Perhaps what we need is a `postform` plugin/directive that inline depends
 > on (automatically enables); its preprocess method could automatically be
 > invoked from preprocess_inline when needed. --[[smcv]]
+
+>> I've been looking at this stuff again. I think you are right, this would
+>> be the right approach. The comments plugin could use it similarly, allowing
+>> sites which desire it to have an inline comment submission form on all
+>> pages with comments enabled. I'm going to take a look. -- [[Jon]]
-- 
cgit v1.2.3


From b2890b4e8ff0dc0e0fbaed1ffd9848c48dedf611 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Mon, 29 Mar 2010 15:25:34 -0400
Subject: response

---
 doc/bugs/Comments_dissapeared.mdwn | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/doc/bugs/Comments_dissapeared.mdwn b/doc/bugs/Comments_dissapeared.mdwn
index ad1638236..ac297028c 100644
--- a/doc/bugs/Comments_dissapeared.mdwn
+++ b/doc/bugs/Comments_dissapeared.mdwn
@@ -18,3 +18,13 @@ That's the only place where I want comments. 
 Has the pagespec changed? Is it `archives/*/*` or something like that?
 
 It worked just fine with this configuration. I swear I have not modified it. :) -- [[Kai Hendry]]
+
+> No changes that I can think of. 'archives/*' will match *all* pages under
+> archives. Anyway, I can see in your site's rss feed that comments are
+> enabled for posts, since they have comments tags there. And
+> in fact I see comments on eg
+> .
+> 
+> So I suspect you have simply not rebuilt your wiki after making some
+> change that fixed the comments, and so only newer pages are getting them.
+> --[[Joey]]
-- 
cgit v1.2.3


From 1c751e882ef2fe68bc4601dc5e927c4813f09706 Mon Sep 17 00:00:00 2001
From: "http://gustaf.thorslund.org/" 
Date: Mon, 29 Mar 2010 21:54:30 +0000
Subject:

---
 doc/git.mdwn | 1 +
 1 file changed, 1 insertion(+)

diff --git a/doc/git.mdwn b/doc/git.mdwn
index 289937121..379285a49 100644
--- a/doc/git.mdwn
+++ b/doc/git.mdwn
@@ -59,6 +59,7 @@ into [[Joey]]'s working tree. This is recommended. :-)
 * [[roktas]] `git://github.com/roktas/ikiwiki.git`
 * [[davrieb|David_Riebenbauer]] `git://git.liegesta.at/git/ikiwiki`
   ([browse](http://git.liegesta.at/?p=ikiwiki.git;a=summary))
+* [[GustafThorslund]] `http://gustaf.thorslund.org/src/ikiwiki.git`
 
 ## branches
 
-- 
cgit v1.2.3


From 8de983dd07a462eeb997b730c5729c6f598ae452 Mon Sep 17 00:00:00 2001
From: "http://gustaf.thorslund.org/" 
Date: Mon, 29 Mar 2010 22:07:27 +0000
Subject:

---
 doc/ikiwikiusers.mdwn | 1 +
 1 file changed, 1 insertion(+)

diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index b40fd461d..633400f21 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -142,6 +142,7 @@ Personal sites and blogs
 * [Andreas's homepage](http://0x7.ch/) - Ikiwiki, Subversion and CSS template
 * [Chris Dombroski's boring bliki](https://www.icanttype.org/)
 * [Josh Triplett's homepage](http://joshtriplett.org/) - Git backend with the CGI disabled, to publish a static site with the convenience of ikiwiki.
+* [Gustaf Thorslund's blog](http://blog.thorslund.org)
 
 Please feel free to add your own ikiwiki site!
 
-- 
cgit v1.2.3


From 386e464188d817f90e1cb6535da2db6bcfaa3fa0 Mon Sep 17 00:00:00 2001
From: "http://kerravonsen.dreamwidth.org/"
 
Date: Tue, 30 Mar 2010 05:31:10 +0000
Subject: quick response

---
 doc/plugins/contrib/field/discussion.mdwn | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/doc/plugins/contrib/field/discussion.mdwn b/doc/plugins/contrib/field/discussion.mdwn
index fc1759fab..4bb285a50 100644
--- a/doc/plugins/contrib/field/discussion.mdwn
+++ b/doc/plugins/contrib/field/discussion.mdwn
@@ -9,6 +9,10 @@ with IkiWiki's use of `` for the author of the *page*
 `` or something? (For those who want the current
 behaviour, an auxiliary plugin would be easy.)
 
+> No, please.  The idea is to be *able* to override field names if one wishes to, and choose, for yourself, non-colliding field names if one wishes not to.  I don't wish to lose the power of being able to, say, define a page title with YAML format if I want to, or to write a site-specific plugin which calculates a page title, or other nifty things.
+>It's not like one is going to lose the fields defined by the meta plugin; if "author" is defined by \[[!meta author=...]] then that's what will be found by "field" (provided the "meta" plugin is registered; that's what the "field_register" option is for).
+>--[[KathrynAndersen]]
+
 From a coding style point of view, the `$CamelCase` variable names aren't
 IkiWiki style, and the `match_foo` functions look as though they could benefit
 from being thin wrappers around a common `&IkiWiki::Plugin::field::match`
@@ -17,6 +21,8 @@ function (see `meta` for a similar approach).
 I think the documentation would probably be clearer in a less manpage-like
 and more ikiwiki-like style?
 
+> I don't think ikiwiki *has* a "style" for docs, does it?  So I followed the Perl Module style. And I'm rather baffled as to why having the docs laid out in clear sections... make them less clear. --[[KathrynAndersen]]
+
 If one of my branches from [[todo/allow_plugins_to_add_sorting_methods]] is
 accepted, a `field()` cmp type would mean that [[plugins/contrib/report]] can
 stop reimplementing sorting. Here's the implementation I'm using, with
-- 
cgit v1.2.3


From 2d1e4cce45024f6b2c384eaf7b5276c448cb3a05 Mon Sep 17 00:00:00 2001
From: "http://kerravonsen.dreamwidth.org/"
 
Date: Tue, 30 Mar 2010 05:38:31 +0000
Subject: response

---
 doc/plugins/contrib/ftemplate/discussion.mdwn | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/doc/plugins/contrib/ftemplate/discussion.mdwn b/doc/plugins/contrib/ftemplate/discussion.mdwn
index eb2ec6f13..adb66ee6a 100644
--- a/doc/plugins/contrib/ftemplate/discussion.mdwn
+++ b/doc/plugins/contrib/ftemplate/discussion.mdwn
@@ -7,7 +7,11 @@ hooks (probably easiest to just patch `template` to implement a
 second directive, or have a special parameter `run_hooks="yes"`,
 or something).
 
+> I got the impression that `pagetemplate` hooks are intended to be completely independent of `template` variables; page-template is for the actual `page.tmpl` template, while `template` is for other templates which are used inside the page content.  So I don't understand why one would need a run_hooks option. --[[KathrynAndersen]]
+
 Another missing thing is that `ftemplate` looks in
 the "system" templates directories, not just in the wiki, but that
 seems orthogonal (and might be a good enhancement to `template` anyway).
 --[[smcv]]
+
+> Yes, I added that because I wanted the option of not having to make all my templates work as wiki pages also. --[[KathrynAndersen]]
-- 
cgit v1.2.3


From a284d5fa0aed7778130f95c9883fe8815ecf37b6 Mon Sep 17 00:00:00 2001
From: "http://www.google.com/profiles/schmonz"
 
Date: Tue, 30 Mar 2010 05:48:51 +0000
Subject: update home page URL

---
 doc/users/schmonz.mdwn | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/users/schmonz.mdwn b/doc/users/schmonz.mdwn
index 7ebd8311c..03c52b6aa 100644
--- a/doc/users/schmonz.mdwn
+++ b/doc/users/schmonz.mdwn
@@ -1,3 +1,3 @@
-[Amitai Schlair](http://www.columbia.edu/~ays2105/) recently discovered ikiwiki and finds himself using it for all sorts of things. His attempts at contributing:
+[Amitai Schlair](http://www.netbsd.org/~schmonz/) recently discovered ikiwiki and finds himself using it for all sorts of things. His attempts at contributing:
 
 [[!map pages="!*/Discussion and ((link(users/schmonz) and plugins/*) or rcs/cvs)"]]
-- 
cgit v1.2.3


From 90c444d9f197a5a9b87d3e70248279ac68e351a6 Mon Sep 17 00:00:00 2001
From: "http://kerravonsen.dreamwidth.org/"
 
Date: Tue, 30 Mar 2010 06:44:04 +0000
Subject: response

---
 doc/plugins/contrib/report/discussion.mdwn | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/doc/plugins/contrib/report/discussion.mdwn b/doc/plugins/contrib/report/discussion.mdwn
index 918d0779b..42a1009cb 100644
--- a/doc/plugins/contrib/report/discussion.mdwn
+++ b/doc/plugins/contrib/report/discussion.mdwn
@@ -18,6 +18,17 @@ removing the special case for `field`.
 Perhaps the `headers` thing could migrate into inline somehow? That might
 lead to making inline too big, though.
 
+> I think inline is *already* too big, honestly. --[[KathrynAndersen]]
+
 Is the intention that the `trail` part is a performance hack, or a way
 to select pages? How does it relate to [[todo/wikitrails]] or
 [[plugins/contrib/trail]]? --[[smcv]]
+
+> The `trail` part is *both* a performance hack, and a way to select pages.  I have over 5000 pages on my site, I need all the performance hacks I can get.
+> For the performance hack, it is a way of reducing the need to iterate through every single page in the wiki in order to find matching pages.
+> For the way-to-select-pages, yes, it is intended to be similar to [[todo/wikitrails]] and [[plugins/contrib/trail]] (and will be more similar with the new release which will be happening soon; it will add prev_* and next_* variables).
+> The idea is that, rather than having to add special "trail" links on PageA to indicate that a page is part of the trail,
+> it takes advantage of the `%links` hash, which already contains, for each page, an array of the links from that page to other pages.  No need for special markup, just use what's there; a trail is defined as "all the pages linked to from page X", and since it's an array, it has an order already.
+> But to avoid that being too limiting, one can use a `pages=...` pagespec to filter that list to a subset; only the pages one is interested in.
+> And one can also sort it, if one so desires.
+> --[[KathrynAndersen]] 
-- 
cgit v1.2.3


From f673ce266c8dadb263c6850cc5f7d3e6e7a68e70 Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Tue, 30 Mar 2010 12:01:35 +0000
Subject: feature request (part of ftemplate)

---
 doc/todo/user-defined_templates_outside_the_wiki.mdwn | 8 ++++++++
 1 file changed, 8 insertions(+)
 create mode 100644 doc/todo/user-defined_templates_outside_the_wiki.mdwn

diff --git a/doc/todo/user-defined_templates_outside_the_wiki.mdwn b/doc/todo/user-defined_templates_outside_the_wiki.mdwn
new file mode 100644
index 000000000..880ad6493
--- /dev/null
+++ b/doc/todo/user-defined_templates_outside_the_wiki.mdwn
@@ -0,0 +1,8 @@
+[[!tag wishlist]]
+
+The [[plugins/contrib/ftemplate]] plugin looks for templates inside the wiki
+source, but also looks in the system templates directory (the one with
+`page.tmpl`). This means the wiki admin can provide templates that can be
+invoked via `\[[!template]]`, but don't have to "work" as wiki pages in their
+own right. I think the normal [[plugins/template]] plugin could benefit from
+this functionality.
-- 
cgit v1.2.3


From 026355cfa24dc911a247dcafca10c6ea74ae515b Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Tue, 30 Mar 2010 12:09:59 +0000
Subject: respond and attempt to invoke Joey :-)

---
 doc/plugins/contrib/ftemplate/discussion.mdwn | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/doc/plugins/contrib/ftemplate/discussion.mdwn b/doc/plugins/contrib/ftemplate/discussion.mdwn
index adb66ee6a..de4b35ef0 100644
--- a/doc/plugins/contrib/ftemplate/discussion.mdwn
+++ b/doc/plugins/contrib/ftemplate/discussion.mdwn
@@ -9,9 +9,24 @@ or something).
 
 > I got the impression that `pagetemplate` hooks are intended to be completely independent of `template` variables; page-template is for the actual `page.tmpl` template, while `template` is for other templates which are used inside the page content.  So I don't understand why one would need a run_hooks option. --[[KathrynAndersen]]
 
+>> `Render`, `inline`, `comments` and `recentchanges` run `pagetemplate`
+>> hooks, as does anything that uses `IkiWiki::misctemplate`. From that
+>> quick survey, it seems as though `template` is the only thing that
+>> uses `HTML::Template` but *doesn't* run `pagetemplate` hooks?
+>>
+>> It just seems strange to me that `field` needs to have its own
+>> of `template` (this), its own variant of `inline` (`report`),
+>> and so on - I'd tend to lean more towards having `field`
+>> enhance the existing plugins. I'm not an ikiwiki committer,
+>> mind... Joey, your opinion would be appreciated! --[[smcv]]
+
 Another missing thing is that `ftemplate` looks in
 the "system" templates directories, not just in the wiki, but that
 seems orthogonal (and might be a good enhancement to `template` anyway).
 --[[smcv]]
 
 > Yes, I added that because I wanted the option of not having to make all my templates work as wiki pages also. --[[KathrynAndersen]]
+
+>> Yeah, that's something that annoys me about `template` too. I've
+>> opened a todo: [[todo/user-defined_templates_outside_the_wiki]].
+>> --s
-- 
cgit v1.2.3


From 0503bf7c8824d941b26da4c91b4ee1f721fcf54c Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Tue, 30 Mar 2010 12:10:40 +0000
Subject:

---
 doc/plugins/contrib/ftemplate/discussion.mdwn | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/plugins/contrib/ftemplate/discussion.mdwn b/doc/plugins/contrib/ftemplate/discussion.mdwn
index de4b35ef0..6a1d9f685 100644
--- a/doc/plugins/contrib/ftemplate/discussion.mdwn
+++ b/doc/plugins/contrib/ftemplate/discussion.mdwn
@@ -15,7 +15,7 @@ or something).
 >> uses `HTML::Template` but *doesn't* run `pagetemplate` hooks?
 >>
 >> It just seems strange to me that `field` needs to have its own
->> of `template` (this), its own variant of `inline` (`report`),
+>> variant of `template` (this), its own variant of `inline` (`report`),
 >> and so on - I'd tend to lean more towards having `field`
 >> enhance the existing plugins. I'm not an ikiwiki committer,
 >> mind... Joey, your opinion would be appreciated! --[[smcv]]
-- 
cgit v1.2.3


From edcea2b98100aa1ff18b91038a33e2ea55f13850 Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Tue, 30 Mar 2010 12:27:18 +0000
Subject: respond

---
 doc/plugins/contrib/report/discussion.mdwn | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/doc/plugins/contrib/report/discussion.mdwn b/doc/plugins/contrib/report/discussion.mdwn
index 42a1009cb..a6cb6f8bd 100644
--- a/doc/plugins/contrib/report/discussion.mdwn
+++ b/doc/plugins/contrib/report/discussion.mdwn
@@ -20,6 +20,13 @@ lead to making inline too big, though.
 
 > I think inline is *already* too big, honestly. --[[KathrynAndersen]]
 
+>> A fair point; perhaps my complaint should be that *inline* does
+>> too many orthogonal things. I suppose the headers feature wouldn't
+>> really make sense in an inline that didn't have `archive="yes"`,
+>> so it'd make sense to recommend this plugin as a replacement
+>> for inlining with archive=yes (for which I now realise "inline"
+>> is the wrong verb anyway :-) ) --s
+
 Is the intention that the `trail` part is a performance hack, or a way
 to select pages? How does it relate to [[todo/wikitrails]] or
 [[plugins/contrib/trail]]? --[[smcv]]
@@ -32,3 +39,18 @@ to select pages? How does it relate to [[todo/wikitrails]] or
 > But to avoid that being too limiting, one can use a `pages=...` pagespec to filter that list to a subset; only the pages one is interested in.
 > And one can also sort it, if one so desires.
 > --[[KathrynAndersen]] 
+
+>> That's an interesting approach to trails; I'd missed the fact that
+>> links are already ordered.
+>>
+>> This does have the same problems as tags, though: see
+>> [[bugs/tagged()_matching_wikilinks]] and
+>> [[todo/matching_different_kinds_of_links]]. I suppose the question
+>> now is whether new code should be consistent with `tag` (and
+>> potentially be fixed at the same time as tag itself), or try to
+>> avoid those problems?
+>>
+>> The combination of `trail` with another pagespec in this plugin
+>> does provide a neat way for it to work around having unwanted
+>> pages in the report, by limiting by a suitable tag or subdirectory
+>> or something. --s
-- 
cgit v1.2.3


From bb8b941bfc3d3564324a23bba14dc8112d8ea6c7 Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Tue, 30 Mar 2010 12:48:03 +0000
Subject: respond; correct license of fieldsort plugin to match IkiWiki

---
 doc/plugins/contrib/field/discussion.mdwn | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/doc/plugins/contrib/field/discussion.mdwn b/doc/plugins/contrib/field/discussion.mdwn
index 4bb285a50..7e94a4029 100644
--- a/doc/plugins/contrib/field/discussion.mdwn
+++ b/doc/plugins/contrib/field/discussion.mdwn
@@ -13,6 +13,19 @@ behaviour, an auxiliary plugin would be easy.)
 >It's not like one is going to lose the fields defined by the meta plugin; if "author" is defined by \[[!meta author=...]] then that's what will be found by "field" (provided the "meta" plugin is registered; that's what the "field_register" option is for).
 >--[[KathrynAndersen]]
 
+>> Hmm. I suppose if you put the title (or whatever) in the YAML, then
+>> "almost" all the places in IkiWiki that respect titles will do the
+>> right thing due to the pagetemplate hook, with the exception being
+>> anything that has special side-effects inside `meta` (like `date`),
+>> or anything that looks in `$pagestate{foo}{meta}` directly
+>> (like `map`). Is your plan that `meta` should register itself by
+>> default, and `map` and friends should be adapted to
+>> work based on `getfield()` instead of `$pagestate{foo}{meta}`, then?
+>>
+>> (On the site I mentioned, I'm using an unmodified version of `field`,
+>> and currently working around the collision by tagging books' pages
+>> with `bookauthor` instead of `author` in the YAML.) --s
+
 From a coding style point of view, the `$CamelCase` variable names aren't
 IkiWiki style, and the `match_foo` functions look as though they could benefit
 from being thin wrappers around a common `&IkiWiki::Plugin::field::match`
@@ -23,13 +36,20 @@ and more ikiwiki-like style?
 
 > I don't think ikiwiki *has* a "style" for docs, does it?  So I followed the Perl Module style. And I'm rather baffled as to why having the docs laid out in clear sections... make them less clear. --[[KathrynAndersen]]
 
+>> I keep getting distracted by the big shouty headings :-)
+>> I suppose what I was really getting at was that when this plugin
+>> is merged, its docs will end up split between its plugin
+>> page, [[plugins/write]] and [[ikiwiki/PageSpec]]; on some of the
+>> contrib plugins I've added I've tried to separate the docs
+>> according to how they'll hopefully be laid out after merge. --s
+
 If one of my branches from [[todo/allow_plugins_to_add_sorting_methods]] is
 accepted, a `field()` cmp type would mean that [[plugins/contrib/report]] can
 stop reimplementing sorting. Here's the implementation I'm using, with
 your "sortspec" concept (a sort-hook would be very similar): if merged,
 I think it should just be part of `field` rather than a separate plugin.
 
-	# Copyright © 2010 Simon McVittie, released under GNU LGPL >= 2.1
+	# Copyright © 2010 Simon McVittie, released under GNU GPL >= 2
 	package IkiWiki::Plugin::fieldsort;
 	use warnings;
 	use strict;
-- 
cgit v1.2.3


From 35fcc2ec8f1d3a3048d99a568df645607a99fbf1 Mon Sep 17 00:00:00 2001
From: "http://edrex.myopenid.com/" 
Date: Wed, 31 Mar 2010 00:21:58 +0000
Subject:

---
 doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn | 4 ++++
 1 file changed, 4 insertions(+)
 create mode 100644 doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn

diff --git a/doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn b/doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn
new file mode 100644
index 000000000..6f742ff70
--- /dev/null
+++ b/doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn
@@ -0,0 +1,4 @@
+[[!table format=dsv delimiter="\t" data="""
+1	2
+2	4
+"""]]
-- 
cgit v1.2.3


From 66ecf1dba5d0aca59affd30029fe14ad5e3efc94 Mon Sep 17 00:00:00 2001
From: "http://edrex.myopenid.com/" 
Date: Wed, 31 Mar 2010 00:24:22 +0000
Subject:

---
 doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn b/doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn
index 6f742ff70..b407255aa 100644
--- a/doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn
+++ b/doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn
@@ -1,3 +1,5 @@
+Table directive should support tab-delimited data, especially important since this is the format you will get if copy/pasting from an HTML table or spreadsheet (Gnumeric, OO Calc, Excel). Test case which fails:
+
 [[!table format=dsv delimiter="\t" data="""
 1	2
 2	4
-- 
cgit v1.2.3


From 7f63763a30e774e9a10bd1416f157dd2b3e2e69b Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Wed, 31 Mar 2010 02:07:52 +0000
Subject: they do work, with the right syntax (C backslash escapes aren't
 interpreted)

---
 doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn b/doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn
index b407255aa..278826ea0 100644
--- a/doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn
+++ b/doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn
@@ -4,3 +4,17 @@ Table directive should support tab-delimited data, especially important since th
 1	2
 2	4
 """]]
+
+> They do work, but C-style backslash escapes aren't recognised,
+> so the syntax `delimiter="\t"` (as in your test case) looks
+> for the literal string `\t`. Replacing `\t` with a literal
+> tab character makes it work - here's a test (I changed the data
+> to make the table layout more obvious):
+>
+> [[!table format=dsv delimiter="	" data="""
+left	2
+2	right
+alpha	beta
+"""]]
+>
+> So, I think this can be considered [[not_a_bug|done]]? --[[smcv]]
-- 
cgit v1.2.3


From fc5445b90677489642e4ae8d5b2f6c54cdd847c5 Mon Sep 17 00:00:00 2001
From: "http://kerravonsen.dreamwidth.org/"
 
Date: Wed, 31 Mar 2010 03:01:41 +0000
Subject: response

---
 doc/plugins/contrib/ftemplate/discussion.mdwn | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/doc/plugins/contrib/ftemplate/discussion.mdwn b/doc/plugins/contrib/ftemplate/discussion.mdwn
index 6a1d9f685..eb84dd09b 100644
--- a/doc/plugins/contrib/ftemplate/discussion.mdwn
+++ b/doc/plugins/contrib/ftemplate/discussion.mdwn
@@ -20,6 +20,8 @@ or something).
 >> enhance the existing plugins. I'm not an ikiwiki committer,
 >> mind... Joey, your opinion would be appreciated! --[[smcv]]
 
+>>> I did it that way basically because I needed the functionality ASAP, and I didn't want to step on anyone's toes, so I made them as separate plugins.  If Joey wants to integrate the functionality into IkiWiki proper, I would be very happy, but I don't want to put pressure on him. --[[KathrynAndersen]]
+
 Another missing thing is that `ftemplate` looks in
 the "system" templates directories, not just in the wiki, but that
 seems orthogonal (and might be a good enhancement to `template` anyway).
-- 
cgit v1.2.3


From 4dcea6207d03fcdc25bc1c172d69c30673b7254a Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Wed, 31 Mar 2010 17:51:46 -0400
Subject: page.tmpl: Add Cache-Control must-revalidate to ensure that users
 (especially of Firefox) see fresh page content.

Since Firefox version 3, it's done aggressive caching of visited pages, and
does not, by default, check if the cached content is still valid when
reloading or revisiting a page. By default, Firefox seems to not re-contact
the web server at all. Compare with eg, Epiphany and Chromium, which appear
to always check, and get back a 304 when the page is unchanged.

This header makes Firefox do the right thing, at least for html files. It
still over-caches if css, javascript, images, etc, are changed.
---
 debian/changelog    | 2 ++
 templates/page.tmpl | 1 +
 2 files changed, 3 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 5ec52d3c0..bbca7cffe 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -23,6 +23,8 @@ ikiwiki (3.20100324) UNRELEASED; urgency=low
   * openid: Use Openid Simple Registration or OpenID Attribute Exchange
     to get the user's email address and username. (Neither is yet
     used, but they are available in the session object now.)
+  * page.tmpl: Add Cache-Control must-revalidate to ensure that users
+    (especially of Firefox) see fresh page content.
 
  -- Joey Hess   Sat, 13 Mar 2010 14:48:10 -0500
 
diff --git a/templates/page.tmpl b/templates/page.tmpl
index 968066a19..c24f88823 100644
--- a/templates/page.tmpl
+++ b/templates/page.tmpl
@@ -3,6 +3,7 @@
 
 
 
+
 <TMPL_VAR TITLE>
 
 
-- 
cgit v1.2.3


From 4eed0abc8c181a027fa802d209fd95d8c10ee9f0 Mon Sep 17 00:00:00 2001
From: "http://kerravonsen.dreamwidth.org/"
 
Date: Thu, 1 Apr 2010 00:23:31 +0000
Subject: response; thoughts about inline and tags

---
 doc/plugins/contrib/report/discussion.mdwn | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/doc/plugins/contrib/report/discussion.mdwn b/doc/plugins/contrib/report/discussion.mdwn
index a6cb6f8bd..953509297 100644
--- a/doc/plugins/contrib/report/discussion.mdwn
+++ b/doc/plugins/contrib/report/discussion.mdwn
@@ -27,6 +27,8 @@ lead to making inline too big, though.
 >> for inlining with archive=yes (for which I now realise "inline"
 >> is the wrong verb anyway :-) ) --s
 
+>>> I think *inline* would be a bit less unwieldy if there was some way of factoring out the feed stuff into a separate plugin, but I don't know if that's possible. --K.A.
+
 Is the intention that the `trail` part is a performance hack, or a way
 to select pages? How does it relate to [[todo/wikitrails]] or
 [[plugins/contrib/trail]]? --[[smcv]]
@@ -54,3 +56,7 @@ to select pages? How does it relate to [[todo/wikitrails]] or
 >> does provide a neat way for it to work around having unwanted
 >> pages in the report, by limiting by a suitable tag or subdirectory
 >> or something. --s
+
+>>> Either that, or somehow combine tagging with fields, such that one could declare a tag, and it would create both a link and a field with a given value.  (I've been working on something like that, but it still has bugs).
+>>> That way, the test for whether something is tagged would be something like "link(tag/foo) and field(tag foo)".
+>>> --K.A.
-- 
cgit v1.2.3


From 63bc057690d388a81e643d4556c6a001d886b59c Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Thu, 1 Apr 2010 01:35:35 +0000
Subject:

---
 doc/plugins/contrib/report/discussion.mdwn | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/doc/plugins/contrib/report/discussion.mdwn b/doc/plugins/contrib/report/discussion.mdwn
index 953509297..a257198c0 100644
--- a/doc/plugins/contrib/report/discussion.mdwn
+++ b/doc/plugins/contrib/report/discussion.mdwn
@@ -60,3 +60,10 @@ to select pages? How does it relate to [[todo/wikitrails]] or
 >>> Either that, or somehow combine tagging with fields, such that one could declare a tag, and it would create both a link and a field with a given value.  (I've been working on something like that, but it still has bugs).
 >>> That way, the test for whether something is tagged would be something like "link(tag/foo) and field(tag foo)".
 >>> --K.A.
+
+>>>> I can see that this'd work well for 1:1 relationships like next
+>>>> and previous, but I don't think that'd work for pages with more than
+>>>> one tag - as far as I can see, `field`'s data model is that each
+>>>> page has no more than one value for each field?
+>>>> [[todo/Matching_different_kinds_of_links]] has some thoughts about
+>>>> how it could be implemented, though. --s
-- 
cgit v1.2.3


From a682df9a1f14ea873c7103f80108330840a15cd0 Mon Sep 17 00:00:00 2001
From: "http://kerravonsen.dreamwidth.org/"
 
Date: Thu, 1 Apr 2010 07:22:37 +0000
Subject: considering tags and fields

---
 doc/plugins/contrib/report/discussion.mdwn | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/doc/plugins/contrib/report/discussion.mdwn b/doc/plugins/contrib/report/discussion.mdwn
index a257198c0..e23a4ced4 100644
--- a/doc/plugins/contrib/report/discussion.mdwn
+++ b/doc/plugins/contrib/report/discussion.mdwn
@@ -67,3 +67,9 @@ to select pages? How does it relate to [[todo/wikitrails]] or
 >>>> page has no more than one value for each field?
 >>>> [[todo/Matching_different_kinds_of_links]] has some thoughts about
 >>>> how it could be implemented, though. --s
+
+>>>>> You have a point there.  I'm not sure what would be better: to add the concept of arrays/sets to `field`, or to think of tags as a special case.  Problem is, I find tags as they currently exist to be too limiting.  I prefer something that can be used for Faceted Tagging ; that is, things like Author:Fred Nurk, Genre:Historical, Rating:Good, and so on.  Of course, that doesn't mean that each tag is limited to only one value, either; just to take the above examples, something might have more than one author, or have multiple genres (such as Historical + Romance).
+
+>>>>> It might be that adding arrays to the `field` plugin is a good way to go: after all, even though field=value is the most common, with the flexibility of things like YAML, one could define all sorts of things.  What I'm not so sure about is how to return the values when queried, since some things would be expecting scalars all the time.  Ah, perhaps I could use wantarray?
+>>>>> Is there a way of checking a HTML::Template template to see if it expecting an array for a particular value?
+>>>>> --[[KathrynAndersen]]
-- 
cgit v1.2.3


From 3c9cd4f156018aea3d10dbf02be529e85c05eb66 Mon Sep 17 00:00:00 2001
From: Simon McVittie 
Date: Thu, 1 Apr 2010 18:13:38 +0100
Subject: Explain tab-delimited tables a bit better

---
 doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn | 2 ++
 doc/ikiwiki/directive/table.mdwn                   | 5 +++++
 2 files changed, 7 insertions(+)

diff --git a/doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn b/doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn
index 278826ea0..39d57a4fe 100644
--- a/doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn
+++ b/doc/bugs/Tab_delimited_tables_don__39__t_work.mdwn
@@ -18,3 +18,5 @@ alpha	beta
 """]]
 >
 > So, I think this can be considered [[not_a_bug|done]]? --[[smcv]]
+
+>> I've clarified the documentation. --[[smcv]]
diff --git a/doc/ikiwiki/directive/table.mdwn b/doc/ikiwiki/directive/table.mdwn
index 2dac97724..a6692f92c 100644
--- a/doc/ikiwiki/directive/table.mdwn
+++ b/doc/ikiwiki/directive/table.mdwn
@@ -42,4 +42,9 @@ cells. For example:
   as the table header. Set it to "no" to make a table without a header, or
   "column" to make the first column be the header.
 
+For tab-delimited tables (often obtained by copying and pasting from HTML
+or a spreadsheet), `delimiter` must be set to a literal tab character. These
+are difficult to type in most web browsers - copying and pasting one from
+the table data is likely to be the easiest way.
+
 [[!meta robots="noindex, follow"]]
-- 
cgit v1.2.3


From a7ef2204dc36777f847e282f57299d93342a8ad6 Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Thu, 1 Apr 2010 23:40:37 +0000
Subject: implemented!

---
 doc/todo/matching_different_kinds_of_links.mdwn | 51 +++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/doc/todo/matching_different_kinds_of_links.mdwn b/doc/todo/matching_different_kinds_of_links.mdwn
index 26c5a072b..0049281fe 100644
--- a/doc/todo/matching_different_kinds_of_links.mdwn
+++ b/doc/todo/matching_different_kinds_of_links.mdwn
@@ -36,6 +36,11 @@ Besides pagespecs, the `rel=` attribute could be used for styles. --Ivan Z.
 > normal links.) Might be better to go ahead and add the variable to
 > core though. --[[Joey]] 
 
+>> I've implemented this with the data structure you suggested, except that
+>> I called it `%typedlinks` instead of `%linktype` (it seemed to make more
+>> sense that way). I also ported `tag` to it, and added a `tagged_is_strict`
+>> config option. See below! --[[smcv]]
+
 I saw somewhere else here some suggestions for the wiki-syntax for specifying the relation name of a link. One more suggestion---[the syntax used in Semantic MediaWiki](http://en.wikipedia.org/wiki/Semantic_MediaWiki#Basic_usage), like this:
 
 
@@ -45,3 +50,49 @@ I saw somewhere else here some suggestions for the wiki-syntax for specifying th
 So a part of the effect of [[`\[[!taglink TAG\]\]`|plugins/tag]] could be represented as something like `\[[tag::TAG]]` or (more understandable relation name in what concerns the direction) `\[[tagged::TAG]]`.
 
 I don't have any opinion on this syntax (whether it's good or not)...--Ivan Z.
+
+-------
+
+>> [[!template id=gitbranch author="[[Simon_McVittie|smcv]]" branch=smcv/link-types]]
+>> [[!tag patch]]
+
+## Documentation for smcv's branch
+
+### added to [[ikiwiki/pagespec]]
+
+* "`typedlink(type glob)`" - matches pages that link to a given page (or glob)
+  with a given link type. Plugins can create links with a specific type:
+  for instance, the tag plugin creates links of type `tag`.
+
+### added to [[plugins/tag]]
+
+If the `tagged_is_strict` config option is set, `tagged()` will only match
+tags explicitly set with [[ikiwiki/directive/tag]] or
+[[ikiwiki/directive/taglink]]; if not (the default), it will also match
+any other [[WikiLinks|ikiwiki/WikiLink]] to the tag page.
+
+### added to [[plugins/write]]
+
+#### `%typedlinks`
+
+The `%typedlinks` hash records links of specific types. Do not modify this
+hash directly; call `add_link()`. The keys are page names, and the values
+are hash references. In each page's hash reference, the keys are link types
+defined by plugins, and the values are hash references with link targets
+as keys, and 1 as a dummy value, something like this:
+
+	$typedlinks{"foo"} = {
+		tag => { short_word => 1, metasyntactic_variable => 1 },
+		next_page => { bar => 1 },
+	};
+
+Ordinary [[WikiLinks|ikiwiki/WikiLink]] appear in `%links`, but not in
+`%typedlinks`.
+
+#### `add_link($$;$)`
+ 
+ This adds a link to `%links`, ensuring that duplicate links are not
+ added. Pass it the page that contains the link, and the link text.
+ 
+An optional third parameter sets the link type (`undef` produces an ordinary
+[[ikiwiki/WikiLink]]).
-- 
cgit v1.2.3


From 93024e5193e01904b9e9688a4553d24cee23c490 Mon Sep 17 00:00:00 2001
From: adrianna 
Date: Fri, 2 Apr 2010 12:00:46 +0000
Subject:

---
 doc/forum.mdwn | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/forum.mdwn b/doc/forum.mdwn
index 19ca9ed0b..f4c8bbee4 100644
--- a/doc/forum.mdwn
+++ b/doc/forum.mdwn
@@ -1,8 +1,8 @@
 This is a place for questions and discussions that don't have a Discussion
 page fitting enough. Users of ikiwiki can ask questions here.
 
-Note that for more formal bug reports or todo items, you can also edit the
-[[bugs]] and [[todo]] pages.
+Note that for more formal bug reports or todo items, you can also edit [http://custom-paper-writing.com/editing-services service essays] the
+[[bugs]] and [[todo]] [http://essaywritingservices.org/book-report.php book report help] pages.
 
 ## Current topics ##
 
-- 
cgit v1.2.3


From c7bccf3a2a23486fc4a2d0923d95c34554e0b087 Mon Sep 17 00:00:00 2001
From: adrianna 
Date: Fri, 2 Apr 2010 12:01:24 +0000
Subject:

---
 doc/forum.mdwn | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/forum.mdwn b/doc/forum.mdwn
index f4c8bbee4..958238f8a 100644
--- a/doc/forum.mdwn
+++ b/doc/forum.mdwn
@@ -1,8 +1,8 @@
 This is a place for questions and discussions that don't have a Discussion
 page fitting enough. Users of ikiwiki can ask questions here.
 
-Note that for more formal bug reports or todo items, you can also edit [http://custom-paper-writing.com/editing-services service essays] the
-[[bugs]] and [[todo]] [http://essaywritingservices.org/book-report.php book report help] pages.
+Note that for more formal bug reports or todo items, you can also edit [[http://custom-paper-writing.com/editing-services service essays]] the
+[[bugs]] and [[todo]] [[http://essaywritingservices.org/book-report.php book report help]] pages.
 
 ## Current topics ##
 
-- 
cgit v1.2.3


From 1587e38fd4c4083a3d25e2c613c74c07530a344c Mon Sep 17 00:00:00 2001
From: adrianna 
Date: Fri, 2 Apr 2010 12:03:58 +0000
Subject:

---
 doc/forum.mdwn | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/forum.mdwn b/doc/forum.mdwn
index 958238f8a..6febfa374 100644
--- a/doc/forum.mdwn
+++ b/doc/forum.mdwn
@@ -1,8 +1,8 @@
 This is a place for questions and discussions that don't have a Discussion
 page fitting enough. Users of ikiwiki can ask questions here.
 
-Note that for more formal bug reports or todo items, you can also edit [[http://custom-paper-writing.com/editing-services service essays]] the
-[[bugs]] and [[todo]] [[http://essaywritingservices.org/book-report.php book report help]] pages.
+Note that for more formal bug reports or todo items, you can also edit [[service essays http://custom-paper-writing.com/editing-services]] the
+[[bugs]] and [[todo]] [[ book report help http://essaywritingservices.org/book-report.php]] pages.
 
 ## Current topics ##
 
-- 
cgit v1.2.3


From cad194a2eeeaa2226fb9bd60c3f38861b1d6663e Mon Sep 17 00:00:00 2001
From: adrianna 
Date: Fri, 2 Apr 2010 12:05:18 +0000
Subject:

---
 doc/forum.mdwn | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/forum.mdwn b/doc/forum.mdwn
index 6febfa374..2e766c4e4 100644
--- a/doc/forum.mdwn
+++ b/doc/forum.mdwn
@@ -1,8 +1,8 @@
 This is a place for questions and discussions that don't have a Discussion
 page fitting enough. Users of ikiwiki can ask questions here.
 
-Note that for more formal bug reports or todo items, you can also edit [[service essays http://custom-paper-writing.com/editing-services]] the
-[[bugs]] and [[todo]] [[ book report help http://essaywritingservices.org/book-report.php]] pages.
+Note that for more formal bug reports or todo items, you can also edit [service essays](http://custom-paper-writing.com/editing-services) the
+[[bugs]] and [[todo]] [book report help](http://essaywritingservices.org/book-report.php) pages.
 
 ## Current topics ##
 
-- 
cgit v1.2.3


From 7f488c70123890aa7f9ca86184c177f6c037eae1 Mon Sep 17 00:00:00 2001
From: Simon McVittie 
Date: Fri, 2 Apr 2010 13:07:22 +0100
Subject: Despam

---
 doc/forum.mdwn | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/forum.mdwn b/doc/forum.mdwn
index 2e766c4e4..19ca9ed0b 100644
--- a/doc/forum.mdwn
+++ b/doc/forum.mdwn
@@ -1,8 +1,8 @@
 This is a place for questions and discussions that don't have a Discussion
 page fitting enough. Users of ikiwiki can ask questions here.
 
-Note that for more formal bug reports or todo items, you can also edit [service essays](http://custom-paper-writing.com/editing-services) the
-[[bugs]] and [[todo]] [book report help](http://essaywritingservices.org/book-report.php) pages.
+Note that for more formal bug reports or todo items, you can also edit the
+[[bugs]] and [[todo]] pages.
 
 ## Current topics ##
 
-- 
cgit v1.2.3


From e71a912f0c64b1eb6ead8242868da6f5a9606c8b Mon Sep 17 00:00:00 2001
From: adrianna 
Date: Fri, 2 Apr 2010 12:07:42 +0000
Subject:

---
 doc/shortcuts.mdwn | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/doc/shortcuts.mdwn b/doc/shortcuts.mdwn
index 54dd0fdb1..179cb89e6 100644
--- a/doc/shortcuts.mdwn
+++ b/doc/shortcuts.mdwn
@@ -49,7 +49,9 @@ This page controls what shortcut links the wiki supports.
 * [[!shortcut name=emacswiki url="http://www.emacswiki.org/cgi-bin/wiki/%s"]]
 * [[!shortcut name=haskellwiki url="http://haskell.org/haskellwiki/%s"]]
 * [[!shortcut name=dict url="http://www.dict.org/bin/Dict?Form=Dict1&Strategy=*&Database=*&Query=%s"]]
-* [[!shortcut name=imdb url="http://imdb.com/find?q=%s"]]
+* [[!shortcut name=imdb url="http://imdb.com/find?q=%s"]] 
+* [custom writing company](http://essaywritingservices.org/custom-essay-writing.php) 
+* [certified resume writer](http://cvresumewriters.com/onlineresume.php)
 * [[!shortcut name=gpg url="http://pgpkeys.mit.edu:11371/pks/lookup?op=vindex&exact=on&search=0x%s"]]
 * [[!shortcut name=perldoc url="http://perldoc.perl.org/search.html?q=%s"]]
 * [[!shortcut name=whois url="http://reports.internic.net/cgi/whois?whois_nic=%s&type=domain"]]
-- 
cgit v1.2.3


From e0074b91c7d1a44c468bdbf554cbef07434b7dfe Mon Sep 17 00:00:00 2001
From: adrianna 
Date: Fri, 2 Apr 2010 12:18:36 +0000
Subject:

---
 doc/shortcuts.mdwn | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/doc/shortcuts.mdwn b/doc/shortcuts.mdwn
index 179cb89e6..f33dfb6b6 100644
--- a/doc/shortcuts.mdwn
+++ b/doc/shortcuts.mdwn
@@ -49,9 +49,7 @@ This page controls what shortcut links the wiki supports.
 * [[!shortcut name=emacswiki url="http://www.emacswiki.org/cgi-bin/wiki/%s"]]
 * [[!shortcut name=haskellwiki url="http://haskell.org/haskellwiki/%s"]]
 * [[!shortcut name=dict url="http://www.dict.org/bin/Dict?Form=Dict1&Strategy=*&Database=*&Query=%s"]]
-* [[!shortcut name=imdb url="http://imdb.com/find?q=%s"]] 
-* [custom writing company](http://essaywritingservices.org/custom-essay-writing.php) 
-* [certified resume writer](http://cvresumewriters.com/onlineresume.php)
+* [[!shortcut name=imdb url="http://imdb.com/find?q=%s"]]  
 * [[!shortcut name=gpg url="http://pgpkeys.mit.edu:11371/pks/lookup?op=vindex&exact=on&search=0x%s"]]
 * [[!shortcut name=perldoc url="http://perldoc.perl.org/search.html?q=%s"]]
 * [[!shortcut name=whois url="http://reports.internic.net/cgi/whois?whois_nic=%s&type=domain"]]
@@ -67,13 +65,13 @@ This page controls what shortcut links the wiki supports.
 To add a new shortcut, use the `shortcut`
 [[ikiwiki/directive]]. In the url, "%s" is replaced with the
 text passed to the named shortcut, after [[!wikipedia url_encoding]]
-it, and '%S' is replaced with the raw, non-encoded text. The optional
+it, and '%S' is replaced with the raw, non-encoded text [custom writing company](http://essaywritingservices.org/custom-essay-writing.php). The optional
 `desc` parameter controls the description of the link.
 
 Remember that the `name` you give the shortcut will become a new
 [[ikiwiki/directive]].  Avoid using a `name` that conflicts
 with an existing directive.  These directives also accept a `desc`
-parameter that will override the one provided at definition time.
+parameter that will override [certified resume writer](http://cvresumewriters.com/onlineresume.php) the one provided at definition time.
 
 If you come up with a shortcut that you think others might find useful,
 consider contributing it to the [shortcuts page on the ikiwiki
-- 
cgit v1.2.3


From caa397b768c1fa4fda800ae0e86c10ac07b316a3 Mon Sep 17 00:00:00 2001
From: adrianna 
Date: Fri, 2 Apr 2010 12:24:14 +0000
Subject:

---
 doc/security.mdwn | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/security.mdwn b/doc/security.mdwn
index 21aef316b..a06f3a37f 100644
--- a/doc/security.mdwn
+++ b/doc/security.mdwn
@@ -376,7 +376,7 @@ parties.
 Cross Site Request Forging could be used to constuct a link that would
 change a logged-in user's password or other preferences if they clicked on
 the link. It could also be used to construct a link that would cause a wiki
-page to be modified by a logged-in user. ([[!cve CVE-2008-0165]])
+page [order essay](http://custom-paper-writing.com/order) to be modified by a logged-in user. ([[!cve CVE-2008-0165]])
 
 These holes were discovered on 10 April 2008 and fixed the same day with
 the release of ikiwiki 2.42. A fix was also backported to Debian etch, as
@@ -415,7 +415,7 @@ can cause it to crash. This can potentially be used for a denial of service
 attack.
 
 intrigeri discovered this problem on 12 Nov 2008 and a patch put in place
-later that day, in version 2.70. The fix was backported to testing as version
+later that day, in version 2.70. The fix was backported [write my essay](http://custom-essay-writing-service.org/faq.php) to testing as version
 2.53.3, and to stable as version 1.33.7.
 
 ## Insufficient blacklisting in teximg plugin
-- 
cgit v1.2.3


From bb99202474de4cb655d50a4f82b77b67e8445e5c Mon Sep 17 00:00:00 2001
From: adrianna 
Date: Fri, 2 Apr 2010 12:26:46 +0000
Subject:

---
 doc/features.mdwn | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/features.mdwn b/doc/features.mdwn
index 3925d78ef..c119dae97 100644
--- a/doc/features.mdwn
+++ b/doc/features.mdwn
@@ -125,7 +125,7 @@ yours when you commit.
 In the rare cases where automatic merging fails due to the same part of a
 page being concurrently edited, regular commit conflict markers are
 shown in the file to resolve the conflict, so if you're already familiar
-with that there's no new commit marker syntax to learn.
+with that there's no new commit [order essays](http://custom-paper-writing.com/order) marker syntax to learn.
 
 ### [[RecentChanges]], editing pages in a web browser
 
@@ -158,7 +158,7 @@ since page edit controls can be changed via plugins.
 
 ### [[PageHistory]]
 
-Well, sorta. Rather than implementing YA history browser, it can link to
+Well, sorta. Rather than implementing YA history browser [essay writing companies](http://essaywritingservices.org/custom-essay-writing.php), it can link to
 [[ViewVC]] or the like to browse the history of a wiki page.
 
 ### Full text search
-- 
cgit v1.2.3


From 0c1a1185c1957c161adda779d719d7ddca2d5021 Mon Sep 17 00:00:00 2001
From: adrianna 
Date: Fri, 2 Apr 2010 12:29:22 +0000
Subject:

---
 doc/setup.mdwn | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/setup.mdwn b/doc/setup.mdwn
index 2d4da5536..4ad64d73b 100644
--- a/doc/setup.mdwn
+++ b/doc/setup.mdwn
@@ -105,7 +105,7 @@ After making changes to this file, you need to tell ikiwiki to use it:
 ## Customizing file locations
 
 As a wiki compiler, ikiwiki builds a wiki from files in a source directory,
-and outputs the files to a destination directory. The source directory is
+and outputs the files to a destination directory [write my essay](http://custom-essay-writing-service.org/faq.php). The source directory is
 a working copy checked out from the version control system repository.
 
 When you used `auto.setup`, ikiwiki put the source directory, destination
@@ -118,7 +118,7 @@ First, move the destination directory and repository around.
 	% mv public_html/foo /srv/web/foo.com
 	% mv foo.git /srv/git/foo.git
 
-If you moved the repository to a new location, checkouts pointing at the
+If you moved the repository to a new location [buy reports](http://essaywritingservices.org/book-report.php), checkouts pointing at the
 old location won't work, and the easiest way to deal with this is to delete
 them and re-checkout from the new repository location.
    
-- 
cgit v1.2.3


From 05b6e8ceee2bec4442727e2475abf8a8861d5e0a Mon Sep 17 00:00:00 2001
From: Simon McVittie 
Date: Fri, 2 Apr 2010 18:28:34 +0100
Subject: Despam, again. Someone ban adrianna please?

---
 doc/features.mdwn  | 4 ++--
 doc/security.mdwn  | 4 ++--
 doc/setup.mdwn     | 4 ++--
 doc/shortcuts.mdwn | 6 +++---
 4 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/doc/features.mdwn b/doc/features.mdwn
index c119dae97..3925d78ef 100644
--- a/doc/features.mdwn
+++ b/doc/features.mdwn
@@ -125,7 +125,7 @@ yours when you commit.
 In the rare cases where automatic merging fails due to the same part of a
 page being concurrently edited, regular commit conflict markers are
 shown in the file to resolve the conflict, so if you're already familiar
-with that there's no new commit [order essays](http://custom-paper-writing.com/order) marker syntax to learn.
+with that there's no new commit marker syntax to learn.
 
 ### [[RecentChanges]], editing pages in a web browser
 
@@ -158,7 +158,7 @@ since page edit controls can be changed via plugins.
 
 ### [[PageHistory]]
 
-Well, sorta. Rather than implementing YA history browser [essay writing companies](http://essaywritingservices.org/custom-essay-writing.php), it can link to
+Well, sorta. Rather than implementing YA history browser, it can link to
 [[ViewVC]] or the like to browse the history of a wiki page.
 
 ### Full text search
diff --git a/doc/security.mdwn b/doc/security.mdwn
index a06f3a37f..21aef316b 100644
--- a/doc/security.mdwn
+++ b/doc/security.mdwn
@@ -376,7 +376,7 @@ parties.
 Cross Site Request Forging could be used to constuct a link that would
 change a logged-in user's password or other preferences if they clicked on
 the link. It could also be used to construct a link that would cause a wiki
-page [order essay](http://custom-paper-writing.com/order) to be modified by a logged-in user. ([[!cve CVE-2008-0165]])
+page to be modified by a logged-in user. ([[!cve CVE-2008-0165]])
 
 These holes were discovered on 10 April 2008 and fixed the same day with
 the release of ikiwiki 2.42. A fix was also backported to Debian etch, as
@@ -415,7 +415,7 @@ can cause it to crash. This can potentially be used for a denial of service
 attack.
 
 intrigeri discovered this problem on 12 Nov 2008 and a patch put in place
-later that day, in version 2.70. The fix was backported [write my essay](http://custom-essay-writing-service.org/faq.php) to testing as version
+later that day, in version 2.70. The fix was backported to testing as version
 2.53.3, and to stable as version 1.33.7.
 
 ## Insufficient blacklisting in teximg plugin
diff --git a/doc/setup.mdwn b/doc/setup.mdwn
index 4ad64d73b..2d4da5536 100644
--- a/doc/setup.mdwn
+++ b/doc/setup.mdwn
@@ -105,7 +105,7 @@ After making changes to this file, you need to tell ikiwiki to use it:
 ## Customizing file locations
 
 As a wiki compiler, ikiwiki builds a wiki from files in a source directory,
-and outputs the files to a destination directory [write my essay](http://custom-essay-writing-service.org/faq.php). The source directory is
+and outputs the files to a destination directory. The source directory is
 a working copy checked out from the version control system repository.
 
 When you used `auto.setup`, ikiwiki put the source directory, destination
@@ -118,7 +118,7 @@ First, move the destination directory and repository around.
 	% mv public_html/foo /srv/web/foo.com
 	% mv foo.git /srv/git/foo.git
 
-If you moved the repository to a new location [buy reports](http://essaywritingservices.org/book-report.php), checkouts pointing at the
+If you moved the repository to a new location, checkouts pointing at the
 old location won't work, and the easiest way to deal with this is to delete
 them and re-checkout from the new repository location.
    
diff --git a/doc/shortcuts.mdwn b/doc/shortcuts.mdwn
index f33dfb6b6..54dd0fdb1 100644
--- a/doc/shortcuts.mdwn
+++ b/doc/shortcuts.mdwn
@@ -49,7 +49,7 @@ This page controls what shortcut links the wiki supports.
 * [[!shortcut name=emacswiki url="http://www.emacswiki.org/cgi-bin/wiki/%s"]]
 * [[!shortcut name=haskellwiki url="http://haskell.org/haskellwiki/%s"]]
 * [[!shortcut name=dict url="http://www.dict.org/bin/Dict?Form=Dict1&Strategy=*&Database=*&Query=%s"]]
-* [[!shortcut name=imdb url="http://imdb.com/find?q=%s"]]  
+* [[!shortcut name=imdb url="http://imdb.com/find?q=%s"]]
 * [[!shortcut name=gpg url="http://pgpkeys.mit.edu:11371/pks/lookup?op=vindex&exact=on&search=0x%s"]]
 * [[!shortcut name=perldoc url="http://perldoc.perl.org/search.html?q=%s"]]
 * [[!shortcut name=whois url="http://reports.internic.net/cgi/whois?whois_nic=%s&type=domain"]]
@@ -65,13 +65,13 @@ This page controls what shortcut links the wiki supports.
 To add a new shortcut, use the `shortcut`
 [[ikiwiki/directive]]. In the url, "%s" is replaced with the
 text passed to the named shortcut, after [[!wikipedia url_encoding]]
-it, and '%S' is replaced with the raw, non-encoded text [custom writing company](http://essaywritingservices.org/custom-essay-writing.php). The optional
+it, and '%S' is replaced with the raw, non-encoded text. The optional
 `desc` parameter controls the description of the link.
 
 Remember that the `name` you give the shortcut will become a new
 [[ikiwiki/directive]].  Avoid using a `name` that conflicts
 with an existing directive.  These directives also accept a `desc`
-parameter that will override [certified resume writer](http://cvresumewriters.com/onlineresume.php) the one provided at definition time.
+parameter that will override the one provided at definition time.
 
 If you come up with a shortcut that you think others might find useful,
 consider contributing it to the [shortcuts page on the ikiwiki
-- 
cgit v1.2.3


From 104919ee07b70b166c6c6be13b4f6e5bc5225179 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 2 Apr 2010 16:05:14 -0400
Subject: htmlscrubber: Allow colons in url fragments after '?'

Colons are not allowed at the start of urls, because it can be interpreted
as a protocol, and allowing arbitrary protocols can be unsafe
(CVE-2008-0809). However, this check was too restrictive, not allowing
use of eg, "video.ogv?t=0:03:00/0:04:00" to seek to a given place in a
video, or "somecgi?foo=bar:baz" to pass parameters with colons.

It's still not allowed to have a filename with a colon in it (ie
"foo:bar.png") -- to link to such a file, a fully qualified url must be
used.
---
 IkiWiki/Plugin/htmlscrubber.pm | 2 +-
 debian/changelog               | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm
index 26e18ffc7..9f40c752f 100644
--- a/IkiWiki/Plugin/htmlscrubber.pm
+++ b/IkiWiki/Plugin/htmlscrubber.pm
@@ -32,7 +32,7 @@ sub import {
 	);
 	# data is a special case. Allow a few data:image/ types,
 	# but disallow data:text/javascript and everything else.
-	$safe_url_regexp=qr/^(?:(?:$uri_schemes):|data:image\/(?:png|jpeg|gif)|[^:]+(?:$|\/))/i;
+	$safe_url_regexp=qr/^(?:(?:$uri_schemes):|data:image\/(?:png|jpeg|gif)|[^:]+(?:$|[\/\?]))/i;
 }
 
 sub getsetup () {
diff --git a/debian/changelog b/debian/changelog
index bbca7cffe..adf0dfed6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -25,6 +25,7 @@ ikiwiki (3.20100324) UNRELEASED; urgency=low
     used, but they are available in the session object now.)
   * page.tmpl: Add Cache-Control must-revalidate to ensure that users
     (especially of Firefox) see fresh page content.
+  * htmlscrubber: Allow colons in urls after '?'
 
  -- Joey Hess   Sat, 13 Mar 2010 14:48:10 -0500
 
-- 
cgit v1.2.3


From 1c8ac7d88c5a3d2c63892737e54be8a1b535936c Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 2 Apr 2010 16:41:04 -0400
Subject: review from the woods

---
 doc/todo/matching_different_kinds_of_links.mdwn | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/doc/todo/matching_different_kinds_of_links.mdwn b/doc/todo/matching_different_kinds_of_links.mdwn
index 0049281fe..20acdde49 100644
--- a/doc/todo/matching_different_kinds_of_links.mdwn
+++ b/doc/todo/matching_different_kinds_of_links.mdwn
@@ -96,3 +96,22 @@ Ordinary [[WikiLinks|ikiwiki/WikiLink]] appear in `%links`, but not in
  
 An optional third parameter sets the link type (`undef` produces an ordinary
 [[ikiwiki/WikiLink]]).
+
+> Some code refers to `oldtypedlinks`, and other to `oldlinktypes`.
+> 
+> I'm curious what your reasoning was for adding a new variable
+> rather than using `pagestate`. Was it only because you needed
+> the `old` version to detect change, or was there other complexity?
+> 
+> I have not convinced myself this is a real problem, but..
+> If a page has a typed link, there seems to be no way to tell
+> if it also has a separate, regular link. `add_link` will add
+> to `@links` when adding a typed, or untyped link. If only untyped
+> links were recorded there, one could tell the difference. But then
+> typed links would not show up at all in eg, a linkmap,
+> unless it was changed to check for typed links too.
+> (Or, regular links could be recorded in typedlinks too,
+> with a empty type. (Bloaty.))
+> 
+> I suspect we could get away without having `tagged_is_strict`
+> without too much transitional trouble. --[[Joey]]
-- 
cgit v1.2.3


From 59ba938822ba0752e8d97e769c0d14f2eb0bbeb3 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 2 Apr 2010 16:54:06 -0400
Subject: template: Search for templates in the templatedir, if they are not
 found as pages in the wiki.

---
 IkiWiki/Plugin/template.pm                            | 10 ++++++++--
 debian/changelog                                      |  2 ++
 doc/templates.mdwn                                    |  6 ++++++
 doc/todo/user-defined_templates_outside_the_wiki.mdwn |  2 ++
 doc/wikitemplates.mdwn                                |  6 ++++--
 5 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/IkiWiki/Plugin/template.pm b/IkiWiki/Plugin/template.pm
index 3e024c5f8..36282055a 100644
--- a/IkiWiki/Plugin/template.pm
+++ b/IkiWiki/Plugin/template.pm
@@ -37,7 +37,13 @@ sub preprocess (@) {
 	my $template_page="templates/$params{id}";
 	add_depends($params{page}, $template_page);
 
-	my $template_file=$pagesources{$template_page};
+	my $template_file;
+	if (exists $pagesources{$template_page}) {
+		$template_file=srcfile($pagesources{$template_page});
+	}
+	else {
+		$template_file=template_file("$params{id}.tmpl")
+	}
 	return sprintf(gettext("template %s not found"),
 		htmllink($params{page}, $params{destpage}, "/".$template_page))
 			unless defined $template_file;
@@ -50,7 +56,7 @@ sub preprocess (@) {
 	                        $$text_ref=&Encode::decode_utf8($$text_ref);
 				chomp $$text_ref;
 	                },
-	                filename => srcfile($template_file),
+	                filename => $template_file,
        			die_on_bad_params => 0,
 			no_includes => 1,
 			blind_cache => 1,
diff --git a/debian/changelog b/debian/changelog
index adf0dfed6..362ba54ab 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -26,6 +26,8 @@ ikiwiki (3.20100324) UNRELEASED; urgency=low
   * page.tmpl: Add Cache-Control must-revalidate to ensure that users
     (especially of Firefox) see fresh page content.
   * htmlscrubber: Allow colons in urls after '?'
+  * template: Search for templates in the templatedir, if they are not
+    found as pages in the wiki.
 
  -- Joey Hess   Sat, 13 Mar 2010 14:48:10 -0500
 
diff --git a/doc/templates.mdwn b/doc/templates.mdwn
index eff0e15e9..07531ae98 100644
--- a/doc/templates.mdwn
+++ b/doc/templates.mdwn
@@ -43,6 +43,12 @@ page will provide a link that can be used to create the template. The template
 is a regular wiki page, located in the `templates/` subdirectory inside
 the source directory of the wiki.
 
+(Alternatively, templates can be stored in a directory outside the wiki,
+as files with the extension ".tmpl".
+By default, these are searched for in `/usr/share/ikiwiki/templates`;
+the `templatedir` setting can be used to make another directory be searched
+first.)
+
 The template uses the syntax used by the [[!cpan HTML::Template]] perl
 module, which allows for some fairly complex things to be done. Consult its
 documentation for the full syntax, but all you really need to know are a
diff --git a/doc/todo/user-defined_templates_outside_the_wiki.mdwn b/doc/todo/user-defined_templates_outside_the_wiki.mdwn
index 880ad6493..1d72aa6a7 100644
--- a/doc/todo/user-defined_templates_outside_the_wiki.mdwn
+++ b/doc/todo/user-defined_templates_outside_the_wiki.mdwn
@@ -6,3 +6,5 @@ source, but also looks in the system templates directory (the one with
 invoked via `\[[!template]]`, but don't have to "work" as wiki pages in their
 own right. I think the normal [[plugins/template]] plugin could benefit from
 this functionality.
+
+[[done]] --[[Joey]] 
diff --git a/doc/wikitemplates.mdwn b/doc/wikitemplates.mdwn
index 6c0480cea..6e5a7261d 100644
--- a/doc/wikitemplates.mdwn
+++ b/doc/wikitemplates.mdwn
@@ -5,7 +5,8 @@ to learn.
 The aim is to keep almost all html out of ikiwiki and in the templates.
 
 It ships with some basic templates which can be customised. These are
-located in /usr/share/ikiwiki/templates by default.
+located in `/usr/share/ikiwiki/templates` by default; the `templatedir`
+setting can be used to make another directory be searched first.
 
 * `page.tmpl` - Used for displaying all regular wiki pages.
 * `misc.tmpl` - Generic template used for any page that doesn't
@@ -43,7 +44,8 @@ The [[plugins/pagetemplate]] plugin can allow individual pages to use a
 different template than `page.tmpl`.
 
 The [[plugins/template]] plugin also uses templates, though those
-[[templates]] are stored in the wiki and inserted into pages.
+[[templates]] are typically stored as pages in the wiki, and are inserted
+into pages.
 
 The [[plugins/edittemplate]] plugin is used to make new pages default to
 containing text from a template, which can be filled as out the page is
-- 
cgit v1.2.3


From f7a2a4b4d4f1868878e8ad294e9641d8adb51aef Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 2 Apr 2010 16:55:29 -0400
Subject: qualify template_file

---
 IkiWiki/Plugin/template.pm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/IkiWiki/Plugin/template.pm b/IkiWiki/Plugin/template.pm
index 36282055a..98a13b5fa 100644
--- a/IkiWiki/Plugin/template.pm
+++ b/IkiWiki/Plugin/template.pm
@@ -42,7 +42,7 @@ sub preprocess (@) {
 		$template_file=srcfile($pagesources{$template_page});
 	}
 	else {
-		$template_file=template_file("$params{id}.tmpl")
+		$template_file=IkiWiki::template_file("$params{id}.tmpl")
 	}
 	return sprintf(gettext("template %s not found"),
 		htmllink($params{page}, $params{destpage}, "/".$template_page))
-- 
cgit v1.2.3


From de62ea1cc8111dd96bc84b9c839be99c921168e3 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 2 Apr 2010 17:03:33 -0400
Subject: fix branch name

---
 doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
index f37a0758e..8edc95fb9 100644
--- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
+++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
@@ -104,7 +104,7 @@ An optional `sort` parameter will be used preferentially when
 
        \[[!meta title="David Bowie" sort="Bowie, David"]]
 
-## Documentation from sort-hooks branch
+## Documentation from sort-package branch
 
 The changes to [[ikiwiki/pagespec/sorting]] are the same.
 The changes to [[plugins/write]] are replaced by:
-- 
cgit v1.2.3


From 1b0d4e8d885ded59ca0ad1b4d1ca1315585cce06 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 2 Apr 2010 17:16:12 -0400
Subject: minor comment

---
 doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
index 8edc95fb9..e4e1829dc 100644
--- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
+++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
@@ -89,6 +89,9 @@ and to sort by an arbitrary `meta` value, you could use:
   or `\[[!meta title="foo"]]` [[ikiwiki/directive]], or the page name if no
   full title was set.
 
+  > I feel it sould be clearer to call that "sortas", since "sort=" is used
+  > to specify a sort method in other directives. --[[Joey]]
+
 ### Multiple sort orders (added to [[ikiwiki/pagespec/sorting]])
 
 In addition, you can combine several sort orders and/or reverse the order of
-- 
cgit v1.2.3


From 9e7dcefd7ed9424de20706f63c7bab5182c5df78 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 2 Apr 2010 17:26:32 -0400
Subject: comments

---
 doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
index e4e1829dc..67d85f6f8 100644
--- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
+++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
@@ -50,6 +50,21 @@ NIH'd sorting mechanisms:
 >>> share the `IkiWiki::PageSpec` package, but with a `cmp_` prefix. Gitweb:
 >>> 
 
+>>>> I agree it seems more elegant, so I have focused on it.
+>>>>
+>>>> I don't know about reusing `IkiWiki::PageSpec` for this.
+>>>>
+>>>> I would be inclined to drop the `check_` stuff.
+>>>>
+>>>> Wouldn't it make sense to have `meta(title)` instead
+>>>> of `meta_title`?
+>>>>
+>>>> As I read the regexp in `cmpspec_translate`, the "command"
+>>>> is required to have params. They should be optional, 
+>>>> to match the documentation and because most sort methods
+>>>> do not need parameters.
+>>>> --[[Joey]]
+
 ## Documentation from sort-hooks branch
 
 ### sort hook (added to [[plugins/write]])
-- 
cgit v1.2.3


From 1faf9b08e16bde9b4b0d72620fcef79c715e64de Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 2 Apr 2010 17:37:38 -0400
Subject: idea

---
 doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
index 67d85f6f8..e1e05e81c 100644
--- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
+++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
@@ -63,6 +63,14 @@ NIH'd sorting mechanisms:
 >>>> is required to have params. They should be optional, 
 >>>> to match the documentation and because most sort methods
 >>>> do not need parameters.
+>>>>
+>>>> I wonder if it would make sense to add some combining keywords, so
+>>>> a sortspec reads like `sort="age then ascending title"`
+>>>> In a way, this reduces the amount of syntax that needs to be learned.
+>>>> I like the "then" (and it could allow other operations than
+>>>> simple combination, if any others make sense). Not so sure about the
+>>>> "ascending", which could be "reverse" instead, but "descending age" and
+>>>> "ascending age" both seem useful to be able to explicitly specify.
 >>>> --[[Joey]]
 
 ## Documentation from sort-hooks branch
-- 
cgit v1.2.3


From 2c7fe7ae2cf73141eba817d4275d9a6a897df8a8 Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Fri, 2 Apr 2010 22:25:16 +0000
Subject: respond (also unindent Joey's review to avoid very deep indentation)

---
 doc/todo/matching_different_kinds_of_links.mdwn | 61 +++++++++++++++++--------
 1 file changed, 43 insertions(+), 18 deletions(-)

diff --git a/doc/todo/matching_different_kinds_of_links.mdwn b/doc/todo/matching_different_kinds_of_links.mdwn
index 20acdde49..f8796652e 100644
--- a/doc/todo/matching_different_kinds_of_links.mdwn
+++ b/doc/todo/matching_different_kinds_of_links.mdwn
@@ -97,21 +97,46 @@ Ordinary [[WikiLinks|ikiwiki/WikiLink]] appear in `%links`, but not in
 An optional third parameter sets the link type (`undef` produces an ordinary
 [[ikiwiki/WikiLink]]).
 
-> Some code refers to `oldtypedlinks`, and other to `oldlinktypes`.
-> 
-> I'm curious what your reasoning was for adding a new variable
-> rather than using `pagestate`. Was it only because you needed
-> the `old` version to detect change, or was there other complexity?
-> 
-> I have not convinced myself this is a real problem, but..
-> If a page has a typed link, there seems to be no way to tell
-> if it also has a separate, regular link. `add_link` will add
-> to `@links` when adding a typed, or untyped link. If only untyped
-> links were recorded there, one could tell the difference. But then
-> typed links would not show up at all in eg, a linkmap,
-> unless it was changed to check for typed links too.
-> (Or, regular links could be recorded in typedlinks too,
-> with a empty type. (Bloaty.))
-> 
-> I suspect we could get away without having `tagged_is_strict`
-> without too much transitional trouble. --[[Joey]]
+## Review
+
+Some code refers to `oldtypedlinks`, and other to `oldlinktypes`. --[[Joey]]
+
+> Oops, I'll fix that. That must mean missing test coverage, too :-(
+> --s
+
+I'm curious what your reasoning was for adding a new variable
+rather than using `pagestate`. Was it only because you needed
+the `old` version to detect change, or was there other complexity?
+--J
+
+> You seemed to be more in favour of adding it to the core in
+> your proposal above, so I assumed that'd be more likely to be
+> accepted :-) I don't mind one way or the other - `%typedlinks`
+> costs one core variable, but saves one level of hash nesting. If
+> you're not sure either, then I think the decision should come down
+> to which one is easier to document clearly - I'm still unhappy with
+> my docs for `%typedlinks`, so I'll try to write docs for it as
+> `pagestate` and see if they work any better. --s
+
+I have not convinced myself this is a real problem, but..
+If a page has a typed link, there seems to be no way to tell
+if it also has a separate, regular link. `add_link` will add
+to `@links` when adding a typed, or untyped link. If only untyped
+links were recorded there, one could tell the difference. But then
+typed links would not show up at all in eg, a linkmap,
+unless it was changed to check for typed links too.
+(Or, regular links could be recorded in typedlinks too,
+with a empty type. (Bloaty.)) --J
+
+> I think I like the semantics as-is - I can't think of any
+> reason why you'd want to ask the question "does A link to B,
+> not counting tags and other typed links?". A typed link is
+> still a link, in my mind at least. --s
+
+I suspect we could get away without having `tagged_is_strict`
+without too much transitional trouble. --[[Joey]]
+
+> If you think so, I can delete about 5 LoC. I don't particularly
+> care either way; [[Jon]] expressed concern about people relying
+> on the current semantics, on one of the pages requesting this
+> change. --s
-- 
cgit v1.2.3


From 011fe920d162924876170d167be11dc64cf8be2f Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Sat, 3 Apr 2010 00:00:53 +0000
Subject: respond at some length

---
 doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 163 ++++++++++++---------
 1 file changed, 94 insertions(+), 69 deletions(-)

diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
index e1e05e81c..156678da7 100644
--- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
+++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
@@ -1,4 +1,3 @@
-[[!template id=gitbranch branch=smcv/sort-hooks author="[[Simon_McVittie|smcv]]"]]
 [[!tag patch]]
 
 The available [[ikiwiki/pagespec/sorting]] methods are currently hard-coded in
@@ -11,36 +10,13 @@ title over the page name, but for compatibility, I'm not going to (I do wonder
 whether it would be worth making sort=name an alias for the current sort=title,
 and changing the meaning of sort=title in 4.0, though).
 
-Gitweb:
-
+*[sort-hooks branch now withdrawn in favour of sort-package --s]*
 
 I briefly tried to turn *all* the current sort types into hook functions, and
 have some of them pre-registered, but decided that probably wasn't a good idea.
 That earlier version of the branch is also available for comparison:
 
-
-
-(The older version is untested, and probably doesn't really work as-is - I
-misunderstood the details of how the built-in function `sort` works when using
-`$a` and `$b`. The newer version has been tested, and has a regression test for
-its core functionality.)
-
-This hook *isn't* (yet) sufficient to implement [[plugins/contrib/report]]'s
-NIH'd sorting mechanisms:
-
-* `report` can sort by any [[plugins/contrib/field]], whereas this one has a
-  finite number of hooks: if the `field` plugin's functionality is desirable,
-  perhaps parameterized sort mechanisms similar to pagespec match functions
-  would be useful? Then the `field` plugin could register
-  `hook(type => "sort", id => "field")` and you could have
-  `\[[!inline ... sort="field(Mood)"]]` or something?
-
-* `report` can sort by multiple criteria, with independent direction-changing:
-  if this is desirable, perhaps `pagespec_match_list` could be enhanced to
-  interpret `sort="x -y z(w)"` as sorting by (pseudocode)
-  `{ $cmp_x->($a, $b) || (-$cmp_y->($a, $b)) || $cmp_z->($a, $b, "w") }`?
-
-> I've now added both of these features to the sort-hooks branch. --[[smcv]]
+*[also withdrawn in favour of sort-package --s]*
 
 >> I wonder if IkiWiki would benefit from the concept of a "sortspec", like a [[ikiwiki/PageSpec]] but dedicated to sorting lists of pages rather than defining lists of pages?  Rather than defining a sort-hook, define a SortSpec class, and enable people to add their own sort methods as functions defined inside that class, similarly to the way they can add their own pagespec definitions. --[[KathrynAndersen]]
 
@@ -53,17 +29,65 @@ NIH'd sorting mechanisms:
 >>>> I agree it seems more elegant, so I have focused on it.
 >>>>
 >>>> I don't know about reusing `IkiWiki::PageSpec` for this.
->>>>
+>>>> --[[Joey]]
+
+>>>>> Fair enough, `IkiWiki::SortSpec::cmp_foo` would be just
+>>>>> as easy, or `IkiWiki::Sorting::cmp_foo` if you don't like
+>>>>> introducing "sort spec" in the API. I took a cue from
+>>>>> [[ikiwiki/pagespec/sorting]] being a subpage of
+>>>>> [[ikiwiki/pagespec]], and decided that yes, sorting is
+>>>>> a bit like a pagespec :-) --s
+
 >>>> I would be inclined to drop the `check_` stuff.
->>>>
+
+>>>>> It basically exists to support `title_natural`, to avoid
+>>>>> firing up the whole import mechanism on every `cmp`
+>>>>> (although I suppose that could just be a call to a
+>>>>> memoized helper function). It also lets sort specs that
+>>>>> *must* have a parameter, like
+>>>>> [[field|plugins/contrib/field/discussion]], fail early
+>>>>> (again, not so valuable).
+>>>>>
+>>>>> The former function could be achieved at a small
+>>>>> compatibility cost by putting `title_natural` in a new
+>>>>> sortnatural plugin (that fails to load if you don't
+>>>>> have `title_natural`), if you'd prefer - that's what would
+>>>>> have happened if `title_natural` was written after this
+>>>>> code had been merged, I suspect. --s
+
 >>>> Wouldn't it make sense to have `meta(title)` instead
->>>> of `meta_title`?
->>>>
+>>>> of `meta_title`? --J
+
+>>>>> Yes, you're right. I added parameters to support `field`,
+>>>>> and didn't think about making `meta` use them too.
+>>>>> However, `title` does need a special case to make it
+>>>>> default to the basename instead of the empty string.
+>>>>>
+>>>>> Another special case for `title` is to use `titlesort`
+>>>>> first (the name `titlesort` is derived from Ogg/FLAC
+>>>>> tags, which can have `titlesort` and `artistsort`).
+>>>>> I could easily extend that to other metas, though;
+>>>>> in fact, for e.g. book lists it would be nice for
+>>>>> `field(bookauthor)` to behave similarly, so you can
+>>>>> display "Douglas Adams" but sort by "Adams, Douglas".
+>>>>>
+>>>>> `meta_title` is also meant to be a prototype of how
+>>>>> `sort=title` could behave in 4.0 or something - sorting
+>>>>> by page name (which usually sorts in approximately the
+>>>>> same place as the meta-title, but occasionally not), while
+>>>>> displaying meta-titles, does look quite odd. --s
+
 >>>> As I read the regexp in `cmpspec_translate`, the "command"
 >>>> is required to have params. They should be optional, 
 >>>> to match the documentation and because most sort methods
->>>> do not need parameters.
->>>>
+>>>> do not need parameters. --J
+
+>>>>> No, `$2` is either `\w+\([^\)]*\)` or `[^\s]+` (with the
+>>>>> latter causing an error later if it doesn't also match `\w+`).
+>>>>> This branch doesn't add any parameterized sort methods,
+>>>>> in fact, although I did provide one on
+>>>>> [[field's_discussion_page|plugins/contrib/report/discussion]]. --s
+
 >>>> I wonder if it would make sense to add some combining keywords, so
 >>>> a sortspec reads like `sort="age then ascending title"`
 >>>> In a way, this reduces the amount of syntax that needs to be learned.
@@ -73,38 +97,42 @@ NIH'd sorting mechanisms:
 >>>> "ascending age" both seem useful to be able to explicitly specify.
 >>>> --[[Joey]]
 
-## Documentation from sort-hooks branch
-
-### sort hook (added to [[plugins/write]])
-
-       hook(type => "sort", id => "foo", call => \&sort_by_foo);
-
-This hook adds an additional [[ikiwiki/pagespec/sorting]] order or overrides
-an existing one.
-
-The callback is given two page names followed by the parameter as arguments, and
-returns negative, zero or positive if the first page should come before,
-close to (i.e. undefined order), or after the second page.
-
-For instance, the built-in `title` sort order could be reimplemented as
-
-       sub sort_by_title {
-               pagetitle(basename($_[0])) cmp pagetitle(basename($_[1]));
-       }
-
-and to sort by an arbitrary `meta` value, you could use:
-
-       # usage: sort="meta(description)"
-       sub sort_by_meta {
-               my $param = $_[2];
-               error "sort=meta requires a parameter" unless defined $param;
-               my $left = $pagestate{$_[0]}{meta}{$param};
-               $left = "" unless defined $left;
-               my $right = $pagestate{$_[1]}{meta}{$param};
-               $right = "" unless defined $right;
-               return $left cmp $right;
-       }
+>>>>> Perhaps. I do like the simplicity of [[KathyrnAndersen]]'s syntax
+>>>>> from [[plugins/contrib/report]] (which I copied verbatim, except for
+>>>>> turning sort-by-`field` into a parameterized spec), and I can't really
+>>>>> think of any sensible way to combine sort specs other than "sort by a,
+>>>>> break ties by b, ...", possibly with some reversals thrown in.
+>>>>>
+>>>>> If no other combinations do make sense, is your proposal that "then"
+>>>>> is entirely redundant (easy, just make it a predefined sort spec that
+>>>>> returns 0!), or that it's mandatory "punctuation" (add an explicit
+>>>>> check, or make "then" expand to "||" and let Perl fail to compile
+>>>>> the generated code if it's omitted)?
+>>>>>
+>>>>> It is a little unfortunate that reversal has to move into the sort
+>>>>> spec - I prefer `reverse=yes` - but that's necessary for multi-level
+>>>>> sorting. I can see your point about ascending/descending being more
+>>>>> obvious to look at, but they're also considerably more verbose.
+>>>>>
+>>>>> Unfortunately, `sort="ascending mtime"` actually sorts by *descending*
+>>>>> timestamp (but`sort=age` is fine, because `age` could be defined as
+>>>>> now minus `ctime`). `sort=freshness` isn't right either, because
+>>>>> "sort by freshness" seems as though it ought to mean freshest first,
+>>>>> but "sort by ascending freshness" means put the least fresh first. If
+>>>>> we have ascending and descending keywords which are optional, I don't
+>>>>> think we really want different sort types to have different default
+>>>>> directions - it seems clearer to have `ascending` always be a no-op,
+>>>>> and `descending` always negate.
+>>>>>
+>>>>> Perhaps we could borrow from `meta updated` and use `update_age`?
+>>>>> `updateage` would perhaps be a more normal IkiWiki style - but that
+>>>>> makes me think that updateage is a quantity analagous to tonnage or
+>>>>> voltage, with more or less recently updated pages being said to have
+>>>>> more or less updateage. I don't know whether that's good or bad :-)
+>>>>>
+>>>>> I'm sure there's a much better word, but I can't see it. --s
 
+## Documentation from sort-package branch
 
 ### meta_title sort order (conditionally added to [[ikiwiki/pagespec/sorting]])
 
@@ -115,6 +143,8 @@ and to sort by an arbitrary `meta` value, you could use:
   > I feel it sould be clearer to call that "sortas", since "sort=" is used
   > to specify a sort method in other directives. --[[Joey]]
 
+  >> Fair enough, that's easy to do. --[[smcv]]
+
 ### Multiple sort orders (added to [[ikiwiki/pagespec/sorting]])
 
 In addition, you can combine several sort orders and/or reverse the order of
@@ -130,12 +160,7 @@ An optional `sort` parameter will be used preferentially when
 
        \[[!meta title="David Bowie" sort="Bowie, David"]]
 
-## Documentation from sort-package branch
-
-The changes to [[ikiwiki/pagespec/sorting]] are the same.
-The changes to [[plugins/write]] are replaced by:
-
-### Sorting plugins
+### Sorting plugins (added to [[plugins/write]])
 
 Similarly, it's possible to write plugins that add new functions as
 [[ikiwiki/pagespec/sorting]] methods. To achieve this, add a function to
-- 
cgit v1.2.3


From aec7dec2795aedfe1f13cff9a888bed83ee760df Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Sat, 3 Apr 2010 00:12:59 +0000
Subject: make questions to Joey more explicit

---
 doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
index 156678da7..36c134a59 100644
--- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
+++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
@@ -36,9 +36,9 @@ That earlier version of the branch is also available for comparison:
 >>>>> introducing "sort spec" in the API. I took a cue from
 >>>>> [[ikiwiki/pagespec/sorting]] being a subpage of
 >>>>> [[ikiwiki/pagespec]], and decided that yes, sorting is
->>>>> a bit like a pagespec :-) --s
+>>>>> a bit like a pagespec :-) Which name would you prefer? --s
 
->>>> I would be inclined to drop the `check_` stuff.
+>>>> I would be inclined to drop the `check_` stuff. --J
 
 >>>>> It basically exists to support `title_natural`, to avoid
 >>>>> firing up the whole import mechanism on every `cmp`
@@ -50,10 +50,10 @@ That earlier version of the branch is also available for comparison:
 >>>>>
 >>>>> The former function could be achieved at a small
 >>>>> compatibility cost by putting `title_natural` in a new
->>>>> sortnatural plugin (that fails to load if you don't
+>>>>> `sortnatural` plugin (that fails to load if you don't
 >>>>> have `title_natural`), if you'd prefer - that's what would
 >>>>> have happened if `title_natural` was written after this
->>>>> code had been merged, I suspect. --s
+>>>>> code had been merged, I suspect. Would you prefer this? --s
 
 >>>> Wouldn't it make sense to have `meta(title)` instead
 >>>> of `meta_title`? --J
@@ -97,7 +97,7 @@ That earlier version of the branch is also available for comparison:
 >>>> "ascending age" both seem useful to be able to explicitly specify.
 >>>> --[[Joey]]
 
->>>>> Perhaps. I do like the simplicity of [[KathyrnAndersen]]'s syntax
+>>>>> Perhaps. I do like the simplicity of [[KathrynAndersen]]'s syntax
 >>>>> from [[plugins/contrib/report]] (which I copied verbatim, except for
 >>>>> turning sort-by-`field` into a parameterized spec), and I can't really
 >>>>> think of any sensible way to combine sort specs other than "sort by a,
@@ -130,7 +130,8 @@ That earlier version of the branch is also available for comparison:
 >>>>> voltage, with more or less recently updated pages being said to have
 >>>>> more or less updateage. I don't know whether that's good or bad :-)
 >>>>>
->>>>> I'm sure there's a much better word, but I can't see it. --s
+>>>>> I'm sure there's a much better word, but I can't see it. Do you have
+>>>>> a better idea? --s
 
 ## Documentation from sort-package branch
 
-- 
cgit v1.2.3


From 5f87d5d242b87ce5cfbd7ac5fcb1efcc62fc5582 Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Sat, 3 Apr 2010 00:25:28 +0000
Subject: actually I can see a second use for "nonlinear" syntax - but I don't
 think it's worth it

---
 doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 32 ++++++++++++++--------
 1 file changed, 20 insertions(+), 12 deletions(-)

diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
index 36c134a59..1657ca8e9 100644
--- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
+++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
@@ -99,20 +99,28 @@ That earlier version of the branch is also available for comparison:
 
 >>>>> Perhaps. I do like the simplicity of [[KathrynAndersen]]'s syntax
 >>>>> from [[plugins/contrib/report]] (which I copied verbatim, except for
->>>>> turning sort-by-`field` into a parameterized spec), and I can't really
->>>>> think of any sensible way to combine sort specs other than "sort by a,
->>>>> break ties by b, ...", possibly with some reversals thrown in.
+>>>>> turning sort-by-`field` into a parameterized spec).
 >>>>>
->>>>> If no other combinations do make sense, is your proposal that "then"
->>>>> is entirely redundant (easy, just make it a predefined sort spec that
->>>>> returns 0!), or that it's mandatory "punctuation" (add an explicit
->>>>> check, or make "then" expand to "||" and let Perl fail to compile
->>>>> the generated code if it's omitted)?
+>>>>> If we're getting into English-like (or at least SQL-like) queries,
+>>>>> it might make sense to change the signature of the hook function
+>>>>> so it's a function to return a key, e.g.
+>>>>> `sub key_age { return -%pagemtime{$_[0]) }`. Then we could sort like
+>>>>> this:
 >>>>>
->>>>> It is a little unfortunate that reversal has to move into the sort
->>>>> spec - I prefer `reverse=yes` - but that's necessary for multi-level
->>>>> sorting. I can see your point about ascending/descending being more
->>>>> obvious to look at, but they're also considerably more verbose.
+>>>>>     field(artistsort) or field(artist) or constant(Various Artists) then meta(titlesort) or meta(title) or title
+>>>>>
+>>>>> with "or" binding more closely than "then". Does this seem valuable?
+>>>>> I think the implementation would be somewhat more difficult. and
+>>>>> it's probably getting too complicated to be worthwhile, though?
+>>>>> (The keys that actually benefit from this could just
+>>>>> have smarter cmp functions, I think.)
+>>>>>
+>>>>> If the hooks return keys rather than cmp results, then we could even
+>>>>> have "lowercase" as an adjective used like "ascending"... maybe.
+>>>>> However, there are two types of adjective here: "lowercase"
+>>>>> really applies to the keys, whereas "ascending" applies to the "cmp"
+>>>>> result. Again, I think this is getting too complex, and could just
+>>>>> be solved with smarter cmp functions.
 >>>>>
 >>>>> Unfortunately, `sort="ascending mtime"` actually sorts by *descending*
 >>>>> timestamp (but`sort=age` is fine, because `age` could be defined as
-- 
cgit v1.2.3


From c2f54ccfb7b401b59f7eda13095e2ba2af69ed7a Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Sat, 3 Apr 2010 00:41:31 +0000
Subject: sort-order could usefully be overridden for meta author, too

---
 doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
index 1657ca8e9..e79e52f39 100644
--- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
+++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
@@ -169,6 +169,9 @@ An optional `sort` parameter will be used preferentially when
 
        \[[!meta title="David Bowie" sort="Bowie, David"]]
 
+> I now realise that `author` should also have this, again for use
+> with (Western) names. --s
+
 ### Sorting plugins (added to [[plugins/write]])
 
 Similarly, it's possible to write plugins that add new functions as
-- 
cgit v1.2.3


From 0dad28b3530d70830456a3f8d57b0e3f3d52ee2d Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Sat, 3 Apr 2010 00:45:16 +0000
Subject: reduced difference

---
 doc/plugins/contrib/ftemplate/discussion.mdwn | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/plugins/contrib/ftemplate/discussion.mdwn b/doc/plugins/contrib/ftemplate/discussion.mdwn
index eb84dd09b..1e0bca5d8 100644
--- a/doc/plugins/contrib/ftemplate/discussion.mdwn
+++ b/doc/plugins/contrib/ftemplate/discussion.mdwn
@@ -29,6 +29,5 @@ seems orthogonal (and might be a good enhancement to `template` anyway).
 
 > Yes, I added that because I wanted the option of not having to make all my templates work as wiki pages also. --[[KathrynAndersen]]
 
->> Yeah, that's something that annoys me about `template` too. I've
->> opened a todo: [[todo/user-defined_templates_outside_the_wiki]].
->> --s
+>> Joey has added support for
+>> [[todo/user-defined_templates_outside_the_wiki]] now. --s
-- 
cgit v1.2.3


From c4a838b33a34ff61a1dd5c6f65e40df3609e727f Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Sat, 3 Apr 2010 00:53:59 +0000
Subject: perhaps the typedlink(tag foo) pagespec isn't so useful

---
 doc/todo/matching_different_kinds_of_links.mdwn | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/doc/todo/matching_different_kinds_of_links.mdwn b/doc/todo/matching_different_kinds_of_links.mdwn
index f8796652e..4f52ade52 100644
--- a/doc/todo/matching_different_kinds_of_links.mdwn
+++ b/doc/todo/matching_different_kinds_of_links.mdwn
@@ -140,3 +140,12 @@ without too much transitional trouble. --[[Joey]]
 > care either way; [[Jon]] expressed concern about people relying
 > on the current semantics, on one of the pages requesting this
 > change. --s
+
+I might have been wrong to introduce `typedlink(tag foo)`. It's not
+very user-friendly, and is more useful as a backend for other plugins
+that as a feature in its own right - any plugin introducing a link
+type will probably also want to have its own preprocessor directive
+to set that link type, and its own pagespec function to match it.
+I wonder whether to make a `typedlink` plugin that has the typedlink
+pagespec match function and a new `\[[!typedlink to="foo" type="bar"]]`
+though... --[[smcv]]
-- 
cgit v1.2.3


From 3934759592c35ab475e06501e2e4613d5c1f2e08 Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Sat, 3 Apr 2010 01:13:08 +0000
Subject: vague musings about wikilinks

---
 .../link_plugin_perhaps_too_general__63__.mdwn     | 25 ++++++++++++++++++++++
 1 file changed, 25 insertions(+)
 create mode 100644 doc/todo/link_plugin_perhaps_too_general__63__.mdwn

diff --git a/doc/todo/link_plugin_perhaps_too_general__63__.mdwn b/doc/todo/link_plugin_perhaps_too_general__63__.mdwn
new file mode 100644
index 000000000..8a5fd50eb
--- /dev/null
+++ b/doc/todo/link_plugin_perhaps_too_general__63__.mdwn
@@ -0,0 +1,25 @@
+[[!tag wishlist blue-sky]]
+(This isn't important to me - I don't use MediaWiki or Creole syntax myself -
+but just thinking out loud...)
+
+The [[ikiwiki/wikilink]] syntax IkiWiki uses sometimes conflicts with page
+languages' syntax (notably, [[plugins/contrib/MediaWiki]] and [[plugins/Creole]]
+want their wikilinks the other way round, like
+`\[[plugins/write|how to write a plugin]]`). It would be nice if there was
+some way for page language plugins to opt in/out of the normal wiki link
+processing - then MediaWiki and Creole could have their own `linkify` hook
+that was only active for *their* page types, and used the appropriate
+syntax.
+
+In [[todo/matching_different_kinds_of_links]] I wondered about adding a
+`\[[!typedlink to="foo" type="bar"]]` directive. This made me wonder whether
+a core `\[[!link]]` directive would be useful; this could be a fallback for
+page types where a normal wikilink can't be done for whatever reason, and
+could also provide extension points more easily than WikiLinks' special
+syntax with extra punctuation, which doesn't really scale?
+
+Straw-man:
+
+    \[[!link to="ikiwiki/wikilink" desc="WikiLinks"]]
+
+--[[smcv]]
-- 
cgit v1.2.3


From 5445fe765777dc6254c7e0e13d4fa5e07810751a Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Sat, 3 Apr 2010 01:15:28 +0000
Subject: cross-reference

---
 doc/todo/rewrite_ikiwiki_in_haskell.mdwn | 1 +
 1 file changed, 1 insertion(+)

diff --git a/doc/todo/rewrite_ikiwiki_in_haskell.mdwn b/doc/todo/rewrite_ikiwiki_in_haskell.mdwn
index 204c48cd7..48ed744b1 100644
--- a/doc/todo/rewrite_ikiwiki_in_haskell.mdwn
+++ b/doc/todo/rewrite_ikiwiki_in_haskell.mdwn
@@ -29,6 +29,7 @@ It's appealing for a lot of reasons, including:
     edit in html editors currently.
   - This would be a chance to make WikiLinks with link texts read
     "the right way round" (ie, vaguely wiki creole compatably).
+    *[See also [[todo/link_plugin_perhaps_too_general?]] --[[smcv]]]*
   - The data structures would probably be quite different.
   - I might want to drop a lot of the command-line flags, either
     requiring a setup file be used for those things, or leaving the
-- 
cgit v1.2.3


From e4e53d7a18ec18d1ba72b1a4f124e211148e0f12 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 2 Apr 2010 22:23:36 -0400
Subject: response

---
 doc/todo/matching_different_kinds_of_links.mdwn | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/doc/todo/matching_different_kinds_of_links.mdwn b/doc/todo/matching_different_kinds_of_links.mdwn
index 4f52ade52..2cd484852 100644
--- a/doc/todo/matching_different_kinds_of_links.mdwn
+++ b/doc/todo/matching_different_kinds_of_links.mdwn
@@ -104,6 +104,8 @@ Some code refers to `oldtypedlinks`, and other to `oldlinktypes`. --[[Joey]]
 > Oops, I'll fix that. That must mean missing test coverage, too :-(
 > --s
 
+>> A test suite for the dependency resolver *would* be nice. --[[Joey]]
+
 I'm curious what your reasoning was for adding a new variable
 rather than using `pagestate`. Was it only because you needed
 the `old` version to detect change, or was there other complexity?
@@ -133,6 +135,8 @@ with a empty type. (Bloaty.)) --J
 > not counting tags and other typed links?". A typed link is
 > still a link, in my mind at least. --s
 
+>> Me neither, let's not worry about it. --[[Joey]] 
+
 I suspect we could get away without having `tagged_is_strict`
 without too much transitional trouble. --[[Joey]]
 
@@ -149,3 +153,6 @@ to set that link type, and its own pagespec function to match it.
 I wonder whether to make a `typedlink` plugin that has the typedlink
 pagespec match function and a new `\[[!typedlink to="foo" type="bar"]]`
 though... --[[smcv]]
+
+> I agree, per-type matchers are more friendly and I'm not enamored of the
+> multi-parameter pagespec syntax. --[[Joey]]
-- 
cgit v1.2.3


From 931c7b00ccb47371ee6e1d56baf5c52d725a321f Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Fri, 2 Apr 2010 22:46:31 -0400
Subject: response

---
 doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 25 +++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
index e79e52f39..c6e18505e 100644
--- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
+++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
@@ -38,7 +38,9 @@ That earlier version of the branch is also available for comparison:
 >>>>> [[ikiwiki/pagespec]], and decided that yes, sorting is
 >>>>> a bit like a pagespec :-) Which name would you prefer? --s
 
->>>> I would be inclined to drop the `check_` stuff. --J
+>>>>>> `SortSpec` --[[Joey]] 
+
+>>>> I would be inclined to drop the `check_` stuff. --[[Joey]] 
 
 >>>>> It basically exists to support `title_natural`, to avoid
 >>>>> firing up the whole import mechanism on every `cmp`
@@ -48,6 +50,11 @@ That earlier version of the branch is also available for comparison:
 >>>>> [[field|plugins/contrib/field/discussion]], fail early
 >>>>> (again, not so valuable).
 >>>>>
+>>>>>> AFAIK, `use foo` has very low overhead when the module is already
+>>>>>> loaded. There could be some evalation overhead in `eval q{use foo}`,
+>>>>>> if so it would be worth addressing across the whole codebase.
+>>>>>> --[[Joey]] 
+>>>>>
 >>>>> The former function could be achieved at a small
 >>>>> compatibility cost by putting `title_natural` in a new
 >>>>> `sortnatural` plugin (that fails to load if you don't
@@ -55,8 +62,12 @@ That earlier version of the branch is also available for comparison:
 >>>>> have happened if `title_natural` was written after this
 >>>>> code had been merged, I suspect. Would you prefer this? --s
 
+>>>>>> Yes! (Assuming it does not make sense to support
+>>>>>> natural order sort of other keys than the title, at least..)
+>>>>>>  --[[Joey]]
+
 >>>> Wouldn't it make sense to have `meta(title)` instead
->>>> of `meta_title`? --J
+>>>> of `meta_title`? --[[Joey]]
 
 >>>>> Yes, you're right. I added parameters to support `field`,
 >>>>> and didn't think about making `meta` use them too.
@@ -77,10 +88,12 @@ That earlier version of the branch is also available for comparison:
 >>>>> same place as the meta-title, but occasionally not), while
 >>>>> displaying meta-titles, does look quite odd. --s
 
+>>>>>> Agreed. --[[Joey]]
+
 >>>> As I read the regexp in `cmpspec_translate`, the "command"
 >>>> is required to have params. They should be optional, 
 >>>> to match the documentation and because most sort methods
->>>> do not need parameters. --J
+>>>> do not need parameters. --[[Joey]]
 
 >>>>> No, `$2` is either `\w+\([^\)]*\)` or `[^\s]+` (with the
 >>>>> latter causing an error later if it doesn't also match `\w+`).
@@ -122,6 +135,9 @@ That earlier version of the branch is also available for comparison:
 >>>>> result. Again, I think this is getting too complex, and could just
 >>>>> be solved with smarter cmp functions.
 >>>>>
+>>>>>> I agree. (Also, I think returning keys may make it harder to write
+>>>>>> smarter cmp functions.) --[[Joey]] 
+>>>>>
 >>>>> Unfortunately, `sort="ascending mtime"` actually sorts by *descending*
 >>>>> timestamp (but`sort=age` is fine, because `age` could be defined as
 >>>>> now minus `ctime`). `sort=freshness` isn't right either, because
@@ -132,6 +148,9 @@ That earlier version of the branch is also available for comparison:
 >>>>> directions - it seems clearer to have `ascending` always be a no-op,
 >>>>> and `descending` always negate.
 >>>>>
+>>>>>> I think you've convinced me that ascending/descending impose too
+>>>>>> much semantics on it, so "-" is better. --[[Joey]]
+>>>>>
 >>>>> Perhaps we could borrow from `meta updated` and use `update_age`?
 >>>>> `updateage` would perhaps be a more normal IkiWiki style - but that
 >>>>> makes me think that updateage is a quantity analagous to tonnage or
-- 
cgit v1.2.3


From a875ee8be702bd4575e009dc652015c1157c7c2e Mon Sep 17 00:00:00 2001
From: Simon McVittie 
Date: Sat, 3 Apr 2010 13:48:30 +0100
Subject: Split out sortnaturally into a plugin

---
 IkiWiki.pm                        | 11 -----------
 IkiWiki/Plugin/sortnaturally.pm   | 32 ++++++++++++++++++++++++++++++++
 debian/NEWS                       |  8 ++++++++
 doc/ikiwiki/pagespec/sorting.mdwn |  5 +++--
 doc/plugins/sortnaturally.mdwn    |  5 +++++
 5 files changed, 48 insertions(+), 13 deletions(-)
 create mode 100644 IkiWiki/Plugin/sortnaturally.pm
 create mode 100644 doc/plugins/sortnaturally.mdwn

diff --git a/IkiWiki.pm b/IkiWiki.pm
index a89c14058..8f36f5818 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -2423,15 +2423,4 @@ sub cmp_title {
 sub cmp_mtime { $IkiWiki::pagemtime{$_[1]} <=> $IkiWiki::pagemtime{$_[0]} }
 sub cmp_age { $IkiWiki::pagectime{$_[1]} <=> $IkiWiki::pagectime{$_[0]} }
 
-sub check_cmp_title_natural {
-	eval q{use Sort::Naturally};
-	if ($@) {
-		error(gettext("Sort::Naturally needed for title_natural sort"));
-	}
-}
-sub cmp_title_natural {
-	Sort::Naturally::ncmp(IkiWiki::pagetitle(IkiWiki::basename($_[0])),
-		IkiWiki::pagetitle(IkiWiki::basename($_[1])))
-}
-
 1
diff --git a/IkiWiki/Plugin/sortnaturally.pm b/IkiWiki/Plugin/sortnaturally.pm
new file mode 100644
index 000000000..0023f31f9
--- /dev/null
+++ b/IkiWiki/Plugin/sortnaturally.pm
@@ -0,0 +1,32 @@
+#!/usr/bin/perl
+# Sort::Naturally-powered title_natural sort order for IkiWiki
+package IkiWiki::Plugin::sortnaturally;
+
+use IkiWiki 3.00;
+no warnings;
+
+sub import {
+	hook(type => "getsetup", id => "sortnaturally", call => \&getsetup);
+}
+
+sub getsetup {
+	return
+		plugin => {
+			safe => 1,
+			rebuild => 1,
+		},
+}
+
+sub checkconfig () {
+	eval q{use Sort::Naturally};
+	error $@ if $@;
+}
+
+package IkiWiki::PageSpec;
+
+sub cmp_title_natural {
+	Sort::Naturally::ncmp(IkiWiki::pagetitle(IkiWiki::basename($_[0])),
+		IkiWiki::pagetitle(IkiWiki::basename($_[1])))
+}
+
+1;
diff --git a/debian/NEWS b/debian/NEWS
index 50332670f..614eb11f8 100644
--- a/debian/NEWS
+++ b/debian/NEWS
@@ -1,3 +1,11 @@
+ikiwiki (3.20100320) UNRELEASED; urgency=low
+
+  The sort="title_natural" option on [[!inline]] etc. now requires the
+  new sortnaturally plugin. This is not enabled by default, because it requires
+  the Sort::Naturally module.
+
+ -- Simon McVittie   Sat, 03 Apr 2010 13:46:08 +0100
+
 ikiwiki (3.20091017) unstable; urgency=low
 
   To take advantage of significant performance improvements, all
diff --git a/doc/ikiwiki/pagespec/sorting.mdwn b/doc/ikiwiki/pagespec/sorting.mdwn
index f27972d4e..ba995a521 100644
--- a/doc/ikiwiki/pagespec/sorting.mdwn
+++ b/doc/ikiwiki/pagespec/sorting.mdwn
@@ -6,9 +6,10 @@ orders can be specified.
 * `age` - List pages from the most recently created to the oldest.
 * `mtime` - List pages with the most recently modified first.
 * `title` - Order by title (page name).
-* `title_natural` - Only available if [[!cpan Sort::Naturally]] is
-  installed. Orders by title, but numbers in the title are treated
+[[!if test="enabled(sortnaturally)" then="""
+* `title_natural` - Orders by title, but numbers in the title are treated
   as such, ("1 2 9 10 20" instead of "1 10 2 20 9")
+"""]]
 [[!if test="enabled(meta)" then="""
 * `meta_title` - Order according to the `\[[!meta title="foo" sort="bar"]]`
   or `\[[!meta title="foo"]]` [[ikiwiki/directive]], or the page name if no
diff --git a/doc/plugins/sortnaturally.mdwn b/doc/plugins/sortnaturally.mdwn
new file mode 100644
index 000000000..91f373f6b
--- /dev/null
+++ b/doc/plugins/sortnaturally.mdwn
@@ -0,0 +1,5 @@
+[[!template id=plugin name=sortnaturally core=1 author="[[chrysn]], [[smcv]]"]]
+[[!tag type/meta]]
+
+This plugin provides the `title_natural` [[ikiwiki/pagespec/sorting]] order,
+which uses Sort::Naturally to sort numbered pages in a more natural order.
-- 
cgit v1.2.3


From 75fd08046548940c443c46bcdf9a5b0b6968b175 Mon Sep 17 00:00:00 2001
From: Simon McVittie 
Date: Sat, 3 Apr 2010 13:49:20 +0100
Subject: Remove support for check_cmp_foo (pre-sort checks)

---
 IkiWiki.pm             | 4 ----
 doc/plugins/write.mdwn | 5 -----
 2 files changed, 9 deletions(-)

diff --git a/IkiWiki.pm b/IkiWiki.pm
index 8f36f5818..7547f1751 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -1973,10 +1973,6 @@ sub cmpspec_translate ($) {
 		}
 
 		if (exists $IkiWiki::PageSpec::{"cmp_$word"}) {
-			if (exists $IkiWiki::PageSpec::{"check_cmp_$word"}) {
-				$IkiWiki::PageSpec::{"check_cmp_$word"}->($params);
-			}
-
 			if (defined $params) {
 				push @data, $params;
 				$code .= "IkiWiki::PageSpec::cmp_$word(\@_, \$data[$#data])";
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index de2b47015..06c8f8e44 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -1128,11 +1128,6 @@ is greater, or zero if they are considered equal. It may also raise an
 error using `error`, for instance if it needs a parameter but one isn't
 provided.
 
-You can also define a function called `check_cmp_foo` in the same package.
-If you do, it will be called while preparing to sort by `foo` or `foo(bar)`,
-with argument `undef` or `"bar"` respectively; it may raise an error using
-`error`, if sorting like that isn't going to work.
-
 ### Setup plugins
 
 The ikiwiki setup file is loaded using a pluggable mechanism. If you look
-- 
cgit v1.2.3


From 04a59b3c65e8e60805b6ed6d11d448b1d5babe64 Mon Sep 17 00:00:00 2001
From: Simon McVittie 
Date: Sat, 3 Apr 2010 13:57:38 +0100
Subject: Move sort hooks to the IkiWiki::SortSpec namespace

Also rename cmpspec_translate (internal function) to sortspec_translate
for consistency.
---
 IkiWiki.pm                      | 14 ++++++++------
 IkiWiki/Plugin/meta.pm          |  2 ++
 IkiWiki/Plugin/sortnaturally.pm |  2 +-
 doc/plugins/write.mdwn          |  2 +-
 t/pagespec_match_list.t         |  2 +-
 5 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/IkiWiki.pm b/IkiWiki.pm
index 7547f1751..d716e8b39 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -37,7 +37,7 @@ our $DEPEND_LINKS=4;
 # Optimisation.
 use Memoize;
 memoize("abs2rel");
-memoize("cmpspec_translate");
+memoize("sortspec_translate");
 memoize("pagespec_translate");
 memoize("template_file");
 
@@ -1935,7 +1935,7 @@ sub add_link ($$) {
 		unless grep { $_ eq $link } @{$links{$page}};
 }
 
-sub cmpspec_translate ($) {
+sub sortspec_translate ($) {
 	my $spec = shift;
 
 	my $code = "";
@@ -1972,13 +1972,13 @@ sub cmpspec_translate ($) {
 			$code .= "-";
 		}
 
-		if (exists $IkiWiki::PageSpec::{"cmp_$word"}) {
+		if (exists $IkiWiki::SortSpec::{"cmp_$word"}) {
 			if (defined $params) {
 				push @data, $params;
-				$code .= "IkiWiki::PageSpec::cmp_$word(\@_, \$data[$#data])";
+				$code .= "IkiWiki::SortSpec::cmp_$word(\@_, \$data[$#data])";
 			}
 			else {
-				$code .= "IkiWiki::PageSpec::cmp_$word(\@_, undef)";
+				$code .= "IkiWiki::SortSpec::cmp_$word(\@_, undef)";
 			}
 		}
 		else {
@@ -2095,7 +2095,7 @@ sub pagespec_match_list ($$;@) {
 	}
 
 	if (defined $params{sort}) {
-		my $f = cmpspec_translate($params{sort});
+		my $f = sortspec_translate($params{sort});
 
 		@candidates = sort { $f->($a, $b) } @candidates;
 	}
@@ -2410,6 +2410,8 @@ sub match_ip ($$;@) {
 	}
 }
 
+package IkiWiki::SortSpec;
+
 sub cmp_title {
 	IkiWiki::pagetitle(IkiWiki::basename($_[0]))
 	cmp
diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm
index e8cc1e392..cd7d0d127 100644
--- a/IkiWiki/Plugin/meta.pm
+++ b/IkiWiki/Plugin/meta.pm
@@ -348,6 +348,8 @@ sub match_copyright ($$;@) {
 	IkiWiki::Plugin::meta::match("copyright", @_);
 }
 
+package IkiWiki::SortSpec;
+
 sub cmp_meta_title {
 	IkiWiki::Plugin::meta::titlesort($_[0])
 	cmp
diff --git a/IkiWiki/Plugin/sortnaturally.pm b/IkiWiki/Plugin/sortnaturally.pm
index 0023f31f9..f498820a5 100644
--- a/IkiWiki/Plugin/sortnaturally.pm
+++ b/IkiWiki/Plugin/sortnaturally.pm
@@ -22,7 +22,7 @@ sub checkconfig () {
 	error $@ if $@;
 }
 
-package IkiWiki::PageSpec;
+package IkiWiki::SortSpec;
 
 sub cmp_title_natural {
 	Sort::Naturally::ncmp(IkiWiki::pagetitle(IkiWiki::basename($_[0])),
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index 06c8f8e44..b67142230 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -1114,7 +1114,7 @@ while "glob(*)" is not influenced by the contents of any page.
 
 Similarly, it's possible to write plugins that add new functions as
 [[ikiwiki/pagespec/sorting]] methods. To achieve this, add a function to
-the IkiWiki::PageSpec package named `cmp_foo`, which will be used when sorting
+the IkiWiki::SortSpec package named `cmp_foo`, which will be used when sorting
 by `foo` or `foo(...)` is requested.
 
 The function will be passed three or more parameters. The first two are
diff --git a/t/pagespec_match_list.t b/t/pagespec_match_list.t
index 743ae4637..68112f5c0 100755
--- a/t/pagespec_match_list.t
+++ b/t/pagespec_match_list.t
@@ -10,7 +10,7 @@ $config{srcdir}=$config{destdir}="/dev/null";
 IkiWiki::checkconfig();
 
 {
-	package IkiWiki::PageSpec;
+	package IkiWiki::SortSpec;
 
 	sub cmp_path { $_[0] cmp $_[1] }
 }
-- 
cgit v1.2.3


From 56c64ff1963b33da74677f08a0b8c6579bc2d68b Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Sat, 3 Apr 2010 13:39:44 +0000
Subject: updated branch

---
 doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 56 +++++++++++++++-------
 1 file changed, 38 insertions(+), 18 deletions(-)

diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
index c6e18505e..8c6e1df3b 100644
--- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
+++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
@@ -40,6 +40,8 @@ That earlier version of the branch is also available for comparison:
 
 >>>>>> `SortSpec` --[[Joey]] 
 
+>>>>>>> Done. --s
+
 >>>> I would be inclined to drop the `check_` stuff. --[[Joey]] 
 
 >>>>> It basically exists to support `title_natural`, to avoid
@@ -54,6 +56,8 @@ That earlier version of the branch is also available for comparison:
 >>>>>> loaded. There could be some evalation overhead in `eval q{use foo}`,
 >>>>>> if so it would be worth addressing across the whole codebase.
 >>>>>> --[[Joey]] 
+>>>>>>
+>>>>>>> check_cmp_foo now dropped. --s
 >>>>>
 >>>>> The former function could be achieved at a small
 >>>>> compatibility cost by putting `title_natural` in a new
@@ -66,6 +70,8 @@ That earlier version of the branch is also available for comparison:
 >>>>>> natural order sort of other keys than the title, at least..)
 >>>>>>  --[[Joey]]
 
+>>>>>>> Done. I added some NEWS.Debian for it, too. --s
+
 >>>> Wouldn't it make sense to have `meta(title)` instead
 >>>> of `meta_title`? --[[Joey]]
 
@@ -90,6 +96,11 @@ That earlier version of the branch is also available for comparison:
 
 >>>>>> Agreed. --[[Joey]]
 
+>>>>>>> I've implemented meta(title). meta(author) also has the
+>>>>>>> `sortas` special case; meta(updated) and meta(date)
+>>>>>>> should also work how you'd expect them to (but they're
+>>>>>>> earliest-first, unlike age). --s
+
 >>>> As I read the regexp in `cmpspec_translate`, the "command"
 >>>> is required to have params. They should be optional, 
 >>>> to match the documentation and because most sort methods
@@ -150,6 +161,10 @@ That earlier version of the branch is also available for comparison:
 >>>>>
 >>>>>> I think you've convinced me that ascending/descending impose too
 >>>>>> much semantics on it, so "-" is better. --[[Joey]]
+
+>>>>>>> I've kept the semantics from `report` as-is, then:
+>>>>>>> e.g. `sort="age -title"`. --s
+
 >>>>>
 >>>>> Perhaps we could borrow from `meta updated` and use `update_age`?
 >>>>> `updateage` would perhaps be a more normal IkiWiki style - but that
@@ -160,18 +175,22 @@ That earlier version of the branch is also available for comparison:
 >>>>> I'm sure there's a much better word, but I can't see it. Do you have
 >>>>> a better idea? --s
 
-## Documentation from sort-package branch
+[Regarding the `meta title=foo sort=bar` special case]
 
-### meta_title sort order (conditionally added to [[ikiwiki/pagespec/sorting]])
+> I feel it sould be clearer to call that "sortas", since "sort=" is used
+> to specify a sort method in other directives. --[[Joey]]
+>> Done. --[[smcv]]
 
-* `meta_title` - Order according to the `\[[!meta title="foo" sort="bar"]]`
-  or `\[[!meta title="foo"]]` [[ikiwiki/directive]], or the page name if no
-  full title was set.
+## Documentation from sort-package branch
 
-  > I feel it sould be clearer to call that "sortas", since "sort=" is used
-  > to specify a sort method in other directives. --[[Joey]]
+### advanced sort orders (conditionally added to [[ikiwiki/pagespec/sorting]])
 
-  >> Fair enough, that's easy to do. --[[smcv]]
+* `title_natural` - Orders by title, but numbers in the title are treated
+  as such, ("1 2 9 10 20" instead of "1 10 2 20 9")
+* `meta(title)` - Order according to the `\[[!meta title="foo" sortas="bar"]]`
+  or `\[[!meta title="foo"]]` [[ikiwiki/directive]], or the page name if no
+  full title was set. `meta(author)`, `meta(date)`, `meta(updated)`, etc.
+  also work.
 
 ### Multiple sort orders (added to [[ikiwiki/pagespec/sorting]])
 
@@ -179,23 +198,29 @@ In addition, you can combine several sort orders and/or reverse the order of
 sorting, with a string like `age -title` (which would sort by age, then by
 title in reverse order if two pages have the same age).
 
-### meta title sort parameter (added to [[ikiwiki/directive/meta]])
+### meta sortas parameter (added to [[ikiwiki/directive/meta]])
+
+[in title]
 
 An optional `sort` parameter will be used preferentially when
-[[ikiwiki/pagespec/sorting]] by `meta_title`:
+[[ikiwiki/pagespec/sorting]] by `meta(title)`:
 
        \[[!meta title="The Beatles" sort="Beatles, The"]]
 
        \[[!meta title="David Bowie" sort="Bowie, David"]]
 
-> I now realise that `author` should also have this, again for use
-> with (Western) names. --s
+[in author]
+
+  An optional `sortas` parameter will be used preferentially when
+  [[ikiwiki/pagespec/sorting]] by `meta(author)`:
+
+        \[[!meta author="Joey Hess" sortas="Hess, Joey"]]
 
 ### Sorting plugins (added to [[plugins/write]])
 
 Similarly, it's possible to write plugins that add new functions as
 [[ikiwiki/pagespec/sorting]] methods. To achieve this, add a function to
-the IkiWiki::PageSpec package named `cmp_foo`, which will be used when sorting
+the IkiWiki::SortSpec package named `cmp_foo`, which will be used when sorting
 by `foo` or `foo(...)` is requested.
 
 The function will be passed three or more parameters. The first two are
@@ -208,8 +233,3 @@ if the first argument is less than the second, positive if the first argument
 is greater, or zero if they are considered equal. It may also raise an
 error using `error`, for instance if it needs a parameter but one isn't
 provided.
-
-You can also define a function called `check_cmp_foo` in the same package.
-If you do, it will be called while preparing to sort by `foo` or `foo(bar)`,
-with argument `undef` or `"bar"` respectively; it may raise an error using
-`error`, if sorting like that isn't going to work.
-- 
cgit v1.2.3


From b66f9026177639d06ebbd1134886d37e2451b3a8 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sat, 3 Apr 2010 15:09:04 -0400
Subject: fix buggy program installation code

---
 Makefile.PL | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/Makefile.PL b/Makefile.PL
index 5a9028b51..38db20d44 100755
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -29,6 +29,7 @@ W3M_CGI_BIN?=$(PREFIX)/lib/w3m/cgi-bin
 tflag=$(shell if [ -n "$$NOTAINT" ] && [ "$$NOTAINT" != 1 ]; then printf -- "-T"; fi)
 extramodules=$(shell if [ "$$PROFILE" = 1 ]; then printf -- "-d:NYTProf"; fi)
 outprogs=ikiwiki.out ikiwiki-transition.out ikiwiki-calendar.out
+scripts=ikiwiki-update-wikilist ikiwiki-makerepo
 
 %.out: %.in
 	./pm_filter $(PREFIX) $(VER) $(PROBABLE_INST_LIB) < $< > $@
@@ -116,8 +117,8 @@ extra_install: underlay_install
 	install ikiwiki-w3m.cgi $(DESTDIR)$(W3M_CGI_BIN)
 
 	install -d $(DESTDIR)$(PREFIX)/bin
-	for prog in $(outprogs); do \
-		install $$prog $(DESTDIR)$(PREFIX)/bin/$$(shell echo $$prog | sed 's/\.out//'); \
+	for prog in $(outprogs) $(scripts); do \
+		install $$prog $(DESTDIR)$(PREFIX)/bin/$$(echo $$prog | sed 's/\.out//'); \
 	done
 
 	$(MAKE) -C po install DESTDIR=$(DESTDIR) PREFIX=$(PREFIX)
-- 
cgit v1.2.3


From 0f82fe522560353bb6133ce1bea632a48cd7db13 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sat, 3 Apr 2010 15:15:04 -0400
Subject: releasing version 3.20100403

---
 debian/changelog |  4 +--
 ikiwiki.spec     |  2 +-
 po/bg.po         | 88 ++++++++++++++++++++++++++++++++-----------------------
 po/cs.po         | 89 +++++++++++++++++++++++++++++++++-----------------------
 po/da.po         | 89 +++++++++++++++++++++++++++++++++-----------------------
 po/de.po         | 89 +++++++++++++++++++++++++++++++++-----------------------
 po/es.po         | 89 +++++++++++++++++++++++++++++++++-----------------------
 po/fr.po         | 89 +++++++++++++++++++++++++++++++++-----------------------
 po/gu.po         | 88 ++++++++++++++++++++++++++++++++-----------------------
 po/ikiwiki.pot   | 78 +++++++++++++++++++++++++++++--------------------
 po/it.po         | 89 +++++++++++++++++++++++++++++++++-----------------------
 po/pl.po         | 88 ++++++++++++++++++++++++++++++++-----------------------
 po/sv.po         | 88 ++++++++++++++++++++++++++++++++-----------------------
 po/tr.po         | 88 ++++++++++++++++++++++++++++++++-----------------------
 po/vi.po         | 88 ++++++++++++++++++++++++++++++++-----------------------
 15 files changed, 667 insertions(+), 479 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 362ba54ab..32a38925d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-ikiwiki (3.20100324) UNRELEASED; urgency=low
+ikiwiki (3.20100403) unstable; urgency=low
 
   * websetup: Add websetup_unsafe to allow marking other settings
     as unsafe.
@@ -29,7 +29,7 @@ ikiwiki (3.20100324) UNRELEASED; urgency=low
   * template: Search for templates in the templatedir, if they are not
     found as pages in the wiki.
 
- -- Joey Hess   Sat, 13 Mar 2010 14:48:10 -0500
+ -- Joey Hess   Sat, 03 Apr 2010 14:17:28 -0400
 
 ikiwiki (3.20100312) unstable; urgency=HIGH
 
diff --git a/ikiwiki.spec b/ikiwiki.spec
index 532a91885..fb7971b27 100644
--- a/ikiwiki.spec
+++ b/ikiwiki.spec
@@ -1,5 +1,5 @@
 Name:           ikiwiki
-Version: 3.20100324
+Version: 3.20100403
 Release:        1%{?dist}
 Summary:        A wiki compiler
 
diff --git a/po/bg.po b/po/bg.po
index 0e2108597..5585a10d6 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: 2010-03-02 22:18-0500\n"
+"POT-Creation-Date: 2010-04-03 14:18-0400\n"
 "PO-Revision-Date: 2007-01-12 01:19+0200\n"
 "Last-Translator: Damyan Ivanov \n"
 "Language-Team: Bulgarian \n"
@@ -55,7 +55,7 @@ msgstr "Предпочитанията са запазени."
 msgid "You are banned."
 msgstr "Достъпът ви е забранен."
 
-#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280
+#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296
 msgid "Error"
 msgstr "Грешка"
 
@@ -137,7 +137,7 @@ msgstr "създаване на нова страницa „%s”"
 msgid "deleting bucket.."
 msgstr ""
 
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230
 msgid "done"
 msgstr "готово"
 
@@ -246,7 +246,7 @@ msgstr ""
 msgid "Added a comment: %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256
+#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270
 msgid "you are not logged in as an admin"
 msgstr ""
 
@@ -517,7 +517,7 @@ msgstr "Огледала"
 msgid "Mirror"
 msgstr "Огледало"
 
-#: ../IkiWiki/Plugin/moderatedcomments.pm:42
+#: ../IkiWiki/Plugin/moderatedcomments.pm:57
 msgid "comment needs moderation"
 msgstr ""
 
@@ -893,12 +893,12 @@ msgstr "грешка при запис на файла „%s”: %s"
 msgid "rsync_command exited %d"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:183
+#: ../IkiWiki/Plugin/search.pm:184
 #, perl-format
 msgid "need Digest::SHA1 to index %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:218
+#: ../IkiWiki/Plugin/search.pm:221
 msgid "search"
 msgstr ""
 
@@ -988,60 +988,60 @@ msgstr "грешка при запис на файла „%s”: %s"
 msgid "missing id parameter"
 msgstr "липсващ параметър „id” на шаблона"
 
-#: ../IkiWiki/Plugin/template.pm:41
+#: ../IkiWiki/Plugin/template.pm:47
 #, perl-format
 msgid "template %s not found"
 msgstr "шаблонът „%s” не е намерен"
 
-#: ../IkiWiki/Plugin/template.pm:60
+#: ../IkiWiki/Plugin/template.pm:66
 #, fuzzy
 msgid "failed to process:"
 msgstr "грешка при обработване на шаблона"
 
-#: ../IkiWiki/Plugin/teximg.pm:71
+#: ../IkiWiki/Plugin/teximg.pm:72
 msgid "missing tex code"
 msgstr ""
 
-#: ../IkiWiki/Plugin/teximg.pm:123
+#: ../IkiWiki/Plugin/teximg.pm:124
 #, fuzzy
 msgid "failed to generate image from code"
 msgstr "грешка при запис на файла „%s”: %s"
 
-#: ../IkiWiki/Plugin/websetup.pm:91
+#: ../IkiWiki/Plugin/websetup.pm:105
 #, perl-format
 msgid "%s plugin:"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:107
+#: ../IkiWiki/Plugin/websetup.pm:121
 #, perl-format
 msgid "%s plugins"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:121
+#: ../IkiWiki/Plugin/websetup.pm:135
 #, perl-format
 msgid "enable %s?"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:260
+#: ../IkiWiki/Plugin/websetup.pm:274
 msgid "setup file for this wiki is not known"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:276
+#: ../IkiWiki/Plugin/websetup.pm:290
 msgid "main"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:419
+#: ../IkiWiki/Plugin/websetup.pm:433
 msgid ""
 "The configuration changes shown below require a wiki rebuild to take effect."
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:423
+#: ../IkiWiki/Plugin/websetup.pm:437
 msgid ""
 "For the configuration changes shown below to fully take effect, you may need "
 "to rebuild the wiki."
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:460
+#: ../IkiWiki/Plugin/websetup.pm:474
 #, perl-format
 msgid "Error: %s exited nonzero (%s). Discarding setup changes."
 msgstr ""
@@ -1110,25 +1110,35 @@ msgstr "ikiwiki: неуспех при обновяване на страниц
 
 #. translators: The first parameter is a filename, and the second
 #. translators: is a (probably not translated) error message.
-#: ../IkiWiki/Setup.pm:19
+#: ../IkiWiki/Setup.pm:23
 #, perl-format
 msgid "cannot read %s: %s"
 msgstr "грешка при четене на „%s”: %s"
 
+#: ../IkiWiki/Setup.pm:34
+#, fuzzy, perl-format
+msgid "cannot load %s in safe mode"
+msgstr "грешка при четене на „%s”: %s"
+
+#: ../IkiWiki/Setup.pm:46
+#, fuzzy, perl-format
+msgid "failed to parse %s"
+msgstr "крешка при компилиране на файла %s"
+
 #: ../IkiWiki/Setup/Automator.pm:34
 msgid "you must enter a wikiname (that contains alphanumerics)"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:82
+#: ../IkiWiki/Setup/Automator.pm:89
 #, perl-format
 msgid "unsupported revision control system %s"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:108
+#: ../IkiWiki/Setup/Automator.pm:115
 msgid "failed to set up the repository with ikiwiki-makerepo"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:126
+#: ../IkiWiki/Setup/Automator.pm:134
 #, perl-format
 msgid "** Disabling plugin %s, since it is failing with this message:"
 msgstr ""
@@ -1147,13 +1157,13 @@ msgid "wrapper filename not specified"
 msgstr "не е указан файл на обвивката"
 
 #. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:149
+#: ../IkiWiki/Wrapper.pm:159
 #, perl-format
 msgid "failed to compile %s"
 msgstr "крешка при компилиране на файла %s"
 
 #. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:169
+#: ../IkiWiki/Wrapper.pm:179
 #, perl-format
 msgid "successfully generated %s"
 msgstr "успешно генериране на %s"
@@ -1166,19 +1176,23 @@ msgstr "формат: ikiwiki [опции] източник местоназна
 msgid "       ikiwiki --setup configfile"
 msgstr ""
 
-#: ../ikiwiki.in:92
+#: ../ikiwiki.in:95
 msgid "usage: --set var=value"
 msgstr ""
 
-#: ../ikiwiki.in:142
+#: ../ikiwiki.in:102
+msgid "usage: --set-yaml var=value"
+msgstr ""
+
+#: ../ikiwiki.in:156
 msgid "generating wrappers.."
 msgstr "генериране на обвивки..."
 
-#: ../ikiwiki.in:205
+#: ../ikiwiki.in:219
 msgid "rebuilding wiki.."
 msgstr "обновяване на уики..."
 
-#: ../ikiwiki.in:208
+#: ../ikiwiki.in:222
 msgid "refreshing wiki.."
 msgstr "осъвременяване на уики..."
 
@@ -1186,40 +1200,40 @@ msgstr "осъвременяване на уики..."
 msgid "Discussion"
 msgstr "Дискусия"
 
-#: ../IkiWiki.pm:514
+#: ../IkiWiki.pm:530
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr ""
 "При използване на пареметъра „--cgi” е необходимо да се укаже и "
 "местоположението на уикито чрез параметъра „--url”"
 
-#: ../IkiWiki.pm:560
+#: ../IkiWiki.pm:576
 msgid "cannot use multiple rcs plugins"
 msgstr ""
 
-#: ../IkiWiki.pm:589
+#: ../IkiWiki.pm:605
 #, perl-format
 msgid "failed to load external plugin needed for %s plugin: %s"
 msgstr ""
 
-#: ../IkiWiki.pm:1262
+#: ../IkiWiki.pm:1278
 #, fuzzy, perl-format
 msgid "preprocessing loop detected on %s at depth %i"
 msgstr "открита е циклична завидимост при %s на „%s” на дълбочина %i"
 
-#: ../IkiWiki.pm:1877
+#: ../IkiWiki.pm:1901
 msgid "yes"
 msgstr ""
 
-#: ../IkiWiki.pm:2020
+#: ../IkiWiki.pm:2044
 msgid "Sort::Naturally needed for title_natural sort"
 msgstr ""
 
-#: ../IkiWiki.pm:2031
+#: ../IkiWiki.pm:2055
 #, perl-format
 msgid "unknown sort type %s"
 msgstr "непознат вид сортиране „%s”"
 
-#: ../IkiWiki.pm:2050
+#: ../IkiWiki.pm:2074
 #, fuzzy, perl-format
 msgid "cannot match pages: %s"
 msgstr "грешка при четене на „%s”: %s"
diff --git a/po/cs.po b/po/cs.po
index 09d411e98..0b45bb97a 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: 2010-03-02 22:18-0500\n"
+"POT-Creation-Date: 2010-04-03 14:18-0400\n"
 "PO-Revision-Date: 2009-09-11 20:23+0200\n"
 "Last-Translator: Miroslav Kure \n"
 "Language-Team: Czech \n"
@@ -55,7 +55,7 @@ msgstr "Nastavení uloženo."
 msgid "You are banned."
 msgstr "Jste vyhoštěni."
 
-#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280
+#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296
 msgid "Error"
 msgstr "Chyba"
 
@@ -136,7 +136,7 @@ msgstr "vytvářím novou stránku %s"
 msgid "deleting bucket.."
 msgstr "mažu bucket..."
 
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230
 msgid "done"
 msgstr "hotovo"
 
@@ -244,7 +244,7 @@ msgstr "Přidán komentář"
 msgid "Added a comment: %s"
 msgstr "Přidán komentář: %s"
 
-#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256
+#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270
 msgid "you are not logged in as an admin"
 msgstr "nejste přihlášeni jako správce"
 
@@ -498,7 +498,7 @@ msgstr "Zrcadla"
 msgid "Mirror"
 msgstr "Zrcadlo"
 
-#: ../IkiWiki/Plugin/moderatedcomments.pm:42
+#: ../IkiWiki/Plugin/moderatedcomments.pm:57
 #, fuzzy
 msgid "comment needs moderation"
 msgstr "schvalování komentářů"
@@ -877,12 +877,12 @@ msgstr "nepodařilo se přečíst %s"
 msgid "rsync_command exited %d"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:183
+#: ../IkiWiki/Plugin/search.pm:184
 #, perl-format
 msgid "need Digest::SHA1 to index %s"
 msgstr "pro indexování %s je potřeba Digest::SHA1"
 
-#: ../IkiWiki/Plugin/search.pm:218
+#: ../IkiWiki/Plugin/search.pm:221
 msgid "search"
 msgstr "hledání"
 
@@ -964,52 +964,52 @@ msgstr "zpracovávání selhalo na řádku %d: %s"
 msgid "missing id parameter"
 msgstr "chybí parametr id"
 
-#: ../IkiWiki/Plugin/template.pm:41
+#: ../IkiWiki/Plugin/template.pm:47
 #, perl-format
 msgid "template %s not found"
 msgstr "šablona %s nebyla nalezena"
 
-#: ../IkiWiki/Plugin/template.pm:60
+#: ../IkiWiki/Plugin/template.pm:66
 msgid "failed to process:"
 msgstr "nepodařilo se zpracovat:"
 
-#: ../IkiWiki/Plugin/teximg.pm:71
+#: ../IkiWiki/Plugin/teximg.pm:72
 msgid "missing tex code"
 msgstr "chybí TeXový kód"
 
-#: ../IkiWiki/Plugin/teximg.pm:123
+#: ../IkiWiki/Plugin/teximg.pm:124
 msgid "failed to generate image from code"
 msgstr "z kódu se nepodařilo vygenerovat obrázek"
 
-#: ../IkiWiki/Plugin/websetup.pm:91
+#: ../IkiWiki/Plugin/websetup.pm:105
 #, fuzzy, perl-format
 msgid "%s plugin:"
 msgstr "modul"
 
-#: ../IkiWiki/Plugin/websetup.pm:107
+#: ../IkiWiki/Plugin/websetup.pm:121
 #, fuzzy, perl-format
 msgid "%s plugins"
 msgstr "moduly"
 
-#: ../IkiWiki/Plugin/websetup.pm:121
+#: ../IkiWiki/Plugin/websetup.pm:135
 #, perl-format
 msgid "enable %s?"
 msgstr "povolit %s?"
 
-#: ../IkiWiki/Plugin/websetup.pm:260
+#: ../IkiWiki/Plugin/websetup.pm:274
 msgid "setup file for this wiki is not known"
 msgstr "konfigurační soubor této wiki je neznámý"
 
-#: ../IkiWiki/Plugin/websetup.pm:276
+#: ../IkiWiki/Plugin/websetup.pm:290
 msgid "main"
 msgstr "hlavní"
 
-#: ../IkiWiki/Plugin/websetup.pm:419
+#: ../IkiWiki/Plugin/websetup.pm:433
 msgid ""
 "The configuration changes shown below require a wiki rebuild to take effect."
 msgstr "Níže uvedené změny v konfiguraci se projeví až po znovusestavení wiki."
 
-#: ../IkiWiki/Plugin/websetup.pm:423
+#: ../IkiWiki/Plugin/websetup.pm:437
 msgid ""
 "For the configuration changes shown below to fully take effect, you may need "
 "to rebuild the wiki."
@@ -1017,7 +1017,7 @@ msgstr ""
 "Aby se níže uvedené změny v konfiguraci zcela projevily, budete možná muset "
 "znovusestavit wiki."
 
-#: ../IkiWiki/Plugin/websetup.pm:460
+#: ../IkiWiki/Plugin/websetup.pm:474
 #, perl-format
 msgid "Error: %s exited nonzero (%s). Discarding setup changes."
 msgstr ""
@@ -1090,25 +1090,35 @@ msgstr "ikiwiki: nelze sestavit %s"
 
 #. translators: The first parameter is a filename, and the second
 #. translators: is a (probably not translated) error message.
-#: ../IkiWiki/Setup.pm:19
+#: ../IkiWiki/Setup.pm:23
 #, perl-format
 msgid "cannot read %s: %s"
 msgstr "nemohu číst %s: %s"
 
+#: ../IkiWiki/Setup.pm:34
+#, fuzzy, perl-format
+msgid "cannot load %s in safe mode"
+msgstr "nemohu číst %s: %s"
+
+#: ../IkiWiki/Setup.pm:46
+#, fuzzy, perl-format
+msgid "failed to parse %s"
+msgstr "nepodařilo se aktualizovat %s"
+
 #: ../IkiWiki/Setup/Automator.pm:34
 msgid "you must enter a wikiname (that contains alphanumerics)"
 msgstr "musíte zadat název wiki (který obsahuje alfanumerické znaky)"
 
-#: ../IkiWiki/Setup/Automator.pm:82
+#: ../IkiWiki/Setup/Automator.pm:89
 #, perl-format
 msgid "unsupported revision control system %s"
 msgstr "nepodporovaný systém pro správu verzí: %s"
 
-#: ../IkiWiki/Setup/Automator.pm:108
+#: ../IkiWiki/Setup/Automator.pm:115
 msgid "failed to set up the repository with ikiwiki-makerepo"
 msgstr "nepodařilo se nastavit repositář pomocí ikiwiki-makerepo"
 
-#: ../IkiWiki/Setup/Automator.pm:126
+#: ../IkiWiki/Setup/Automator.pm:134
 #, perl-format
 msgid "** Disabling plugin %s, since it is failing with this message:"
 msgstr "** Deaktivuji modul %s, protože selhává s touto hláškou:"
@@ -1127,13 +1137,13 @@ msgid "wrapper filename not specified"
 msgstr "jméno souboru s obalem nebylo zadáno"
 
 #. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:149
+#: ../IkiWiki/Wrapper.pm:159
 #, perl-format
 msgid "failed to compile %s"
 msgstr "nelze zkompilovat %s"
 
 #. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:169
+#: ../IkiWiki/Wrapper.pm:179
 #, perl-format
 msgid "successfully generated %s"
 msgstr "%s byl úspěšně vytvořen"
@@ -1146,19 +1156,24 @@ msgstr "použití: ikiwiki [volby] zdroj cíl"
 msgid "       ikiwiki --setup configfile"
 msgstr "       ikiwiki --setup konfigurační.soubor"
 
-#: ../ikiwiki.in:92
+#: ../ikiwiki.in:95
 msgid "usage: --set var=value"
 msgstr "použití: --set proměnná=hodnota"
 
-#: ../ikiwiki.in:142
+#: ../ikiwiki.in:102
+#, fuzzy
+msgid "usage: --set-yaml var=value"
+msgstr "použití: --set proměnná=hodnota"
+
+#: ../ikiwiki.in:156
 msgid "generating wrappers.."
 msgstr "generuji obaly..."
 
-#: ../ikiwiki.in:205
+#: ../ikiwiki.in:219
 msgid "rebuilding wiki.."
 msgstr "znovusestavuji wiki..."
 
-#: ../ikiwiki.in:208
+#: ../ikiwiki.in:222
 msgid "refreshing wiki.."
 msgstr "obnovuji wiki..."
 
@@ -1166,38 +1181,38 @@ msgstr "obnovuji wiki..."
 msgid "Discussion"
 msgstr "Diskuse"
 
-#: ../IkiWiki.pm:514
+#: ../IkiWiki.pm:530
 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:560
+#: ../IkiWiki.pm:576
 msgid "cannot use multiple rcs plugins"
 msgstr "nelze použít několik rcs modulů"
 
-#: ../IkiWiki.pm:589
+#: ../IkiWiki.pm:605
 #, perl-format
 msgid "failed to load external plugin needed for %s plugin: %s"
 msgstr "nepodařilo se nahrát externí modul vyžadovaný modulem %s: %s"
 
-#: ../IkiWiki.pm:1262
+#: ../IkiWiki.pm:1278
 #, perl-format
 msgid "preprocessing loop detected on %s at depth %i"
 msgstr "Byla rozpoznána smyčka na %s v hloubce %i"
 
-#: ../IkiWiki.pm:1877
+#: ../IkiWiki.pm:1901
 msgid "yes"
 msgstr "ano"
 
-#: ../IkiWiki.pm:2020
+#: ../IkiWiki.pm:2044
 msgid "Sort::Naturally needed for title_natural sort"
 msgstr "Pro řazení pomocí title_natural je nutný modul Sort::Naturally"
 
-#: ../IkiWiki.pm:2031
+#: ../IkiWiki.pm:2055
 #, perl-format
 msgid "unknown sort type %s"
 msgstr "neznámý typ řazení %s"
 
-#: ../IkiWiki.pm:2050
+#: ../IkiWiki.pm:2074
 #, perl-format
 msgid "cannot match pages: %s"
 msgstr "nelze vybrat stránky: %s"
diff --git a/po/da.po b/po/da.po
index 13d1dca59..be7a95e6a 100644
--- a/po/da.po
+++ b/po/da.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: ikiwiki 3.14159\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-02 22:18-0500\n"
+"POT-Creation-Date: 2010-04-03 14:18-0400\n"
 "PO-Revision-Date: 2009-07-23 01:07+0200\n"
 "Last-Translator: Jonas Smedegaard \n"
 "Language-Team: None\n"
@@ -59,7 +59,7 @@ msgstr "Indstillinger gemt"
 msgid "You are banned."
 msgstr "Du er banlyst."
 
-#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280
+#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296
 msgid "Error"
 msgstr "Fejl"
 
@@ -140,7 +140,7 @@ msgstr "opretter ny side %s"
 msgid "deleting bucket.."
 msgstr "sletter bundt.."
 
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230
 msgid "done"
 msgstr "færdig"
 
@@ -251,7 +251,7 @@ msgstr "Tilføjede en kommentar"
 msgid "Added a comment: %s"
 msgstr "Tilføjede en kommentar: %s"
 
-#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256
+#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270
 msgid "you are not logged in as an admin"
 msgstr "du er ikke logget på som en administrator"
 
@@ -511,7 +511,7 @@ msgstr "Spejle"
 msgid "Mirror"
 msgstr "Spejl"
 
-#: ../IkiWiki/Plugin/moderatedcomments.pm:42
+#: ../IkiWiki/Plugin/moderatedcomments.pm:57
 #, fuzzy
 msgid "comment needs moderation"
 msgstr "kommentarkoderering"
@@ -892,12 +892,12 @@ msgstr "læsning af %s mislykkedes"
 msgid "rsync_command exited %d"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:183
+#: ../IkiWiki/Plugin/search.pm:184
 #, perl-format
 msgid "need Digest::SHA1 to index %s"
 msgstr "behøver Digest::SHA1 til indeks %s"
 
-#: ../IkiWiki/Plugin/search.pm:218
+#: ../IkiWiki/Plugin/search.pm:221
 msgid "search"
 msgstr "søg"
 
@@ -979,54 +979,54 @@ msgstr "afkodningsfejl på linje %d: %s"
 msgid "missing id parameter"
 msgstr "manglende id-parameter"
 
-#: ../IkiWiki/Plugin/template.pm:41
+#: ../IkiWiki/Plugin/template.pm:47
 #, perl-format
 msgid "template %s not found"
 msgstr "skabelon %s ikke fundet"
 
-#: ../IkiWiki/Plugin/template.pm:60
+#: ../IkiWiki/Plugin/template.pm:66
 msgid "failed to process:"
 msgstr "dannelsen mislykkedes:"
 
-#: ../IkiWiki/Plugin/teximg.pm:71
+#: ../IkiWiki/Plugin/teximg.pm:72
 msgid "missing tex code"
 msgstr "manglende tex-kode"
 
-#: ../IkiWiki/Plugin/teximg.pm:123
+#: ../IkiWiki/Plugin/teximg.pm:124
 msgid "failed to generate image from code"
 msgstr "billedopbygning fra kode mislykkedes"
 
-#: ../IkiWiki/Plugin/websetup.pm:91
+#: ../IkiWiki/Plugin/websetup.pm:105
 #, fuzzy, perl-format
 msgid "%s plugin:"
 msgstr "udvidelse"
 
-#: ../IkiWiki/Plugin/websetup.pm:107
+#: ../IkiWiki/Plugin/websetup.pm:121
 #, fuzzy, perl-format
 msgid "%s plugins"
 msgstr "udvidelser"
 
-#: ../IkiWiki/Plugin/websetup.pm:121
+#: ../IkiWiki/Plugin/websetup.pm:135
 #, perl-format
 msgid "enable %s?"
 msgstr "aktivér %s?"
 
-#: ../IkiWiki/Plugin/websetup.pm:260
+#: ../IkiWiki/Plugin/websetup.pm:274
 msgid "setup file for this wiki is not known"
 msgstr "opsætningsfilen for denne wiki er ukendt"
 
-#: ../IkiWiki/Plugin/websetup.pm:276
+#: ../IkiWiki/Plugin/websetup.pm:290
 msgid "main"
 msgstr "primær"
 
-#: ../IkiWiki/Plugin/websetup.pm:419
+#: ../IkiWiki/Plugin/websetup.pm:433
 msgid ""
 "The configuration changes shown below require a wiki rebuild to take effect."
 msgstr ""
 "Opsætningsændringerne vist nedenfor kræver wiki-genopbygning for at træde i "
 "kraft."
 
-#: ../IkiWiki/Plugin/websetup.pm:423
+#: ../IkiWiki/Plugin/websetup.pm:437
 msgid ""
 "For the configuration changes shown below to fully take effect, you may need "
 "to rebuild the wiki."
@@ -1034,7 +1034,7 @@ msgstr ""
 "For at opsætningsændringerne vist nedenfor træder fuldt ud i kraft, skal du "
 "muligvis genopbygge wikien."
 
-#: ../IkiWiki/Plugin/websetup.pm:460
+#: ../IkiWiki/Plugin/websetup.pm:474
 #, perl-format
 msgid "Error: %s exited nonzero (%s). Discarding setup changes."
 msgstr "Fejl: %s returnerede ikke-nul (%s). Dropper opsætningsændringer."
@@ -1105,25 +1105,35 @@ msgstr "ikiwiki: kan ikke danne %s"
 
 #. translators: The first parameter is a filename, and the second
 #. translators: is a (probably not translated) error message.
-#: ../IkiWiki/Setup.pm:19
+#: ../IkiWiki/Setup.pm:23
 #, perl-format
 msgid "cannot read %s: %s"
 msgstr "kan ikke læse %s: %s"
 
+#: ../IkiWiki/Setup.pm:34
+#, fuzzy, perl-format
+msgid "cannot load %s in safe mode"
+msgstr "kan ikke læse %s: %s"
+
+#: ../IkiWiki/Setup.pm:46
+#, fuzzy, perl-format
+msgid "failed to parse %s"
+msgstr "opdatering af %s mislykkedes"
+
 #: ../IkiWiki/Setup/Automator.pm:34
 msgid "you must enter a wikiname (that contains alphanumerics)"
 msgstr "du skal angive et wikinavn (som indeholder alfanumeriske tegn)"
 
-#: ../IkiWiki/Setup/Automator.pm:82
+#: ../IkiWiki/Setup/Automator.pm:89
 #, perl-format
 msgid "unsupported revision control system %s"
 msgstr "revisionskontrolsystem %s ikke understøttet"
 
-#: ../IkiWiki/Setup/Automator.pm:108
+#: ../IkiWiki/Setup/Automator.pm:115
 msgid "failed to set up the repository with ikiwiki-makerepo"
 msgstr "opsætning af depotet med ikiwiki-makerepo mislykkedes"
 
-#: ../IkiWiki/Setup/Automator.pm:126
+#: ../IkiWiki/Setup/Automator.pm:134
 #, perl-format
 msgid "** Disabling plugin %s, since it is failing with this message:"
 msgstr "** Deaktiverer udvidelse %s, da den fejler med denne besked:"
@@ -1142,13 +1152,13 @@ msgid "wrapper filename not specified"
 msgstr "wrapper-navn ikke angivet"
 
 #. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:149
+#: ../IkiWiki/Wrapper.pm:159
 #, perl-format
 msgid "failed to compile %s"
 msgstr "kompilering af %s mislykkedes"
 
 #. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:169
+#: ../IkiWiki/Wrapper.pm:179
 #, perl-format
 msgid "successfully generated %s"
 msgstr "Korrekt bygget %s"
@@ -1161,19 +1171,24 @@ msgstr "brug: ikiwiki [valg] kilde mål"
 msgid "       ikiwiki --setup configfile"
 msgstr "       ikiwiki --setup opsætningsfil"
 
-#: ../ikiwiki.in:92
+#: ../ikiwiki.in:95
 msgid "usage: --set var=value"
 msgstr "brug: --set var=værdi"
 
-#: ../ikiwiki.in:142
+#: ../ikiwiki.in:102
+#, fuzzy
+msgid "usage: --set-yaml var=value"
+msgstr "brug: --set var=værdi"
+
+#: ../ikiwiki.in:156
 msgid "generating wrappers.."
 msgstr "bygger wrappers.."
 
-#: ../ikiwiki.in:205
+#: ../ikiwiki.in:219
 msgid "rebuilding wiki.."
 msgstr "genopbygger wiki..."
 
-#: ../ikiwiki.in:208
+#: ../ikiwiki.in:222
 msgid "refreshing wiki.."
 msgstr "genopfrisker wiki..."
 
@@ -1181,39 +1196,39 @@ msgstr "genopfrisker wiki..."
 msgid "Discussion"
 msgstr "Diskussion"
 
-#: ../IkiWiki.pm:514
+#: ../IkiWiki.pm:530
 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:560
+#: ../IkiWiki.pm:576
 msgid "cannot use multiple rcs plugins"
 msgstr "kan ikke bruge flere samtidige RCS-udvidelser"
 
-#: ../IkiWiki.pm:589
+#: ../IkiWiki.pm:605
 #, perl-format
 msgid "failed to load external plugin needed for %s plugin: %s"
 msgstr ""
 "indlæsning af ekstern udvidelse krævet af udvidelsen %s mislykkedes: %s"
 
-#: ../IkiWiki.pm:1262
+#: ../IkiWiki.pm:1278
 #, perl-format
 msgid "preprocessing loop detected on %s at depth %i"
 msgstr "forudberegningssløkke fundet på %s ved dybde %i"
 
-#: ../IkiWiki.pm:1877
+#: ../IkiWiki.pm:1901
 msgid "yes"
 msgstr "ja"
 
-#: ../IkiWiki.pm:2020
+#: ../IkiWiki.pm:2044
 msgid "Sort::Naturally needed for title_natural sort"
 msgstr "Sort::Naturally krævet for title_natural sortering"
 
-#: ../IkiWiki.pm:2031
+#: ../IkiWiki.pm:2055
 #, perl-format
 msgid "unknown sort type %s"
 msgstr "ukendt sorteringsform %s"
 
-#: ../IkiWiki.pm:2050
+#: ../IkiWiki.pm:2074
 #, perl-format
 msgid "cannot match pages: %s"
 msgstr "kan ikke få sider til at passe sammen: %s"
diff --git a/po/de.po b/po/de.po
index f69b98603..e5a18d47b 100644
--- a/po/de.po
+++ b/po/de.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: ikiwiki 3.14159\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-02 22:18-0500\n"
+"POT-Creation-Date: 2010-04-03 14:18-0400\n"
 "PO-Revision-Date: 2010-03-14 16:09+0530\n"
 "Last-Translator: Sebastian Kuhnert \n"
 "Language-Team: German \n"
@@ -56,7 +56,7 @@ msgstr "Einstellungen gespeichert."
 msgid "You are banned."
 msgstr "Sie sind ausgeschlossen worden."
 
-#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280
+#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296
 msgid "Error"
 msgstr "Fehler"
 
@@ -137,7 +137,7 @@ msgstr "erstelle neue Seite %s"
 msgid "deleting bucket.."
 msgstr "lösche Behälter (bucket)..."
 
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230
 msgid "done"
 msgstr "fertig"
 
@@ -247,7 +247,7 @@ msgstr "Kommentar hinzugefügt"
 msgid "Added a comment: %s"
 msgstr "Kommentar hinzugefügt: %s"
 
-#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256
+#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270
 msgid "you are not logged in as an admin"
 msgstr "Sie sind nicht als Administrator angemeldet"
 
@@ -507,7 +507,7 @@ msgstr "Spiegel"
 msgid "Mirror"
 msgstr "Spiegel"
 
-#: ../IkiWiki/Plugin/moderatedcomments.pm:42
+#: ../IkiWiki/Plugin/moderatedcomments.pm:57
 msgid "comment needs moderation"
 msgstr "Kommentar muss moderiert werden"
 
@@ -891,12 +891,12 @@ msgstr "konnte das rsync_command nicht ausführen: %s"
 msgid "rsync_command exited %d"
 msgstr "rsync_command gibt Fehler %d zurück"
 
-#: ../IkiWiki/Plugin/search.pm:183
+#: ../IkiWiki/Plugin/search.pm:184
 #, perl-format
 msgid "need Digest::SHA1 to index %s"
 msgstr "benötige Digest::SHA1 um einen Index von %s zu erstellen"
 
-#: ../IkiWiki/Plugin/search.pm:218
+#: ../IkiWiki/Plugin/search.pm:221
 msgid "search"
 msgstr "suchen"
 
@@ -978,54 +978,54 @@ msgstr "Auswertungsfehler in Zeile %d: %s"
 msgid "missing id parameter"
 msgstr "fehlender Parameter id"
 
-#: ../IkiWiki/Plugin/template.pm:41
+#: ../IkiWiki/Plugin/template.pm:47
 #, perl-format
 msgid "template %s not found"
 msgstr "Vorlage %s nicht gefunden"
 
-#: ../IkiWiki/Plugin/template.pm:60
+#: ../IkiWiki/Plugin/template.pm:66
 msgid "failed to process:"
 msgstr "Fehler beim Ablauf:"
 
-#: ../IkiWiki/Plugin/teximg.pm:71
+#: ../IkiWiki/Plugin/teximg.pm:72
 msgid "missing tex code"
 msgstr "fehlender TeX-Code"
 
-#: ../IkiWiki/Plugin/teximg.pm:123
+#: ../IkiWiki/Plugin/teximg.pm:124
 msgid "failed to generate image from code"
 msgstr "konnte kein Bild aus dem Code erzeugen"
 
-#: ../IkiWiki/Plugin/websetup.pm:91
+#: ../IkiWiki/Plugin/websetup.pm:105
 #, perl-format
 msgid "%s plugin:"
 msgstr "%s-Erweiterung:"
 
-#: ../IkiWiki/Plugin/websetup.pm:107
+#: ../IkiWiki/Plugin/websetup.pm:121
 #, fuzzy, perl-format
 msgid "%s plugins"
 msgstr "%s-Erweiterungen"
 
-#: ../IkiWiki/Plugin/websetup.pm:121
+#: ../IkiWiki/Plugin/websetup.pm:135
 #, perl-format
 msgid "enable %s?"
 msgstr "%s aktivieren?"
 
-#: ../IkiWiki/Plugin/websetup.pm:260
+#: ../IkiWiki/Plugin/websetup.pm:274
 msgid "setup file for this wiki is not known"
 msgstr "Die Einrichtungsdatei für dieses Wiki ist unbekannt"
 
-#: ../IkiWiki/Plugin/websetup.pm:276
+#: ../IkiWiki/Plugin/websetup.pm:290
 msgid "main"
 msgstr "Hauptseite"
 
-#: ../IkiWiki/Plugin/websetup.pm:419
+#: ../IkiWiki/Plugin/websetup.pm:433
 msgid ""
 "The configuration changes shown below require a wiki rebuild to take effect."
 msgstr ""
 "Die unten aufgeführten Konfigurationsänderungen erfordern ein Neubau des "
 "Wikis, um wirksam zu werden."
 
-#: ../IkiWiki/Plugin/websetup.pm:423
+#: ../IkiWiki/Plugin/websetup.pm:437
 msgid ""
 "For the configuration changes shown below to fully take effect, you may need "
 "to rebuild the wiki."
@@ -1033,7 +1033,7 @@ msgstr ""
 "Damit die unten aufgeführten Konfigurationsänderungen insgesamt wirksam "
 "werden, kann es notwendig sein, das Wikis neu zu bauen."
 
-#: ../IkiWiki/Plugin/websetup.pm:460
+#: ../IkiWiki/Plugin/websetup.pm:474
 #, perl-format
 msgid "Error: %s exited nonzero (%s). Discarding setup changes."
 msgstr ""
@@ -1107,26 +1107,36 @@ msgstr "ikiwiki: kann %s nicht erzeugen"
 
 #. translators: The first parameter is a filename, and the second
 #. translators: is a (probably not translated) error message.
-#: ../IkiWiki/Setup.pm:19
+#: ../IkiWiki/Setup.pm:23
 #, perl-format
 msgid "cannot read %s: %s"
 msgstr "kann %s nicht lesen: %s"
 
+#: ../IkiWiki/Setup.pm:34
+#, fuzzy, perl-format
+msgid "cannot load %s in safe mode"
+msgstr "kann %s nicht lesen: %s"
+
+#: ../IkiWiki/Setup.pm:46
+#, fuzzy, perl-format
+msgid "failed to parse %s"
+msgstr "aktualisieren von %s fehlgeschlagen"
+
 #: ../IkiWiki/Setup/Automator.pm:34
 msgid "you must enter a wikiname (that contains alphanumerics)"
 msgstr ""
 "Sie müssen einen Wiki-Namen eingeben (der alphanumerische Zeichen enthält)"
 
-#: ../IkiWiki/Setup/Automator.pm:82
+#: ../IkiWiki/Setup/Automator.pm:89
 #, perl-format
 msgid "unsupported revision control system %s"
 msgstr "nicht unterstütztes Versionskontrollsystem %s"
 
-#: ../IkiWiki/Setup/Automator.pm:108
+#: ../IkiWiki/Setup/Automator.pm:115
 msgid "failed to set up the repository with ikiwiki-makerepo"
 msgstr "erstellen des Depots mit ikiwiki-makerepo ist fehlgeschlagen"
 
-#: ../IkiWiki/Setup/Automator.pm:126
+#: ../IkiWiki/Setup/Automator.pm:134
 #, perl-format
 msgid "** Disabling plugin %s, since it is failing with this message:"
 msgstr ""
@@ -1147,13 +1157,13 @@ msgid "wrapper filename not specified"
 msgstr "Dateiname des Wrappers nicht angegeben"
 
 #. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:149
+#: ../IkiWiki/Wrapper.pm:159
 #, perl-format
 msgid "failed to compile %s"
 msgstr "erzeugen von %s fehlgeschlagen"
 
 #. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:169
+#: ../IkiWiki/Wrapper.pm:179
 #, perl-format
 msgid "successfully generated %s"
 msgstr "%s wurde erfolgreich erstellt"
@@ -1166,19 +1176,24 @@ msgstr "Aufruf: ikiwiki [Optionen] Quelle Ziel"
 msgid "       ikiwiki --setup configfile"
 msgstr "       ikiwiki --setup Konfigurationsdatei"
 
-#: ../ikiwiki.in:92
+#: ../ikiwiki.in:95
 msgid "usage: --set var=value"
 msgstr "Aufruf: --set Variable=Wert"
 
-#: ../ikiwiki.in:142
+#: ../ikiwiki.in:102
+#, fuzzy
+msgid "usage: --set-yaml var=value"
+msgstr "Aufruf: --set Variable=Wert"
+
+#: ../ikiwiki.in:156
 msgid "generating wrappers.."
 msgstr "erzeuge Wrapper.."
 
-#: ../ikiwiki.in:205
+#: ../ikiwiki.in:219
 msgid "rebuilding wiki.."
 msgstr "erzeuge Wiki neu.."
 
-#: ../ikiwiki.in:208
+#: ../ikiwiki.in:222
 msgid "refreshing wiki.."
 msgstr "aktualisiere Wiki.."
 
@@ -1186,41 +1201,41 @@ msgstr "aktualisiere Wiki.."
 msgid "Discussion"
 msgstr "Diskussion"
 
-#: ../IkiWiki.pm:514
+#: ../IkiWiki.pm:530
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr ""
 "Es muss eine URL zum Wiki mit --url angegeben werden, wenn --cgi verwandt "
 "wird"
 
-#: ../IkiWiki.pm:560
+#: ../IkiWiki.pm:576
 msgid "cannot use multiple rcs plugins"
 msgstr ""
 "Es können nicht mehrere Versionskontrollsystem-Erweiterungen verwandt werden"
 
-#: ../IkiWiki.pm:589
+#: ../IkiWiki.pm:605
 #, perl-format
 msgid "failed to load external plugin needed for %s plugin: %s"
 msgstr "Laden der für %s benötigten externen Erweiterung fehlgeschlagen: %s"
 
-#: ../IkiWiki.pm:1262
+#: ../IkiWiki.pm:1278
 #, perl-format
 msgid "preprocessing loop detected on %s at depth %i"
 msgstr "Präprozessorschleife auf %s in Tiefe %i erkannt"
 
-#: ../IkiWiki.pm:1877
+#: ../IkiWiki.pm:1901
 msgid "yes"
 msgstr "ja"
 
-#: ../IkiWiki.pm:2020
+#: ../IkiWiki.pm:2044
 msgid "Sort::Naturally needed for title_natural sort"
 msgstr "Sort::Naturally wird benötigt für title_natural sort"
 
-#: ../IkiWiki.pm:2031
+#: ../IkiWiki.pm:2055
 #, perl-format
 msgid "unknown sort type %s"
 msgstr "Unbekannter Sortierungstyp %s"
 
-#: ../IkiWiki.pm:2050
+#: ../IkiWiki.pm:2074
 #, perl-format
 msgid "cannot match pages: %s"
 msgstr "Kann die Seiten nicht zuordnen: %s"
diff --git a/po/es.po b/po/es.po
index 465e9c1a1..413572866 100644
--- a/po/es.po
+++ b/po/es.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: es\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-02 22:18-0500\n"
+"POT-Creation-Date: 2010-04-03 14:18-0400\n"
 "PO-Revision-Date: 2009-06-14 12:32+0200\n"
 "Last-Translator: Victor Moral \n"
 "Language-Team:  \n"
@@ -60,7 +60,7 @@ msgstr "Las preferencias se han guardado."
 msgid "You are banned."
 msgstr "Ha sido expulsado."
 
-#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280
+#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296
 msgid "Error"
 msgstr "Error"
 
@@ -142,7 +142,7 @@ msgstr "creando nueva página %s"
 msgid "deleting bucket.."
 msgstr "borrando el directorio.."
 
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230
 msgid "done"
 msgstr "completado"
 
@@ -253,7 +253,7 @@ msgstr "Añadir un comentario"
 msgid "Added a comment: %s"
 msgstr "Comentario añadido: %s"
 
-#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256
+#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270
 msgid "you are not logged in as an admin"
 msgstr "No está registrado como un administrador"
 
@@ -515,7 +515,7 @@ msgstr "Réplicas"
 msgid "Mirror"
 msgstr "Réplica"
 
-#: ../IkiWiki/Plugin/moderatedcomments.pm:42
+#: ../IkiWiki/Plugin/moderatedcomments.pm:57
 #, fuzzy
 msgid "comment needs moderation"
 msgstr "aprobación de comentarios"
@@ -892,12 +892,12 @@ msgstr "no puedo leer de %s: %s "
 msgid "rsync_command exited %d"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:183
+#: ../IkiWiki/Plugin/search.pm:184
 #, perl-format
 msgid "need Digest::SHA1 to index %s"
 msgstr "se necesita la instalación de Digest::SHA1 para indexar %s"
 
-#: ../IkiWiki/Plugin/search.pm:218
+#: ../IkiWiki/Plugin/search.pm:221
 msgid "search"
 msgstr "buscar"
 
@@ -983,54 +983,54 @@ msgstr "error de análisis en la línea %d: %s"
 msgid "missing id parameter"
 msgstr "falta el parámetro \"id\""
 
-#: ../IkiWiki/Plugin/template.pm:41
+#: ../IkiWiki/Plugin/template.pm:47
 #, perl-format
 msgid "template %s not found"
 msgstr "no he encontrado la plantilla %s"
 
-#: ../IkiWiki/Plugin/template.pm:60
+#: ../IkiWiki/Plugin/template.pm:66
 msgid "failed to process:"
 msgstr "se ha producido un error fatal mientras procesaba la plantilla:"
 
-#: ../IkiWiki/Plugin/teximg.pm:71
+#: ../IkiWiki/Plugin/teximg.pm:72
 msgid "missing tex code"
 msgstr "falta el código tex"
 
-#: ../IkiWiki/Plugin/teximg.pm:123
+#: ../IkiWiki/Plugin/teximg.pm:124
 msgid "failed to generate image from code"
 msgstr "no he podido crear la imagen desde el código"
 
-#: ../IkiWiki/Plugin/websetup.pm:91
+#: ../IkiWiki/Plugin/websetup.pm:105
 #, fuzzy, perl-format
 msgid "%s plugin:"
 msgstr "complemento"
 
-#: ../IkiWiki/Plugin/websetup.pm:107
+#: ../IkiWiki/Plugin/websetup.pm:121
 #, fuzzy, perl-format
 msgid "%s plugins"
 msgstr "complementos"
 
-#: ../IkiWiki/Plugin/websetup.pm:121
+#: ../IkiWiki/Plugin/websetup.pm:135
 #, perl-format
 msgid "enable %s?"
 msgstr "¿ activar %s ?"
 
-#: ../IkiWiki/Plugin/websetup.pm:260
+#: ../IkiWiki/Plugin/websetup.pm:274
 msgid "setup file for this wiki is not known"
 msgstr "El archivo de configuración para este wiki es desconocido"
 
-#: ../IkiWiki/Plugin/websetup.pm:276
+#: ../IkiWiki/Plugin/websetup.pm:290
 msgid "main"
 msgstr "principal"
 
-#: ../IkiWiki/Plugin/websetup.pm:419
+#: ../IkiWiki/Plugin/websetup.pm:433
 msgid ""
 "The configuration changes shown below require a wiki rebuild to take effect."
 msgstr ""
 "Los cambios en la configuración que se muestran más abajo precisan una "
 "reconstrucción del wiki para tener efecto."
 
-#: ../IkiWiki/Plugin/websetup.pm:423
+#: ../IkiWiki/Plugin/websetup.pm:437
 msgid ""
 "For the configuration changes shown below to fully take effect, you may need "
 "to rebuild the wiki."
@@ -1038,7 +1038,7 @@ msgstr ""
 "Para que los cambios en la configuración mostrados más abajo tengan efecto, "
 "es posible que necesite reconstruir el wiki."
 
-#: ../IkiWiki/Plugin/websetup.pm:460
+#: ../IkiWiki/Plugin/websetup.pm:474
 #, perl-format
 msgid "Error: %s exited nonzero (%s). Discarding setup changes."
 msgstr ""
@@ -1113,25 +1113,35 @@ msgstr "ikiwiki: no puedo convertir la página %s"
 
 #. translators: The first parameter is a filename, and the second
 #. translators: is a (probably not translated) error message.
-#: ../IkiWiki/Setup.pm:19
+#: ../IkiWiki/Setup.pm:23
 #, perl-format
 msgid "cannot read %s: %s"
 msgstr "no puedo leer el archivo %s: %s"
 
+#: ../IkiWiki/Setup.pm:34
+#, fuzzy, perl-format
+msgid "cannot load %s in safe mode"
+msgstr "no puedo leer el archivo %s: %s"
+
+#: ../IkiWiki/Setup.pm:46
+#, fuzzy, perl-format
+msgid "failed to parse %s"
+msgstr "ha fallado la compilación del programa %s"
+
 #: ../IkiWiki/Setup/Automator.pm:34
 msgid "you must enter a wikiname (that contains alphanumerics)"
 msgstr "debe escribir un nombre wiki (que contiene caracteres alfanuméricos)"
 
-#: ../IkiWiki/Setup/Automator.pm:82
+#: ../IkiWiki/Setup/Automator.pm:89
 #, perl-format
 msgid "unsupported revision control system %s"
 msgstr "el sistema de control de versiones %s no está soportado"
 
-#: ../IkiWiki/Setup/Automator.pm:108
+#: ../IkiWiki/Setup/Automator.pm:115
 msgid "failed to set up the repository with ikiwiki-makerepo"
 msgstr "no he podido crear un repositorio con el programa ikiwiki-makerepo"
 
-#: ../IkiWiki/Setup/Automator.pm:126
+#: ../IkiWiki/Setup/Automator.pm:134
 #, perl-format
 msgid "** Disabling plugin %s, since it is failing with this message:"
 msgstr ""
@@ -1152,13 +1162,13 @@ msgid "wrapper filename not specified"
 msgstr "el programa envoltorio no ha sido especificado"
 
 #. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:149
+#: ../IkiWiki/Wrapper.pm:159
 #, perl-format
 msgid "failed to compile %s"
 msgstr "ha fallado la compilación del programa %s"
 
 #. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:169
+#: ../IkiWiki/Wrapper.pm:179
 #, perl-format
 msgid "successfully generated %s"
 msgstr "creado con éxito el programa envoltorio %s"
@@ -1171,19 +1181,24 @@ msgstr "uso: ikiwiki [opciones] origen destino"
 msgid "       ikiwiki --setup configfile"
 msgstr "       ikiwiki --setup archivo_de_configuración"
 
-#: ../ikiwiki.in:92
+#: ../ikiwiki.in:95
 msgid "usage: --set var=value"
 msgstr "uso: --set variable=valor"
 
-#: ../ikiwiki.in:142
+#: ../ikiwiki.in:102
+#, fuzzy
+msgid "usage: --set-yaml var=value"
+msgstr "uso: --set variable=valor"
+
+#: ../ikiwiki.in:156
 msgid "generating wrappers.."
 msgstr "generando programas auxiliares.."
 
-#: ../ikiwiki.in:205
+#: ../ikiwiki.in:219
 msgid "rebuilding wiki.."
 msgstr "reconstruyendo el wiki.."
 
-#: ../ikiwiki.in:208
+#: ../ikiwiki.in:222
 msgid "refreshing wiki.."
 msgstr "actualizando el wiki.."
 
@@ -1191,44 +1206,44 @@ msgstr "actualizando el wiki.."
 msgid "Discussion"
 msgstr "Comentarios"
 
-#: ../IkiWiki.pm:514
+#: ../IkiWiki.pm:530
 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:560
+#: ../IkiWiki.pm:576
 msgid "cannot use multiple rcs plugins"
 msgstr "no puedo emplear varios complementos rcs"
 
-#: ../IkiWiki.pm:589
+#: ../IkiWiki.pm:605
 #, perl-format
 msgid "failed to load external plugin needed for %s plugin: %s"
 msgstr "no he podido cargar el complemento externo %s necesario para %s"
 
-#: ../IkiWiki.pm:1262
+#: ../IkiWiki.pm:1278
 #, perl-format
 msgid "preprocessing loop detected on %s at depth %i"
 msgstr ""
 "se ha detectado en la página %s un bucle de preprocesado en la iteración "
 "número %i"
 
-#: ../IkiWiki.pm:1877
+#: ../IkiWiki.pm:1901
 msgid "yes"
 msgstr "si"
 
-#: ../IkiWiki.pm:2020
+#: ../IkiWiki.pm:2044
 msgid "Sort::Naturally needed for title_natural sort"
 msgstr ""
 "Se necesita el módulo Sort::Naturally para el tipo de ordenación "
 "title_natural"
 
-#: ../IkiWiki.pm:2031
+#: ../IkiWiki.pm:2055
 #, perl-format
 msgid "unknown sort type %s"
 msgstr "no conozco este tipo de ordenación %s"
 
-#: ../IkiWiki.pm:2050
+#: ../IkiWiki.pm:2074
 #, perl-format
 msgid "cannot match pages: %s"
 msgstr "no encuentro páginas coincidentes: %s"
diff --git a/po/fr.po b/po/fr.po
index 723d3a036..6be9482ce 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: ikiwiki 3.141\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-02 22:18-0500\n"
+"POT-Creation-Date: 2010-04-03 14:18-0400\n"
 "PO-Revision-Date: 2009-08-17 10:06+0200\n"
 "Last-Translator: Philippe Batailler \n"
 "Language-Team: French \n"
@@ -57,7 +57,7 @@ msgstr "Les préférences ont été enregistrées."
 msgid "You are banned."
 msgstr "Vous avez été banni."
 
-#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280
+#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296
 msgid "Error"
 msgstr "Erreur"
 
@@ -138,7 +138,7 @@ msgstr "Création de la nouvelle page %s"
 msgid "deleting bucket.."
 msgstr "Suppression du compartiment S3 (« bucket »)..."
 
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230
 msgid "done"
 msgstr "Terminé"
 
@@ -246,7 +246,7 @@ msgstr "Commentaire ajouté"
 msgid "Added a comment: %s"
 msgstr "Commentaire ajouté : %s"
 
-#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256
+#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270
 msgid "you are not logged in as an admin"
 msgstr "Vous n'êtes pas authentifié comme administrateur"
 
@@ -506,7 +506,7 @@ msgstr "Miroirs"
 msgid "Mirror"
 msgstr "Miroir"
 
-#: ../IkiWiki/Plugin/moderatedcomments.pm:42
+#: ../IkiWiki/Plugin/moderatedcomments.pm:57
 #, fuzzy
 msgid "comment needs moderation"
 msgstr "modération du commentaire"
@@ -896,12 +896,12 @@ msgstr "Impossible de lire %s"
 msgid "rsync_command exited %d"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:183
+#: ../IkiWiki/Plugin/search.pm:184
 #, perl-format
 msgid "need Digest::SHA1 to index %s"
 msgstr "Digest::SHA1 est nécessaire pour indexer %s"
 
-#: ../IkiWiki/Plugin/search.pm:218
+#: ../IkiWiki/Plugin/search.pm:221
 msgid "search"
 msgstr "recherche"
 
@@ -983,54 +983,54 @@ msgstr "Erreur d'analyse à la ligne %d : %s"
 msgid "missing id parameter"
 msgstr "Paramètre d'identification manquant"
 
-#: ../IkiWiki/Plugin/template.pm:41
+#: ../IkiWiki/Plugin/template.pm:47
 #, perl-format
 msgid "template %s not found"
 msgstr "Modèle de page %s introuvable"
 
-#: ../IkiWiki/Plugin/template.pm:60
+#: ../IkiWiki/Plugin/template.pm:66
 msgid "failed to process:"
 msgstr "Échec du traitement :"
 
-#: ../IkiWiki/Plugin/teximg.pm:71
+#: ../IkiWiki/Plugin/teximg.pm:72
 msgid "missing tex code"
 msgstr "Il manque le code TeX"
 
-#: ../IkiWiki/Plugin/teximg.pm:123
+#: ../IkiWiki/Plugin/teximg.pm:124
 msgid "failed to generate image from code"
 msgstr "Échec de la création de l'image à partir du code"
 
-#: ../IkiWiki/Plugin/websetup.pm:91
+#: ../IkiWiki/Plugin/websetup.pm:105
 #, fuzzy, perl-format
 msgid "%s plugin:"
 msgstr "greffon"
 
-#: ../IkiWiki/Plugin/websetup.pm:107
+#: ../IkiWiki/Plugin/websetup.pm:121
 #, fuzzy, perl-format
 msgid "%s plugins"
 msgstr "Greffons"
 
-#: ../IkiWiki/Plugin/websetup.pm:121
+#: ../IkiWiki/Plugin/websetup.pm:135
 #, perl-format
 msgid "enable %s?"
 msgstr "activer %s ?"
 
-#: ../IkiWiki/Plugin/websetup.pm:260
+#: ../IkiWiki/Plugin/websetup.pm:274
 msgid "setup file for this wiki is not known"
 msgstr "Le fichier de configuration de ce wiki n'est pas connu"
 
-#: ../IkiWiki/Plugin/websetup.pm:276
+#: ../IkiWiki/Plugin/websetup.pm:290
 msgid "main"
 msgstr "Partie principale"
 
-#: ../IkiWiki/Plugin/websetup.pm:419
+#: ../IkiWiki/Plugin/websetup.pm:433
 msgid ""
 "The configuration changes shown below require a wiki rebuild to take effect."
 msgstr ""
 "Les changements de configuration ci-dessous nécessitent une recompilation du "
 "wiki pour prendre effet"
 
-#: ../IkiWiki/Plugin/websetup.pm:423
+#: ../IkiWiki/Plugin/websetup.pm:437
 msgid ""
 "For the configuration changes shown below to fully take effect, you may need "
 "to rebuild the wiki."
@@ -1038,7 +1038,7 @@ msgstr ""
 "Pour que les changements de configuration ci-dessous prennent effet vous "
 "devez recompiler le wiki"
 
-#: ../IkiWiki/Plugin/websetup.pm:460
+#: ../IkiWiki/Plugin/websetup.pm:474
 #, perl-format
 msgid "Error: %s exited nonzero (%s). Discarding setup changes."
 msgstr "Erreur : %s s'est terminé anormalement (%s). Modifications ignorées."
@@ -1110,27 +1110,37 @@ msgstr "ikiwiki : impossible de reconstruire %s"
 
 #. translators: The first parameter is a filename, and the second
 #. translators: is a (probably not translated) error message.
-#: ../IkiWiki/Setup.pm:19
+#: ../IkiWiki/Setup.pm:23
 #, perl-format
 msgid "cannot read %s: %s"
 msgstr "Lecture impossible de %s : %s"
 
+#: ../IkiWiki/Setup.pm:34
+#, fuzzy, perl-format
+msgid "cannot load %s in safe mode"
+msgstr "Lecture impossible de %s : %s"
+
+#: ../IkiWiki/Setup.pm:46
+#, fuzzy, perl-format
+msgid "failed to parse %s"
+msgstr "Impossible de mettre à jour %s"
+
 #: ../IkiWiki/Setup/Automator.pm:34
 msgid "you must enter a wikiname (that contains alphanumerics)"
 msgstr ""
 "Vous devez spécifier un nom de wiki (contenant des caractères "
 "alphanumériques)"
 
-#: ../IkiWiki/Setup/Automator.pm:82
+#: ../IkiWiki/Setup/Automator.pm:89
 #, perl-format
 msgid "unsupported revision control system %s"
 msgstr "Système de contrôle de version non reconnu : %s"
 
-#: ../IkiWiki/Setup/Automator.pm:108
+#: ../IkiWiki/Setup/Automator.pm:115
 msgid "failed to set up the repository with ikiwiki-makerepo"
 msgstr "Échec lors de la création du dépôt avec ikiwiki-makerepo"
 
-#: ../IkiWiki/Setup/Automator.pm:126
+#: ../IkiWiki/Setup/Automator.pm:134
 #, perl-format
 msgid "** Disabling plugin %s, since it is failing with this message:"
 msgstr ""
@@ -1152,13 +1162,13 @@ msgid "wrapper filename not specified"
 msgstr "Le nom du fichier CGI n'a pas été indiqué"
 
 #. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:149
+#: ../IkiWiki/Wrapper.pm:159
 #, perl-format
 msgid "failed to compile %s"
 msgstr "Échec de la compilation de %s"
 
 #. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:169
+#: ../IkiWiki/Wrapper.pm:179
 #, perl-format
 msgid "successfully generated %s"
 msgstr "%s a été créé avec succès"
@@ -1171,19 +1181,24 @@ msgstr "Syntaxe : ikiwiki [options] source destination"
 msgid "       ikiwiki --setup configfile"
 msgstr "       ikiwiki --setup fichier de configuration"
 
-#: ../ikiwiki.in:92
+#: ../ikiwiki.in:95
 msgid "usage: --set var=value"
 msgstr "Syntaxe : -- set var=valeur"
 
-#: ../ikiwiki.in:142
+#: ../ikiwiki.in:102
+#, fuzzy
+msgid "usage: --set-yaml var=value"
+msgstr "Syntaxe : -- set var=valeur"
+
+#: ../ikiwiki.in:156
 msgid "generating wrappers.."
 msgstr "Création des fichiers CGI..."
 
-#: ../ikiwiki.in:205
+#: ../ikiwiki.in:219
 msgid "rebuilding wiki.."
 msgstr "Reconstruction du wiki..."
 
-#: ../ikiwiki.in:208
+#: ../ikiwiki.in:222
 msgid "refreshing wiki.."
 msgstr "Rafraîchissement du wiki..."
 
@@ -1191,39 +1206,39 @@ msgstr "Rafraîchissement du wiki..."
 msgid "Discussion"
 msgstr "Discussion"
 
-#: ../IkiWiki.pm:514
+#: ../IkiWiki.pm:530
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr ""
 "Vous devez indiquer l'URL du wiki par --url lors de l'utilisation de --cgi"
 
-#: ../IkiWiki.pm:560
+#: ../IkiWiki.pm:576
 msgid "cannot use multiple rcs plugins"
 msgstr "Impossible d'utiliser plusieurs systèmes de contrôle des versions"
 
-#: ../IkiWiki.pm:589
+#: ../IkiWiki.pm:605
 #, perl-format
 msgid "failed to load external plugin needed for %s plugin: %s"
 msgstr "Impossible de charger le greffon externe nécessaire au greffon %s : %s"
 
-#: ../IkiWiki.pm:1262
+#: ../IkiWiki.pm:1278
 #, perl-format
 msgid "preprocessing loop detected on %s at depth %i"
 msgstr "Une boucle de prétraitement a été détectée sur %s à hauteur de %i"
 
-#: ../IkiWiki.pm:1877
+#: ../IkiWiki.pm:1901
 msgid "yes"
 msgstr "oui"
 
-#: ../IkiWiki.pm:2020
+#: ../IkiWiki.pm:2044
 msgid "Sort::Naturally needed for title_natural sort"
 msgstr "Sort::Naturally est nécessaire pour un tri « title_natural »"
 
-#: ../IkiWiki.pm:2031
+#: ../IkiWiki.pm:2055
 #, perl-format
 msgid "unknown sort type %s"
 msgstr "Type de tri %s inconnu"
 
-#: ../IkiWiki.pm:2050
+#: ../IkiWiki.pm:2074
 #, perl-format
 msgid "cannot match pages: %s"
 msgstr "Impossible de trouver les pages %s"
diff --git a/po/gu.po b/po/gu.po
index f7725abb9..d4bfd42c0 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: 2010-03-02 22:18-0500\n"
+"POT-Creation-Date: 2010-04-03 14:18-0400\n"
 "PO-Revision-Date: 2007-01-11 16:05+0530\n"
 "Last-Translator: Kartik Mistry \n"
 "Language-Team: Gujarati \n"
@@ -54,7 +54,7 @@ msgstr "પ્રાથમિકતાઓ સંગ્રહાઇ."
 msgid "You are banned."
 msgstr "તમારા પર પ્રતિબંધ છે."
 
-#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280
+#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296
 msgid "Error"
 msgstr "ક્ષતિ"
 
@@ -135,7 +135,7 @@ msgstr "નવું પાનું %s બનાવે છે"
 msgid "deleting bucket.."
 msgstr ""
 
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230
 msgid "done"
 msgstr "સંપૂર્ણ"
 
@@ -244,7 +244,7 @@ msgstr ""
 msgid "Added a comment: %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256
+#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270
 msgid "you are not logged in as an admin"
 msgstr ""
 
@@ -507,7 +507,7 @@ msgstr "મિરરો"
 msgid "Mirror"
 msgstr "મિરર"
 
-#: ../IkiWiki/Plugin/moderatedcomments.pm:42
+#: ../IkiWiki/Plugin/moderatedcomments.pm:57
 msgid "comment needs moderation"
 msgstr ""
 
@@ -883,12 +883,12 @@ msgstr "%s વાંચવામાં નિષ્ફળ: %s"
 msgid "rsync_command exited %d"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:183
+#: ../IkiWiki/Plugin/search.pm:184
 #, perl-format
 msgid "need Digest::SHA1 to index %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:218
+#: ../IkiWiki/Plugin/search.pm:221
 msgid "search"
 msgstr ""
 
@@ -974,60 +974,60 @@ msgstr "ઉકેલવાનું લીટી %d પર નિષ્ફળ: %
 msgid "missing id parameter"
 msgstr "ખોવાયેલ આઇડી વિકલ્પ"
 
-#: ../IkiWiki/Plugin/template.pm:41
+#: ../IkiWiki/Plugin/template.pm:47
 #, perl-format
 msgid "template %s not found"
 msgstr "ટેમ્પલેટ %s મળ્યું નહી"
 
-#: ../IkiWiki/Plugin/template.pm:60
+#: ../IkiWiki/Plugin/template.pm:66
 msgid "failed to process:"
 msgstr "ક્રિયા કરવામાં નિષ્ફળ:"
 
-#: ../IkiWiki/Plugin/teximg.pm:71
+#: ../IkiWiki/Plugin/teximg.pm:72
 #, fuzzy
 msgid "missing tex code"
 msgstr "ખોવાયેલ કિંમતો"
 
-#: ../IkiWiki/Plugin/teximg.pm:123
+#: ../IkiWiki/Plugin/teximg.pm:124
 #, fuzzy
 msgid "failed to generate image from code"
 msgstr "માપ બદલવામાં નિષ્ફળ: %s"
 
-#: ../IkiWiki/Plugin/websetup.pm:91
+#: ../IkiWiki/Plugin/websetup.pm:105
 #, perl-format
 msgid "%s plugin:"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:107
+#: ../IkiWiki/Plugin/websetup.pm:121
 #, perl-format
 msgid "%s plugins"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:121
+#: ../IkiWiki/Plugin/websetup.pm:135
 #, perl-format
 msgid "enable %s?"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:260
+#: ../IkiWiki/Plugin/websetup.pm:274
 msgid "setup file for this wiki is not known"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:276
+#: ../IkiWiki/Plugin/websetup.pm:290
 msgid "main"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:419
+#: ../IkiWiki/Plugin/websetup.pm:433
 msgid ""
 "The configuration changes shown below require a wiki rebuild to take effect."
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:423
+#: ../IkiWiki/Plugin/websetup.pm:437
 msgid ""
 "For the configuration changes shown below to fully take effect, you may need "
 "to rebuild the wiki."
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:460
+#: ../IkiWiki/Plugin/websetup.pm:474
 #, perl-format
 msgid "Error: %s exited nonzero (%s). Discarding setup changes."
 msgstr ""
@@ -1096,25 +1096,35 @@ msgstr "ikiwiki: %s રેન્ડર કરી શકાતું નથી"
 
 #. translators: The first parameter is a filename, and the second
 #. translators: is a (probably not translated) error message.
-#: ../IkiWiki/Setup.pm:19
+#: ../IkiWiki/Setup.pm:23
 #, perl-format
 msgid "cannot read %s: %s"
 msgstr "વાંચી શકાતી નથી %s: %s"
 
+#: ../IkiWiki/Setup.pm:34
+#, fuzzy, perl-format
+msgid "cannot load %s in safe mode"
+msgstr "વાંચી શકાતી નથી %s: %s"
+
+#: ../IkiWiki/Setup.pm:46
+#, fuzzy, perl-format
+msgid "failed to parse %s"
+msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ"
+
 #: ../IkiWiki/Setup/Automator.pm:34
 msgid "you must enter a wikiname (that contains alphanumerics)"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:82
+#: ../IkiWiki/Setup/Automator.pm:89
 #, perl-format
 msgid "unsupported revision control system %s"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:108
+#: ../IkiWiki/Setup/Automator.pm:115
 msgid "failed to set up the repository with ikiwiki-makerepo"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:126
+#: ../IkiWiki/Setup/Automator.pm:134
 #, perl-format
 msgid "** Disabling plugin %s, since it is failing with this message:"
 msgstr ""
@@ -1133,13 +1143,13 @@ msgid "wrapper filename not specified"
 msgstr "આવરણ ફાઇલનામ સ્પષ્ટ કરેલ નથી"
 
 #. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:149
+#: ../IkiWiki/Wrapper.pm:159
 #, perl-format
 msgid "failed to compile %s"
 msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ"
 
 #. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:169
+#: ../IkiWiki/Wrapper.pm:179
 #, perl-format
 msgid "successfully generated %s"
 msgstr "સફળતાપૂર્વક પેદા કરેલ છે %s"
@@ -1152,19 +1162,23 @@ msgstr "ઉપયોગ: ikiwiki [વિકલ્પો] source dest"
 msgid "       ikiwiki --setup configfile"
 msgstr ""
 
-#: ../ikiwiki.in:92
+#: ../ikiwiki.in:95
 msgid "usage: --set var=value"
 msgstr ""
 
-#: ../ikiwiki.in:142
+#: ../ikiwiki.in:102
+msgid "usage: --set-yaml var=value"
+msgstr ""
+
+#: ../ikiwiki.in:156
 msgid "generating wrappers.."
 msgstr "આવરણ બનાવે છે.."
 
-#: ../ikiwiki.in:205
+#: ../ikiwiki.in:219
 msgid "rebuilding wiki.."
 msgstr "વીકી ફરીથી બનાવે છે.."
 
-#: ../ikiwiki.in:208
+#: ../ikiwiki.in:222
 msgid "refreshing wiki.."
 msgstr "વીકીને તાજી કરે છે.."
 
@@ -1172,38 +1186,38 @@ msgstr "વીકીને તાજી કરે છે.."
 msgid "Discussion"
 msgstr "ચર્ચા"
 
-#: ../IkiWiki.pm:514
+#: ../IkiWiki.pm:530
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr "જ્યારે --cgi ઉપયોગ કરતાં હોય ત્યારે વીકીનું યુઆરએલ સ્પષ્ટ કરવું જ પડશે"
 
-#: ../IkiWiki.pm:560
+#: ../IkiWiki.pm:576
 msgid "cannot use multiple rcs plugins"
 msgstr ""
 
-#: ../IkiWiki.pm:589
+#: ../IkiWiki.pm:605
 #, perl-format
 msgid "failed to load external plugin needed for %s plugin: %s"
 msgstr ""
 
-#: ../IkiWiki.pm:1262
+#: ../IkiWiki.pm:1278
 #, fuzzy, perl-format
 msgid "preprocessing loop detected on %s at depth %i"
 msgstr "%s પર શોધાયેલ લુપ  %s પર ચલાવે છે %i ઉંડાણ પર"
 
-#: ../IkiWiki.pm:1877
+#: ../IkiWiki.pm:1901
 msgid "yes"
 msgstr ""
 
-#: ../IkiWiki.pm:2020
+#: ../IkiWiki.pm:2044
 msgid "Sort::Naturally needed for title_natural sort"
 msgstr ""
 
-#: ../IkiWiki.pm:2031
+#: ../IkiWiki.pm:2055
 #, perl-format
 msgid "unknown sort type %s"
 msgstr "અજાણ્યો ગોઠવણી પ્રકાર %s"
 
-#: ../IkiWiki.pm:2050
+#: ../IkiWiki.pm:2074
 #, fuzzy, perl-format
 msgid "cannot match pages: %s"
 msgstr "વાંચી શકાતી નથી %s: %s"
diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot
index df3000feb..c2f4e24a9 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: 2010-03-12 15:02-0500\n"
+"POT-Creation-Date: 2010-04-03 14:18-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME \n"
 "Language-Team: LANGUAGE \n"
@@ -55,7 +55,7 @@ msgstr ""
 msgid "You are banned."
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280
+#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296
 msgid "Error"
 msgstr ""
 
@@ -136,7 +136,7 @@ msgstr ""
 msgid "deleting bucket.."
 msgstr ""
 
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230
 msgid "done"
 msgstr ""
 
@@ -242,7 +242,7 @@ msgstr ""
 msgid "Added a comment: %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256
+#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270
 msgid "you are not logged in as an admin"
 msgstr ""
 
@@ -951,12 +951,12 @@ msgstr ""
 msgid "missing id parameter"
 msgstr ""
 
-#: ../IkiWiki/Plugin/template.pm:41
+#: ../IkiWiki/Plugin/template.pm:47
 #, perl-format
 msgid "template %s not found"
 msgstr ""
 
-#: ../IkiWiki/Plugin/template.pm:60
+#: ../IkiWiki/Plugin/template.pm:66
 msgid "failed to process:"
 msgstr ""
 
@@ -968,41 +968,41 @@ msgstr ""
 msgid "failed to generate image from code"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:91
+#: ../IkiWiki/Plugin/websetup.pm:105
 #, perl-format
 msgid "%s plugin:"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:107
+#: ../IkiWiki/Plugin/websetup.pm:121
 #, perl-format
 msgid "%s plugins"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:121
+#: ../IkiWiki/Plugin/websetup.pm:135
 #, perl-format
 msgid "enable %s?"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:260
+#: ../IkiWiki/Plugin/websetup.pm:274
 msgid "setup file for this wiki is not known"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:276
+#: ../IkiWiki/Plugin/websetup.pm:290
 msgid "main"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:419
+#: ../IkiWiki/Plugin/websetup.pm:433
 msgid ""
 "The configuration changes shown below require a wiki rebuild to take effect."
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:423
+#: ../IkiWiki/Plugin/websetup.pm:437
 msgid ""
 "For the configuration changes shown below to fully take effect, you may need "
 "to rebuild the wiki."
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:460
+#: ../IkiWiki/Plugin/websetup.pm:474
 #, perl-format
 msgid "Error: %s exited nonzero (%s). Discarding setup changes."
 msgstr ""
@@ -1071,25 +1071,35 @@ msgstr ""
 
 #. translators: The first parameter is a filename, and the second
 #. translators: is a (probably not translated) error message.
-#: ../IkiWiki/Setup.pm:19
+#: ../IkiWiki/Setup.pm:23
 #, perl-format
 msgid "cannot read %s: %s"
 msgstr ""
 
+#: ../IkiWiki/Setup.pm:34
+#, perl-format
+msgid "cannot load %s in safe mode"
+msgstr ""
+
+#: ../IkiWiki/Setup.pm:46
+#, perl-format
+msgid "failed to parse %s"
+msgstr ""
+
 #: ../IkiWiki/Setup/Automator.pm:34
 msgid "you must enter a wikiname (that contains alphanumerics)"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:82
+#: ../IkiWiki/Setup/Automator.pm:89
 #, perl-format
 msgid "unsupported revision control system %s"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:108
+#: ../IkiWiki/Setup/Automator.pm:115
 msgid "failed to set up the repository with ikiwiki-makerepo"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:126
+#: ../IkiWiki/Setup/Automator.pm:134
 #, perl-format
 msgid "** Disabling plugin %s, since it is failing with this message:"
 msgstr ""
@@ -1108,13 +1118,13 @@ msgid "wrapper filename not specified"
 msgstr ""
 
 #. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:149
+#: ../IkiWiki/Wrapper.pm:159
 #, perl-format
 msgid "failed to compile %s"
 msgstr ""
 
 #. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:169
+#: ../IkiWiki/Wrapper.pm:179
 #, perl-format
 msgid "successfully generated %s"
 msgstr ""
@@ -1127,19 +1137,23 @@ msgstr ""
 msgid "       ikiwiki --setup configfile"
 msgstr ""
 
-#: ../ikiwiki.in:92
+#: ../ikiwiki.in:95
 msgid "usage: --set var=value"
 msgstr ""
 
-#: ../ikiwiki.in:142
+#: ../ikiwiki.in:102
+msgid "usage: --set-yaml var=value"
+msgstr ""
+
+#: ../ikiwiki.in:156
 msgid "generating wrappers.."
 msgstr ""
 
-#: ../ikiwiki.in:205
+#: ../ikiwiki.in:219
 msgid "rebuilding wiki.."
 msgstr ""
 
-#: ../ikiwiki.in:208
+#: ../ikiwiki.in:222
 msgid "refreshing wiki.."
 msgstr ""
 
@@ -1147,38 +1161,38 @@ msgstr ""
 msgid "Discussion"
 msgstr ""
 
-#: ../IkiWiki.pm:514
+#: ../IkiWiki.pm:530
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr ""
 
-#: ../IkiWiki.pm:560
+#: ../IkiWiki.pm:576
 msgid "cannot use multiple rcs plugins"
 msgstr ""
 
-#: ../IkiWiki.pm:589
+#: ../IkiWiki.pm:605
 #, perl-format
 msgid "failed to load external plugin needed for %s plugin: %s"
 msgstr ""
 
-#: ../IkiWiki.pm:1262
+#: ../IkiWiki.pm:1278
 #, perl-format
 msgid "preprocessing loop detected on %s at depth %i"
 msgstr ""
 
-#: ../IkiWiki.pm:1877
+#: ../IkiWiki.pm:1901
 msgid "yes"
 msgstr ""
 
-#: ../IkiWiki.pm:2020
+#: ../IkiWiki.pm:2044
 msgid "Sort::Naturally needed for title_natural sort"
 msgstr ""
 
-#: ../IkiWiki.pm:2031
+#: ../IkiWiki.pm:2055
 #, perl-format
 msgid "unknown sort type %s"
 msgstr ""
 
-#: ../IkiWiki.pm:2050
+#: ../IkiWiki.pm:2074
 #, perl-format
 msgid "cannot match pages: %s"
 msgstr ""
diff --git a/po/it.po b/po/it.po
index d664c4d30..b1b3dbd55 100644
--- a/po/it.po
+++ b/po/it.po
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Ikiwiki\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-02 22:18-0500\n"
+"POT-Creation-Date: 2010-04-03 14:18-0400\n"
 "PO-Revision-Date: 2009-08-16 11:01+0100\n"
 "Last-Translator: Luca Bruno \n"
 "Language-Team: Italian TP \n"
@@ -53,7 +53,7 @@ msgstr "Preferenze salvate."
 msgid "You are banned."
 msgstr "Avete ricevuto un ban."
 
-#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280
+#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296
 msgid "Error"
 msgstr "Errore"
 
@@ -135,7 +135,7 @@ msgstr "creazione nuova pagina %s"
 msgid "deleting bucket.."
 msgstr "eliminazione contenitore..."
 
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230
 msgid "done"
 msgstr "fatto"
 
@@ -243,7 +243,7 @@ msgstr "Aggiunto commento"
 msgid "Added a comment: %s"
 msgstr "Aggiunto commento: %s"
 
-#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256
+#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270
 msgid "you are not logged in as an admin"
 msgstr "non siete autenticati come amministratore"
 
@@ -501,7 +501,7 @@ msgstr "Mirror"
 msgid "Mirror"
 msgstr "Mirror"
 
-#: ../IkiWiki/Plugin/moderatedcomments.pm:42
+#: ../IkiWiki/Plugin/moderatedcomments.pm:57
 #, fuzzy
 msgid "comment needs moderation"
 msgstr "moderazione commento"
@@ -888,12 +888,12 @@ msgstr "impossibile leggere %s"
 msgid "rsync_command exited %d"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:183
+#: ../IkiWiki/Plugin/search.pm:184
 #, perl-format
 msgid "need Digest::SHA1 to index %s"
 msgstr "è necessario Digest::SHA1 per l'indice di %s"
 
-#: ../IkiWiki/Plugin/search.pm:218
+#: ../IkiWiki/Plugin/search.pm:221
 msgid "search"
 msgstr "cerca"
 
@@ -975,54 +975,54 @@ msgstr "errore di interpretazione alla riga %d: %s"
 msgid "missing id parameter"
 msgstr "parametro id mancante"
 
-#: ../IkiWiki/Plugin/template.pm:41
+#: ../IkiWiki/Plugin/template.pm:47
 #, perl-format
 msgid "template %s not found"
 msgstr "modello %s non trovato"
 
-#: ../IkiWiki/Plugin/template.pm:60
+#: ../IkiWiki/Plugin/template.pm:66
 msgid "failed to process:"
 msgstr "errore nell'elaborazione:"
 
-#: ../IkiWiki/Plugin/teximg.pm:71
+#: ../IkiWiki/Plugin/teximg.pm:72
 msgid "missing tex code"
 msgstr "codice tex mancante"
 
-#: ../IkiWiki/Plugin/teximg.pm:123
+#: ../IkiWiki/Plugin/teximg.pm:124
 msgid "failed to generate image from code"
 msgstr "impossibile generare l'immagine dal codice"
 
-#: ../IkiWiki/Plugin/websetup.pm:91
+#: ../IkiWiki/Plugin/websetup.pm:105
 #, fuzzy, perl-format
 msgid "%s plugin:"
 msgstr "plugin"
 
-#: ../IkiWiki/Plugin/websetup.pm:107
+#: ../IkiWiki/Plugin/websetup.pm:121
 #, fuzzy, perl-format
 msgid "%s plugins"
 msgstr "plugin"
 
-#: ../IkiWiki/Plugin/websetup.pm:121
+#: ../IkiWiki/Plugin/websetup.pm:135
 #, perl-format
 msgid "enable %s?"
 msgstr "abilitare %s?"
 
-#: ../IkiWiki/Plugin/websetup.pm:260
+#: ../IkiWiki/Plugin/websetup.pm:274
 msgid "setup file for this wiki is not known"
 msgstr "il file di setup di questo wiki non è noto"
 
-#: ../IkiWiki/Plugin/websetup.pm:276
+#: ../IkiWiki/Plugin/websetup.pm:290
 msgid "main"
 msgstr "principale"
 
-#: ../IkiWiki/Plugin/websetup.pm:419
+#: ../IkiWiki/Plugin/websetup.pm:433
 msgid ""
 "The configuration changes shown below require a wiki rebuild to take effect."
 msgstr ""
 "Le sottostanti modifiche alla configurazione richiedono la ricompilazione "
 "del wiki."
 
-#: ../IkiWiki/Plugin/websetup.pm:423
+#: ../IkiWiki/Plugin/websetup.pm:437
 msgid ""
 "For the configuration changes shown below to fully take effect, you may need "
 "to rebuild the wiki."
@@ -1030,7 +1030,7 @@ msgstr ""
 "Affinché le sottostanti modifiche alla configurazione abbiano effetto, "
 "occorre ricostruire il wiki."
 
-#: ../IkiWiki/Plugin/websetup.pm:460
+#: ../IkiWiki/Plugin/websetup.pm:474
 #, perl-format
 msgid "Error: %s exited nonzero (%s). Discarding setup changes."
 msgstr "Errore: %s è terminato con errore (%s). Modifiche al setup scartate."
@@ -1101,25 +1101,35 @@ msgstr "ikiwiki: impossibile compilare %s"
 
 #. translators: The first parameter is a filename, and the second
 #. translators: is a (probably not translated) error message.
-#: ../IkiWiki/Setup.pm:19
+#: ../IkiWiki/Setup.pm:23
 #, perl-format
 msgid "cannot read %s: %s"
 msgstr "impossibile leggere %s: %s"
 
+#: ../IkiWiki/Setup.pm:34
+#, fuzzy, perl-format
+msgid "cannot load %s in safe mode"
+msgstr "impossibile leggere %s: %s"
+
+#: ../IkiWiki/Setup.pm:46
+#, fuzzy, perl-format
+msgid "failed to parse %s"
+msgstr "impossibile aggiornare %s"
+
 #: ../IkiWiki/Setup/Automator.pm:34
 msgid "you must enter a wikiname (that contains alphanumerics)"
 msgstr "occorre inserire un wikiname (contente caratteri alfanumerici)"
 
-#: ../IkiWiki/Setup/Automator.pm:82
+#: ../IkiWiki/Setup/Automator.pm:89
 #, perl-format
 msgid "unsupported revision control system %s"
 msgstr "sistema di controllo di revisione %s non supportato"
 
-#: ../IkiWiki/Setup/Automator.pm:108
+#: ../IkiWiki/Setup/Automator.pm:115
 msgid "failed to set up the repository with ikiwiki-makerepo"
 msgstr "impossibile creare un repository tramite ikiwiki-makerepo"
 
-#: ../IkiWiki/Setup/Automator.pm:126
+#: ../IkiWiki/Setup/Automator.pm:134
 #, perl-format
 msgid "** Disabling plugin %s, since it is failing with this message:"
 msgstr ""
@@ -1139,13 +1149,13 @@ msgid "wrapper filename not specified"
 msgstr "nome del file del contenitore non specificato"
 
 #. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:149
+#: ../IkiWiki/Wrapper.pm:159
 #, perl-format
 msgid "failed to compile %s"
 msgstr "errore nel compilare %s"
 
 #. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:169
+#: ../IkiWiki/Wrapper.pm:179
 #, perl-format
 msgid "successfully generated %s"
 msgstr "%s generato con successo"
@@ -1158,19 +1168,24 @@ msgstr "utilizzo: ikiwiki [opzioni] sorgente destinazione"
 msgid "       ikiwiki --setup configfile"
 msgstr "       ikiwiki --setup configfile"
 
-#: ../ikiwiki.in:92
+#: ../ikiwiki.in:95
 msgid "usage: --set var=value"
 msgstr "utilizzo: --set var=valore"
 
-#: ../ikiwiki.in:142
+#: ../ikiwiki.in:102
+#, fuzzy
+msgid "usage: --set-yaml var=value"
+msgstr "utilizzo: --set var=valore"
+
+#: ../ikiwiki.in:156
 msgid "generating wrappers.."
 msgstr "generazione contenitori..."
 
-#: ../ikiwiki.in:205
+#: ../ikiwiki.in:219
 msgid "rebuilding wiki.."
 msgstr "ricostruzione wiki..."
 
-#: ../ikiwiki.in:208
+#: ../ikiwiki.in:222
 msgid "refreshing wiki.."
 msgstr "aggiornamento wiki..."
 
@@ -1178,38 +1193,38 @@ msgstr "aggiornamento wiki..."
 msgid "Discussion"
 msgstr "Discussione"
 
-#: ../IkiWiki.pm:514
+#: ../IkiWiki.pm:530
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr "Occorre specificare l'url del wiki tramite --url quando si usa --cgi"
 
-#: ../IkiWiki.pm:560
+#: ../IkiWiki.pm:576
 msgid "cannot use multiple rcs plugins"
 msgstr "impossibile usare più plugin rcs"
 
-#: ../IkiWiki.pm:589
+#: ../IkiWiki.pm:605
 #, perl-format
 msgid "failed to load external plugin needed for %s plugin: %s"
 msgstr "impossibile caricare il plugin esterno per il plugin %s: %s"
 
-#: ../IkiWiki.pm:1262
+#: ../IkiWiki.pm:1278
 #, perl-format
 msgid "preprocessing loop detected on %s at depth %i"
 msgstr "ciclo del preprocessore individuato su %s alla profondità %i"
 
-#: ../IkiWiki.pm:1877
+#: ../IkiWiki.pm:1901
 msgid "yes"
 msgstr "sì"
 
-#: ../IkiWiki.pm:2020
+#: ../IkiWiki.pm:2044
 msgid "Sort::Naturally needed for title_natural sort"
 msgstr "Sort::Naturally è richiesto per l'ordinamento title_natural"
 
-#: ../IkiWiki.pm:2031
+#: ../IkiWiki.pm:2055
 #, perl-format
 msgid "unknown sort type %s"
 msgstr "ordinamento %s sconosciuto"
 
-#: ../IkiWiki.pm:2050
+#: ../IkiWiki.pm:2074
 #, perl-format
 msgid "cannot match pages: %s"
 msgstr "impossibile trovare pagine corrispondenti: %s"
diff --git a/po/pl.po b/po/pl.po
index 77e1537f4..9fb3cacc0 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: 2010-03-02 22:18-0500\n"
+"POT-Creation-Date: 2010-04-03 14:18-0400\n"
 "PO-Revision-Date: 2007-04-27 22:05+0200\n"
 "Last-Translator: Pawel Tecza \n"
 "Language-Team: Debian L10n Polish \n"
@@ -57,7 +57,7 @@ msgstr "Preferencje zapisane."
 msgid "You are banned."
 msgstr "Twój dostęp został zabroniony przez administratora."
 
-#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280
+#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296
 msgid "Error"
 msgstr "Błąd"
 
@@ -139,7 +139,7 @@ msgstr "tworzenie nowej strony %s"
 msgid "deleting bucket.."
 msgstr ""
 
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230
 msgid "done"
 msgstr "gotowe"
 
@@ -248,7 +248,7 @@ msgstr ""
 msgid "Added a comment: %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256
+#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270
 msgid "you are not logged in as an admin"
 msgstr ""
 
@@ -520,7 +520,7 @@ msgstr "Kopie lustrzane"
 msgid "Mirror"
 msgstr "Kopia lustrzana"
 
-#: ../IkiWiki/Plugin/moderatedcomments.pm:42
+#: ../IkiWiki/Plugin/moderatedcomments.pm:57
 msgid "comment needs moderation"
 msgstr ""
 
@@ -898,12 +898,12 @@ msgstr "awaria w trakcie odczytu %s: %s"
 msgid "rsync_command exited %d"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:183
+#: ../IkiWiki/Plugin/search.pm:184
 #, perl-format
 msgid "need Digest::SHA1 to index %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:218
+#: ../IkiWiki/Plugin/search.pm:221
 msgid "search"
 msgstr ""
 
@@ -995,61 +995,61 @@ msgstr "awaria w trakcie przetwarzania linii %d: %s"
 msgid "missing id parameter"
 msgstr "brakujący parametr id"
 
-#: ../IkiWiki/Plugin/template.pm:41
+#: ../IkiWiki/Plugin/template.pm:47
 #, perl-format
 msgid "template %s not found"
 msgstr "nieznaleziony szablon %s"
 
-#: ../IkiWiki/Plugin/template.pm:60
+#: ../IkiWiki/Plugin/template.pm:66
 #, fuzzy
 msgid "failed to process:"
 msgstr "awaria w trakcie przetwarzania:"
 
-#: ../IkiWiki/Plugin/teximg.pm:71
+#: ../IkiWiki/Plugin/teximg.pm:72
 #, fuzzy
 msgid "missing tex code"
 msgstr "brakujące wartości"
 
-#: ../IkiWiki/Plugin/teximg.pm:123
+#: ../IkiWiki/Plugin/teximg.pm:124
 #, fuzzy
 msgid "failed to generate image from code"
 msgstr "awaria w trakcie zmiany rozmiaru: %s"
 
-#: ../IkiWiki/Plugin/websetup.pm:91
+#: ../IkiWiki/Plugin/websetup.pm:105
 #, perl-format
 msgid "%s plugin:"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:107
+#: ../IkiWiki/Plugin/websetup.pm:121
 #, perl-format
 msgid "%s plugins"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:121
+#: ../IkiWiki/Plugin/websetup.pm:135
 #, perl-format
 msgid "enable %s?"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:260
+#: ../IkiWiki/Plugin/websetup.pm:274
 msgid "setup file for this wiki is not known"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:276
+#: ../IkiWiki/Plugin/websetup.pm:290
 msgid "main"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:419
+#: ../IkiWiki/Plugin/websetup.pm:433
 msgid ""
 "The configuration changes shown below require a wiki rebuild to take effect."
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:423
+#: ../IkiWiki/Plugin/websetup.pm:437
 msgid ""
 "For the configuration changes shown below to fully take effect, you may need "
 "to rebuild the wiki."
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:460
+#: ../IkiWiki/Plugin/websetup.pm:474
 #, perl-format
 msgid "Error: %s exited nonzero (%s). Discarding setup changes."
 msgstr ""
@@ -1118,25 +1118,35 @@ msgstr "ikiwiki: awaria w trakcie tworzenia %s"
 
 #. translators: The first parameter is a filename, and the second
 #. translators: is a (probably not translated) error message.
-#: ../IkiWiki/Setup.pm:19
+#: ../IkiWiki/Setup.pm:23
 #, perl-format
 msgid "cannot read %s: %s"
 msgstr "awaria w trakcie odczytu %s: %s"
 
+#: ../IkiWiki/Setup.pm:34
+#, fuzzy, perl-format
+msgid "cannot load %s in safe mode"
+msgstr "awaria w trakcie odczytu %s: %s"
+
+#: ../IkiWiki/Setup.pm:46
+#, fuzzy, perl-format
+msgid "failed to parse %s"
+msgstr "awaria w trakcie kompilowania %s"
+
 #: ../IkiWiki/Setup/Automator.pm:34
 msgid "you must enter a wikiname (that contains alphanumerics)"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:82
+#: ../IkiWiki/Setup/Automator.pm:89
 #, perl-format
 msgid "unsupported revision control system %s"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:108
+#: ../IkiWiki/Setup/Automator.pm:115
 msgid "failed to set up the repository with ikiwiki-makerepo"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:126
+#: ../IkiWiki/Setup/Automator.pm:134
 #, perl-format
 msgid "** Disabling plugin %s, since it is failing with this message:"
 msgstr ""
@@ -1155,13 +1165,13 @@ msgid "wrapper filename not specified"
 msgstr "nieokreślona nazwa pliku osłony"
 
 #. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:149
+#: ../IkiWiki/Wrapper.pm:159
 #, perl-format
 msgid "failed to compile %s"
 msgstr "awaria w trakcie kompilowania %s"
 
 #. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:169
+#: ../IkiWiki/Wrapper.pm:179
 #, perl-format
 msgid "successfully generated %s"
 msgstr "pomyślnie utworzono %s"
@@ -1174,19 +1184,23 @@ msgstr "użycie: ikiwiki [parametry] źródło cel"
 msgid "       ikiwiki --setup configfile"
 msgstr ""
 
-#: ../ikiwiki.in:92
+#: ../ikiwiki.in:95
 msgid "usage: --set var=value"
 msgstr ""
 
-#: ../ikiwiki.in:142
+#: ../ikiwiki.in:102
+msgid "usage: --set-yaml var=value"
+msgstr ""
+
+#: ../ikiwiki.in:156
 msgid "generating wrappers.."
 msgstr "tworzenie osłon..."
 
-#: ../ikiwiki.in:205
+#: ../ikiwiki.in:219
 msgid "rebuilding wiki.."
 msgstr "przebudowywanie wiki..."
 
-#: ../ikiwiki.in:208
+#: ../ikiwiki.in:222
 msgid "refreshing wiki.."
 msgstr "odświeżanie wiki..."
 
@@ -1194,40 +1208,40 @@ msgstr "odświeżanie wiki..."
 msgid "Discussion"
 msgstr "Dyskusja"
 
-#: ../IkiWiki.pm:514
+#: ../IkiWiki.pm:530
 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:560
+#: ../IkiWiki.pm:576
 msgid "cannot use multiple rcs plugins"
 msgstr ""
 
-#: ../IkiWiki.pm:589
+#: ../IkiWiki.pm:605
 #, perl-format
 msgid "failed to load external plugin needed for %s plugin: %s"
 msgstr ""
 
-#: ../IkiWiki.pm:1262
+#: ../IkiWiki.pm:1278
 #, fuzzy, perl-format
 msgid "preprocessing loop detected on %s at depth %i"
 msgstr "polecenie preprocesora %s wykryte w %s na głębokości %i"
 
-#: ../IkiWiki.pm:1877
+#: ../IkiWiki.pm:1901
 msgid "yes"
 msgstr ""
 
-#: ../IkiWiki.pm:2020
+#: ../IkiWiki.pm:2044
 msgid "Sort::Naturally needed for title_natural sort"
 msgstr ""
 
-#: ../IkiWiki.pm:2031
+#: ../IkiWiki.pm:2055
 #, perl-format
 msgid "unknown sort type %s"
 msgstr "nieznany sposób sortowania %s"
 
-#: ../IkiWiki.pm:2050
+#: ../IkiWiki.pm:2074
 #, fuzzy, perl-format
 msgid "cannot match pages: %s"
 msgstr "awaria w trakcie odczytu %s: %s"
diff --git a/po/sv.po b/po/sv.po
index 20a8020c1..0d4c6202e 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: 2010-03-02 22:18-0500\n"
+"POT-Creation-Date: 2010-04-03 14:18-0400\n"
 "PO-Revision-Date: 2007-01-10 23:47+0100\n"
 "Last-Translator: Daniel Nylander \n"
 "Language-Team: Swedish \n"
@@ -54,7 +54,7 @@ msgstr "Inställningar sparades."
 msgid "You are banned."
 msgstr "Du är bannlyst."
 
-#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280
+#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296
 msgid "Error"
 msgstr "Fel"
 
@@ -136,7 +136,7 @@ msgstr "skapar nya sidan %s"
 msgid "deleting bucket.."
 msgstr ""
 
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230
 msgid "done"
 msgstr "klar"
 
@@ -245,7 +245,7 @@ msgstr ""
 msgid "Added a comment: %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256
+#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270
 msgid "you are not logged in as an admin"
 msgstr ""
 
@@ -513,7 +513,7 @@ msgstr "Speglar"
 msgid "Mirror"
 msgstr "Spegel"
 
-#: ../IkiWiki/Plugin/moderatedcomments.pm:42
+#: ../IkiWiki/Plugin/moderatedcomments.pm:57
 msgid "comment needs moderation"
 msgstr ""
 
@@ -888,12 +888,12 @@ msgstr "misslyckades med att skriva %s: %s"
 msgid "rsync_command exited %d"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:183
+#: ../IkiWiki/Plugin/search.pm:184
 #, perl-format
 msgid "need Digest::SHA1 to index %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:218
+#: ../IkiWiki/Plugin/search.pm:221
 msgid "search"
 msgstr ""
 
@@ -983,60 +983,60 @@ msgstr "misslyckades med att skriva %s: %s"
 msgid "missing id parameter"
 msgstr "mall saknar id-parameter"
 
-#: ../IkiWiki/Plugin/template.pm:41
+#: ../IkiWiki/Plugin/template.pm:47
 #, perl-format
 msgid "template %s not found"
 msgstr "mallen %s hittades inte"
 
-#: ../IkiWiki/Plugin/template.pm:60
+#: ../IkiWiki/Plugin/template.pm:66
 #, fuzzy
 msgid "failed to process:"
 msgstr "misslyckades med att behandla mall:"
 
-#: ../IkiWiki/Plugin/teximg.pm:71
+#: ../IkiWiki/Plugin/teximg.pm:72
 msgid "missing tex code"
 msgstr ""
 
-#: ../IkiWiki/Plugin/teximg.pm:123
+#: ../IkiWiki/Plugin/teximg.pm:124
 #, fuzzy
 msgid "failed to generate image from code"
 msgstr "misslyckades med att skriva %s: %s"
 
-#: ../IkiWiki/Plugin/websetup.pm:91
+#: ../IkiWiki/Plugin/websetup.pm:105
 #, perl-format
 msgid "%s plugin:"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:107
+#: ../IkiWiki/Plugin/websetup.pm:121
 #, perl-format
 msgid "%s plugins"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:121
+#: ../IkiWiki/Plugin/websetup.pm:135
 #, perl-format
 msgid "enable %s?"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:260
+#: ../IkiWiki/Plugin/websetup.pm:274
 msgid "setup file for this wiki is not known"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:276
+#: ../IkiWiki/Plugin/websetup.pm:290
 msgid "main"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:419
+#: ../IkiWiki/Plugin/websetup.pm:433
 msgid ""
 "The configuration changes shown below require a wiki rebuild to take effect."
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:423
+#: ../IkiWiki/Plugin/websetup.pm:437
 msgid ""
 "For the configuration changes shown below to fully take effect, you may need "
 "to rebuild the wiki."
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:460
+#: ../IkiWiki/Plugin/websetup.pm:474
 #, perl-format
 msgid "Error: %s exited nonzero (%s). Discarding setup changes."
 msgstr ""
@@ -1105,25 +1105,35 @@ msgstr "ikiwiki: kan inte rita upp %s"
 
 #. translators: The first parameter is a filename, and the second
 #. translators: is a (probably not translated) error message.
-#: ../IkiWiki/Setup.pm:19
+#: ../IkiWiki/Setup.pm:23
 #, perl-format
 msgid "cannot read %s: %s"
 msgstr "kan inte läsa %s: %s"
 
+#: ../IkiWiki/Setup.pm:34
+#, fuzzy, perl-format
+msgid "cannot load %s in safe mode"
+msgstr "kan inte läsa %s: %s"
+
+#: ../IkiWiki/Setup.pm:46
+#, fuzzy, perl-format
+msgid "failed to parse %s"
+msgstr "misslyckades med att kompilera %s"
+
 #: ../IkiWiki/Setup/Automator.pm:34
 msgid "you must enter a wikiname (that contains alphanumerics)"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:82
+#: ../IkiWiki/Setup/Automator.pm:89
 #, perl-format
 msgid "unsupported revision control system %s"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:108
+#: ../IkiWiki/Setup/Automator.pm:115
 msgid "failed to set up the repository with ikiwiki-makerepo"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:126
+#: ../IkiWiki/Setup/Automator.pm:134
 #, perl-format
 msgid "** Disabling plugin %s, since it is failing with this message:"
 msgstr ""
@@ -1142,13 +1152,13 @@ msgid "wrapper filename not specified"
 msgstr "filnamn för wrapper har inte angivits"
 
 #. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:149
+#: ../IkiWiki/Wrapper.pm:159
 #, perl-format
 msgid "failed to compile %s"
 msgstr "misslyckades med att kompilera %s"
 
 #. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:169
+#: ../IkiWiki/Wrapper.pm:179
 #, perl-format
 msgid "successfully generated %s"
 msgstr "generering av %s lyckades"
@@ -1161,19 +1171,23 @@ msgstr "användning: ikiwiki [flaggor] källa mål"
 msgid "       ikiwiki --setup configfile"
 msgstr ""
 
-#: ../ikiwiki.in:92
+#: ../ikiwiki.in:95
 msgid "usage: --set var=value"
 msgstr ""
 
-#: ../ikiwiki.in:142
+#: ../ikiwiki.in:102
+msgid "usage: --set-yaml var=value"
+msgstr ""
+
+#: ../ikiwiki.in:156
 msgid "generating wrappers.."
 msgstr "genererar wrappers.."
 
-#: ../ikiwiki.in:205
+#: ../ikiwiki.in:219
 msgid "rebuilding wiki.."
 msgstr "bygger om wiki.."
 
-#: ../ikiwiki.in:208
+#: ../ikiwiki.in:222
 msgid "refreshing wiki.."
 msgstr "uppdaterar wiki.."
 
@@ -1181,38 +1195,38 @@ msgstr "uppdaterar wiki.."
 msgid "Discussion"
 msgstr "Diskussion"
 
-#: ../IkiWiki.pm:514
+#: ../IkiWiki.pm:530
 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:560
+#: ../IkiWiki.pm:576
 msgid "cannot use multiple rcs plugins"
 msgstr ""
 
-#: ../IkiWiki.pm:589
+#: ../IkiWiki.pm:605
 #, perl-format
 msgid "failed to load external plugin needed for %s plugin: %s"
 msgstr ""
 
-#: ../IkiWiki.pm:1262
+#: ../IkiWiki.pm:1278
 #, fuzzy, perl-format
 msgid "preprocessing loop detected on %s at depth %i"
 msgstr "%s förbehandlingsslinga detekterades på %s, djup %i"
 
-#: ../IkiWiki.pm:1877
+#: ../IkiWiki.pm:1901
 msgid "yes"
 msgstr ""
 
-#: ../IkiWiki.pm:2020
+#: ../IkiWiki.pm:2044
 msgid "Sort::Naturally needed for title_natural sort"
 msgstr ""
 
-#: ../IkiWiki.pm:2031
+#: ../IkiWiki.pm:2055
 #, perl-format
 msgid "unknown sort type %s"
 msgstr "okänd sorteringstyp %s"
 
-#: ../IkiWiki.pm:2050
+#: ../IkiWiki.pm:2074
 #, fuzzy, perl-format
 msgid "cannot match pages: %s"
 msgstr "kan inte läsa %s: %s"
diff --git a/po/tr.po b/po/tr.po
index b3742ca36..b59f5e941 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: ikiwiki 3.20091031\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-02 22:18-0500\n"
+"POT-Creation-Date: 2010-04-03 14:18-0400\n"
 "PO-Revision-Date: 2009-11-08 03:04+0200\n"
 "Last-Translator: Recai Oktaş \n"
 "Language-Team: Turkish \n"
@@ -51,7 +51,7 @@ msgstr "Tercihler kaydedildi."
 msgid "You are banned."
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280
+#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296
 msgid "Error"
 msgstr "Hata"
 
@@ -132,7 +132,7 @@ msgstr "%s için yeni sayfa oluşturuluyor"
 msgid "deleting bucket.."
 msgstr ""
 
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230
 msgid "done"
 msgstr ""
 
@@ -238,7 +238,7 @@ msgstr ""
 msgid "Added a comment: %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256
+#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270
 msgid "you are not logged in as an admin"
 msgstr ""
 
@@ -490,7 +490,7 @@ msgstr ""
 msgid "Mirror"
 msgstr ""
 
-#: ../IkiWiki/Plugin/moderatedcomments.pm:42
+#: ../IkiWiki/Plugin/moderatedcomments.pm:57
 msgid "comment needs moderation"
 msgstr ""
 
@@ -860,12 +860,12 @@ msgstr ""
 msgid "rsync_command exited %d"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:183
+#: ../IkiWiki/Plugin/search.pm:184
 #, perl-format
 msgid "need Digest::SHA1 to index %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:218
+#: ../IkiWiki/Plugin/search.pm:221
 msgid "search"
 msgstr ""
 
@@ -947,58 +947,58 @@ msgstr ""
 msgid "missing id parameter"
 msgstr ""
 
-#: ../IkiWiki/Plugin/template.pm:41
+#: ../IkiWiki/Plugin/template.pm:47
 #, perl-format
 msgid "template %s not found"
 msgstr ""
 
-#: ../IkiWiki/Plugin/template.pm:60
+#: ../IkiWiki/Plugin/template.pm:66
 msgid "failed to process:"
 msgstr ""
 
-#: ../IkiWiki/Plugin/teximg.pm:71
+#: ../IkiWiki/Plugin/teximg.pm:72
 msgid "missing tex code"
 msgstr ""
 
-#: ../IkiWiki/Plugin/teximg.pm:123
+#: ../IkiWiki/Plugin/teximg.pm:124
 msgid "failed to generate image from code"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:91
+#: ../IkiWiki/Plugin/websetup.pm:105
 #, perl-format
 msgid "%s plugin:"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:107
+#: ../IkiWiki/Plugin/websetup.pm:121
 #, perl-format
 msgid "%s plugins"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:121
+#: ../IkiWiki/Plugin/websetup.pm:135
 #, perl-format
 msgid "enable %s?"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:260
+#: ../IkiWiki/Plugin/websetup.pm:274
 msgid "setup file for this wiki is not known"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:276
+#: ../IkiWiki/Plugin/websetup.pm:290
 msgid "main"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:419
+#: ../IkiWiki/Plugin/websetup.pm:433
 msgid ""
 "The configuration changes shown below require a wiki rebuild to take effect."
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:423
+#: ../IkiWiki/Plugin/websetup.pm:437
 msgid ""
 "For the configuration changes shown below to fully take effect, you may need "
 "to rebuild the wiki."
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:460
+#: ../IkiWiki/Plugin/websetup.pm:474
 #, perl-format
 msgid "Error: %s exited nonzero (%s). Discarding setup changes."
 msgstr ""
@@ -1067,25 +1067,35 @@ msgstr ""
 
 #. translators: The first parameter is a filename, and the second
 #. translators: is a (probably not translated) error message.
-#: ../IkiWiki/Setup.pm:19
+#: ../IkiWiki/Setup.pm:23
 #, perl-format
 msgid "cannot read %s: %s"
 msgstr ""
 
+#: ../IkiWiki/Setup.pm:34
+#, perl-format
+msgid "cannot load %s in safe mode"
+msgstr ""
+
+#: ../IkiWiki/Setup.pm:46
+#, perl-format
+msgid "failed to parse %s"
+msgstr ""
+
 #: ../IkiWiki/Setup/Automator.pm:34
 msgid "you must enter a wikiname (that contains alphanumerics)"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:82
+#: ../IkiWiki/Setup/Automator.pm:89
 #, perl-format
 msgid "unsupported revision control system %s"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:108
+#: ../IkiWiki/Setup/Automator.pm:115
 msgid "failed to set up the repository with ikiwiki-makerepo"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:126
+#: ../IkiWiki/Setup/Automator.pm:134
 #, perl-format
 msgid "** Disabling plugin %s, since it is failing with this message:"
 msgstr ""
@@ -1104,13 +1114,13 @@ msgid "wrapper filename not specified"
 msgstr ""
 
 #. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:149
+#: ../IkiWiki/Wrapper.pm:159
 #, perl-format
 msgid "failed to compile %s"
 msgstr ""
 
 #. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:169
+#: ../IkiWiki/Wrapper.pm:179
 #, perl-format
 msgid "successfully generated %s"
 msgstr ""
@@ -1123,19 +1133,23 @@ msgstr ""
 msgid "       ikiwiki --setup configfile"
 msgstr ""
 
-#: ../ikiwiki.in:92
+#: ../ikiwiki.in:95
 msgid "usage: --set var=value"
 msgstr ""
 
-#: ../ikiwiki.in:142
+#: ../ikiwiki.in:102
+msgid "usage: --set-yaml var=value"
+msgstr ""
+
+#: ../ikiwiki.in:156
 msgid "generating wrappers.."
 msgstr ""
 
-#: ../ikiwiki.in:205
+#: ../ikiwiki.in:219
 msgid "rebuilding wiki.."
 msgstr ""
 
-#: ../ikiwiki.in:208
+#: ../ikiwiki.in:222
 msgid "refreshing wiki.."
 msgstr ""
 
@@ -1143,38 +1157,38 @@ msgstr ""
 msgid "Discussion"
 msgstr ""
 
-#: ../IkiWiki.pm:514
+#: ../IkiWiki.pm:530
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr ""
 
-#: ../IkiWiki.pm:560
+#: ../IkiWiki.pm:576
 msgid "cannot use multiple rcs plugins"
 msgstr ""
 
-#: ../IkiWiki.pm:589
+#: ../IkiWiki.pm:605
 #, perl-format
 msgid "failed to load external plugin needed for %s plugin: %s"
 msgstr ""
 
-#: ../IkiWiki.pm:1262
+#: ../IkiWiki.pm:1278
 #, perl-format
 msgid "preprocessing loop detected on %s at depth %i"
 msgstr ""
 
-#: ../IkiWiki.pm:1877
+#: ../IkiWiki.pm:1901
 msgid "yes"
 msgstr ""
 
-#: ../IkiWiki.pm:2020
+#: ../IkiWiki.pm:2044
 msgid "Sort::Naturally needed for title_natural sort"
 msgstr ""
 
-#: ../IkiWiki.pm:2031
+#: ../IkiWiki.pm:2055
 #, perl-format
 msgid "unknown sort type %s"
 msgstr ""
 
-#: ../IkiWiki.pm:2050
+#: ../IkiWiki.pm:2074
 #, perl-format
 msgid "cannot match pages: %s"
 msgstr ""
diff --git a/po/vi.po b/po/vi.po
index cfc7184ef..5f968ccb3 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: 2010-03-02 22:18-0500\n"
+"POT-Creation-Date: 2010-04-03 14:18-0400\n"
 "PO-Revision-Date: 2007-01-13 15:31+1030\n"
 "Last-Translator: Clytie Siddall \n"
 "Language-Team: Vietnamese \n"
@@ -55,7 +55,7 @@ msgstr "Tùy thích đã được lưu."
 msgid "You are banned."
 msgstr "Bạn bị cấm ra."
 
-#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1280
+#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296
 msgid "Error"
 msgstr "Lỗi"
 
@@ -137,7 +137,7 @@ msgstr "đang tạo trang mới %s"
 msgid "deleting bucket.."
 msgstr ""
 
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:216
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230
 msgid "done"
 msgstr "xong"
 
@@ -246,7 +246,7 @@ msgstr ""
 msgid "Added a comment: %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:256
+#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270
 msgid "you are not logged in as an admin"
 msgstr ""
 
@@ -513,7 +513,7 @@ msgstr "Nhân bản"
 msgid "Mirror"
 msgstr "Nhân bản"
 
-#: ../IkiWiki/Plugin/moderatedcomments.pm:42
+#: ../IkiWiki/Plugin/moderatedcomments.pm:57
 msgid "comment needs moderation"
 msgstr ""
 
@@ -888,12 +888,12 @@ msgstr "lỗi ghi %s: %s"
 msgid "rsync_command exited %d"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:183
+#: ../IkiWiki/Plugin/search.pm:184
 #, perl-format
 msgid "need Digest::SHA1 to index %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/search.pm:218
+#: ../IkiWiki/Plugin/search.pm:221
 msgid "search"
 msgstr ""
 
@@ -983,60 +983,60 @@ msgstr "lỗi ghi %s: %s"
 msgid "missing id parameter"
 msgstr "mẫu thiếu tham số id"
 
-#: ../IkiWiki/Plugin/template.pm:41
+#: ../IkiWiki/Plugin/template.pm:47
 #, perl-format
 msgid "template %s not found"
 msgstr "không tìm thấy mẫu %s"
 
-#: ../IkiWiki/Plugin/template.pm:60
+#: ../IkiWiki/Plugin/template.pm:66
 #, fuzzy
 msgid "failed to process:"
 msgstr "mẫu không xử lý được:"
 
-#: ../IkiWiki/Plugin/teximg.pm:71
+#: ../IkiWiki/Plugin/teximg.pm:72
 msgid "missing tex code"
 msgstr ""
 
-#: ../IkiWiki/Plugin/teximg.pm:123
+#: ../IkiWiki/Plugin/teximg.pm:124
 #, fuzzy
 msgid "failed to generate image from code"
 msgstr "lỗi ghi %s: %s"
 
-#: ../IkiWiki/Plugin/websetup.pm:91
+#: ../IkiWiki/Plugin/websetup.pm:105
 #, perl-format
 msgid "%s plugin:"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:107
+#: ../IkiWiki/Plugin/websetup.pm:121
 #, perl-format
 msgid "%s plugins"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:121
+#: ../IkiWiki/Plugin/websetup.pm:135
 #, perl-format
 msgid "enable %s?"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:260
+#: ../IkiWiki/Plugin/websetup.pm:274
 msgid "setup file for this wiki is not known"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:276
+#: ../IkiWiki/Plugin/websetup.pm:290
 msgid "main"
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:419
+#: ../IkiWiki/Plugin/websetup.pm:433
 msgid ""
 "The configuration changes shown below require a wiki rebuild to take effect."
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:423
+#: ../IkiWiki/Plugin/websetup.pm:437
 msgid ""
 "For the configuration changes shown below to fully take effect, you may need "
 "to rebuild the wiki."
 msgstr ""
 
-#: ../IkiWiki/Plugin/websetup.pm:460
+#: ../IkiWiki/Plugin/websetup.pm:474
 #, perl-format
 msgid "Error: %s exited nonzero (%s). Discarding setup changes."
 msgstr ""
@@ -1105,25 +1105,35 @@ msgstr "ikiwiki: không thể vẽ %s"
 
 #. translators: The first parameter is a filename, and the second
 #. translators: is a (probably not translated) error message.
-#: ../IkiWiki/Setup.pm:19
+#: ../IkiWiki/Setup.pm:23
 #, perl-format
 msgid "cannot read %s: %s"
 msgstr "không thể đọc %s: %s"
 
+#: ../IkiWiki/Setup.pm:34
+#, fuzzy, perl-format
+msgid "cannot load %s in safe mode"
+msgstr "không thể đọc %s: %s"
+
+#: ../IkiWiki/Setup.pm:46
+#, fuzzy, perl-format
+msgid "failed to parse %s"
+msgstr "lỗi biên dịch %s"
+
 #: ../IkiWiki/Setup/Automator.pm:34
 msgid "you must enter a wikiname (that contains alphanumerics)"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:82
+#: ../IkiWiki/Setup/Automator.pm:89
 #, perl-format
 msgid "unsupported revision control system %s"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:108
+#: ../IkiWiki/Setup/Automator.pm:115
 msgid "failed to set up the repository with ikiwiki-makerepo"
 msgstr ""
 
-#: ../IkiWiki/Setup/Automator.pm:126
+#: ../IkiWiki/Setup/Automator.pm:134
 #, perl-format
 msgid "** Disabling plugin %s, since it is failing with this message:"
 msgstr ""
@@ -1142,13 +1152,13 @@ msgid "wrapper filename not specified"
 msgstr "chưa xác định tên tập tin bộ bao bọc"
 
 #. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:149
+#: ../IkiWiki/Wrapper.pm:159
 #, perl-format
 msgid "failed to compile %s"
 msgstr "lỗi biên dịch %s"
 
 #. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:169
+#: ../IkiWiki/Wrapper.pm:179
 #, perl-format
 msgid "successfully generated %s"
 msgstr "%s đã được tạo ra"
@@ -1161,19 +1171,23 @@ msgstr "cách sử dụng: ikiwiki [tùy chọn] nguồn đích"
 msgid "       ikiwiki --setup configfile"
 msgstr ""
 
-#: ../ikiwiki.in:92
+#: ../ikiwiki.in:95
 msgid "usage: --set var=value"
 msgstr ""
 
-#: ../ikiwiki.in:142
+#: ../ikiwiki.in:102
+msgid "usage: --set-yaml var=value"
+msgstr ""
+
+#: ../ikiwiki.in:156
 msgid "generating wrappers.."
 msgstr "đang tạo ra các bộ bao bọc.."
 
-#: ../ikiwiki.in:205
+#: ../ikiwiki.in:219
 msgid "rebuilding wiki.."
 msgstr "đang xây dựng lại wiki.."
 
-#: ../ikiwiki.in:208
+#: ../ikiwiki.in:222
 msgid "refreshing wiki.."
 msgstr "đang làm tươi wiki.."
 
@@ -1181,38 +1195,38 @@ msgstr "đang làm tươi wiki.."
 msgid "Discussion"
 msgstr "Thảo luận"
 
-#: ../IkiWiki.pm:514
+#: ../IkiWiki.pm:530
 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:560
+#: ../IkiWiki.pm:576
 msgid "cannot use multiple rcs plugins"
 msgstr ""
 
-#: ../IkiWiki.pm:589
+#: ../IkiWiki.pm:605
 #, perl-format
 msgid "failed to load external plugin needed for %s plugin: %s"
 msgstr ""
 
-#: ../IkiWiki.pm:1262
+#: ../IkiWiki.pm:1278
 #, fuzzy, perl-format
 msgid "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"
 
-#: ../IkiWiki.pm:1877
+#: ../IkiWiki.pm:1901
 msgid "yes"
 msgstr ""
 
-#: ../IkiWiki.pm:2020
+#: ../IkiWiki.pm:2044
 msgid "Sort::Naturally needed for title_natural sort"
 msgstr ""
 
-#: ../IkiWiki.pm:2031
+#: ../IkiWiki.pm:2055
 #, perl-format
 msgid "unknown sort type %s"
 msgstr "kiểu sắp xếp không rõ %s"
 
-#: ../IkiWiki.pm:2050
+#: ../IkiWiki.pm:2074
 #, fuzzy, perl-format
 msgid "cannot match pages: %s"
 msgstr "không thể đọc %s: %s"
-- 
cgit v1.2.3


From af2bf285155ea4fc92932ba0b8e9becef57c69e8 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sat, 3 Apr 2010 15:15:25 -0400
Subject: add news item for ikiwiki 3.20100403

---
 doc/news/version_3.20100102.3.mdwn | 21 ---------------------
 doc/news/version_3.20100403.mdwn   | 30 ++++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 21 deletions(-)
 delete mode 100644 doc/news/version_3.20100102.3.mdwn
 create mode 100644 doc/news/version_3.20100403.mdwn

diff --git a/doc/news/version_3.20100102.3.mdwn b/doc/news/version_3.20100102.3.mdwn
deleted file mode 100644
index b8f61978c..000000000
--- a/doc/news/version_3.20100102.3.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-ikiwiki 3.20100102.3 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   Happy palindrome day!
-
-   * pagestats: Add show parameter. Closes: #[562129](http://bugs.debian.org/562129) (David Paleino)
-   * toc: Add startlevel parameter. (kerravonsen)
-   * Remove example ikiwiki setup file from the Debian package. This
-     re-enables linking to /usr/share/ikiwiki/examples which has the
-     example sites also used by auto-blog.setup. The example setup file
-     can be generated at any time using ikiwiki --dumpsetup so I do
-     not see a reason to ship it. Closes: #[562183](http://bugs.debian.org/562183)
-   * Use env hack in python scripts.
-   * comments: Add a checksum to the name of comment pages, to
-     avoid merge conflicts when comments are posted to two branches of a
-     site.
-   * linkmap: Add option to omit disconnected pages from the map.
-   * inline: Fix bug that limited displayed pages when feedshow was
-     specified w/o show.
-   * Fix several places that did not properly handle capitalization of
-     the discussionpage setting. Specifically, fixes discussion actions
-     on discussion pages, and unbreaks the opendiscussion plugin."""]]
diff --git a/doc/news/version_3.20100403.mdwn b/doc/news/version_3.20100403.mdwn
new file mode 100644
index 000000000..86d6a0f37
--- /dev/null
+++ b/doc/news/version_3.20100403.mdwn
@@ -0,0 +1,30 @@
+ikiwiki 3.20100403 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+   * websetup: Add websetup\_unsafe to allow marking other settings
+     as unsafe.
+   * Improve openid url munging; do not display anchors and cgi parameters,
+     as used by yahoo and google urls.
+   * Add complete German basewiki and directives translation done by
+     Sebastian Kuhnert.
+   * Add a include setting, which can be used to make ikiwiki process
+     wiki source files, such as .htaccess, that would normally be skipped
+     for security or other reasons. Closes: #[447267](http://bugs.debian.org/447267)
+     (Thanks to Aaron Wilson for the original patch.)
+   * Add support for setup files written in YAML.
+   * Add --set-yaml switch for setting more complex config file options.
+   * filecheck: Fix bugs that prevented the pagespecs from matching when
+     not called by attachment plugin.
+   * Fix incorrect influence info returned by a failing link() pagespec,
+     that could lead to bad dependency handling in certian situations.
+   * Add preprocessed 'use lib' line to ikiwiki-transition and ikiwiki-calendar
+     if necessary for unusual install.
+   * auto-blog.setup: Set tagbase by default, since most bloggers will want it.
+   * Allow wrappers to be built using tcc. (Workaround #452876)
+   * openid: Use Openid Simple Registration or OpenID Attribute Exchange
+     to get the user's email address and username. (Neither is yet
+     used, but they are available in the session object now.)
+   * page.tmpl: Add Cache-Control must-revalidate to ensure that users
+     (especially of Firefox) see fresh page content.
+   * htmlscrubber: Allow colons in urls after '?'
+   * template: Search for templates in the templatedir, if they are not
+     found as pages in the wiki."""]]
\ No newline at end of file
-- 
cgit v1.2.3


From 195943e588b8c7b6a3a43d10404d2d40a503c1d5 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sat, 3 Apr 2010 16:07:32 -0400
Subject: slightly more consistent capitalisation of ikiwiki

For a while, I was avoiding capitalizing ikiwiki at the beginning of a
sentence. I now think that's a bad idea (unless explicitly referring to
the `ikiwiki` command). Still, I don't go all the way and always cap it,
as a proper noun. That would make the logo look bad. ;)

I also tend to avoid capping it as IkiWiki, except when referring to the
perl internals, which do use that capitalization. (Too late to change
that.) However, it's also reasonable to do so in a WikiLink, as a nod to
historical camelcase wikis.
---
 debian/control                     |  6 +++---
 doc/download.mdwn                  |  2 +-
 doc/features.mdwn                  | 12 ++++++------
 doc/forum/speeding_up_ikiwiki.mdwn |  2 +-
 doc/index.mdwn                     |  2 +-
 5 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/debian/control b/debian/control
index 24c2c96a5..d7ce9a178 100644
--- a/debian/control
+++ b/debian/control
@@ -42,17 +42,17 @@ Conflicts: ikiwiki-plugin-table
 Replaces: ikiwiki-plugin-table
 Provides: ikiwiki-plugin-table
 Description: a wiki compiler
- ikiwiki converts a directory full of wiki pages into HTML pages suitable
+ Ikiwiki converts a directory full of wiki pages into HTML pages suitable
  for publishing on a website. Unlike many wikis, ikiwiki does not have its
  own ad-hoc means of storing page history, and instead uses a revision control
  system such as Subversion or Git.
  .
- ikiwiki implements all of the other standard features of a wiki, including
+ Ikiwiki implements all of the other standard features of a wiki, including
  web-based page editing, user registration and logins, a RecentChanges
  page, BackLinks, search, Discussion pages, tags, smart merging and conflict
  resolution, and page locking.
  .
- ikiwiki also supports generating news feeds (RSS and Atom) and blogging.
+ Ikiwiki also supports generating news feeds (RSS and Atom) and blogging.
  ikiwiki provides a plugin system which allows many other features to be
  added. Some of the plugins have additional dependencies, found among the
  Recommends and Suggests of this package.
diff --git a/doc/download.mdwn b/doc/download.mdwn
index 45d0d7870..92c8a4f75 100644
--- a/doc/download.mdwn
+++ b/doc/download.mdwn
@@ -35,7 +35,7 @@ own RPM.
 
 ## BSD ports
 
-IkiWiki can be installed [from macports](http://www.macports.org/ports.php?by=name&substr=ikiwiki)
+Ikiwiki can be installed [from macports](http://www.macports.org/ports.php?by=name&substr=ikiwiki)
 by running `sudo port install ikiwiki`.
 
 NetBSD and many other platforms: pkgsrc has an [ikiwiki package](ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/www/ikiwiki/README.html).
diff --git a/doc/features.mdwn b/doc/features.mdwn
index 3925d78ef..ab521213d 100644
--- a/doc/features.mdwn
+++ b/doc/features.mdwn
@@ -13,7 +13,7 @@ Instead of editing pages in a stupid web form, you can use vim and commit
 changes via [[Subversion|rcs/svn]], [[rcs/git]], or any of a number of other
 [[Revision_Control_Systems|rcs]].
 
-ikiwiki can be run from a [[post-commit]] hook to update your wiki
+Ikiwiki can be run from a [[post-commit]] hook to update your wiki
 immediately whenever you commit a change using the RCS.
 
 It's even possible to securely let
@@ -25,7 +25,7 @@ run a simple wiki without page history, it can do that too.
 
 ## A wiki compiler
 
-ikiwiki is a wiki compiler; it builds a static website for your wiki, and
+Ikiwiki is a wiki compiler; it builds a static website for your wiki, and
 updates it as pages are edited. It is fast and smart about updating a wiki,
 it only builds pages that have changed (and tracks things like creation of
 new pages and links that can indirectly cause a page to need a rebuild)
@@ -45,7 +45,7 @@ easily be added by [[plugins]]. For example it also supports traditional
 [[plugins/HTML]], or pages written in [[reStructuredText|plugins/rst]]
 or [[Textile|plugins/textile]].
 
-ikiwiki also supports files of any other type, including plain text,
+Ikiwiki also supports files of any other type, including plain text,
 images, etc. These are not converted to wiki pages, they are just copied
 unchanged by ikiwiki as it builds your wiki. So you can check in an image,
 program, or other special file and link to it from your wiki pages.
@@ -70,8 +70,8 @@ you would care to syndicate.
 
 ## Valid html and [[css]]
 
-ikiwiki aims to produce 
-[valid XHTML 1.0](http://validator.w3.org/check?url=referer). ikiwiki
+Ikiwiki aims to produce 
+[valid XHTML 1.0](http://validator.w3.org/check?url=referer). Ikiwiki
 generates html using [[templates|wikitemplates]], and uses [[css]], so you
 can change the look and layout of all pages in any way you would like.
 
@@ -163,7 +163,7 @@ Well, sorta. Rather than implementing YA history browser, it can link to
 
 ### Full text search
 
-ikiwiki can use the xapian search engine to add powerful
+Ikiwiki can use the xapian search engine to add powerful
 full text [[plugins/search]] capabilities to your wiki.
 
 ### Translation via po files
diff --git a/doc/forum/speeding_up_ikiwiki.mdwn b/doc/forum/speeding_up_ikiwiki.mdwn
index 2c2ac240e..799186cf8 100644
--- a/doc/forum/speeding_up_ikiwiki.mdwn
+++ b/doc/forum/speeding_up_ikiwiki.mdwn
@@ -56,7 +56,7 @@ number is still too large to really visualize: the graphviz PNG and PDF output
 engines segfault for me, the PS one works but I can't get any PS software to
 render it without exploding.
 
-Now, the relations in the links hash are not the same thing as IkiWiki's notion of dependencies. Can anyone point me at  that data structure / where I might be able to add some debugging foo to generate a graph of it?
+Now, the relations in the links hash are not the same thing as Ikiwiki's notion of dependencies. Can anyone point me at  that data structure / where I might be able to add some debugging foo to generate a graph of it?
 
 Once I've figured out that I might be able to optimize some pagespecs. I
 understand pagespecs are essentially translated into sequential perl code. I
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 732cf7a89..06acc9cec 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -24,5 +24,5 @@ The [[forum]] is open for discussions.
 [[Bugs]], [[TODO]] items, [[wishlist]] items, and [[patches|patch]]
 can be submitted and tracked using this wiki.
 
-ikiwiki is developed by [[Joey]] and many contributors,
+Ikiwiki is developed by [[Joey]] and many contributors,
 and is [[FreeSoftware]].
-- 
cgit v1.2.3


From a358d74bef51dae31332ff27e897fe04834571e6 Mon Sep 17 00:00:00 2001
From: David Riebenbauer 
Date: Wed, 3 Feb 2010 04:29:10 +0100
Subject: Check for existence off srcfile in add_autofile

add_autofile has to have checks, whether to create the file, anyway, so this
will make things more consistent.

Correcter check for the result of verify_src_file().

Cosmetic rename of a variable $addfile to $autofile.
---
 IkiWiki.pm            | 11 ++++++++---
 IkiWiki/Plugin/tag.pm |  5 ++---
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/IkiWiki.pm b/IkiWiki.pm
index 90e623330..56c491339 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -1897,9 +1897,14 @@ sub add_link ($$) {
 }
 
 sub add_autofile ($) {
-	my $addfile=shift;
-	my ($file,$page) = verify_src_file($addfile,$config{srcdir});
-	if ($page) {
+	my $autofile=shift;
+
+	if (srcfile($autofile, 1)) {
+		return 0;
+	}
+
+	my ($file, $page) = verify_src_file("$config{srcdir}/$autofile", $config{srcdir});
+	if (defined $file) {
 		push @autofiles, $file;
 	}
 }
diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm
index c0b7feb23..c6c99ae45 100644
--- a/IkiWiki/Plugin/tag.pm
+++ b/IkiWiki/Plugin/tag.pm
@@ -71,15 +71,14 @@ sub gentag ($) {
 	if (defined $config{tag_autocreate} && $config{tag_autocreate}) {
 		my $tagfile = newpagefile(tagpage($tag), $config{default_pageext});
 		$tagfile=~s/^\///;
-		return if (srcfile($tagfile,1));
+
+		return if (! add_autofile($tagfile));
 
 		debug(sprintf(gettext("creating tag page %s"), $tag));
 
 		my $template=template("autotag.tmpl");
 		$template->param(tag => $tag);
 		writefile($tagfile, $config{srcdir}, $template->output);
-
-		add_autofile("$config{srcdir}/$tagfile");
 	}
 }
 
-- 
cgit v1.2.3


From 628a52a6c49f5d2fc5af251f2d718c8dff5e8ed5 Mon Sep 17 00:00:00 2001
From: David Riebenbauer 
Date: Sat, 3 Apr 2010 21:17:20 +0200
Subject: Revert "Revert the effects of find_del_files() for (re)autoadded
 files."

This reverts commit 31680111f0062f07727d14fcf291c98978ad5a2f.
---
 IkiWiki.pm        | 3 +--
 IkiWiki/Render.pm | 9 ---------
 2 files changed, 1 insertion(+), 11 deletions(-)

diff --git a/IkiWiki.pm b/IkiWiki.pm
index 56c491339..1770703a5 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -14,8 +14,7 @@ use open qw{:utf8 :std};
 use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase
 	    %pagestate %wikistate %renderedfiles %oldrenderedfiles
 	    %pagesources %destsources %depends %depends_simple %hooks
-	    %forcerebuild %loaded_plugins @autofiles %dellinks
-	    %delrenderedfiles};
+	    %forcerebuild %loaded_plugins @autofiles};
 
 use Exporter q{import};
 our @EXPORT = qw(hook debug error template htmlpage deptype
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index 5b72b6de1..fc71c8919 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -392,9 +392,7 @@ sub find_del_files ($) {
 			else {
 				push @del, $pagesources{$page};
 			}
-			$dellinks{$page}= $links{$page};
 			$links{$page}=[];
-			$delrenderedfiles{$page}= $renderedfiles{$page};
 			$renderedfiles{$page}=[];
 			$pagemtime{$page}=0;
 		}
@@ -644,14 +642,8 @@ sub refresh () {
 		scan($file);
 	}
 
-	my %del_hash = map {$_, 1} @$del;
 	while (my $autofile = shift (@autofiles)) {
 		my $page=pagename($autofile);
-    if (exists $del_hash{$page}) {
-			$links{$page}= $dellinks{$page};
-			$renderedfiles{$page}= $delrenderedfiles{$page};
-			delete $del_hash{$page};
-		}
 		if ($pages->{$page}) {
 			debug(sprintf(gettext("%s has multiple possible source pages"), $page));
 		}
@@ -663,7 +655,6 @@ sub refresh () {
 
 		scan($autofile);
 	}
-	$del = [keys %del_hash];
 
 	calculate_links();
 	
-- 
cgit v1.2.3


From 981400177d68a279f485727be3f013e68f0bf691 Mon Sep 17 00:00:00 2001
From: David Riebenbauer 
Date: Sat, 3 Apr 2010 21:10:16 +0200
Subject: Make sure deleted tag pages don't get recreated.

The reason to do this is basically a user interaction design decision.

It is achieved by adding an entry, associated to the creating plugin, to
%pagestate. To find out if files were deleted a new global hash %del_hash is
%introduced.
---
 IkiWiki.pm            | 19 +++++++++++++++----
 IkiWiki/Plugin/tag.pm |  2 +-
 IkiWiki/Render.pm     |  5 ++++-
 3 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/IkiWiki.pm b/IkiWiki.pm
index 1770703a5..966a3bbc6 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -14,7 +14,7 @@ use open qw{:utf8 :std};
 use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase
 	    %pagestate %wikistate %renderedfiles %oldrenderedfiles
 	    %pagesources %destsources %depends %depends_simple %hooks
-	    %forcerebuild %loaded_plugins @autofiles};
+	    %forcerebuild %loaded_plugins %autofiles %del_hash};
 
 use Exporter q{import};
 our @EXPORT = qw(hook debug error template htmlpage deptype
@@ -1895,17 +1895,28 @@ sub add_link ($$) {
 		unless grep { $_ eq $link } @{$links{$page}};
 }
 
-sub add_autofile ($) {
+sub add_autofile ($$) {
 	my $autofile=shift;
+	my $plugin=shift;
 
 	if (srcfile($autofile, 1)) {
 		return 0;
 	}
 
 	my ($file, $page) = verify_src_file("$config{srcdir}/$autofile", $config{srcdir});
-	if (defined $file) {
-		push @autofiles, $file;
+
+	if ((!defined $file) ||
+	(exists $pagestate{$page}{$plugin}{autofile_deleted})) {
+		return 0;
+	}
+
+	if (exists $del_hash{$file}) {
+		$pagestate{$page}{$plugin}{autofile_deleted}=1;
+		return 0;
 	}
+
+	$autofiles{$file}=$plugin;
+	return 1;
 }
 
 sub pagespec_translate ($) {
diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm
index c6c99ae45..fdd63d637 100644
--- a/IkiWiki/Plugin/tag.pm
+++ b/IkiWiki/Plugin/tag.pm
@@ -72,7 +72,7 @@ sub gentag ($) {
 		my $tagfile = newpagefile(tagpage($tag), $config{default_pageext});
 		$tagfile=~s/^\///;
 
-		return if (! add_autofile($tagfile));
+		return if (! add_autofile($tagfile, "tag"));
 
 		debug(sprintf(gettext("creating tag page %s"), $tag));
 
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index fc71c8919..0c21455fb 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -637,12 +637,14 @@ sub refresh () {
 	my ($changed, $internal_changed)=find_changed($files);
 	run_hooks(needsbuild => sub { shift->($changed) });
 	my $oldlink_targets=calculate_old_links($changed, $del);
+	%del_hash = map { $_ => 1 } @{$del};
 
 	foreach my $file (@$changed) {
 		scan($file);
 	}
 
-	while (my $autofile = shift (@autofiles)) {
+	while (my $autofile = shift @{[keys %autofiles]}) {
+		my $plugin=$autofiles{$autofile};
 		my $page=pagename($autofile);
 		if ($pages->{$page}) {
 			debug(sprintf(gettext("%s has multiple possible source pages"), $page));
@@ -654,6 +656,7 @@ sub refresh () {
 		push @{$changed}, $autofile if find_changed([$autofile]);
 
 		scan($autofile);
+		delete $autofiles{$autofile};
 	}
 
 	calculate_links();
-- 
cgit v1.2.3


From 36202d461f86bb3869444cf161d9bfe62298b8f8 Mon Sep 17 00:00:00 2001
From: David Riebenbauer 
Date: Fri, 5 Feb 2010 12:54:07 +0100
Subject: link to commits

---
 doc/todo/auto-create_tag_pages_according_to_a_template.mdwn | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn
index a0e76fd48..c4a92824b 100644
--- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn
+++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn
@@ -165,7 +165,7 @@ wrong direction.
 > optimised, and security-sensitive ground, so I have to look at them very
 > carefully. --[[Joey]]
 > 
-> * In the refactoring in f3abeac919c4736429bd3362af6edf51ede8e7fe,
+> * In the refactoring in [f3abeac919c4736429bd3362af6edf51ede8e7fe][],
 >   you introduced at least 2 bugs, one a possible security hole.
 >   Now one part of the code tests `if ($file)` and the other
 >   caller tests `if ($f)`. These two tests both tested `if (! defined $f)`
@@ -181,14 +181,18 @@ wrong direction.
 > I'd like to cherry-pick the above commit, once it's in shape, before
 > looking at the rest in detail. So just a few other things that stood out.
 > 
-> * Commit 4af4d26582f0c2b915d7102fb4a604b176385748 seems unnecessary.
+> * Commit [4af4d26582f0c2b915d7102fb4a604b176385748][] seems unnecessary.
 >   `srcfile($file, 1)` already is documented to return undef if the
 >   file does not exist. (But without the second parameter, it throws
 >   an error.)
 >
-> * Commit f58f3e1bec41ccf9316f37b014ce0b373c8e49e1 adds a line
+> * Commit [f58f3e1bec41ccf9316f37b014ce0b373c8e49e1][] adds a line
 >   that is intented by a space, not a tab.
 > 
-> * Commit f58f3e1bec41ccf9316f37b014ce0b373c8e49e1 says that auto-added
+> * Commit [f58f3e1bec41ccf9316f37b014ce0b373c8e49e1][] says that auto-added
 >   files will be recreated if the user deletes them. That seems bad.
 >   `autoindex` goes to some trouble to not recreate deleted files.
+
+[f3abeac919c4736429bd3362af6edf51ede8e7fe]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f3abeac919c4736429bd3362af6edf51ede8e7fe (commitdiff for f3abeac919c4736429bd3362af6edf51ede8e7fe)
+[4af4d26582f0c2b915d7102fb4a604b176385748]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=4af4d26582f0c2b915d7102fb4a604b176385748 (commitdiff for 4af4d26582f0c2b915d7102fb4a604b176385748)
+[f58f3e1bec41ccf9316f37b014ce0b373c8e49e1]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f58f3e1bec41ccf9316f37b014ce0b373c8e49e1 (commitdiff for f58f3e1bec41ccf9316f37b014ce0b373c8e49e1)
-- 
cgit v1.2.3


From 129bea3177b59be8ed4cc303720c8747f59a11ba Mon Sep 17 00:00:00 2001
From: David Riebenbauer 
Date: Sat, 3 Apr 2010 23:38:05 +0200
Subject: answer about autofiles for tags

---
 ...o-create_tag_pages_according_to_a_template.mdwn | 29 +++++++++++++++++++---
 1 file changed, 25 insertions(+), 4 deletions(-)

diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn
index c4a92824b..07b570b1b 100644
--- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn
+++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn
@@ -164,7 +164,11 @@ wrong direction.
 > Starting review of this. Some of your commits are to very delicate,
 > optimised, and security-sensitive ground, so I have to look at them very
 > carefully. --[[Joey]]
-> 
+
+>> First of, sorry that it took me so damn long to answer. I didn't lose
+>> interest but it took a while for me to find the time and motivation
+>> to address you suggestions. --[[David_Riebenbauer]]
+
 > * In the refactoring in [f3abeac919c4736429bd3362af6edf51ede8e7fe][],
 >   you introduced at least 2 bugs, one a possible security hole.
 >   Now one part of the code tests `if ($file)` and the other
@@ -177,7 +181,11 @@ wrong direction.
 >   bare `_` in the first to make perl reuse the stat buffer.
 > * (As a matter of style, could you put a space after the commas in your
 >   perl?)
-> 
+
+>> The first two points should be addressed in
+>> [da5d29f95f6e693e8c14be1b896cf25cf4fdb3c0][]. And sure, I can add the
+>> spaces. --[[David_Riebenbauer]]
+
 > I'd like to cherry-pick the above commit, once it's in shape, before
 > looking at the rest in detail. So just a few other things that stood out.
 > 
@@ -185,14 +193,27 @@ wrong direction.
 >   `srcfile($file, 1)` already is documented to return undef if the
 >   file does not exist. (But without the second parameter, it throws
 >   an error.)
->
+
+>> You're right. I must have been some confused by some other promplem I
+>> introduced then. Reverted. --[[David_Riebenbauer]]
+
 > * Commit [f58f3e1bec41ccf9316f37b014ce0b373c8e49e1][] adds a line
 >   that is intented by a space, not a tab.
-> 
+
+>> Sorry, That one was reverted anyway. --[[David_Riebenbauer]]
+
 > * Commit [f58f3e1bec41ccf9316f37b014ce0b373c8e49e1][] says that auto-added
 >   files will be recreated if the user deletes them. That seems bad.
 >   `autoindex` goes to some trouble to not recreate deleted files.
 
+>> I reverted the commit and addressed the issue in
+>> [a358d74bef51dae31332ff27e897fe04834571e6][] and
+>> [981400177d68a279f485727be3f013e68f0bf691][].
+ --[[David_Riebenbauer]]
+
 [f3abeac919c4736429bd3362af6edf51ede8e7fe]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f3abeac919c4736429bd3362af6edf51ede8e7fe (commitdiff for f3abeac919c4736429bd3362af6edf51ede8e7fe)
 [4af4d26582f0c2b915d7102fb4a604b176385748]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=4af4d26582f0c2b915d7102fb4a604b176385748 (commitdiff for 4af4d26582f0c2b915d7102fb4a604b176385748)
 [f58f3e1bec41ccf9316f37b014ce0b373c8e49e1]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f58f3e1bec41ccf9316f37b014ce0b373c8e49e1 (commitdiff for f58f3e1bec41ccf9316f37b014ce0b373c8e49e1)
+[da5d29f95f6e693e8c14be1b896cf25cf4fdb3c0]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=da5d29f95f6e693e8c14be1b896cf25cf4fdb3c0 (commitdiff for da5d29f95f6e693e8c14be1b896cf25cf4fdb3c0)
+[a358d74bef51dae31332ff27e897fe04834571e6]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=a358d74bef51dae31332ff27e897fe04834571e6 (commitdiff for a358d74bef51dae31332ff27e897fe04834571e6)
+[981400177d68a279f485727be3f013e68f0bf691]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=981400177d68a279f485727be3f013e68f0bf691 (commitdiff for 981400177d68a279f485727be3f013e68f0bf691)
-- 
cgit v1.2.3


From c1a42e76bc6667bfb2882a12d53c25d9f952ca82 Mon Sep 17 00:00:00 2001
From: Simon McVittie 
Date: Fri, 2 Apr 2010 00:28:02 +0100
Subject: implement typed links; add tagged_is_strict config option

---
 IkiWiki.pm                                         | 58 ++++++++++++++++++----
 IkiWiki/Plugin/tag.pm                              | 36 +++++++++-----
 IkiWiki/Render.pm                                  | 33 ++++++++++++
 .../tagged__40____41___matching_wikilinks.mdwn     |  3 ++
 doc/ikiwiki/pagespec.mdwn                          |  3 ++
 doc/plugins/tag.mdwn                               |  5 ++
 doc/plugins/write.mdwn                             | 21 +++++++-
 t/index.t                                          | 17 +++++--
 t/tag.t                                            | 45 +++++++++++++++++
 9 files changed, 193 insertions(+), 28 deletions(-)
 create mode 100755 t/tag.t

diff --git a/IkiWiki.pm b/IkiWiki.pm
index 6739ba56c..25e9247b2 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -14,7 +14,7 @@ use open qw{:utf8 :std};
 use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase
 	    %pagestate %wikistate %renderedfiles %oldrenderedfiles
 	    %pagesources %destsources %depends %depends_simple %hooks
-	    %forcerebuild %loaded_plugins};
+	    %forcerebuild %loaded_plugins %typedlinks %oldtypedlinks};
 
 use Exporter q{import};
 our @EXPORT = qw(hook debug error template htmlpage deptype
@@ -24,7 +24,7 @@ our @EXPORT = qw(hook debug error template htmlpage deptype
 		 add_underlay pagetitle titlepage linkpage newpagefile
 		 inject add_link
                  %config %links %pagestate %wikistate %renderedfiles
-                 %pagesources %destsources);
+                 %pagesources %destsources %typedlinks);
 our $VERSION = 3.00; # plugin interface version, next is ikiwiki version
 our $version='unknown'; # VERSION_AUTOREPLACE done by Makefile, DNE
 our $installdir='/usr'; # INSTALLDIR_AUTOREPLACE done by Makefile, DNE
@@ -1503,7 +1503,7 @@ sub loadindex () {
 	if (! $config{rebuild}) {
 		%pagesources=%pagemtime=%oldlinks=%links=%depends=
 		%destsources=%renderedfiles=%pagecase=%pagestate=
-		%depends_simple=();
+		%depends_simple=%typedlinks=%oldtypedlinks=();
 	}
 	my $in;
 	if (! open ($in, "<", "$config{wikistatedir}/indexdb")) {
@@ -1569,6 +1569,14 @@ sub loadindex () {
 			if (exists $d->{state}) {
 				$pagestate{$page}=$d->{state};
 			}
+			if (exists $d->{typedlinks}) {
+				$typedlinks{$page}=$d->{typedlinks};
+
+				while (my ($type, $links) = each %{$typedlinks{$page}}) {
+					next unless %$links;
+					$oldtypedlinks{$page}{$type} = {%$links};
+				}
+			}
 		}
 		$oldrenderedfiles{$page}=[@{$d->{dest}}];
 	}
@@ -1617,6 +1625,10 @@ sub saveindex () {
 			$index{page}{$src}{depends_simple} = $depends_simple{$page};
 		}
 
+		if (exists $typedlinks{$page} && %{$typedlinks{$page}}) {
+			$index{page}{$src}{typedlinks} = $typedlinks{$page};
+		}
+
 		if (exists $pagestate{$page}) {
 			foreach my $id (@hookids) {
 				foreach my $key (keys %{$pagestate{$page}{$id}}) {
@@ -1926,12 +1938,17 @@ sub inject {
 	use warnings;
 }
 
-sub add_link ($$) {
+sub add_link ($$;$) {
 	my $page=shift;
 	my $link=shift;
+	my $type=shift;
 
 	push @{$links{$page}}, $link
 		unless grep { $_ eq $link } @{$links{$page}};
+
+	if (defined $type) {
+		$typedlinks{$page}{$type}{$link} = 1;
+	}
 }
 
 sub pagespec_translate ($) {
@@ -2212,6 +2229,11 @@ sub match_link ($$;@) {
 
 	$link=derel($link, $params{location});
 	my $from=exists $params{location} ? $params{location} : '';
+	my $linktype=$params{linktype};
+	my $qualifier='';
+	if (defined $linktype) {
+		$qualifier=" with type $linktype";
+	}
 
 	my $links = $IkiWiki::links{$page};
 	return IkiWiki::FailReason->new("$page has no links", $page => $IkiWiki::DEPEND_LINKS, "" => 1)
@@ -2219,19 +2241,33 @@ sub match_link ($$;@) {
 	my $bestlink = IkiWiki::bestlink($from, $link);
 	foreach my $p (@{$links}) {
 		if (length $bestlink) {
-			return IkiWiki::SuccessReason->new("$page links to $link", $page => $IkiWiki::DEPEND_LINKS, "" => 1)
-				if $bestlink eq IkiWiki::bestlink($page, $p);
+			if ((!defined $linktype || exists $IkiWiki::typedlinks{$page}{$linktype}{$p}) && $bestlink eq IkiWiki::bestlink($page, $p)) {
+				return IkiWiki::SuccessReason->new("$page links to $link$qualifier", $page => $IkiWiki::DEPEND_LINKS, "" => 1)
+			}
 		}
 		else {
-			return IkiWiki::SuccessReason->new("$page links to page $p matching $link", $page => $IkiWiki::DEPEND_LINKS, "" => 1)
-				if match_glob($p, $link, %params);
+			if ((!defined $linktype || exists $IkiWiki::typedlinks{$page}{$linktype}{$p}) && match_glob($p, $link, %params)) {
+				return IkiWiki::SuccessReason->new("$page links to page $p$qualifier, matching $link", $page => $IkiWiki::DEPEND_LINKS, "" => 1)
+			}
 			my ($p_rel)=$p=~/^\/?(.*)/;
 			$link=~s/^\///;
-			return IkiWiki::SuccessReason->new("$page links to page $p_rel matching $link", $page => $IkiWiki::DEPEND_LINKS, "" => 1)
-				if match_glob($p_rel, $link, %params);
+			if ((!defined $linktype || exists $IkiWiki::typedlinks{$page}{$linktype}{$p_rel}) && match_glob($p_rel, $link, %params)) {
+				return IkiWiki::SuccessReason->new("$page links to page $p_rel$qualifier, matching $link", $page => $IkiWiki::DEPEND_LINKS, "" => 1)
+			}
 		}
 	}
-	return IkiWiki::FailReason->new("$page does not link to $link", $page => $IkiWiki::DEPEND_LINKS, "" => 1);
+	return IkiWiki::FailReason->new("$page does not link to $link$qualifier", $page => $IkiWiki::DEPEND_LINKS, "" => 1);
+}
+
+sub match_typedlink($$;@) {
+	my $page = shift;
+	my $args = shift;
+
+	if ($args =~ /^(\w+)\s+(.*)$/) {
+		return match_link($page, $2, @_, linktype => $1);
+	}
+
+	return IkiWiki::ErrorReason->new("typedlink expects e.g. 'tag *' but got: $args");
 }
 
 sub match_backlink ($$;@) {
diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm
index cdcfaf536..af4bff1bc 100644
--- a/IkiWiki/Plugin/tag.pm
+++ b/IkiWiki/Plugin/tag.pm
@@ -6,8 +6,6 @@ use warnings;
 use strict;
 use IkiWiki 3.00;
 
-my %tags;
-
 sub import {
 	hook(type => "getopt", id => "tag", call => \&getopt);
 	hook(type => "getsetup", id => "tag", call => \&getsetup);
@@ -36,6 +34,13 @@ sub getsetup () {
 			safe => 1,
 			rebuild => 1,
 		},
+		tagged_is_strict => {
+			type => "boolean",
+			default => 0,
+			description => "if 1, tagged() doesn't match normal WikiLinks to tag pages",
+			safe => 1,
+			rebuild => 1,
+		},
 }
 
 sub tagpage ($) {
@@ -71,9 +76,8 @@ sub preprocess_tag (@) {
 
 	foreach my $tag (keys %params) {
 		$tag=linkpage($tag);
-		$tags{$page}{$tag}=1;
 		# hidden WikiLink
-		add_link($page, tagpage($tag));
+		add_link($page, tagpage($tag), 'tag');
 	}
 		
 	return "";
@@ -87,15 +91,13 @@ sub preprocess_taglink (@) {
 	return join(" ", map {
 		if (/(.*)\|(.*)/) {
 			my $tag=linkpage($2);
-			$tags{$params{page}}{$tag}=1;
-			add_link($params{page}, tagpage($tag));
+			add_link($params{page}, tagpage($tag), 'tag');
 			return taglink($params{page}, $params{destpage}, $tag,
 				linktext => pagetitle($1));
 		}
 		else {
 			my $tag=linkpage($_);
-			$tags{$params{page}}{$tag}=1;
-			add_link($params{page}, tagpage($tag));
+			add_link($params{page}, tagpage($tag), 'tag');
 			return taglink($params{page}, $params{destpage}, $tag);
 		}
 	}
@@ -110,17 +112,19 @@ sub pagetemplate (@) {
 	my $destpage=$params{destpage};
 	my $template=$params{template};
 
+	my $tags = $typedlinks{$page}{tag};
+
 	$template->param(tags => [
 		map { 
 			link => taglink($page, $destpage, $_, rel => "tag")
-		}, sort keys %{$tags{$page}}
-	]) if exists $tags{$page} && %{$tags{$page}} && $template->query(name => "tags");
+		}, sort keys %$tags
+	]) if defined $tags && %$tags && $template->query(name => "tags");
 
 	if ($template->query(name => "categories")) {
 		# It's an rss/atom template. Add any categories.
-		if (exists $tags{$page} && %{$tags{$page}}) {
+		if (defined $tags && %$tags) {
 			$template->param(categories => [map { category => $_ },
-				sort keys %{$tags{$page}}]);
+				sort keys %$tags]);
 		}
 	}
 }
@@ -130,7 +134,13 @@ package IkiWiki::PageSpec;
 sub match_tagged ($$;@) {
 	my $page = shift;
 	my $glob = shift;
-	return match_link($page, IkiWiki::Plugin::tag::tagpage($glob));
+
+	if ($IkiWiki::config{tagged_is_strict}) {
+		return match_link($page, IkiWiki::Plugin::tag::tagpage($glob), linktype => 'tag');
+	}
+	else {
+		return match_link($page, IkiWiki::Plugin::tag::tagpage($glob));
+	}
 }
 
 1
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index abafb0887..5810fc974 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -167,6 +167,7 @@ sub scan ($) {
 		else {
 			$links{$page}=[];
 		}
+		delete $typedlinks{$page};
 
 		run_hooks(scan => sub {
 			shift->(
@@ -398,6 +399,7 @@ sub find_del_files ($) {
 				push @del, $pagesources{$page};
 			}
 			$links{$page}=[];
+			delete $typedlinks{$page};
 			$renderedfiles{$page}=[];
 			$pagemtime{$page}=0;
 		}
@@ -499,6 +501,29 @@ sub remove_unrendered () {
 	}
 }
 
+sub link_types_changed ($$) {
+	# each is of the form { type => { link => 1 } }
+	my $new = shift;
+	my $old = shift;
+
+	return 0 if !defined $new && !defined $old;
+	return 1 if !defined $new || !defined $old;
+
+	while (my ($type, $links) = each %$new) {
+		foreach my $link (keys %$links) {
+			return 1 unless exists $old{$type}{$link};
+		}
+	}
+
+	while (my ($type, $links) = each %$old) {
+		foreach my $link (keys %$links) {
+			return 1 unless exists $new{$type}{$link};
+		}
+	}
+
+	return 0;
+}
+
 sub calculate_changed_links ($$$) {
 	my ($changed, $del, $oldlink_targets)=@_;
 
@@ -525,6 +550,14 @@ sub calculate_changed_links ($$$) {
 			}
 			$linkchangers{lc($page)}=1;
 		}
+
+		# we currently assume that changing the type of a link doesn't
+		# change backlinks
+		if (!exists $linkchangers{lc($page)}) {
+			if (link_types_changed($typedlinks{$page}, $oldlinktypes{$page})) {
+				$linkchangers{lc($page)}=1;
+			}
+		}
 	}
 
 	return \%backlinkchanged, \%linkchangers;
diff --git a/doc/bugs/tagged__40____41___matching_wikilinks.mdwn b/doc/bugs/tagged__40____41___matching_wikilinks.mdwn
index e7e4af7c3..9037d6c02 100644
--- a/doc/bugs/tagged__40____41___matching_wikilinks.mdwn
+++ b/doc/bugs/tagged__40____41___matching_wikilinks.mdwn
@@ -28,6 +28,9 @@ rationale on this, or what am I doing wrong, and how to achieve what I want?
 >> is valid. [[todo/matching_different_kinds_of_links]] is probably
 >> how it will eventually be solved. --[[Joey]] 
 
+>>> [[Done]]: you can now set the `tagged_is_strict` config option to `1`
+>>> if you don't want `tagged` to match other wikilinks. --[[smcv]]
+
 > And this is an illustration why a clean work-around (without changing the software) is not possible: while thinking about [[todo/matching_different_kinds_of_links]], I thought one could work around the problem by simply explicitly including the kind of the relation into the link target (like the tagbase in tags), and by having a separate page without the "tagbase" to link to when one wants simply to refer to the tag without tagging. But this won't work: one has to at least once refer to the real tag page if one wants to talk about it, and this reference will count as tagging (unwanted). --Ivan Z.
 
 > But well, perhaps there is a workaround without introducing different kinds of links. One could modify the [[tag plugin|plugins/tag]] so that it adds 2 links to a page: for tagging -- `tagbase/TAG`, and for navigation -- `tagdescription/TAG` (displayed at the bottom). Then the `tagdescription/TAG` page would hold whatever list one wishes (with `tagged(TAG)` in the pagespec), and whenever one wants to merely refer to the tag, one should link to `tagdescription/TAG`--this link won't count as tagging. So, `tagbase/TAG` would become completely auxiliary (internal) link targets for ikiwiki, the users would edit or link to only `tagdescription/TAG`. --Ivan Z.
diff --git a/doc/ikiwiki/pagespec.mdwn b/doc/ikiwiki/pagespec.mdwn
index 5c191f23f..ca6693024 100644
--- a/doc/ikiwiki/pagespec.mdwn
+++ b/doc/ikiwiki/pagespec.mdwn
@@ -52,6 +52,9 @@ Some more elaborate limits can be added to what matches using these functions:
   specified IP address.
 * "`postcomment(glob)`" - matches only when comments are being 
   posted to a page matching the specified glob
+* "`typedlink(type glob)`" - matches pages that link to a given page (or glob)
+  with a given link type. Plugins can create links with a specific type:
+  for instance, the tag plugin creates links of type `tag`.
 
 For example, to match all pages in a blog that link to the page about music
 and were written in 2005:
diff --git a/doc/plugins/tag.mdwn b/doc/plugins/tag.mdwn
index 8ff70a069..8cd79da41 100644
--- a/doc/plugins/tag.mdwn
+++ b/doc/plugins/tag.mdwn
@@ -8,6 +8,11 @@ These directives allow tagging pages.
 It also provides the `tagged()` [[ikiwiki/PageSpec]], which can be used to
 match pages that are tagged with a specific tag.
 
+If the `tagged_is_strict` config option is set, `tagged()` will only match
+tags explicitly set with [[ikiwiki/directive/tag]] or
+[[ikiwiki/directive/taglink]]; if not (the default), it will also match
+any other [[WikiLinks|ikiwiki/WikiLink]] to the tag page.
+
 [[!if test="enabled(tag)" then="""
 This wiki has the tag plugin enabled, so you'll see a note below that this
 page is tagged with the "tags" tag.
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index 96a2aa16d..fe7cf0183 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -633,6 +633,22 @@ reference. Do not modify this hash directly; call `add_link()`.
 
 	$links{"foo"} = ["bar", "baz"];
 
+### `%typedlinks`
+
+The `%typedlinks` hash records links of specific types. Do not modify this
+hash directly; call `add_link()`. The keys are page names, and the values
+are hash references. In each page's hash reference, the keys are link types
+defined by plugins, and the values are hash references with link targets
+as keys, and 1 as a dummy value, something like this:
+
+	$typedlinks{"foo"} = {
+		tag => { short_word => 1, metasyntactic_variable => 1 },
+		next_page => { bar => 1 },
+	};
+
+Ordinary [[WikiLinks|ikiwiki/WikiLink]] appear in `%links`, but not in
+`%typedlinks`.
+
 ### `%pagesources`
 
 The `%pagesources` has can be used to look up the source filename
@@ -939,11 +955,14 @@ Optionally, a third parameter can be passed, to specify the preferred
 filename of the page. For example, `targetpage("foo", "rss", "feed")`
 will yield something like `foo/feed.rss`.
 
-### `add_link($$)`
+### `add_link($$;$)`
 
 This adds a link to `%links`, ensuring that duplicate links are not
 added. Pass it the page that contains the link, and the link text.
 
+An optional third parameter sets the link type (`undef` produces an ordinary
+[[ikiwiki/WikiLink]]).
+
 ## Miscellaneous
 
 ### Internal use pages
diff --git a/t/index.t b/t/index.t
index 2f23524a7..44273059d 100755
--- a/t/index.t
+++ b/t/index.t
@@ -4,7 +4,7 @@ use strict;
 use IkiWiki;
 
 package IkiWiki; # use internal variables
-use Test::More tests => 27;
+use Test::More tests => 31;
 
 $config{wikistatedir}="/tmp/ikiwiki-test.$$";
 system "rm -rf $config{wikistatedir}";
@@ -31,6 +31,7 @@ $renderedfiles{"bar"}=["bar.html", "bar.rss", "sparkline-foo.gif"];
 $renderedfiles{"bar.png"}=["bar.png"];
 $links{"Foo"}=["bar.png"];
 $links{"bar"}=["Foo", "new-page"];
+$typedlinks{"bar"}={tag => {"Foo" => 1}};
 $links{"bar.png"}=[];
 $depends{"Foo"}={};
 $depends{"bar"}={"foo*" => 1};
@@ -45,7 +46,7 @@ ok(-s "$config{wikistatedir}/indexdb", "index file created");
 
 # Clear state.
 %oldrenderedfiles=%pagectime=();
-%pagesources=%pagemtime=%oldlinks=%links=%depends=
+%pagesources=%pagemtime=%oldlinks=%links=%depends=%typedlinks=%oldtypedlinks=
 %destsources=%renderedfiles=%pagecase=%pagestate=();
 
 ok(loadindex(), "load index");
@@ -104,10 +105,16 @@ is_deeply(\%destsources, {
 	"sparkline-foo.gif" => "bar",
 	"bar.png" => "bar.png",
 }, "%destsources generated correctly");
+is_deeply(\%typedlinks, {
+	bar => {tag => {"Foo" => 1}},
+}, "%typedlinks loaded correctly");
+is_deeply(\%oldtypedlinks, {
+	bar => {tag => {"Foo" => 1}},
+}, "%oldtypedlinks loaded correctly");
 
 # Clear state.
 %oldrenderedfiles=%pagectime=();
-%pagesources=%pagemtime=%oldlinks=%links=%depends=
+%pagesources=%pagemtime=%oldlinks=%links=%depends=%typedlinks=%oldtypedlinks=
 %destsources=%renderedfiles=%pagecase=%pagestate=();
 
 # When state is loaded for a wiki rebuild, only ctime and oldrenderedfiles
@@ -140,5 +147,9 @@ is_deeply(\%pagecase, {
 }, "%pagecase generated correctly");
 is_deeply(\%destsources, {
 }, "%destsources generated correctly");
+is_deeply(\%typedlinks, {
+}, "%typedlinks cleared correctly");
+is_deeply(\%oldtypedlinks, {
+}, "%oldtypedlinks cleared correctly");
 
 system "rm -rf $config{wikistatedir}";
diff --git a/t/tag.t b/t/tag.t
new file mode 100755
index 000000000..3383fd475
--- /dev/null
+++ b/t/tag.t
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+package IkiWiki;
+
+use warnings;
+use strict;
+use Test::More tests => 10;
+
+BEGIN { use_ok("IkiWiki"); }
+BEGIN { use_ok("IkiWiki::Plugin::tag"); }
+
+ok(! system("rm -rf t/tmp; mkdir t/tmp"));
+
+$config{userdir} = "users";
+$config{tagbase} = "tags";
+$config{tagged_is_strict} = 1;
+
+%oldrenderedfiles=%pagectime=();
+%pagesources=%pagemtime=%oldlinks=%links=%depends=%typedlinks=%oldtypedlinks=
+%destsources=%renderedfiles=%pagecase=%pagestate=();
+
+foreach my $page (qw(tags/numbers tags/letters one two alpha beta)) {
+	$pagesources{$page} = "$page.mdwn";
+	$pagemtime{$page} = $pagectime{$page} = 1000000;
+}
+
+$links{one}=[qw(tags/numbers alpha tags/letters)];
+$links{two}=[qw(tags/numbers)];
+$links{alpha}=[qw(tags/letters one)];
+$links{beta}=[qw(tags/letters)];
+$typedlinks{one}={tag => {"tags/numbers" => 1 }};
+$typedlinks{two}={tag => {"tags/numbers" => 1 }};
+$typedlinks{alpha}={tag => {"tags/letters" => 1 }};
+$typedlinks{beta}={tag => {"tags/letters" => 1 }};
+
+ok(pagespec_match("one", "tagged(numbers)"));
+ok(!pagespec_match("two", "tagged(alpha)"));
+ok(pagespec_match("one", "link(tags/numbers)"));
+ok(pagespec_match("one", "link(alpha)"));
+
+ok(pagespec_match("one", "typedlink(tag tags/numbers)"));
+ok(!pagespec_match("one", "typedlink(tag tags/letters)"));
+# invalid syntax
+ok(pagespec_match("one", "typedlink(tag)")->isa("IkiWiki::ErrorReason"));
+
+1;
-- 
cgit v1.2.3


From f127857676ad014c97537c39cc7758a423f08b9a Mon Sep 17 00:00:00 2001
From: Simon McVittie 
Date: Sun, 4 Apr 2010 00:21:01 +0100
Subject: Fix some typos that would break Render during changed-link
 calculation

---
 IkiWiki/Render.pm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index 5810fc974..e98888d76 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -511,13 +511,13 @@ sub link_types_changed ($$) {
 
 	while (my ($type, $links) = each %$new) {
 		foreach my $link (keys %$links) {
-			return 1 unless exists $old{$type}{$link};
+			return 1 unless exists $old->{$type}{$link};
 		}
 	}
 
 	while (my ($type, $links) = each %$old) {
 		foreach my $link (keys %$links) {
-			return 1 unless exists $new{$type}{$link};
+			return 1 unless exists $new->{$type}{$link};
 		}
 	}
 
@@ -554,7 +554,7 @@ sub calculate_changed_links ($$$) {
 		# we currently assume that changing the type of a link doesn't
 		# change backlinks
 		if (!exists $linkchangers{lc($page)}) {
-			if (link_types_changed($typedlinks{$page}, $oldlinktypes{$page})) {
+			if (link_types_changed($typedlinks{$page}, $oldtypedlinks{$page})) {
 				$linkchangers{lc($page)}=1;
 			}
 		}
-- 
cgit v1.2.3


From ef6344144051ed70649ccbff01bcc4fce927ee2f Mon Sep 17 00:00:00 2001
From: Simon McVittie 
Date: Sun, 4 Apr 2010 00:24:27 +0100
Subject: Remove tagged_is_strict option, and just behave as though it was
 enabled

Jon was worried about the backwards-compatibility break involved in making
tagged() not match non-tag links, but Joey seems less concerned about it.
---
 IkiWiki/Plugin/tag.pm                               | 17 +----------------
 doc/bugs/tagged__40____41___matching_wikilinks.mdwn |  3 +--
 doc/plugins/tag.mdwn                                |  5 -----
 t/tag.t                                             |  1 -
 4 files changed, 2 insertions(+), 24 deletions(-)

diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm
index af4bff1bc..7a85874f6 100644
--- a/IkiWiki/Plugin/tag.pm
+++ b/IkiWiki/Plugin/tag.pm
@@ -34,13 +34,6 @@ sub getsetup () {
 			safe => 1,
 			rebuild => 1,
 		},
-		tagged_is_strict => {
-			type => "boolean",
-			default => 0,
-			description => "if 1, tagged() doesn't match normal WikiLinks to tag pages",
-			safe => 1,
-			rebuild => 1,
-		},
 }
 
 sub tagpage ($) {
@@ -132,15 +125,7 @@ sub pagetemplate (@) {
 package IkiWiki::PageSpec;
 
 sub match_tagged ($$;@) {
-	my $page = shift;
-	my $glob = shift;
-
-	if ($IkiWiki::config{tagged_is_strict}) {
-		return match_link($page, IkiWiki::Plugin::tag::tagpage($glob), linktype => 'tag');
-	}
-	else {
-		return match_link($page, IkiWiki::Plugin::tag::tagpage($glob));
-	}
+	return match_link($_[0], IkiWiki::Plugin::tag::tagpage($_[1]), linktype => 'tag');
 }
 
 1
diff --git a/doc/bugs/tagged__40____41___matching_wikilinks.mdwn b/doc/bugs/tagged__40____41___matching_wikilinks.mdwn
index 9037d6c02..a211654f1 100644
--- a/doc/bugs/tagged__40____41___matching_wikilinks.mdwn
+++ b/doc/bugs/tagged__40____41___matching_wikilinks.mdwn
@@ -28,8 +28,7 @@ rationale on this, or what am I doing wrong, and how to achieve what I want?
 >> is valid. [[todo/matching_different_kinds_of_links]] is probably
 >> how it will eventually be solved. --[[Joey]] 
 
->>> [[Done]]: you can now set the `tagged_is_strict` config option to `1`
->>> if you don't want `tagged` to match other wikilinks. --[[smcv]]
+>>> [[Done]]: `tagged` no longer matches other wikilinks. --[[smcv]]
 
 > And this is an illustration why a clean work-around (without changing the software) is not possible: while thinking about [[todo/matching_different_kinds_of_links]], I thought one could work around the problem by simply explicitly including the kind of the relation into the link target (like the tagbase in tags), and by having a separate page without the "tagbase" to link to when one wants simply to refer to the tag without tagging. But this won't work: one has to at least once refer to the real tag page if one wants to talk about it, and this reference will count as tagging (unwanted). --Ivan Z.
 
diff --git a/doc/plugins/tag.mdwn b/doc/plugins/tag.mdwn
index 8cd79da41..8ff70a069 100644
--- a/doc/plugins/tag.mdwn
+++ b/doc/plugins/tag.mdwn
@@ -8,11 +8,6 @@ These directives allow tagging pages.
 It also provides the `tagged()` [[ikiwiki/PageSpec]], which can be used to
 match pages that are tagged with a specific tag.
 
-If the `tagged_is_strict` config option is set, `tagged()` will only match
-tags explicitly set with [[ikiwiki/directive/tag]] or
-[[ikiwiki/directive/taglink]]; if not (the default), it will also match
-any other [[WikiLinks|ikiwiki/WikiLink]] to the tag page.
-
 [[!if test="enabled(tag)" then="""
 This wiki has the tag plugin enabled, so you'll see a note below that this
 page is tagged with the "tags" tag.
diff --git a/t/tag.t b/t/tag.t
index 3383fd475..cf3bbdf01 100755
--- a/t/tag.t
+++ b/t/tag.t
@@ -12,7 +12,6 @@ ok(! system("rm -rf t/tmp; mkdir t/tmp"));
 
 $config{userdir} = "users";
 $config{tagbase} = "tags";
-$config{tagged_is_strict} = 1;
 
 %oldrenderedfiles=%pagectime=();
 %pagesources=%pagemtime=%oldlinks=%links=%depends=%typedlinks=%oldtypedlinks=
-- 
cgit v1.2.3


From f80e1cb577f3b4ca8f525ddb257f190e481b9194 Mon Sep 17 00:00:00 2001
From: Simon McVittie 
Date: Sun, 4 Apr 2010 00:26:03 +0100
Subject: Remove the typedlink(tag foo) pagespec feature, which is less
 friendly than tagged()

Plugins that introduce a link type should also introduce pagespec syntax
for it.
---
 IkiWiki.pm | 11 -----------
 1 file changed, 11 deletions(-)

diff --git a/IkiWiki.pm b/IkiWiki.pm
index 25e9247b2..6ea0fb3f3 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -2259,17 +2259,6 @@ sub match_link ($$;@) {
 	return IkiWiki::FailReason->new("$page does not link to $link$qualifier", $page => $IkiWiki::DEPEND_LINKS, "" => 1);
 }
 
-sub match_typedlink($$;@) {
-	my $page = shift;
-	my $args = shift;
-
-	if ($args =~ /^(\w+)\s+(.*)$/) {
-		return match_link($page, $2, @_, linktype => $1);
-	}
-
-	return IkiWiki::ErrorReason->new("typedlink expects e.g. 'tag *' but got: $args");
-}
-
 sub match_backlink ($$;@) {
 	my $ret=match_link($_[1], $_[0], @_);
 	$ret->influences($_[1] => $IkiWiki::DEPEND_LINKS);
-- 
cgit v1.2.3


From d7e32dc98d7b9b005f983cd6f3321244f25cf6a5 Mon Sep 17 00:00:00 2001
From: Simon McVittie 
Date: Sun, 4 Apr 2010 01:20:02 +0100
Subject: Add a unit test for changed-link calculation

---
 t/calculate_changed_links.t | 58 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)
 create mode 100755 t/calculate_changed_links.t

diff --git a/t/calculate_changed_links.t b/t/calculate_changed_links.t
new file mode 100755
index 000000000..bf6e2af45
--- /dev/null
+++ b/t/calculate_changed_links.t
@@ -0,0 +1,58 @@
+#!/usr/bin/perl
+package IkiWiki;
+
+use warnings;
+use strict;
+use Test::More tests => 5;
+
+BEGIN { use_ok("IkiWiki"); }
+BEGIN { use_ok("IkiWiki::Render"); }
+%config=IkiWiki::defaultconfig();
+$config{srcdir}=$config{destdir}="/dev/null";
+
+%oldrenderedfiles=%pagectime=();
+%pagesources=%pagemtime=%oldlinks=%links=%depends=%typedlinks=%oldtypedlinks=
+%destsources=%renderedfiles=%pagecase=%pagestate=();
+
+IkiWiki::checkconfig();
+
+foreach my $page (qw(tags/a tags/b Reorder Add Remove TypeAdd TypeRemove)) {
+	$pagesources{$page} = "$page.mdwn";
+	$pagemtime{$page} = $pagectime{$page} = 1000000;
+}
+
+$oldlinks{Reorder} = [qw{tags/a tags/b}];
+$links{Reorder} = [qw{tags/b tags/a}];
+
+$oldlinks{Add} = [qw{tags/b}];
+$links{Add} = [qw{tags/a tags/b}];
+
+$oldlinks{Remove} = [qw{tags/a}];
+$links{Remove} = [];
+
+$oldlinks{TypeAdd} = [qw{tags/a tags/b}];
+$links{TypeAdd} = [qw{tags/a tags/b}];
+# This causes TypeAdd to be rebuilt, but isn't a backlink change, so it doesn't
+# cause tags/b to be rebuilt.
+$oldtypedlinks{TypeAdd}{tag} = { "tags/a" => 1 };
+$typedlinks{TypeAdd}{tag} = { "tags/a" => 1, "tags/b" => 1 };
+
+$oldlinks{TypeRemove} = [qw{tags/a tags/b}];
+$links{TypeRemove} = [qw{tags/a tags/b}];
+# This causes TypeRemove to be rebuilt, but isn't a backlink change, so it
+# doesn't cause tags/b to be rebuilt.
+$oldtypedlinks{TypeRemove}{tag} = { "tags/a" => 1 };
+$typedlinks{TypeRemove}{tag} = { "tags/a" => 1, "tags/b" => 1 };
+
+my $oldlink_targets = calculate_old_links([keys %pagesources], []);
+is_deeply($oldlink_targets, {
+		Reorder => { "tags/a" => "tags/a", "tags/b" => "tags/b" },
+		Add => { "tags/b" => "tags/b" },
+		Remove => { "tags/a" => "tags/a" },
+		TypeAdd => { "tags/a" => "tags/a", "tags/b" => "tags/b" },
+		TypeRemove => { "tags/a" => "tags/a", "tags/b" => "tags/b" },
+	});
+my ($backlinkchanged, $linkchangers) = calculate_changed_links([keys %pagesources], [], $oldlink_targets);
+
+is_deeply($backlinkchanged, { "tags/a" => 1 });
+is_deeply($linkchangers, { add => 1, remove => 1, typeadd => 1, typeremove => 1 });
-- 
cgit v1.2.3


From 20040772cecbddf07ab6369a22ab2fe1ad794b48 Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Sun, 4 Apr 2010 00:27:20 +0000
Subject: update fieldsort plugin to be compatible with the latest version of
 my branch

---
 doc/plugins/contrib/field/discussion.mdwn | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/doc/plugins/contrib/field/discussion.mdwn b/doc/plugins/contrib/field/discussion.mdwn
index 7e94a4029..ad17f87e6 100644
--- a/doc/plugins/contrib/field/discussion.mdwn
+++ b/doc/plugins/contrib/field/discussion.mdwn
@@ -68,15 +68,13 @@ I think it should just be part of `field` rather than a separate plugin.
 			},
 	}
 
-	package IkiWiki::PageSpec;
+	package IkiWiki::SortSpec;
 
-	sub check_cmp_field {
+	sub cmp_field {
 		if (!length $_[0]) {
 			error("sort=field requires a parameter");
 		}
-	}
 
-	sub cmp_field {
 		my $left = IkiWiki::Plugin::field::field_get_value($_[2], $_[0]);
 		my $right = IkiWiki::Plugin::field::field_get_value($_[2], $_[1]);
 
-- 
cgit v1.2.3


From 61a31a3d63a19f75e3362c7e5ac2067f572c9dca Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Sun, 4 Apr 2010 00:34:36 +0000
Subject: updated branch

---
 doc/todo/matching_different_kinds_of_links.mdwn | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/doc/todo/matching_different_kinds_of_links.mdwn b/doc/todo/matching_different_kinds_of_links.mdwn
index 2cd484852..c4383c0b7 100644
--- a/doc/todo/matching_different_kinds_of_links.mdwn
+++ b/doc/todo/matching_different_kinds_of_links.mdwn
@@ -106,6 +106,10 @@ Some code refers to `oldtypedlinks`, and other to `oldlinktypes`. --[[Joey]]
 
 >> A test suite for the dependency resolver *would* be nice. --[[Joey]]
 
+>>> Bug fixed, I think. A test suite for the dependency resolver seems
+>>> more ambitious than I want to get into right now, but I added a
+>>> unit test for this part of it... --s
+
 I'm curious what your reasoning was for adding a new variable
 rather than using `pagestate`. Was it only because you needed
 the `old` version to detect change, or was there other complexity?
@@ -120,6 +124,17 @@ the `old` version to detect change, or was there other complexity?
 > my docs for `%typedlinks`, so I'll try to write docs for it as
 > `pagestate` and see if they work any better. --s
 
+>> On reflection, I don't think it's any better as a pagestate, and
+>> the contents of pagestates (so far) aren't documented for other
+>> plugins' consumption, so I'm inclined to leave it as-is, unless
+>> you want to veto that. Loose rationale: it needs special handling
+>> in the core to be a dependency type (I re-used the existing link
+>> type), it's API beyond a single plugin, and it's really part of
+>> the core parallel to pagestate rather than being tied to a
+>> specific plugin. Also, I'd need to special-case it to have
+>> ikiwiki not delete it from the index, unless I introduced a
+>> dummy typedlinks plugin (or just hook) that did nothing... --s
+
 I have not convinced myself this is a real problem, but..
 If a page has a typed link, there seems to be no way to tell
 if it also has a separate, regular link. `add_link` will add
@@ -145,6 +160,8 @@ without too much transitional trouble. --[[Joey]]
 > on the current semantics, on one of the pages requesting this
 > change. --s
 
+>> Removed in a newer version of the branch. --s
+
 I might have been wrong to introduce `typedlink(tag foo)`. It's not
 very user-friendly, and is more useful as a backend for other plugins
 that as a feature in its own right - any plugin introducing a link
@@ -156,3 +173,6 @@ though... --[[smcv]]
 
 > I agree, per-type matchers are more friendly and I'm not enamored of the
 > multi-parameter pagespec syntax. --[[Joey]]
+
+>> Removed in a newer version of the branch. I re-introduced it as a
+>> plugin in `smcv/typedlink`, but I don't think we really need it. --s
-- 
cgit v1.2.3


From 618bbaee3815daffe329fc1e2d77f04fcd8392b8 Mon Sep 17 00:00:00 2001
From: Simon McVittie 
Date: Sat, 3 Apr 2010 14:17:48 +0100
Subject: meta: generalize meta_title into meta(title); support author,
 updated, date

I've left meta_title in, undocumented, as a possible replacement for
sort=title in IkiWiki 4.0 or something.
---
 IkiWiki/Plugin/meta.pm            | 58 +++++++++++++++++++++++++++++++++------
 doc/ikiwiki/directive/meta.mdwn   |  7 ++++-
 doc/ikiwiki/pagespec/sorting.mdwn |  5 ++--
 3 files changed, 58 insertions(+), 12 deletions(-)

diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm
index cd7d0d127..c9fdbc934 100644
--- a/IkiWiki/Plugin/meta.pm
+++ b/IkiWiki/Plugin/meta.pm
@@ -122,6 +122,12 @@ sub preprocess (@) {
 	}
 	elsif ($key eq 'author') {
 		$pagestate{$page}{meta}{author}=$value;
+		if (exists $params{sort}) {
+			$pagestate{$page}{meta}{authorsort}=$params{sort};
+		}
+		else {
+			$pagestate{$page}{meta}{authorsort}=$value;
+		}
 		# fallthorough
 	}
 	elsif ($key eq 'authorurl') {
@@ -288,14 +294,31 @@ sub pagetemplate (@) {
 	}
 }
 
-sub titlesort {
-	my $key = $pagestate{$_[0]}{meta}{titlesort};
+sub get_sort_key {
+	my $page = $_[0];
+	my $meta = $_[1];
 
-	if (defined $key) {
-		return $key;
-	}
+	# e.g. titlesort (also makes sense for author)
+	my $key = $pagestate{$page}{meta}{$meta . "sort"};
+	return $key if defined $key;
+
+	# e.g. title
+	$key = $pagestate{$page}{meta}{$meta};
+	return $key if defined $key;
 
-	return pagetitle(IkiWiki::basename($_[0]));
+	# fall back to closer-to-core things
+	if ($meta eq 'title') {
+		return pagetitle(IkiWiki::basename($page));
+	}
+	elsif ($meta eq 'date') {
+		return $IkiWiki::pagectime{$page};
+	}
+	elsif ($meta eq 'updated') {
+		return $IkiWiki::pagemtime{$page};
+	}
+	else {
+		return '';
+	}
 }
 
 sub match {
@@ -350,10 +373,27 @@ sub match_copyright ($$;@) {
 
 package IkiWiki::SortSpec;
 
+sub cmp_meta {
+	my $left = $_[0];
+	my $right = $_[1];
+	my $meta = $_[2];
+	error(gettext("sort=meta requires a parameter")) unless defined $meta;
+
+	if ($meta eq 'updated' || $meta eq 'date') {
+		return IkiWiki::Plugin::meta::get_sort_key($left, $meta)
+			<=>
+			IkiWiki::Plugin::meta::get_sort_key($right, $meta);
+	}
+
+	return IkiWiki::Plugin::meta::get_sort_key($left, $meta)
+		cmp
+		IkiWiki::Plugin::meta::get_sort_key($right, $meta);
+}
+
+# A prototype of how sort=title could behave in 4.0 or something
 sub cmp_meta_title {
-	IkiWiki::Plugin::meta::titlesort($_[0])
-	cmp
-	IkiWiki::Plugin::meta::titlesort($_[1])
+	$_[2] = 'title';
+	return cmp_meta(@_);
 }
 
 1
diff --git a/doc/ikiwiki/directive/meta.mdwn b/doc/ikiwiki/directive/meta.mdwn
index 8d2a5b1ad..c5f74fac5 100644
--- a/doc/ikiwiki/directive/meta.mdwn
+++ b/doc/ikiwiki/directive/meta.mdwn
@@ -24,7 +24,7 @@ Supported fields:
   differently in this case.
 
   An optional `sort` parameter will be used preferentially when
-  [[ikiwiki/pagespec/sorting]] by `meta_title`:
+  [[ikiwiki/pagespec/sorting]] by `meta(title)`:
 
 	\[[!meta title="The Beatles" sort="Beatles, The"]]
 
@@ -44,6 +44,11 @@ Supported fields:
 
   Specifies the author of a page.
 
+  An optional `sort` parameter will be used preferentially when
+  [[ikiwiki/pagespec/sorting]] by `meta(author)`:
+
+	\[[!meta author="Joey Hess" sort="Hess, Joey"]]
+
 * authorurl
 
   Specifies an url for the author of a page.
diff --git a/doc/ikiwiki/pagespec/sorting.mdwn b/doc/ikiwiki/pagespec/sorting.mdwn
index ba995a521..fbf598340 100644
--- a/doc/ikiwiki/pagespec/sorting.mdwn
+++ b/doc/ikiwiki/pagespec/sorting.mdwn
@@ -11,9 +11,10 @@ orders can be specified.
   as such, ("1 2 9 10 20" instead of "1 10 2 20 9")
 """]]
 [[!if test="enabled(meta)" then="""
-* `meta_title` - Order according to the `\[[!meta title="foo" sort="bar"]]`
+* `meta(title)` - Order according to the `\[[!meta title="foo" sort="bar"]]`
   or `\[[!meta title="foo"]]` [[ikiwiki/directive]], or the page name if no
-  full title was set.
+  full title was set. `meta(author)`, `meta(date)`, `meta(updated)`, etc.
+  also work.
 """]]
 
 In addition, you can combine several sort orders and/or reverse the order of
-- 
cgit v1.2.3


From 490f95616a8a49f2120655d07c282eefd067e640 Mon Sep 17 00:00:00 2001
From: Simon McVittie 
Date: Sat, 3 Apr 2010 14:19:18 +0100
Subject: Rename sort parameter to meta title/author to sortas=bar

Joey pointed out that sort=x usually takes a sort order.
---
 IkiWiki/Plugin/meta.pm            |  8 ++++----
 doc/ikiwiki/directive/meta.mdwn   | 10 +++++-----
 doc/ikiwiki/pagespec/sorting.mdwn |  2 +-
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm
index c9fdbc934..4992617d0 100644
--- a/IkiWiki/Plugin/meta.pm
+++ b/IkiWiki/Plugin/meta.pm
@@ -89,8 +89,8 @@ sub preprocess (@) {
 	# Metadata collection that needs to happen during the scan pass.
 	if ($key eq 'title') {
 		$pagestate{$page}{meta}{title}=HTML::Entities::encode_numeric($value);
-		if (exists $params{sort}) {
-			$pagestate{$page}{meta}{titlesort}=$params{sort};
+		if (exists $params{sortas}) {
+			$pagestate{$page}{meta}{titlesort}=$params{sortas};
 		}
 		else {
 			$pagestate{$page}{meta}{titlesort}=$value;
@@ -122,8 +122,8 @@ sub preprocess (@) {
 	}
 	elsif ($key eq 'author') {
 		$pagestate{$page}{meta}{author}=$value;
-		if (exists $params{sort}) {
-			$pagestate{$page}{meta}{authorsort}=$params{sort};
+		if (exists $params{sortas}) {
+			$pagestate{$page}{meta}{authorsort}=$params{sortas};
 		}
 		else {
 			$pagestate{$page}{meta}{authorsort}=$value;
diff --git a/doc/ikiwiki/directive/meta.mdwn b/doc/ikiwiki/directive/meta.mdwn
index c5f74fac5..5a3919dea 100644
--- a/doc/ikiwiki/directive/meta.mdwn
+++ b/doc/ikiwiki/directive/meta.mdwn
@@ -23,12 +23,12 @@ Supported fields:
   be set to a true value in the template; this can be used to format things
   differently in this case.
 
-  An optional `sort` parameter will be used preferentially when
+  An optional `sortas` parameter will be used preferentially when
   [[ikiwiki/pagespec/sorting]] by `meta(title)`:
 
-	\[[!meta title="The Beatles" sort="Beatles, The"]]
+	\[[!meta title="The Beatles" sortas="Beatles, The"]]
 
-	\[[!meta title="David Bowie" sort="Bowie, David"]]
+	\[[!meta title="David Bowie" sortas="Bowie, David"]]
 
 * license
 
@@ -44,10 +44,10 @@ Supported fields:
 
   Specifies the author of a page.
 
-  An optional `sort` parameter will be used preferentially when
+  An optional `sortas` parameter will be used preferentially when
   [[ikiwiki/pagespec/sorting]] by `meta(author)`:
 
-	\[[!meta author="Joey Hess" sort="Hess, Joey"]]
+	\[[!meta author="Joey Hess" sortas="Hess, Joey"]]
 
 * authorurl
 
diff --git a/doc/ikiwiki/pagespec/sorting.mdwn b/doc/ikiwiki/pagespec/sorting.mdwn
index fbf598340..5c6cfcc2b 100644
--- a/doc/ikiwiki/pagespec/sorting.mdwn
+++ b/doc/ikiwiki/pagespec/sorting.mdwn
@@ -11,7 +11,7 @@ orders can be specified.
   as such, ("1 2 9 10 20" instead of "1 10 2 20 9")
 """]]
 [[!if test="enabled(meta)" then="""
-* `meta(title)` - Order according to the `\[[!meta title="foo" sort="bar"]]`
+* `meta(title)` - Order according to the `\[[!meta title="foo" sortas="bar"]]`
   or `\[[!meta title="foo"]]` [[ikiwiki/directive]], or the page name if no
   full title was set. `meta(author)`, `meta(date)`, `meta(updated)`, etc.
   also work.
-- 
cgit v1.2.3


From ed26f287b207573cc2c2593809b3811f3f832c8c Mon Sep 17 00:00:00 2001
From: "https://mukund.startssl.com/" 
Date: Sun, 4 Apr 2010 07:13:51 +0000
Subject: Remove my homepage

---
 doc/ikiwikiusers.mdwn | 1 -
 1 file changed, 1 deletion(-)

diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index 633400f21..3b67eb74f 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -138,7 +138,6 @@ Personal sites and blogs
 * [Cosmic Cookout](http://www.cosmiccookout.com/)
 * [Backyard Deer](http://www.backyarddeer.com/)
 * [Alex Ghitza homepage and blog](http://aghitza.org/)
-* [Mukund's homepage](http://www.mukund.org/)
 * [Andreas's homepage](http://0x7.ch/) - Ikiwiki, Subversion and CSS template
 * [Chris Dombroski's boring bliki](https://www.icanttype.org/)
 * [Josh Triplett's homepage](http://joshtriplett.org/) - Git backend with the CGI disabled, to publish a static site with the convenience of ikiwiki.
-- 
cgit v1.2.3


From 17cc857378c518114989c41dfb1411c9ab8419ea Mon Sep 17 00:00:00 2001
From: "https://mukund.startssl.com/" 
Date: Sun, 4 Apr 2010 07:16:41 +0000
Subject: Add the Banu website

---
 doc/ikiwikiusers.mdwn | 1 +
 1 file changed, 1 insertion(+)

diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index 3b67eb74f..4a3e41e83 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -53,6 +53,7 @@ Projects & Organizations
 * [Debian Costa Rica](http://cr.debian.net/)
 * [Fvwm Wiki](http://fvwmwiki.xteddy.org)
 * [Serialist](http://serialist.net/)'s static pages (documentation, blog).  We actually have ikiwiki generate its static content as HTML fragments using a modified page.tmpl template, and then the FastCGI powering our site grabs those fragments and embeds them in the standard dynamic site template.
+* [Banu](https://www.banu.com/)
 
 Personal sites and blogs
 ========================
-- 
cgit v1.2.3


From 3e2a78840a22c376e40dccd358e94533313596e8 Mon Sep 17 00:00:00 2001
From: "http://liw.fi/" 
Date: Sun, 4 Apr 2010 09:12:23 +0000
Subject:

---
 doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn | 3 +++
 1 file changed, 3 insertions(+)
 create mode 100644 doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn

diff --git a/doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn b/doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn
new file mode 100644
index 000000000..bd0900670
--- /dev/null
+++ b/doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn
@@ -0,0 +1,3 @@
+Version 2.0 of bzr seems to break the bzr plugin.
+
+I traced this to the bzr_log method in the plugin, and patching that seems to fix it. The plugin just needs to parse the input little bit differently.
-- 
cgit v1.2.3


From 3190e3be93a97ccf0f1c2a4a2d4a27cd1326263b Mon Sep 17 00:00:00 2001
From: "http://liw.fi/" 
Date: Sun, 4 Apr 2010 09:13:01 +0000
Subject:

---
 doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn | 1 +
 1 file changed, 1 insertion(+)

diff --git a/doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn b/doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn
index bd0900670..2fd25df9c 100644
--- a/doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn
+++ b/doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn
@@ -1,3 +1,4 @@
 Version 2.0 of bzr seems to break the bzr plugin.
 
 I traced this to the bzr_log method in the plugin, and patching that seems to fix it. The plugin just needs to parse the input little bit differently.
+--liw
-- 
cgit v1.2.3


From 6b746ed72ba5fc49451f832f6ced9a7c26cce8f7 Mon Sep 17 00:00:00 2001
From: "http://liw.fi/" 
Date: Sun, 4 Apr 2010 09:23:05 +0000
Subject:

---
 doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn | 79 +++++++++++++++++++++++++++++++++
 1 file changed, 79 insertions(+)

diff --git a/doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn b/doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn
index 2fd25df9c..bda07d15b 100644
--- a/doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn
+++ b/doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn
@@ -2,3 +2,82 @@ Version 2.0 of bzr seems to break the bzr plugin.
 
 I traced this to the bzr_log method in the plugin, and patching that seems to fix it. The plugin just needs to parse the input little bit differently.
 --liw
+
+    From fb897114124e627fd3acf5af8e784c9a77419a81 Mon Sep 17 00:00:00 2001
+    From: Lars Wirzenius 
+    Date: Sun, 4 Apr 2010 21:05:07 +1200
+    Subject: [PATCH] Fix bzr plugin to work with bzr 2.0.
+
+    The output of "bzr log" seems to have changed a bit, so we change the
+    parsing accordingly. This has not been tested with earlier versions of
+    bzr.
+
+    Several problems seemed to occur, all in the bzr_log subroutine:
+
+    1. The @infos list would contain an empty hash, which would confuse the
+       rest of the program.
+    2. This was because bzr_log would push an empty anonymous hash to the
+       list whenever it thought a new record would start.
+    3. However, a new record marker (now?) also happens at th end of bzr log
+       output.
+    4. Now we collect the record to a hash that gets pushed to the list only
+       if it is not empty.
+    5. Also, sometimes bzr log outputs "revno: 1234 [merge]", so we catch only
+       the revision number.
+    6. Finally, there may be non-headers at the of the output, so we ignore
+       those.
+    ---
+     IkiWiki/Plugin/bzr.pm |   23 ++++++++++++++++-------
+     1 files changed, 16 insertions(+), 7 deletions(-)
+
+    diff --git a/IkiWiki/Plugin/bzr.pm b/IkiWiki/Plugin/bzr.pm
+    index 1ffdc23..e813331 100644
+    --- a/IkiWiki/Plugin/bzr.pm
+    +++ b/IkiWiki/Plugin/bzr.pm
+    @@ -73,28 +73,37 @@ sub bzr_log ($) {
+     	my @infos = ();
+     	my $key = undef;
+     
+    +    my $hash = {};
+     	while (<$out>) {
+     		my $line = $_;
+     		my ($value);
+     		if ($line =~ /^message:/) {
+     			$key = "message";
+    -			$infos[$#infos]{$key} = "";
+    +			$$hash{$key} = "";
+     		}
+     		elsif ($line =~ /^(modified|added|renamed|renamed and modified|removed):/) {
+     			$key = "files";
+    -			unless (defined($infos[$#infos]{$key})) { $infos[$#infos]{$key} = ""; }
+    +			unless (defined($$hash{$key})) { $$hash{$key} = ""; }
+     		}
+     		elsif (defined($key) and $line =~ /^  (.*)/) {
+    -			$infos[$#infos]{$key} .= "$1\n";
+    +			$$hash{$key} .= "$1\n";
+     		}
+     		elsif ($line eq "------------------------------------------------------------\n") {
+    +		    if (keys %$hash) {
+    +    		    push (@infos, $hash);
+    +		    }
+    +    		$hash = {};
+     			$key = undef;
+    -			push (@infos, {});
+     		}
+    -		else {
+    +		elsif ($line =~ /: /) {
+     			chomp $line;
+    -				($key, $value) = split /: +/, $line, 2;
+    -			$infos[$#infos]{$key} = $value;
+    +			if ($line =~ /^revno: (\d+)/) {
+    +			    $key = "revno";
+    +			    $value = $1;
+    +			} else {
+    +    			($key, $value) = split /: +/, $line, 2;
+    +    		}
+    +			$$hash{$key} = $value;
+     		} 
+     	}
+     	close $out;
+    -- 
+    1.7.0
-- 
cgit v1.2.3


From 7060b774e45e237727601f500da40aa6b1a19d7f Mon Sep 17 00:00:00 2001
From: PaulePanter 
Date: Sun, 4 Apr 2010 12:03:41 +0000
Subject: Typo.

---
 doc/news/version_3.20100403.mdwn | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/news/version_3.20100403.mdwn b/doc/news/version_3.20100403.mdwn
index 86d6a0f37..3e9063028 100644
--- a/doc/news/version_3.20100403.mdwn
+++ b/doc/news/version_3.20100403.mdwn
@@ -15,7 +15,7 @@ ikiwiki 3.20100403 released with [[!toggle text="these changes"]]
    * filecheck: Fix bugs that prevented the pagespecs from matching when
      not called by attachment plugin.
    * Fix incorrect influence info returned by a failing link() pagespec,
-     that could lead to bad dependency handling in certian situations.
+     that could lead to bad dependency handling in certain situations.
    * Add preprocessed 'use lib' line to ikiwiki-transition and ikiwiki-calendar
      if necessary for unusual install.
    * auto-blog.setup: Set tagbase by default, since most bloggers will want it.
@@ -27,4 +27,4 @@ ikiwiki 3.20100403 released with [[!toggle text="these changes"]]
      (especially of Firefox) see fresh page content.
    * htmlscrubber: Allow colons in urls after '?'
    * template: Search for templates in the templatedir, if they are not
-     found as pages in the wiki."""]]
\ No newline at end of file
+     found as pages in the wiki."""]]
-- 
cgit v1.2.3


From 3a02cfca99922e8e15b55962d534629b777e463f Mon Sep 17 00:00:00 2001
From: "http://hendry.iki.fi/" 
Date: Sun, 4 Apr 2010 13:00:52 +0000
Subject:

---
 doc/bugs/Comments_dissapeared.mdwn | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/doc/bugs/Comments_dissapeared.mdwn b/doc/bugs/Comments_dissapeared.mdwn
index ac297028c..7ff1a012f 100644
--- a/doc/bugs/Comments_dissapeared.mdwn
+++ b/doc/bugs/Comments_dissapeared.mdwn
@@ -28,3 +28,8 @@ It worked just fine with this configuration. I swear I have not modified it. :)
 > So I suspect you have simply not rebuilt your wiki after making some
 > change that fixed the comments, and so only newer pages are getting them.
 > --[[Joey]]
+
+I have tried rebuilding on my squeeze system and still comments don't appear. Any clues how to debug this?
+
+
+I was worried is was due to a time skew problem I was experiencing on my VPS in the last month, though the time is right now and still comments do not appear on blog posts like 
-- 
cgit v1.2.3


From 834936a408d0d9f481071fbcaefc67273eabb60c Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Sun, 4 Apr 2010 14:03:51 +0000
Subject: bug report + patch: unnecessary YAML::Any dependency

---
 doc/plugins/contrib/field/discussion.mdwn | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/doc/plugins/contrib/field/discussion.mdwn b/doc/plugins/contrib/field/discussion.mdwn
index ad17f87e6..c2b75a76d 100644
--- a/doc/plugins/contrib/field/discussion.mdwn
+++ b/doc/plugins/contrib/field/discussion.mdwn
@@ -84,3 +84,11 @@ I think it should just be part of `field` rather than a separate plugin.
 	}
 
 	1;
+
+-------
+
+Bug report: `field` has an unnecessary `use YAML::Any`, presumably from before
+you separated out `ymlfront`. Trivial patch available from
+field-etc branch in git://git.pseudorandom.co.uk/git/smcv/ikiwiki.git (gitweb:
+)
+--[[smcv]]
-- 
cgit v1.2.3


From f6dde92957f8b21d8823f2e51d9e3c48bbad7146 Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Sun, 4 Apr 2010 14:05:42 +0000
Subject: advertise some bugfixes

---
 doc/plugins/contrib/ymlfront/discussion.mdwn | 4 ++++
 1 file changed, 4 insertions(+)
 create mode 100644 doc/plugins/contrib/ymlfront/discussion.mdwn

diff --git a/doc/plugins/contrib/ymlfront/discussion.mdwn b/doc/plugins/contrib/ymlfront/discussion.mdwn
new file mode 100644
index 000000000..f437624b6
--- /dev/null
+++ b/doc/plugins/contrib/ymlfront/discussion.mdwn
@@ -0,0 +1,4 @@
+My field-etc branch in git://git.pseudorandom.co.uk/git/smcv/ikiwiki.git (gitweb:
+)
+has some fixes for compatibility with old YAML modules, mostly done by imitating
+Joey's code in IkiWiki::Setup::Yaml. Please consider merging :-) --[[smcv]]
-- 
cgit v1.2.3


From 75afa94c36e199956014e108d7894007964c7348 Mon Sep 17 00:00:00 2001
From: Lars Wirzenius 
Date: Sun, 4 Apr 2010 21:05:07 +1200
Subject: Fix bzr plugin to work with bzr 2.0.

The output of "bzr log" seems to have changed a bit, so we change the
parsing accordingly. This has not been tested with earlier versions of
bzr.

Several problems seemed to occur, all in the bzr_log subroutine:

1. The @infos list would contain an empty hash, which would confuse the
   rest of the program.
2. This was because bzr_log would push an empty anonymous hash to the
   list whenever it thought a new record would start.
3. However, a new record marker (now?) also happens at th end of bzr log
   output.
4. Now we collect the record to a hash that gets pushed to the list only
   if it is not empty.
5. Also, sometimes bzr log outputs "revno: 1234 [merge]", so we catch only
   the revision number.
6. Finally, there may be non-headers at the of the output, so we ignore
   those.
---
 IkiWiki/Plugin/bzr.pm | 23 ++++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/IkiWiki/Plugin/bzr.pm b/IkiWiki/Plugin/bzr.pm
index 1ffdc2353..e813331b7 100644
--- a/IkiWiki/Plugin/bzr.pm
+++ b/IkiWiki/Plugin/bzr.pm
@@ -73,28 +73,37 @@ sub bzr_log ($) {
 	my @infos = ();
 	my $key = undef;
 
+    my $hash = {};
 	while (<$out>) {
 		my $line = $_;
 		my ($value);
 		if ($line =~ /^message:/) {
 			$key = "message";
-			$infos[$#infos]{$key} = "";
+			$$hash{$key} = "";
 		}
 		elsif ($line =~ /^(modified|added|renamed|renamed and modified|removed):/) {
 			$key = "files";
-			unless (defined($infos[$#infos]{$key})) { $infos[$#infos]{$key} = ""; }
+			unless (defined($$hash{$key})) { $$hash{$key} = ""; }
 		}
 		elsif (defined($key) and $line =~ /^  (.*)/) {
-			$infos[$#infos]{$key} .= "$1\n";
+			$$hash{$key} .= "$1\n";
 		}
 		elsif ($line eq "------------------------------------------------------------\n") {
+		    if (keys %$hash) {
+    		    push (@infos, $hash);
+		    }
+    		$hash = {};
 			$key = undef;
-			push (@infos, {});
 		}
-		else {
+		elsif ($line =~ /: /) {
 			chomp $line;
-				($key, $value) = split /: +/, $line, 2;
-			$infos[$#infos]{$key} = $value;
+			if ($line =~ /^revno: (\d+)/) {
+			    $key = "revno";
+			    $value = $1;
+			} else {
+    			($key, $value) = split /: +/, $line, 2;
+    		}
+			$$hash{$key} = $value;
 		} 
 	}
 	close $out;
-- 
cgit v1.2.3


From f206035a3a7ed0b37c082e80d6d1482983fa583b Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sun, 4 Apr 2010 12:17:03 -0400
Subject: fix indentation & whitespace

---
 IkiWiki/Plugin/bzr.pm | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/IkiWiki/Plugin/bzr.pm b/IkiWiki/Plugin/bzr.pm
index e813331b7..6e45c39e4 100644
--- a/IkiWiki/Plugin/bzr.pm
+++ b/IkiWiki/Plugin/bzr.pm
@@ -73,7 +73,7 @@ sub bzr_log ($) {
 	my @infos = ();
 	my $key = undef;
 
-    my $hash = {};
+	my $hash = {};
 	while (<$out>) {
 		my $line = $_;
 		my ($value);
@@ -89,10 +89,10 @@ sub bzr_log ($) {
 			$$hash{$key} .= "$1\n";
 		}
 		elsif ($line eq "------------------------------------------------------------\n") {
-		    if (keys %$hash) {
-    		    push (@infos, $hash);
-		    }
-    		$hash = {};
+			if (keys %$hash) {
+				push (@infos, $hash);
+			}
+			$hash = {};
 			$key = undef;
 		}
 		elsif ($line =~ /: /) {
@@ -100,11 +100,12 @@ sub bzr_log ($) {
 			if ($line =~ /^revno: (\d+)/) {
 			    $key = "revno";
 			    $value = $1;
-			} else {
-    			($key, $value) = split /: +/, $line, 2;
-    		}
+			}
+			else {
+				($key, $value) = split /: +/, $line, 2;
+			}
 			$$hash{$key} = $value;
-		} 
+		}
 	}
 	close $out;
 
@@ -222,7 +223,7 @@ sub rcs_recentchanges ($) {
 	foreach my $info (bzr_log($out)) {
 		my @pages = ();
 		my @message = ();
-        
+
 		foreach my $msgline (split(/\n/, $info->{message})) {
 			push @message, { line => $msgline };
 		}
-- 
cgit v1.2.3


From 992c2c6bca9a8ada45b043c6418b00d295012324 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sun, 4 Apr 2010 12:17:36 -0400
Subject: changelog

---
 debian/changelog | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 32a38925d..b7b614604 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+ikiwiki (3.20100404) UNRELEASED; urgency=low
+
+  * bzr: Fix bzr log parsing to work with bzr 2.0. (liw)
+
+ -- Joey Hess   Sun, 04 Apr 2010 12:17:11 -0400
+
 ikiwiki (3.20100403) unstable; urgency=low
 
   * websetup: Add websetup_unsafe to allow marking other settings
-- 
cgit v1.2.3


From 2a15f9415979e809ef332bdcffa83ff168d5bbef Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sun, 4 Apr 2010 12:20:26 -0400
Subject: rename hash and avoid unnecessary hash ref

Variable renamed to be a bit more self-explanatory.
Probably more idiomatic perl to not use a hash ref when a hash can be used.
---
 IkiWiki/Plugin/bzr.pm | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/IkiWiki/Plugin/bzr.pm b/IkiWiki/Plugin/bzr.pm
index 6e45c39e4..7eb5cfe93 100644
--- a/IkiWiki/Plugin/bzr.pm
+++ b/IkiWiki/Plugin/bzr.pm
@@ -73,26 +73,26 @@ sub bzr_log ($) {
 	my @infos = ();
 	my $key = undef;
 
-	my $hash = {};
+	my %info;
 	while (<$out>) {
 		my $line = $_;
 		my ($value);
 		if ($line =~ /^message:/) {
 			$key = "message";
-			$$hash{$key} = "";
+			$info{$key} = "";
 		}
 		elsif ($line =~ /^(modified|added|renamed|renamed and modified|removed):/) {
 			$key = "files";
-			unless (defined($$hash{$key})) { $$hash{$key} = ""; }
+			unless (defined($info{$key})) { $info{$key} = ""; }
 		}
 		elsif (defined($key) and $line =~ /^  (.*)/) {
-			$$hash{$key} .= "$1\n";
+			$info{$key} .= "$1\n";
 		}
 		elsif ($line eq "------------------------------------------------------------\n") {
-			if (keys %$hash) {
-				push (@infos, $hash);
+			if (keys %info) {
+				push (@infos, {%info});
 			}
-			$hash = {};
+			%info = ();
 			$key = undef;
 		}
 		elsif ($line =~ /: /) {
@@ -104,7 +104,7 @@ sub bzr_log ($) {
 			else {
 				($key, $value) = split /: +/, $line, 2;
 			}
-			$$hash{$key} = $value;
+			$info{$key} = $value;
 		}
 	}
 	close $out;
-- 
cgit v1.2.3


From c9af069b5947ab7fb4a52fe735ef684072868f31 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sun, 4 Apr 2010 12:23:12 -0400
Subject: more idiomatic perl

---
 IkiWiki/Plugin/bzr.pm | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/IkiWiki/Plugin/bzr.pm b/IkiWiki/Plugin/bzr.pm
index 7eb5cfe93..c96f2d695 100644
--- a/IkiWiki/Plugin/bzr.pm
+++ b/IkiWiki/Plugin/bzr.pm
@@ -83,15 +83,13 @@ sub bzr_log ($) {
 		}
 		elsif ($line =~ /^(modified|added|renamed|renamed and modified|removed):/) {
 			$key = "files";
-			unless (defined($info{$key})) { $info{$key} = ""; }
+			$info{$key} = "" unless defined $info{$key};
 		}
 		elsif (defined($key) and $line =~ /^  (.*)/) {
 			$info{$key} .= "$1\n";
 		}
 		elsif ($line eq "------------------------------------------------------------\n") {
-			if (keys %info) {
-				push (@infos, {%info});
-			}
+			push @infos, {%info} if keys %info;
 			%info = ();
 			$key = undef;
 		}
-- 
cgit v1.2.3


From 6876c5a588a55df212cde24d7eabaa76b67ac292 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sun, 4 Apr 2010 12:28:12 -0400
Subject: close bug, comment

---
 doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn b/doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn
index bda07d15b..39500af20 100644
--- a/doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn
+++ b/doc/bugs/bzr_2.0_breaks_bzr_plugin.mdwn
@@ -3,6 +3,10 @@ Version 2.0 of bzr seems to break the bzr plugin.
 I traced this to the bzr_log method in the plugin, and patching that seems to fix it. The plugin just needs to parse the input little bit differently.
 --liw
 
+> Patch applied, [[done]] (but, it would be good if it could be tested with
+> an older bzr, and it's a pity bzr's human-targeted log has to be parsed,
+> I assume there is no machine-targeted version?) --[[Joey]] 
+
     From fb897114124e627fd3acf5af8e784c9a77419a81 Mon Sep 17 00:00:00 2001
     From: Lars Wirzenius 
     Date: Sun, 4 Apr 2010 21:05:07 +1200
-- 
cgit v1.2.3


From b4a162dec20b6723a76ecda3ce262d9d1f9afbb1 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Sun, 4 Apr 2010 17:06:28 -0400
Subject: fix test suite

---
 IkiWiki/Plugin/bzr.pm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/IkiWiki/Plugin/bzr.pm b/IkiWiki/Plugin/bzr.pm
index c96f2d695..0efc26b49 100644
--- a/IkiWiki/Plugin/bzr.pm
+++ b/IkiWiki/Plugin/bzr.pm
@@ -106,6 +106,7 @@ sub bzr_log ($) {
 		}
 	}
 	close $out;
+	push @infos, {%info} if keys %info;
 
 	return @infos;
 }
-- 
cgit v1.2.3


From b51703569d35790f31dccc3dc2921e8bcccd5b49 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Mon, 5 Apr 2010 14:59:29 -0400
Subject: speed

---
 doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
index 8c6e1df3b..739a3d6b0 100644
--- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
+++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
@@ -181,6 +181,20 @@ That earlier version of the branch is also available for comparison:
 > to specify a sort method in other directives. --[[Joey]]
 >> Done. --[[smcv]]
 
+## speed
+
+I notice the implementation does not use the magic `$a` and `$b` globals.
+That nasty perl optimisation is still worthwhile:
+
+	perl -e 'use warnings; use strict; use Benchmark; sub a { $a <=> $b } sub b ($$) { $_[0] <=> $_[1] }; my @list=reverse(1..9999); timethese(10000, {a => sub {my @f=sort a @list}, b => sub {my @f=sort b  @list}, c => => sub {my @f=sort { b($a,$b) } @list}})'
+	Benchmark: timing 10000 iterations of a, b, c...
+	         a: 80 wallclock secs (76.74 usr +  0.05 sys = 76.79 CPU) @ 130.23/s (n=10000)
+	         b: 112 wallclock secs (106.14 usr +  0.20 sys = 106.34 CPU) @ 94.04/s (n=10000)
+                 c: 330 wallclock secs (320.25 usr +  0.17 sys = 320.42 CPU) @ 31.21/s (n=10000)
+
+Unfortunatly, I think that c is closest to the new implementation.
+--[[Joey]]
+
 ## Documentation from sort-package branch
 
 ### advanced sort orders (conditionally added to [[ikiwiki/pagespec/sorting]])
-- 
cgit v1.2.3


From 861080b918ef71d82f4a4b9a22093f4a379b5ef8 Mon Sep 17 00:00:00 2001
From: "http://smcv.pseudorandom.co.uk/" 
Date: Mon, 5 Apr 2010 19:19:00 +0000
Subject: potential performance improvements

---
 doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
index 739a3d6b0..2ce1de6a4 100644
--- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
+++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
@@ -195,6 +195,28 @@ That nasty perl optimisation is still worthwhile:
 Unfortunatly, I think that c is closest to the new implementation.
 --[[Joey]]
 
+> Unfortunately, `$a` isn't always `$main::a` - it's `$Package::a` where
+> `Package` is the call site of the sort call. This was a showstopper when
+> `sort` was a hook implemented in many packages, but now that it's a
+> `SortSpec`, I may be able to fix this by putting a `sort` wrapper in the
+> `SortSpec` namespace, so it's like this:
+>
+>     sub sort ($@)
+>     {
+>         my $cmp = shift;
+>         return sort $cmp @_;
+>     }
+>
+> which would mean that the comparison used `$IkiWiki::SortSpec::a`.
+>
+> I do notice that `pagespec_match_list` performs the sort before the
+> filter by pagespec. Is this a deliberate design choice, or
+> coincidence? I can see that when `limit` is used, this could be
+> used to only run the pagespec match function until `limit` pages
+> have been selected, but the cost is that every page in the wiki
+> is sorted. Or, it might be useful to do the filtering first, then
+> sort the sub-list thus produced, then finally apply the limit? --s
+
 ## Documentation from sort-package branch
 
 ### advanced sort orders (conditionally added to [[ikiwiki/pagespec/sorting]])
-- 
cgit v1.2.3


From 10f4695abd65db6c009864c5abb7cb5dfa1cf153 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Mon, 5 Apr 2010 15:28:54 -0400
Subject: response

---
 doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
index 2ce1de6a4..0aca74be2 100644
--- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
+++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn
@@ -165,7 +165,6 @@ That earlier version of the branch is also available for comparison:
 >>>>>>> I've kept the semantics from `report` as-is, then:
 >>>>>>> e.g. `sort="age -title"`. --s
 
->>>>>
 >>>>> Perhaps we could borrow from `meta updated` and use `update_age`?
 >>>>> `updateage` would perhaps be a more normal IkiWiki style - but that
 >>>>> makes me think that updateage is a quantity analagous to tonnage or
@@ -190,7 +189,7 @@ That nasty perl optimisation is still worthwhile:
 	Benchmark: timing 10000 iterations of a, b, c...
 	         a: 80 wallclock secs (76.74 usr +  0.05 sys = 76.79 CPU) @ 130.23/s (n=10000)
 	         b: 112 wallclock secs (106.14 usr +  0.20 sys = 106.34 CPU) @ 94.04/s (n=10000)
-                 c: 330 wallclock secs (320.25 usr +  0.17 sys = 320.42 CPU) @ 31.21/s (n=10000)
+	         c: 330 wallclock secs (320.25 usr +  0.17 sys = 320.42 CPU) @ 31.21/s (n=10000)
 
 Unfortunatly, I think that c is closest to the new implementation.
 --[[Joey]]
@@ -217,6 +216,10 @@ Unfortunatly, I think that c is closest to the new implementation.
 > is sorted. Or, it might be useful to do the filtering first, then
 > sort the sub-list thus produced, then finally apply the limit? --s
 
+>> Yes, it was deliberate, pagespec matching can be expensive enough that
+>> needing to sort a lot of pages seems likely to be less work. (I don't
+>> remember what benchmarking was done though.) --[[Joey]] 
+
 ## Documentation from sort-package branch
 
 ### advanced sort orders (conditionally added to [[ikiwiki/pagespec/sorting]])
-- 
cgit v1.2.3


From 09d4e9d6bb7a049b0721ffbf7dc6e64bee4404cc Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Mon, 5 Apr 2010 16:34:49 -0400
Subject: comments: Fix missing entity encoding in title.

The meta title data set by comments needs to be encoded the same way that
meta encodes it. (NB The security implications of the missing encoding
are small.)

Note that meta's encoding of title, description, and guid data, and not
other data, is probably a special case that should be removed. Instead,
these values should be encoded when used. I have avoided doing so here
because that would mean forcing a wiki rebuild on upgrade to have the data
consitently encoded.
---
 IkiWiki/Plugin/comments.pm | 4 +++-
 debian/changelog           | 1 +
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
index 98786f432..460341710 100644
--- a/IkiWiki/Plugin/comments.pm
+++ b/IkiWiki/Plugin/comments.pm
@@ -221,7 +221,9 @@ sub preprocess {
 	}
 
 	if (defined $params{subject}) {
-		$pagestate{$page}{meta}{title} = $params{subject};
+		# encode title the same way meta does
+		eval q{use HTML::Entities};
+		$pagestate{$page}{meta}{title} = HTML::Entities::encode_numeric(decode_entities($params{subject}));
 	}
 
 	if ($params{page} =~ m/\/\Q$config{comments_pagename}\E\d+_/) {
diff --git a/debian/changelog b/debian/changelog
index b7b614604..be89d0918 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
 ikiwiki (3.20100404) UNRELEASED; urgency=low
 
   * bzr: Fix bzr log parsing to work with bzr 2.0. (liw)
+  * comments: Fix missing entity encoding in title.
 
  -- Joey Hess   Sun, 04 Apr 2010 12:17:11 -0400
 
-- 
cgit v1.2.3


From a01028ae8156679a108a40c62aa6b4cc3e2b3ae7 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Mon, 5 Apr 2010 17:02:10 -0400
Subject: txt: Add a special case for robots.txt.

---
 IkiWiki/Plugin/txt.pm | 9 ++++++++-
 debian/changelog      | 1 +
 doc/plugins/txt.mdwn  | 5 +++++
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/IkiWiki/Plugin/txt.pm b/IkiWiki/Plugin/txt.pm
index 1ed9f0856..0d9a0b35b 100644
--- a/IkiWiki/Plugin/txt.pm
+++ b/IkiWiki/Plugin/txt.pm
@@ -39,7 +39,14 @@ sub filter (@) {
 	my %params = @_;
 	my $content = $params{content};
 
-	if (defined $pagesources{$params{page}} && $pagesources{$params{page}} =~ /\.txt$/) {
+	if (defined $pagesources{$params{page}} &&
+	    $pagesources{$params{page}} =~ /\.txt$/) {
+		if ($pagesources{$params{page}} eq 'robots.txt' &&
+		    $params{page} eq $params{destpage}) {
+			will_render($params{page}, 'robots.txt');
+			writefile('robots.txt', $config{destdir}, $content);
+		}
+
 		encode_entities($content, "<>&");
 		if ($findurl) {
 			my $finder = URI::Find->new(sub {
diff --git a/debian/changelog b/debian/changelog
index be89d0918..77d17f566 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,7 @@ ikiwiki (3.20100404) UNRELEASED; urgency=low
 
   * bzr: Fix bzr log parsing to work with bzr 2.0. (liw)
   * comments: Fix missing entity encoding in title.
+  * txt: Add a special case for robots.txt.
 
  -- Joey Hess   Sun, 04 Apr 2010 12:17:11 -0400
 
diff --git a/doc/plugins/txt.mdwn b/doc/plugins/txt.mdwn
index 420898d09..a3087c9e0 100644
--- a/doc/plugins/txt.mdwn
+++ b/doc/plugins/txt.mdwn
@@ -12,3 +12,8 @@ The only exceptions are that [[WikiLinks|ikiwiki/WikiLink]] and
 [[directives|ikiwiki/directive]] are still expanded by
 ikiwiki, and that, if the [[!cpan URI::Find]] perl module is installed, URLs
 in the txt file are converted to hyperlinks.
+
+----
+
+As a special case, a file `robots.txt` will be copied intact into the
+`destdir`, as well as creating a wiki page named "robots".
-- 
cgit v1.2.3


From f8457f9a902e880e0240ba7f5180c22999f0e713 Mon Sep 17 00:00:00 2001
From: Joey Hess 
Date: Mon, 5 Apr 2010 17:18:30 -0400
Subject: fix bug that left stray 

tags Both markdown and tidy add paragraph tags around text, that needs to be stripped when the text is a short, one line fragment that is being inserted into a larger page. tidy also adds several newlines to the end, and this broke removal of the paragraph tags. --- IkiWiki.pm | 7 +++---- doc/bugs/stray___60____47__p__62___tags.mdwn | 2 ++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 6739ba56c..0cbc84788 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1164,7 +1164,7 @@ sub htmlize ($$$$) { my $content=shift; my $oneline = $content !~ /\n/; - + if (exists $hooks{htmlize}{$type}) { $content=$hooks{htmlize}{$type}{call}->( page => $page, @@ -1185,10 +1185,9 @@ sub htmlize ($$$$) { if ($oneline) { # hack to get rid of enclosing junk added by markdown - # and other htmlizers + # and other htmlizers/sanitizers $content=~s/^

//i; - $content=~s/<\/p>$//i; - chomp $content; + $content=~s/<\/p>\n*$//i; } return $content; diff --git a/doc/bugs/stray___60____47__p__62___tags.mdwn b/doc/bugs/stray___60____47__p__62___tags.mdwn index 6e508ffda..99d6fe09f 100644 --- a/doc/bugs/stray___60____47__p__62___tags.mdwn +++ b/doc/bugs/stray___60____47__p__62___tags.mdwn @@ -13,3 +13,5 @@ I believe that this snippet in `IkiWiki.pm` might be the reason for the imbalanc } The fact that HTML in a `\[[!meta title]]` is added but then escaped might indicate that some other bug is involved. + +> [[done]] --[[Joey]] -- cgit v1.2.3 From cb8b2f80b2f8c91eba3f3a6a5b9913ab80326df8 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Mon, 5 Apr 2010 22:50:51 +0100 Subject: Use $a and $b for SortSpec cmp callbacks --- IkiWiki.pm | 27 ++++++++++++++++++--------- IkiWiki/Plugin/meta.pm | 14 ++++++-------- IkiWiki/Plugin/sortnaturally.pm | 4 ++-- doc/plugins/write.mdwn | 20 ++++++++++---------- t/pagespec_match_list.t | 2 +- 5 files changed, 37 insertions(+), 30 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index d716e8b39..da36494fb 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1975,10 +1975,10 @@ sub sortspec_translate ($) { if (exists $IkiWiki::SortSpec::{"cmp_$word"}) { if (defined $params) { push @data, $params; - $code .= "IkiWiki::SortSpec::cmp_$word(\@_, \$data[$#data])"; + $code .= "IkiWiki::SortSpec::cmp_$word(\$data[$#data])"; } else { - $code .= "IkiWiki::SortSpec::cmp_$word(\@_, undef)"; + $code .= "IkiWiki::SortSpec::cmp_$word(undef)"; } } else { @@ -2095,9 +2095,8 @@ sub pagespec_match_list ($$;@) { } if (defined $params{sort}) { - my $f = sortspec_translate($params{sort}); - - @candidates = sort { $f->($a, $b) } @candidates; + @candidates = IkiWiki::SortSpec::sort_pages($params{sort}, + @candidates); } @candidates=reverse(@candidates) if $params{reverse}; @@ -2412,13 +2411,23 @@ sub match_ip ($$;@) { package IkiWiki::SortSpec; +# This is in the SortSpec namespace so that the $a and $b that sort() uses +# $IkiWiki::SortSpec::a and $IkiWiki::SortSpec::b, so that plugins' cmp +# functions can access them easily. +sub sort_pages +{ + my $f = IkiWiki::sortspec_translate(shift); + + return sort $f @_; +} + sub cmp_title { - IkiWiki::pagetitle(IkiWiki::basename($_[0])) + IkiWiki::pagetitle(IkiWiki::basename($a)) cmp - IkiWiki::pagetitle(IkiWiki::basename($_[1])) + IkiWiki::pagetitle(IkiWiki::basename($b)) } -sub cmp_mtime { $IkiWiki::pagemtime{$_[1]} <=> $IkiWiki::pagemtime{$_[0]} } -sub cmp_age { $IkiWiki::pagectime{$_[1]} <=> $IkiWiki::pagectime{$_[0]} } +sub cmp_mtime { $IkiWiki::pagemtime{$b} <=> $IkiWiki::pagemtime{$a} } +sub cmp_age { $IkiWiki::pagectime{$b} <=> $IkiWiki::pagectime{$a} } 1 diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm index 4992617d0..553f93455 100644 --- a/IkiWiki/Plugin/meta.pm +++ b/IkiWiki/Plugin/meta.pm @@ -374,25 +374,23 @@ sub match_copyright ($$;@) { package IkiWiki::SortSpec; sub cmp_meta { - my $left = $_[0]; - my $right = $_[1]; - my $meta = $_[2]; + my $meta = $_[0]; error(gettext("sort=meta requires a parameter")) unless defined $meta; if ($meta eq 'updated' || $meta eq 'date') { - return IkiWiki::Plugin::meta::get_sort_key($left, $meta) + return IkiWiki::Plugin::meta::get_sort_key($a, $meta) <=> - IkiWiki::Plugin::meta::get_sort_key($right, $meta); + IkiWiki::Plugin::meta::get_sort_key($b, $meta); } - return IkiWiki::Plugin::meta::get_sort_key($left, $meta) + return IkiWiki::Plugin::meta::get_sort_key($a, $meta) cmp - IkiWiki::Plugin::meta::get_sort_key($right, $meta); + IkiWiki::Plugin::meta::get_sort_key($b, $meta); } # A prototype of how sort=title could behave in 4.0 or something sub cmp_meta_title { - $_[2] = 'title'; + $_[0] = 'title'; return cmp_meta(@_); } diff --git a/IkiWiki/Plugin/sortnaturally.pm b/IkiWiki/Plugin/sortnaturally.pm index f498820a5..92453749d 100644 --- a/IkiWiki/Plugin/sortnaturally.pm +++ b/IkiWiki/Plugin/sortnaturally.pm @@ -25,8 +25,8 @@ sub checkconfig () { package IkiWiki::SortSpec; sub cmp_title_natural { - Sort::Naturally::ncmp(IkiWiki::pagetitle(IkiWiki::basename($_[0])), - IkiWiki::pagetitle(IkiWiki::basename($_[1]))) + Sort::Naturally::ncmp(IkiWiki::pagetitle(IkiWiki::basename($a)), + IkiWiki::pagetitle(IkiWiki::basename($b))) } 1; diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index b67142230..f42cc86ae 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -1117,16 +1117,16 @@ Similarly, it's possible to write plugins that add new functions as the IkiWiki::SortSpec package named `cmp_foo`, which will be used when sorting by `foo` or `foo(...)` is requested. -The function will be passed three or more parameters. The first two are -page names, and the third is `undef` if invoked as `foo`, or the parameter -`"bar"` if invoked as `foo(bar)`. It may also be passed additional, named -parameters. - -It should return the same thing as Perl's `cmp` and `<=>` operators: negative -if the first argument is less than the second, positive if the first argument -is greater, or zero if they are considered equal. It may also raise an -error using `error`, for instance if it needs a parameter but one isn't -provided. +The names of pages to be compared are in the global variables `$a` and `$b` +in the IkiWiki::SortSpec package. The function should return the same thing +as Perl's `cmp` and `<=>` operators: negative if `$a` is less than `$b`, +positive if `$a` is greater, or zero if they are considered equal. It may +also raise an error using `error`, for instance if it needs a parameter but +one isn't provided. + +The function will also be passed one or more parameters. The first is +`undef` if invoked as `foo`, or the parameter `"bar"` if invoked as `foo(bar)`; +it may also be passed additional, named parameters. ### Setup plugins diff --git a/t/pagespec_match_list.t b/t/pagespec_match_list.t index 68112f5c0..2ad7a9105 100755 --- a/t/pagespec_match_list.t +++ b/t/pagespec_match_list.t @@ -12,7 +12,7 @@ IkiWiki::checkconfig(); { package IkiWiki::SortSpec; - sub cmp_path { $_[0] cmp $_[1] } + sub cmp_path { $a cmp $b } } %pagesources=( -- cgit v1.2.3 From be1d97c0bd495fe876853d7d7f6eb42041867649 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Tue, 6 Apr 2010 00:58:55 +0100 Subject: Only store titlesort in meta pagestate if it differs from title --- IkiWiki/Plugin/meta.pm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm index 553f93455..7f19b46a3 100644 --- a/IkiWiki/Plugin/meta.pm +++ b/IkiWiki/Plugin/meta.pm @@ -88,13 +88,18 @@ sub preprocess (@) { # Metadata collection that needs to happen during the scan pass. if ($key eq 'title') { - $pagestate{$page}{meta}{title}=HTML::Entities::encode_numeric($value); + my $encoded = HTML::Entities::encode_numeric($value); + $pagestate{$page}{meta}{title} = $encoded; + if (exists $params{sortas}) { $pagestate{$page}{meta}{titlesort}=$params{sortas}; } - else { + elsif ($encoded ne $value) { $pagestate{$page}{meta}{titlesort}=$value; } + else { + delete $pagestate{$page}{meta}{titlesort}; + } return ""; } elsif ($key eq 'description') { -- cgit v1.2.3 From a2dc8c9373b36f7cc8da239b823b5839788a743d Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Tue, 6 Apr 2010 00:59:16 +0100 Subject: Only store authorsort in meta pagestate if it differs from author --- IkiWiki/Plugin/meta.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm index 7f19b46a3..34e902bec 100644 --- a/IkiWiki/Plugin/meta.pm +++ b/IkiWiki/Plugin/meta.pm @@ -131,7 +131,7 @@ sub preprocess (@) { $pagestate{$page}{meta}{authorsort}=$params{sortas}; } else { - $pagestate{$page}{meta}{authorsort}=$value; + delete $pagestate{$page}{meta}{authorsort}; } # fallthorough } -- cgit v1.2.3 From b186ec1b4cb8145d6a6cb68478e23d7fb0fa1476 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Tue, 6 Apr 2010 00:02:18 +0000 Subject: ready for review, I think --- doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 51 +++++++++++++++++----- 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn index 0aca74be2..d4da13feb 100644 --- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn +++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn @@ -20,7 +20,7 @@ That earlier version of the branch is also available for comparison: >> I wonder if IkiWiki would benefit from the concept of a "sortspec", like a [[ikiwiki/PageSpec]] but dedicated to sorting lists of pages rather than defining lists of pages? Rather than defining a sort-hook, define a SortSpec class, and enable people to add their own sort methods as functions defined inside that class, similarly to the way they can add their own pagespec definitions. --[[KathrynAndersen]] ->>> [[!template id=gitbranch branch=smcv/sort-package author="[[Simon_McVittie|smcv]]"]] +>>> [[!template id=gitbranch branch=smcv/ready/sort-package author="[[Simon_McVittie|smcv]]"]] >>> I'd be inclined to think that's overkill, but it wasn't very hard to >>> implement, and in a way is more elegant. I set it up so sort mechanisms >>> share the `IkiWiki::PageSpec` package, but with a `cmp_` prefix. Gitweb: @@ -207,7 +207,26 @@ Unfortunatly, I think that c is closest to the new implementation. > } > > which would mean that the comparison used `$IkiWiki::SortSpec::a`. -> +> --s + +>> I've now done this. On a wiki with many [[plugins/contrib/album]]s +>> (a full rebuild takes half an hour!), I tested a refresh after +>> `touch tags/*.mdwn` (my tag pages contain inlines of the form +>> `tagged(foo)` sorted by date, so they exercise sorting). +>> I also tried removing sorting from `pagespec_match_list` +>> altogether, as an upper bound for how fast we can possibly make it. +>> +>> * `master` at branch point: 63.72user 0.29system +>> * `master` at branch point: 63.91user 0.37system +>> * my branch, with `@_`: 65.28user 0.29system +>> * my branch, with `@_`: 65.21user 0.28system +>> * my branch, with `$a`: 64.09user 0.28system +>> * my branch, with `$a`: 63.83user 0.36system +>> * not sorted at all: 58.99user 0.29system +>> * not sorted at all: 58.92user 0.29system +>> +>> --s + > I do notice that `pagespec_match_list` performs the sort before the > filter by pagespec. Is this a deliberate design choice, or > coincidence? I can see that when `limit` is used, this could be @@ -218,7 +237,15 @@ Unfortunatly, I think that c is closest to the new implementation. >> Yes, it was deliberate, pagespec matching can be expensive enough that >> needing to sort a lot of pages seems likely to be less work. (I don't ->> remember what benchmarking was done though.) --[[Joey]] +>> remember what benchmarking was done though.) --[[Joey]] + +>>> We discussed this on IRC and Joey pointed out that this also affects +>>> dependency calculation, so I'm not going to get into this now... --s + +Joey pointed out on IRC that the `titlesort` feature duplicates all the +meta titles. I did that in order to sort by the unescaped version, but +I've now changed the branch to only store that if it makes a difference. +--s ## Documentation from sort-package branch @@ -262,13 +289,13 @@ Similarly, it's possible to write plugins that add new functions as the IkiWiki::SortSpec package named `cmp_foo`, which will be used when sorting by `foo` or `foo(...)` is requested. -The function will be passed three or more parameters. The first two are -page names, and the third is `undef` if invoked as `foo`, or the parameter -`"bar"` if invoked as `foo(bar)`. It may also be passed additional, named -parameters. +The names of pages to be compared are in the global variables `$a` and `$b` +in the IkiWiki::SortSpec package. The function should return the same thing +as Perl's `cmp` and `<=>` operators: negative if `$a` is less than `$b`, +positive if `$a` is greater, or zero if they are considered equal. It may +also raise an error using `error`, for instance if it needs a parameter but +one isn't provided. -It should return the same thing as Perl's `cmp` and `<=>` operators: negative -if the first argument is less than the second, positive if the first argument -is greater, or zero if they are considered equal. It may also raise an -error using `error`, for instance if it needs a parameter but one isn't -provided. +The function will also be passed one or more parameters. The first is +`undef` if invoked as `foo`, or the parameter `"bar"` if invoked as `foo(bar)`; +it may also be passed additional, named parameters. -- cgit v1.2.3 From 1fb5b9f61c114a0151416d2de69b5ea420c6706b Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Tue, 6 Apr 2010 00:04:47 +0000 Subject: switch branch for review to use ready/foo convention --- doc/todo/matching_different_kinds_of_links.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/todo/matching_different_kinds_of_links.mdwn b/doc/todo/matching_different_kinds_of_links.mdwn index c4383c0b7..5678ee7e2 100644 --- a/doc/todo/matching_different_kinds_of_links.mdwn +++ b/doc/todo/matching_different_kinds_of_links.mdwn @@ -53,7 +53,7 @@ I don't have any opinion on this syntax (whether it's good or not)...--Ivan Z. ------- ->> [[!template id=gitbranch author="[[Simon_McVittie|smcv]]" branch=smcv/link-types]] +>> [[!template id=gitbranch author="[[Simon_McVittie|smcv]]" branch=smcv/ready/link-types]] >> [[!tag patch]] ## Documentation for smcv's branch -- cgit v1.2.3 From 5408279b5ffd7038bb0c279d1379c7e0d21d0a96 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Tue, 6 Apr 2010 01:31:38 +0100 Subject: HTML-encode meta title, description, guid on output, but not in the pagestate This makes them consistent with the rest of the meta keys. A wiki rebuild will be needed on upgrade to this version; until the wiki is rebuilt, double-escaping will occur in the titles of pages that have not changed. --- IkiWiki/Plugin/comments.pm | 4 ++-- IkiWiki/Plugin/inline.pm | 3 ++- IkiWiki/Plugin/meta.pm | 15 ++++++++++----- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 460341710..0aa043215 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -221,9 +221,9 @@ sub preprocess { } if (defined $params{subject}) { - # encode title the same way meta does + # decode title the same way meta does eval q{use HTML::Entities}; - $pagestate{$page}{meta}{title} = HTML::Entities::encode_numeric(decode_entities($params{subject})); + $pagestate{$page}{meta}{title} = decode_entities($params{subject}); } if ($params{page} =~ m/\/\Q$config{comments_pagename}\E\d+_/) { diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 44919e58c..644cb588d 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -553,7 +553,8 @@ sub genfeed ($$$$$@) { if (exists $pagestate{$p}) { if (exists $pagestate{$p}{meta}{guid}) { - $itemtemplate->param(guid => $pagestate{$p}{meta}{guid}); + eval q{use HTML::Entities}; + $itemtemplate->param(guid => HTML::Entities::encode_numeric($pagestate{$p}{meta}{guid})); } if (exists $pagestate{$p}{meta}{updated}) { diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm index 5f046cb2a..9906c3f57 100644 --- a/IkiWiki/Plugin/meta.pm +++ b/IkiWiki/Plugin/meta.pm @@ -88,15 +88,15 @@ sub preprocess (@) { # Metadata collection that needs to happen during the scan pass. if ($key eq 'title') { - $pagestate{$page}{meta}{title}=HTML::Entities::encode_numeric($value); + $pagestate{$page}{meta}{title}=$value; return ""; } elsif ($key eq 'description') { - $pagestate{$page}{meta}{description}=HTML::Entities::encode_numeric($value); + $pagestate{$page}{meta}{description}=$value; # fallthrough } elsif ($key eq 'guid') { - $pagestate{$page}{meta}{guid}=HTML::Entities::encode_numeric($value); + $pagestate{$page}{meta}{guid}=$value; # fallthrough } elsif ($key eq 'license') { @@ -264,15 +264,20 @@ sub pagetemplate (@) { $template->param(meta => join("\n", grep { (! $seen{$_}) && ($seen{$_}=1) } @{$metaheaders{$page}})); } if (exists $pagestate{$page}{meta}{title} && $template->query(name => "title")) { - $template->param(title => $pagestate{$page}{meta}{title}); + $template->param(title => HTML::Entities::encode_numeric($pagestate{$page}{meta}{title})); $template->param(title_overridden => 1); } - foreach my $field (qw{author authorurl description permalink}) { + foreach my $field (qw{author authorurl permalink}) { $template->param($field => $pagestate{$page}{meta}{$field}) if exists $pagestate{$page}{meta}{$field} && $template->query(name => $field); } + foreach my $field (qw{description}) { + $template->param($field => HTML::Entities::encode_numeric($pagestate{$page}{meta}{$field})) + if exists $pagestate{$page}{meta}{$field} && $template->query(name => $field); + } + foreach my $field (qw{license copyright}) { if (exists $pagestate{$page}{meta}{$field} && $template->query(name => $field) && ($page eq $destpage || ! exists $pagestate{$destpage}{meta}{$field} || -- cgit v1.2.3 From 26bf69d17aff4c74dd6c368712091d8c1fc977a6 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Tue, 6 Apr 2010 00:49:38 +0000 Subject: as seen on IRC --- ...but_not_all_meta_fields_are_stored_escaped.mdwn | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn diff --git a/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn b/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn new file mode 100644 index 000000000..d79318dd8 --- /dev/null +++ b/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn @@ -0,0 +1,32 @@ +[[!template id=gitbranch branch=smcv/unescaped-meta author="[[Simon_McVittie|smcv]]"]] +(Warning: this branch has not been tested thoroughly.) + +While discussing the [[plugins/meta]] plugin on IRC, Joey pointed out that +it stores most meta fields unescaped, but 'title', 'guid' and 'description' +are special-cased and stored escaped (with numeric XML/HTML entities). This +is to avoid emitting markup in the of a HTML page, or in an RSS/Atom +feed, neither of which are subject to the [[plugins/htmlscrubber]]. + +However, having the meta fields "partially escaped" like this is somewhat +error-prone. Joey suggested that perhaps everything should be stored +unescaped, and the escaping should be done on output; this branch +implements that. + +Points of extra subtlety: + +* The title given to the [[plugins/search]] plugin was previously HTML; + now it's plain text, potentially containing markup characters. I suspect + that that's what Xapian wants anyway (which is why I didn't change it), + but I could be wrong... + +* Page descriptions in the HTML `<head>` were previously double-escaped: + the description was stored escaped with numeric entities, then that was + output with a second layer of escaping! In this branch, I just emit + the page description escaped once, as was presumably the intention. + +* It's safe to apply this change to a wiki and neglect to rebuild it + (assuming I implemented it correctly!), but until the wiki is rebuilt, + titles, descriptions and GUIDs for unchanged pages will appear + double-escaped on any page that inlines them in `quick=yes` mode, and + is rebuilt for some other reason. The failure mode is too much escaping + rather than too little, so it shouldn't be a security problem. -- cgit v1.2.3 From 0ed94696c0a449b425bc319297d39060ee24dcf2 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Tue, 6 Apr 2010 00:50:51 +0000 Subject: pages talking about escaping should really be escaped correctly --- doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn b/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn index d79318dd8..cbfcfd6b7 100644 --- a/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn +++ b/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn @@ -4,7 +4,7 @@ While discussing the [[plugins/meta]] plugin on IRC, Joey pointed out that it stores most meta fields unescaped, but 'title', 'guid' and 'description' are special-cased and stored escaped (with numeric XML/HTML entities). This -is to avoid emitting markup in the <title> of a HTML page, or in an RSS/Atom +is to avoid emitting markup in the `<title>` of a HTML page, or in an RSS/Atom feed, neither of which are subject to the [[plugins/htmlscrubber]]. However, having the meta fields "partially escaped" like this is somewhat -- cgit v1.2.3 From 315bcf866c490ae2041cef59f960e8021d52e840 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Tue, 6 Apr 2010 00:51:27 +0000 Subject: tag as patch --- doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn b/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn index cbfcfd6b7..6a934d4eb 100644 --- a/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn +++ b/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn @@ -1,4 +1,5 @@ [[!template id=gitbranch branch=smcv/unescaped-meta author="[[Simon_McVittie|smcv]]"]] +[[!tag patch]] (Warning: this branch has not been tested thoroughly.) While discussing the [[plugins/meta]] plugin on IRC, Joey pointed out that -- cgit v1.2.3 From 1f112d570ef235416c4001605e15980b2f628da4 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Tue, 6 Apr 2010 00:55:54 +0000 Subject: if applied, reverting this would be problematic --- doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn b/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn index 6a934d4eb..8e1ca42e0 100644 --- a/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn +++ b/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn @@ -31,3 +31,9 @@ Points of extra subtlety: double-escaped on any page that inlines them in `quick=yes` mode, and is rebuilt for some other reason. The failure mode is too much escaping rather than too little, so it shouldn't be a security problem. + +* Reverting this change, if applied, is more dangerous; until the wiki is + rebuilt, any titles, descriptions and GUIDs on unchanged pages that + contained markup could appear unescaped on any page that inlines them + in `quick=yes` mode, and is rebuilt for some other reason. The failure + mode here would be too little escaping, i.e. cross-site scripting. -- cgit v1.2.3 From 5f8df5828834c0163d04ad3b949888d78e37ae73 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Tue, 6 Apr 2010 03:59:09 +0000 Subject: --- doc/plugins/contrib/ymlfront/discussion.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/plugins/contrib/ymlfront/discussion.mdwn b/doc/plugins/contrib/ymlfront/discussion.mdwn index f437624b6..ce3b2b483 100644 --- a/doc/plugins/contrib/ymlfront/discussion.mdwn +++ b/doc/plugins/contrib/ymlfront/discussion.mdwn @@ -2,3 +2,6 @@ My field-etc branch in git://git.pseudorandom.co.uk/git/smcv/ikiwiki.git (gitweb <http://git.pseudorandom.co.uk/smcv/ikiwiki.git?a=shortlog;h=refs/heads/field-etc>) has some fixes for compatibility with old YAML modules, mostly done by imitating Joey's code in IkiWiki::Setup::Yaml. Please consider merging :-) --[[smcv]] + +> I would if I could *find* it. I checked out the "field-etc" branch, but I can't find the plugins in question under IkiWiki/Plugin; am I looking in the wrong place, or what? +> --[[KathrynAndersen]] -- cgit v1.2.3 From 06f58b1b888a6cea1a9a5cce9e098428f0adab75 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Tue, 6 Apr 2010 04:00:47 +0000 Subject: response --- doc/plugins/contrib/field/discussion.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/plugins/contrib/field/discussion.mdwn b/doc/plugins/contrib/field/discussion.mdwn index c2b75a76d..af5bfd6c9 100644 --- a/doc/plugins/contrib/field/discussion.mdwn +++ b/doc/plugins/contrib/field/discussion.mdwn @@ -92,3 +92,5 @@ you separated out `ymlfront`. Trivial patch available from field-etc branch in git://git.pseudorandom.co.uk/git/smcv/ikiwiki.git (gitweb: <http://git.pseudorandom.co.uk/smcv/ikiwiki.git?a=shortlog;h=refs/heads/field-etc>) --[[smcv]] + +> Can do for the field plugin (delete one line? Easy.) Will push when I get to a better connection. --[[KathrynAndersen]] -- cgit v1.2.3 From ee1e7079ebe0a1e9d3d6c79cb221a0fb86f423d5 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Tue, 6 Apr 2010 04:41:55 +0000 Subject: more flexible underlays, please? --- doc/todo/optional_underlaydir_prefix.mdwn | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 doc/todo/optional_underlaydir_prefix.mdwn diff --git a/doc/todo/optional_underlaydir_prefix.mdwn b/doc/todo/optional_underlaydir_prefix.mdwn new file mode 100644 index 000000000..8fd6d76c5 --- /dev/null +++ b/doc/todo/optional_underlaydir_prefix.mdwn @@ -0,0 +1,20 @@ +For security reasons, symlinks are disabled in IkiWiki. That's fair enough, but that means that some problems, which one could otherwise solve by using a symlink, cannot be solved. The specfic problem in this case is that all underlays are placed at the root of the wiki, when it could be more convenient to place some underlays in specific sub-directories. + +Use-case 1 (to keep things tidy): + +Currently IkiWiki has some javascript files in `underlays/javascript`; that directory is given as one of the underlay directories. Thus, all the javascript files appear in the root of the generated site. But it would be tidier if one could say "put the contents of *this* underlaydir under the `js` directory". + +Use-case 2 (a read-only external dir): + +Suppose I want to include a subset of `/usr/local/share/docs` on my wiki, say the docs about `foo`. But I want them to be under the `docs/foo` sub-directory on the generated site. Currently I can't do that. If I give `/usr/local/share/docs/foo` as an underlaydir, then the contents of that will be in the root of the site, rather than under `docs/foo`. And if I give `/usr/local/share/docs` as an underlaydir, then the contents of the `foo` dir will be under `foo`, but it will also include every other thing in `/usr/local/share/docs`. + +Since we can't use symlinks in an underlay dir to link to these directories, then perhaps one could give a specific underlay dir a specific prefix, which defines the sub-directory that the underlay should appear in. + +I'm not sure how this would be implemented, but I guess it could be configured something like this: + + prefixed_underlay => { + 'js' => '/usr/local/share/ikiwiki/javascript', + 'docs/foo' => '/usr/local/share/docs/foo', + } + +[[!taglink wishlist]] -- cgit v1.2.3 From 2efec70c7e55f9426d7051ffebc6c1eb55afb16b Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Tue, 6 Apr 2010 10:47:28 +0000 Subject: oops, branch returned now --- doc/plugins/contrib/ymlfront/discussion.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/plugins/contrib/ymlfront/discussion.mdwn b/doc/plugins/contrib/ymlfront/discussion.mdwn index ce3b2b483..3ad02af29 100644 --- a/doc/plugins/contrib/ymlfront/discussion.mdwn +++ b/doc/plugins/contrib/ymlfront/discussion.mdwn @@ -5,3 +5,7 @@ Joey's code in IkiWiki::Setup::Yaml. Please consider merging :-) --[[smcv]] > I would if I could *find* it. I checked out the "field-etc" branch, but I can't find the plugins in question under IkiWiki/Plugin; am I looking in the wrong place, or what? > --[[KathrynAndersen]] + +>> Sorry, I accidentally removed `field-etc` by pushing with `--mirror` from a +>> different checkout. I've put it back; it's a branch from your `ikiplugins.git`, +>> so yes, the code should be in `IkiWiki/Plugin`. --[[smcv]] -- cgit v1.2.3 From 089a7faff8defe98ffc593702be93f8f35d2153a Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 13:25:26 -0400 Subject: first question --- doc/plugins/contrib/field/discussion.mdwn | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/doc/plugins/contrib/field/discussion.mdwn b/doc/plugins/contrib/field/discussion.mdwn index af5bfd6c9..646a5f3f4 100644 --- a/doc/plugins/contrib/field/discussion.mdwn +++ b/doc/plugins/contrib/field/discussion.mdwn @@ -94,3 +94,18 @@ field-etc branch in git://git.pseudorandom.co.uk/git/smcv/ikiwiki.git (gitweb: --[[smcv]] > Can do for the field plugin (delete one line? Easy.) Will push when I get to a better connection. --[[KathrynAndersen]] + +---- + +Disclaimer: I've only looked at this plugin and ymlfront, not other related +stuff yet. (I quite like ymlfront, so I looked at this as its dependency. :) +I also don't want to annoy you with a lot of design discussion +if your main goal was to write a plugin that did exactly what you wanted. + +My first question is: Why we need another plugin storing metadata +about the page, when we already have the meta plugin? Much of the +complication around the field plugin has to do with it accessing info +belonging to the meta plugin, and generalizing that to be able to access +info stored by other plugins too. (But I don't see any other plugins that +currently store such info). Then too, it raises points of confusion like +smcv's discuission of field author vs meta author above. --[[Joey]] -- cgit v1.2.3 From c87ddb6908485fecff9c516223ca0b2973df88f6 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 13:58:55 -0400 Subject: idea --- doc/todo/optional_underlaydir_prefix.mdwn | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/doc/todo/optional_underlaydir_prefix.mdwn b/doc/todo/optional_underlaydir_prefix.mdwn index 8fd6d76c5..dd11d062d 100644 --- a/doc/todo/optional_underlaydir_prefix.mdwn +++ b/doc/todo/optional_underlaydir_prefix.mdwn @@ -4,6 +4,9 @@ Use-case 1 (to keep things tidy): Currently IkiWiki has some javascript files in `underlays/javascript`; that directory is given as one of the underlay directories. Thus, all the javascript files appear in the root of the generated site. But it would be tidier if one could say "put the contents of *this* underlaydir under the `js` directory". +> Of course, this could be accomplished, if we wanted to, by moving the +> files to `underlays/javascript/js`. --[[Joey]] + Use-case 2 (a read-only external dir): Suppose I want to include a subset of `/usr/local/share/docs` on my wiki, say the docs about `foo`. But I want them to be under the `docs/foo` sub-directory on the generated site. Currently I can't do that. If I give `/usr/local/share/docs/foo` as an underlaydir, then the contents of that will be in the root of the site, rather than under `docs/foo`. And if I give `/usr/local/share/docs` as an underlaydir, then the contents of the `foo` dir will be under `foo`, but it will also include every other thing in `/usr/local/share/docs`. @@ -17,4 +20,25 @@ I'm not sure how this would be implemented, but I guess it could be configured s 'docs/foo' => '/usr/local/share/docs/foo', } +> So, let me review why symlinks are an issue. For normal, non-underlay +> pages, users who do not have filesystem access to the server may have +> commit access, and so could commit eg, a symlink to `/etc/passwd` (or +> to `/` !). The guards are there to prevent ikiwiki either exposing the +> symlink target's contents, or potentially overwriting it. +> +> Is this a concern for underlays? Most of the time, certianly not; +> the underlay tends to be something only the site admin controls. +> Not all the security checks that are done on the srcdir are done +> on the underlays, either. Most checks done on files in the underlay +> are only done because the same code handles srcdir files. The one +> exception is the test that skips processing symlinks in the underlay dir. +> (But note that the underlay directory can be a symlinkt to elsewhere +> which the srcdir, by default, cannot.) +> +> So, one way to approach this is to make ikiwiki follow directory symlinks +> inside the underlay directory. Just a matter of passing `follow => 1` to +> find. (This would still not allow individual files to be symlinks, because +> `readfile` does not allow reading symlinks. But I don't see much need +> for that.) --[[Joey]] + [[!taglink wishlist]] -- cgit v1.2.3 From 33d934b5ca1666bfe3f9fa3004ad7d31c38c69c1 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 14:05:00 -0400 Subject: comment --- doc/forum/an_alternative_approach_to_structured_data.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/forum/an_alternative_approach_to_structured_data.mdwn b/doc/forum/an_alternative_approach_to_structured_data.mdwn index 045bfd7aa..06c82337a 100644 --- a/doc/forum/an_alternative_approach_to_structured_data.mdwn +++ b/doc/forum/an_alternative_approach_to_structured_data.mdwn @@ -18,6 +18,10 @@ I think it could be really powerful and useful, especially if it becomes part of > It looks like an interesting idea. I don't have time right now to look at it in depth, but it looks interesting. -- [[Will]] +> I agree such a separation makes some sense. But note that the discussion on [[todo/structured_page_data]] +> talks about associating data types with fields for a good reason: It's hard to later develop a good UI for +> querying or modifying a page's data if all the data has an implicit type "string". --[[Joey]] + ## Second Pass I have written additional plugins which integrate with the [[plugins/contrib/field]] plugin to both set and get structured page data. -- cgit v1.2.3 From 6fd59908ba8f6999f63c94c918f8c309ed108f74 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 14:06:29 -0400 Subject: comment --- doc/plugins/contrib/pod/discussion.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/plugins/contrib/pod/discussion.mdwn b/doc/plugins/contrib/pod/discussion.mdwn index 76e858680..9187b1350 100644 --- a/doc/plugins/contrib/pod/discussion.mdwn +++ b/doc/plugins/contrib/pod/discussion.mdwn @@ -8,3 +8,7 @@ supports, or later support latex, that could be problimatic since that could maybe be used to include files or run code. --[[Joey]] > I don't know, either; the documentation for [[!cpan Pod:Xhtml]] is silent on this subject. --[[KathrynAndersen]] + +>> I'm afraid the only approach is to audit the existing code in the perl +>> module(s), and then hope nothing is added to them later that opens a +>> security hole. --[[Joey]] -- cgit v1.2.3 From ff267e7ac33226cfbdf30ae8e9b9f7688c485dc7 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 14:09:02 -0400 Subject: comment --- doc/users/KathrynAndersen/discussion.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/users/KathrynAndersen/discussion.mdwn b/doc/users/KathrynAndersen/discussion.mdwn index 288ea8c51..35340b22f 100644 --- a/doc/users/KathrynAndersen/discussion.mdwn +++ b/doc/users/KathrynAndersen/discussion.mdwn @@ -9,6 +9,10 @@ that as a patch to the existing map plugin.) --[[Joey]] > I think pmap is probably better as a separate plugin, because it has additional dependencies (HTML::LinkList) which people might not want to have to install. +>> One approach commonly used in ikiwiki is to make such optional features +>> be enabled by a switch somewhere, and 'eval q{use Foo}` so the module +>> does not have to be loaded unless the feature is used. --[[Joey]] + > The "includepage" plugin I'm not sure whether it is worth releasing or not; it's basically a cut-down version of "inline", because the inline plugin is so complicated and has so many options, I felt more at ease to have something simpler. > --[[KathrynAndersen]] -- cgit v1.2.3 From 407a3493599afbb2f16a0ace49ff1924997895d2 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 14:20:44 -0400 Subject: nearly there! --- doc/todo/matching_different_kinds_of_links.mdwn | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc/todo/matching_different_kinds_of_links.mdwn b/doc/todo/matching_different_kinds_of_links.mdwn index 5678ee7e2..76a99f6a5 100644 --- a/doc/todo/matching_different_kinds_of_links.mdwn +++ b/doc/todo/matching_different_kinds_of_links.mdwn @@ -176,3 +176,15 @@ though... --[[smcv]] >> Removed in a newer version of the branch. I re-introduced it as a >> plugin in `smcv/typedlink`, but I don't think we really need it. --s + +---- + +I am ready to merge this, but I noticed one problem -- since `match_tagged` +now only matches pages with the tag linktype, a wiki will need to be +rebuilt on upgrade in order to get the linktype of existing tags in it +recorded. So there needs to be a NEWS item about this and +the postinst modified to force the rebuild. + +Also, the ready branch adds `typedlink()` to [[ikiwiki/pagespec]], +but you removed that feature as documented above. +--[[Joey]] -- cgit v1.2.3 From b29c50c731d17c83fef21ef606654ce3bde84310 Mon Sep 17 00:00:00 2001 From: webkatalog <webkatalog@web> Date: Tue, 6 Apr 2010 18:38:17 +0000 Subject: --- doc/ikiwikiusers.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 4a3e41e83..ef9c3da59 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -96,6 +96,7 @@ Personal sites and blogs * [Embedded Moose](http://embeddedmoose.com), Andrew Greenberg's personal and consulting page. * [Chez Fred](http://fred.ccheznous.org) * [Cameron Dale](http://www.camrdale.org/) +* [webkatalog ohne backlinkpflicht](http://www.1a-verzeichnis.de/) * [[KarlMW]]'s [homepage](http://mowson.org/karl/), generated with an ikiwiki [asciidoc plugin](http://mowson.org/karl/colophon/). * [Carl Worth's Boring Web Pages](http://www.cworth.org) -- cgit v1.2.3 From 4568ba8a6228cb80cea4b3c4520ae8a066e6f04a Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 14:39:51 -0400 Subject: Revert spam This reverts commit b29c50c731d17c83fef21ef606654ce3bde84310. Nice try, no cigar. --- doc/ikiwikiusers.mdwn | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index ef9c3da59..4a3e41e83 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -96,7 +96,6 @@ Personal sites and blogs * [Embedded Moose](http://embeddedmoose.com), Andrew Greenberg's personal and consulting page. * [Chez Fred](http://fred.ccheznous.org) * [Cameron Dale](http://www.camrdale.org/) -* [webkatalog ohne backlinkpflicht](http://www.1a-verzeichnis.de/) * [[KarlMW]]'s [homepage](http://mowson.org/karl/), generated with an ikiwiki [asciidoc plugin](http://mowson.org/karl/colophon/). * [Carl Worth's Boring Web Pages](http://www.cworth.org) -- cgit v1.2.3 From e496920e51ae9f0ecfbad5799634a5064193dcdb Mon Sep 17 00:00:00 2001 From: webkatalog <webkatalog@web> Date: Tue, 6 Apr 2010 18:43:08 +0000 Subject: --- doc/ikiwikiusers.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 4a3e41e83..472bd5728 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -143,6 +143,7 @@ Personal sites and blogs * [Chris Dombroski's boring bliki](https://www.icanttype.org/) * [Josh Triplett's homepage](http://joshtriplett.org/) - Git backend with the CGI disabled, to publish a static site with the convenience of ikiwiki. * [Gustaf Thorslund's blog](http://blog.thorslund.org) +* [Webkatalog ohne Backlinkpflicht](http://www.1a-verzeichnis.de/) Please feel free to add your own ikiwiki site! -- cgit v1.2.3 From 1a646f7e77e94128c3ef6938fbd727b302c9ef07 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 15:12:54 -0400 Subject: Revert spam This reverts commit e496920e51ae9f0ecfbad5799634a5064193dcdb. "Twice is enemy action"; enjoy your ban! --- doc/ikiwikiusers.mdwn | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 472bd5728..4a3e41e83 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -143,7 +143,6 @@ Personal sites and blogs * [Chris Dombroski's boring bliki](https://www.icanttype.org/) * [Josh Triplett's homepage](http://joshtriplett.org/) - Git backend with the CGI disabled, to publish a static site with the convenience of ikiwiki. * [Gustaf Thorslund's blog](http://blog.thorslund.org) -* [Webkatalog ohne Backlinkpflicht](http://www.1a-verzeichnis.de/) Please feel free to add your own ikiwiki site! -- cgit v1.2.3 From 48178c48ed63f1004e44b2e7850bcef773f0a1e5 Mon Sep 17 00:00:00 2001 From: Simon McVittie <smcv@debian.org> Date: Tue, 6 Apr 2010 20:59:45 +0100 Subject: Auto-rebuild wikis on upgrade due to the taglink change debian/NEWS and debian/postinst should be edited before release to have an appropriate version number. --- debian/NEWS | 10 ++++++++++ debian/postinst | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/debian/NEWS b/debian/NEWS index 50332670f..afb3a8652 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -1,3 +1,13 @@ +ikiwiki (3.UNRELEASED) UNRELEASED; urgency=low + + Starting from this version, the tagged(x) pagespec only matches links that + were set up by the [[!tag]] or [[!taglink]] directives. To make this change, + all wikis need to be rebuilt on upgrade to this version. If you listed your + wiki in /etc/ikiwiki/wikilist this will be done automatically when the + Debian package is upgraded. Or use ikiwiki-mass-rebuild to force a rebuild. + + -- Simon McVittie <smcv@debian.org> Tue, 06 Apr 2010 20:53:07 +0100 + ikiwiki (3.20091017) unstable; urgency=low To take advantage of significant performance improvements, all diff --git a/debian/postinst b/debian/postinst index bf1825ab7..90b9e8a42 100755 --- a/debian/postinst +++ b/debian/postinst @@ -4,7 +4,7 @@ set -e # Change this when some incompatible change is made that requires # rebuilding all wikis. -firstcompat=3.20091010 +firstcompat=3.20100401 if [ "$1" = configure ] && \ dpkg --compare-versions "$2" lt "$firstcompat"; then -- cgit v1.2.3 From b8f4ffdc5d381da04000502f20f0d4e4c13704b3 Mon Sep 17 00:00:00 2001 From: Simon McVittie <smcv@debian.org> Date: Tue, 6 Apr 2010 21:00:48 +0100 Subject: Remove typedlink from [[ikiwiki/pagespec]] It's not supported in this branch any more. --- doc/ikiwiki/pagespec.mdwn | 3 --- 1 file changed, 3 deletions(-) diff --git a/doc/ikiwiki/pagespec.mdwn b/doc/ikiwiki/pagespec.mdwn index ca6693024..5c191f23f 100644 --- a/doc/ikiwiki/pagespec.mdwn +++ b/doc/ikiwiki/pagespec.mdwn @@ -52,9 +52,6 @@ Some more elaborate limits can be added to what matches using these functions: specified IP address. * "`postcomment(glob)`" - matches only when comments are being posted to a page matching the specified glob -* "`typedlink(type glob)`" - matches pages that link to a given page (or glob) - with a given link type. Plugins can create links with a specific type: - for instance, the tag plugin creates links of type `tag`. For example, to match all pages in a blog that link to the page about music and were written in 2005: -- cgit v1.2.3 From 899639f10d49cff410059c3af2e1d5717c25b738 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Tue, 6 Apr 2010 20:03:26 +0000 Subject: fixed --- doc/todo/matching_different_kinds_of_links.mdwn | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/todo/matching_different_kinds_of_links.mdwn b/doc/todo/matching_different_kinds_of_links.mdwn index 76a99f6a5..8e81860a1 100644 --- a/doc/todo/matching_different_kinds_of_links.mdwn +++ b/doc/todo/matching_different_kinds_of_links.mdwn @@ -185,6 +185,12 @@ rebuilt on upgrade in order to get the linktype of existing tags in it recorded. So there needs to be a NEWS item about this and the postinst modified to force the rebuild. +> Done, although you'll need to plug in an appropriate version number when +> you release it. Is there a distinctive reminder string you grep for +> during releases? I've used `UNRELEASED` for now. --[[smcv]] + Also, the ready branch adds `typedlink()` to [[ikiwiki/pagespec]], but you removed that feature as documented above. --[[Joey]] + +> Done. --s -- cgit v1.2.3 From af99d4cb10b06292e8a0acd472ae905e072e3e84 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Tue, 6 Apr 2010 22:24:24 +0000 Subject: reply --- doc/users/KathrynAndersen/discussion.mdwn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/users/KathrynAndersen/discussion.mdwn b/doc/users/KathrynAndersen/discussion.mdwn index 35340b22f..4f2790c39 100644 --- a/doc/users/KathrynAndersen/discussion.mdwn +++ b/doc/users/KathrynAndersen/discussion.mdwn @@ -11,7 +11,9 @@ that as a patch to the existing map plugin.) --[[Joey]] >> One approach commonly used in ikiwiki is to make such optional features >> be enabled by a switch somewhere, and 'eval q{use Foo}` so the module ->> does not have to be loaded unless the feature is used. --[[Joey]] +>> does not have to be loaded unless the feature is used. --[[Joey]] + +>>> Unfortunately, HTML::LinkList isn't an optional feature for pmap; that's what it uses to create the HTML for the map. --[[KathrynAndersen]] > The "includepage" plugin I'm not sure whether it is worth releasing or not; it's basically a cut-down version of "inline", because the inline plugin is so complicated and has so many options, I felt more at ease to have something simpler. -- cgit v1.2.3 From 121405e8aa80e7ceb5283b0ff8c9865458a6dd52 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Tue, 6 Apr 2010 23:09:59 +0000 Subject: response to Joey and smcv --- doc/plugins/contrib/field/discussion.mdwn | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/doc/plugins/contrib/field/discussion.mdwn b/doc/plugins/contrib/field/discussion.mdwn index 646a5f3f4..b243e2dfe 100644 --- a/doc/plugins/contrib/field/discussion.mdwn +++ b/doc/plugins/contrib/field/discussion.mdwn @@ -21,7 +21,9 @@ behaviour, an auxiliary plugin would be easy.) >> (like `map`). Is your plan that `meta` should register itself by >> default, and `map` and friends should be adapted to >> work based on `getfield()` instead of `$pagestate{foo}{meta}`, then? ->> + +>>> Based on `field_get_value()`, yes. That would be my ideal. Do you think I should implement that as an ikiwiki branch? --[[KathrynAndersen]] + >> (On the site I mentioned, I'm using an unmodified version of `field`, >> and currently working around the collision by tagging books' pages >> with `bookauthor` instead of `author` in the YAML.) --s @@ -94,6 +96,7 @@ field-etc branch in git://git.pseudorandom.co.uk/git/smcv/ikiwiki.git (gitweb: --[[smcv]] > Can do for the field plugin (delete one line? Easy.) Will push when I get to a better connection. --[[KathrynAndersen]] +>> Done! -K.A. ---- @@ -109,3 +112,16 @@ belonging to the meta plugin, and generalizing that to be able to access info stored by other plugins too. (But I don't see any other plugins that currently store such info). Then too, it raises points of confusion like smcv's discuission of field author vs meta author above. --[[Joey]] + +> The point is exactly in the generalization, to provide a uniform interface for accessing structured data, no matter what the source of it, whether that be the meta plugin or some other plugin. + +> There were a few reasons for this: + +>1. In converting my site over from PmWiki, I needed something that was equivalent to PmWiki's Page-Text-Variables (which is how PmWiki implements structured data). +>2. I also wanted an equivalent of PmWiki's Page-Variables, which, rather than being simple variables, are the return-value of a function. This gives one a lot of power, because one can do calculations, derive one thing from another. Heck, just being able to have a "basename" variable is useful. +>3. I noticed that in the discussion about structured data, it was mired down in disagreements about what form the structured data should take; I wanted to overcome that hurdle by decoupling the form from the content. +>4. I actually use this to solve (1), because, while I do use ymlfront, initially my pages were in PmWiki format (I wrote (another) unreleased plugin which parses PmWiki format) including PmWiki's Page-Text-Variables for structured data. So I needed something that could deal with multiple formats. + +> So, yes, it does cater to mostly my personal needs, but I think it is more generally useful, also. +> --[[KathrynAndersen]] + -- cgit v1.2.3 From c7eaf3c262f322290f6e15959369c14d190bbe09 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Tue, 6 Apr 2010 23:19:18 +0000 Subject: response --- doc/forum/an_alternative_approach_to_structured_data.mdwn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/forum/an_alternative_approach_to_structured_data.mdwn b/doc/forum/an_alternative_approach_to_structured_data.mdwn index 06c82337a..6e6af8adb 100644 --- a/doc/forum/an_alternative_approach_to_structured_data.mdwn +++ b/doc/forum/an_alternative_approach_to_structured_data.mdwn @@ -20,7 +20,9 @@ I think it could be really powerful and useful, especially if it becomes part of > I agree such a separation makes some sense. But note that the discussion on [[todo/structured_page_data]] > talks about associating data types with fields for a good reason: It's hard to later develop a good UI for -> querying or modifying a page's data if all the data has an implicit type "string". --[[Joey]] +> querying or modifying a page's data if all the data has an implicit type "string". --[[Joey]] + +>> I'm not sure that having an implicit type of "string" is really such a bad thing. After all, Perl itself manages with just string and number, and easily converts from one to the other. Strong typing is generally used to (a) restrict what can be done with the data and/or (b) restrict how the data is input. The latter could be done with some sort of validated form, but that, too, could be decoupled from looking up and returning the value of a field. --[[KathrynAndersen]] ## Second Pass -- cgit v1.2.3 From 811d398646337717f8f2ad92897c6410faa42777 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Tue, 6 Apr 2010 23:20:49 +0000 Subject: response --- doc/todo/optional_underlaydir_prefix.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/todo/optional_underlaydir_prefix.mdwn b/doc/todo/optional_underlaydir_prefix.mdwn index dd11d062d..06900a904 100644 --- a/doc/todo/optional_underlaydir_prefix.mdwn +++ b/doc/todo/optional_underlaydir_prefix.mdwn @@ -41,4 +41,6 @@ I'm not sure how this would be implemented, but I guess it could be configured s > `readfile` does not allow reading symlinks. But I don't see much need > for that.) --[[Joey]] +>> If you think that enabling symlinks in underlay directories wouldn't be a security issue, then I'm all for it! That would be much simpler to implement, I'm sure. --[[KathrynAndersen]] + [[!taglink wishlist]] -- cgit v1.2.3 From 1158fe8f4400943d7a24350c6ac8fee6a95c2bed Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Wed, 7 Apr 2010 02:55:50 +0000 Subject: further discussion, point out potential XSS --- doc/plugins/contrib/field/discussion.mdwn | 110 ++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/doc/plugins/contrib/field/discussion.mdwn b/doc/plugins/contrib/field/discussion.mdwn index b243e2dfe..16b40cf06 100644 --- a/doc/plugins/contrib/field/discussion.mdwn +++ b/doc/plugins/contrib/field/discussion.mdwn @@ -24,10 +24,64 @@ behaviour, an auxiliary plugin would be easy.) >>> Based on `field_get_value()`, yes. That would be my ideal. Do you think I should implement that as an ikiwiki branch? --[[KathrynAndersen]] +>>>> This doesn't solve cases where certain fields are treated specially; for +>>>> instance, putting a `\[[!meta permalink]]` on a page is not the same as +>>>> putting it in `ymlfront` (in the latter case you won't get your +>>>> `<link>` header), and putting `\[[!meta date]]` is not the same as putting +>>>> `date` in `ymlfront` (in the latter case, `%pagectime` won't be changed). +>>>> +>>>> One way to resolve that would be to have `ymlfront`, or similar, be a +>>>> front-end for `meta` rather than for `field`, and call +>>>> `IkiWiki::Plugin::meta::preprocess` (or a refactored-out function that's +>>>> similar). +>>>> +>>>> There are also some cross-site scripting issues (see below)... --[[smcv]] + >> (On the site I mentioned, I'm using an unmodified version of `field`, >> and currently working around the collision by tagging books' pages >> with `bookauthor` instead of `author` in the YAML.) --s +>> Revisiting this after more thought, the problem here is similar to the +>> possibility that a wiki user adds a `meta` shortcut +>> to [[shortcuts]], or conversely, that a plugin adds a `cpan` directive +>> that conflicts with the `cpan` shortcut that pages already use. (In the +>> case of shortcuts, this is resolved by having plugin-defined directives +>> always win.) For plugin-defined meta keywords this is the plugin +>> author's/wiki admin's problem - just don't enable conflicting plugins! - +>> but it gets scary when you start introducing things like `ymlfront`, which +>> allow arbitrary, wiki-user-defined fields, even ones that subvert +>> other plugins' assumptions. +>> +>> The `pagetemplate` hook is particularly alarming because page templates are +>> evaluated in many contexts, not all of which are subject to the +>> htmlscrubber or escaping; because the output from `field` isn't filtered, +>> prefixed or delimited, when combined with an arbitrary-key-setting plugin +>> like `ymlfront` it can interfere with other plugins' expectations +>> and potentially cause cross-site scripting exploits. For instance, `inline` +>> has a `pagetemplate` hook which defines the `FEEDLINKS` template variable +>> to be a blob of HTML to put in the `<head>` of the page. As a result, this +>> YAML would be bad: +>> +>> --- +>> FEEDLINKS: <script>alert('code injection detected')</script> +>> --- +>> +>> (It might require a different case combination due to implementation +>> details, I'm not sure.) +>> +>> It's difficult for `field` to do anything about this, because it doesn't +>> know whether a field is meant to be plain text, HTML, a URL, or something +>> else. +>> +>> If `field`'s `pagetemplate` hook did something more limiting - like +>> only emitting template variables starting with `field_`, or from some +>> finite set, or something - then this would cease to be a problem, I think? +>> +>> `ftemplate` and `getfield` don't have this problem, as far as I can see, +>> because their output is in contexts where the user could equally well have +>> written raw HTML directly; the user can cause themselves confusion, but +>> can't cause harmful output. --[[smcv]] + From a coding style point of view, the `$CamelCase` variable names aren't IkiWiki style, and the `match_foo` functions look as though they could benefit from being thin wrappers around a common `&IkiWiki::Plugin::field::match` @@ -125,3 +179,59 @@ smcv's discuission of field author vs meta author above. --[[Joey]] > So, yes, it does cater to mostly my personal needs, but I think it is more generally useful, also. > --[[KathrynAndersen]] +>> Is it fair to say, then, that `field`'s purpose is to take other +>> plugins' arbitrary per-page data, and present it as a single +>> merged/flattened string => string map per page? From the plugins +>> here, things you then use that merged map for include: +>> +>> * sorting - stolen by [[todo/allow_plugins_to_add_sorting_methods]] +>> * substitution into pages with Perl-like syntax - `getfield` +>> * substitution into wiki-defined templates - the `pagetemplate` +>> hook +>> * substitution into user-defined templates - `ftemplate` +>> +>> As I mentioned above, the flattening can cause collisions (and in the +>> `pagetemplate` case, even security problems). +>> +>> I wonder whether conflating Page Text Variables with Page Variables +>> causes `field` to be more general than it needs to be? +>> To define a Page Variable (function-like field), you need to write +>> a plugin containing that Perl function; if we assume that `field` +>> or something resembling it gets merged into ikiwiki, then it's +>> reasonable to expect third-party plugins to integrate with whatever +>> scaffolding there is for these (either in an enabled-by-default +>> plugin that most people are expected to leave enabled, like `meta` +>> now, or in the core), and it doesn't seem onerous to expect each +>> plugin that wants to participate in this mechanism to have code to +>> do so. While it's still contrib, `field` could just have a special case +>> for the meta plugin, rather than the converse? +>> +>> If Page Text Variables are limited to being simple strings as you +>> suggest over in [[forum/an_alternative_approach_to_structured_data]], +>> then they're functionally similar to `meta` fields, so one way to +>> get their functionality would be to extend `meta` so that +>> +>> \[[!meta badger="mushroom"]] +>> +>> (for an unrecognised keyword `badger`) would store +>> `$pagestate{$page}{meta}{badger} = "mushroom"`? Getting this to +>> appear in templates might be problematic, because a naive +>> `pagetemplate` hook would have the same problem that `field` combined +>> with `ymlfront` currently does. +>> +>> One disadvantage that would appear if the function-like and +>> meta-like fields weren't in the same namespace would be that it +>> wouldn't be possible to switch a field from being meta-like to being +>> function-like without changing any wiki content that referenced it. +>> +>> Perhaps meta-like fields should just *be* `meta` (with the above +>> enhancement), as a trivial case of function-like fields? That would +>> turn `ymlfront` into an alternative syntax for `meta`, I think? +>> That, in turn, would hopefully solve the special-fields problem, +>> by just delegating it to meta. I've been glad of the ability to define +>> new ad-hoc fields with this plugin without having to write an extra plugin +>> to do so (listing books with a `bookauthor` and sorting them by +>> `"field(bookauthor) title"`), but that'd be just as easy if `meta` +>> accepted ad-hoc fields? +>> +>> --[[smcv]] -- cgit v1.2.3 From 3b1dd03c7e7f56eaf6da956779c885c2e9e7ef53 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 22:57:02 -0400 Subject: improve wording to not encourage explicitly passing undef --- doc/plugins/write.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index fe7cf0183..71ff1fd29 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -960,8 +960,8 @@ will yield something like `foo/feed.rss`. This adds a link to `%links`, ensuring that duplicate links are not added. Pass it the page that contains the link, and the link text. -An optional third parameter sets the link type (`undef` produces an ordinary -[[ikiwiki/WikiLink]]). +An optional third parameter sets the link type. If not specified, +it is an ordinary [[ikiwiki/WikiLink]]. ## Miscellaneous -- cgit v1.2.3 From c0ca1967586234ae4e84e485af53804df2198bcd Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 22:58:22 -0400 Subject: tweak wording and versions and add changelog entry --- debian/NEWS | 12 ++++++------ debian/changelog | 6 +++++- debian/postinst | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/debian/NEWS b/debian/NEWS index afb3a8652..4e433fd37 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -1,10 +1,10 @@ -ikiwiki (3.UNRELEASED) UNRELEASED; urgency=low +ikiwiki (3.20100406) unstable; urgency=low - Starting from this version, the tagged(x) pagespec only matches links that - were set up by the [[!tag]] or [[!taglink]] directives. To make this change, - all wikis need to be rebuilt on upgrade to this version. If you listed your - wiki in /etc/ikiwiki/wikilist this will be done automatically when the - Debian package is upgraded. Or use ikiwiki-mass-rebuild to force a rebuild. + Starting from this version, the tagged() pagespec only matches tags, + not regular wikilinks. To support this change, all wikis need to be + rebuilt on upgrade to this version. If you listed your wiki in + /etc/ikiwiki/wikilist this will be done automatically when the Debian + package is upgraded. Or use ikiwiki-mass-rebuild to force a rebuild. -- Simon McVittie <smcv@debian.org> Tue, 06 Apr 2010 20:53:07 +0100 diff --git a/debian/changelog b/debian/changelog index 77d17f566..435b7982f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,12 @@ -ikiwiki (3.20100404) UNRELEASED; urgency=low +ikiwiki (3.20100406) UNRELEASED; urgency=low * bzr: Fix bzr log parsing to work with bzr 2.0. (liw) * comments: Fix missing entity encoding in title. * txt: Add a special case for robots.txt. + * Add support for link types, and make the the tagged() pagespec only + match tags, not regular links (a bugfix). + * Rebuild wikis on upgrade to this version to get tag link types recorded + correctly. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 diff --git a/debian/postinst b/debian/postinst index 90b9e8a42..8eac26361 100755 --- a/debian/postinst +++ b/debian/postinst @@ -4,7 +4,7 @@ set -e # Change this when some incompatible change is made that requires # rebuilding all wikis. -firstcompat=3.20100401 +firstcompat=3.20100406 if [ "$1" = configure ] && \ dpkg --compare-versions "$2" lt "$firstcompat"; then -- cgit v1.2.3 From 25f3dd88180b1f96c7626f93f7f8841ef7df6f59 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 23:02:18 -0400 Subject: add note about minor back compat issue --- debian/NEWS | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/debian/NEWS b/debian/NEWS index 4e433fd37..e1cb00473 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -1,10 +1,13 @@ ikiwiki (3.20100406) unstable; urgency=low - Starting from this version, the tagged() pagespec only matches tags, - not regular wikilinks. To support this change, all wikis need to be - rebuilt on upgrade to this version. If you listed your wiki in - /etc/ikiwiki/wikilist this will be done automatically when the Debian - package is upgraded. Or use ikiwiki-mass-rebuild to force a rebuild. + Starting from this version, the `tagged()` pagespec only matches tags, + not regular wikilinks. If your wiki accidentially relied on the old, + buggy behavior, you might need to change pagespecs to use `link()`. + + To support the above change, all wikis need to be rebuilt on upgrade to + this version. If you listed your wiki in /etc/ikiwiki/wikilist this will + be done automatically when the Debian package is upgraded. Or use + ikiwiki-mass-rebuild to force a rebuild. -- Simon McVittie <smcv@debian.org> Tue, 06 Apr 2010 20:53:07 +0100 -- cgit v1.2.3 From e12cd5f293fea9d85c7e4cdc86e2bf9381d5676a Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Wed, 7 Apr 2010 03:03:40 +0000 Subject: update fieldsort plugin again; remove obsolete bug + fix note (thanks!) --- doc/plugins/contrib/field/discussion.mdwn | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/doc/plugins/contrib/field/discussion.mdwn b/doc/plugins/contrib/field/discussion.mdwn index 16b40cf06..2ea195e5b 100644 --- a/doc/plugins/contrib/field/discussion.mdwn +++ b/doc/plugins/contrib/field/discussion.mdwn @@ -131,8 +131,8 @@ I think it should just be part of `field` rather than a separate plugin. error("sort=field requires a parameter"); } - my $left = IkiWiki::Plugin::field::field_get_value($_[2], $_[0]); - my $right = IkiWiki::Plugin::field::field_get_value($_[2], $_[1]); + my $left = IkiWiki::Plugin::field::field_get_value($_[0], $a); + my $right = IkiWiki::Plugin::field::field_get_value($_[0], $b); $left = "" unless defined $left; $right = "" unless defined $right; @@ -141,17 +141,6 @@ I think it should just be part of `field` rather than a separate plugin. 1; -------- - -Bug report: `field` has an unnecessary `use YAML::Any`, presumably from before -you separated out `ymlfront`. Trivial patch available from -field-etc branch in git://git.pseudorandom.co.uk/git/smcv/ikiwiki.git (gitweb: -<http://git.pseudorandom.co.uk/smcv/ikiwiki.git?a=shortlog;h=refs/heads/field-etc>) ---[[smcv]] - -> Can do for the field plugin (delete one line? Easy.) Will push when I get to a better connection. --[[KathrynAndersen]] ->> Done! -K.A. - ---- Disclaimer: I've only looked at this plugin and ymlfront, not other related -- cgit v1.2.3 From fcd810d236fdf779beb740082953a14feba07f0d Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 23:04:54 -0400 Subject: close --- doc/todo/matching_different_kinds_of_links.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/todo/matching_different_kinds_of_links.mdwn b/doc/todo/matching_different_kinds_of_links.mdwn index 8e81860a1..da3ea49f6 100644 --- a/doc/todo/matching_different_kinds_of_links.mdwn +++ b/doc/todo/matching_different_kinds_of_links.mdwn @@ -193,4 +193,4 @@ Also, the ready branch adds `typedlink()` to [[ikiwiki/pagespec]], but you removed that feature as documented above. --[[Joey]] -> Done. --s +> [[Done]]. --s -- cgit v1.2.3 From ffb0802c4a2e48021677a78695d84a356b1b8024 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 23:15:39 -0400 Subject: don't force a rebuild Rebuild can be needed sometimes, but not always, so undef. --- IkiWiki/Plugin/sortnaturally.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/sortnaturally.pm b/IkiWiki/Plugin/sortnaturally.pm index 92453749d..62e42767c 100644 --- a/IkiWiki/Plugin/sortnaturally.pm +++ b/IkiWiki/Plugin/sortnaturally.pm @@ -13,7 +13,7 @@ sub getsetup { return plugin => { safe => 1, - rebuild => 1, + rebuild => undef, }, } -- cgit v1.2.3 From be2af2e5c1ddfe90802a67aa150cf17dbe903df0 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 23:19:00 -0400 Subject: add cpan link --- doc/plugins/sortnaturally.mdwn | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/plugins/sortnaturally.mdwn b/doc/plugins/sortnaturally.mdwn index 91f373f6b..a16381946 100644 --- a/doc/plugins/sortnaturally.mdwn +++ b/doc/plugins/sortnaturally.mdwn @@ -1,5 +1,6 @@ [[!template id=plugin name=sortnaturally core=1 author="[[chrysn]], [[smcv]]"]] [[!tag type/meta]] -This plugin provides the `title_natural` [[ikiwiki/pagespec/sorting]] order, -which uses Sort::Naturally to sort numbered pages in a more natural order. +This plugin provides the `title_natural` [[ikiwiki/pagespec/sorting]] +order, which uses [[!cpan Sort::Naturally]] to sort numbered pages in a +more natural order. -- cgit v1.2.3 From dad7ac5a21bc049b9f559c98f4e113c99edb4eb5 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 23:24:22 -0400 Subject: question --- doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn index d4da13feb..d7f10528a 100644 --- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn +++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn @@ -10,6 +10,9 @@ title over the page name, but for compatibility, I'm not going to (I do wonder whether it would be worth making sort=name an alias for the current sort=title, and changing the meaning of sort=title in 4.0, though). +> What compatability concerns, exactly, are there that prevent making that +> change now? --[[Joey]] + *[sort-hooks branch now withdrawn in favour of sort-package --s]* I briefly tried to turn *all* the current sort types into hook functions, and -- cgit v1.2.3 From 04a9d8e867f1eef46e9c79dee055756bdbb6a039 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 23:26:59 -0400 Subject: remove note about more sort types possibly being available Good plugins should document them :) --- doc/ikiwiki/pagespec/sorting.mdwn | 3 --- 1 file changed, 3 deletions(-) diff --git a/doc/ikiwiki/pagespec/sorting.mdwn b/doc/ikiwiki/pagespec/sorting.mdwn index 5c6cfcc2b..37995f1e8 100644 --- a/doc/ikiwiki/pagespec/sorting.mdwn +++ b/doc/ikiwiki/pagespec/sorting.mdwn @@ -21,7 +21,4 @@ In addition, you can combine several sort orders and/or reverse the order of sorting, with a string like `age -title` (which would sort by age, then by title in reverse order if two pages have the same age). -Plugins can add additional sort orders, so more might be available on this -wiki. - [[!meta robots="noindex, follow"]] -- cgit v1.2.3 From 153c0ff13ba01fa42b3e34b410311c490ee084e9 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 23:29:18 -0400 Subject: minor style etc changes --- IkiWiki.pm | 6 ++---- IkiWiki/Plugin/meta.pm | 6 +++--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 6d2f4dac3..2cad6a3ef 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2435,10 +2435,8 @@ sub match_ip ($$;@) { package IkiWiki::SortSpec; # This is in the SortSpec namespace so that the $a and $b that sort() uses -# $IkiWiki::SortSpec::a and $IkiWiki::SortSpec::b, so that plugins' cmp -# functions can access them easily. -sub sort_pages -{ +# are easily available in this namespace, for cmp functions to use them. +sub sort_pages { my $f = IkiWiki::sortspec_translate(shift); return sort $f @_; diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm index 34e902bec..892f6b2c9 100644 --- a/IkiWiki/Plugin/meta.pm +++ b/IkiWiki/Plugin/meta.pm @@ -300,8 +300,8 @@ sub pagetemplate (@) { } sub get_sort_key { - my $page = $_[0]; - my $meta = $_[1]; + my $page = shift; + my $meta = shift; # e.g. titlesort (also makes sense for author) my $key = $pagestate{$page}{meta}{$meta . "sort"}; @@ -379,7 +379,7 @@ sub match_copyright ($$;@) { package IkiWiki::SortSpec; sub cmp_meta { - my $meta = $_[0]; + my $meta = shift; error(gettext("sort=meta requires a parameter")) unless defined $meta; if ($meta eq 'updated' || $meta eq 'date') { -- cgit v1.2.3 From 32ce94f5a30e52da17f06b9b9dce7f3d3112da98 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 23:30:10 -0400 Subject: close (but one question remains!) --- doc/todo/allow_plugins_to_add_sorting_methods.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn index d7f10528a..b523cd19f 100644 --- a/doc/todo/allow_plugins_to_add_sorting_methods.mdwn +++ b/doc/todo/allow_plugins_to_add_sorting_methods.mdwn @@ -43,7 +43,7 @@ That earlier version of the branch is also available for comparison: >>>>>> `SortSpec` --[[Joey]] ->>>>>>> Done. --s +>>>>>>> [[Done]]. --s >>>> I would be inclined to drop the `check_` stuff. --[[Joey]] -- cgit v1.2.3 From 425ffc34f730c76ff964111a65055b62739928d4 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 23:35:14 -0400 Subject: update for sort changes --- debian/changelog | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 435b7982f..5a9c85ac7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,12 +1,23 @@ ikiwiki (3.20100406) UNRELEASED; urgency=low + [ Joey Hess ] * bzr: Fix bzr log parsing to work with bzr 2.0. (liw) * comments: Fix missing entity encoding in title. * txt: Add a special case for robots.txt. + + [ Simon McVittie ] * Add support for link types, and make the the tagged() pagespec only - match tags, not regular links (a bugfix). + match tags, not regular links (a bugfix). * Rebuild wikis on upgrade to this version to get tag link types recorded correctly. + * Revamp sorting system; allow new sort methods to be added by plugins, + and add a "sortspec" syntax that can combine, reverse, etc sort methods + * meta: Add `meta(author)`, `meta(title)` etc sortspecs to allow sorting + by metadata. + * meta: Add optional sortas parameter to author and title meta directives. + This can be used to get names sorted by last name without displaying + them last name first. + * sortnarurally: New plugin; the title_natural sort method has moved here. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 -- cgit v1.2.3 From 196851d4e2ff608e80855ae6ba12178a24595e5b Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Tue, 6 Apr 2010 23:37:46 -0400 Subject: typo --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5a9c85ac7..9acd11e60 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,13 +11,13 @@ ikiwiki (3.20100406) UNRELEASED; urgency=low * Rebuild wikis on upgrade to this version to get tag link types recorded correctly. * Revamp sorting system; allow new sort methods to be added by plugins, - and add a "sortspec" syntax that can combine, reverse, etc sort methods + and add a "sortspec" syntax that can combine, reverse, etc sort methods. * meta: Add `meta(author)`, `meta(title)` etc sortspecs to allow sorting by metadata. * meta: Add optional sortas parameter to author and title meta directives. This can be used to get names sorted by last name without displaying them last name first. - * sortnarurally: New plugin; the title_natural sort method has moved here. + * sortnaturally: New plugin; the title_natural sort method has moved here. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 -- cgit v1.2.3 From d58444a3e956e329cea4cbcdddcba99664ee585e Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Wed, 7 Apr 2010 00:01:38 -0400 Subject: note about sort and dependency types There's a gotcha where pagespec_match_list is used with a dependency type that is not a full content dependency, and so ikiwiki does not know that a content change to a page that sorted too low to match needs to trigger a rebuild, since its sort order may have changed. Inline is mostly ok re this, as it does use content dependencies. Except for in the case of raw mode. But then, page metadata is documented to not be loaded, so it doesn't make sense to use sortspecs that depend on metadata. I hope. :) --- doc/plugins/write.mdwn | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 05ddf2215..707622956 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -734,7 +734,10 @@ Additional named parameters can be specified: * `filter` is a reference to a function, that is called and passed a page, and returns true if the page should be filtered out of the list. * `sort` specifies a sort order for the list. See - [[ikiwiki/PageSpec/sorting]] for the avilable sort methods. + [[ikiwiki/PageSpec/sorting]] for the avilable sort methods. Note that + if a sort method is specified that depends on the + page content (such as 'meta(foo)'), the deptype needs to be set to + a content dependency. * `reverse` if true, sorts in reverse. * `num` if nonzero, specifies the maximum number of matching pages that will be returned. -- cgit v1.2.3 From ef1ebf6079bd2a91d1d799bafacf6a51d4633db3 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Wed, 7 Apr 2010 00:28:56 -0400 Subject: add peter's git repo --- doc/git.mdwn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/git.mdwn b/doc/git.mdwn index 379285a49..55967e543 100644 --- a/doc/git.mdwn +++ b/doc/git.mdwn @@ -26,7 +26,8 @@ be browsed, subscribed to etc on its You are of course free to set up your own ikiwiki git repository with your own [[patches|patch]]. If you list it here, the `gitremotes` script will automatically add it to git remotes. Your repo will automatically be pulled -into [[Joey]]'s working tree. This is recommended. :-) +into [[Joey]]'s working repository where he can see your branches and +think about merging them. This is recommended. :-) <!-- Machine-parsed format: * wikilink <git:url> --> @@ -60,6 +61,7 @@ into [[Joey]]'s working tree. This is recommended. :-) * [[davrieb|David_Riebenbauer]] `git://git.liegesta.at/git/ikiwiki` ([browse](http://git.liegesta.at/?p=ikiwiki.git;a=summary)) * [[GustafThorslund]] `http://gustaf.thorslund.org/src/ikiwiki.git` +* [[peteg]] `git://git.hcoop.net/git/peteg/ikiwiki.git` ## branches -- cgit v1.2.3 From 2e9fae5c11d9fabf6270de18d0c26bc251750b09 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Wed, 7 Apr 2010 15:12:39 +0000 Subject: response about XSS, meta and pagetemplates --- doc/plugins/contrib/field/discussion.mdwn | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/doc/plugins/contrib/field/discussion.mdwn b/doc/plugins/contrib/field/discussion.mdwn index 2ea195e5b..dd9342224 100644 --- a/doc/plugins/contrib/field/discussion.mdwn +++ b/doc/plugins/contrib/field/discussion.mdwn @@ -224,3 +224,32 @@ smcv's discuission of field author vs meta author above. --[[Joey]] >> accepted ad-hoc fields? >> >> --[[smcv]] + +>>> Your point above about cross-site scripting is a valid one, and something I +>>> hadn't thought of (oops). + +>>> I still want to be able to populate pagetemplate templates with field, because I +>>> use it for a number of things, such as setting which CSS files to use for a +>>> given page, and, as I said, for titles. But apart from the titles, I +>>> realize I've been setting them in places other than the page data itself. +>>> (Another unreleased plugin, `concon`, uses Config::Context to be able to +>>> set variables on a per-site, per-directory and a per-page basis). + +>>> The first possible solution is what you suggested above: for field to only +>>> set values in pagetemplate which are prefixed with *field_*. I don't think +>>> this is quite satisfactory, since that would still mean that people could +>>> put un-scrubbed values into a pagetemplate, albeit they would be values +>>> named field_foo, etc. + +>>> An alternative solution would be to classify field registration as "secure" +>>> and "insecure". Sources such as ymlfront would be insecure, sources such +>>> as concon (or the $config hash) would be secure, since they can't be edited +>>> as pages. Then, when doing pagetemplate substitution (but not ftemplate +>>> substitution) the insecure sources could be HTML-escaped. + +>>> Another problem, as you point out, is special-case fields, such as a number of +>>> those defined by `meta`, which have side-effects associated with them, more +>>> than just providing a value to pagetemplate. Perhaps `meta` should deal with +>>> the side-effects, but use `field` as an interface to get the values of those special fields. + +>>> --[[KathrynAndersen]] -- cgit v1.2.3 From e46a3b753463e71d8a24c35a5035cfbc47dd4816 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Wed, 7 Apr 2010 17:39:04 +0000 Subject: "safe" and "unsafe" too simplistic, I suspect --- doc/plugins/contrib/field/discussion.mdwn | 49 ++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/doc/plugins/contrib/field/discussion.mdwn b/doc/plugins/contrib/field/discussion.mdwn index dd9342224..24c37cc4c 100644 --- a/doc/plugins/contrib/field/discussion.mdwn +++ b/doc/plugins/contrib/field/discussion.mdwn @@ -239,13 +239,60 @@ smcv's discuission of field author vs meta author above. --[[Joey]] >>> set values in pagetemplate which are prefixed with *field_*. I don't think >>> this is quite satisfactory, since that would still mean that people could >>> put un-scrubbed values into a pagetemplate, albeit they would be values ->>> named field_foo, etc. +>>> named field_foo, etc. --[[KathrynAndersen]] + +>>>> They can already do similar; `PERMALINK` is pre-sanitized to +>>>> ensure that it's a "safe" URL, but if an extremely confused wiki admin was +>>>> to put `COPYRIGHT` in their RSS/Atom feed's `<link>`, a malicious user +>>>> could put an unsafe (e.g. Javascript) URL in there (`COPYRIGHT` *is* +>>>> HTML-scrubbed, but "javascript:alert('pwned!')" is just text as far as a +>>>> HTML sanitizer is concerned, so it passes straight through). The solution +>>>> is to not use variables in situations where that variable would be +>>>> inappropriate. Because `field` is so generic, the definition of what's +>>>> appropriate is difficult. --[[smcv]] >>> An alternative solution would be to classify field registration as "secure" >>> and "insecure". Sources such as ymlfront would be insecure, sources such >>> as concon (or the $config hash) would be secure, since they can't be edited >>> as pages. Then, when doing pagetemplate substitution (but not ftemplate >>> substitution) the insecure sources could be HTML-escaped. +>>> --[[KathrynAndersen]] + +>>>> Whether you trust the supplier of data seems orthogonal to whether its value +>>>> is (meant to be) interpreted as plain text, HTML, a URL or what? +>>>> +>>>> Even in cases where you trust the supplier, you need to escape things +>>>> suitably for the context, not for security but for correctness. The +>>>> definition of the value, and the context it's being used in, changes the +>>>> processing you need to do. An incomplete list: +>>>> +>>>> * HTML used as HTML needs to be html-scrubbed if and only if untrusted +>>>> * URLs used as URLs need to be put through `safeurl()` if and only if +>>>> untrusted +>>>> * HTML used as plain text needs tags removed regardless +>>>> * URLs used as plain text are safe +>>>> * URLs or plain text used in HTML need HTML-escaping (and URLs also need +>>>> `safeurl()` if untrusted) +>>>> * HTML or plain text used in URLs need URL-escaping (and the resulting +>>>> URL might need sanitizing too?) +>>>> +>>>> I can't immediately think of other data types we'd be interested in beyond +>>>> text, HTML and URL, but I'm sure there are plenty. +>>>> +>>>> One reasonable option would be to declare that `field` takes text-valued +>>>> fields, in which case either consumers need to escape +>>>> it with `<TMPL_VAR FIELD_FOO ESCAPE=HTML>`, and not interpret it as a URL +>>>> without first checking `safeurl`), or the pagetemplate hook needs to +>>>> pre-escape. +>>>> +>>>> Another reasonable option would be to declare that `field` takes raw HTML, +>>>> in which case consumers need to only use it in contexts that will be +>>>> HTML-scrubbed (but it becomes unsuitable for using as text - problematic +>>>> for text-based things like sorting or URLs, and not ideal for searching). +>>>> +>>>> You could even let each consumer choose how it's going to use the field, +>>>> by having the `foo` field generate `TEXT_FOO` and `HTML_FOO` variables? +>>>> --[[smcv]] >>> Another problem, as you point out, is special-case fields, such as a number of >>> those defined by `meta`, which have side-effects associated with them, more -- cgit v1.2.3 From c127e964f1704a6704639350851afee722825529 Mon Sep 17 00:00:00 2001 From: Jon Dowland <jon@alcopop.org> Date: Wed, 7 Apr 2010 21:25:26 +0100 Subject: expand my response --- doc/todo/allow_site-wide_meta_definitions.mdwn | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/doc/todo/allow_site-wide_meta_definitions.mdwn b/doc/todo/allow_site-wide_meta_definitions.mdwn index 7129a44ac..82670250e 100644 --- a/doc/todo/allow_site-wide_meta_definitions.mdwn +++ b/doc/todo/allow_site-wide_meta_definitions.mdwn @@ -217,6 +217,16 @@ definitions essentially. >>> For this to work with websetup and --dumpsetup, it needs to define the >>> `meta_*` settings in the getsetup function. +>>>> +>>>> I think this will be problematic with the current implementation of this +>>>> patch. The datatype here is an array of hash references, with each hash +>>>> having a variable (and arbitrary) number of key/value pairs. I can't +>>>> think of an intuitive way of implementing a way of editing such a +>>>> datatype in the web interface, let alone registering the option in +>>>> getsetup. +>>>> +>>>> Perhaps a limited set of defined meta values could be exposed via +>>>> websetup (the obvious ones: author, copyright, license, etc.) -- [[Jon]] >>> >>> I also have some concerns about both these patches, since both throw >>> a lot of redundant data at meta, which then stores it in a very redundant @@ -232,6 +242,5 @@ definitions essentially. >>> meta special-case the site-wide settings, not store them in these >>> per-page data structures, and just make them be used if no per-page >>> metadata of the given type is present. --[[Joey]] - ->>>> Thanks for the review - these are all valid points. I'll get working ->>>> on a revised patch. -- [[Jon]] +>>>> +>>>> that should be easy enough to do. I will work on a patch. -- [[Jon]] -- cgit v1.2.3 From 15a65ffae67b7eaf2702b3a42edee95daf8f4c89 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Wed, 7 Apr 2010 23:29:25 +0000 Subject: further response to smcv on pagetemplates --- doc/plugins/contrib/field/discussion.mdwn | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/doc/plugins/contrib/field/discussion.mdwn b/doc/plugins/contrib/field/discussion.mdwn index 24c37cc4c..36c2118e7 100644 --- a/doc/plugins/contrib/field/discussion.mdwn +++ b/doc/plugins/contrib/field/discussion.mdwn @@ -278,13 +278,34 @@ smcv's discuission of field author vs meta author above. --[[Joey]] >>>> >>>> I can't immediately think of other data types we'd be interested in beyond >>>> text, HTML and URL, but I'm sure there are plenty. ->>>> + +>>>>> But isn't this a problem with anything that uses pagetemplates? Or is +>>>>> the point that, with plugins other than `field`, they all know, +>>>>> beforehand, the names of all the fields that they are dealing with, and +>>>>> thus the writer of the plugin knows which treatment each particular field +>>>>> needs? For example, that `meta` knows that `title` needs to be +>>>>> HTML-escaped, and that `baseurl` doesn't. In that case, yes, I see the problem. +>>>>> It's a tricky one. It isn't as if there's only ever going to be a fixed set of fields that need different treatment, either. Because the site admin is free to add whatever fields they like to the page template (if they aren't using the default one, that is. I'm not using the default one myself). +>>>>> Mind you, for trusted sources, since the person writing the page template and the person providing the variable are the same, they themselves would know whether the value will be treated as HTML, plain text, or a URL, and thus could do the needed escaping themselves when writing down the value. + +>>>>> Looking at the content of the default `page.tmpl` let's see what variables fall into which categories: +>>>>> * Used as URL: BASEURL, EDITURL, PARENTLINKS->URL, RECENTCHANGESURL, HISTORYURL, GETSOURCEURL, PREFSURL, OTHERLANGUAGES->URL, ADDCOMMENTURL, BACKLINKS->URL, MORE_BACKLINKS->URL +>>>>> * Used as part of a URL: FAVICON, LOCAL_CSS +>>>>> * Needs to be HTML-escaped: TITLE +>>>>> * Used as-is (as HTML): FEEDLINKS, RELVCS, META, PERCENTTRANSLATED, SEARCHFORM, COMMENTSLINK, DISCUSSIONLINK, OTHERLANGUAGES->PERCENT, SIDEBAR, CONTENT, COMMENTS, TAGS->LINK, COPYRIGHT, LICENSE, MTIME, EXTRAFOOTER + +>>>>> This looks as if only TITLE needs HTML-escaping all the time, and that the URLS all end with "URL" in their name. Unfortunately the FAVICON and LOCAL_CSS which are part of URLS don't have "URL" in their name, though that's fair enough, since they aren't full URLs. + +>>>>> --K.A. + >>>> One reasonable option would be to declare that `field` takes text-valued >>>> fields, in which case either consumers need to escape >>>> it with `<TMPL_VAR FIELD_FOO ESCAPE=HTML>`, and not interpret it as a URL >>>> without first checking `safeurl`), or the pagetemplate hook needs to >>>> pre-escape. ->>>> + +>>>>> Since HTML::Template does have the ability to do ESCAPE=HTML/URL/JS, why not take advantage of that? Some things, like TITLE, probably should have ESCAPE=HTML all the time; that would solve the "to escape or not to escape" problem that `meta` has with titles. After all, when one *sorts* by title, one doesn't really want HTML-escaping in it; only when one uses it in a template. -- K.A. + >>>> Another reasonable option would be to declare that `field` takes raw HTML, >>>> in which case consumers need to only use it in contexts that will be >>>> HTML-scrubbed (but it becomes unsuitable for using as text - problematic @@ -294,6 +315,8 @@ smcv's discuission of field author vs meta author above. --[[Joey]] >>>> by having the `foo` field generate `TEXT_FOO` and `HTML_FOO` variables? >>>> --[[smcv]] +>>>>> Something similar is already done in `template` and `ftemplate` with the `raw_` prefix, which determines whether the variable should have `htmlize` run over it first before the value is applied to the template. Of course, that isn't scrubbing or escaping, because with those templates, the scrubbing is done afterwards as part of the normal processing. + >>> Another problem, as you point out, is special-case fields, such as a number of >>> those defined by `meta`, which have side-effects associated with them, more >>> than just providing a value to pagetemplate. Perhaps `meta` should deal with -- cgit v1.2.3 From ce9cf967d01eb8e112c19d9f7b1c9a727717ef30 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Wed, 7 Apr 2010 23:33:04 +0000 Subject: formatting --- doc/plugins/contrib/field/discussion.mdwn | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/plugins/contrib/field/discussion.mdwn b/doc/plugins/contrib/field/discussion.mdwn index 36c2118e7..103e061e5 100644 --- a/doc/plugins/contrib/field/discussion.mdwn +++ b/doc/plugins/contrib/field/discussion.mdwn @@ -289,10 +289,11 @@ smcv's discuission of field author vs meta author above. --[[Joey]] >>>>> Mind you, for trusted sources, since the person writing the page template and the person providing the variable are the same, they themselves would know whether the value will be treated as HTML, plain text, or a URL, and thus could do the needed escaping themselves when writing down the value. >>>>> Looking at the content of the default `page.tmpl` let's see what variables fall into which categories: ->>>>> * Used as URL: BASEURL, EDITURL, PARENTLINKS->URL, RECENTCHANGESURL, HISTORYURL, GETSOURCEURL, PREFSURL, OTHERLANGUAGES->URL, ADDCOMMENTURL, BACKLINKS->URL, MORE_BACKLINKS->URL ->>>>> * Used as part of a URL: FAVICON, LOCAL_CSS ->>>>> * Needs to be HTML-escaped: TITLE ->>>>> * Used as-is (as HTML): FEEDLINKS, RELVCS, META, PERCENTTRANSLATED, SEARCHFORM, COMMENTSLINK, DISCUSSIONLINK, OTHERLANGUAGES->PERCENT, SIDEBAR, CONTENT, COMMENTS, TAGS->LINK, COPYRIGHT, LICENSE, MTIME, EXTRAFOOTER + +>>>>> * **Used as URL:** BASEURL, EDITURL, PARENTLINKS->URL, RECENTCHANGESURL, HISTORYURL, GETSOURCEURL, PREFSURL, OTHERLANGUAGES->URL, ADDCOMMENTURL, BACKLINKS->URL, MORE_BACKLINKS->URL +>>>>> * **Used as part of a URL:** FAVICON, LOCAL_CSS +>>>>> * **Needs to be HTML-escaped:** TITLE +>>>>> * **Used as-is (as HTML):** FEEDLINKS, RELVCS, META, PERCENTTRANSLATED, SEARCHFORM, COMMENTSLINK, DISCUSSIONLINK, OTHERLANGUAGES->PERCENT, SIDEBAR, CONTENT, COMMENTS, TAGS->LINK, COPYRIGHT, LICENSE, MTIME, EXTRAFOOTER >>>>> This looks as if only TITLE needs HTML-escaping all the time, and that the URLS all end with "URL" in their name. Unfortunately the FAVICON and LOCAL_CSS which are part of URLS don't have "URL" in their name, though that's fair enough, since they aren't full URLs. -- cgit v1.2.3 From a4a63cb7f9dcafb72810ba1a2ad69654cb8199d2 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 8 Apr 2010 16:07:43 -0400 Subject: Update dependency for git-core to git transition. --- debian/changelog | 3 +++ debian/control | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9acd11e60..e14cc91f5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -19,6 +19,9 @@ ikiwiki (3.20100406) UNRELEASED; urgency=low them last name first. * sortnaturally: New plugin; the title_natural sort method has moved here. + [ Joey Hess ] + * Update dependency for git-core to git transition. + -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 ikiwiki (3.20100403) unstable; urgency=low diff --git a/debian/control b/debian/control index d7ce9a178..b8fe81914 100644 --- a/debian/control +++ b/debian/control @@ -23,7 +23,7 @@ Depends: ${misc:Depends}, ${perl:Depends}, ${python:Depends}, libhtml-parser-perl, liburi-perl Recommends: gcc | c-compiler, libc6-dev | libc-dev, - subversion | git-core (>= 1:1.5.0) | tla | bzr (>= 0.91) | mercurial | monotone (>= 0.38) | darcs, + subversion | git-core (>= 1:1.5.0) | git (>= 1:1.7) | tla | bzr (>= 0.91) | mercurial | monotone (>= 0.38) | darcs, libxml-simple-perl, libnet-openid-consumer-perl, liblwpx-paranoidagent-perl, libtimedate-perl, libcgi-formbuilder-perl (>= 3.05), libcgi-session-perl (>= 4.14-1), -- cgit v1.2.3 From 1c1c76c53e1d0e713e470bb6542c5cc3cef20ad2 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Fri, 9 Apr 2010 12:25:10 -0400 Subject: close bug, was fixed in 3.20100403 --- ...ox_doesn__39__t_want_to_load_updated_pages_at_ikiwiki.info.mdwn | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/bugs/firefox_doesn__39__t_want_to_load_updated_pages_at_ikiwiki.info.mdwn b/doc/bugs/firefox_doesn__39__t_want_to_load_updated_pages_at_ikiwiki.info.mdwn index 46e77a265..558eb90c8 100644 --- a/doc/bugs/firefox_doesn__39__t_want_to_load_updated_pages_at_ikiwiki.info.mdwn +++ b/doc/bugs/firefox_doesn__39__t_want_to_load_updated_pages_at_ikiwiki.info.mdwn @@ -5,3 +5,10 @@ Only explicitly pressing "reload" helps. Is it a bug? I haven't been noticing such problems usually on other sites. --Ivan Z. This remains to be true now, with Epiphany 2.26.3 (Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9.1.4pre) Gecko/20080528 Epiphany/2.22 Firefox/3.5). --Ivan Z. + +> In the most recent ikiwiki release, I added a Cache-Control hack +> explicitly to work around firefox's broken over-caching. +> +> (When I tested epiphany and chromium, neither had firefox's problem.) +> +> [[!tag done]] -- cgit v1.2.3 From d1a616df2ed79b1602658c5d10d54ee00afc537e Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Fri, 9 Apr 2010 18:43:25 -0400 Subject: po: Check that translated underlay directories exist before using them for master language. --- IkiWiki/Plugin/po.pm | 4 +++- debian/changelog | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 2250a7f9f..00c58fbe5 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -174,7 +174,9 @@ sub checkconfig () { if ($config{po_master_language}{code} ne 'en') { # Add underlay containing translated source files # for the master language. - add_underlay("locale/$config{po_master_language}{code}/$underlay"); +print STDERR "added underlay locale/$config{po_master_language}{code}/$underlay\n"; + add_underlay("locale/$config{po_master_language}{code}/$underlay") + if -d "$config{underlaydirbase}/locale/$config{po_master_language}{code}/$underlay"; } } } diff --git a/debian/changelog b/debian/changelog index e14cc91f5..e985a5da8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -21,6 +21,8 @@ ikiwiki (3.20100406) UNRELEASED; urgency=low [ Joey Hess ] * Update dependency for git-core to git transition. + * po: Check that translated underlay directories exist before using them + for master language. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 -- cgit v1.2.3 From a8761a086ebf353192e4721090ff11d3f67707b6 Mon Sep 17 00:00:00 2001 From: Cord <Cord@web> Date: Sat, 10 Apr 2010 07:06:06 +0000 Subject: --- doc/todo/More_flexible_po-plugin_for_translation.mdwn | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 doc/todo/More_flexible_po-plugin_for_translation.mdwn diff --git a/doc/todo/More_flexible_po-plugin_for_translation.mdwn b/doc/todo/More_flexible_po-plugin_for_translation.mdwn new file mode 100644 index 000000000..3399f7834 --- /dev/null +++ b/doc/todo/More_flexible_po-plugin_for_translation.mdwn @@ -0,0 +1,5 @@ +I have a website with multi-language content, where some content is only in English, some in German, and some is available in both languages. + +The po-module currently has only one master-language, with slave languages, and a PageSpec should be considered. + +It would be nice to flag the content which should have a translation on a file-by-file basis (with some inline directive?) which could contain the information of the master-language for that file and the desired target-languages. -- cgit v1.2.3 From 61cbcb049fd1eb6a57ca2f51c78767a25d22820b Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Sat, 10 Apr 2010 14:35:45 -0400 Subject: update changelog, update rebuild version --- debian/NEWS | 8 ++++---- debian/changelog | 4 +++- debian/postinst | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/debian/NEWS b/debian/NEWS index b796154fa..25ebed0b4 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -8,10 +8,10 @@ ikiwiki (3.20100406) unstable; urgency=low not regular wikilinks. If your wiki accidentially relied on the old, buggy behavior, you might need to change pagespecs to use `link()`. - To support the above change, all wikis need to be rebuilt on upgrade to - this version. If you listed your wiki in /etc/ikiwiki/wikilist this will - be done automatically when the Debian package is upgraded. Or use - ikiwiki-mass-rebuild to force a rebuild. + Due to the above and other changes, all wikis need to be rebuilt on + upgrade to this version. If you listed your wiki in /etc/ikiwiki/wikilist + this will be done automatically when the Debian package is upgraded. Or + use ikiwiki-mass-rebuild to force a rebuild. -- Simon McVittie <smcv@debian.org> Tue, 06 Apr 2010 20:53:07 +0100 diff --git a/debian/changelog b/debian/changelog index e985a5da8..113138358 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -ikiwiki (3.20100406) UNRELEASED; urgency=low +ikiwiki (3.20100410) UNRELEASED; urgency=low [ Joey Hess ] * bzr: Fix bzr log parsing to work with bzr 2.0. (liw) @@ -18,6 +18,8 @@ ikiwiki (3.20100406) UNRELEASED; urgency=low This can be used to get names sorted by last name without displaying them last name first. * sortnaturally: New plugin; the title_natural sort method has moved here. + * meta: store fields consistently unescaped, and escape on use + A wiki rebuild is also needed due to this change. [ Joey Hess ] * Update dependency for git-core to git transition. diff --git a/debian/postinst b/debian/postinst index 8eac26361..fa0591153 100755 --- a/debian/postinst +++ b/debian/postinst @@ -4,7 +4,7 @@ set -e # Change this when some incompatible change is made that requires # rebuilding all wikis. -firstcompat=3.20100406 +firstcompat=3.20100410 if [ "$1" = configure ] && \ dpkg --compare-versions "$2" lt "$firstcompat"; then -- cgit v1.2.3 From 1004e6c739aaf2d66acd41e5a8a8fc3b6d4ba2c1 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Sat, 10 Apr 2010 14:40:03 -0400 Subject: fix testsuite typedlink matchspec was removed --- t/tag.t | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/t/tag.t b/t/tag.t index cf3bbdf01..fe547d85b 100755 --- a/t/tag.t +++ b/t/tag.t @@ -3,7 +3,7 @@ package IkiWiki; use warnings; use strict; -use Test::More tests => 10; +use Test::More tests => 7; BEGIN { use_ok("IkiWiki"); } BEGIN { use_ok("IkiWiki::Plugin::tag"); } @@ -36,9 +36,4 @@ ok(!pagespec_match("two", "tagged(alpha)")); ok(pagespec_match("one", "link(tags/numbers)")); ok(pagespec_match("one", "link(alpha)")); -ok(pagespec_match("one", "typedlink(tag tags/numbers)")); -ok(!pagespec_match("one", "typedlink(tag tags/letters)")); -# invalid syntax -ok(pagespec_match("one", "typedlink(tag)")->isa("IkiWiki::ErrorReason")); - 1; -- cgit v1.2.3 From d2c36a6f4b8b4bf30d59c430893a88352ac208fc Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Sat, 10 Apr 2010 15:29:31 -0400 Subject: close --- doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn b/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn index 8e1ca42e0..587771ba4 100644 --- a/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn +++ b/doc/bugs/some_but_not_all_meta_fields_are_stored_escaped.mdwn @@ -20,6 +20,9 @@ Points of extra subtlety: that that's what Xapian wants anyway (which is why I didn't change it), but I could be wrong... + > AFAICS, this if anything, fixes a bug, xapian definitely expects + > unescaped text here. --[[Joey]] + * Page descriptions in the HTML `<head>` were previously double-escaped: the description was stored escaped with numeric entities, then that was output with a second layer of escaping! In this branch, I just emit @@ -37,3 +40,5 @@ Points of extra subtlety: contained markup could appear unescaped on any page that inlines them in `quick=yes` mode, and is rebuilt for some other reason. The failure mode here would be too little escaping, i.e. cross-site scripting. + +[[!tag done]] -- cgit v1.2.3 From d5eb5401496db1d7374a23f996e6924338d14ae2 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Sat, 10 Apr 2010 18:28:15 -0400 Subject: po: Configuring the same language as master and slave confuses processing; so filter out such a misconfiguration. --- IkiWiki/Plugin/po.pm | 2 +- debian/changelog | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 00c58fbe5..759e812e6 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -133,6 +133,7 @@ sub checkconfig () { $field, 'po')); } } + delete $config{po_slave_languages}{$config{po_master_language}{code}};; map { islanguagecode($_) @@ -174,7 +175,6 @@ sub checkconfig () { if ($config{po_master_language}{code} ne 'en') { # Add underlay containing translated source files # for the master language. -print STDERR "added underlay locale/$config{po_master_language}{code}/$underlay\n"; add_underlay("locale/$config{po_master_language}{code}/$underlay") if -d "$config{underlaydirbase}/locale/$config{po_master_language}{code}/$underlay"; } diff --git a/debian/changelog b/debian/changelog index 113138358..208578527 100644 --- a/debian/changelog +++ b/debian/changelog @@ -25,6 +25,8 @@ ikiwiki (3.20100410) UNRELEASED; urgency=low * Update dependency for git-core to git transition. * po: Check that translated underlay directories exist before using them for master language. + * po: Configuring the same language as master and slave confuses processing; + so filter out such a misconfiguration. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 -- cgit v1.2.3 From 1be32275837760c65ef96e40893fb8ba540bc939 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Sat, 10 Apr 2010 22:04:48 -0400 Subject: formatting --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 208578527..26b00a07c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -18,8 +18,8 @@ ikiwiki (3.20100410) UNRELEASED; urgency=low This can be used to get names sorted by last name without displaying them last name first. * sortnaturally: New plugin; the title_natural sort method has moved here. - * meta: store fields consistently unescaped, and escape on use - A wiki rebuild is also needed due to this change. + * meta: store fields consistently unescaped, and escape on use. + (A wiki rebuild is also needed due to this change.) [ Joey Hess ] * Update dependency for git-core to git transition. -- cgit v1.2.3 From cecbd529389788c1f1cb647e2ff297cda7554456 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Sun, 11 Apr 2010 00:30:27 -0400 Subject: plan for more efficient pagespec_match_list sorting (smcv please note) --- doc/todo/smarter_sorting.mdwn | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 doc/todo/smarter_sorting.mdwn diff --git a/doc/todo/smarter_sorting.mdwn b/doc/todo/smarter_sorting.mdwn new file mode 100644 index 000000000..5a6d63ef1 --- /dev/null +++ b/doc/todo/smarter_sorting.mdwn @@ -0,0 +1,33 @@ +I benchmarked a build of a large wiki (my home wiki), and it was spending +quite a lot of time sorting; `CORE::sort` was called only 1138 times, but +still flagged as the #1 time sink. (I'm not sure I trust NYTProf fully +about that FWIW, since it also said 27238263 calls to `cmp_age` were +the #3 timesink, and I suspect it may not entirely accurately measure +the overhead of so many short function calls.) + +`pagespec_match_list` currently always sorts *all* pages first, and then +finds the top M that match the pagespec. That's innefficient when M is +small (as for example in a typical blog, where only 20 posts are shown, +out of maybe thousands). + +As [[smcv]] noted, It could be flipped, so the pagespec is applied first, +and then sort the smaller matching set. But, checking pagespecs is likely +more expensive than sorting. (Also, influence calculation complicates +doing that, since only influences for the M returned pages should be tracked.) + +Another option, when there is a limit on M pages to return, might be to +cull the M top pages without sorting the rest. This could be done using +a variant of Ye Olde Bubble Sort. Take the first M pages, and (quick)sort. +Then for each of the rest, check if it is higher than the Mth page. +If it is, bubble it up so it's sorted. +If not, throw it out (that's the fast bit and why this is not O(N^2)). + +This would be bad when M is very large, and particularly, of course, when +there is no limit and all pages are being matched on. (For example, an +archive page shows all pages that match a pagespec specifying a creation +date range.) Well, in this case, it *does* make sense to flip it, limit by +pagespe first, and do a (quick)sort second. (No influence complications, +either.) + +Adding these special cases will be more complicated, but I think the best +of both worlds. --[[Joey]] -- cgit v1.2.3 From 0bfc364a7df124509855b8ed0b1b33ab5bc9ebbb Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Sun, 11 Apr 2010 01:30:03 -0400 Subject: optimization: pagespec_match_list with no num limit matches before sorting This can be a lot faster, since huge numbers of pages are not sorted only to mostly be thrown away. It sped up a build of my blog by at least 5 minutes. --- IkiWiki.pm | 38 ++++++++++++++++++++++++++------------ doc/todo/smarter_sorting.mdwn | 3 +++ t/pagespec_match_list.t | 6 +++++- 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 2cad6a3ef..74d452c50 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1951,8 +1951,9 @@ sub add_link ($$;$) { } } -sub sortspec_translate ($) { +sub sortspec_translate ($$) { my $spec = shift; + my $reverse = shift; my $code = ""; my @data; @@ -2007,6 +2008,10 @@ sub sortspec_translate ($) { return sub { 0 }; } + if ($reverse) { + $code="-($code)"; + } + no warnings; return eval 'sub { '.$code.' }'; } @@ -2109,18 +2114,20 @@ sub pagespec_match_list ($$;@) { ? grep { ! $params{filter}->($_) } keys %pagesources : keys %pagesources; } - - if (defined $params{sort}) { - @candidates = IkiWiki::SortSpec::sort_pages($params{sort}, - @candidates); + + my $num=$params{num}; + my $sort=$params{sort}; + my $reverse=$params{reverse}; + # when only the top matches will be returned, it's efficient to + # sort before matching to pagespec, + if (defined $num && defined $sort) { + @candidates=IkiWiki::SortSpec::sort_pages( + $sort, $reverse, @candidates); } - - @candidates=reverse(@candidates) if $params{reverse}; $depends{$page}{$pagespec} |= ($params{deptype} || $DEPEND_CONTENT); # clear params, remainder is passed to pagespec - my $num=$params{num}; delete @params{qw{num deptype reverse sort filter list}}; my @matches; @@ -2144,7 +2151,15 @@ sub pagespec_match_list ($$;@) { $depends_simple{$page}{lc $k} |= $i->{$k}; } - return @matches; + # when all matches will be returned, it's efficient to + # sort after matching + if (! defined $num && defined $sort) { + return IkiWiki::SortSpec::sort_pages( + $sort, $reverse, @matches); + } + else { + return @matches; + } } sub pagespec_valid ($) { @@ -2437,9 +2452,8 @@ package IkiWiki::SortSpec; # This is in the SortSpec namespace so that the $a and $b that sort() uses # are easily available in this namespace, for cmp functions to use them. sub sort_pages { - my $f = IkiWiki::sortspec_translate(shift); - - return sort $f @_; + my $f=IkiWiki::sortspec_translate(shift, shift); + sort $f @_ } sub cmp_title { diff --git a/doc/todo/smarter_sorting.mdwn b/doc/todo/smarter_sorting.mdwn index 5a6d63ef1..f8ac216dc 100644 --- a/doc/todo/smarter_sorting.mdwn +++ b/doc/todo/smarter_sorting.mdwn @@ -29,5 +29,8 @@ date range.) Well, in this case, it *does* make sense to flip it, limit by pagespe first, and do a (quick)sort second. (No influence complications, either.) +> Flipping when there's no limit implemented, and it knocked 1/3 off +> the rebuild time of my blog's archive pages. --[[Joey]] + Adding these special cases will be more complicated, but I think the best of both worlds. --[[Joey]] diff --git a/t/pagespec_match_list.t b/t/pagespec_match_list.t index 2ad7a9105..c7688c6c0 100755 --- a/t/pagespec_match_list.t +++ b/t/pagespec_match_list.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 90; +use Test::More tests => 92; BEGIN { use_ok("IkiWiki"); } @@ -38,12 +38,16 @@ $links{foo3}=[qw{bar}]; is_deeply([pagespec_match_list("foo", "bar")], ["bar"]); is_deeply([sort(pagespec_match_list("foo", "* and !post/*"))], ["bar", "foo", "foo2", "foo3"]); is_deeply([sort(pagespec_match_list("foo", "post/*"))], ["post/1", "post/2", "post/3"]); +is_deeply([pagespec_match_list("foo", "post/*", sort => "title")], + ["post/1", "post/2", "post/3"]); is_deeply([pagespec_match_list("foo", "post/*", sort => "title", reverse => 1)], ["post/3", "post/2", "post/1"]); is_deeply([pagespec_match_list("foo", "post/*", sort => "title", num => 2)], ["post/1", "post/2"]); is_deeply([pagespec_match_list("foo", "post/*", sort => "title", num => 50)], ["post/1", "post/2", "post/3"]); +is_deeply([pagespec_match_list("foo", "post/*", sort => "title", num => 50, reverse => 1)], + ["post/3", "post/2", "post/1"]); is_deeply([pagespec_match_list("foo", "post/*", sort => "title", filter => sub { $_[0] =~ /3/}) ], ["post/1", "post/2"]); -- cgit v1.2.3 From 9060cb0cf8f73fca276719dd92dfae9b48d64d38 Mon Sep 17 00:00:00 2001 From: Simon McVittie <smcv@debian.org> Date: Sun, 11 Apr 2010 14:32:18 +0100 Subject: Space sorting orders consistently Markdown interprets the empty lines resulting from [[!if]] as a request that each <li> contain a <p>. For consistent spacing in the HTML, either the unconditional items should have blank lines between (resulting in each <li> having a <p>), or the conditional items should not (resulting in messy source code, and no <li> having a <p>). I think the former looks nicer. --- doc/ikiwiki/pagespec/sorting.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/ikiwiki/pagespec/sorting.mdwn b/doc/ikiwiki/pagespec/sorting.mdwn index 37995f1e8..ccd7f7eaa 100644 --- a/doc/ikiwiki/pagespec/sorting.mdwn +++ b/doc/ikiwiki/pagespec/sorting.mdwn @@ -4,7 +4,9 @@ specifying the order that matching pages are shown in. The following sort orders can be specified. * `age` - List pages from the most recently created to the oldest. + * `mtime` - List pages with the most recently modified first. + * `title` - Order by title (page name). [[!if test="enabled(sortnaturally)" then=""" * `title_natural` - Orders by title, but numbers in the title are treated -- cgit v1.2.3 From d50bd08439d5df17855b62f7c4d658027f93792d Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Mon, 12 Apr 2010 12:41:32 -0400 Subject: refactor sortspec translation --- IkiWiki.pm | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 74d452c50..1730e476a 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2102,6 +2102,8 @@ sub pagespec_match_list ($$;@) { my $sub=pagespec_translate($pagespec); error "syntax error in pagespec \"$pagespec\"" if ! defined $sub; + my $sort=sortspec_translate($params{sort}, $params{reverse}) + if defined $params{sort}; my @candidates; if (exists $params{list}) { @@ -2115,21 +2117,18 @@ sub pagespec_match_list ($$;@) { : keys %pagesources; } + # clear params, remainder is passed to pagespec + $depends{$page}{$pagespec} |= ($params{deptype} || $DEPEND_CONTENT); my $num=$params{num}; - my $sort=$params{sort}; - my $reverse=$params{reverse}; + delete @params{qw{num deptype reverse sort filter list}}; + # when only the top matches will be returned, it's efficient to # sort before matching to pagespec, if (defined $num && defined $sort) { @candidates=IkiWiki::SortSpec::sort_pages( - $sort, $reverse, @candidates); + $sort, @candidates); } - $depends{$page}{$pagespec} |= ($params{deptype} || $DEPEND_CONTENT); - - # clear params, remainder is passed to pagespec - delete @params{qw{num deptype reverse sort filter list}}; - my @matches; my $firstfail; my $count=0; @@ -2155,7 +2154,7 @@ sub pagespec_match_list ($$;@) { # sort after matching if (! defined $num && defined $sort) { return IkiWiki::SortSpec::sort_pages( - $sort, $reverse, @matches); + $sort, @matches); } else { return @matches; @@ -2452,7 +2451,7 @@ package IkiWiki::SortSpec; # This is in the SortSpec namespace so that the $a and $b that sort() uses # are easily available in this namespace, for cmp functions to use them. sub sort_pages { - my $f=IkiWiki::sortspec_translate(shift, shift); + my $f=shift; sort $f @_ } -- cgit v1.2.3 From df022df35e3e3fd1d2916e762a2359f23a84a955 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Mon, 12 Apr 2010 14:57:40 -0400 Subject: implemented the other half of this Writing my own sort code actually was faster than the built in sort. Whee! (That's not supposed to happen, is it. ;) But, I need to make sure influences are calculated alright. --- doc/todo/smarter_sorting.mdwn | 107 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 106 insertions(+), 1 deletion(-) diff --git a/doc/todo/smarter_sorting.mdwn b/doc/todo/smarter_sorting.mdwn index f8ac216dc..4a638213f 100644 --- a/doc/todo/smarter_sorting.mdwn +++ b/doc/todo/smarter_sorting.mdwn @@ -13,7 +13,7 @@ out of maybe thousands). As [[smcv]] noted, It could be flipped, so the pagespec is applied first, and then sort the smaller matching set. But, checking pagespecs is likely more expensive than sorting. (Also, influence calculation complicates -doing that, since only influences for the M returned pages should be tracked.) +doing that.) Another option, when there is a limit on M pages to return, might be to cull the M top pages without sorting the rest. This could be done using @@ -22,6 +22,111 @@ Then for each of the rest, check if it is higher than the Mth page. If it is, bubble it up so it's sorted. If not, throw it out (that's the fast bit and why this is not O(N^2)). +> The patch below implements this, perhaps not as efficiently as possible. +> It speeds up building just the top page of my blog by 1 second (out of +> 18). It's probably buggy. +> +> But, I have not thought enough about influence calculation. +> I need to figure out which pagespec matches influences need to be +> accumulated for in order to determine all possible influences of a +> pagespec are known. +> +> The old code accumulates influences from matching all successful pages +> up to the num cutoff, as well as influences from an arbitrary (sometimes +> zero) number of failed matches. New code does not accumulate influences +> from all the top successful matches, only an arbitrary group of +> successes and some failures. + +<pre> +diff --git a/IkiWiki.pm b/IkiWiki.pm +index 1730e47..6798799 100644 +--- a/IkiWiki.pm ++++ b/IkiWiki.pm +@@ -2122,36 +2122,53 @@ sub pagespec_match_list ($$;@) { + my $num=$params{num}; + delete @params{qw{num deptype reverse sort filter list}}; + +- # when only the top matches will be returned, it's efficient to +- # sort before matching to pagespec, +- if (defined $num && defined $sort) { +- @candidates=IkiWiki::SortSpec::sort_pages( +- $sort, @candidates); +- } +- ++ # Find the first num matches (or all), before sorting. + my @matches; +- my $firstfail; + my $count=0; + my $accum=IkiWiki::SuccessReason->new(); +- foreach my $p (@candidates) { +- my $r=$sub->($p, %params, location => $page); ++ my $i; ++ for ($i=0; $i < @candidates; $i++) { ++ my $r=$sub->($candidates[$i], %params, location => $page); + error(sprintf(gettext("cannot match pages: %s"), $r)) + if $r->isa("IkiWiki::ErrorReason"); + $accum |= $r; + if ($r) { +- push @matches, $p; ++ push @matches, $candidates[$i]; + last if defined $num && ++$count == $num; + } + } + ++ # We have num natches, but they may not be the best. ++ # Efficiently find and add the rest, without sorting the full list of ++ # candidates. ++ if (defined $num && defined $sort) { ++ @matches=IkiWiki::SortSpec::sort_pages($sort, @matches); ++ ++ for ($i++; $i < @candidates; $i++) { ++ # Comparing candidate with lowest match is cheaper, ++ # so it's done before testing against pagespec. ++ if (IkiWiki::SortSpec::cmptwo($candidates[$i], $matches[-1], $sort) < 0 && ++ $sub->($candidates[$i], %params, location => $page) ++ ) { ++ # this could be done less expensively ++ # using a binary search ++ for (my $j=0; $j < @matches; $j++) { ++ if (IkiWiki::SortSpec::cmptwo($candidates[$i], $matches[$j], $sort) < 0) { ++ $matches[$j]=$candidates[$i]; ++ last; ++ } ++ } ++ } ++ } ++ } ++ + # Add simple dependencies for accumulated influences. +- my $i=$accum->influences; +- foreach my $k (keys %$i) { +- $depends_simple{$page}{lc $k} |= $i->{$k}; ++ my $inf=$accum->influences; ++ foreach my $k (keys %$inf) { ++ $depends_simple{$page}{lc $k} |= $inf->{$k}; + } + +- # when all matches will be returned, it's efficient to +- # sort after matching ++ # Sort if we didn't already. + if (! defined $num && defined $sort) { + return IkiWiki::SortSpec::sort_pages( + $sort, @matches); +@@ -2455,6 +2472,12 @@ sub sort_pages { + sort $f @_ + } + ++sub cmptwo { ++ $a=$_[0]; ++ $b=$_[1]; ++ $_[2]->(); ++} ++ + sub cmp_title { + IkiWiki::pagetitle(IkiWiki::basename($a)) + cmp +</pre> + This would be bad when M is very large, and particularly, of course, when there is no limit and all pages are being matched on. (For example, an archive page shows all pages that match a pagespec specifying a creation -- cgit v1.2.3 From f5da8d3aed4b710983c7492cf708d0c874bce9e7 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Mon, 12 Apr 2010 15:16:57 -0400 Subject: more tests with more items --- t/pagespec_match_list.t | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/t/pagespec_match_list.t b/t/pagespec_match_list.t index c7688c6c0..05dc012fe 100755 --- a/t/pagespec_match_list.t +++ b/t/pagespec_match_list.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 92; +use Test::More tests => 94; BEGIN { use_ok("IkiWiki"); } @@ -132,3 +132,14 @@ foreach my $spec ("nosuchpage or link(bar)", "link(bar) or nosuchpage", %IkiWiki::depends_simple=(); %IkiWiki::depends=(); } + +my @ps; +foreach my $p (100..500) { + $IkiWiki::pagectime{"p/$p"} = $p; + $pagesources{"p/$p"} = "p/$p.mdwn"; + unshift @ps, "p/$p"; +} +is_deeply([pagespec_match_list("foo", "p/*", sort => "age")], + [@ps]); +is_deeply([pagespec_match_list("foo", "p/*", sort => "age", num => 20)], + [@ps[0..19]]); -- cgit v1.2.3 From 24fb346938037b0d41988510bc6e19e81aa62190 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Mon, 12 Apr 2010 16:04:49 -0400 Subject: fix bug --- doc/todo/smarter_sorting.mdwn | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/todo/smarter_sorting.mdwn b/doc/todo/smarter_sorting.mdwn index 4a638213f..33c825641 100644 --- a/doc/todo/smarter_sorting.mdwn +++ b/doc/todo/smarter_sorting.mdwn @@ -24,7 +24,7 @@ If not, throw it out (that's the fast bit and why this is not O(N^2)). > The patch below implements this, perhaps not as efficiently as possible. > It speeds up building just the top page of my blog by 1 second (out of -> 18). It's probably buggy. +> 18). > > But, I have not thought enough about influence calculation. > I need to figure out which pagespec matches influences need to be @@ -39,10 +39,10 @@ If not, throw it out (that's the fast bit and why this is not O(N^2)). <pre> diff --git a/IkiWiki.pm b/IkiWiki.pm -index 1730e47..6798799 100644 +index 1730e47..bc8b23d 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm -@@ -2122,36 +2122,53 @@ sub pagespec_match_list ($$;@) { +@@ -2122,36 +2122,54 @@ sub pagespec_match_list ($$;@) { my $num=$params{num}; delete @params{qw{num deptype reverse sort filter list}}; @@ -89,7 +89,8 @@ index 1730e47..6798799 100644 + # using a binary search + for (my $j=0; $j < @matches; $j++) { + if (IkiWiki::SortSpec::cmptwo($candidates[$i], $matches[$j], $sort) < 0) { -+ $matches[$j]=$candidates[$i]; ++ splice @matches, $j, $#matches-$j+1, $candidates[$i], ++ @matches[$j..$#matches-1]; + last; + } + } @@ -112,7 +113,7 @@ index 1730e47..6798799 100644 if (! defined $num && defined $sort) { return IkiWiki::SortSpec::sort_pages( $sort, @matches); -@@ -2455,6 +2472,12 @@ sub sort_pages { +@@ -2455,6 +2473,12 @@ sub sort_pages { sort $f @_ } -- cgit v1.2.3 From aaaef740107aacd8f6987711da6895c02e4473ad Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Mon, 12 Apr 2010 16:46:38 -0400 Subject: update --- doc/todo/smarter_sorting.mdwn | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/doc/todo/smarter_sorting.mdwn b/doc/todo/smarter_sorting.mdwn index 33c825641..901e143a7 100644 --- a/doc/todo/smarter_sorting.mdwn +++ b/doc/todo/smarter_sorting.mdwn @@ -16,15 +16,9 @@ more expensive than sorting. (Also, influence calculation complicates doing that.) Another option, when there is a limit on M pages to return, might be to -cull the M top pages without sorting the rest. This could be done using -a variant of Ye Olde Bubble Sort. Take the first M pages, and (quick)sort. -Then for each of the rest, check if it is higher than the Mth page. -If it is, bubble it up so it's sorted. -If not, throw it out (that's the fast bit and why this is not O(N^2)). +cull the M top pages without sorting the rest. -> The patch below implements this, perhaps not as efficiently as possible. -> It speeds up building just the top page of my blog by 1 second (out of -> 18). +> The patch below implements this. > > But, I have not thought enough about influence calculation. > I need to figure out which pagespec matches influences need to be @@ -36,6 +30,11 @@ If not, throw it out (that's the fast bit and why this is not O(N^2)). > zero) number of failed matches. New code does not accumulate influences > from all the top successful matches, only an arbitrary group of > successes and some failures. +> +> Also, by the time I finished this, it was not measuarably faster than +> the old method. At least not with a few thousand pages; it +> might be worth revisiting this sometime for many more pages? [[done]] +> --[[Joey]] <pre> diff --git a/IkiWiki.pm b/IkiWiki.pm -- cgit v1.2.3 From 46551be9efcdecc41163750fabadebf4957358b3 Mon Sep 17 00:00:00 2001 From: "http://oneingray.myopenid.com/" <http://oneingray.myopenid.com/@web> Date: Wed, 14 Apr 2010 15:42:25 +0000 Subject: Give a bit more details about the Wikis (now one more) I run. --- doc/users/ivan_shmakov.mdwn | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/doc/users/ivan_shmakov.mdwn b/doc/users/ivan_shmakov.mdwn index de58cb207..3d3951d71 100644 --- a/doc/users/ivan_shmakov.mdwn +++ b/doc/users/ivan_shmakov.mdwn @@ -1,4 +1,14 @@ … To put it short: an Ikiwiki newbie. -I run an Ikiwiki instance at <http://gray.siamics.net/~ivan/lhc/> -(though the DNS servers may be flacky due to transition to Dyn Inc.) +Currently, I run a couple of Ikiwiki instances. Namely: + +* <http://lhc.am-1.org/lhc/> + — to hold random stuff written by me, my colleagues, + students, etc. + +* <http://rsdesne.am-1.org/rsdesne-2010/> + — for some of the materials related to the + &ldaquo;Remote Sensing in Education, Science and National + Economy&rdaquo; (2010-03-29 … 2010-04-10, Altai State + University) program I've recently recently participated in as + an instructor. -- cgit v1.2.3 From 43ad6bf96171e88a165278078d61fd221f14b1b4 Mon Sep 17 00:00:00 2001 From: "http://oneingray.myopenid.com/" <http://oneingray.myopenid.com/@web> Date: Wed, 14 Apr 2010 15:54:49 +0000 Subject: More details on my personal preferences (as related to Ikiwiki.) --- doc/users/ivan_shmakov.mdwn | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/doc/users/ivan_shmakov.mdwn b/doc/users/ivan_shmakov.mdwn index 3d3951d71..d21825c2f 100644 --- a/doc/users/ivan_shmakov.mdwn +++ b/doc/users/ivan_shmakov.mdwn @@ -1,5 +1,10 @@ … To put it short: an Ikiwiki newbie. +[Emacs]: http://www.gnu.org/software/emacs/ +[Lynx]: http://lynx.isc.org/ + +## Wikis + Currently, I run a couple of Ikiwiki instances. Namely: * <http://lhc.am-1.org/lhc/> @@ -12,3 +17,34 @@ Currently, I run a couple of Ikiwiki instances. Namely: Economy&rdaquo; (2010-03-29 … 2010-04-10, Altai State University) program I've recently recently participated in as an instructor. + +## Preferences + +I prefer to use [Lynx][] along with [Emacs][] (via +`emacsclient`) to work with the wikis. (Note the &ldaquo;Local +variables&rdaquo; section below.) + +The things I dislike in the wiki engines are: + +* the use of home-brew specialized version control systems + — while there're a lot of much more developed general + purpose ones; + +* oversimplified syntax + — which (to some extent) precludes more sophisticated + forms of automated processing; in particular, this forces one + to reformat the material, once complete, to, say, prepare a + book, or an article, or slides. + +Out of all the wiki engines I'm familiar with, only Ikiwiki is +free of the first of these. I hope that it will support more +elaborate syntaxes eventually. + +---- + + Local variables: + mode: markdown + coding: utf-8 + fill-column: 64 + ispell-dictionary: "american" + End: -- cgit v1.2.3 From 766ad1cb4c78a9cc3f745deb0f9325a139d363d9 Mon Sep 17 00:00:00 2001 From: "http://oneingray.myopenid.com/" <http://oneingray.myopenid.com/@web> Date: Wed, 14 Apr 2010 15:56:45 +0000 Subject: Fixed the double quotes. --- doc/users/ivan_shmakov.mdwn | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/users/ivan_shmakov.mdwn b/doc/users/ivan_shmakov.mdwn index d21825c2f..69fc29d7f 100644 --- a/doc/users/ivan_shmakov.mdwn +++ b/doc/users/ivan_shmakov.mdwn @@ -13,16 +13,16 @@ Currently, I run a couple of Ikiwiki instances. Namely: * <http://rsdesne.am-1.org/rsdesne-2010/> — for some of the materials related to the - &ldaquo;Remote Sensing in Education, Science and National - Economy&rdaquo; (2010-03-29 … 2010-04-10, Altai State + “Remote Sensing in Education, Science and National + Economy” (2010-03-29 … 2010-04-10, Altai State University) program I've recently recently participated in as an instructor. ## Preferences I prefer to use [Lynx][] along with [Emacs][] (via -`emacsclient`) to work with the wikis. (Note the &ldaquo;Local -variables&rdaquo; section below.) +`emacsclient`) to work with the wikis. (Note the “Local +variables” section below.) The things I dislike in the wiki engines are: -- cgit v1.2.3 From e6e77d2311503627fb9ac8485f323535de059359 Mon Sep 17 00:00:00 2001 From: "http://oneingray.myopenid.com/" <http://oneingray.myopenid.com/@web> Date: Wed, 14 Apr 2010 16:03:20 +0000 Subject: Fixed a typo. --- doc/users/ivan_shmakov.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/users/ivan_shmakov.mdwn b/doc/users/ivan_shmakov.mdwn index 69fc29d7f..4123e0fc6 100644 --- a/doc/users/ivan_shmakov.mdwn +++ b/doc/users/ivan_shmakov.mdwn @@ -15,7 +15,7 @@ Currently, I run a couple of Ikiwiki instances. Namely: — for some of the materials related to the “Remote Sensing in Education, Science and National Economy” (2010-03-29 … 2010-04-10, Altai State - University) program I've recently recently participated in as + University) program I've recently participated in as an instructor. ## Preferences -- cgit v1.2.3 From 53c8e674ace50d8733e913e8cfa5d40793e5019d Mon Sep 17 00:00:00 2001 From: PaulePanter <PaulePanter@web> Date: Wed, 14 Apr 2010 17:38:39 +0000 Subject: Correct comment. We want to merge the branch *doc* into branch *master* as the sample output suggests. --- doc/tips/spam_and_softwaresites.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/tips/spam_and_softwaresites.mdwn b/doc/tips/spam_and_softwaresites.mdwn index 507858c0c..a07889e6b 100644 --- a/doc/tips/spam_and_softwaresites.mdwn +++ b/doc/tips/spam_and_softwaresites.mdwn @@ -34,7 +34,7 @@ branch. If there is, see 'erase spam from the commit history', below, first. Once you are confident it's clean: - # ensure you are on the doc branch + # ensure you are on the master branch $ git branch doc * master -- cgit v1.2.3 From 43ed0cd07ece2b5238d1c148552620a6a1c37436 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Wed, 14 Apr 2010 16:04:52 -0400 Subject: note link types are now available --- doc/todo/structured_page_data.mdwn | 3 +++ doc/todo/tracking_bugs_with_dependencies.mdwn | 3 +++ 2 files changed, 6 insertions(+) diff --git a/doc/todo/structured_page_data.mdwn b/doc/todo/structured_page_data.mdwn index da9da9663..9f21fab7f 100644 --- a/doc/todo/structured_page_data.mdwn +++ b/doc/todo/structured_page_data.mdwn @@ -253,6 +253,9 @@ in a large number of other cases. > dependencies between bugs from arbitrary links. >> This issue (the need for distinguished kinds of links) has also been brought up in other discussions: [[tracking_bugs_with_dependencies#another_kind_of_links]] (deps vs. links) and [[tag_pagespec_function]] (tags vs. links). --Ivan Z. +>>> And multiple link types are now supported; plugins can set the link +>>> type when registering a link, and pagespec functions can match on them. --[[Joey]] + ---- #!/usr/bin/perl diff --git a/doc/todo/tracking_bugs_with_dependencies.mdwn b/doc/todo/tracking_bugs_with_dependencies.mdwn index 5f3ece290..456dadad0 100644 --- a/doc/todo/tracking_bugs_with_dependencies.mdwn +++ b/doc/todo/tracking_bugs_with_dependencies.mdwn @@ -81,6 +81,9 @@ I like the idea of [[tips/integrated_issue_tracking_with_ikiwiki]], and I do so >> I saw that this issue is targeted at by the work on [[structured page data#another_kind_of_links]]. --Ivan Z. +>>> It's fixed now; links can have a type, such as "tag", or "dependency", +>>> and pagespecs can match links of a given typo. --[[Joey]] + Okie - I've had a quick attempt at this. Initial patch attached. This one doesn't quite work. And there is still a lot of debugging stuff in there. -- cgit v1.2.3 From 2f6da5fd2b17541ff88072862d37c4d6f95a50b5 Mon Sep 17 00:00:00 2001 From: "http://oblomov.myopenid.com/" <http://oblomov.myopenid.com/@web> Date: Thu, 15 Apr 2010 07:19:47 +0000 Subject: Describe my tag type proposal --- doc/todo/Multiple_categorization_namespaces.mdwn | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 doc/todo/Multiple_categorization_namespaces.mdwn diff --git a/doc/todo/Multiple_categorization_namespaces.mdwn b/doc/todo/Multiple_categorization_namespaces.mdwn new file mode 100644 index 000000000..8a0866dc5 --- /dev/null +++ b/doc/todo/Multiple_categorization_namespaces.mdwn @@ -0,0 +1,24 @@ +I came across this when working on converting my old blog into an ikiwiki, but I think it could be of more general use. + +The background: I have a (currently suspended, waiting to be converted) blog on the [il Cannocchiale](http://www.ilcannocchiale.it) hosting platform. Aside from the usual metatadata (title, author), il Cannocchiale also provides tags and two additional categorization namespaces: a blog-specific user-defind "column" (Rubrica) and a platform-wide "category" (Categoria). The latter is used to group and label a couple of platform-wide lists of latest posts, the former may be used in many different ways (e.g. multi-author blogs could have one column per author or so, or as a form of 'macro-tagging'). Columns are also a little more sophisticated than classical tags because you can assign them a subtitle too. + +When I started working on the conversion, my first idea was to convert Rubriche to subdirectories of an ikiwiki blog. However, this left me with a few annoying things: when rebuilding links from the import, I had to (programmatically) dive into each subdirectory to see where each post was; this would also be problematic for future posting, too. It also meant that moving a post from a Robrica to the other would break all links (unless ikiwiki has a way to fix this automagically). And I wasn't too keen on the fact that the Rubrica would come up in the URL of the post. And finally, of course, I couldn't use this to preserve the Categoria metadata. + +Another solution I thought about was to use special deeper tags for the Rubrica and Categoria (like: `\[[!tag "Rubrica/Some name"]]`), but this is horrible, clumsy, and makes special treatment of these tags a PITN (for example you wouldn't want the Rubrica to be displayed together with the other tags, and you would want it displayed somewhere else like next to the title of the post). This solution however looks to me as the proper path, as long as tags could support totally separate namespaces. I have a tentative implementation of this `tagtype` feature at [my git clone of ikiwiki](http://git.oblomov.eu/ikiwiki). + +The feature is currently implemented as follows: a `tagtypes` config options takes an array of strings: the tag types to be defined _aside from the usual tags_. Each tag type automatically provides a new directive which sets up tags that different from standard tags by having a different tagbase (the same as the tagtype) and link type (again, the same as the tagtype) (a TODO item for this would to make the directive, tagbase and link type customizable). For example, for my imported blog I would define + + tagtypes => [qw{Categoria Rubrica}] + +and then in the blog posts I would have stuff like + + \[[!Categoria "LAVORO/Vita da impiegato"]] + \[[!Rubrica "Il mio mondo"]] + \[[!meta title="Blah blah"]] + \[[!meta author="oblomov"]] + + The body of the article + + \[[!tag a bunch of tags]] + +and the tags would appear at the bottom of the post, the Rubrica next to the title, etc. All of this information would end up as categories in the feeds (although I would like to rework that code to make use of namespaces, terms and labels in a different way). -- cgit v1.2.3 From 19700c70e54cd6d94cf02bf160d65f951dcb7d66 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Thu, 15 Apr 2010 07:39:32 +0000 Subject: response, alternative proposal --- doc/todo/Multiple_categorization_namespaces.mdwn | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/doc/todo/Multiple_categorization_namespaces.mdwn b/doc/todo/Multiple_categorization_namespaces.mdwn index 8a0866dc5..dc66a0245 100644 --- a/doc/todo/Multiple_categorization_namespaces.mdwn +++ b/doc/todo/Multiple_categorization_namespaces.mdwn @@ -22,3 +22,14 @@ and then in the blog posts I would have stuff like \[[!tag a bunch of tags]] and the tags would appear at the bottom of the post, the Rubrica next to the title, etc. All of this information would end up as categories in the feeds (although I would like to rework that code to make use of namespaces, terms and labels in a different way). + +> Note [[plugins/contrib/report/discussion]]. To quote myself from the latter page: +> *I find tags as they currently exist to be too limiting. I prefer something that can be used for Faceted Tagging http://en.wikipedia.org/wiki/Faceted_classification; that is, things like Author:Fred Nurk, Genre:Historical, Rating:Good, and so on. Of course, that doesn't mean that each tag is limited to only one value, either; just to take the above examples, something might have more than one author, or have multiple genres (such as Historical + Romance).* + +> So you aren't the only one who wants to do more with tags, but I don't think that adding a new directive for each tag type is the way to go; I think it would be simpler to just have one directive, and take advantage of the new [[matching different kinds of links]] functionality, and enhance the tag directive. +> Perhaps something like this: + + \[[!tag categorica="LAVORO/Vita da impiegato" rubrica="Il mio mondo"]] + +> Part of my thinking in this is to also combine tags with [[plugins/contrib/field]], so that the tags for a page could be queried and displayed; that way, one could put them wherever you wanted on the page, using any of [[plugins/contrib/getfield]], [[plugins/contrib/ftemplate]], or [[plugins/contrib/report]]. +> --[[KathrynAndersen]] -- cgit v1.2.3 From 55d4e6bdce5cf16c629765bf227125ea8899417b Mon Sep 17 00:00:00 2001 From: "http://oblomov.myopenid.com/" <http://oblomov.myopenid.com/@web> Date: Thu, 15 Apr 2010 13:54:54 +0000 Subject: Reply to KA about collapsing metadata functionality --- doc/todo/Multiple_categorization_namespaces.mdwn | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/doc/todo/Multiple_categorization_namespaces.mdwn b/doc/todo/Multiple_categorization_namespaces.mdwn index dc66a0245..15b97e480 100644 --- a/doc/todo/Multiple_categorization_namespaces.mdwn +++ b/doc/todo/Multiple_categorization_namespaces.mdwn @@ -2,7 +2,7 @@ I came across this when working on converting my old blog into an ikiwiki, but I The background: I have a (currently suspended, waiting to be converted) blog on the [il Cannocchiale](http://www.ilcannocchiale.it) hosting platform. Aside from the usual metatadata (title, author), il Cannocchiale also provides tags and two additional categorization namespaces: a blog-specific user-defind "column" (Rubrica) and a platform-wide "category" (Categoria). The latter is used to group and label a couple of platform-wide lists of latest posts, the former may be used in many different ways (e.g. multi-author blogs could have one column per author or so, or as a form of 'macro-tagging'). Columns are also a little more sophisticated than classical tags because you can assign them a subtitle too. -When I started working on the conversion, my first idea was to convert Rubriche to subdirectories of an ikiwiki blog. However, this left me with a few annoying things: when rebuilding links from the import, I had to (programmatically) dive into each subdirectory to see where each post was; this would also be problematic for future posting, too. It also meant that moving a post from a Robrica to the other would break all links (unless ikiwiki has a way to fix this automagically). And I wasn't too keen on the fact that the Rubrica would come up in the URL of the post. And finally, of course, I couldn't use this to preserve the Categoria metadata. +When I started working on the conversion, my first idea was to convert Rubriche to subdirectories of an ikiwiki blog. However, this left me with a few annoying things: when rebuilding links from the import, I had to (programmatically) dive into each subdirectory to see where each post was; this would also be problematic for future posting, too. It also meant that moving a post from a Rubrica to the other would break all links (unless ikiwiki has a way to fix this automagically). And I wasn't too keen on the fact that the Rubrica would come up in the URL of the post. And finally, of course, I couldn't use this to preserve the Categoria metadata. Another solution I thought about was to use special deeper tags for the Rubrica and Categoria (like: `\[[!tag "Rubrica/Some name"]]`), but this is horrible, clumsy, and makes special treatment of these tags a PITN (for example you wouldn't want the Rubrica to be displayed together with the other tags, and you would want it displayed somewhere else like next to the title of the post). This solution however looks to me as the proper path, as long as tags could support totally separate namespaces. I have a tentative implementation of this `tagtype` feature at [my git clone of ikiwiki](http://git.oblomov.eu/ikiwiki). @@ -33,3 +33,13 @@ and the tags would appear at the bottom of the post, the Rubrica next to the tit > Part of my thinking in this is to also combine tags with [[plugins/contrib/field]], so that the tags for a page could be queried and displayed; that way, one could put them wherever you wanted on the page, using any of [[plugins/contrib/getfield]], [[plugins/contrib/ftemplate]], or [[plugins/contrib/report]]. > --[[KathrynAndersen]] + +>> A very generic metadata framework could cover all possible usages of fields, tags, and related metadata, but keeping its _user interface_ generic would only make it hard to use. Note that this is not an objection to the idea of collapsing the fields and tags functionality (at quick glance, I cannot see a real difference between single-valued custom tagtypes and fields, but see below), but more about the syntax. + +>> I had thought about the `\[[!tag type1=value1 type2=value2]]` syntax myself, but ultimately decided against it for a number of reasons, most importantly the fact that (1) it's harder to type, (2) it's harder to spot errors in the tag types (so for example if one misspelled `categoria` as `categorica`, he might not notice it as quickly as seeing the un-parsed `\[[!categorica ]]` directive in the output html) and (3) it encourages collapsing possibly unrelated metadata together (for example, I would never consider putting the categoria information together with the rubrica one; of course with your syntax it's perfectly possible to keep them separate as well). + +>> Point (2) may be considered a downside as well as an upside, depending on perspective, of course. And it would be possible to have a set of predefined tag types to match against, like in my tagtype directive approach but with your syntax. Point (3) is of course entirely in the hands of the user, but that's exactly what syntax should be about. There is nothing functionally wrong with e.g. `\[[!meta tag=sometag author=someauthor title=sometitle rubrica=somecolumn]]`, but I honestly find it horrible. + +>> A solution could be to allow both syntaxes, getting to have for example `\[[!sometagtype "blah"]]` as a shortcut for `\[[!tag sometagtype="blah"]]` (or, in the more general case, `\[[!somefieldname "blah"]]` as a shortcut for `\[[!meta fieldname="blah"]]`). + +>> I would like to point out however that there are some functional differences between categorization metadata vs other metadata that might suggest to keep fields and (my extended) tags separate. For examples, in feeds you'd want all categorization metadata to fall in one place, with some appropriate manipulation (which I still have to implement, by the way), while things like author or title would go to the corresponding feed item properties. Although it all would be possible with appropriate report or template juggling, having such default metadata handled natively looks like a bonus to me. -- cgit v1.2.3 From 81ce1cf9daf113c88581407d5e68d8f6ee61d674 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 13:38:24 -0400 Subject: remove example comments_pagespec setting auto-blog.setup configures this automatically now --- doc/examples/blog.mdwn | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/examples/blog.mdwn b/doc/examples/blog.mdwn index f542cad0c..b9b57b944 100644 --- a/doc/examples/blog.mdwn +++ b/doc/examples/blog.mdwn @@ -19,10 +19,8 @@ Some additional configuration you might want to do: * Enable the [[pagestats|plugins/pagestats]] plugin to get a tag cloud to display on the [[index]]. -* Enable the [[comments|plugins/comments]] plugin and configure it to - enable comments to posts to the blog: - - comments_pagespec => 'blog/posts/* and !*/Discussion', +* Enable the [[comments|plugins/comments]] plugin to + enable comments to posts to the blog. * Enable the [[calendar|plugins/calendar]] plugin and run the [[ikiwiki-calendar]] command from cron daily to get an interlinked -- cgit v1.2.3 From 3131433f64235ad5425eb93d5773580b607876fb Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 13:40:53 -0400 Subject: calendar: Add archive_pagespec, which is used by ikiwiki-calendar to specify which pages to include on the calendar archive pages. (The pagespec can still also be specified on the ikiwiki-calendar command line.) --- IkiWiki/Plugin/calendar.pm | 8 ++++++++ debian/changelog | 4 ++++ doc/ikiwiki-calendar.mdwn | 8 +++++--- doc/ikiwiki/directive/calendar.mdwn | 7 +++++-- ikiwiki-calendar.in | 6 +++++- 5 files changed, 27 insertions(+), 6 deletions(-) diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm index ff84bc440..0f0e9518a 100644 --- a/IkiWiki/Plugin/calendar.pm +++ b/IkiWiki/Plugin/calendar.pm @@ -47,6 +47,14 @@ sub getsetup () { safe => 1, rebuild => 1, }, + archive_pagespec => { + type => "pagespec", + example => "posts/* and !*/Discussion", + description => "PageSpec of pages to include in the archives; used by ikiwiki-calendar command", + link => 'ikiwiki/PageSpec', + safe => 1, + rebuild => 0, + }, } sub is_leap_year (@) { diff --git a/debian/changelog b/debian/changelog index 26b00a07c..7c607b2a5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -27,6 +27,10 @@ ikiwiki (3.20100410) UNRELEASED; urgency=low for master language. * po: Configuring the same language as master and slave confuses processing; so filter out such a misconfiguration. + * calendar: Add archive_pagespec, which is used by ikiwiki-calendar to + specify which pages to include on the calendar archive pages. + (The pagespec can still also be specified on the ikiwiki-calendar command + line.) -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 diff --git a/doc/ikiwiki-calendar.mdwn b/doc/ikiwiki-calendar.mdwn index 982892fca..c1f4d7267 100644 --- a/doc/ikiwiki-calendar.mdwn +++ b/doc/ikiwiki-calendar.mdwn @@ -16,9 +16,11 @@ You must specify the setup file for your wiki. The pages will be created inside its `srcdir`, beneath the `archivebase` directory used by the calendar plugin (default "archives"). -You will probably want to specify a [[ikiwiki/PageSpec]] -to control which pages are included on the calendars. The -default is all pages. To limit it to only posts in a blog, +To control which pages are included on the calendars, +a [[ikiwiki/PageSpec]] can be specified. The default is +all pages, or the pages specified by the `comments_pagespec` +setting in the config file. A pagespec can also be specified +on the command line. To limit it to only posts in a blog, use something like "posts/* and !*/Discussion". It defaults to creating calendar pages for the current diff --git a/doc/ikiwiki/directive/calendar.mdwn b/doc/ikiwiki/directive/calendar.mdwn index b2ac75b11..8a08081ee 100644 --- a/doc/ikiwiki/directive/calendar.mdwn +++ b/doc/ikiwiki/directive/calendar.mdwn @@ -40,9 +40,12 @@ An example crontab: "month" or "year". The default is a month view calendar. * `pages` - Specifies the [[ikiwiki/PageSpec]] of pages to link to from the month calendar. Defaults to "*". -* `archivebase` - Configures the base of the archives hierarchy. The - default is "archives". Note that this default can also be overridden +* `archivebase` - Configures the base of the archives hierarchy. + The default is "archives". Note that this default can also be overridden for the whole wiki by setting `archivebase` in ikiwiki's setup file. + Calendars link to pages under here, with names like "2010/04" and + "2010". These pages can be automatically created using the + [[ikiwiki-calendar]] tool. * `year` - The year for which the calendar is requested. Defaults to the current year. * `month` - The numeric month for which the calendar is requested, in the diff --git a/ikiwiki-calendar.in b/ikiwiki-calendar.in index 9738ea5f7..6b6f693b3 100755 --- a/ikiwiki-calendar.in +++ b/ikiwiki-calendar.in @@ -15,7 +15,7 @@ GetOptions( "force" => \$force, ) || usage(); my $setup=shift || usage(); -my $pagespec=shift || "*"; +my $pagespec=shift; my $startyear=shift || 1900+(localtime(time))[5]; my $endyear=shift || $startyear; @@ -27,6 +27,10 @@ IkiWiki::checkconfig(); my $archivebase = 'archives'; $archivebase = $config{archivebase} if defined $config{archivebase}; +if (! defined $pagespec) { + $pagespec=$config{archive_pagespec} || "*"; +} + sub writearchive ($$;$) { my $template=template(shift); my $year=shift; -- cgit v1.2.3 From fe733e2a424f50227e4a501c3efbf1ce43e07352 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 14:29:14 -0400 Subject: enhance pagestats and rework example blog front page * pagestats: Class parameter can be used to override default class for custom styling. * pagestats: Use style=list to get a list of tags, scaled by use like in a tag cloud. This is useful to put in a sidebar. * Rework example blog front page. --- IkiWiki/Plugin/pagestats.pm | 21 ++++++++++++++++++--- debian/changelog | 5 +++++ doc/examples/blog/archives.mdwn | 7 +++++++ doc/examples/blog/comments.mdwn | 2 +- doc/examples/blog/index.mdwn | 12 ++++++++---- doc/ikiwiki/directive/pagestats.mdwn | 11 ++++++++++- 6 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 doc/examples/blog/archives.mdwn diff --git a/IkiWiki/Plugin/pagestats.pm b/IkiWiki/Plugin/pagestats.pm index 1c0b46830..48715bd3e 100644 --- a/IkiWiki/Plugin/pagestats.pm +++ b/IkiWiki/Plugin/pagestats.pm @@ -75,7 +75,7 @@ sub preprocess (@) { } if ($style eq 'table') { - return "<table class='pageStats'>\n". + return "<table class='".(exists $params{class} ? $params{class} : "pageStats")."'>\n". join("\n", map { "<tr><td>". htmllink($params{page}, $params{destpage}, $_, noimageinline => 1). @@ -87,16 +87,31 @@ sub preprocess (@) { else { # In case of misspelling, default to a page cloud - my $res = "<div class='pagecloud'>\n"; + my $res; + if ($style eq 'list') { + $res = "<ul class='".(exists $params{class} ? $params{class} : "list")."'>\n"; + } + else { + $res = "<div class='".(exists $params{class} ? $params{class} : "pagecloud")."'>\n"; + } foreach my $page (sort keys %counts) { next unless $counts{$page} > 0; my $class = $classes[$counts{$page} * scalar(@classes) / ($max + 1)]; + + $res.="<li>" if $style eq 'list'; $res .= "<span class=\"$class\">". htmllink($params{page}, $params{destpage}, $page). "</span>\n"; + $res.="</li>" if $style eq 'list'; + + } + if ($style eq 'list') { + $res = "</ul>\n"; + } + else { + $res .= "</div>\n"; } - $res .= "</div>\n"; return $res; } diff --git a/debian/changelog b/debian/changelog index 7c607b2a5..c2b0c3c23 100644 --- a/debian/changelog +++ b/debian/changelog @@ -31,6 +31,11 @@ ikiwiki (3.20100410) UNRELEASED; urgency=low specify which pages to include on the calendar archive pages. (The pagespec can still also be specified on the ikiwiki-calendar command line.) + * pagestats: Class parameter can be used to override default class for + custom styling. + * pagestats: Use style=list to get a list of tags, scaled by use like + in a tag cloud. This is useful to put in a sidebar. + * Rework example blog front page. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 diff --git a/doc/examples/blog/archives.mdwn b/doc/examples/blog/archives.mdwn new file mode 100644 index 000000000..14686cdfe --- /dev/null +++ b/doc/examples/blog/archives.mdwn @@ -0,0 +1,7 @@ +[[!if test="enabled(calendar)" then=""" +Browse through blog archives by year: +[[!map pages="./archives/* and !./archives/*/* and !*/Discussion"]] +""" +else=""" +Calendar based archives are not enabled. See [[posts]] for a full list of posts. +"""]] diff --git a/doc/examples/blog/comments.mdwn b/doc/examples/blog/comments.mdwn index 4735dea08..0b503ba01 100644 --- a/doc/examples/blog/comments.mdwn +++ b/doc/examples/blog/comments.mdwn @@ -1,3 +1,3 @@ -This page will show all comments made to posts in my [[blog|index]]. +This page will show recent comments made to posts in the [[blog|index]]. [[!inline pages="./posts/*/Discussion or internal(./posts/*/comment_*)"]] diff --git a/doc/examples/blog/index.mdwn b/doc/examples/blog/index.mdwn index 01b714fcd..b273ba1a9 100644 --- a/doc/examples/blog/index.mdwn +++ b/doc/examples/blog/index.mdwn @@ -1,9 +1,13 @@ -[[!pagestats pages="./tags/*" among="./posts/*"]] +[[!template id=note text=""" -Welcome to my blog. +* [[Tags]]: [[!pagestats style="list" pages="./tags/*" among="./posts/*"]] +* [[Recent_Comments|comments]] +* [[Archives]] -Have a look at the most recent posts below, or browse the tag cloud on the -right. Archives of all [[posts]] and all [[comments]] are also available. +[[!if test="enabled(calendar)" then=""" +[[!calendar pages="./posts/* and !*/Discussion"]] + +"""]] [[!inline pages="./posts/* and !*/Discussion" show="10" actions=yes rootpage="posts"]] diff --git a/doc/ikiwiki/directive/pagestats.mdwn b/doc/ikiwiki/directive/pagestats.mdwn index 68f4d2734..d0e0e7be7 100644 --- a/doc/ikiwiki/directive/pagestats.mdwn +++ b/doc/ikiwiki/directive/pagestats.mdwn @@ -4,10 +4,16 @@ This directive can generate stats about how pages link to each other. It can produce either a tag cloud, or a table counting the number of links to each page. -Here's how to use it to create a [[tag]] cloud: +Here's how to use it to create a [[tag]] cloud, with tags sized based +on frequency of use: \[[!pagestats pages="tags/*"]] +Here's how to create a list of tags, sized by use as they would be in a +cloud. + + \[[!pagestats style="list" pages="tags/*"]] + And here's how to create a table of all the pages on the wiki: \[[!pagestats style="table"]] @@ -28,4 +34,7 @@ links: \[[!pagestats style="table" show="10"]] +The optional `class` parameter can be used to control the class +of the generated tag cloud `div` or page stats `table`. + [[!meta robots="noindex, follow"]] -- cgit v1.2.3 From d6bfe2a25ec20ea33a0537143afdfbb847e4183f Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 14:32:53 -0400 Subject: don't link to ikiwiki-calendar, broken link on basewiki --- doc/ikiwiki/directive/calendar.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ikiwiki/directive/calendar.mdwn b/doc/ikiwiki/directive/calendar.mdwn index 8a08081ee..198da9d51 100644 --- a/doc/ikiwiki/directive/calendar.mdwn +++ b/doc/ikiwiki/directive/calendar.mdwn @@ -45,7 +45,7 @@ An example crontab: for the whole wiki by setting `archivebase` in ikiwiki's setup file. Calendars link to pages under here, with names like "2010/04" and "2010". These pages can be automatically created using the - [[ikiwiki-calendar]] tool. + `ikiwiki-calendar` program. * `year` - The year for which the calendar is requested. Defaults to the current year. * `month` - The numeric month for which the calendar is requested, in the -- cgit v1.2.3 From acd99bfe11b16e0edef570c51f840b306032efaa Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 14:39:07 -0400 Subject: propigate ikiwiki setup error out --- ikiwiki-calendar.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ikiwiki-calendar.in b/ikiwiki-calendar.in index 6b6f693b3..cdfecff3f 100755 --- a/ikiwiki-calendar.in +++ b/ikiwiki-calendar.in @@ -59,4 +59,5 @@ foreach my $y ($startyear..$endyear) { IkiWiki::rcs_commit_staged(gettext("calendar update"), undef, undef) if $config{rcs}; -system("ikiwiki", "-setup", $setup, "-refresh"); +exec("ikiwiki", "-setup", $setup, "-refresh"); +die "failed to run ikiwiki -setup $setup -refresh\n"; -- cgit v1.2.3 From 691dab03069f452b95f2319f9dcc52a27c9ff7b2 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 14:45:03 -0400 Subject: typo --- IkiWiki/Plugin/pagestats.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/pagestats.pm b/IkiWiki/Plugin/pagestats.pm index 48715bd3e..17b26f7ba 100644 --- a/IkiWiki/Plugin/pagestats.pm +++ b/IkiWiki/Plugin/pagestats.pm @@ -107,7 +107,7 @@ sub preprocess (@) { } if ($style eq 'list') { - $res = "</ul>\n"; + $res .= "</ul>\n"; } else { $res .= "</div>\n"; -- cgit v1.2.3 From baaa848f6c06b0b3a59677d3551e130c65e5fde7 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 15:04:17 -0400 Subject: CSS and templates for sidebar changed to use a class, not an id. Multiple sidebars should be possible; also, I want to add a sidebar template. --- debian/changelog | 3 ++- doc/examples/blog.mdwn | 2 +- doc/examples/blog/index.mdwn | 1 - doc/examples/blog/sidebar.mdwn | 7 ------- doc/style.css | 2 +- templates/page.tmpl | 2 +- 6 files changed, 5 insertions(+), 12 deletions(-) delete mode 100644 doc/examples/blog/sidebar.mdwn diff --git a/debian/changelog b/debian/changelog index c2b0c3c23..03361e6a0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -ikiwiki (3.20100410) UNRELEASED; urgency=low +ikiwiki (3.20100415) UNRELEASED; urgency=low [ Joey Hess ] * bzr: Fix bzr log parsing to work with bzr 2.0. (liw) @@ -36,6 +36,7 @@ ikiwiki (3.20100410) UNRELEASED; urgency=low * pagestats: Use style=list to get a list of tags, scaled by use like in a tag cloud. This is useful to put in a sidebar. * Rework example blog front page. + * CSS and templates for sidebar changed to use a class, not an id. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 diff --git a/doc/examples/blog.mdwn b/doc/examples/blog.mdwn index b9b57b944..33637e57d 100644 --- a/doc/examples/blog.mdwn +++ b/doc/examples/blog.mdwn @@ -14,7 +14,7 @@ Some additional configuration you might want to do: \[[!tag tags/life]] * Enable the [[sidebar|plugins/sidebar]] plugin to get a sidebar listing all - the categories you've tagged posts with. + the categories you've tagged posts with, and other navigation links. * Enable the [[pagestats|plugins/pagestats]] plugin to get a tag cloud to display on the [[index]]. diff --git a/doc/examples/blog/index.mdwn b/doc/examples/blog/index.mdwn index b273ba1a9..da95e7660 100644 --- a/doc/examples/blog/index.mdwn +++ b/doc/examples/blog/index.mdwn @@ -4,7 +4,6 @@ * [[Recent_Comments|comments]] * [[Archives]] -[[!if test="enabled(calendar)" then=""" [[!calendar pages="./posts/* and !*/Discussion"]] """]] diff --git a/doc/examples/blog/sidebar.mdwn b/doc/examples/blog/sidebar.mdwn deleted file mode 100644 index a9fac388e..000000000 --- a/doc/examples/blog/sidebar.mdwn +++ /dev/null @@ -1,7 +0,0 @@ -Example sidebar - -* [[Blog|index]] -* [[Archive|posts]] - -Categories: -[[!map pages="./tags/* and !*/Discussion"]] diff --git a/doc/style.css b/doc/style.css index 317d4c7aa..af0fc230c 100644 --- a/doc/style.css +++ b/doc/style.css @@ -228,7 +228,7 @@ div.recentchanges { .bigPC { font-size: 115%; } .biggestPC { font-size: 130%; } -#sidebar { +.sidebar { line-height: 3ex; width: 20ex; float: right; diff --git a/templates/page.tmpl b/templates/page.tmpl index c24f88823..7e850a56b 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -92,7 +92,7 @@ </div> <!-- .pageheader --> <TMPL_IF SIDEBAR> -<div id="sidebar"> +<div class="sidebar"> <TMPL_VAR SIDEBAR> </div> </TMPL_IF> -- cgit v1.2.3 From c50d218916d28f6ee1f1ad2b2280e4dd8c90dc1b Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 15:31:18 -0400 Subject: enable calendar by default Makes it a bit easier to include the calendar on the sidebar template. --- auto-blog.setup | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/auto-blog.setup b/auto-blog.setup index 95347167f..0a2a81bf7 100644 --- a/auto-blog.setup +++ b/auto-blog.setup @@ -36,7 +36,7 @@ IkiWiki::Setup::Automator->import( cgiurl => "http://$domain/~$ENV{USER}/$wikiname_short/ikiwiki.cgi", cgi_wrapper => "$ENV{HOME}/public_html/$wikiname_short/ikiwiki.cgi", adminemail => "$ENV{USER}\@$domain", - add_plugins => [qw{goodstuff websetup comments opendiscussion blogspam}], + add_plugins => [qw{goodstuff websetup comments opendiscussion blogspam calendar}], disable_plugins => [qw{}], libdir => "$ENV{HOME}/.ikiwiki", rss => 1, @@ -46,6 +46,7 @@ IkiWiki::Setup::Automator->import( example => "blog", comments_pagespec => "posts/* and !*/Discussion", blogspam_pagespec => "postcomment(*)", + archive_pagespec => "posts/* and !*/Discussion", discussion => 0, locked_pages => "*", tagbase => "tags", -- cgit v1.2.3 From 3fbc9e411eec34361e711813e09a516e1fb62e03 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 15:38:23 -0400 Subject: increase sidebar width from 20 to 30 ex This makes it big enough to fit a month calendar. --- doc/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/style.css b/doc/style.css index af0fc230c..80b76b26c 100644 --- a/doc/style.css +++ b/doc/style.css @@ -230,7 +230,7 @@ div.recentchanges { .sidebar { line-height: 3ex; - width: 20ex; + width: 30ex; float: right; margin-left: 40px; margin-bottom: 40px; -- cgit v1.2.3 From 1fbc1b518a6764b0bd6d8c580bc3480ec4ada01d Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 15:41:56 -0400 Subject: disable feeds in raw mode --- IkiWiki/Plugin/inline.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 644cb588d..3359af314 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -160,7 +160,7 @@ sub preprocess_inline (@) { my $rss=(($config{rss} || $config{allowrss}) && exists $params{rss}) ? yesno($params{rss}) : $config{rss}; my $atom=(($config{atom} || $config{allowatom}) && exists $params{atom}) ? yesno($params{atom}) : $config{atom}; my $quick=exists $params{quick} ? yesno($params{quick}) : 0; - my $feeds=! $nested && (exists $params{feeds} ? yesno($params{feeds}) : !$quick); + my $feeds=! $nested && (exists $params{feeds} ? yesno($params{feeds}) : !$quick && ! $raw); my $emptyfeeds=exists $params{emptyfeeds} ? yesno($params{emptyfeeds}) : 1; my $feedonly=yesno($params{feedonly}); if (! exists $params{show} && ! $archive) { -- cgit v1.2.3 From 5143d790b023f7f04ebdf694225b2946af676503 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 16:08:33 -0400 Subject: sidebar styling improvements Added a visible border; tuned down the whitespace/borders. Note the use of the -1 pixel margin-top -- this makes the sidebar appear to hang down from the line under the actions at the top of the page. --- doc/style.css | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/style.css b/doc/style.css index 80b76b26c..bdd4bb466 100644 --- a/doc/style.css +++ b/doc/style.css @@ -229,13 +229,14 @@ div.recentchanges { .biggestPC { font-size: 130%; } .sidebar { - line-height: 3ex; width: 30ex; float: right; - margin-left: 40px; - margin-bottom: 40px; - padding: 2ex 2ex; + margin-left: 4px; + margin-bottom: 4px; + margin-top: -1px; + padding: 0ex 2ex; background: white; + border: 2px solid black; color: black !important; } -- cgit v1.2.3 From 843ce484fc9a65a814be62ab9617fc461640fbeb Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 16:21:06 -0400 Subject: update --- doc/examples/blog.mdwn | 3 --- doc/examples/blog/index.mdwn | 18 ++++++++---------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/doc/examples/blog.mdwn b/doc/examples/blog.mdwn index 33637e57d..8775c01ab 100644 --- a/doc/examples/blog.mdwn +++ b/doc/examples/blog.mdwn @@ -13,9 +13,6 @@ Some additional configuration you might want to do: example of how to tag a post is: \[[!tag tags/life]] -* Enable the [[sidebar|plugins/sidebar]] plugin to get a sidebar listing all - the categories you've tagged posts with, and other navigation links. - * Enable the [[pagestats|plugins/pagestats]] plugin to get a tag cloud to display on the [[index]]. diff --git a/doc/examples/blog/index.mdwn b/doc/examples/blog/index.mdwn index da95e7660..062c71f2e 100644 --- a/doc/examples/blog/index.mdwn +++ b/doc/examples/blog/index.mdwn @@ -1,16 +1,14 @@ -[[!template id=note text=""" +[[!inline pages="./posts/* and !*/Discussion" show="10" +actions=yes rootpage="posts"]] -* [[Tags]]: [[!pagestats style="list" pages="./tags/*" among="./posts/*"]] -* [[Recent_Comments|comments]] -* [[Archives]] +[[!sidebar """ +[[Tags]]: [[!pagestats style="list" pages="./tags/*" among="./posts/*"]] -[[!calendar pages="./posts/* and !*/Discussion"]] +[[Recent Comments|comments]] -"""]] +[[Archives]] -[[!inline pages="./posts/* and !*/Discussion" show="10" -actions=yes rootpage="posts"]] - ----- +[[!calendar pages="./posts/* and !*/Discussion"]] +"""]] This blog is powered by [ikiwiki](http://ikiwiki.info). -- cgit v1.2.3 From 358fa953e189d6f8a7925be8533fe7b7c5699503 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 16:40:01 -0400 Subject: sidebar: Now a sidebar directive can be used to override the sidebar shown on a page. --- IkiWiki/Plugin/sidebar.pm | 42 +++++++++++++++++++++++++++++++++++++- debian/changelog | 2 ++ doc/ikiwiki/directive/sidebar.mdwn | 14 +++++++++++++ doc/plugins/sidebar.mdwn | 17 +++++++-------- 4 files changed, 66 insertions(+), 9 deletions(-) create mode 100644 doc/ikiwiki/directive/sidebar.mdwn diff --git a/IkiWiki/Plugin/sidebar.pm b/IkiWiki/Plugin/sidebar.pm index 41812e1c1..d63cb5246 100644 --- a/IkiWiki/Plugin/sidebar.pm +++ b/IkiWiki/Plugin/sidebar.pm @@ -10,6 +10,7 @@ use IkiWiki 3.00; sub import { hook(type => "getsetup", id => "sidebar", call => \&getsetup); + hook(type => "preprocess", id => "sidebar", call => \&preprocess); hook(type => "pagetemplate", id => "sidebar", call => \&pagetemplate); } @@ -21,9 +22,39 @@ sub getsetup () { }, } +my %pagesidebar; + +sub preprocess (@) { + my %params=@_; + my $content=shift; + shift; + + if (! defined $content) { + error(gettext("sidebar content not specified")); + } + + my $page=$params{page}; + return "" unless $page eq $params{destpage}; + my $file = $pagesources{$page}; + my $type = pagetype($file); + + $pagesidebar{$page}= + IkiWiki::htmlize($page, $page, $type, + IkiWiki::linkify($page, $page, + IkiWiki::preprocess($page, $page, + IkiWiki::filter($page, $page, $content)))); + + return ""; +} + +my $oldfile; +my $oldcontent; + sub sidebar_content ($) { my $page=shift; + return $pagesidebar{$page} if exists $pagesidebar{$page}; + my $sidebar_page=bestlink($page, "sidebar") || return; my $sidebar_file=$pagesources{$sidebar_page} || return; my $sidebar_type=pagetype($sidebar_file); @@ -34,7 +65,16 @@ sub sidebar_content ($) { # currently requires a wiki rebuild. add_depends($page, $sidebar_page); - my $content=readfile(srcfile($sidebar_file)); + my $content; + if (defined $oldfile && $sidebar_file eq $oldfile) { + $content=$oldcontent; + } + else { + $content=readfile(srcfile($sidebar_file)); + $oldcontent=$content; + $oldfile=$sidebar_file; + } + return unless length $content; return IkiWiki::htmlize($sidebar_page, $page, $sidebar_type, IkiWiki::linkify($sidebar_page, $page, diff --git a/debian/changelog b/debian/changelog index 03361e6a0..267a2fd7a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -37,6 +37,8 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low in a tag cloud. This is useful to put in a sidebar. * Rework example blog front page. * CSS and templates for sidebar changed to use a class, not an id. + * sidebar: Now a sidebar directive can be used to override the sidebar + shown on a page. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 diff --git a/doc/ikiwiki/directive/sidebar.mdwn b/doc/ikiwiki/directive/sidebar.mdwn new file mode 100644 index 000000000..46f016747 --- /dev/null +++ b/doc/ikiwiki/directive/sidebar.mdwn @@ -0,0 +1,14 @@ +The `sidebar` directive is supplied by the [[!iki plugins/sidebar desc=sidebar]] plugin. + +This directive specifies a custom sidebar to display on the page, instead +of any sidebar that is displayed globally. + +## examples + + \[[!sidebar """ + This is my custom sidebar for this page. + + \[[!calendar pages="posts/*"]] + """]] + +[[!meta robots="noindex, follow"]] diff --git a/doc/plugins/sidebar.mdwn b/doc/plugins/sidebar.mdwn index 4e356d65a..cd0f0ecf1 100644 --- a/doc/plugins/sidebar.mdwn +++ b/doc/plugins/sidebar.mdwn @@ -10,15 +10,16 @@ Typically this will be a page in the root of the wiki, but it can also be a [[plugins/sidebar|plugins/sidebar]], will be treated as a sidebar for the [[plugins]] page, and of all of its SubPages, if the plugin is enabled. -Note that to disable a sidebar for a [[ikiwiki/SubPage]] of a page that has -a sidebar, you can create a sidebar page that is completely empty. This -will turn off the sidebar altogether. +There is also a [[ikiwiki/directive/sidebar]] directive that can be used +to provide a custom sidebar content for a page. -Warning: Any change to the sidebar will cause a rebuild of the whole wiki, -since every page includes a copy that has to be updated. This can -especially be a problem if the sidebar includes an [[ikiwiki/directive/inline]] -directive, since any changes to pages inlined into the sidebar -will change the sidebar and cause a full wiki rebuild. +---- + +Warning: Any change to the sidebar page will cause a rebuild of the whole +wiki, since every page includes a copy that has to be updated. This can +especially be a problem if the sidebar includes an +[[ikiwiki/directive/inline]] directive, since any changes to pages inlined +into the sidebar will change the sidebar and cause a full wiki rebuild. Instead, if you include a [[ikiwiki/directive/map]] directive on the sidebar, and it does not use the `show` parameter, only adding or removing pages -- cgit v1.2.3 From adbbd014dc76f334ed897f6801afa4cb0b483864 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 16:52:41 -0400 Subject: Enable calendar and sidebar in auto-blog.setup. --- auto-blog.setup | 2 +- debian/changelog | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/auto-blog.setup b/auto-blog.setup index 0a2a81bf7..ff52befa3 100644 --- a/auto-blog.setup +++ b/auto-blog.setup @@ -36,7 +36,7 @@ IkiWiki::Setup::Automator->import( cgiurl => "http://$domain/~$ENV{USER}/$wikiname_short/ikiwiki.cgi", cgi_wrapper => "$ENV{HOME}/public_html/$wikiname_short/ikiwiki.cgi", adminemail => "$ENV{USER}\@$domain", - add_plugins => [qw{goodstuff websetup comments opendiscussion blogspam calendar}], + add_plugins => [qw{goodstuff websetup comments opendiscussion blogspam calendar sidebar}], disable_plugins => [qw{}], libdir => "$ENV{HOME}/.ikiwiki", rss => 1, diff --git a/debian/changelog b/debian/changelog index 267a2fd7a..af19f4a00 100644 --- a/debian/changelog +++ b/debian/changelog @@ -39,6 +39,7 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low * CSS and templates for sidebar changed to use a class, not an id. * sidebar: Now a sidebar directive can be used to override the sidebar shown on a page. + * Enable calendar and sidebar in auto-blog.setup. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 -- cgit v1.2.3 From 37a0c2d40beaba9ae050a4eddc925b910d739736 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 16:55:20 -0400 Subject: add note if ikiwiki-calendar needs to be run --- doc/examples/blog/archives.mdwn | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/examples/blog/archives.mdwn b/doc/examples/blog/archives.mdwn index 14686cdfe..d07b73b74 100644 --- a/doc/examples/blog/archives.mdwn +++ b/doc/examples/blog/archives.mdwn @@ -1,7 +1,8 @@ -[[!if test="enabled(calendar)" then=""" +[[!if test="archives/*" then=""" Browse through blog archives by year: [[!map pages="./archives/* and !./archives/*/* and !*/Discussion"]] """ else=""" -Calendar based archives are not enabled. See [[posts]] for a full list of posts. +You need to use the `ikiwiki-calendar` program to generate calendar-based +archive pages. """]] -- cgit v1.2.3 From 1f7175e891f87c350decc1ec821bebb5adc22c2a Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 17:31:50 -0400 Subject: sidebar: Add global_sidebars setting. --- IkiWiki/Plugin/sidebar.pm | 9 +++++++++ debian/changelog | 1 + doc/ikiwiki/directive/sidebar.mdwn | 4 ++-- doc/plugins/sidebar.mdwn | 8 +++++--- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/IkiWiki/Plugin/sidebar.pm b/IkiWiki/Plugin/sidebar.pm index d63cb5246..1b302dcf9 100644 --- a/IkiWiki/Plugin/sidebar.pm +++ b/IkiWiki/Plugin/sidebar.pm @@ -20,6 +20,13 @@ sub getsetup () { safe => 1, rebuild => 1, }, + global_sidebars => { + type => "boolean", + examples => 1, + description => "show sidebar page on all pages?" + safe => 1, + rebuild => 1, + }, } my %pagesidebar; @@ -55,6 +62,8 @@ sub sidebar_content ($) { return $pagesidebar{$page} if exists $pagesidebar{$page}; + return if defined $config{global_sidebars} && !$config{global_sidebars}; + my $sidebar_page=bestlink($page, "sidebar") || return; my $sidebar_file=$pagesources{$sidebar_page} || return; my $sidebar_type=pagetype($sidebar_file); diff --git a/debian/changelog b/debian/changelog index af19f4a00..c379253d7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -40,6 +40,7 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low * sidebar: Now a sidebar directive can be used to override the sidebar shown on a page. * Enable calendar and sidebar in auto-blog.setup. + * sidebar: Add global_sidebars setting. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 diff --git a/doc/ikiwiki/directive/sidebar.mdwn b/doc/ikiwiki/directive/sidebar.mdwn index 46f016747..34f078672 100644 --- a/doc/ikiwiki/directive/sidebar.mdwn +++ b/doc/ikiwiki/directive/sidebar.mdwn @@ -1,7 +1,7 @@ The `sidebar` directive is supplied by the [[!iki plugins/sidebar desc=sidebar]] plugin. -This directive specifies a custom sidebar to display on the page, instead -of any sidebar that is displayed globally. +This directive specifies a custom sidebar to display on the page, +overriding any sidebar that is displayed globally. ## examples diff --git a/doc/plugins/sidebar.mdwn b/doc/plugins/sidebar.mdwn index cd0f0ecf1..012733456 100644 --- a/doc/plugins/sidebar.mdwn +++ b/doc/plugins/sidebar.mdwn @@ -1,9 +1,11 @@ [[!template id=plugin name=sidebar author="Tuomo Valkonen"]] [[!tag type/chrome]] -If this plugin is enabled, then a sidebar is added to pages in the wiki. -The content of the sidebar is simply the content of a page named -"sidebar" (ie, create a "sidebar.mdwn"). +This plugin allows adding a sidebar to pages in the wiki. + +By default, and unless the `global_sidebars` setting is turned off, +a sidebar is added to all pages in the wiki. The content of the sidebar +is simply the content of a page named "sidebar" (ie, create a "sidebar.mdwn"). Typically this will be a page in the root of the wiki, but it can also be a [[ikiwiki/SubPage]]. In fact, this page, -- cgit v1.2.3 From d7c164dbf29ef57f8ed2963985bd250acbef96df Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 17:32:11 -0400 Subject: disable global sidebars by default --- auto-blog.setup | 1 + 1 file changed, 1 insertion(+) diff --git a/auto-blog.setup b/auto-blog.setup index ff52befa3..ef03295d6 100644 --- a/auto-blog.setup +++ b/auto-blog.setup @@ -47,6 +47,7 @@ IkiWiki::Setup::Automator->import( comments_pagespec => "posts/* and !*/Discussion", blogspam_pagespec => "postcomment(*)", archive_pagespec => "posts/* and !*/Discussion", + global_sidebars => 0, discussion => 0, locked_pages => "*", tagbase => "tags", -- cgit v1.2.3 From d63e043f0abf642ff4048cc20c6caf03db3e55fb Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 17:38:13 -0400 Subject: allow sidebar directive to enable use of sidebar page This way, the example blog always has a sidebar on the index page, but not the overhead of sidebars on all the other pages. And if a user wants to, they can enable global_sidebars to switch to sidebars on every page. --- IkiWiki/Plugin/sidebar.pm | 33 ++++++++++++++++++--------------- doc/examples/blog/index.mdwn | 10 +--------- doc/examples/blog/sidebar.mdwn | 9 +++++++++ doc/ikiwiki/directive/sidebar.mdwn | 8 +++++++- 4 files changed, 35 insertions(+), 25 deletions(-) create mode 100644 doc/examples/blog/sidebar.mdwn diff --git a/IkiWiki/Plugin/sidebar.pm b/IkiWiki/Plugin/sidebar.pm index 1b302dcf9..f706480ca 100644 --- a/IkiWiki/Plugin/sidebar.pm +++ b/IkiWiki/Plugin/sidebar.pm @@ -23,7 +23,7 @@ sub getsetup () { global_sidebars => { type => "boolean", examples => 1, - description => "show sidebar page on all pages?" + description => "show sidebar page on all pages?", safe => 1, rebuild => 1, }, @@ -36,20 +36,22 @@ sub preprocess (@) { my $content=shift; shift; - if (! defined $content) { - error(gettext("sidebar content not specified")); - } - my $page=$params{page}; return "" unless $page eq $params{destpage}; - my $file = $pagesources{$page}; - my $type = pagetype($file); - - $pagesidebar{$page}= - IkiWiki::htmlize($page, $page, $type, - IkiWiki::linkify($page, $page, - IkiWiki::preprocess($page, $page, - IkiWiki::filter($page, $page, $content)))); + + if (! defined $content) { + $pagesidebar{$page}=undef; + } + else { + my $file = $pagesources{$page}; + my $type = pagetype($file); + + $pagesidebar{$page}= + IkiWiki::htmlize($page, $page, $type, + IkiWiki::linkify($page, $page, + IkiWiki::preprocess($page, $page, + IkiWiki::filter($page, $page, $content)))); + } return ""; } @@ -60,9 +62,10 @@ my $oldcontent; sub sidebar_content ($) { my $page=shift; - return $pagesidebar{$page} if exists $pagesidebar{$page}; + return $pagesidebar{$page} if defined $pagesidebar{$page}; - return if defined $config{global_sidebars} && !$config{global_sidebars}; + return if ! exists $pagesidebar{$page} && + defined $config{global_sidebars} && ! $config{global_sidebars}; my $sidebar_page=bestlink($page, "sidebar") || return; my $sidebar_file=$pagesources{$sidebar_page} || return; diff --git a/doc/examples/blog/index.mdwn b/doc/examples/blog/index.mdwn index 062c71f2e..a22c40c72 100644 --- a/doc/examples/blog/index.mdwn +++ b/doc/examples/blog/index.mdwn @@ -1,14 +1,6 @@ [[!inline pages="./posts/* and !*/Discussion" show="10" actions=yes rootpage="posts"]] -[[!sidebar """ -[[Tags]]: [[!pagestats style="list" pages="./tags/*" among="./posts/*"]] - -[[Recent Comments|comments]] - -[[Archives]] - -[[!calendar pages="./posts/* and !*/Discussion"]] -"""]] +[[!sidebar]] This blog is powered by [ikiwiki](http://ikiwiki.info). diff --git a/doc/examples/blog/sidebar.mdwn b/doc/examples/blog/sidebar.mdwn new file mode 100644 index 000000000..f24a8e57a --- /dev/null +++ b/doc/examples/blog/sidebar.mdwn @@ -0,0 +1,9 @@ +[[Tags]]: [[!pagestats style="list" pages="./tags/*" among="./posts/*"]] + +[[Recent Comments|comments]] + +[[Archives]] + +[[!if "enabled(calendar)" then=""" +[[!calendar pages="./posts/* and !*/Discussion"]] +"""]] diff --git a/doc/ikiwiki/directive/sidebar.mdwn b/doc/ikiwiki/directive/sidebar.mdwn index 34f078672..401d7c786 100644 --- a/doc/ikiwiki/directive/sidebar.mdwn +++ b/doc/ikiwiki/directive/sidebar.mdwn @@ -1,8 +1,12 @@ The `sidebar` directive is supplied by the [[!iki plugins/sidebar desc=sidebar]] plugin. -This directive specifies a custom sidebar to display on the page, +This directive can specify a custom sidebar to display on the page, overriding any sidebar that is displayed globally. +If no custom sidebar content is specified, it forces the sidebar page to +be used as the sidebar, even if the `global_sidebars` setting has been +used to disable use of the sidebar page by default. + ## examples \[[!sidebar """ @@ -11,4 +15,6 @@ overriding any sidebar that is displayed globally. \[[!calendar pages="posts/*"]] """]] + \[[!sidebar]] + [[!meta robots="noindex, follow"]] -- cgit v1.2.3 From 4bbbd77a48f9c3188c97637d4d4b0d503fc1738e Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 17:49:32 -0400 Subject: typo --- doc/examples/blog/sidebar.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/examples/blog/sidebar.mdwn b/doc/examples/blog/sidebar.mdwn index f24a8e57a..1d01f0a6c 100644 --- a/doc/examples/blog/sidebar.mdwn +++ b/doc/examples/blog/sidebar.mdwn @@ -4,6 +4,6 @@ [[Archives]] -[[!if "enabled(calendar)" then=""" +[[!if test="enabled(calendar)" then=""" [[!calendar pages="./posts/* and !*/Discussion"]] """]] -- cgit v1.2.3 From 4c6f5a48bcfc2462a915387515bfa39b9239a7da Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 17:50:43 -0400 Subject: fix sidebar directive parameter handling --- IkiWiki/Plugin/sidebar.pm | 6 ++---- doc/ikiwiki/directive/sidebar.mdwn | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/IkiWiki/Plugin/sidebar.pm b/IkiWiki/Plugin/sidebar.pm index f706480ca..808f0bed2 100644 --- a/IkiWiki/Plugin/sidebar.pm +++ b/IkiWiki/Plugin/sidebar.pm @@ -33,13 +33,11 @@ my %pagesidebar; sub preprocess (@) { my %params=@_; - my $content=shift; - shift; my $page=$params{page}; return "" unless $page eq $params{destpage}; - if (! defined $content) { + if (! defined $params{content}) { $pagesidebar{$page}=undef; } else { @@ -50,7 +48,7 @@ sub preprocess (@) { IkiWiki::htmlize($page, $page, $type, IkiWiki::linkify($page, $page, IkiWiki::preprocess($page, $page, - IkiWiki::filter($page, $page, $content)))); + IkiWiki::filter($page, $page, $params{content})))); } return ""; diff --git a/doc/ikiwiki/directive/sidebar.mdwn b/doc/ikiwiki/directive/sidebar.mdwn index 401d7c786..599695d22 100644 --- a/doc/ikiwiki/directive/sidebar.mdwn +++ b/doc/ikiwiki/directive/sidebar.mdwn @@ -9,7 +9,7 @@ used to disable use of the sidebar page by default. ## examples - \[[!sidebar """ + \[[!sidebar content=""" This is my custom sidebar for this page. \[[!calendar pages="posts/*"]] -- cgit v1.2.3 From f41ebb8862b7602afea6f8ecfd074f11407165fc Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 17:56:36 -0400 Subject: reorg --- doc/examples/blog/sidebar.mdwn | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/examples/blog/sidebar.mdwn b/doc/examples/blog/sidebar.mdwn index 1d01f0a6c..de0feba9e 100644 --- a/doc/examples/blog/sidebar.mdwn +++ b/doc/examples/blog/sidebar.mdwn @@ -1,9 +1,9 @@ -[[Tags]]: [[!pagestats style="list" pages="./tags/*" among="./posts/*"]] +[[!if test="enabled(calendar)" then=""" +[[!calendar pages="./posts/* and !*/Discussion"]] +"""]] [[Recent Comments|comments]] [[Archives]] -[[!if test="enabled(calendar)" then=""" -[[!calendar pages="./posts/* and !*/Discussion"]] -"""]] +[[Tags]]: [[!pagestats style="list" pages="* and !smileys/*"]] -- cgit v1.2.3 From a0a472d57716466fba9d8f39e7586b3ca0d17578 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 17:57:35 -0400 Subject: fix tagspec --- doc/examples/blog/sidebar.mdwn | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/examples/blog/sidebar.mdwn b/doc/examples/blog/sidebar.mdwn index de0feba9e..5c1f17723 100644 --- a/doc/examples/blog/sidebar.mdwn +++ b/doc/examples/blog/sidebar.mdwn @@ -6,4 +6,5 @@ [[Archives]] -[[Tags]]: [[!pagestats style="list" pages="* and !smileys/*"]] +[[Tags]]: +[[!pagestats style="list" pages="./tags/*" among="./posts/*"]] -- cgit v1.2.3 From 50d08bc2aea1d8d52e07ae1750e73b722bd2db24 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 18:18:48 -0400 Subject: conditional: Fix bug that forced "all" mode off by default. Commit b7351daacd0d4a041a51b43d99b7bf589de54f53 introduced the bug. --- IkiWiki/Plugin/conditional.pm | 2 +- debian/changelog | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/conditional.pm b/IkiWiki/Plugin/conditional.pm index 892b1cff9..8a5796149 100644 --- a/IkiWiki/Plugin/conditional.pm +++ b/IkiWiki/Plugin/conditional.pm @@ -30,7 +30,7 @@ sub preprocess_if (@) { } my $result=0; - if (! IkiWiki::yesno($params{all}) || + if ((exists $params{all} && ! IkiWiki::yesno($params{all})) || # An optimisation to avoid needless looping over every page # for simple uses of some of the tests. $params{test} =~ /^([\s\!()]*((enabled|sourcepage|destpage|included)\([^)]*\)|(and|or))[\s\!()]*)+$/) { diff --git a/debian/changelog b/debian/changelog index c379253d7..dfb94ae22 100644 --- a/debian/changelog +++ b/debian/changelog @@ -41,6 +41,7 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low shown on a page. * Enable calendar and sidebar in auto-blog.setup. * sidebar: Add global_sidebars setting. + * conditional: Fix bug that forced "all" mode off by default. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 -- cgit v1.2.3 From 579ee70e9524844fb40be41b859a5c2869663cda Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 18:51:35 -0400 Subject: fix parameter parsing when pagespec is ommited, and year is present --- ikiwiki-calendar.in | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ikiwiki-calendar.in b/ikiwiki-calendar.in index cdfecff3f..04352b970 100755 --- a/ikiwiki-calendar.in +++ b/ikiwiki-calendar.in @@ -15,7 +15,10 @@ GetOptions( "force" => \$force, ) || usage(); my $setup=shift || usage(); -my $pagespec=shift; +my $pagespec; +if (@ARGV && $ARGV[0] !~ /^\d+$/) { + $pagespec=shift; +} my $startyear=shift || 1900+(localtime(time))[5]; my $endyear=shift || $startyear; -- cgit v1.2.3 From c0a2eaf7964657a164e2108ded1931d0c360fd63 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 18:51:50 -0400 Subject: calendarmonth.tmpl: The month calendar is now put in a sidebar. --- debian/changelog | 1 + templates/calendarmonth.tmpl | 2 ++ 2 files changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index dfb94ae22..e4056fdc6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -42,6 +42,7 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low * Enable calendar and sidebar in auto-blog.setup. * sidebar: Add global_sidebars setting. * conditional: Fix bug that forced "all" mode off by default. + * calendarmonth.tmpl: The month calendar is now put in a sidebar. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 diff --git a/templates/calendarmonth.tmpl b/templates/calendarmonth.tmpl index 37ad78c5c..23cd95430 100644 --- a/templates/calendarmonth.tmpl +++ b/templates/calendarmonth.tmpl @@ -1,3 +1,5 @@ +[[!sidebar content=""" [[!calendar type=month month=<TMPL_VAR MONTH> year=<TMPL_VAR YEAR> pages="<TMPL_VAR PAGESPEC>"]] +"""]] [[!inline pages="creation_month(<TMPL_VAR MONTH>) and creation_year(<TMPL_VAR YEAR>) and <TMPL_VAR PAGESPEC>" show=0 feeds=no reverse=yes]] -- cgit v1.2.3 From 034594fcb9f8a1705dd6a5325df9bfc8e6d76532 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 19:14:10 -0400 Subject: update name of libsparkline-php --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index b8fe81914..87f7d8209 100644 --- a/debian/control +++ b/debian/control @@ -35,7 +35,7 @@ Suggests: viewvc | gitweb | viewcvs, libsearch-xapian-perl, libfile-mimeinfo-perl, libcrypt-ssleay-perl, liblocale-gettext-perl (>= 1.05-1), libtext-typography-perl, libtext-csv-perl, libdigest-sha1-perl, graphviz, libnet-amazon-s3-perl, - sparkline-php, texlive, dvipng, libtext-wikicreole-perl, + libsparkline-php, texlive, dvipng, libtext-wikicreole-perl, libsort-naturally-perl, libtext-textile-perl, libhighlight-perl, po4a (>= 0.35-1), gettext, libyaml-perl Conflicts: ikiwiki-plugin-table -- cgit v1.2.3 From 425f6a8de2ed66b934c16c102456b15da4ff5a14 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 19:21:01 -0400 Subject: reduce border --- doc/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/style.css b/doc/style.css index bdd4bb466..44e06ae4f 100644 --- a/doc/style.css +++ b/doc/style.css @@ -236,7 +236,7 @@ div.recentchanges { margin-top: -1px; padding: 0ex 2ex; background: white; - border: 2px solid black; + border: 1px solid black; color: black !important; } -- cgit v1.2.3 From f0ed76441d94c9bec9ebc1314b81301fe179a7fc Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Thu, 15 Apr 2010 23:36:42 +0000 Subject: some comments about this and autoindex --- ...auto-create_tag_pages_according_to_a_template.mdwn | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index 07b570b1b..7631e6fc8 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -211,6 +211,25 @@ wrong direction. >> [981400177d68a279f485727be3f013e68f0bf691][]. --[[David_Riebenbauer]] +>>> This doesn't seem to have all the refinements that autoindex has: +>>> +>>> * `autoindex` attaches the record of deletions off the `index` page, which +>>> is (nearly) guaranteed to exist; this one attaches the record of +>>> deletions to the deleted page's page state. +>>> +>>> * `autoindex` forgets that a page was deleted when that page is +>>> re-created +>>> +>>> * `autoindex` forgets that a page was deleted when it's no longer needed +>>> anyway (this may be harder for `autotag`?) +>>> +>>> It'd probably be an interesting test of the core change to port +>>> `autoindex` to use it? (Adding the file to the RCS would be +>>> necessary to get parity with `autoindex`.) --[[smcv]] + +> Regarding the call from `IkiWiki.pm` to `Render.pm`, wouldn't this be +> quite easy to solve by moving `verify_src_file` to IkiWiki.pm? --[[smcv]] + [f3abeac919c4736429bd3362af6edf51ede8e7fe]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f3abeac919c4736429bd3362af6edf51ede8e7fe (commitdiff for f3abeac919c4736429bd3362af6edf51ede8e7fe) [4af4d26582f0c2b915d7102fb4a604b176385748]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=4af4d26582f0c2b915d7102fb4a604b176385748 (commitdiff for 4af4d26582f0c2b915d7102fb4a604b176385748) [f58f3e1bec41ccf9316f37b014ce0b373c8e49e1]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f58f3e1bec41ccf9316f37b014ce0b373c8e49e1 (commitdiff for f58f3e1bec41ccf9316f37b014ce0b373c8e49e1) -- cgit v1.2.3 From b5e7f7a67f9893c7083afe3594c4a274c1b96062 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Thu, 15 Apr 2010 23:39:02 +0000 Subject: slight clarification --- doc/todo/auto-create_tag_pages_according_to_a_template.mdwn | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index 7631e6fc8..6118cb014 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -213,9 +213,10 @@ wrong direction. >>> This doesn't seem to have all the refinements that autoindex has: >>> ->>> * `autoindex` attaches the record of deletions off the `index` page, which +>>> * `autoindex` attaches the record of deletions to the `index` page, which >>> is (nearly) guaranteed to exist; this one attaches the record of ->>> deletions to the deleted page's page state. +>>> deletions to the deleted page's page state. Won't that tend to result +>>> in losing the record along with the deleted page? >>> >>> * `autoindex` forgets that a page was deleted when that page is >>> re-created -- cgit v1.2.3 From 142e025ae471c91e68a23476f700df0b8ad6b31d Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 20:12:03 -0400 Subject: calendar: Improved display of arrows. --- IkiWiki/Plugin/calendar.pm | 21 +++++++++++---------- debian/changelog | 1 + doc/plugins/calendar.mdwn | 2 ++ doc/style.css | 8 ++++++++ 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm index 0f0e9518a..aeb5f3d29 100644 --- a/IkiWiki/Plugin/calendar.pm +++ b/IkiWiki/Plugin/calendar.pm @@ -164,11 +164,11 @@ sub format_month (@) { # Start producing the month calendar $calendar=<<EOF; <table class="month-calendar"> - <caption class="month-calendar-head"> - $purl - $url - $nurl - </caption> + <tr> + <th class="month-calendar-arrow">$purl</th> + <th class="month-calendar-head" colspan="5">$url</th> + <th class="month-calendar-arrow">$nurl</th> + </tr> <tr> EOF @@ -312,13 +312,14 @@ sub format_year (@) { add_depends($params{page}, "$archivebase/$nyear", deptype("presence")); # Start producing the year calendar + my $m=$params{months_per_row}-2; $calendar=<<EOF; <table class="year-calendar"> - <caption class="year-calendar-head"> - $purl - $url - $nurl - </caption> + <tr> + <th class="year-calendar-arrow">$purl</th> + <th class="year-calendar-head" colspan="$m">$url</th> + <th class="year-calendar-arrow">$nurl</th> + </tr> <tr> <th class="year-calendar-subhead" colspan="$params{months_per_row}">Months</th> </tr> diff --git a/debian/changelog b/debian/changelog index e4056fdc6..737d73655 100644 --- a/debian/changelog +++ b/debian/changelog @@ -43,6 +43,7 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low * sidebar: Add global_sidebars setting. * conditional: Fix bug that forced "all" mode off by default. * calendarmonth.tmpl: The month calendar is now put in a sidebar. + * calendar: Improved display of arrows. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 diff --git a/doc/plugins/calendar.mdwn b/doc/plugins/calendar.mdwn index 49fd90627..76e718a3b 100644 --- a/doc/plugins/calendar.mdwn +++ b/doc/plugins/calendar.mdwn @@ -14,6 +14,7 @@ customization. * `month-calendar` - The month calendar as a whole. * `month-calendar-head` - The head of the month calendar (ie,"March"). +* `month-calendar-arrow` - Arrow pointing to previous/next month. * `month-calendar-day-head` - A column head in the month calendar (ie, a day-of-week abbreviation). * `month-calendar-day-noday`, `month-calendar-day-link`, @@ -27,6 +28,7 @@ customization. weekends. * `year-calendar` - The year calendar as a whole. * `year-calendar-head` - The head of the year calendar (ie, "2007"). +* `year-calendar-arrow` - Arrow pointing to previous/next year. * `year-calendar-subhead` - For example, "Months". * `year-calendar-month-link`, `year-calendar-month-nolink`, `year-calendar-month-future`, `year-calendar-this-month` - The month diff --git a/doc/style.css b/doc/style.css index 44e06ae4f..7ffcf9fe2 100644 --- a/doc/style.css +++ b/doc/style.css @@ -431,3 +431,11 @@ pre.hl { color:#000000; background-color:#ffffff; } /* For the calendar plugin. */ .month-calendar-day-this-day { background-color: #eee; } .year-calendar-this-month { background-color: #eee; } +.month-calendar-arrow A:link, +.year-calendar-arrow A:link, +.month-calendar-arrow A:visited, +.year-calendar-arrow A:visited { + text-decoration: none; + font-weight: normal; + font-size: 150%; +} -- cgit v1.2.3 From dd64c2a9c0d7a1bfe9d3b89957efe8f045091111 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Thu, 15 Apr 2010 22:18:56 -0400 Subject: sidebar plugin optimisations The pagetemplate hook may be called multiple times, for example when pages are inlined into a page. Sidebars were being calculated each time that happened, only to be thrown away when the final pagetemplate hook was called. Avoid this unnecessary work. Remove stored sidebar content on use to save some memory. --- IkiWiki/Plugin/sidebar.pm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/IkiWiki/Plugin/sidebar.pm b/IkiWiki/Plugin/sidebar.pm index 808f0bed2..0350f2b71 100644 --- a/IkiWiki/Plugin/sidebar.pm +++ b/IkiWiki/Plugin/sidebar.pm @@ -60,7 +60,7 @@ my $oldcontent; sub sidebar_content ($) { my $page=shift; - return $pagesidebar{$page} if defined $pagesidebar{$page}; + return delete $pagesidebar{$page} if defined $pagesidebar{$page}; return if ! exists $pagesidebar{$page} && defined $config{global_sidebars} && ! $config{global_sidebars}; @@ -97,11 +97,10 @@ sub sidebar_content ($) { sub pagetemplate (@) { my %params=@_; - my $page=$params{page}; my $template=$params{template}; - - if ($template->query(name => "sidebar")) { - my $content=sidebar_content($page); + if ($params{destpage} eq $params{page} && + $template->query(name => "sidebar")) { + my $content=sidebar_content($params{destpage}); if (defined $content && length $content) { $template->param(sidebar => $content); } -- cgit v1.2.3 From 208a77a977615b3e285d08b33345daca7072432e Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Fri, 16 Apr 2010 03:41:25 +0000 Subject: response --- doc/todo/Multiple_categorization_namespaces.mdwn | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/doc/todo/Multiple_categorization_namespaces.mdwn b/doc/todo/Multiple_categorization_namespaces.mdwn index 15b97e480..eb1f58cfa 100644 --- a/doc/todo/Multiple_categorization_namespaces.mdwn +++ b/doc/todo/Multiple_categorization_namespaces.mdwn @@ -38,8 +38,16 @@ and the tags would appear at the bottom of the post, the Rubrica next to the tit >> I had thought about the `\[[!tag type1=value1 type2=value2]]` syntax myself, but ultimately decided against it for a number of reasons, most importantly the fact that (1) it's harder to type, (2) it's harder to spot errors in the tag types (so for example if one misspelled `categoria` as `categorica`, he might not notice it as quickly as seeing the un-parsed `\[[!categorica ]]` directive in the output html) and (3) it encourages collapsing possibly unrelated metadata together (for example, I would never consider putting the categoria information together with the rubrica one; of course with your syntax it's perfectly possible to keep them separate as well). ->> Point (2) may be considered a downside as well as an upside, depending on perspective, of course. And it would be possible to have a set of predefined tag types to match against, like in my tagtype directive approach but with your syntax. Point (3) is of course entirely in the hands of the user, but that's exactly what syntax should be about. There is nothing functionally wrong with e.g. `\[[!meta tag=sometag author=someauthor title=sometitle rubrica=somecolumn]]`, but I honestly find it horrible. +>> Point (2) may be considered a downside as well as an upside, depending on perspective, of course. And it would be possible to have a set of predefined tag types to match against, like in my tagtype directive approach but with your syntax. + +>>> You seem to have answered your own objections already. -- K.A. + +>>Point (3) is of course entirely in the hands of the user, but that's exactly what syntax should be about. There is nothing functionally wrong with e.g. `\[[!meta tag=sometag author=someauthor title=sometitle rubrica=somecolumn]]`, but I honestly find it horrible. + +>>> So, really, point 3 comes down to differing aesthetics. -- K.A. >> A solution could be to allow both syntaxes, getting to have for example `\[[!sometagtype "blah"]]` as a shortcut for `\[[!tag sometagtype="blah"]]` (or, in the more general case, `\[[!somefieldname "blah"]]` as a shortcut for `\[[!meta fieldname="blah"]]`). >> I would like to point out however that there are some functional differences between categorization metadata vs other metadata that might suggest to keep fields and (my extended) tags separate. For examples, in feeds you'd want all categorization metadata to fall in one place, with some appropriate manipulation (which I still have to implement, by the way), while things like author or title would go to the corresponding feed item properties. Although it all would be possible with appropriate report or template juggling, having such default metadata handled natively looks like a bonus to me. + +>>> Whereas I prefer being able to control such things with templates, because it gives more flexibility AND control. - K.A. -- cgit v1.2.3 From 5c263623c2446191332088a29fda4e045cc06f1e Mon Sep 17 00:00:00 2001 From: David Riebenbauer <davrieb@liegesta.at> Date: Fri, 16 Apr 2010 17:19:44 +0200 Subject: answer about the `%pagestate` of autopages. --- ...o-create_tag_pages_according_to_a_template.mdwn | 26 +++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index 6118cb014..ca3475149 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -217,20 +217,40 @@ wrong direction. >>> is (nearly) guaranteed to exist; this one attaches the record of >>> deletions to the deleted page's page state. Won't that tend to result >>> in losing the record along with the deleted page? ->>> + +>>>> This is probably on of the harder things to do, 'cause there are (most of the +>>>> time) several pages that are responsible for the creation of a single tag page. +>>>> Of course I could attach the info to all of them. + +>>>> With current behaviour I think the information in `%pagestate` is kept around +>>>> regardless whether the corresponding page exists or not. +>>>> --[[David_Riebenbauer]] + >>> * `autoindex` forgets that a page was deleted when that page is >>> re-created ->>> + +>>>> Yes, I forgot about that and that is a bug. I'll fix that. +>>>> --[[David_Riebenbauer]] + >>> * `autoindex` forgets that a page was deleted when it's no longer needed >>> anyway (this may be harder for `autotag`?) ->>> + +>>>> I don't think so. AFAIK ikiwiki can detect whether there are taglinks to a page +>>>> anyway, so it should be quite easy. I'll try to implement that too. +>>>> --[[David_Riebenbauer]] + >>> It'd probably be an interesting test of the core change to port >>> `autoindex` to use it? (Adding the file to the RCS would be >>> necessary to get parity with `autoindex`.) --[[smcv]] +>>>> Good suggestion. Adding the files to RCS is on my todo list anyway. +>>>> --[[David_Riebenbauer]] + > Regarding the call from `IkiWiki.pm` to `Render.pm`, wouldn't this be > quite easy to solve by moving `verify_src_file` to IkiWiki.pm? --[[smcv]] +>> True. I'll do that. --[[David_Riebenbauer]] + [f3abeac919c4736429bd3362af6edf51ede8e7fe]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f3abeac919c4736429bd3362af6edf51ede8e7fe (commitdiff for f3abeac919c4736429bd3362af6edf51ede8e7fe) [4af4d26582f0c2b915d7102fb4a604b176385748]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=4af4d26582f0c2b915d7102fb4a604b176385748 (commitdiff for 4af4d26582f0c2b915d7102fb4a604b176385748) [f58f3e1bec41ccf9316f37b014ce0b373c8e49e1]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f58f3e1bec41ccf9316f37b014ce0b373c8e49e1 (commitdiff for f58f3e1bec41ccf9316f37b014ce0b373c8e49e1) -- cgit v1.2.3 From e26ac520bffe39e400a037aa35b68f617991da2b Mon Sep 17 00:00:00 2001 From: David Riebenbauer <davrieb@liegesta.at> Date: Fri, 16 Apr 2010 17:21:54 +0200 Subject: typo --- doc/todo/auto-create_tag_pages_according_to_a_template.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index ca3475149..c4d9538a1 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -126,7 +126,7 @@ is not satisfied for the newly created tag page. I shall put debug msgs into Ren --- -I've made another attempt at fixiing this +I've made another attempt at fixing this The current progress can be found at my [git repository][gitweb] on branch `autotag`: -- cgit v1.2.3 From 18b39ff9757a0e6bc8672a2453411676a09bffea Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Fri, 16 Apr 2010 15:31:31 +0000 Subject: try to clarify --- doc/todo/auto-create_tag_pages_according_to_a_template.mdwn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index c4d9538a1..b8b0186b4 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -226,6 +226,11 @@ wrong direction. >>>> regardless whether the corresponding page exists or not. >>>> --[[David_Riebenbauer]] +>>>>> Sorry, I'll try to be clearer: `autoindex` hard-codes that the [[index]] page +>>>>> of the entire wiki is the one responsible for storing the page state. That +>>>>> page isn't responsible for the creation of the tag page, it's just an +>>>>> arbitrary page that's (more or less) guaranteed to exist. --[[smcv]] + >>> * `autoindex` forgets that a page was deleted when that page is >>> re-created -- cgit v1.2.3 From 49be30eae88b4a027becc3e67bc321e0bf89840f Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Fri, 16 Apr 2010 12:08:12 -0400 Subject: clarify re %pagestate persistence --- doc/todo/auto-create_tag_pages_according_to_a_template.mdwn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index b8b0186b4..1259552bf 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -231,6 +231,11 @@ wrong direction. >>>>> page isn't responsible for the creation of the tag page, it's just an >>>>> arbitrary page that's (more or less) guaranteed to exist. --[[smcv]] +>>>>> I don't like that [[plugins/autoindex]] has to do that, +>>>>> but `%pagestate` values are only stored for pages that exist, +>>>>> so it was necessary. (Another way to look at this is that +>>>>> `%pagestate` is not the ideal data structure.) --[[Joey]] + >>> * `autoindex` forgets that a page was deleted when that page is >>> re-created -- cgit v1.2.3 From a70c2518af7f48036a21d04c5b4070f3ea96002c Mon Sep 17 00:00:00 2001 From: David Riebenbauer <davrieb@liegesta.at> Date: Fri, 16 Apr 2010 18:16:47 +0200 Subject: answer to clarification. --- doc/todo/auto-create_tag_pages_according_to_a_template.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index 1259552bf..0ae025a13 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -236,6 +236,8 @@ wrong direction. >>>>> so it was necessary. (Another way to look at this is that >>>>> `%pagestate` is not the ideal data structure.) --[[Joey]] +>>>>> Ok, now I know what you mean. --[[David_Riebenbauer]] + >>> * `autoindex` forgets that a page was deleted when that page is >>> re-created -- cgit v1.2.3 From 6c5c0f8c682a2727bb71652668fef90a40d99f25 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Fri, 16 Apr 2010 12:21:44 -0400 Subject: add mtime-to-git script to pull more correct mtimes out of git --- mtime-to-git | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100755 mtime-to-git diff --git a/mtime-to-git b/mtime-to-git new file mode 100755 index 000000000..9875af5d7 --- /dev/null +++ b/mtime-to-git @@ -0,0 +1,14 @@ +#!/bin/sh +# Sets mtimes of all files in the tree their last change date +# based on git's log. Useful to avoid too new dates after a +# fresh checkout, which lead to ikiwiki unnecessarily rebuilding +# basewiki files on upgrade. +if [ -d .git ]; then + for file in $(git ls-files); do + date="$(git log -1 --date=rfc "$file" | grep ^Date: | sed -e 's/Date://')" + if [ -n "$date" ]; then + echo "$date $file" + touch -d"$date" $file + fi + done +fi -- cgit v1.2.3 From 720522859806d9cf50231ed6aa28085754713701 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Fri, 16 Apr 2010 17:51:51 +0000 Subject: ... and indeed there is a better way to store it --- doc/todo/auto-create_tag_pages_according_to_a_template.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index 0ae025a13..8fc97578c 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -236,6 +236,9 @@ wrong direction. >>>>> so it was necessary. (Another way to look at this is that >>>>> `%pagestate` is not the ideal data structure.) --[[Joey]] +>>>>>> Aha! Having looked at [[plugins/write]] again, it turns out that what this +>>>>>> feature should really use is `%wikistate`, I think? :-) --[[smcv]] + >>>>> Ok, now I know what you mean. --[[David_Riebenbauer]] >>> * `autoindex` forgets that a page was deleted when that page is -- cgit v1.2.3 From ff5b73163f97110e83dd777cf7e14debebf85288 Mon Sep 17 00:00:00 2001 From: "http://oblomov.myopenid.com/" <http://oblomov.myopenid.com/@web> Date: Fri, 16 Apr 2010 18:20:29 +0000 Subject: Proposal for tags/meta/field coalescing --- doc/todo/Multiple_categorization_namespaces.mdwn | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/doc/todo/Multiple_categorization_namespaces.mdwn b/doc/todo/Multiple_categorization_namespaces.mdwn index eb1f58cfa..ee3bbd88d 100644 --- a/doc/todo/Multiple_categorization_namespaces.mdwn +++ b/doc/todo/Multiple_categorization_namespaces.mdwn @@ -51,3 +51,22 @@ and the tags would appear at the bottom of the post, the Rubrica next to the tit >> I would like to point out however that there are some functional differences between categorization metadata vs other metadata that might suggest to keep fields and (my extended) tags separate. For examples, in feeds you'd want all categorization metadata to fall in one place, with some appropriate manipulation (which I still have to implement, by the way), while things like author or title would go to the corresponding feed item properties. Although it all would be possible with appropriate report or template juggling, having such default metadata handled natively looks like a bonus to me. >>> Whereas I prefer being able to control such things with templates, because it gives more flexibility AND control. - K.A. + +>>>> Flexibility and control is good for tuning and power-usage, but sensible defaults are a must for a platform to be usable out of the box without much intervention. Moreover, there's a possible problem with what kind of data must be passed over to templates. + +Aside from the name of the plugin (and thus of the main directive), which could be `tag`, `meta`, `field` or whatever (maybe extending `meta` would be the most sensible choice), the features we want are + + 1. allow multiple values per type/attribute/field/whatever (fields currently only allows one) + 2. allow both hidden and visible references (à la tag vs taglink) + 3. allow each type/attribute/field to be exposed under multiple queries (e.g. tags and categories; this is mostly important for backwards compatibility, not sure if it might have other uses too) + 4. allow arbitrary types/attributes/fields/whatever (even 'undefined' ones) + +Each type/attribute/field/whatever (predefined, user-defined, arbitrary) would thus have the following parameters: + + * `directive` : the name of the directive that can be used to set the value as a hidden reference; we can discuss whether, for pre- or user-defined types, it being undef means no directive or a default directive matching the attribute name would be defined. + * `linkdirective` : the name of the directive that can be used for a visible reference; no such directive would be defined by default + * `linktype` : link type for (hidden and visible) references + * `linkbase` : akin to the tagbase parameter + * `queries` : list of template queries this type/attribute/field/whatever is exposed to + +Where this approach is limiting is on the kind of data that is passed to (template) queries. The value of the metadata fields might need some massaging (e.g. compare how tags are passed to tags queries vs cateogires queries). I have problems on picturing an easy way to make this possible user-side (i.e. via templates and not in Perl modules). Suggestions welcome. -- cgit v1.2.3 From b14f84c4acccbc8450a9102b3b647013989b27bb Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Fri, 16 Apr 2010 17:02:29 -0400 Subject: --gettime revamp * Rename --getctime to --gettime. (The old name still works for backwards compatability.) * --gettime now also looks up last modification time. * Add rcs_getmtime to plugin API; currently only implemented for git. --- IkiWiki.pm | 8 +++++-- IkiWiki/Plugin/bzr.pm | 5 +++++ IkiWiki/Plugin/cvs.pm | 5 +++++ IkiWiki/Plugin/darcs.pm | 5 +++++ IkiWiki/Plugin/git.pm | 5 +++++ IkiWiki/Plugin/mercurial.pm | 5 +++++ IkiWiki/Plugin/monotone.pm | 5 +++++ IkiWiki/Plugin/norcs.pm | 7 +++++- IkiWiki/Plugin/svn.pm | 5 +++++ IkiWiki/Plugin/tla.pm | 5 +++++ IkiWiki/Render.pm | 18 +++++++++++++--- debian/changelog | 5 +++++ .../How_does_ikiwiki_remember_times__63__.mdwn | 25 ++++++---------------- ...old_repository_to_new_ikiwiki_system__63__.mdwn | 4 ---- doc/plugins/write.mdwn | 7 ++++++ doc/rcs.mdwn | 8 +++++-- doc/tips/Importing_posts_from_Wordpress.mdwn | 2 +- doc/tips/inside_dot_ikiwiki/discussion.mdwn | 7 +++--- doc/todo/auto_getctime_on_fresh_build.mdwn | 8 +++++-- doc/usage.mdwn | 10 ++++----- ikiwiki.in | 3 ++- mtime-to-git | 14 ------------ 22 files changed, 109 insertions(+), 57 deletions(-) delete mode 100755 mtime-to-git diff --git a/IkiWiki.pm b/IkiWiki.pm index 1730e476a..7655dada5 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -440,10 +440,10 @@ sub getsetup () { safe => 0, rebuild => 0, }, - getctime => { + gettime => { type => "internal", default => 0, - description => "running in getctime mode", + description => "running in gettime mode", safe => 0, rebuild => 0, }, @@ -1790,6 +1790,10 @@ sub rcs_getctime ($) { $hooks{rcs}{rcs_getctime}{call}->(@_); } +sub rcs_getmtime ($) { + $hooks{rcs}{rcs_getmtime}{call}->(@_); +} + sub rcs_receive () { $hooks{rcs}{rcs_receive}{call}->(); } diff --git a/IkiWiki/Plugin/bzr.pm b/IkiWiki/Plugin/bzr.pm index 0efc26b49..f79ca7c8f 100644 --- a/IkiWiki/Plugin/bzr.pm +++ b/IkiWiki/Plugin/bzr.pm @@ -20,6 +20,7 @@ sub import { hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges); hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff); hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime); + hook(type => "rcs", id => "rcs_getmtime", call => \&rcs_getmtime); } sub checkconfig () { @@ -306,4 +307,8 @@ sub rcs_getctime ($) { return $ctime; } +sub rcs_getmtime ($) { + error "rcs_getmtime is not implemented for bzr\n"; # TODO +} + 1 diff --git a/IkiWiki/Plugin/cvs.pm b/IkiWiki/Plugin/cvs.pm index 26a3e9dd2..360d97249 100644 --- a/IkiWiki/Plugin/cvs.pm +++ b/IkiWiki/Plugin/cvs.pm @@ -49,6 +49,7 @@ sub import { hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges); hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff); hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime); + hook(type => "rcs", id => "rcs_getmtime", call => \&rcs_getmtime); } sub genwrapper () { @@ -485,4 +486,8 @@ sub rcs_getctime ($) { return $date; } +sub rcs_getmtime ($) { + error "rcs_getmtime is not implemented for cvs\n"; # TODO +} + 1 diff --git a/IkiWiki/Plugin/darcs.pm b/IkiWiki/Plugin/darcs.pm index bc8394b90..c1d6661d3 100644 --- a/IkiWiki/Plugin/darcs.pm +++ b/IkiWiki/Plugin/darcs.pm @@ -18,6 +18,7 @@ sub import { hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges); hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff); hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime); + hook(type => "rcs", id => "rcs_getmtime", call => \&rcs_getmtime); } sub silentsystem (@) { @@ -427,4 +428,8 @@ sub rcs_getctime ($) { return $date; } +sub rcs_getmtime ($) { + error "rcs_getmtime is not implemented for darcs\n"; # TODO +} + 1 diff --git a/IkiWiki/Plugin/git.pm b/IkiWiki/Plugin/git.pm index b02f4a5ed..86d80186f 100644 --- a/IkiWiki/Plugin/git.pm +++ b/IkiWiki/Plugin/git.pm @@ -25,6 +25,7 @@ sub import { hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges); hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff); hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime); + hook(type => "rcs", id => "rcs_getmtime", call => \&rcs_getmtime); hook(type => "rcs", id => "rcs_receive", call => \&rcs_receive); } @@ -634,6 +635,10 @@ sub rcs_getctime ($) { return $ctime; } +sub rcs_getmtime ($) { + error "rcs_getmtime is not implemented for git\n"; # TODO +} + sub rcs_receive () { # The wiki may not be the only thing in the git repo. # Determine if it is in a subdirectory by examining the srcdir, diff --git a/IkiWiki/Plugin/mercurial.pm b/IkiWiki/Plugin/mercurial.pm index ea00a3364..34e009c7a 100644 --- a/IkiWiki/Plugin/mercurial.pm +++ b/IkiWiki/Plugin/mercurial.pm @@ -20,6 +20,7 @@ sub import { hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges); hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff); hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime); + hook(type => "rcs", id => "rcs_getmtime", call => \&rcs_getmtime); } sub checkconfig () { @@ -254,4 +255,8 @@ sub rcs_getctime ($) { return $ctime; } +sub rcs_getmtime ($) { + error "rcs_getmtime is not implemented for mercurial\n"; # TODO +} + 1 diff --git a/IkiWiki/Plugin/monotone.pm b/IkiWiki/Plugin/monotone.pm index c33cf7e3a..67d4abbaa 100644 --- a/IkiWiki/Plugin/monotone.pm +++ b/IkiWiki/Plugin/monotone.pm @@ -23,6 +23,7 @@ sub import { hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges); hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff); hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime); + hook(type => "rcs", id => "rcs_getmtime", call => \&rcs_getmtime); } sub checkconfig () { @@ -693,4 +694,8 @@ sub rcs_getctime ($) { return $date; } +sub rcs_getmtime ($) { + error "rcs_getmtime is not implemented for monotone\n"; # TODO +} + 1 diff --git a/IkiWiki/Plugin/norcs.pm b/IkiWiki/Plugin/norcs.pm index e6a05a3c5..053652a5f 100644 --- a/IkiWiki/Plugin/norcs.pm +++ b/IkiWiki/Plugin/norcs.pm @@ -18,6 +18,7 @@ sub import { hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges); hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff); hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime); + hook(type => "rcs", id => "rcs_getmtime", call => \&rcs_getmtime); } sub getsetup () { @@ -63,7 +64,11 @@ sub rcs_diff ($) { } sub rcs_getctime ($) { - error gettext("getctime not implemented"); + return 0; +} + +sub rcs_getmtime ($) { + return 0; } 1 diff --git a/IkiWiki/Plugin/svn.pm b/IkiWiki/Plugin/svn.pm index 7d27ec842..85c205f09 100644 --- a/IkiWiki/Plugin/svn.pm +++ b/IkiWiki/Plugin/svn.pm @@ -19,6 +19,7 @@ sub import { hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges); hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff); hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime); + hook(type => "rcs", id => "rcs_getmtime", call => \&rcs_getmtime); } sub checkconfig () { @@ -379,4 +380,8 @@ sub rcs_getctime ($) { return $date; } +sub rcs_getmtime ($) { + error "rcs_getmtime is not implemented for svn\n"; # TODO +} + 1 diff --git a/IkiWiki/Plugin/tla.pm b/IkiWiki/Plugin/tla.pm index 764da9b98..f5ad0cc96 100644 --- a/IkiWiki/Plugin/tla.pm +++ b/IkiWiki/Plugin/tla.pm @@ -18,6 +18,7 @@ sub import { hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges); hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff); hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime); + hook(type => "rcs", id => "rcs_getmtime", call => \&rcs_getmtime); } sub checkconfig () { @@ -284,4 +285,8 @@ sub rcs_getctime ($) { return $date; } +sub rcs_getmtime ($) { + error "rcs_getmtime is not implemented for tla\n"; # TODO +} + 1 diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index e98888d76..e1cb68462 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -365,14 +365,26 @@ sub find_new_files ($) { } else { push @new, $file; - if ($config{getctime} && -e "$config{srcdir}/$file") { + if ($config{gettime} && -e "$config{srcdir}/$file") { eval { - my $time=rcs_getctime("$config{srcdir}/$file"); - $pagectime{$page}=$time; + my $ctime=rcs_getctime("$config{srcdir}/$file"); + if ($ctime > 0) { + $pagectime{$page}=$ctime; + } }; if ($@) { print STDERR $@; } + my $mtime; + eval { + my $mtime=rcs_getmtime("$config{srcdir}/$file"); + }; + if ($@) { + print STDERR $@; + } + elsif ($mtime > 0) { + utime($mtime, $mtime, "$config{srcdir}/$file"); + } } } $pagecase{lc $page}=$page; diff --git a/debian/changelog b/debian/changelog index 737d73655..615d5916f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -44,6 +44,11 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low * conditional: Fix bug that forced "all" mode off by default. * calendarmonth.tmpl: The month calendar is now put in a sidebar. * calendar: Improved display of arrows. + * Rename --getctime to --gettime. (The old name still works for + backwards compatability.) + * --gettime now also looks up last modification time. + * Add rcs_getmtime to plugin API; currently only implemented + for git. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 diff --git a/doc/forum/How_does_ikiwiki_remember_times__63__.mdwn b/doc/forum/How_does_ikiwiki_remember_times__63__.mdwn index 6ce576db1..6b7739fd0 100644 --- a/doc/forum/How_does_ikiwiki_remember_times__63__.mdwn +++ b/doc/forum/How_does_ikiwiki_remember_times__63__.mdwn @@ -20,15 +20,17 @@ Do I have it right? > Some VCS, like git, set the file mtimes to the current time > when making a new checkout, so they will be lost if you do that. > The creation times can be retrived using the `--getctime` option. -> I suppose it might be nice if there were a `--getmtime` that pulled -> true modification times out of the VCS, but I haven't found it a big -> deal in practice for the last modification times to be updated to the -> current time when rebuilding a wiki like this. --[[Joey]] +> --[[Joey]] > > > Thanks for the clarification. I ran some tests of my own to make sure I understand it right, and I'm satisfied > > that the order of posts in my blog can be retrieved from the VCS using the `--getctime` option, at least if I > > choose to order my posts by creation time rather than modification time. But I now know that I can't rely on > > page modification times in ikiwiki as these can be lost permanently. +> +> > > Update: It's now renamed to `--gettime`, and pulls both the creation +> > > and modification times. Also, per [[todo/auto_getctime_on_fresh_build]], +> > > this is now done automatically the first time ikiwiki builds a +> > > srcdir. So, no need to worry about this any more! --[[Joey]] > > > > I would suggest that there should at least be a `--getmtime` option like you describe, and perhaps that > > `--getctime` and `--getmtime` be _on by default_. In my opinion the creation times and modification times of @@ -91,19 +93,6 @@ Do I have it right? > A quick workaround for me to get modification times right is the following > little zsh script, which unfortunately only works for git: - #!/usr/bin/env zsh - - set +x - - for FILE in **/*(.); do - TIMES="`git log --pretty=format:%ai $FILE`" - MTIME="`echo $TIMES | head -n1`" - - if [ ! -z $MTIME ]; then - echo touch -m -d "$MTIME" $FILE - touch -m -d "$MTIME" $FILE - fi - - done +>> Elided; no longer needed since --gettime does that, and much faster! --[[Joey]] > --[[David_Riebenbauer]] diff --git a/doc/forum/Migrating_old_repository_to_new_ikiwiki_system__63__.mdwn b/doc/forum/Migrating_old_repository_to_new_ikiwiki_system__63__.mdwn index fe67e6aba..d7a33b526 100644 --- a/doc/forum/Migrating_old_repository_to_new_ikiwiki_system__63__.mdwn +++ b/doc/forum/Migrating_old_repository_to_new_ikiwiki_system__63__.mdwn @@ -20,10 +20,6 @@ How do I set up an ikiwiki system using a pre-existing repository (instead of cr > recreate the ikiwiki srcdir > 3. `git clone` from the bare git repository a second time, > to create a checkout you can manually edit (optional) -> 4. run `ikiwiki --getctime --setup your.setup` -> The getctime will ensure page creation times are accurate -> by putting the info out of the git history, -> and only needs to be done once. > > If you preserved your repository, but not the setup file, > the easiest way to make one is probably to run diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 707622956..cf7044b2c 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -1085,6 +1085,13 @@ it up in the history. It's ok if this is not implemented, and throws an error. +#### `rcs_getmtime($)` + +This is used to get the page modification time for a file from the RCS, by +looking it up in the history. + +It's ok if this is not implemented, and throws an error. + #### `rcs_receive()` This is called when ikiwiki is running as a pre-receive hook (or diff --git a/doc/rcs.mdwn b/doc/rcs.mdwn index 4e7a8d2a6..b5bfc2414 100644 --- a/doc/rcs.mdwn +++ b/doc/rcs.mdwn @@ -14,8 +14,10 @@ use, some advanced or special features are not supported in all of them. Lack of support in [[ikiwiki-makerepo]] or auto.setup can make it harder to set up a wiki using that revision control system. The `rcs_commit_staged` hook is needed to use [[attachments|plugins/attachment]] or -[[plugins/comments]]. And so on. The table below summarises this for each -revision control system and links to more information about each. +[[plugins/comments]]. `rcs_getctime` may be implemented in a fast way +(ie, one log lookup for all files), or very slowly (one lookup per file). +And so on. The table below summarises this for each revision control +system and links to more information about each. [[!table data=""" feature |[[git]]|[[svn]]|[[bzr]] |[[monotone]]|[[mercurial]]|[[darcs]]|[[tla]] |[[cvs]] @@ -25,6 +27,8 @@ auto.setup |yes |yes |incomplete|yes |incomplete |yes `rcs_rename` |yes |yes |yes |yes |no |yes |no |yes `rcs_remove` |yes |yes |yes |yes |no |yes |no |yes `rcs_diff` |yes |yes |yes |yes |no |yes |yes |yes +`rcs_getctime` |fast |slow |slow |slow |slow |slow |slow |slow +`rcs_getmtime` |fast |no |no |no |no |no |no |no anonymous push |yes |no |no |no |no |no |no |no conflict handling |yes |yes |yes |buggy |yes |yes |yes |yes """]] diff --git a/doc/tips/Importing_posts_from_Wordpress.mdwn b/doc/tips/Importing_posts_from_Wordpress.mdwn index 59330caa4..8774c9723 100644 --- a/doc/tips/Importing_posts_from_Wordpress.mdwn +++ b/doc/tips/Importing_posts_from_Wordpress.mdwn @@ -1,6 +1,6 @@ Use case: You want to move away from Wordpress to Ikiwiki as your blogging/website platform, but you want to retain your old posts. -[This](http://git.chris-lamb.co.uk/?p=ikiwiki-wordpress-import.git) is a simple tool that generates [git-fast-import](http://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html)-compatible data from a WordPress export XML file. It retains creation time of each post, so you can use Ikiwiki's <tt>--getctime</tt> to get the preserve creation times on checkout. +[This](http://git.chris-lamb.co.uk/?p=ikiwiki-wordpress-import.git) is a simple tool that generates [git-fast-import](http://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html)-compatible data from a WordPress export XML file. It retains creation time of each post, so you can use Ikiwiki's <tt>--gettime</tt> to get the preserve creation times on checkout. WordPress categories are mapped onto Ikiwiki tags. The ability to import comments is planned. diff --git a/doc/tips/inside_dot_ikiwiki/discussion.mdwn b/doc/tips/inside_dot_ikiwiki/discussion.mdwn index 34d5b9252..69df369ec 100644 --- a/doc/tips/inside_dot_ikiwiki/discussion.mdwn +++ b/doc/tips/inside_dot_ikiwiki/discussion.mdwn @@ -6,14 +6,15 @@ My database appears corrupted: No idea how this happened. I've blown it away and recreated it but, for future reference, is there any less violent way to recover from this situation? I miss having the correct created and last edited times. --[[sabr]] > update: fixed ctimes and mtimes using [these instructions](http://u32.net/Mediawiki_Conversion/Git_Import/#Correct%20Creation%20and%20Last%20Edited%20time) --[[sabr]] -> That's overly complex. Just run `ikiwiki -setup your.setup -getctime`. +> That's overly complex. Just run `ikiwiki -setup your.setup -gettime`. > BTW, I'd be interested in examining such a corrupt storable file to try > to see what happened to it. --[[Joey]] ->> --getctime appears to only set the last edited date. It's not supposed to set the creation date, is it? The only place that info is stored is in the git repo. +>> --gettime appears to only set the last edited date. It's not supposed to set the creation date, is it? The only place that info is stored is in the git repo. >>> Pulling the page creation date out of the git history is exactly what ->>> --getctime does. --[[Joey]] +>>> --gettime does. (It used to be called --getctime, and only do that; now +>>> it also pulls out the last modified date). --[[Joey]] >> Alas, I seem to have lost the bad index file to periodic /tmp wiping; I'll send it to you if it happens again. --[[sabr]] diff --git a/doc/todo/auto_getctime_on_fresh_build.mdwn b/doc/todo/auto_getctime_on_fresh_build.mdwn index ea95fb8c9..760c56fa1 100644 --- a/doc/todo/auto_getctime_on_fresh_build.mdwn +++ b/doc/todo/auto_getctime_on_fresh_build.mdwn @@ -1,9 +1,13 @@ [[!tag wishlist]] -It might be a good idea to enable --getctime when `.ikiwiki` does not +It might be a good idea to enable --gettime when `.ikiwiki` does not exist. This way a new checkout of a `srcdir` would automatically get -ctimes right. (Running --getctime whenever a rebuild is done would be too +ctimes right. (Running --gettime whenever a rebuild is done would be too slow.) --[[Joey]] Could this be too annoying in some cases, eg, checking out a large wiki that needs to get set up right away? --[[Joey]] + +> Not for git with the new, optimised --getctime. For other VCS.. well, +> pity they're not as fast as git ;), but it is a one-time expense... +> [[done]] --[[Joey]] diff --git a/doc/usage.mdwn b/doc/usage.mdwn index db1e36a10..553fef01e 100644 --- a/doc/usage.mdwn +++ b/doc/usage.mdwn @@ -320,13 +320,11 @@ also be configured using a setup file. intercepted. If you enable this option then you must run at least the CGI portion of ikiwiki over SSL. -* --getctime +* --gettime - Pull creation time for each new page out of the revision control - system. This rarely used option provides a way to get the real creation - times of items in weblogs, such as when building a wiki from a new - VCS checkout. It is unoptimised and quite slow. It is best used - with --rebuild, to force ikiwiki to get the ctime for all pages. + Extract creation and modification times for each new page from the + the revision control's log. This is done automatically when building a + wiki for the first time, so you normally do not need to use this option. * --set var=value diff --git a/ikiwiki.in b/ikiwiki.in index 38e4d3201..801ff9a0b 100755 --- a/ikiwiki.in +++ b/ikiwiki.in @@ -44,7 +44,8 @@ sub getconfig () { "wrappergroup=s" => \$config{wrappergroup}, "usedirs!" => \$config{usedirs}, "prefix-directives!" => \$config{prefix_directives}, - "getctime" => \$config{getctime}, + "getctime" => \$config{gettime}, + "gettime" => \$config{gettime}, "numbacklinks=i" => \$config{numbacklinks}, "rcs=s" => \$config{rcs}, "no-rcs" => sub { $config{rcs}="" }, diff --git a/mtime-to-git b/mtime-to-git deleted file mode 100755 index 9875af5d7..000000000 --- a/mtime-to-git +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# Sets mtimes of all files in the tree their last change date -# based on git's log. Useful to avoid too new dates after a -# fresh checkout, which lead to ikiwiki unnecessarily rebuilding -# basewiki files on upgrade. -if [ -d .git ]; then - for file in $(git ls-files); do - date="$(git log -1 --date=rfc "$file" | grep ^Date: | sed -e 's/Date://')" - if [ -n "$date" ]; then - echo "$date $file" - touch -d"$date" $file - fi - done -fi -- cgit v1.2.3 From e3e245956fe6dcbb884428d24bed4cb9eb7c8ba7 Mon Sep 17 00:00:00 2001 From: Cord <Cord@web> Date: Fri, 16 Apr 2010 21:48:35 +0000 Subject: typo --- doc/examples/softwaresite/news.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/examples/softwaresite/news.mdwn b/doc/examples/softwaresite/news.mdwn index 9b53c7d99..20efba6e0 100644 --- a/doc/examples/softwaresite/news.mdwn +++ b/doc/examples/softwaresite/news.mdwn @@ -1,4 +1,4 @@ -This is where annoucements of new releases, features, and other news is +This is where announcements of new releases, features, and other news is posted. FooBar users are recommended to subscribe to this page's RSS feed. -- cgit v1.2.3 From 0bd6c327666e2ac747183faca483c46ee2774285 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Fri, 16 Apr 2010 18:11:30 -0400 Subject: fix file, should be symlink --- underlays/basewiki/ikiwiki/pagespec/sorting.mdwn | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) mode change 100644 => 120000 underlays/basewiki/ikiwiki/pagespec/sorting.mdwn diff --git a/underlays/basewiki/ikiwiki/pagespec/sorting.mdwn b/underlays/basewiki/ikiwiki/pagespec/sorting.mdwn deleted file mode 100644 index 41aa58151..000000000 --- a/underlays/basewiki/ikiwiki/pagespec/sorting.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -Some [[directives|ikiwiki/directive]] that use -[[PageSpecs|ikiwiki/pagespec]] allow -specifying the order that matching pages are shown in. The following sort -orders can be specified. - -* `age` - List pages from the most recently created to the oldest. -* `mtime` - List pages with the most recently modified first. -* `title` - Order by title. -* `title_natural` - Only available if [[!cpan Sort::Naturally]] is - installed. Orders by title, but numbers in the title are treated - as such, ("1 2 9 10 20" instead of "1 10 2 20 9") diff --git a/underlays/basewiki/ikiwiki/pagespec/sorting.mdwn b/underlays/basewiki/ikiwiki/pagespec/sorting.mdwn new file mode 120000 index 000000000..93ccbb18d --- /dev/null +++ b/underlays/basewiki/ikiwiki/pagespec/sorting.mdwn @@ -0,0 +1 @@ +../../../../doc/ikiwiki/pagespec/sorting.mdwn \ No newline at end of file -- cgit v1.2.3 From dee2940c0bc97080088c99f399cd0ff0df3bec23 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Fri, 16 Apr 2010 18:29:45 -0400 Subject: automatically run --gettime, and optimise it for git * Automatically run --gettime the first time ikiwiki is run on a given srcdir. * Optimise --gettime for git, so it's appropriatly screamingly fast. (This could be done for other backends too.) * However, --gettime for git no longer follows renames. * Use above to fix up timestamps on docwiki, as well as ensure that timestamps on basewiki files shipped in the deb are sane. --- IkiWiki.pm | 2 +- IkiWiki/Plugin/git.pm | 48 ++++++++++++++++++++++++++++++++++++------------ IkiWiki/Render.pm | 11 +++++++++-- debian/changelog | 7 +++++++ debian/control | 2 +- doc/plugins/write.mdwn | 4 ++++ doc/usage.mdwn | 2 +- docwiki.setup | 17 ++++++++++++++++- ikiwiki.in | 2 +- 9 files changed, 76 insertions(+), 19 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 7655dada5..b37b1f344 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -442,7 +442,6 @@ sub getsetup () { }, gettime => { type => "internal", - default => 0, description => "running in gettime mode", safe => 0, rebuild => 0, @@ -1512,6 +1511,7 @@ sub loadindex () { open ($in, "<", "$config{wikistatedir}/indexdb") || return; } else { + $config{gettime}=1; # first build return; } } diff --git a/IkiWiki/Plugin/git.pm b/IkiWiki/Plugin/git.pm index 86d80186f..aa402c04f 100644 --- a/IkiWiki/Plugin/git.pm +++ b/IkiWiki/Plugin/git.pm @@ -616,27 +616,51 @@ sub rcs_diff ($) { } } -sub rcs_getctime ($) { +{ +my %time_cache; + +sub findtimes ($$) { my $file=shift; + my $id=shift; # 0 = mtime ; 1 = ctime + # Remove srcdir prefix $file =~ s/^\Q$config{srcdir}\E\/?//; - my @raw_lines = run_or_die('git', 'log', - '--follow', '--no-merges', - '--pretty=raw', '--raw', '--abbrev=40', '--always', '-c', - '-r', '--', $file); - my @ci; - while (my $parsed = parse_diff_tree("", \@raw_lines)) { - push @ci, $parsed; + if (! keys %time_cache) { + my $date; + foreach my $line (run_or_die('git', 'log', + '--pretty=format:%ct', + '--name-only', '--relative')) { + if (! defined $date && $line =~ /^(\d+)$/) { + $date=$line; + } + elsif (! length $line) { + $date=undef; + } + else { + if (! $time_cache{$line}) { + $time_cache{$line}[0]=$date; # mtime + } + $time_cache{$line}[1]=$date; # ctime + } + } } - my $ctime = $ci[$#ci]->{'author_epoch'}; - debug("ctime for '$file': ". localtime($ctime)); - return $ctime; + return exists $time_cache{$file} ? $time_cache{$file}[$id] : 0; +} + +} + +sub rcs_getctime ($) { + my $file=shift; + + return findtimes($file, 1); } sub rcs_getmtime ($) { - error "rcs_getmtime is not implemented for git\n"; # TODO + my $file=shift; + + return findtimes($file, 0); } sub rcs_receive () { diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index e1cb68462..a6b0f0617 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -352,6 +352,8 @@ sub find_new_files ($) { my @new; my @internal_new; + my $times_noted; + foreach my $file (@$files) { my $page=pagename($file); if (exists $pagesources{$page} && $pagesources{$page} ne $file) { @@ -363,7 +365,12 @@ sub find_new_files ($) { if (isinternal($page)) { push @internal_new, $file; } - else { + elsif ($config{rcs}) { + if (! $times_noted) { + debug(sprintf(gettext("querying %s for file creation and modification times.."), $config{rcs})); + $times_noted=1; + } + push @new, $file; if ($config{gettime} && -e "$config{srcdir}/$file") { eval { @@ -377,7 +384,7 @@ sub find_new_files ($) { } my $mtime; eval { - my $mtime=rcs_getmtime("$config{srcdir}/$file"); + $mtime=rcs_getmtime("$config{srcdir}/$file"); }; if ($@) { print STDERR $@; diff --git a/debian/changelog b/debian/changelog index 615d5916f..60a67cbe3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -47,8 +47,15 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low * Rename --getctime to --gettime. (The old name still works for backwards compatability.) * --gettime now also looks up last modification time. + * Automatically run --gettime the first time ikiwiki is run on + a given srcdir. * Add rcs_getmtime to plugin API; currently only implemented for git. + * Optimise --gettime for git, so it's appropriatly screamingly + fast. (This could be done for other backends too.) + * However, --gettime for git no longer follows renames. + * Use above to fix up timestamps on docwiki, as well as ensure that + timestamps on basewiki files shipped in the deb are sane. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 diff --git a/debian/control b/debian/control index 87f7d8209..ae06f32b0 100644 --- a/debian/control +++ b/debian/control @@ -7,7 +7,7 @@ Build-Depends-Indep: dpkg-dev (>= 1.9.0), libxml-simple-perl, libtimedate-perl, libhtml-template-perl, libhtml-scrubber-perl, wdg-html-validator, libhtml-parser-perl, liburi-perl, perlmagick, po4a (>= 0.34), - libfile-chdir-perl + libfile-chdir-perl, Maintainer: Joey Hess <joeyh@debian.org> Uploaders: Josh Triplett <josh@freedesktop.org> Standards-Version: 3.8.4 diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index cf7044b2c..0bf6fcf48 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -1085,6 +1085,8 @@ it up in the history. It's ok if this is not implemented, and throws an error. +If the RCS cannot determine a ctime for the file, return 0. + #### `rcs_getmtime($)` This is used to get the page modification time for a file from the RCS, by @@ -1092,6 +1094,8 @@ looking it up in the history. It's ok if this is not implemented, and throws an error. +If the RCS cannot determine a mtime for the file, return 0. + #### `rcs_receive()` This is called when ikiwiki is running as a pre-receive hook (or diff --git a/doc/usage.mdwn b/doc/usage.mdwn index 553fef01e..2e12517ea 100644 --- a/doc/usage.mdwn +++ b/doc/usage.mdwn @@ -320,7 +320,7 @@ also be configured using a setup file. intercepted. If you enable this option then you must run at least the CGI portion of ikiwiki over SSL. -* --gettime +* --gettime, --no-gettime Extract creation and modification times for each new page from the the revision control's log. This is done automatically when building a diff --git a/docwiki.setup b/docwiki.setup index 8278b73ea..6bc200066 100644 --- a/docwiki.setup +++ b/docwiki.setup @@ -1,6 +1,18 @@ #!/usr/bin/perl # Configuration file for ikiwiki to build its documentation wiki. +# Use git during the build, if it's available and if we're building +# from a git checkout. This ensures ikiwiki gets the right mtimes and +# ctimes for files in the doc wiki. +our $rcs="norcs"; +BEGIN { + my $git=`which git 2>&1`; + chomp $git; + if (-x $git && -d ".git") { + $rcs="git"; + } +} + use IkiWiki::Setup::Standard { wikiname => "ikiwiki", srcdir => "doc", @@ -9,7 +21,7 @@ use IkiWiki::Setup::Standard { underlaydirbase => "underlays", underlaydir => "underlays/basewiki", discussion => 0, - exclude => qr/\/discussion|bugs\/*|todo\/*|forum\/*/, + exclude => qr/\/discussion|bugs\/*|todo\/*|forum\/*/, # save space locale => '', verbose => 1, syslog => 0, @@ -17,4 +29,7 @@ use IkiWiki::Setup::Standard { usedirs => 0, prefix_directives => 1, add_plugins => [qw{goodstuff version haiku polygen fortune table}], + disable_plugins => [qw{recentchanges}], # not appropriate for doc dir + rcs => $rcs, + gitorigin_branch => '', # don't pull during build } diff --git a/ikiwiki.in b/ikiwiki.in index 801ff9a0b..acd37f802 100755 --- a/ikiwiki.in +++ b/ikiwiki.in @@ -45,7 +45,7 @@ sub getconfig () { "usedirs!" => \$config{usedirs}, "prefix-directives!" => \$config{prefix_directives}, "getctime" => \$config{gettime}, - "gettime" => \$config{gettime}, + "gettime!" => \$config{gettime}, "numbacklinks=i" => \$config{numbacklinks}, "rcs=s" => \$config{rcs}, "no-rcs" => sub { $config{rcs}="" }, -- cgit v1.2.3 From b13bb0c83c8f23bca97734882997fd3dc29f0553 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Fri, 16 Apr 2010 18:43:51 -0400 Subject: implement rcs_getmtime for svn This is a slow implementation; it runs svn log once per file still, rather than running svn log once on the whole srcdir. I did it this way because in my experience, svn log, run on a directory, does not always list every change to files inside that directory. I don't know why, and I use svn as little as possible these days. --- IkiWiki/Plugin/svn.pm | 42 +++++++++++++++++++++++++++++++----------- debian/changelog | 2 +- doc/rcs.mdwn | 2 +- 3 files changed, 33 insertions(+), 13 deletions(-) diff --git a/IkiWiki/Plugin/svn.pm b/IkiWiki/Plugin/svn.pm index 85c205f09..6e1d4a40f 100644 --- a/IkiWiki/Plugin/svn.pm +++ b/IkiWiki/Plugin/svn.pm @@ -350,9 +350,18 @@ sub rcs_diff ($) { return `svnlook diff $config{svnrepo} -r$rev --no-diff-deleted`; } -sub rcs_getctime ($) { +{ + +my ($lastfile, $lastmtime, $lastctime); + +sub findtimes ($) { my $file=shift; + if ($lastfile eq $file) { + return $lastmtime, $lastctime; + } + $lastfile=$file; + my $svn_log_infoline=qr/^r\d+\s+\|\s+[^\s]+\s+\|\s+(\d+-\d+-\d+\s+\d+:\d+:\d+\s+[-+]?\d+).*/; my $child = open(SVNLOG, "-|"); @@ -360,28 +369,39 @@ sub rcs_getctime ($) { exec("svn", "log", $file) || error("svn log $file failed to run"); } - my $date; + my ($cdate, $mdate); while (<SVNLOG>) { if (/$svn_log_infoline/) { - $date=$1; + $cdate=$1; + $mdate=$1 unless defined $mdate; } } - close SVNLOG || warn "svn log $file exited $?"; + close SVNLOG || error "svn log $file exited $?"; - if (! defined $date) { - warn "failed to parse svn log for $file\n"; - return 0; + if (! defined $cdate) { + error "failed to parse svn log for $file\n"; } eval q{use Date::Parse}; error($@) if $@; - $date=str2time($date); - debug("found ctime ".localtime($date)." for $file"); - return $date; + + $lastctime=str2time($cdate); + $lastmtime=str2time($mdate); + return $lastmtime, $lastctime; +} + +} + +sub rcs_getctime ($) { + my $file=shift; + + return (findtimes($file))[1]; } sub rcs_getmtime ($) { - error "rcs_getmtime is not implemented for svn\n"; # TODO + my $file=shift; + + return (findtimes($file))[0]; } 1 diff --git a/debian/changelog b/debian/changelog index 60a67cbe3..774aedc40 100644 --- a/debian/changelog +++ b/debian/changelog @@ -50,7 +50,7 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low * Automatically run --gettime the first time ikiwiki is run on a given srcdir. * Add rcs_getmtime to plugin API; currently only implemented - for git. + for git and svn. * Optimise --gettime for git, so it's appropriatly screamingly fast. (This could be done for other backends too.) * However, --gettime for git no longer follows renames. diff --git a/doc/rcs.mdwn b/doc/rcs.mdwn index b5bfc2414..450d16800 100644 --- a/doc/rcs.mdwn +++ b/doc/rcs.mdwn @@ -28,7 +28,7 @@ auto.setup |yes |yes |incomplete|yes |incomplete |yes `rcs_remove` |yes |yes |yes |yes |no |yes |no |yes `rcs_diff` |yes |yes |yes |yes |no |yes |yes |yes `rcs_getctime` |fast |slow |slow |slow |slow |slow |slow |slow -`rcs_getmtime` |fast |no |no |no |no |no |no |no +`rcs_getmtime` |fast |slow |no |no |no |no |no |no anonymous push |yes |no |no |no |no |no |no |no conflict handling |yes |yes |yes |buggy |yes |yes |yes |yes """]] -- cgit v1.2.3 From 64bc7d60a22ce33dca5434177cb0b410caca6102 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Fri, 16 Apr 2010 18:46:28 -0400 Subject: update changelog --- debian/changelog | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 774aedc40..d65ffffd7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -48,12 +48,14 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low backwards compatability.) * --gettime now also looks up last modification time. * Automatically run --gettime the first time ikiwiki is run on - a given srcdir. + a given srcdir. (Use --no-gettime to disable.) * Add rcs_getmtime to plugin API; currently only implemented for git and svn. * Optimise --gettime for git, so it's appropriatly screamingly - fast. (This could be done for other backends too.) - * However, --gettime for git no longer follows renames. + fast. (This could be done for most other backends too.) + * However, --gettime for git no longer follows renames. That would + be slow, and where a renamed wiki page is the same page is really + an iffy thing. * Use above to fix up timestamps on docwiki, as well as ensure that timestamps on basewiki files shipped in the deb are sane. -- cgit v1.2.3 From 9265ce85b6905024a45e66b89bd6c9c910c0b07a Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Fri, 16 Apr 2010 19:23:11 -0400 Subject: squelch warning --- IkiWiki/Plugin/svn.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/svn.pm b/IkiWiki/Plugin/svn.pm index 6e1d4a40f..d10b4888d 100644 --- a/IkiWiki/Plugin/svn.pm +++ b/IkiWiki/Plugin/svn.pm @@ -357,7 +357,7 @@ my ($lastfile, $lastmtime, $lastctime); sub findtimes ($) { my $file=shift; - if ($lastfile eq $file) { + if (defined $lastfile && $lastfile eq $file) { return $lastmtime, $lastctime; } $lastfile=$file; -- cgit v1.2.3 From e31b1b27f83f47da10b2775f192eb8eefcfc68a2 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Fri, 16 Apr 2010 19:25:25 -0400 Subject: remove note about needing --gettime; automatically run on first build now --- doc/tips/Importing_posts_from_Wordpress.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/tips/Importing_posts_from_Wordpress.mdwn b/doc/tips/Importing_posts_from_Wordpress.mdwn index 8774c9723..ecc6ae505 100644 --- a/doc/tips/Importing_posts_from_Wordpress.mdwn +++ b/doc/tips/Importing_posts_from_Wordpress.mdwn @@ -1,6 +1,6 @@ Use case: You want to move away from Wordpress to Ikiwiki as your blogging/website platform, but you want to retain your old posts. -[This](http://git.chris-lamb.co.uk/?p=ikiwiki-wordpress-import.git) is a simple tool that generates [git-fast-import](http://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html)-compatible data from a WordPress export XML file. It retains creation time of each post, so you can use Ikiwiki's <tt>--gettime</tt> to get the preserve creation times on checkout. +[This](http://git.chris-lamb.co.uk/?p=ikiwiki-wordpress-import.git) is a simple tool that generates [git-fast-import](http://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html)-compatible data from a WordPress export XML file. WordPress categories are mapped onto Ikiwiki tags. The ability to import comments is planned. -- cgit v1.2.3 From c6c03768da90df0d7474edce09c2abf2a7e32052 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Fri, 16 Apr 2010 19:42:18 -0400 Subject: add list of compatability breaking changes --- doc/roadmap.mdwn | 14 ++++++++++++++ doc/roadmap/discussion.mdwn | 1 + 2 files changed, 15 insertions(+) diff --git a/doc/roadmap.mdwn b/doc/roadmap.mdwn index a701a2685..0c7bf2fa8 100644 --- a/doc/roadmap.mdwn +++ b/doc/roadmap.mdwn @@ -69,6 +69,20 @@ backwards compatability. ---- +# compatability breaking changes + +Probably incomplete list: + +* Drop old `--getctime` option. +* Remove compatability code in `loadindex` to handle old index data layouts. +* Make pagespecs match relative by default? (see [[discussion]]) +* Flip wikilinks? (see [[todo/link_plugin_perhaps_too_general?]]) +* YADA format setup files per default? + +In general, we try to use [[ikiwiki-transition]] or forced rebuilds on +upgrade to deal with changes that break compatability. Some things that +can't help with. + # future goals * Conversion support for existing other wikis. diff --git a/doc/roadmap/discussion.mdwn b/doc/roadmap/discussion.mdwn index 0b69867bf..8233b1990 100644 --- a/doc/roadmap/discussion.mdwn +++ b/doc/roadmap/discussion.mdwn @@ -3,6 +3,7 @@ backwards compatibility problems. Should this be marked as a future plan, perhap major version number like 2.0? --Ethan Yes, I'm looking at making this kind of change at 2.0, added to the list. +(Update: Didn't make it in 2.0 or 3.0...) However, I have doubts that it makes good sense to go relative by default. While it's not consitent with links, it seems to work better overall to have pagespecs be absolute by default, IMHO. --[[Joey]] -- cgit v1.2.3 From c769a33392c4dedbabfb1fa1fda5c8bb30b84c78 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Sat, 17 Apr 2010 12:20:50 -0400 Subject: autoindex: Switch to using %wikistate instead of abusing $pagestate{index}. --- IkiWiki/Plugin/autoindex.pm | 20 ++++++++++++++------ debian/changelog | 2 ++ ...uto-create_tag_pages_according_to_a_template.mdwn | 3 +++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/IkiWiki/Plugin/autoindex.pm b/IkiWiki/Plugin/autoindex.pm index 555856b11..c71d73349 100644 --- a/IkiWiki/Plugin/autoindex.pm +++ b/IkiWiki/Plugin/autoindex.pm @@ -61,8 +61,16 @@ sub refresh () { } my %deleted; - if (ref $pagestate{index}{autoindex}{deleted}) { - %deleted=%{$pagestate{index}{autoindex}{deleted}}; + if (ref $wikistate{autoindex}{deleted}) { + %deleted=%{$wikistate{autoindex}{deleted}}; + } + elsif (ref $pagestate{index}{autoindex}{deleted}) { + # compatability code + %deleted=%{$pagestate{index}{autoindex}{deleted}}; + delete $pagestate{index}{autoindex}; + } + + if (keys %deleted) { foreach my $dir (keys %deleted) { # remove deleted page state if the deleted page is re-added, # or if all its subpages are deleted @@ -71,7 +79,7 @@ sub refresh () { delete $deleted{$dir}; } } - $pagestate{index}{autoindex}{deleted}=\%deleted; + $wikistate{autoindex}{deleted}=\%deleted; } my @needed; @@ -82,10 +90,10 @@ sub refresh () { # This page must have just been deleted, so # don't re-add it. And remember it was # deleted. - if (! ref $pagestate{index}{autoindex}{deleted}) { - $pagestate{index}{autoindex}{deleted}={}; + if (! ref $wikistate{autoindex}{deleted}) { + $wikistate{autoindex}{deleted}={}; } - ${$pagestate{index}{autoindex}{deleted}}{$dir}=1; + ${$wikistate{autoindex}{deleted}}{$dir}=1; } else { push @needed, $dir; diff --git a/debian/changelog b/debian/changelog index d65ffffd7..4721c5309 100644 --- a/debian/changelog +++ b/debian/changelog @@ -58,6 +58,8 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low an iffy thing. * Use above to fix up timestamps on docwiki, as well as ensure that timestamps on basewiki files shipped in the deb are sane. + * autoindex: Switch to using %wikistate instead of abusing + $pagestate{index}. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index 8fc97578c..49da3c80c 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -239,6 +239,9 @@ wrong direction. >>>>>> Aha! Having looked at [[plugins/write]] again, it turns out that what this >>>>>> feature should really use is `%wikistate`, I think? :-) --[[smcv]] +>>>>>>> Ah, indeed, that came after I wrote autoindex. I've fixed autoindex to +>>>>>>> use it. --[[Joey]] + >>>>> Ok, now I know what you mean. --[[David_Riebenbauer]] >>> * `autoindex` forgets that a page was deleted when that page is -- cgit v1.2.3 From 7834989d863bb695c8fca90c89c53b7fc10600cd Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@gnu.kitenet.net> Date: Sat, 17 Apr 2010 12:24:58 -0400 Subject: typo --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 4721c5309..01d650290 100644 --- a/debian/changelog +++ b/debian/changelog @@ -54,7 +54,7 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low * Optimise --gettime for git, so it's appropriatly screamingly fast. (This could be done for most other backends too.) * However, --gettime for git no longer follows renames. That would - be slow, and where a renamed wiki page is the same page is really + be slow, and whether a renamed wiki page is the same page is really an iffy thing. * Use above to fix up timestamps on docwiki, as well as ensure that timestamps on basewiki files shipped in the deb are sane. -- cgit v1.2.3 From 7fcc0faf8367c5ae64a3ff06d0d74baa063c4dfc Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 12:45:20 -0400 Subject: few more suggestions --- doc/todo/auto-create_tag_pages_according_to_a_template.mdwn | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index 49da3c80c..def55f3ee 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -269,6 +269,15 @@ wrong direction. >> True. I'll do that. --[[David_Riebenbauer]] +> Seems that `%autofiles` stores plugin names as keys, but never +> really uses them. So it could just as easily be an array. +> +> I'd be happy if the `%del_hash` global were not needed. +> Looks like it could be avoided by moving the checks +> that `add_autofile` does into the autofile handling loop in +> `Render`. (Also, that loop should probably be in its own +> function anyway.) --[[Joey]] + [f3abeac919c4736429bd3362af6edf51ede8e7fe]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f3abeac919c4736429bd3362af6edf51ede8e7fe (commitdiff for f3abeac919c4736429bd3362af6edf51ede8e7fe) [4af4d26582f0c2b915d7102fb4a604b176385748]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=4af4d26582f0c2b915d7102fb4a604b176385748 (commitdiff for 4af4d26582f0c2b915d7102fb4a604b176385748) [f58f3e1bec41ccf9316f37b014ce0b373c8e49e1]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f58f3e1bec41ccf9316f37b014ce0b373c8e49e1 (commitdiff for f58f3e1bec41ccf9316f37b014ce0b373c8e49e1) -- cgit v1.2.3 From 2269a4c74b24378d8e7e2229ca3374a197d08d9c Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 12:54:22 -0400 Subject: whitespace --- IkiWiki.pm | 24 ++++++++++++------------ IkiWiki/Render.pm | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 2f26a16ce..3812961dc 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -12,20 +12,20 @@ use Storable; use open qw{:utf8 :std}; use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase - %pagestate %wikistate %renderedfiles %oldrenderedfiles - %pagesources %destsources %depends %depends_simple %hooks - %forcerebuild %loaded_plugins %typedlinks %oldtypedlinks - %autofiles %del_hash}; + %pagestate %wikistate %renderedfiles %oldrenderedfiles + %pagesources %destsources %depends %depends_simple %hooks + %forcerebuild %loaded_plugins %typedlinks %oldtypedlinks + %autofiles %del_hash}; use Exporter q{import}; our @EXPORT = qw(hook debug error template htmlpage deptype - add_depends pagespec_match pagespec_match_list bestlink - htmllink readfile writefile pagetype srcfile pagename - displaytime will_render gettext ngettext urlto targetpage - add_underlay pagetitle titlepage linkpage newpagefile - inject add_link add_autofile - %config %links %pagestate %wikistate %renderedfiles - %pagesources %destsources %typedlinks); + add_depends pagespec_match pagespec_match_list bestlink + htmllink readfile writefile pagetype srcfile pagename + displaytime will_render gettext ngettext urlto targetpage + add_underlay pagetitle titlepage linkpage newpagefile + inject add_link add_autofile + %config %links %pagestate %wikistate %renderedfiles + %pagesources %destsources %typedlinks); our $VERSION = 3.00; # plugin interface version, next is ikiwiki version our $version='unknown'; # VERSION_AUTOREPLACE done by Makefile, DNE our $installdir='/usr'; # INSTALLDIR_AUTOREPLACE done by Makefile, DNE @@ -1891,7 +1891,7 @@ sub define_gettext () { return shift; } }; - *ngettext=sub { + *ngettext=sub { $getobj->() if $getobj; if ($gettext_obj) { $gettext_obj->nget(@_); diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 796af6af2..c80030deb 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -43,7 +43,7 @@ sub backlinks ($) { my @links; foreach my $p (backlink_pages($page)) { my $href=urlto($p, $page); - + # Trim common dir prefixes from both pages. my $p_trimmed=$p; my $page_trimmed=$page; -- cgit v1.2.3 From b7d50abc0f3dbe99d2a3664c12ea95d24bfcf04b Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 13:35:15 -0400 Subject: refactor autofiles Made add_autofile take a generator function, and just register the autofile, for later possible creation. The testing is moved into Render, which allows cleaning up some stuff. --- IkiWiki.pm | 35 ++++++++++------------------------ IkiWiki/Plugin/tag.pm | 12 ++++++------ IkiWiki/Render.pm | 52 +++++++++++++++++++++++++++++++++++++-------------- 3 files changed, 54 insertions(+), 45 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 3812961dc..c22c75df8 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -15,7 +15,7 @@ use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase %pagestate %wikistate %renderedfiles %oldrenderedfiles %pagesources %destsources %depends %depends_simple %hooks %forcerebuild %loaded_plugins %typedlinks %oldtypedlinks - %autofiles %del_hash}; + %autofiles}; use Exporter q{import}; our @EXPORT = qw(hook debug error template htmlpage deptype @@ -1956,6 +1956,15 @@ sub add_link ($$;$) { } } +sub add_autofile ($$$) { + my $file=shift; + my $plugin=shift; + my $generator=shift; + + $autofiles{$file}{plugin}=$plugin; + $autofiles{$file}{generator}=$generator; +} + sub sortspec_translate ($$) { my $spec = shift; my $reverse = shift; @@ -2021,30 +2030,6 @@ sub sortspec_translate ($$) { return eval 'sub { '.$code.' }'; } -sub add_autofile ($$) { - my $autofile=shift; - my $plugin=shift; - - if (srcfile($autofile, 1)) { - return 0; - } - - my ($file, $page) = verify_src_file("$config{srcdir}/$autofile", $config{srcdir}); - - if ((!defined $file) || - (exists $pagestate{$page}{$plugin}{autofile_deleted})) { - return 0; - } - - if (exists $del_hash{$file}) { - $pagestate{$page}{$plugin}{autofile_deleted}=1; - return 0; - } - - $autofiles{$file}=$plugin; - return 1; -} - sub pagespec_translate ($) { my $spec=shift; diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index 9e6f417bf..7a918a4e8 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -70,13 +70,13 @@ sub gentag ($) { my $tagfile = newpagefile(tagpage($tag), $config{default_pageext}); $tagfile=~s/^\///; - return if (! add_autofile($tagfile, "tag")); + add_autofile($tagfile, sub { + debug(sprintf(gettext("creating tag page %s"), $tag)); - debug(sprintf(gettext("creating tag page %s"), $tag)); - - my $template=template("autotag.tmpl"); - $template->param(tag => $tag); - writefile($tagfile, $config{srcdir}, $template->output); + my $template=template("autotag.tmpl"); + $template->param(tag => $tag); + writefile($tagfile, $config{srcdir}, $template->output); + }); } } diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index c80030deb..83242a197 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -680,6 +680,37 @@ sub render_backlinks ($) { } } +sub gen_autofile ($$$) { + my $autofile=shift; + my $pages=shift; + my $del=shift; + + if (srcfile($autofile, 1)) { + return 0; + } + + my ($file, $page) = verify_src_file("$config{srcdir}/$autofile", $config{srcdir}); + + if ((!defined $file) || + (exists $wikistate{$autofiles{$autofile}{plugin}}{autofile_deleted})) { + return 0; + } + + if ($pages->{$page}) { + return 0; + } + + if (grep { $_ eq $file } @$del) { + $wikistate{$autofiles{$autofile}{generator}}{autofile_deleted}=1; + return 0; + } + + $autofiles{$autofile}{generator}->(); + $pages->{$page}=1; + return 1; +} + + sub refresh () { srcdir_check(); run_hooks(refresh => sub { shift->() }); @@ -689,26 +720,19 @@ sub refresh () { my ($changed, $internal_changed)=find_changed($files); run_hooks(needsbuild => sub { shift->($changed) }); my $oldlink_targets=calculate_old_links($changed, $del); - %del_hash = map { $_ => 1 } @{$del}; foreach my $file (@$changed) { scan($file); } - while (my $autofile = shift @{[keys %autofiles]}) { - my $plugin=$autofiles{$autofile}; - my $page=pagename($autofile); - if ($pages->{$page}) { - debug(sprintf(gettext("%s has multiple possible source pages"), $page)); + foreach my $autofile (keys %autofiles) { + if (gen_autofile($autofile, $pages, $del)) { + push @{$files}, $autofile; + push @{$new}, $autofile if find_new_files([$autofile]); + push @{$changed}, $autofile if find_changed([$autofile]); + + scan($autofile); } - $pages->{$page}=1; - - push @{$files}, $autofile; - push @{$new}, $autofile if find_new_files([$autofile]); - push @{$changed}, $autofile if find_changed([$autofile]); - - scan($autofile); - delete $autofiles{$autofile}; } calculate_links(); -- cgit v1.2.3 From c721a9ef872db85b26d430a2098234a4fca6ec51 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 13:41:06 -0400 Subject: my autotag branch --- .../auto-create_tag_pages_according_to_a_template.mdwn | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index def55f3ee..867306f0d 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -269,14 +269,12 @@ wrong direction. >> True. I'll do that. --[[David_Riebenbauer]] -> Seems that `%autofiles` stores plugin names as keys, but never -> really uses them. So it could just as easily be an array. -> -> I'd be happy if the `%del_hash` global were not needed. -> Looks like it could be avoided by moving the checks -> that `add_autofile` does into the autofile handling loop in -> `Render`. (Also, that loop should probably be in its own -> function anyway.) --[[Joey]] +>> I've pushed an autotag branch of my own, which refactors +>> things a bit. It is untested so far though. --[[Joey]] +>> +>> * `verify_src_file` only called from Render.pm +>> * Gets rid of `%del_files`. +>> * Uses `%wikistate`. [f3abeac919c4736429bd3362af6edf51ede8e7fe]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f3abeac919c4736429bd3362af6edf51ede8e7fe (commitdiff for f3abeac919c4736429bd3362af6edf51ede8e7fe) [4af4d26582f0c2b915d7102fb4a604b176385748]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=4af4d26582f0c2b915d7102fb4a604b176385748 (commitdiff for 4af4d26582f0c2b915d7102fb4a604b176385748) -- cgit v1.2.3 From 9fbef7e1d2c4e8bbaf3eaf89885f18b88edbe429 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 13:42:50 -0400 Subject: reformat --- doc/todo/auto-create_tag_pages_according_to_a_template.mdwn | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index 867306f0d..ed681ac4d 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -269,12 +269,13 @@ wrong direction. >> True. I'll do that. --[[David_Riebenbauer]] ->> I've pushed an autotag branch of my own, which refactors ->> things a bit. It is untested so far though. --[[Joey]] ->> ->> * `verify_src_file` only called from Render.pm ->> * Gets rid of `%del_files`. ->> * Uses `%wikistate`. +[[!template id=gitbranch branch=origin/autotag author="[[Joey]]"]] +I've pushed an autotag branch of my own, which refactors +things a bit. It is untested so far though. --[[Joey]] + +* `verify_src_file` only called from Render.pm +* Gets rid of `%del_files`. +* Uses `%wikistate`. [f3abeac919c4736429bd3362af6edf51ede8e7fe]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f3abeac919c4736429bd3362af6edf51ede8e7fe (commitdiff for f3abeac919c4736429bd3362af6edf51ede8e7fe) [4af4d26582f0c2b915d7102fb4a604b176385748]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=4af4d26582f0c2b915d7102fb4a604b176385748 (commitdiff for 4af4d26582f0c2b915d7102fb4a604b176385748) -- cgit v1.2.3 From a1aa71efc9d1db42b425f43afc1ff4a37c4c0f3a Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 13:49:20 -0400 Subject: document the gitbranch template --- doc/git.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/git.mdwn b/doc/git.mdwn index 55967e543..0f280fb35 100644 --- a/doc/git.mdwn +++ b/doc/git.mdwn @@ -65,6 +65,10 @@ think about merging them. This is recommended. :-) ## branches +In order to refer to a branch in one of the above git repositories, for +example when submitting a [[patch]], you can use the +[[templates/gitbranch]] template. + Some of the branches included in the main repository include: * `gallery` contains the [[todo/Gallery]] plugin. It's not yet merged -- cgit v1.2.3 From 9ff5174f1164cb2d31ff487a9c84d08559b81d39 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij <jelmer@samba.org> Date: Sat, 17 Apr 2010 18:45:23 +0200 Subject: Fix get_ctime implementation in Bazaar plugin, add get_mtime implementation. --- IkiWiki/Plugin/bzr.pm | 28 +++++++++++++++++++--------- t/bazaar.t | 5 ++++- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/IkiWiki/Plugin/bzr.pm b/IkiWiki/Plugin/bzr.pm index f79ca7c8f..3712302ce 100644 --- a/IkiWiki/Plugin/bzr.pm +++ b/IkiWiki/Plugin/bzr.pm @@ -286,14 +286,8 @@ sub rcs_diff ($) { } } -sub rcs_getctime ($) { - my ($file) = @_; - - # XXX filename passes through the shell here, should try to avoid - # that just in case - my @cmdline = ("bzr", "log", "--limit", '1', "$config{srcdir}/$file"); - open (my $out, "@cmdline |"); - +sub extract_timestamp ($) { + my ($out) = @_; my @log = bzr_log($out); if (length @log < 1) { @@ -307,8 +301,24 @@ sub rcs_getctime ($) { return $ctime; } +sub rcs_getctime ($) { + my ($file) = @_; + + # XXX filename passes through the shell here, should try to avoid + # that just in case + my @cmdline = ("bzr", "log", "--forward", "--limit", '1', "$config{srcdir}/$file"); + open (my $out, "@cmdline |"); + return extract_timestamp($out); +} + sub rcs_getmtime ($) { - error "rcs_getmtime is not implemented for bzr\n"; # TODO + my ($file) = @_; + + # XXX filename passes through the shell here, should try to avoid + # that just in case + my @cmdline = ("bzr", "log", "--limit", '1', "$config{srcdir}/$file"); + open (my $out, "@cmdline |"); + return extract_timestamp($out); } 1 diff --git a/t/bazaar.t b/t/bazaar.t index 2ca44a65e..0bdd883d5 100755 --- a/t/bazaar.t +++ b/t/bazaar.t @@ -12,7 +12,7 @@ BEGIN { } } } -use Test::More tests => 16; +use Test::More tests => 17; BEGIN { use_ok("IkiWiki"); } @@ -60,6 +60,9 @@ is($changes[1]{pages}[0]{"page"}, "test1"); my $ctime = IkiWiki::rcs_getctime("test2.mdwn"); ok($ctime >= time() - 20); +my $mtime = IkiWiki::rcs_getmtime("test2.mdwn"); +ok($mtime >= time() - 20); + writefile('test3.mdwn', $config{srcdir}, $test1); IkiWiki::rcs_add("test3.mdwn"); IkiWiki::rcs_rename("test3.mdwn", "test4.mdwn"); -- cgit v1.2.3 From 2f9504a10d87f6950325dcea2d8a1f5a5d3eefe4 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 13:55:32 -0400 Subject: bzr: changelog and refactor --- IkiWiki/Plugin/bzr.pm | 20 ++++++++------------ debian/changelog | 2 ++ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/IkiWiki/Plugin/bzr.pm b/IkiWiki/Plugin/bzr.pm index 3712302ce..e7c1b8d8e 100644 --- a/IkiWiki/Plugin/bzr.pm +++ b/IkiWiki/Plugin/bzr.pm @@ -286,8 +286,10 @@ sub rcs_diff ($) { } } -sub extract_timestamp ($) { - my ($out) = @_; +sub extract_timestamp (@) { + # XXX filename passes through the shell here, should try to avoid + # that just in case + open (my $out, "@_ |"); my @log = bzr_log($out); if (length @log < 1) { @@ -297,28 +299,22 @@ sub extract_timestamp ($) { eval q{use Date::Parse}; error($@) if $@; - my $ctime = str2time($log[0]->{"timestamp"}); - return $ctime; + my $time = str2time($log[0]->{"timestamp"}); + return $time; } sub rcs_getctime ($) { my ($file) = @_; - # XXX filename passes through the shell here, should try to avoid - # that just in case my @cmdline = ("bzr", "log", "--forward", "--limit", '1', "$config{srcdir}/$file"); - open (my $out, "@cmdline |"); - return extract_timestamp($out); + return extract_timestamp(@cmdline); } sub rcs_getmtime ($) { my ($file) = @_; - # XXX filename passes through the shell here, should try to avoid - # that just in case my @cmdline = ("bzr", "log", "--limit", '1', "$config{srcdir}/$file"); - open (my $out, "@cmdline |"); - return extract_timestamp($out); + return extract_timestamp(@cmdline); } 1 diff --git a/debian/changelog b/debian/changelog index 01d650290..b7ec99463 100644 --- a/debian/changelog +++ b/debian/changelog @@ -60,6 +60,8 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low timestamps on basewiki files shipped in the deb are sane. * autoindex: Switch to using %wikistate instead of abusing $pagestate{index}. + * bzr: Support rcs_getmtime, and fix rcs_getctime implementation + (Jelmer Vernooij) -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 -- cgit v1.2.3 From 6f485b8f459549521541af7bb087185dada112bf Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 13:57:59 -0400 Subject: note that tla plugin is not being maintained --- doc/rcs/tla.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/rcs/tla.mdwn b/doc/rcs/tla.mdwn index cad5d51f4..79eecd627 100644 --- a/doc/rcs/tla.mdwn +++ b/doc/rcs/tla.mdwn @@ -2,6 +2,9 @@ [GNU](http://www.gnu.org/) [Arch](http://www.gnuarch.org/) revision control system. Ikiwiki supports storing a wiki in tla. +Warning: Since tla is not being maintained, neither is this plugin, and +using ikiwiki with tla is not recommended. + Ikiwiki can run as a [[post-commit]] hook to update a wiki whenever commits come in. When running as a [[cgi]] with tla, ikiwiki automatically commits edited pages to the Arch repostory, and uses the Arch -- cgit v1.2.3 From cd8ec309d26cbc3f634328cb90e4c9d38b404632 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 13:58:31 -0400 Subject: bzr getmtime done --- doc/rcs.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/rcs.mdwn b/doc/rcs.mdwn index 450d16800..8b9929920 100644 --- a/doc/rcs.mdwn +++ b/doc/rcs.mdwn @@ -28,7 +28,7 @@ auto.setup |yes |yes |incomplete|yes |incomplete |yes `rcs_remove` |yes |yes |yes |yes |no |yes |no |yes `rcs_diff` |yes |yes |yes |yes |no |yes |yes |yes `rcs_getctime` |fast |slow |slow |slow |slow |slow |slow |slow -`rcs_getmtime` |fast |slow |no |no |no |no |no |no +`rcs_getmtime` |fast |slow |slow |no |no |no |no |no anonymous push |yes |no |no |no |no |no |no |no conflict handling |yes |yes |yes |buggy |yes |yes |yes |yes """]] -- cgit v1.2.3 From e289e0b4ba48d01e24586dbdcaeda367763edd67 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 14:00:25 -0400 Subject: recommend git --- doc/rcs.mdwn | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/rcs.mdwn b/doc/rcs.mdwn index 8b9929920..248d93024 100644 --- a/doc/rcs.mdwn +++ b/doc/rcs.mdwn @@ -6,8 +6,7 @@ histories. Ikiwiki started out supporting only [[Subversion|svn]], but the interface ikiwiki uses to a revision control system is sufficiently simple and generic that it can be adapted to work with many systems by writing a -[[plugin|plugins/write]]. [[Subversion|svn]] is still a recommended choice; -[[git]] is another well-tested option. +[[plugin|plugins/write]]. These days, most people use [[git]]. While all supported revision control systems work well enough for basic use, some advanced or special features are not supported in all of them. -- cgit v1.2.3 From ca02c57ee47d4c05946c0c34eee32a0ad4ec6b01 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 14:07:12 -0400 Subject: document add_autofile --- doc/plugins/write.mdwn | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 0bf6fcf48..e33c99421 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -966,6 +966,22 @@ added. Pass it the page that contains the link, and the link text. An optional third parameter sets the link type. If not specified, it is an ordinary [[ikiwiki/WikiLink]]. +### `add_autofile($$$)` + +Sometimes you may want to add a file to the `srcdir`. For example, +[[plugins/tag]] pages can be automatically created as needed. This function +can be used to do that. + +The three parameters are the filename to add, the name of the plugin, +and a callback function. The callback will be called if it is appropriate +to automatically add the file, and should then take care of creating it, +and doing anything else it needs to (such as checking it into revision +control). Note that the callback may not always be called. For example, +if an automatically added file is deleted by the user, ikiwiki will avoid +re-adding it again. + +This function needs to be called during the scan hook, or earlier to work. + ## Miscellaneous ### Internal use pages -- cgit v1.2.3 From adc196a8b53c0b0b4f9ec4cbcea85ba37e421b59 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 15:40:39 -0400 Subject: tag_autocreate fixups Fix style of prompt. Optional to rebuild when it is changed. (Needed to get new all missing tags) --- IkiWiki/Plugin/tag.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index 7a918a4e8..1145a9f13 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -37,9 +37,9 @@ sub getsetup () { tag_autocreate => { type => "boolean", example => 0, - description => "Autocreate new tag pages", + description => "autocreate new tag pages?", safe => 1, - rebuild => 1, + rebuild => undef, }, } @@ -66,7 +66,7 @@ sub taglink ($$$;@) { sub gentag ($) { my $tag=shift; - if (defined $config{tag_autocreate} && $config{tag_autocreate}) { + if ($config{tag_autocreate}) { my $tagfile = newpagefile(tagpage($tag), $config{default_pageext}); $tagfile=~s/^\///; -- cgit v1.2.3 From 3651e6263c55a0b6184fe46c856a96740621361f Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 15:43:58 -0400 Subject: fix autofile call --- IkiWiki/Plugin/tag.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index 1145a9f13..957b012ef 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -70,7 +70,7 @@ sub gentag ($) { my $tagfile = newpagefile(tagpage($tag), $config{default_pageext}); $tagfile=~s/^\///; - add_autofile($tagfile, sub { + add_autofile($tagfile, "tag", sub { debug(sprintf(gettext("creating tag page %s"), $tag)); my $template=template("autotag.tmpl"); -- cgit v1.2.3 From b00d8771cc212349ca886401bc68facdf08e0d3c Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 15:48:00 -0400 Subject: call gentag for taglinks too --- IkiWiki/Plugin/tag.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index 957b012ef..9f6df5fc4 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -45,7 +45,7 @@ sub getsetup () { sub tagpage ($) { my $tag=shift; - + if ($tag !~ m{^\.?/} && defined $config{tagbase}) { $tag="/".$config{tagbase}."/".$tag; @@ -96,7 +96,6 @@ sub preprocess_tag (@) { # hidden WikiLink add_link($page, tagpage($tag), 'tag'); - # add tagpage if necessary gentag($tag); } @@ -112,12 +111,14 @@ sub preprocess_taglink (@) { if (/(.*)\|(.*)/) { my $tag=linkpage($2); add_link($params{page}, tagpage($tag), 'tag'); + gentag($tag); return taglink($params{page}, $params{destpage}, $tag, linktext => pagetitle($1)); } else { my $tag=linkpage($_); add_link($params{page}, tagpage($tag), 'tag'); + gentag($tag); return taglink($params{page}, $params{destpage}, $tag); } } -- cgit v1.2.3 From 2fc342b048d23d8355631000b7285fb5d26b258a Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 16:01:41 -0400 Subject: fix autotag behavior for relative tags A tag like ./foo is searched for relative to the tagging page. However, if multiple pages use such a tag, the only one sure to be in common is in the root, so autocreate it there to avoid scattering redunadant autocreated tags around the tree. (This is probably not ideal.) Also renamed the tagpage and taglink functions for clarity. --- IkiWiki/Plugin/tag.pm | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index 9f6df5fc4..d2a3d4dfd 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -43,7 +43,7 @@ sub getsetup () { }, } -sub tagpage ($) { +sub taglink ($) { my $tag=shift; if ($tag !~ m{^\.?/} && @@ -55,20 +55,28 @@ sub tagpage ($) { return $tag; } -sub taglink ($$$;@) { +sub htmllink_tag ($$$;@) { my $page=shift; my $destpage=shift; my $tag=shift; my %opts=@_; - return htmllink($page, $destpage, tagpage($tag), %opts); + return htmllink($page, $destpage, taglink($tag), %opts); } sub gentag ($) { my $tag=shift; + if ($config{tag_autocreate}) { - my $tagfile = newpagefile(tagpage($tag), $config{default_pageext}); - $tagfile=~s/^\///; + my $tagpage=taglink($tag); + if ($tagpage=~/^\.\/(.*)/) { + $tagpage=$1; + } + else { + $tagpage=~s/^\///; + } + + my $tagfile = newpagefile($tagpage, $config{default_pageext}); add_autofile($tagfile, "tag", sub { debug(sprintf(gettext("creating tag page %s"), $tag)); @@ -94,7 +102,7 @@ sub preprocess_tag (@) { $tag=linkpage($tag); # hidden WikiLink - add_link($page, tagpage($tag), 'tag'); + add_link($page, taglink($tag), 'tag'); gentag($tag); } @@ -110,16 +118,16 @@ sub preprocess_taglink (@) { return join(" ", map { if (/(.*)\|(.*)/) { my $tag=linkpage($2); - add_link($params{page}, tagpage($tag), 'tag'); + add_link($params{page}, taglink($tag), 'tag'); gentag($tag); - return taglink($params{page}, $params{destpage}, $tag, + return htmllink_tag($params{page}, $params{destpage}, $tag, linktext => pagetitle($1)); } else { my $tag=linkpage($_); - add_link($params{page}, tagpage($tag), 'tag'); + add_link($params{page}, taglink($tag), 'tag'); gentag($tag); - return taglink($params{page}, $params{destpage}, $tag); + return htmllink_tag($params{page}, $params{destpage}, $tag); } } grep { @@ -137,7 +145,7 @@ sub pagetemplate (@) { $template->param(tags => [ map { - link => taglink($page, $destpage, $_, rel => "tag") + link => htmllink_tag($page, $destpage, $_, rel => "tag") }, sort keys %$tags ]) if defined $tags && %$tags && $template->query(name => "tags"); @@ -153,7 +161,7 @@ sub pagetemplate (@) { package IkiWiki::PageSpec; sub match_tagged ($$;@) { - return match_link($_[0], IkiWiki::Plugin::tag::tagpage($_[1]), linktype => 'tag'); + return match_link($_[0], IkiWiki::Plugin::tag::taglink($_[1]), linktype => 'tag'); } 1 -- cgit v1.2.3 From f78e6798aa5482e534d7254b87a7b58e9fcc0145 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 16:08:37 -0400 Subject: move decode_utf8 closer to reason for it Filenames need to be decoded, as File::Find does not provide them in decoded form, but other callers of verify_src_file will be using utf8. --- IkiWiki/Render.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 83242a197..fff9dcce6 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -282,7 +282,7 @@ sub srcdir_check () { } sub verify_src_file ($$) { - my $file=decode_utf8(shift); + my $file=shift; my $dir=shift; return if -l $file || -d _; @@ -310,7 +310,7 @@ sub find_src_files () { find({ no_chdir => 1, wanted => sub { - my ($file, $page) = verify_src_file($_, $config{srcdir}); + my ($file, $page) = verify_src_file(decode_utf8($_), $config{srcdir}); if (defined $file) { push @files, $file; if ($pages{$page}) { @@ -324,7 +324,7 @@ sub find_src_files () { find({ no_chdir => 1, wanted => sub { - my ($file, $page) = verify_src_file($_, $dir); + my ($file, $page) = verify_src_file(decode_utf8($_), $dir); if (defined $file) { # avoid underlaydir override # attacks; see security.mdwn -- cgit v1.2.3 From 831b891abdc68d1b111381d6559cebd5a9b6c78f Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 16:14:15 -0400 Subject: move File::Find control back into its code blocks Ok, this is longer, but features less scary action at a distance. --- IkiWiki/Render.pm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index fff9dcce6..41f179a50 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -291,7 +291,6 @@ sub verify_src_file ($$) { my $page = pagename($file); if (! exists $pagesources{$page} && file_pruned($file)) { - $File::Find::prune=1; return; } @@ -318,6 +317,9 @@ sub find_src_files () { } $pages{$page}=1; } + else { + $File::Find::prune=1; + } }, }, $config{srcdir}); foreach my $dir (@{$config{underlaydirs}}, $config{underlaydir}) { @@ -336,6 +338,9 @@ sub find_src_files () { } } } + else { + $File::Find::prune=1; + } }, }, $dir); }; -- cgit v1.2.3 From 59ceeb5621ae0ae2bcb7501c6ac0c7a06562a7cc Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 17:15:07 -0400 Subject: improve docs --- doc/plugins/write.mdwn | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index e33c99421..5190a26ed 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -968,9 +968,9 @@ it is an ordinary [[ikiwiki/WikiLink]]. ### `add_autofile($$$)` -Sometimes you may want to add a file to the `srcdir`. For example, -[[plugins/tag]] pages can be automatically created as needed. This function -can be used to do that. +Sometimes you may want to add a file to the `srcdir` as a result of content +of other pages. For example, [[plugins/tag]] pages can be automatically +created as needed. This function can be used to do that. The three parameters are the filename to add, the name of the plugin, and a callback function. The callback will be called if it is appropriate @@ -980,7 +980,8 @@ control). Note that the callback may not always be called. For example, if an automatically added file is deleted by the user, ikiwiki will avoid re-adding it again. -This function needs to be called during the scan hook, or earlier to work. +This function needs to be called during the scan hook, or earlier in the +build process, in order to add the file early enough for it to be built. ## Miscellaneous -- cgit v1.2.3 From a97964688b73d0a3237c798dce3fb064ff29ff11 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 17 Apr 2010 19:05:40 -0400 Subject: unfinished file_prune revamp Many calls to file_prune were incorrectly calling it with 2 parameters. In cases where the filename being checked is relative to the srcdir, that is not needed. Made absolute filenames be pruned. (This won't work for the 2 parameter call style.) --- IkiWiki.pm | 2 +- IkiWiki/Plugin/attachment.pm | 2 +- IkiWiki/Plugin/comments.pm | 4 ++-- IkiWiki/Plugin/editpage.pm | 4 ++-- IkiWiki/Plugin/rename.pm | 5 ++--- IkiWiki/Receive.pm | 2 +- t/file_pruned.t | 40 +++++++++++++++++++++++++++++++++++++--- 7 files changed, 46 insertions(+), 13 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index b37b1f344..a5f83ac7a 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -355,7 +355,7 @@ sub getsetup () { }, wiki_file_prune_regexps => { type => "internal", - default => [qr/(^|\/)\.\.(\/|$)/, qr/^\./, qr/\/\./, + default => [qr/(^|\/)\.\.(\/|$)/, qr/^\//, qr/^\./, qr/\/\./, qr/\.x?html?$/, qr/\.ikiwiki-new$/, qr/(^|\/).svn\//, qr/.arch-ids\//, qr/{arch}\//, qr/(^|\/)_MTN\//, qr/(^|\/)_darcs\//, diff --git a/IkiWiki/Plugin/attachment.pm b/IkiWiki/Plugin/attachment.pm index ad1dd9bca..8c3ff887a 100644 --- a/IkiWiki/Plugin/attachment.pm +++ b/IkiWiki/Plugin/attachment.pm @@ -137,7 +137,7 @@ sub formbuilder (@) { $filename=linkpage(IkiWiki::possibly_foolish_untaint( attachment_location($form->field('page')). IkiWiki::basename($filename))); - if (IkiWiki::file_pruned($filename, $config{srcdir})) { + if (IkiWiki::file_pruned($filename)) { error(gettext("bad attachment filename")); } diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 0aa043215..1c219b6c6 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -338,7 +338,7 @@ sub editcomment ($$) { my $page = $form->field('page'); $page = IkiWiki::possibly_foolish_untaint($page); if (! defined $page || ! length $page || - IkiWiki::file_pruned($page, $config{srcdir})) { + IkiWiki::file_pruned($page)) { error(gettext("bad page name")); } @@ -548,7 +548,7 @@ sub commentmoderation ($$) { # pending comment before untainting. my ($f)= $id =~ /$config{wiki_file_regexp}/; if (! defined $f || ! length $f || - IkiWiki::file_pruned($f, $config{srcdir})) { + IkiWiki::file_pruned($f)) { error("illegal file"); } diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm index 44fe5514a..ee1de8eaa 100644 --- a/IkiWiki/Plugin/editpage.pm +++ b/IkiWiki/Plugin/editpage.pm @@ -94,7 +94,7 @@ sub cgi_editpage ($$) { $page=possibly_foolish_untaint($page); my $absolute=($page =~ s#^/+##); if (! defined $page || ! length $page || - file_pruned($page, $config{srcdir})) { + file_pruned($page)) { error(gettext("bad page name")); } @@ -220,7 +220,7 @@ sub cgi_editpage ($$) { my $best_loc; if (! defined $from || ! length $from || $from ne $form->field('from') || - file_pruned($from, $config{srcdir}) || + file_pruned($from) || $from=~/^\// || $absolute || $form->submitted) { diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm index 1a9da6363..69e615ead 100644 --- a/IkiWiki/Plugin/rename.pm +++ b/IkiWiki/Plugin/rename.pm @@ -63,9 +63,8 @@ sub check_canrename ($$$$$$) { error(gettext("no change to the file name was specified")); } - # Must be a legal filename, and not absolute. - if (IkiWiki::file_pruned($destfile, $config{srcdir}) || - $destfile=~/^\//) { + # Must be a legal filename. + if (IkiWiki::file_pruned($destfile)) { error(sprintf(gettext("illegal name"))); } diff --git a/IkiWiki/Receive.pm b/IkiWiki/Receive.pm index cd94d0938..ae1bd8bef 100644 --- a/IkiWiki/Receive.pm +++ b/IkiWiki/Receive.pm @@ -82,7 +82,7 @@ sub test () { my ($file)=$change->{file}=~/$config{wiki_file_regexp}/; $file=IkiWiki::possibly_foolish_untaint($file); if (! defined $file || ! length $file || - IkiWiki::file_pruned($file, $config{srcdir})) { + IkiWiki::file_pruned($file)) { error(gettext("bad file name %s"), $file); } diff --git a/t/file_pruned.t b/t/file_pruned.t index f9c1c257e..4335ed917 100755 --- a/t/file_pruned.t +++ b/t/file_pruned.t @@ -1,41 +1,75 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 27; +use Test::More tests => 54; BEGIN { use_ok("IkiWiki"); } %config=IkiWiki::defaultconfig(); ok(IkiWiki::file_pruned("src/.htaccess", "src")); +ok(IkiWiki::file_pruned(".htaccess")); ok(IkiWiki::file_pruned("src/.ikiwiki/", "src")); +ok(IkiWiki::file_pruned(".ikiwiki/")); ok(IkiWiki::file_pruned("src/.ikiwiki/index", "src")); +ok(IkiWiki::file_pruned(".ikiwiki/index")); ok(IkiWiki::file_pruned("src/CVS/foo", "src")); +ok(IkiWiki::file_pruned("CVS/foo")); ok(IkiWiki::file_pruned("src/subdir/CVS/foo", "src")); +ok(IkiWiki::file_pruned("subdir/CVS/foo")); ok(IkiWiki::file_pruned("src/.svn", "src")); +ok(IkiWiki::file_pruned(".svn")); ok(IkiWiki::file_pruned("src/subdir/.svn", "src")); +ok(IkiWiki::file_pruned("subdir/.svn")); ok(IkiWiki::file_pruned("src/subdir/.svn/foo", "src")); +ok(IkiWiki::file_pruned("subdir/.svn/foo")); ok(IkiWiki::file_pruned("src/.git", "src")); +ok(IkiWiki::file_pruned(".git")); ok(IkiWiki::file_pruned("src/subdir/.git", "src")); +ok(IkiWiki::file_pruned("subdir/.git")); ok(IkiWiki::file_pruned("src/subdir/.git/foo", "src")); +ok(IkiWiki::file_pruned("subdir/.git/foo")); ok(! IkiWiki::file_pruned("src/svn/fo", "src")); +ok(! IkiWiki::file_pruned("svn/fo")); ok(! IkiWiki::file_pruned("src/git", "src")); +ok(! IkiWiki::file_pruned("git")); ok(! IkiWiki::file_pruned("src/index.mdwn", "src")); +ok(! IkiWiki::file_pruned("index.mdwn")); ok(! IkiWiki::file_pruned("src/index.", "src")); +ok(! IkiWiki::file_pruned("index.")); # these are ok because while the filename starts with ".", the canonpathed # version does not ok(! IkiWiki::file_pruned("src/.", "src")); ok(! IkiWiki::file_pruned("src/./", "src")); +# OTOH, without a srcdir, no canonpath, so they're not allowed. +ok(IkiWiki::file_pruned(".")); +ok(IkiWiki::file_pruned("./")); + +# Without a srcdir, absolute filenames are not allowed. +ok(IkiWiki::file_pruned("/etc/passwd")); +ok(IkiWiki::file_pruned("//etc/passwd")); +ok(IkiWiki::file_pruned("/")); +ok(IkiWiki::file_pruned("//")); +ok(IkiWiki::file_pruned("///")); + ok(IkiWiki::file_pruned("src/..", "src")); +ok(IkiWiki::file_pruned("..")); ok(IkiWiki::file_pruned("src/../", "src")); +ok(IkiWiki::file_pruned("../")); ok(IkiWiki::file_pruned("src/../", "src")); +ok(IkiWiki::file_pruned("../")); +# This is perhaps counterintuitive. ok(! IkiWiki::file_pruned("src", "src")); + +# Dots, etc, in the srcdir are ok. ok(! IkiWiki::file_pruned("/.foo/src", "/.foo/src")); ok(IkiWiki::file_pruned("/.foo/src/.foo/src", "/.foo/src")); ok(! IkiWiki::file_pruned("/.foo/src/index.mdwn", "/.foo/src/index.mdwn")); -ok(IkiWiki::file_pruned("x/y/foo.dpkg-tmp", "src")); -ok(IkiWiki::file_pruned("x/y/foo.ikiwiki-new", "src")); +ok(IkiWiki::file_pruned("src/y/foo.dpkg-tmp", "src")); +ok(IkiWiki::file_pruned("y/foo.dpkg-tmp")); +ok(IkiWiki::file_pruned("src/y/foo.ikiwiki-new", "src")); +ok(IkiWiki::file_pruned("y/foo.ikiwiki-new")); -- cgit v1.2.3 From 56bf9c04a290cfce6270f974c1d48be8a5d54942 Mon Sep 17 00:00:00 2001 From: PeteG <PeteG@web> Date: Sun, 18 Apr 2010 12:33:51 +0000 Subject: --- doc/peteg.mdwn | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 doc/peteg.mdwn diff --git a/doc/peteg.mdwn b/doc/peteg.mdwn new file mode 100644 index 000000000..90593c16f --- /dev/null +++ b/doc/peteg.mdwn @@ -0,0 +1,7 @@ +I'm adding some plugins to Ikiwiki to support a bioacoustic wiki. See here: + +<http://bioacoustics.cse.unsw.edu.au/wiki/> + +Personal home page: + +http://peteg.org/ -- cgit v1.2.3 From 472694b8b420be128c1d9d0ba8393ea6efff8716 Mon Sep 17 00:00:00 2001 From: PeteG <PeteG@web> Date: Sun, 18 Apr 2010 12:34:20 +0000 Subject: --- doc/peteg.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/peteg.mdwn b/doc/peteg.mdwn index 90593c16f..4e2face0e 100644 --- a/doc/peteg.mdwn +++ b/doc/peteg.mdwn @@ -4,4 +4,4 @@ I'm adding some plugins to Ikiwiki to support a bioacoustic wiki. See here: Personal home page: -http://peteg.org/ +<http://peteg.org/> -- cgit v1.2.3 From 63e6c00890a11144f8d035f7052a6229227fce52 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Mon, 19 Apr 2010 02:23:12 +0000 Subject: response to the further thoughts --- doc/todo/Multiple_categorization_namespaces.mdwn | 26 ++++++++++++++++-------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/doc/todo/Multiple_categorization_namespaces.mdwn b/doc/todo/Multiple_categorization_namespaces.mdwn index ee3bbd88d..1861d860c 100644 --- a/doc/todo/Multiple_categorization_namespaces.mdwn +++ b/doc/todo/Multiple_categorization_namespaces.mdwn @@ -56,17 +56,25 @@ and the tags would appear at the bottom of the post, the Rubrica next to the tit Aside from the name of the plugin (and thus of the main directive), which could be `tag`, `meta`, `field` or whatever (maybe extending `meta` would be the most sensible choice), the features we want are - 1. allow multiple values per type/attribute/field/whatever (fields currently only allows one) - 2. allow both hidden and visible references (à la tag vs taglink) - 3. allow each type/attribute/field to be exposed under multiple queries (e.g. tags and categories; this is mostly important for backwards compatibility, not sure if it might have other uses too) - 4. allow arbitrary types/attributes/fields/whatever (even 'undefined' ones) +1. allow multiple values per type/attribute/field/whatever (fields currently only allows one) + * Agreed about multiple values; I've been considering whether I should add that to `field`. -- K.A. +2. allow both hidden and visible references (a la tag vs taglink) + * Hidden and visible references; that's fair enough too. My approach with `ymlfront` and `getfield` is that the YAML code is hidden, and the display is done with `getfield`, but there's no reason not to use additional approaches. -- K.A. +3. allow each type/attribute/field to be exposed under multiple queries (e.g. tags and categories; this is mostly important for backwards compatibility, not sure if it might have other uses too) + * I'm not sure what you mean here. -- K.A. +4. allow arbitrary types/attributes/fields/whatever (even 'undefined' ones) + * Are you saying that these must be typed, or are you saying that they can be user-defined? -- K.A. Each type/attribute/field/whatever (predefined, user-defined, arbitrary) would thus have the following parameters: - * `directive` : the name of the directive that can be used to set the value as a hidden reference; we can discuss whether, for pre- or user-defined types, it being undef means no directive or a default directive matching the attribute name would be defined. - * `linkdirective` : the name of the directive that can be used for a visible reference; no such directive would be defined by default - * `linktype` : link type for (hidden and visible) references - * `linkbase` : akin to the tagbase parameter - * `queries` : list of template queries this type/attribute/field/whatever is exposed to +* `directive` : the name of the directive that can be used to set the value as a hidden reference; we can discuss whether, for pre- or user-defined types, it being undef means no directive or a default directive matching the attribute name would be defined. + * I still want there to be able to be enough flexibility in the concept to enable plugins such as `yamlfront`, which sets the data using YAML format, rather than using directives. -- K.A. +* `linkdirective` : the name of the directive that can be used for a visible reference; no such directive would be defined by default +* `linktype` : link type for (hidden and visible) references + * Is this the equivalent to "field name"? -- K.A. +* `linkbase` : akin to the tagbase parameter + * Is this a field-name -> directory mapping? -- K.A. +* `queries` : list of template queries this type/attribute/field/whatever is exposed to + * I'm not sure what you mean here. -- K.A. Where this approach is limiting is on the kind of data that is passed to (template) queries. The value of the metadata fields might need some massaging (e.g. compare how tags are passed to tags queries vs cateogires queries). I have problems on picturing an easy way to make this possible user-side (i.e. via templates and not in Perl modules). Suggestions welcome. -- cgit v1.2.3 From 99cdd38dd54047d0e79dbf65d58ba11ee38f2c92 Mon Sep 17 00:00:00 2001 From: "http://oblomov.myopenid.com/" <http://oblomov.myopenid.com/@web> Date: Mon, 19 Apr 2010 08:36:38 +0000 Subject: Respond --- doc/todo/Multiple_categorization_namespaces.mdwn | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/todo/Multiple_categorization_namespaces.mdwn b/doc/todo/Multiple_categorization_namespaces.mdwn index 1861d860c..ae35e8dfe 100644 --- a/doc/todo/Multiple_categorization_namespaces.mdwn +++ b/doc/todo/Multiple_categorization_namespaces.mdwn @@ -62,19 +62,25 @@ Aside from the name of the plugin (and thus of the main directive), which could * Hidden and visible references; that's fair enough too. My approach with `ymlfront` and `getfield` is that the YAML code is hidden, and the display is done with `getfield`, but there's no reason not to use additional approaches. -- K.A. 3. allow each type/attribute/field to be exposed under multiple queries (e.g. tags and categories; this is mostly important for backwards compatibility, not sure if it might have other uses too) * I'm not sure what you mean here. -- K.A. + * Typical example is tags: they are accessible both as `tags` and as `categories`, although the way they are presented changes a little -- G.B. 4. allow arbitrary types/attributes/fields/whatever (even 'undefined' ones) * Are you saying that these must be typed, or are you saying that they can be user-defined? -- K.A. + * I am saying that the user should be able to define (e.g. in the config) some set of types/fields/attributes/whatever, following the specification illustrated below, but also be able to use something like `\[[!meta somefield="somevalue"]]` where `somefield` was never defined before. In this case `somefield` will have some default values for the properties described in the spec below. -- G.B. Each type/attribute/field/whatever (predefined, user-defined, arbitrary) would thus have the following parameters: * `directive` : the name of the directive that can be used to set the value as a hidden reference; we can discuss whether, for pre- or user-defined types, it being undef means no directive or a default directive matching the attribute name would be defined. * I still want there to be able to be enough flexibility in the concept to enable plugins such as `yamlfront`, which sets the data using YAML format, rather than using directives. -- K.A. + * The possibility to use a directive does not preclude other ways of defining the field values. IOW, even if the directive `somefield` is defined, the user would still be able to use the syntax `\[[!meta somefield="somevalue"]]`, or any other syntax (such as YAML). -- G.B. * `linkdirective` : the name of the directive that can be used for a visible reference; no such directive would be defined by default * `linktype` : link type for (hidden and visible) references * Is this the equivalent to "field name"? -- K.A. + * This would be such by default, but it could be set to something different. [[Typed links|matching_different_kinds_of_links]] is a very recent ikiwiki feature. -- G.B. * `linkbase` : akin to the tagbase parameter * Is this a field-name -> directory mapping? -- K.A. + * yes, with each directory having one page per value. It might not make sense for all fields, of course -- G.B. * `queries` : list of template queries this type/attribute/field/whatever is exposed to * I'm not sure what you mean here. -- K.A. + * as mentioned before, some fields may be made accessible through different template queries, in different form. This is the case already for tags, that also come up in the `categories` query (used by Atom and RSS feeds). -- G.B. -Where this approach is limiting is on the kind of data that is passed to (template) queries. The value of the metadata fields might need some massaging (e.g. compare how tags are passed to tags queries vs cateogires queries). I have problems on picturing an easy way to make this possible user-side (i.e. via templates and not in Perl modules). Suggestions welcome. +Where this approach is limiting is on the kind of data that is passed to (template) queries. The value of the metadata fields might need some massaging (e.g. compare how tags are passed to tags queries vs cateogires queries, or also see what is done with the fields in the current `meta` plugin). I have problems on picturing an easy way to make this possible user-side (i.e. via templates and not in Perl modules). Suggestions welcome. -- cgit v1.2.3 From 1b7c455f4a4214bc9df766be4ec2b12adcf679e1 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Mon, 19 Apr 2010 16:03:53 -0400 Subject: thinking about changing how templatedir works and allowing wikitemplate files into the srcdir --- doc/todo/auto_rebuild_on_template_change.mdwn | 33 +++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 doc/todo/auto_rebuild_on_template_change.mdwn diff --git a/doc/todo/auto_rebuild_on_template_change.mdwn b/doc/todo/auto_rebuild_on_template_change.mdwn new file mode 100644 index 000000000..c4ffae178 --- /dev/null +++ b/doc/todo/auto_rebuild_on_template_change.mdwn @@ -0,0 +1,33 @@ +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.) -- cgit v1.2.3 From e1ebdda72bb14c70c9d35c29f5a6afe197623282 Mon Sep 17 00:00:00 2001 From: Svend Sorensen <svend@ciffer.net> Date: Mon, 19 Apr 2010 16:12:09 -0700 Subject: Remove www prefix from Svend's website URLs --- doc/ikiwikiusers.mdwn | 2 +- doc/users/svend.mdwn | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 4a3e41e83..cb4213405 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -120,7 +120,7 @@ Personal sites and blogs * [[Adam_Trickett|ajt]]'s home intranet/sanbox system ([Internet site & blog](http://www.iredale.net/) -- not ikiwiki yet) * [[Simon_McVittie|smcv]]'s [website](http://www.pseudorandom.co.uk/) and [blog](http://smcv.pseudorandom.co.uk/) -* Svend's [website](http://www.ciffer.net/~svend/) and [blog](http://www.ciffer.net/~svend/blog/) +* Svend's [website](http://ciffer.net/~svend/) and [blog](http://ciffer.net/~svend/blog/) * [muammar's site](http://muammar.me) * [Per Bothner's blog](http://per.bothner.com/blog/) * [Bernd Zeimetz (bzed)](http://bzed.de/) diff --git a/doc/users/svend.mdwn b/doc/users/svend.mdwn index 69d83584f..712a0d3e7 100644 --- a/doc/users/svend.mdwn +++ b/doc/users/svend.mdwn @@ -1,4 +1,4 @@ [[!meta title="Svend Sorensen"]] -* [website](http://www.ciffer.net/~svend/) -* [blog](http://www.ciffer.net/~svend/blog/) +* [website](http://ciffer.net/~svend/) +* [blog](http://ciffer.net/~svend/blog/) -- cgit v1.2.3 From 2111bf0408620a307c8c0373489ef34ca6626fd2 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Mon, 19 Apr 2010 22:14:22 -0400 Subject: move message into if block --- IkiWiki/Render.pm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index a6b0f0617..1114e05c8 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -366,13 +366,13 @@ sub find_new_files ($) { push @internal_new, $file; } elsif ($config{rcs}) { - if (! $times_noted) { - debug(sprintf(gettext("querying %s for file creation and modification times.."), $config{rcs})); - $times_noted=1; - } - push @new, $file; if ($config{gettime} && -e "$config{srcdir}/$file") { + if (! $times_noted) { + debug(sprintf(gettext("querying %s for file creation and modification times.."), $config{rcs})); + $times_noted=1; + } + eval { my $ctime=rcs_getctime("$config{srcdir}/$file"); if ($ctime > 0) { -- cgit v1.2.3 From 09c647c1773d5c8eafacea486082684909e47449 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Tue, 20 Apr 2010 02:31:00 +0000 Subject: response --- doc/todo/auto_rebuild_on_template_change.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/todo/auto_rebuild_on_template_change.mdwn b/doc/todo/auto_rebuild_on_template_change.mdwn index c4ffae178..2799842ed 100644 --- a/doc/todo/auto_rebuild_on_template_change.mdwn +++ b/doc/todo/auto_rebuild_on_template_change.mdwn @@ -31,3 +31,5 @@ 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]] -- cgit v1.2.3 From 9f00692a798888b9cc9edb30a961c6418efba39b Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Mon, 19 Apr 2010 22:37:55 -0400 Subject: response --- doc/todo/auto_rebuild_on_template_change.mdwn | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/doc/todo/auto_rebuild_on_template_change.mdwn b/doc/todo/auto_rebuild_on_template_change.mdwn index 2799842ed..cde19700c 100644 --- a/doc/todo/auto_rebuild_on_template_change.mdwn +++ b/doc/todo/auto_rebuild_on_template_change.mdwn @@ -25,11 +25,15 @@ 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. +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]] -- cgit v1.2.3 From 16afa9e8446771fabe45ab45d8a36d09034d0319 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Tue, 20 Apr 2010 02:41:13 +0000 Subject: further clarification --- doc/todo/Multiple_categorization_namespaces.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/todo/Multiple_categorization_namespaces.mdwn b/doc/todo/Multiple_categorization_namespaces.mdwn index ae35e8dfe..190070816 100644 --- a/doc/todo/Multiple_categorization_namespaces.mdwn +++ b/doc/todo/Multiple_categorization_namespaces.mdwn @@ -79,8 +79,10 @@ Each type/attribute/field/whatever (predefined, user-defined, arbitrary) would t * `linkbase` : akin to the tagbase parameter * Is this a field-name -> directory mapping? -- K.A. * yes, with each directory having one page per value. It might not make sense for all fields, of course -- G.B. + * (nods) I've been working on something similar with my unreleased `tagger` module. In that, by default, the field-name maps to the closest wiki-page of the same name. Thus, if one had the field "genre=poetry" on the page fiction/stories/mary/lamb, then that would map to fiction/genre/poetry if fiction/genre existed. --K.A. * `queries` : list of template queries this type/attribute/field/whatever is exposed to * I'm not sure what you mean here. -- K.A. * as mentioned before, some fields may be made accessible through different template queries, in different form. This is the case already for tags, that also come up in the `categories` query (used by Atom and RSS feeds). -- G.B. + * Ah, do you mean that the input value is the same, but the output format is different? Like the difference between TMPL_VAR NAME="FOO" and TMPL_VAR NAME="raw_FOO"; one is htmlized, and the other is not. -- K.A. Where this approach is limiting is on the kind of data that is passed to (template) queries. The value of the metadata fields might need some massaging (e.g. compare how tags are passed to tags queries vs cateogires queries, or also see what is done with the fields in the current `meta` plugin). I have problems on picturing an easy way to make this possible user-side (i.e. via templates and not in Perl modules). Suggestions welcome. -- cgit v1.2.3 From fda191cbbbfa76114a27a53bfc5b90289f26f72b Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Tue, 20 Apr 2010 02:43:44 +0000 Subject: formatting --- doc/todo/Multiple_categorization_namespaces.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/todo/Multiple_categorization_namespaces.mdwn b/doc/todo/Multiple_categorization_namespaces.mdwn index 190070816..74e5bc812 100644 --- a/doc/todo/Multiple_categorization_namespaces.mdwn +++ b/doc/todo/Multiple_categorization_namespaces.mdwn @@ -79,10 +79,10 @@ Each type/attribute/field/whatever (predefined, user-defined, arbitrary) would t * `linkbase` : akin to the tagbase parameter * Is this a field-name -> directory mapping? -- K.A. * yes, with each directory having one page per value. It might not make sense for all fields, of course -- G.B. - * (nods) I've been working on something similar with my unreleased `tagger` module. In that, by default, the field-name maps to the closest wiki-page of the same name. Thus, if one had the field "genre=poetry" on the page fiction/stories/mary/lamb, then that would map to fiction/genre/poetry if fiction/genre existed. --K.A. + * (nods) I've been working on something similar with my unreleased `tagger` module. In that, by default, the field-name maps to the closest wiki-page of the same name. Thus, if one had the field "genre=poetry" on the page fiction/stories/mary/lamb, then that would map to fiction/genre/poetry if fiction/genre existed. --K.A. * `queries` : list of template queries this type/attribute/field/whatever is exposed to * I'm not sure what you mean here. -- K.A. * as mentioned before, some fields may be made accessible through different template queries, in different form. This is the case already for tags, that also come up in the `categories` query (used by Atom and RSS feeds). -- G.B. - * Ah, do you mean that the input value is the same, but the output format is different? Like the difference between TMPL_VAR NAME="FOO" and TMPL_VAR NAME="raw_FOO"; one is htmlized, and the other is not. -- K.A. + * Ah, do you mean that the input value is the same, but the output format is different? Like the difference between TMPL_VAR NAME="FOO" and TMPL_VAR NAME="raw_FOO"; one is htmlized, and the other is not. -- K.A. Where this approach is limiting is on the kind of data that is passed to (template) queries. The value of the metadata fields might need some massaging (e.g. compare how tags are passed to tags queries vs cateogires queries, or also see what is done with the fields in the current `meta` plugin). I have problems on picturing an easy way to make this possible user-side (i.e. via templates and not in Perl modules). Suggestions welcome. -- cgit v1.2.3 From 529929e732e1c6604d31b68e81898780de06e640 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" <http://kerravonsen.dreamwidth.org/@web> Date: Tue, 20 Apr 2010 02:45:14 +0000 Subject: non comprend --- doc/todo/auto_rebuild_on_template_change.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/todo/auto_rebuild_on_template_change.mdwn b/doc/todo/auto_rebuild_on_template_change.mdwn index cde19700c..6a1013f8d 100644 --- a/doc/todo/auto_rebuild_on_template_change.mdwn +++ b/doc/todo/auto_rebuild_on_template_change.mdwn @@ -37,3 +37,5 @@ wikitemplates and in-wiki templates.) >> It would be better for them not to be rendered separately at all. >> --[[Joey]] + +>>> I don't follow you. --[[KathrynAndersen]] -- cgit v1.2.3 From de6167a3b03389c0ec8223e7ee101707b6c73953 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Mon, 19 Apr 2010 23:45:42 -0400 Subject: change wording This is more accurate when a file that is not a page is what is removed. --- IkiWiki/Render.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 1114e05c8..172b08b1e 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -431,7 +431,7 @@ sub remove_del (@) { foreach my $file (@_) { my $page=pagename($file); if (! isinternal($page)) { - debug(sprintf(gettext("removing old page %s"), $page)); + debug(sprintf(gettext("removing obsolete %s"), $page)); } foreach my $old (@{$oldrenderedfiles{$page}}) { -- cgit v1.2.3 From 563428ebd2a75cfabccf1974da0c1cbbe07eb369 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Mon, 19 Apr 2010 23:52:16 -0400 Subject: response --- doc/todo/auto_rebuild_on_template_change.mdwn | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/todo/auto_rebuild_on_template_change.mdwn b/doc/todo/auto_rebuild_on_template_change.mdwn index 6a1013f8d..2558d5f3e 100644 --- a/doc/todo/auto_rebuild_on_template_change.mdwn +++ b/doc/todo/auto_rebuild_on_template_change.mdwn @@ -24,6 +24,7 @@ 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. +(However, if they're not copied, wikilinks to them will be broken. Hmm.) The risk is that a site might have `allowed_attachments` set to `templates/*` or `*.tmpl` something like that. I think such a configuration @@ -39,3 +40,8 @@ wikitemplates and in-wiki templates.) >> --[[Joey]] >>> I don't follow you. --[[KathrynAndersen]] + +>>>> If they don't render to output files, they clearly don't +>>>> need to be treated as wiki pages. (They need to be treated +>>>> as raw files anyway, because you don't want random users editing them +>>>> in the online editor.) --[[Joey]] -- cgit v1.2.3 From 1239fa55d5d5b9ca81dbde0874f4ff8d1980429d Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Tue, 20 Apr 2010 00:07:41 -0400 Subject: no need to return content from postscan hook --- IkiWiki/Plugin/search.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm index c0e8703d8..a1e7026ca 100644 --- a/IkiWiki/Plugin/search.pm +++ b/IkiWiki/Plugin/search.pm @@ -70,7 +70,7 @@ sub index (@) { # A unique pageterm is used to identify the document for a page. my $pageterm=pageterm($params{page}); - return $params{content} unless defined $pageterm; + return unless defined $pageterm; my $db=xapiandb(); my $doc=Search::Xapian::Document->new(); -- cgit v1.2.3 From 11718519348382892d5c6fdb21b8e721c2413eb0 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Tue, 20 Apr 2010 01:32:19 -0400 Subject: similarity to internal pages --- doc/todo/auto_rebuild_on_template_change.mdwn | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/todo/auto_rebuild_on_template_change.mdwn b/doc/todo/auto_rebuild_on_template_change.mdwn index 2558d5f3e..2e4ba8e9a 100644 --- a/doc/todo/auto_rebuild_on_template_change.mdwn +++ b/doc/todo/auto_rebuild_on_template_change.mdwn @@ -24,7 +24,8 @@ 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. -(However, if they're not copied, wikilinks to them will be broken. Hmm.) +In a sense, these template would be like internal pages, except not wiki +pages, but raw files. The risk is that a site might have `allowed_attachments` set to `templates/*` or `*.tmpl` something like that. I think such a configuration -- cgit v1.2.3 From d1a1f3ad21e9e58d1232fc3d997028a463ccad4a Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Tue, 20 Apr 2010 01:54:42 -0400 Subject: fix minor bug if a page's name is "0" --- IkiWiki/Render.pm | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 172b08b1e..bbf8f915e 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -634,34 +634,35 @@ sub render_dependent ($$$$$$$) { if ($type == $IkiWiki::DEPEND_LINKS) { next unless $linkchangers->{lc($page)}; } - return $page; + $reason=$page; + return 1; } } return undef; }; if ($depends{$p}{$dep} & $IkiWiki::DEPEND_CONTENT) { - last if $reason = - $in->(\@changed, $IkiWiki::DEPEND_CONTENT); - last if $internal_dep && ($reason = + last if $in->(\@changed, $IkiWiki::DEPEND_CONTENT); + last if $internal_dep && ( $in->($internal_new, $IkiWiki::DEPEND_CONTENT) || $in->($internal_del, $IkiWiki::DEPEND_CONTENT) || - $in->($internal_changed, $IkiWiki::DEPEND_CONTENT)); + $in->($internal_changed, $IkiWiki::DEPEND_CONTENT) + ); } if ($depends{$p}{$dep} & $IkiWiki::DEPEND_PRESENCE) { - last if $reason = - $in->(\@exists_changed, $IkiWiki::DEPEND_PRESENCE); - last if $internal_dep && ($reason = + last if $in->(\@exists_changed, $IkiWiki::DEPEND_PRESENCE); + last if $internal_dep && ( $in->($internal_new, $IkiWiki::DEPEND_PRESENCE) || - $in->($internal_del, $IkiWiki::DEPEND_PRESENCE)); + $in->($internal_del, $IkiWiki::DEPEND_PRESENCE) + ); } if ($depends{$p}{$dep} & $IkiWiki::DEPEND_LINKS) { - last if $reason = - $in->(\@changed, $IkiWiki::DEPEND_LINKS); - last if $internal_dep && ($reason = + last if $in->(\@changed, $IkiWiki::DEPEND_LINKS); + last if $internal_dep && ( $in->($internal_new, $IkiWiki::DEPEND_LINKS) || $in->($internal_del, $IkiWiki::DEPEND_LINKS) || - $in->($internal_changed, $IkiWiki::DEPEND_LINKS)); + $in->($internal_changed, $IkiWiki::DEPEND_LINKS) + ); } } } -- cgit v1.2.3 From 52ccc03d10c532b3cf6335b00a9b60057061596b Mon Sep 17 00:00:00 2001 From: Jon Dowland <jmtd@debian.org> Date: Tue, 20 Apr 2010 15:40:10 +0100 Subject: clarify whether the raw files would be put in destdir --- doc/todo/auto_rebuild_on_template_change.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/todo/auto_rebuild_on_template_change.mdwn b/doc/todo/auto_rebuild_on_template_change.mdwn index 2e4ba8e9a..09a623427 100644 --- a/doc/todo/auto_rebuild_on_template_change.mdwn +++ b/doc/todo/auto_rebuild_on_template_change.mdwn @@ -46,3 +46,6 @@ wikitemplates and in-wiki templates.) >>>> need to be treated as wiki pages. (They need to be treated >>>> as raw files anyway, because you don't want random users editing them >>>> in the online editor.) --[[Joey]] + +>>>>> Just to be clear, the raw files would not be copied across to the output +>>>>> directory? -- [[Jon]] -- cgit v1.2.3 From 3b8f4f59d6720e5a77cae30eacc4c46582b1603b Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Tue, 20 Apr 2010 15:01:39 +0000 Subject: internal pages: the revenge? --- doc/todo/auto_rebuild_on_template_change.mdwn | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/todo/auto_rebuild_on_template_change.mdwn b/doc/todo/auto_rebuild_on_template_change.mdwn index 09a623427..b5c107915 100644 --- a/doc/todo/auto_rebuild_on_template_change.mdwn +++ b/doc/todo/auto_rebuild_on_template_change.mdwn @@ -49,3 +49,9 @@ wikitemplates and in-wiki templates.) >>>>> Just to be clear, the raw files would not be copied across to the output >>>>> directory? -- [[Jon]] + +>>>>>> Without modifying ikiwiki, they'd be copied to the output directory as +>>>>>> (e.g.) http://ikiwiki.info/templates/inlinepage.tmpl; to not copy them, +>>>>>> it'd either be necessary to make them be internal pages +>>>>>> (templates/inlinepage._tmpl) or special-case them in some other way. +>>>>>> --[[smcv]] -- cgit v1.2.3 From 7a92c0aa4aea1bffc9090d982c4b55af9e0b0c02 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Tue, 20 Apr 2010 13:49:46 -0400 Subject: clarify why absolute is tested & stripped here file_prune also fails on absolute filenames now --- IkiWiki/Plugin/editpage.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm index ee1de8eaa..dff777138 100644 --- a/IkiWiki/Plugin/editpage.pm +++ b/IkiWiki/Plugin/editpage.pm @@ -92,7 +92,7 @@ sub cgi_editpage ($$) { # wiki_file_regexp. my ($page)=$form->field('page')=~/$config{wiki_file_regexp}/; $page=possibly_foolish_untaint($page); - my $absolute=($page =~ s#^/+##); + my $absolute=($page =~ s#^/+##); # absolute name used for force location if (! defined $page || ! length $page || file_pruned($page)) { error(gettext("bad page name")); -- cgit v1.2.3 From 5d3f7877299942cbec4fde6054761635d90a089a Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Tue, 20 Apr 2010 13:54:24 -0400 Subject: use one parameter form of file_pruned here too In File::Find, $_ is relative to the current directory, so that is ok. Also, the directory name doesn't need to be stripped from $_. --- IkiWiki/Plugin/comments.pm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 1c219b6c6..32e4d0937 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -645,7 +645,7 @@ sub comments_pending () { no_chdir => 1, wanted => sub { $_=decode_utf8($_); - if (IkiWiki::file_pruned($_, $dir)) { + if (IkiWiki::file_pruned($_)) { $File::Find::prune=1; } elsif (! -l $_ && ! -d _) { @@ -653,7 +653,6 @@ sub comments_pending () { my ($f)=/$config{wiki_file_regexp}/; # untaint if (defined $f && $f =~ /\Q._comment\E$/) { my $ctime=(stat($f))[10]; - $f=~s/^\Q$dir\E\/?//; push @ret, [$f, $ctime]; } } -- cgit v1.2.3 From 230a8b22a471c018c8ec48cd07427c42238a4970 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Tue, 20 Apr 2010 13:59:17 -0400 Subject: remove explicit absolute test file_pruned now tests for that --- IkiWiki/Plugin/editpage.pm | 1 - 1 file changed, 1 deletion(-) diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm index dff777138..2130a8402 100644 --- a/IkiWiki/Plugin/editpage.pm +++ b/IkiWiki/Plugin/editpage.pm @@ -221,7 +221,6 @@ sub cgi_editpage ($$) { if (! defined $from || ! length $from || $from ne $form->field('from') || file_pruned($from) || - $from=~/^\// || $absolute || $form->submitted) { @page_locs=$best_loc=$page; -- cgit v1.2.3 From 6d063a6698ad72476d9243956b0f13ec33a09dbd Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Tue, 20 Apr 2010 14:06:00 -0400 Subject: switch to 1 parameter version of file_pruned Another bit of code that didn't realize that File::Find sets $_ to the relative filename. --- IkiWiki/Plugin/autoindex.pm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/IkiWiki/Plugin/autoindex.pm b/IkiWiki/Plugin/autoindex.pm index c71d73349..1d0612e84 100644 --- a/IkiWiki/Plugin/autoindex.pm +++ b/IkiWiki/Plugin/autoindex.pm @@ -40,14 +40,12 @@ sub refresh () { no_chdir => 1, wanted => sub { $_=decode_utf8($_); - if (IkiWiki::file_pruned($_, $dir)) { + if (IkiWiki::file_pruned($_)) { $File::Find::prune=1; } elsif (! -l $_) { my ($f)=/$config{wiki_file_regexp}/; # untaint return unless defined $f; - $f=~s/^\Q$dir\E\/?//; - return unless length $f; return if $f =~ /\._([^.]+)$/; # skip internal page if (! -d _) { $pages{pagename($f)}=1; -- cgit v1.2.3 From cff3937b681a6c2505eb52b43b2e3e7086f99c45 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Tue, 20 Apr 2010 14:08:29 -0400 Subject: remove 2 argument form of file_pruned --- IkiWiki.pm | 9 +-------- t/file_pruned.t | 39 ++------------------------------------- 2 files changed, 3 insertions(+), 45 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index a5f83ac7a..6d3b6c606 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1843,15 +1843,8 @@ sub deptype (@) { } my $file_prune_regexp; -sub file_pruned ($;$) { +sub file_pruned ($) { my $file=shift; - if (@_) { - require File::Spec; - $file=File::Spec->canonpath($file); - my $base=File::Spec->canonpath(shift); - return if $file eq $base; - $file =~ s#^\Q$base\E/+##; - } if (defined $config{include} && length $config{include}) { return 0 if $file =~ m/$config{include}/; diff --git a/t/file_pruned.t b/t/file_pruned.t index 4335ed917..34f366610 100755 --- a/t/file_pruned.t +++ b/t/file_pruned.t @@ -1,52 +1,31 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 54; +use Test::More tests => 27; BEGIN { use_ok("IkiWiki"); } %config=IkiWiki::defaultconfig(); -ok(IkiWiki::file_pruned("src/.htaccess", "src")); ok(IkiWiki::file_pruned(".htaccess")); -ok(IkiWiki::file_pruned("src/.ikiwiki/", "src")); ok(IkiWiki::file_pruned(".ikiwiki/")); -ok(IkiWiki::file_pruned("src/.ikiwiki/index", "src")); ok(IkiWiki::file_pruned(".ikiwiki/index")); -ok(IkiWiki::file_pruned("src/CVS/foo", "src")); ok(IkiWiki::file_pruned("CVS/foo")); -ok(IkiWiki::file_pruned("src/subdir/CVS/foo", "src")); ok(IkiWiki::file_pruned("subdir/CVS/foo")); -ok(IkiWiki::file_pruned("src/.svn", "src")); ok(IkiWiki::file_pruned(".svn")); -ok(IkiWiki::file_pruned("src/subdir/.svn", "src")); ok(IkiWiki::file_pruned("subdir/.svn")); -ok(IkiWiki::file_pruned("src/subdir/.svn/foo", "src")); ok(IkiWiki::file_pruned("subdir/.svn/foo")); -ok(IkiWiki::file_pruned("src/.git", "src")); ok(IkiWiki::file_pruned(".git")); -ok(IkiWiki::file_pruned("src/subdir/.git", "src")); ok(IkiWiki::file_pruned("subdir/.git")); -ok(IkiWiki::file_pruned("src/subdir/.git/foo", "src")); ok(IkiWiki::file_pruned("subdir/.git/foo")); -ok(! IkiWiki::file_pruned("src/svn/fo", "src")); ok(! IkiWiki::file_pruned("svn/fo")); -ok(! IkiWiki::file_pruned("src/git", "src")); ok(! IkiWiki::file_pruned("git")); -ok(! IkiWiki::file_pruned("src/index.mdwn", "src")); ok(! IkiWiki::file_pruned("index.mdwn")); -ok(! IkiWiki::file_pruned("src/index.", "src")); ok(! IkiWiki::file_pruned("index.")); - -# these are ok because while the filename starts with ".", the canonpathed -# version does not -ok(! IkiWiki::file_pruned("src/.", "src")); -ok(! IkiWiki::file_pruned("src/./", "src")); -# OTOH, without a srcdir, no canonpath, so they're not allowed. ok(IkiWiki::file_pruned(".")); ok(IkiWiki::file_pruned("./")); -# Without a srcdir, absolute filenames are not allowed. +# absolute filenames are not allowed. ok(IkiWiki::file_pruned("/etc/passwd")); ok(IkiWiki::file_pruned("//etc/passwd")); ok(IkiWiki::file_pruned("/")); @@ -54,22 +33,8 @@ ok(IkiWiki::file_pruned("//")); ok(IkiWiki::file_pruned("///")); -ok(IkiWiki::file_pruned("src/..", "src")); ok(IkiWiki::file_pruned("..")); -ok(IkiWiki::file_pruned("src/../", "src")); -ok(IkiWiki::file_pruned("../")); -ok(IkiWiki::file_pruned("src/../", "src")); ok(IkiWiki::file_pruned("../")); -# This is perhaps counterintuitive. -ok(! IkiWiki::file_pruned("src", "src")); - -# Dots, etc, in the srcdir are ok. -ok(! IkiWiki::file_pruned("/.foo/src", "/.foo/src")); -ok(IkiWiki::file_pruned("/.foo/src/.foo/src", "/.foo/src")); -ok(! IkiWiki::file_pruned("/.foo/src/index.mdwn", "/.foo/src/index.mdwn")); - -ok(IkiWiki::file_pruned("src/y/foo.dpkg-tmp", "src")); ok(IkiWiki::file_pruned("y/foo.dpkg-tmp")); -ok(IkiWiki::file_pruned("src/y/foo.ikiwiki-new", "src")); ok(IkiWiki::file_pruned("y/foo.ikiwiki-new")); -- cgit v1.2.3 From 1f56dead00ee1188d9ed9650b9b2483b69c4d525 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Tue, 20 Apr 2010 14:13:46 -0400 Subject: oops, fix for no_chdir mode $_ will be absolute then --- IkiWiki/Plugin/autoindex.pm | 6 ++++-- IkiWiki/Plugin/comments.pm | 7 ++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/IkiWiki/Plugin/autoindex.pm b/IkiWiki/Plugin/autoindex.pm index 1d0612e84..23a17d4e9 100644 --- a/IkiWiki/Plugin/autoindex.pm +++ b/IkiWiki/Plugin/autoindex.pm @@ -39,12 +39,14 @@ sub refresh () { find({ no_chdir => 1, wanted => sub { - $_=decode_utf8($_); + my $file=decode_utf8($_); + $file=~s/^\Q$dir\E\/?//; + return unless length $file; if (IkiWiki::file_pruned($_)) { $File::Find::prune=1; } elsif (! -l $_) { - my ($f)=/$config{wiki_file_regexp}/; # untaint + my ($f) = $file =~ /$config{wiki_file_regexp}/; # untaint return unless defined $f; return if $f =~ /\._([^.]+)$/; # skip internal page if (! -d _) { diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 32e4d0937..03ca19c98 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -644,13 +644,14 @@ sub comments_pending () { find({ no_chdir => 1, wanted => sub { - $_=decode_utf8($_); + my $file=decode_utf8($_); + $file=~s/^\Q$dir\E\/?//; + return unless length $file; if (IkiWiki::file_pruned($_)) { $File::Find::prune=1; } elsif (! -l $_ && ! -d _) { - $File::Find::prune=0; - my ($f)=/$config{wiki_file_regexp}/; # untaint + my ($f) = $file =~ /$config{wiki_file_regexp}/; # untaint if (defined $f && $f =~ /\Q._comment\E$/) { my $ctime=(stat($f))[10]; push @ret, [$f, $ctime]; -- cgit v1.2.3 From 59bb1f1db37d8b8170e5dd8e5a857df7742bffb9 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Tue, 20 Apr 2010 14:23:48 -0400 Subject: fix stat to use unmunged filename --- IkiWiki/Plugin/comments.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 03ca19c98..ccc9e1068 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -653,7 +653,7 @@ sub comments_pending () { elsif (! -l $_ && ! -d _) { my ($f) = $file =~ /$config{wiki_file_regexp}/; # untaint if (defined $f && $f =~ /\Q._comment\E$/) { - my $ctime=(stat($f))[10]; + my $ctime=(stat($_))[10]; push @ret, [$f, $ctime]; } } -- cgit v1.2.3 From 81eae1a531ab6e538985a8531b39ef3c5f865bdc Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Tue, 20 Apr 2010 14:25:17 -0400 Subject: typo --- IkiWiki/Plugin/editpage.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm index 2130a8402..26e38abc1 100644 --- a/IkiWiki/Plugin/editpage.pm +++ b/IkiWiki/Plugin/editpage.pm @@ -92,7 +92,7 @@ sub cgi_editpage ($$) { # wiki_file_regexp. my ($page)=$form->field('page')=~/$config{wiki_file_regexp}/; $page=possibly_foolish_untaint($page); - my $absolute=($page =~ s#^/+##); # absolute name used for force location + my $absolute=($page =~ s#^/+##); # absolute name used to force location if (! defined $page || ! length $page || file_pruned($page)) { error(gettext("bad page name")); -- cgit v1.2.3 From 4b4fdc85abba7200eed78eb473341e44fecc6087 Mon Sep 17 00:00:00 2001 From: "http://oblomov.myopenid.com/" <http://oblomov.myopenid.com/@web> Date: Tue, 20 Apr 2010 20:18:29 +0000 Subject: Clarifications --- doc/todo/Multiple_categorization_namespaces.mdwn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/todo/Multiple_categorization_namespaces.mdwn b/doc/todo/Multiple_categorization_namespaces.mdwn index 74e5bc812..a8ee6755c 100644 --- a/doc/todo/Multiple_categorization_namespaces.mdwn +++ b/doc/todo/Multiple_categorization_namespaces.mdwn @@ -80,9 +80,14 @@ Each type/attribute/field/whatever (predefined, user-defined, arbitrary) would t * Is this a field-name -> directory mapping? -- K.A. * yes, with each directory having one page per value. It might not make sense for all fields, of course -- G.B. * (nods) I've been working on something similar with my unreleased `tagger` module. In that, by default, the field-name maps to the closest wiki-page of the same name. Thus, if one had the field "genre=poetry" on the page fiction/stories/mary/lamb, then that would map to fiction/genre/poetry if fiction/genre existed. --K.A. + * that's the idea. In your case you could have the linkbase of genre be fiction/genre, and it would be created if it was missing. -- G.B. * `queries` : list of template queries this type/attribute/field/whatever is exposed to * I'm not sure what you mean here. -- K.A. * as mentioned before, some fields may be made accessible through different template queries, in different form. This is the case already for tags, that also come up in the `categories` query (used by Atom and RSS feeds). -- G.B. * Ah, do you mean that the input value is the same, but the output format is different? Like the difference between TMPL_VAR NAME="FOO" and TMPL_VAR NAME="raw_FOO"; one is htmlized, and the other is not. -- K.A. + * Actually this is about the same information appearing in different queries (e.g. NAME="FOO" and NAME="BAR"). Example: say that I defined a "Rubrica" field. I would want both tags and categories to appear in `categories` template query, but only tags would appear in the `tags` query, and only Rubrica values to appear in `rubrica` queries. The issue of different output formats was presented in the next paragraph instead. -- G.B. Where this approach is limiting is on the kind of data that is passed to (template) queries. The value of the metadata fields might need some massaging (e.g. compare how tags are passed to tags queries vs cateogires queries, or also see what is done with the fields in the current `meta` plugin). I have problems on picturing an easy way to make this possible user-side (i.e. via templates and not in Perl modules). Suggestions welcome. + +One possibility could be to have the `queries` configuration allow a hash mapping query names to functions that would transform the data. Lacking that possibility, we might have to leave some predefined fields to have custom Perl-side treatment and leave custom fields to be untransformable. + -- cgit v1.2.3 From 93cf1db7b9655a64aec6ab17b7192e5e7429f12e Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Tue, 20 Apr 2010 17:21:50 -0400 Subject: fix uninitialized value warning $cgi->params('do') may not be defined. The CSRF code may delete all cgi params. This uninitalized value was introduced when do=register support was added recently. --- IkiWiki/Plugin/passwordauth.pm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/IkiWiki/Plugin/passwordauth.pm b/IkiWiki/Plugin/passwordauth.pm index 4848b47bb..baddca093 100644 --- a/IkiWiki/Plugin/passwordauth.pm +++ b/IkiWiki/Plugin/passwordauth.pm @@ -105,11 +105,13 @@ sub formbuilder_setup (@) { my $session=$params{session}; my $cgi=$params{cgi}; - if ($form->title eq "signin" || $form->title eq "register" || $cgi->param("do") eq "register") { + my $do_register=defined $cgi->param("do") && $cgi->param("do") eq "register"; + + if ($form->title eq "signin" || $form->title eq "register" || $do_register) { $form->field(name => "name", required => 0); $form->field(name => "password", type => "password", required => 0); - if ($form->submitted eq "Register" || $form->submitted eq "Create Account" || $cgi->param("do") eq "register") { + if ($form->submitted eq "Register" || $form->submitted eq "Create Account" || $do_register) { $form->field(name => "confirm_password", type => "password"); $form->field(name => "account_creation_password", type => "password") if (defined $config{account_creation_password} && @@ -247,8 +249,10 @@ sub formbuilder (@) { my $cgi=$params{cgi}; my $buttons=$params{buttons}; + my $do_register=defined $cgi->param("do") && $cgi->param("do") eq "register"; + if ($form->title eq "signin" || $form->title eq "register") { - if (($form->submitted && $form->validate) || $cgi->param("do") eq "register") { + if (($form->submitted && $form->validate) || $do_register) { if ($form->submitted eq 'Login') { $session->param("name", $form->field("name")); IkiWiki::cgi_postsignin($cgi, $session); @@ -311,7 +315,7 @@ sub formbuilder (@) { $form->field(name => "name", required => 0); push @$buttons, "Reset Password"; } - elsif ($form->submitted eq "Register" || $cgi->param("do") eq "register") { + elsif ($form->submitted eq "Register" || $do_register) { @$buttons="Create Account"; } } -- cgit v1.2.3 From bfca8345ea7d49df6a4f6521f1db416d28671f35 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Tue, 20 Apr 2010 17:42:36 -0400 Subject: bugfix Avoid file_pruned triggering on absolute paths causing the whole comments_pending directory being pruned. Simplify code. --- IkiWiki/Plugin/comments.pm | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index ccc9e1068..58bd4b851 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -646,16 +646,12 @@ sub comments_pending () { wanted => sub { my $file=decode_utf8($_); $file=~s/^\Q$dir\E\/?//; - return unless length $file; - if (IkiWiki::file_pruned($_)) { - $File::Find::prune=1; - } - elsif (! -l $_ && ! -d _) { - my ($f) = $file =~ /$config{wiki_file_regexp}/; # untaint - if (defined $f && $f =~ /\Q._comment\E$/) { - my $ctime=(stat($_))[10]; - push @ret, [$f, $ctime]; - } + return if ! length $file || IkiWiki::file_pruned($file) + || -l $_ || -d _ || $file !~ /\Q._comment\E$/; + my ($f) = $file =~ /$config{wiki_file_regexp}/; # untaint + if (defined $f) { + my $ctime=(stat($_))[10]; + push @ret, [$f, $ctime]; } } }, $dir); -- cgit v1.2.3 From d578f3ff78190f816c74f6935e1e0024b25dc090 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Tue, 20 Apr 2010 17:49:00 -0400 Subject: darcs: ensure whole darcs query manifest output is consumed By a stroke of luck, after a long & full day, I happened to remember that in the morning, I had seen someone on irc mention that darcs query manifest doesn't like it if its full output is not consumed. So contrary to the usual case where bug reports sent via irc are like messages written in sand before the new tide, this one was seen and fixed. (But use http://ikiwiki.info/bugs/ next time!) --- IkiWiki/Plugin/darcs.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/darcs.pm b/IkiWiki/Plugin/darcs.pm index c1d6661d3..f17fadcb1 100644 --- a/IkiWiki/Plugin/darcs.pm +++ b/IkiWiki/Plugin/darcs.pm @@ -63,7 +63,7 @@ sub file_in_vc ($$) { } my $found=0; while (<DARCS_MANIFEST>) { - $found = 1, last if /^(\.\/)?$file$/; + $found = 1 if /^(\.\/)?$file$/; } close(DARCS_MANIFEST) or error("'darcs query manifest' exited " . $?); -- cgit v1.2.3 From 511f7f9cb94ebdd8ea33973a0ca74d2f8249aa3f Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Tue, 20 Apr 2010 18:16:40 -0400 Subject: bugfix So this is the one place that does need to canonpath and compare, as two argument file_pruned used to. --- IkiWiki/Plugin/autoindex.pm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/autoindex.pm b/IkiWiki/Plugin/autoindex.pm index 23a17d4e9..0dd76259e 100644 --- a/IkiWiki/Plugin/autoindex.pm +++ b/IkiWiki/Plugin/autoindex.pm @@ -36,13 +36,17 @@ sub refresh () { my (%pages, %dirs); foreach my $dir ($config{srcdir}, @{$config{underlaydirs}}, $config{underlaydir}) { + require File::Spec; + $dir=File::Spec->canonpath($dir); + find({ no_chdir => 1, wanted => sub { - my $file=decode_utf8($_); + my $file=File::Spec->canonpath(decode_utf8($_)); + return if $file eq $dir; $file=~s/^\Q$dir\E\/?//; return unless length $file; - if (IkiWiki::file_pruned($_)) { + if (IkiWiki::file_pruned($file)) { $File::Find::prune=1; } elsif (! -l $_) { -- cgit v1.2.3 From 5d2df9651fee83cf17acde48ba12442104311492 Mon Sep 17 00:00:00 2001 From: "http://oblomov.myopenid.com/" <http://oblomov.myopenid.com/@web> Date: Wed, 21 Apr 2010 08:17:03 +0000 Subject: Missing links with no CGI --- doc/bugs/Links_to_missing_pages_should_always_be_styled.mdwn | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 doc/bugs/Links_to_missing_pages_should_always_be_styled.mdwn diff --git a/doc/bugs/Links_to_missing_pages_should_always_be_styled.mdwn b/doc/bugs/Links_to_missing_pages_should_always_be_styled.mdwn new file mode 100644 index 000000000..d9f3d518f --- /dev/null +++ b/doc/bugs/Links_to_missing_pages_should_always_be_styled.mdwn @@ -0,0 +1,5 @@ +When the CGI URL is not defined, links to missing pages appear as plain, unstyled text. I think the 'createlink' span should always wrap this text, even when the actual question mark linking to the CGI for the create action is missing. This ensures consistent styling regardless of whether the CGI is available or not (and is thus useful for example when the same wiki has clones with the CGI link and clones without). + +A proposed patch is available [on my ikiwiki clone](http://git.oblomov.eu/ikiwiki/patch/290d1b498f00f63e6d41218ddb76d87e68ed5081) + +[[!tag patch cgi]] -- cgit v1.2.3 From 0fa25a361cbb49711938599d6cf06201ce0cc79a Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta <giuseppe.bilotta@gmail.com> Date: Wed, 21 Apr 2010 00:16:32 +0200 Subject: Always give createlink class to links to nonexistent pages With this change, the <span> with class createlink is always created around the link text, even when no CGI URL is defined. This allows styling of these 'links' in this case too. The same class is used as when CGI URL is defined so that e.g. clones of the same ikiwiki, one with CGI and one without, display in the same way (modulo the missing question mark link). (cherry picked from commit 290d1b498f00f63e6d41218ddb76d87e68ed5081) --- IkiWiki.pm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 6d3b6c606..ba2c09c36 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1086,14 +1086,16 @@ sub htmllink ($$$;@) { $bestlink=htmlpage($bestlink); if (! $destsources{$bestlink}) { - return $linktext unless length $config{cgiurl}; - return "<span class=\"createlink\"><a href=\"". + my $cgilink = ""; + if (length $config{cgiurl}) { + $cgilink = "<a href=\"". cgiurl( do => "create", page => lc($link), from => $lpage - ). - "\" rel=\"nofollow\">?</a>$linktext</span>" + )."\" rel=\"nofollow\">?</a>"; + } + return "<span class=\"createlink\">$cgilink$linktext</span>" } } -- cgit v1.2.3 From d6810097ce7e51989573db4052a636647d7bbbd7 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 12:50:34 -0400 Subject: layout --- IkiWiki.pm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index ba2c09c36..4084d4997 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1089,11 +1089,11 @@ sub htmllink ($$$;@) { my $cgilink = ""; if (length $config{cgiurl}) { $cgilink = "<a href=\"". - cgiurl( - do => "create", - page => lc($link), - from => $lpage - )."\" rel=\"nofollow\">?</a>"; + cgiurl( + do => "create", + page => lc($link), + from => $lpage + )."\" rel=\"nofollow\">?</a>"; } return "<span class=\"createlink\">$cgilink$linktext</span>" } -- cgit v1.2.3 From 5c855b2bcab82e4075d49713d53869857a4e9385 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 12:50:43 -0400 Subject: applied --- doc/bugs/Links_to_missing_pages_should_always_be_styled.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/bugs/Links_to_missing_pages_should_always_be_styled.mdwn b/doc/bugs/Links_to_missing_pages_should_always_be_styled.mdwn index d9f3d518f..73213209a 100644 --- a/doc/bugs/Links_to_missing_pages_should_always_be_styled.mdwn +++ b/doc/bugs/Links_to_missing_pages_should_always_be_styled.mdwn @@ -2,4 +2,4 @@ When the CGI URL is not defined, links to missing pages appear as plain, unstyle A proposed patch is available [on my ikiwiki clone](http://git.oblomov.eu/ikiwiki/patch/290d1b498f00f63e6d41218ddb76d87e68ed5081) -[[!tag patch cgi]] +[[!tag patch cgi done]] -- cgit v1.2.3 From 9c8761ba49b06a76a923eb91735f842f419d2916 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 14:27:12 -0400 Subject: add_autofile filename should be relative to srcdir --- doc/plugins/write.mdwn | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 5190a26ed..404c3b44f 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -972,13 +972,13 @@ Sometimes you may want to add a file to the `srcdir` as a result of content of other pages. For example, [[plugins/tag]] pages can be automatically created as needed. This function can be used to do that. -The three parameters are the filename to add, the name of the plugin, -and a callback function. The callback will be called if it is appropriate -to automatically add the file, and should then take care of creating it, -and doing anything else it needs to (such as checking it into revision -control). Note that the callback may not always be called. For example, -if an automatically added file is deleted by the user, ikiwiki will avoid -re-adding it again. +The three parameters are the filename to create (relative to the `srcdir`), +the name of the plugin, and a callback function. The callback will be +called if it is appropriate to automatically add the file, and should then +take care of creating it, and doing anything else it needs to (such as +checking it into revision control). Note that the callback may not always +be called. For example, if an automatically added file is deleted by the +user, ikiwiki will avoid re-adding it again. This function needs to be called during the scan hook, or earlier in the build process, in order to add the file early enough for it to be built. -- cgit v1.2.3 From 034b4e826627dddf47ff27278897804e39741e57 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 15:05:59 -0400 Subject: remove verify_src_file Splitting out this function bothered me. It is conceptially similar to file_pruned, and yet also very specific to exactly the security needs of find_src_files. I liked that it got rid of duplicate code in the latter function. So instead, put a helper sub in that, which I think allows refactoring things more cleanly, and with less boilerplate. As to the needs of gen_autofile, I'm not convinced this needs to handle the same set of problems that verify_src_file did. So I sat down and wrote a custom validator for autofiles, which turned out to seem to just need three things: Make sure the candidate filename is not something that would be pruned; untaint the candidate filename; and make sure that srcdir doesn't already have something with its name. (Plus, of course, all the other checks that were already in gen_autofile.) (In passing, also fixed a bunch of bugs I had introduced in this branch.) --- IkiWiki/Render.pm | 115 ++++++++++++++++++++++++++---------------------------- 1 file changed, 55 insertions(+), 60 deletions(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 03b2910fd..14f6f9d5f 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -281,68 +281,59 @@ sub srcdir_check () { } -sub verify_src_file ($$) { - my $file=shift; - my $dir=shift; - - return if -l $file || -d _; - $file=~s/^\Q$dir\E\/?//; - return if ! length $file; - my $page = pagename($file); - if (! exists $pagesources{$page} && - file_pruned($file)) { - return; - } - - my ($file_untainted) = $file =~ /$config{wiki_file_regexp}/; # untaint - if (! defined $file_untainted) { - warn(sprintf(gettext("skipping bad filename %s"), $file)."\n"); - } - return ($file_untainted, $page); -} - sub find_src_files () { my @files; my %pages; eval q{use File::Find}; error($@) if $@; - find({ - no_chdir => 1, - wanted => sub { - my ($file, $page) = verify_src_file(decode_utf8($_), $config{srcdir}); - if (defined $file) { - push @files, $file; - if ($pages{$page}) { - debug(sprintf(gettext("%s has multiple possible source pages"), $page)); + + my ($page, $dir, $underlay); + my $helper=sub { + my $file=decode_utf8($_); + + return if -l $file || -d _; + $file=~s/^\Q$dir\E\/?//; + return if ! length $file; + $page = pagename($file); + if (! exists $pagesources{$page} && + file_pruned($file)) { + $File::Find::prune=1; + return; + } + + my ($f) = $file =~ /$config{wiki_file_regexp}/; # untaint + if (! defined $f) { + warn(sprintf(gettext("skipping bad filename %s"), $file)."\n"); + } + + if ($underlay) { + # avoid underlaydir override attacks; see security.mdwn + if (! -l "$config{srcdir}/$f" && ! -e _) { + if (! $pages{$page}) { + push @files, $f; + $pages{$page}=1; } - $pages{$page}=1; } - else { - $File::Find::prune=1; + } + else { + push @files, $f; + if ($pages{$page}) { + debug(sprintf(gettext("%s has multiple possible source pages"), $page)); } - }, - }, $config{srcdir}); - foreach my $dir (@{$config{underlaydirs}}, $config{underlaydir}) { + $pages{$page}=1; + } + }; + + find({ + no_chdir => 1, + wanted => $helper, + }, $dir=$config{srcdir}); + $underlay=1; + foreach (@{$config{underlaydirs}}, $config{underlaydir}) { find({ no_chdir => 1, - wanted => sub { - my ($file, $page) = verify_src_file(decode_utf8($_), $dir); - if (defined $file) { - # avoid underlaydir override - # attacks; see security.mdwn - if (! -l "$config{srcdir}/$file" && - ! -e _) { - if (! $pages{$page}) { - push @files, $file; - $pages{$page}=1; - } - } - } - else { - $File::Find::prune=1; - } - }, - }, $dir); + wanted => $helper, + }, $dir=$_); }; return \@files, \%pages; } @@ -691,24 +682,28 @@ sub gen_autofile ($$$) { my $pages=shift; my $del=shift; - if (srcfile($autofile, 1)) { - return 0; + if (srcfile($autofile, 1) || file_pruned($autofile)) { + return; } - - my ($file, $page) = verify_src_file("$config{srcdir}/$autofile", $config{srcdir}); + my $file="$config{srcdir}/$autofile" =~ /$config{wiki_file_regexp}/; # untaint + if (! defined $file || -l $file || -d _ || -e _) { + return; + } + if ((!defined $file) || (exists $wikistate{$autofiles{$autofile}{plugin}}{autofile_deleted})) { - return 0; + return; } + my $page = pagename($file); if ($pages->{$page}) { - return 0; + return; } if (grep { $_ eq $file } @$del) { - $wikistate{$autofiles{$autofile}{generator}}{autofile_deleted}=1; - return 0; + $wikistate{$autofiles{$autofile}{plugin}}{autofile_deleted}=1; + return; } $autofiles{$autofile}{generator}->(); -- cgit v1.2.3 From e72973afdb3b08b1755295e348e223a7c51cf702 Mon Sep 17 00:00:00 2001 From: "http://hendry.iki.fi/" <http://hendry.iki.fi/@web> Date: Wed, 21 Apr 2010 19:07:32 +0000 Subject: debugging --- doc/bugs/Comments_dissapeared.mdwn | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc/bugs/Comments_dissapeared.mdwn b/doc/bugs/Comments_dissapeared.mdwn index 7ff1a012f..c7403f0f1 100644 --- a/doc/bugs/Comments_dissapeared.mdwn +++ b/doc/bugs/Comments_dissapeared.mdwn @@ -33,3 +33,15 @@ I have tried rebuilding on my squeeze system and still comments don't appear. An <http://natalian.org/comments/> I was worried is was due to a time skew problem I was experiencing on my VPS in the last month, though the time is right now and still comments do not appear on blog posts like <http://natalian.org/archives/2010/03/25/BBC_News_complaints/> + +# Getting closer + + hendry@webconverger templates$ for i in *.tmpl; do ./test-template.perl $i || echo $i has an error; done + HTML::Template->new() : At least one <TMPL_IF> or <TMPL_UNLESS> not terminated at end of file! at /usr/share/perl5/HTML/Template.pm line 2351. + page.tmpl has an error + hendry@webconverger templates$ cat test-template.perl + #!/usr/bin/perl + use HTML::Template; + my $htc = HTML::Template->new(filename => "$ARGV[0]"); + +I think the problem was before that it was `<TMPL_IF COMMENTS>` and now it is `<TMPL_IF NAME="COMMENTS">` ? -- cgit v1.2.3 From 9fa5f71034497043e2b5dbb2c40417aebd94e327 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 15:18:11 -0400 Subject: update; my branch is (partially) debugged now --- doc/todo/auto-create_tag_pages_according_to_a_template.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index ed681ac4d..63bcabaee 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -273,7 +273,7 @@ wrong direction. I've pushed an autotag branch of my own, which refactors things a bit. It is untested so far though. --[[Joey]] -* `verify_src_file` only called from Render.pm +* `verify_src_file` only called from Render.pm (actually, function removed) * Gets rid of `%del_files`. * Uses `%wikistate`. -- cgit v1.2.3 From c4afb13fa588643476535612e2279eae79534dcc Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 15:19:47 -0400 Subject: spelling --- debian/changelog | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/debian/changelog b/debian/changelog index b7ec99463..6b91fd3e6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -45,13 +45,13 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low * calendarmonth.tmpl: The month calendar is now put in a sidebar. * calendar: Improved display of arrows. * Rename --getctime to --gettime. (The old name still works for - backwards compatability.) + backwards compatibility.) * --gettime now also looks up last modification time. * Automatically run --gettime the first time ikiwiki is run on a given srcdir. (Use --no-gettime to disable.) * Add rcs_getmtime to plugin API; currently only implemented for git and svn. - * Optimise --gettime for git, so it's appropriatly screamingly + * Optimise --gettime for git, so it's appropriately screamingly fast. (This could be done for most other backends too.) * However, --gettime for git no longer follows renames. That would be slow, and whether a renamed wiki page is the same page is really @@ -1146,7 +1146,7 @@ ikiwiki (2.55) unstable; urgency=low * attachment: Do not escape _ when determining attachment filenames. * Rebuild pages that change their type. (Gabriel McManus) * monotone: Add support for rename, delete, and also diff. (William Uther) - * toggle: Fix incompatability between javascript and webkit. + * toggle: Fix incompatibility between javascript and webkit. * bzr: Add support for rename and delete. (Jelmer Vernooij) * attachment: Use relative paths when inserting links. * toggle: Fix for when html got tidied. Closes: #492529 (Enrico Zini) @@ -2133,7 +2133,7 @@ ikiwiki (2.6) unstable; urgency=low - relax asumption about the possible submit values (use "Save Page" explicitly); - de-hardcode the submit buttons from the editpage template - (This was needed for compatability with a bug in CGI::FormBuilder + (This was needed for compatibility with a bug in CGI::FormBuilder 3.0401, but ikiwiki already needs a newer version.) * Pass buttons to all other formbuilder_setup hooks too. * Add color parameter to postsparkline. Closes: #438900 @@ -2182,7 +2182,7 @@ ikiwiki (2.4) unstable; urgency=low * Make the toc plugin use html-compatible anchors. This is necessary since most web sites serve ikiwiki xhtml files as text/html and mozilla browsers - get confused. So it's best for ikiwiki to follow the compatability + get confused. So it's best for ikiwiki to follow the compatibility recommendations in appendix C of the XHTML spec. Closes: #432045 * Support building on systems that lack asprintf. * mercurial getctime is currently broken, apparently by some change in @@ -2680,7 +2680,7 @@ ikiwiki (1.41) unstable; urgency=low * Gettext 1.04 or up is needed for the OO interface that ikiwiki needs, if an older version is installed, just don't gettext strings, instead of crashing. - * Added smileys for Moin Moin compatability. + * Added smileys for Moin Moin compatibility. * Fix handling of discussion links on discussion pages when l10n is used. * Make gitorigin_branch and gitmaster_branch configurable via the setup file. Closes: #408599 @@ -2988,7 +2988,7 @@ ikiwiki (1.29) unstable; urgency=low * Note that plugins that accessed this variable will need to be updated! The plugin interface has been increased to version 1.01 for this change. As few plugins use %renderedfiles I haven't done anything else to ensure - compatability of old plugins. + compatibility of old plugins. * Add will_render function to the plugin interface, used to register that a page renders a destination file, and do some security checks. Previously but no longer rendered files will be cleaned up. @@ -3326,7 +3326,7 @@ ikiwiki (1.13) unstable; urgency=low treating the GlobList as a very limited microlanguage that is transformed to perl code that does the matching. * The old GlobList format is deprecated, and I encourage users to switch to - using the new PageSpec format. Compatability with the old format will be + using the new PageSpec format. Compatibility with the old format will be removed at some point, possibly by 2.0. * Wiki rebuild needed on upgrade to this version due to PageSpec change. * Add support for creation_month and creation_year to PageSpec. @@ -3385,7 +3385,7 @@ ikiwiki (1.11) unstable; urgency=low This will be the page that a source page will be part of, which is different than the source page for inlined pages. * Audited all plugins to endure they pass (page, destpage) to htmllink - appropriatly. This means inlining of various plugins will not work + appropriately. This means inlining of various plugins will not work properly, with correct links generated. -- Joey Hess <joeyh@debian.org> Thu, 27 Jul 2006 20:51:23 -0400 -- cgit v1.2.3 From 9ed523d762afd74c3004a07fc8ee12daa9354813 Mon Sep 17 00:00:00 2001 From: "http://hendry.iki.fi/" <http://hendry.iki.fi/@web> Date: Wed, 21 Apr 2010 19:21:38 +0000 Subject: --- doc/bugs/Comments_dissapeared.mdwn | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/doc/bugs/Comments_dissapeared.mdwn b/doc/bugs/Comments_dissapeared.mdwn index c7403f0f1..830c3519f 100644 --- a/doc/bugs/Comments_dissapeared.mdwn +++ b/doc/bugs/Comments_dissapeared.mdwn @@ -34,14 +34,28 @@ I have tried rebuilding on my squeeze system and still comments don't appear. An I was worried is was due to a time skew problem I was experiencing on my VPS in the last month, though the time is right now and still comments do not appear on blog posts like <http://natalian.org/archives/2010/03/25/BBC_News_complaints/> -# Getting closer +# Debugging templates - hendry@webconverger templates$ for i in *.tmpl; do ./test-template.perl $i || echo $i has an error; done - HTML::Template->new() : At least one <TMPL_IF> or <TMPL_UNLESS> not terminated at end of file! at /usr/share/perl5/HTML/Template.pm line 2351. - page.tmpl has an error - hendry@webconverger templates$ cat test-template.perl +`sudo apt-get install libhtml-template-compiled-perl` + + hendry@webconverger templates$ cat test-template.perl #!/usr/bin/perl - use HTML::Template; - my $htc = HTML::Template->new(filename => "$ARGV[0]"); + use HTML::Template::Compiled; + local $HTML::Template::Compiled::DEBUG = 1; + my $htc = HTML::Template::Compiled->new( + filename => "$ARGV[0]", + ); + eval { + print $htc->output; + }; + if ($@) { + # reports as text + my $msg = $htc->debug_code; + # reports as a html table + my $msg_html = $htc->debug_code('html'); + } + hendry@webconverger templates$ ./test-template.perl page.tmpl + Missing closing tag for 'IF' atend of page.tmpl line 159 + I think the problem was before that it was `<TMPL_IF COMMENTS>` and now it is `<TMPL_IF NAME="COMMENTS">` ? -- cgit v1.2.3 From 204c0a63f3fd7673dac83da6aa5f9c9e3cc9a6c5 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 15:22:05 -0400 Subject: document tag_autocreate --- debian/changelog | 2 ++ doc/plugins/tag.mdwn | 3 +++ doc/roadmap.mdwn | 1 + 3 files changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index b7ec99463..d66b5e4d4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,8 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low [ Joey Hess ] + * tag: Automatic creation of tag pages can now be enabled using + the tag_autocreate setting. (David Riebenbauer) * bzr: Fix bzr log parsing to work with bzr 2.0. (liw) * comments: Fix missing entity encoding in title. * txt: Add a special case for robots.txt. diff --git a/doc/plugins/tag.mdwn b/doc/plugins/tag.mdwn index 8ff70a069..bdf39d7e8 100644 --- a/doc/plugins/tag.mdwn +++ b/doc/plugins/tag.mdwn @@ -8,6 +8,9 @@ These directives allow tagging pages. It also provides the `tagged()` [[ikiwiki/PageSpec]], which can be used to match pages that are tagged with a specific tag. +If the `tag_autocreate` setting is enabled, tag pages will automatically be +created as needed. + [[!if test="enabled(tag)" then=""" This wiki has the tag plugin enabled, so you'll see a note below that this page is tagged with the "tags" tag. diff --git a/doc/roadmap.mdwn b/doc/roadmap.mdwn index 0c7bf2fa8..8e2a01827 100644 --- a/doc/roadmap.mdwn +++ b/doc/roadmap.mdwn @@ -78,6 +78,7 @@ Probably incomplete list: * Make pagespecs match relative by default? (see [[discussion]]) * Flip wikilinks? (see [[todo/link_plugin_perhaps_too_general?]]) * YADA format setup files per default? +* Enable `tag_autocreate` by default. In general, we try to use [[ikiwiki-transition]] or forced rebuilds on upgrade to deal with changes that break compatability. Some things that -- cgit v1.2.3 From 86e73e42e835821984fdf6dc5671dae06cec5f90 Mon Sep 17 00:00:00 2001 From: "http://hendry.iki.fi/" <http://hendry.iki.fi/@web> Date: Wed, 21 Apr 2010 19:48:31 +0000 Subject: --- doc/bugs/Comments_dissapeared.mdwn | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/bugs/Comments_dissapeared.mdwn b/doc/bugs/Comments_dissapeared.mdwn index 830c3519f..787f18c98 100644 --- a/doc/bugs/Comments_dissapeared.mdwn +++ b/doc/bugs/Comments_dissapeared.mdwn @@ -59,3 +59,11 @@ I was worried is was due to a time skew problem I was experiencing on my VPS in I think the problem was before that it was `<TMPL_IF COMMENTS>` and now it is `<TMPL_IF NAME="COMMENTS">` ? + + + +# Solved + +A merge with the templates in master with my [html5](http://git.webconverger.org/?p=ikiwiki;a=shortlog;h=refs/heads/html5) branch looks like it has solved the problem. Also see [[bugs/html5_support]]. + +[[bugs/done]] -- cgit v1.2.3 From e3ea28f8c7fb9682d9e5bea32de835cee7605846 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 15:53:44 -0400 Subject: update, tag deletion bug --- ...uto-create_tag_pages_according_to_a_template.mdwn | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index 63bcabaee..d7637ef1b 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -152,12 +152,12 @@ consider this a feature, not a bug) Todo/Bugs: * Will still create a page even if there's a page other than `$tag` under -`tagbase` satisfying the tag link. +`tagbase` satisfying the tag link. (details? --[[Joey]]) * Call from `IkiWiki.pm` to `Render.pm`, which adds a module dependency in the -wrong direction. +wrong direction. (fixed --[[Joey]] ) * Add files to RCS. * Unit tests. -* Proper documentation. +* Proper documentation. (fixed (mostly) --[[Joey]]) --[[David_Riebenbauer]] @@ -273,9 +273,17 @@ wrong direction. I've pushed an autotag branch of my own, which refactors things a bit. It is untested so far though. --[[Joey]] -* `verify_src_file` only called from Render.pm (actually, function removed) -* Gets rid of `%del_files`. -* Uses `%wikistate`. +--- + +Known bugs in my branch (probably also in David's): + +* Does not remember that a tag was deleted. + + The code to do that only works if, at the same time the tag + is deleted, one of the pages that has the tag is modified. + That's because `add_autofile` needs to be called before it's + aware the autofile exists, and if it's not aware, it does not + record it as a deleted autofile. [f3abeac919c4736429bd3362af6edf51ede8e7fe]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f3abeac919c4736429bd3362af6edf51ede8e7fe (commitdiff for f3abeac919c4736429bd3362af6edf51ede8e7fe) [4af4d26582f0c2b915d7102fb4a604b176385748]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=4af4d26582f0c2b915d7102fb4a604b176385748 (commitdiff for 4af4d26582f0c2b915d7102fb4a604b176385748) -- cgit v1.2.3 From 2a0e3787a056b160843eca263c82d591c7161988 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 15:54:18 -0400 Subject: bugfixes --- IkiWiki/Render.pm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 14f6f9d5f..09c9121f3 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -681,18 +681,18 @@ sub gen_autofile ($$$) { my $autofile=shift; my $pages=shift; my $del=shift; - + if (srcfile($autofile, 1) || file_pruned($autofile)) { return; } - my $file="$config{srcdir}/$autofile" =~ /$config{wiki_file_regexp}/; # untaint + my ($file)="$config{srcdir}/$autofile" =~ /$config{wiki_file_regexp}/; # untaint if (! defined $file || -l $file || -d _ || -e _) { return; } if ((!defined $file) || - (exists $wikistate{$autofiles{$autofile}{plugin}}{autofile_deleted})) { + (exists $wikistate{$autofiles{$autofile}{plugin}}{deleted_autofile}{$autofile})) { return; } @@ -701,8 +701,8 @@ sub gen_autofile ($$$) { return; } - if (grep { $_ eq $file } @$del) { - $wikistate{$autofiles{$autofile}{plugin}}{autofile_deleted}=1; + if (grep { $_ eq $autofile } @$del) { + $wikistate{$autofiles{$autofile}{plugin}}{deleted_autofile}{$autofile}=1; return; } -- cgit v1.2.3 From a71b92ed5c5572a1384367f8a90e1fc489b3c660 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 15:59:39 -0400 Subject: remember autofiles always This fixes the problem that it did not remember if an autofile is deleted, unless a plugin happened to register the autofile at the same time. With the new code, we just never recreate an autofile more than once. Only downside is that the list of autofiles is never pruned either. And I don't really see a way to prune it. --- IkiWiki/Render.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 09c9121f3..b3afabf32 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -692,7 +692,7 @@ sub gen_autofile ($$$) { } if ((!defined $file) || - (exists $wikistate{$autofiles{$autofile}{plugin}}{deleted_autofile}{$autofile})) { + (exists $wikistate{$autofiles{$autofile}{plugin}}{autofile}{$autofile})) { return; } @@ -702,11 +702,11 @@ sub gen_autofile ($$$) { } if (grep { $_ eq $autofile } @$del) { - $wikistate{$autofiles{$autofile}{plugin}}{deleted_autofile}{$autofile}=1; return; } $autofiles{$autofile}{generator}->(); + $wikistate{$autofiles{$autofile}{plugin}}{autofile}{$autofile}=1; $pages->{$page}=1; return 1; } -- cgit v1.2.3 From 6a30b45e7521f98a3e94b04ff46eeeb7f80774ca Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 16:07:23 -0400 Subject: update --- ...o-create_tag_pages_according_to_a_template.mdwn | 28 ++++++++++++---------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index d7637ef1b..f10c2cdee 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -250,6 +250,12 @@ wrong direction. (fixed --[[Joey]] ) >>>> Yes, I forgot about that and that is a bug. I'll fix that. >>>> --[[David_Riebenbauer]] +>>>>> In my branch, it keeps a list of autofiles that were created, +>>>>> not deleted. And I think that turns out to be necessary, really. +>>>>> However, I see no way to clean out that list on deletion and +>>>>> manual recreation -- it still needs to remember it was once an autofile, +>>>>> in order to avoid recreating it if it's deleted yet again. --[[Joey]] + >>> * `autoindex` forgets that a page was deleted when it's no longer needed >>> anyway (this may be harder for `autotag`?) @@ -264,6 +270,13 @@ wrong direction. (fixed --[[Joey]] ) >>>> Good suggestion. Adding the files to RCS is on my todo list anyway. >>>> --[[David_Riebenbauer]] +>>>>> I think it may be better to allow the `add_autofile` caller +>>>>> to specify if it is added to RCS. In my branch, it can do +>>>>> so by just making the callback it registers call `rcs_add`; +>>>>> and I have tag do this. Other plugins might want autofiles +>>>>> that do not get checked in, conceivably. +>>>>> --[[Joey]] + > Regarding the call from `IkiWiki.pm` to `Render.pm`, wouldn't this be > quite easy to solve by moving `verify_src_file` to IkiWiki.pm? --[[smcv]] @@ -271,19 +284,8 @@ wrong direction. (fixed --[[Joey]] ) [[!template id=gitbranch branch=origin/autotag author="[[Joey]]"]] I've pushed an autotag branch of my own, which refactors -things a bit. It is untested so far though. --[[Joey]] - ---- - -Known bugs in my branch (probably also in David's): - -* Does not remember that a tag was deleted. - - The code to do that only works if, at the same time the tag - is deleted, one of the pages that has the tag is modified. - That's because `add_autofile` needs to be called before it's - aware the autofile exists, and if it's not aware, it does not - record it as a deleted autofile. +things a bit and fixes bugs around deletion/recreation. +I've tested it somewhat. --[[Joey]] [f3abeac919c4736429bd3362af6edf51ede8e7fe]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f3abeac919c4736429bd3362af6edf51ede8e7fe (commitdiff for f3abeac919c4736429bd3362af6edf51ede8e7fe) [4af4d26582f0c2b915d7102fb4a604b176385748]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=4af4d26582f0c2b915d7102fb4a604b176385748 (commitdiff for 4af4d26582f0c2b915d7102fb4a604b176385748) -- cgit v1.2.3 From fd6fb4c5071d9317b4388a0db6b97037cc010477 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 16:13:37 -0400 Subject: commit autocreated tag pages --- IkiWiki/Plugin/tag.pm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index d2a3d4dfd..c98dd80b2 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -79,11 +79,18 @@ sub gentag ($) { my $tagfile = newpagefile($tagpage, $config{default_pageext}); add_autofile($tagfile, "tag", sub { - debug(sprintf(gettext("creating tag page %s"), $tag)); + my $message=sprintf(gettext("creating tag page %s"), $tag); + debug($message); my $template=template("autotag.tmpl"); $template->param(tag => $tag); writefile($tagfile, $config{srcdir}, $template->output); + if ($config{rcs}) { + IkiWiki::disable_commit_hook(); + IkiWiki::rcs_add($tagfile); + IkiWiki::rcs_commit_staged($message, undef, undef); + IkiWiki::enable_commit_hook(); + } }); } } -- cgit v1.2.3 From 760b840e8f5af9e8ea0197bda783fd9b54a8ab7c Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 16:19:16 -0400 Subject: update --- doc/todo/auto-create_tag_pages_according_to_a_template.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index f10c2cdee..724a52ec9 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -281,6 +281,7 @@ wrong direction. (fixed --[[Joey]] ) > quite easy to solve by moving `verify_src_file` to IkiWiki.pm? --[[smcv]] >> True. I'll do that. --[[David_Riebenbauer]] +>> Fixed in my branch --[[Joey]] [[!template id=gitbranch branch=origin/autotag author="[[Joey]]"]] I've pushed an autotag branch of my own, which refactors -- cgit v1.2.3 From b21db4197802ebd4d268b81b3df9448aa8108742 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Wed, 21 Apr 2010 20:23:19 +0000 Subject: elide an older patch that's no longer under discussion --- ...o-create_tag_pages_according_to_a_template.mdwn | 81 +--------------------- 1 file changed, 1 insertion(+), 80 deletions(-) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index f10c2cdee..e993a9aa4 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -15,86 +15,7 @@ A new setting is used to enable or disable auto-create tag pages, `tag_autocreat The new tag file is created during the preprocess phase. The new tag file is then complied during the change phase. -_tag.pm from version 3.01_ - - - --- tag.pm 2009-02-06 10:26:03.000000000 -0700 - +++ tag_new.pm 2009-02-06 12:17:19.000000000 -0700 - @@ -14,6 +14,7 @@ - hook(type => "preprocess", id => "tag", call => \&preprocess_tag, scan => 1); - hook(type => "preprocess", id => "taglink", call => \&preprocess_taglink, scan => 1); - hook(type => "pagetemplate", id => "tag", call => \&pagetemplate); - + hook(type => "change", id => "tag", call => \&change); - } - - sub getopt () { - @@ -36,6 +37,36 @@ - safe => 1, - rebuild => 1, - }, - + tag_autocreate => { - + type => "boolean", - + example => 0, - + description => "Auto-create the new tag pages, uses autotagpage.tmpl ", - + safe => 1, - + rebulid => 1, - + }, - +} - + - +my $autocreated_page = 0; - + - +sub gen_tag_page($) { - + my $tag=shift; - + - + my $tag_file=$tag.'.'.$config{default_pageext}; - + return if (-f $config{srcdir}.$tag_file); - + - + my $template=template("autotagpage.tmpl"); - + $template->param(tag => $tag); - + writefile($tag_file, $config{srcdir}, $template->output); - + $autocreated_page = 1; - + - + if ($config{rcs}) { - + IkiWiki::disable_commit_hook(); - + IkiWiki::rcs_add($tag_file); - + IkiWiki::rcs_commit_staged( - + gettext("Automatic tag page generation"), - + undef, undef); - + IkiWiki::enable_commit_hook(); - + } - } - - sub tagpage ($) { - @@ -47,6 +78,10 @@ - $tag=~y#/#/#s; # squash dups - } - - + if (defined $config{tag_autocreate} && $config{tag_autocreate} ) { - + gen_tag_page($tag); - + } - + - return $tag; - } - - @@ -125,4 +160,18 @@ - } - } - - +sub change(@) { - + return unless($autocreated_page); - + $autocreated_page = 0; - + - + # This refresh/saveindex is to complie the autocreated tag pages - + IkiWiki::refresh(); - + IkiWiki::saveindex(); - + - + # This refresh/saveindex is to fix the Tags link - + # With out this additional refresh/saveindex the tag link displays ?tag - + IkiWiki::refresh(); - + IkiWiki::saveindex(); - +} - + - +*see git history of this page if you want the patch --[[smcv]]* This uses a [[template|wikitemplates]] called `autotagpage.tmpl`, here is my template file: -- cgit v1.2.3 From ffe9fd8eb14cedaf31477dbce72c28dd38cc78ae Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Wed, 21 Apr 2010 20:30:14 +0000 Subject: suppressing auto-creation can be quite counter-intuitive --- ...o-create_tag_pages_according_to_a_template.mdwn | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index e993a9aa4..5a1aff928 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -177,6 +177,32 @@ wrong direction. (fixed --[[Joey]] ) >>>>> manual recreation -- it still needs to remember it was once an autofile, >>>>> in order to avoid recreating it if it's deleted yet again. --[[Joey]] +>>>>>> Are these really the semantics we want? It seems strange to me +>>>>>> that this: +>>>>>> +>>>>>> * tag a page as foo +>>>>>> * tags/foo automatically appears +>>>>>> * delete tags/foo +>>>>>> * create tags/foo manually +>>>>>> * delete tags/foo again +>>>>>> * tags/foo isn't automatically created +>>>>>> +>>>>>> isn't the same as this: +>>>>>> +>>>>>> * create tags/foo +>>>>>> * delete tags/foo +>>>>>> * tag a page as foo +>>>>>> * tags/foo automatically appears +>>>>>> +>>>>>> or even this: +>>>>>> +>>>>>> * create tags/foo +>>>>>> * tag a page as foo +>>>>>> * delete tags/foo +>>>>>> * tags/foo automatically appears (?) +>>>>>> +>>>>>> --[[smcv]] + >>> * `autoindex` forgets that a page was deleted when it's no longer needed >>> anyway (this may be harder for `autotag`?) -- cgit v1.2.3 From 463ba55dce0d07e97fa44500146e850f72d7ea24 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 16:33:03 -0400 Subject: note re includes --- doc/todo/auto_rebuild_on_template_change.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/todo/auto_rebuild_on_template_change.mdwn b/doc/todo/auto_rebuild_on_template_change.mdwn index b5c107915..a112cb9da 100644 --- a/doc/todo/auto_rebuild_on_template_change.mdwn +++ b/doc/todo/auto_rebuild_on_template_change.mdwn @@ -35,6 +35,10 @@ suffice. (This would also help to clear up the tricky disctinction between wikitemplates and in-wiki templates.) +Note also that when using templates from "$srcdir/templates/", `no_includes` +needs to be set. Currently this is done by the two plugins that use +such templates, while includes are allowed in `templatedir`. + > 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. -- cgit v1.2.3 From 1336a3270b664dbd548c6ad66ec981d5fa24a953 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 16:36:58 -0400 Subject: response --- doc/todo/auto-create_tag_pages_according_to_a_template.mdwn | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index 254ec42b5..32870dd3d 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -203,6 +203,12 @@ wrong direction. (fixed --[[Joey]] ) >>>>>> >>>>>> --[[smcv]] +>>>>>>> I agree that the last of these is not desired. It could be avoided +>>>>>>> by extending the list of autofiles to include those that were not +>>>>>>> created due to the file/page already existing. +>>>>>>> +>>>>>>> Hmm, that would fix the previous scenario too. --[[Joey]] + >>> * `autoindex` forgets that a page was deleted when it's no longer needed >>> anyway (this may be harder for `autotag`?) -- cgit v1.2.3 From 167964b68661de57983993efd7261a75da661665 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 16:41:36 -0400 Subject: remember autofiles that were tried and failed to be added This way, if an autofile is registered for a file that already exists, it is remembered that it was tried, and it doesn't get recreated when removed. --- IkiWiki/Render.pm | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index b3afabf32..c3e07baf6 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -682,20 +682,29 @@ sub gen_autofile ($$$) { my $pages=shift; my $del=shift; - if (srcfile($autofile, 1) || file_pruned($autofile)) { + if (file_pruned($autofile)) { return; } - + my ($file)="$config{srcdir}/$autofile" =~ /$config{wiki_file_regexp}/; # untaint - if (! defined $file || -l $file || -d _ || -e _) { + if (! defined $file) { + return; + } + + # Remember autofiles that were tried, and never try them again later. + if (exists $wikistate{$autofiles{$autofile}{plugin}}{autofile}{$autofile}) { return; } + $wikistate{$autofiles{$autofile}{plugin}}{autofile}{$autofile}=1; - if ((!defined $file) || - (exists $wikistate{$autofiles{$autofile}{plugin}}{autofile}{$autofile})) { + if (srcfile($autofile, 1) || file_pruned($autofile)) { return; } + if (-l $file || -d _ || -e _) { + return; + } + my $page = pagename($file); if ($pages->{$page}) { return; @@ -706,7 +715,6 @@ sub gen_autofile ($$$) { } $autofiles{$autofile}{generator}->(); - $wikistate{$autofiles{$autofile}{plugin}}{autofile}{$autofile}=1; $pages->{$page}=1; return 1; } -- cgit v1.2.3 From 8cde2365e43f1c96432dcedb378be55d2308dd08 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 19:09:59 -0400 Subject: add separate template variable for tag page and sanitize displayed tag name --- IkiWiki/Plugin/tag.pm | 3 ++- templates/autotag.tmpl | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index c98dd80b2..6a6517671 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -83,7 +83,8 @@ sub gentag ($) { debug($message); my $template=template("autotag.tmpl"); - $template->param(tag => $tag); + $template->param(tag => IkiWiki::basename($tag)); + $template->param(tagpage => $tagpage); writefile($tagfile, $config{srcdir}, $template->output); if ($config{rcs}) { IkiWiki::disable_commit_hook(); diff --git a/templates/autotag.tmpl b/templates/autotag.tmpl index a8824171b..7b0d4c90f 100644 --- a/templates/autotag.tmpl +++ b/templates/autotag.tmpl @@ -1,3 +1,3 @@ -## Pages tagged <TMPL_VAR TAG> ## +## Pages tagged <TMPL_VAR TAGNAME> ## [[!inline pages="tagged(<TMPL_VAR TAG>)" actions="no" archive="yes"]] -- cgit v1.2.3 From 1a09cddd39d4e15c442973dc256bf91b3c27997c Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 19:42:00 -0400 Subject: fix false positive in link_types_changed loadindex does not bother populating oldtypedlinks if there is no link type. However, the code in link_types_changed assumed that if oldtypedlinks is not defined, and typedlinks is, they must differ. --- IkiWiki/Render.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index bbf8f915e..0e5336f22 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -526,7 +526,7 @@ sub link_types_changed ($$) { my $old = shift; return 0 if !defined $new && !defined $old; - return 1 if !defined $new || !defined $old; + return 1 if (!defined $new && %$old) || (!defined $old && %$new); while (my ($type, $links) = each %$new) { foreach my $link (keys %$links) { -- cgit v1.2.3 From 673d6c958050b7ce07d5d8512d5370f9531225cd Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 19:45:56 -0400 Subject: add missing undef guard in derel --- IkiWiki.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 4084d4997..8af290745 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2245,7 +2245,7 @@ sub derel ($$) { if ($path =~ m!^\./!) { $from=~s#/?[^/]+$## if defined $from; $path=~s#^\./##; - $path="$from/$path" if length $from; + $path="$from/$path" if defined $from && length $from; } return $path; -- cgit v1.2.3 From 77779dc4a09a9b686935e8e615cf2502f7125bb4 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 19:46:27 -0400 Subject: pass pagespec parameters along from match_tagged --- IkiWiki/Plugin/tag.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index 7a85874f6..62e0cc3b8 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -125,7 +125,9 @@ sub pagetemplate (@) { package IkiWiki::PageSpec; sub match_tagged ($$;@) { - return match_link($_[0], IkiWiki::Plugin::tag::tagpage($_[1]), linktype => 'tag'); + my $page=shift; + my $glob=shift; + return match_link($page, IkiWiki::Plugin::tag::tagpage($glob), linktype => 'tag', @_); } 1 -- cgit v1.2.3 From 0e2b5ebe314c617ae4139b5daad314e01208d37b Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 19:49:11 -0400 Subject: clarify --- IkiWiki/Plugin/tag.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index 72ae682f3..dd7583ab2 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -170,8 +170,8 @@ package IkiWiki::PageSpec; sub match_tagged ($$;@) { my $page=shift; - my $glob=shift; - return match_link($page, IkiWiki::Plugin::tag::taglink($glob), linktype => 'tag', @_); + my $glob=IkiWiki::Plugin::tag::taglink(shift); + return match_link($page, $glob, linktype => 'tag', @_); } 1 -- cgit v1.2.3 From 752ccf8b48bab173839b5c7892e9868ee71846f0 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 20:08:23 -0400 Subject: fixes --- IkiWiki/Plugin/tag.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index dd7583ab2..a7f37a512 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -79,12 +79,12 @@ sub gentag ($) { my $tagfile = newpagefile($tagpage, $config{default_pageext}); add_autofile($tagfile, "tag", sub { - my $message=sprintf(gettext("creating tag page %s"), $tag); + my $message=sprintf(gettext("creating tag page %s"), $tagpage); debug($message); my $template=template("autotag.tmpl"); - $template->param(tag => IkiWiki::basename($tag)); - $template->param(tagpage => $tagpage); + $template->param(tagname => IkiWiki::basename($tag)); + $template->param(tag => $tag); writefile($tagfile, $config{srcdir}, $template->output); if ($config{rcs}) { IkiWiki::disable_commit_hook(); -- cgit v1.2.3 From 129cd00bdb03e32df8645b12138cb4c79952775e Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 20:15:11 -0400 Subject: remove broken ./tag support The commit that added the (working) support for using /tag to override tagbase also tried to make ./tag work. Problem is, tags are links, and ./foo is not a valid link (though I think there's a wishlist about it). So, using ./tag really resulted in tag creation links that led to a "bad page name" error. And even if the tag were created in the right place, the link didn't go to it. --- IkiWiki/Plugin/tag.pm | 2 +- doc/ikiwiki/directive/tag.mdwn | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index 62e0cc3b8..8ec08e936 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -39,7 +39,7 @@ sub getsetup () { sub tagpage ($) { my $tag=shift; - if ($tag !~ m{^\.?/} && + if ($tag !~ m{^/} && defined $config{tagbase}) { $tag="/".$config{tagbase}."/".$tag; $tag=~y#/#/#s; # squash dups diff --git a/doc/ikiwiki/directive/tag.mdwn b/doc/ikiwiki/directive/tag.mdwn index 64736f8cd..807a96f25 100644 --- a/doc/ikiwiki/directive/tag.mdwn +++ b/doc/ikiwiki/directive/tag.mdwn @@ -28,7 +28,7 @@ into the `link()` [[ikiwiki/PageSpec]] you use: e.g., if your tagbase is If you want to override the tagbase for a particular tag, you can use something like this: - \[[!tag ./foo]] + \[[!tag /foo]] \[[!taglink /foo]] [[!meta robots="noindex, follow"]] -- cgit v1.2.3 From 0bc76be8a7201de4bfaa74b7aacc0b280c097699 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 20:32:19 -0400 Subject: reword news --- debian/NEWS | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/debian/NEWS b/debian/NEWS index 25ebed0b4..9fd882ad2 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -1,19 +1,26 @@ ikiwiki (3.20100406) unstable; urgency=low - - The title_natural sort method (as used by the inline directive, etc) - have been moved to the new sortnaturally plugin, which is not enabled - by default since it requires the Sort::Naturally perl module. + + This version of ikiwiki has a lot of changes that you need to know about. + + The --getctime switch is renamed to --gettimes, and it also gets the + file modification time. And it's a lot faster (when using git). But + the really important change is, you don't have to remember to use this + switch. Now ikiwiki will do it when it needs to. Starting from this version, the `tagged()` pagespec only matches tags, not regular wikilinks. If your wiki accidentially relied on the old, buggy behavior, you might need to change pagespecs to use `link()`. + The title_natural sort method (as used by the inline directive, etc) + have been moved to the new sortnaturally plugin, which is not enabled + by default since it requires the Sort::Naturally perl module. + Due to the above and other changes, all wikis need to be rebuilt on upgrade to this version. If you listed your wiki in /etc/ikiwiki/wikilist this will be done automatically when the Debian package is upgraded. Or use ikiwiki-mass-rebuild to force a rebuild. - -- Simon McVittie <smcv@debian.org> Tue, 06 Apr 2010 20:53:07 +0100 + -- Joey Hess <joeyh@debian.org> Wed, 21 Apr 2010 20:31:29 -0400 ikiwiki (3.20091017) unstable; urgency=low -- cgit v1.2.3 From d048e9c64aca24b8e064aaf1608862b50c427de2 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 20:39:20 -0400 Subject: turn on tag_autocreate by default if tagbase is set --- IkiWiki/Plugin/tag.pm | 5 +++-- debian/NEWS | 4 ++++ doc/ikiwiki/directive/tag.mdwn | 3 ++- doc/plugins/tag.mdwn | 8 ++++++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index cd7ecc212..62f030f4e 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -36,7 +36,7 @@ sub getsetup () { }, tag_autocreate => { type => "boolean", - example => 0, + example => 1, description => "autocreate new tag pages?", safe => 1, rebuild => undef, @@ -67,7 +67,8 @@ sub htmllink_tag ($$$;@) { sub gentag ($) { my $tag=shift; - if ($config{tag_autocreate}) { + if ($config{tag_autocreate} || + ($config{tagbase} && ! defined $config{tag_autocreate})) { my $tagpage=taglink($tag); if ($tagpage=~/^\.\/(.*)/) { $tagpage=$1; diff --git a/debian/NEWS b/debian/NEWS index 9fd882ad2..8b87bc601 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -11,6 +11,10 @@ ikiwiki (3.20100406) unstable; urgency=low not regular wikilinks. If your wiki accidentially relied on the old, buggy behavior, you might need to change pagespecs to use `link()`. + Tag pages can automatically be created as new tags are used. This + feature is enabled by default if you have configured a tagbase. It + can be turned on or off using the `tag_autocreate` setting. + The title_natural sort method (as used by the inline directive, etc) have been moved to the new sortnaturally plugin, which is not enabled by default since it requires the Sort::Naturally perl module. diff --git a/doc/ikiwiki/directive/tag.mdwn b/doc/ikiwiki/directive/tag.mdwn index 807a96f25..c8d9b9816 100644 --- a/doc/ikiwiki/directive/tag.mdwn +++ b/doc/ikiwiki/directive/tag.mdwn @@ -19,7 +19,8 @@ instead: Note that if the wiki is configured to use a tagbase, then the tags will be located under a base directory, such as "tags/". This is a useful way to avoid having to write the full path to tags, if you want to keep them -grouped together out of the way. +grouped together out of the way. Also, since ikiwiki then knows where to put +tags, it will automatically create tag pages when new tags are used. Bear in mind that specifying a tagbase means you will need to incorporate it into the `link()` [[ikiwiki/PageSpec]] you use: e.g., if your tagbase is diff --git a/doc/plugins/tag.mdwn b/doc/plugins/tag.mdwn index bdf39d7e8..8e1286e62 100644 --- a/doc/plugins/tag.mdwn +++ b/doc/plugins/tag.mdwn @@ -8,8 +8,12 @@ These directives allow tagging pages. It also provides the `tagged()` [[ikiwiki/PageSpec]], which can be used to match pages that are tagged with a specific tag. -If the `tag_autocreate` setting is enabled, tag pages will automatically be -created as needed. +The `tagbase` setting can be used to make tags default to being put in a +particular subdirectory. + +The `tag_autocreate` setting can be used to control whether new tag pages +are created as needed. It defaults to being done only if a `tagbase` is +set. [[!if test="enabled(tag)" then=""" This wiki has the tag plugin enabled, so you'll see a note below that this -- cgit v1.2.3 From 557912c723a6e8df320a3c6dae461956cf893f10 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 20:47:18 -0400 Subject: my autotag branch seems ready --- doc/todo/auto-create_tag_pages_according_to_a_template.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index 32870dd3d..b05e1db3d 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -239,7 +239,7 @@ wrong direction. (fixed --[[Joey]] ) [[!template id=gitbranch branch=origin/autotag author="[[Joey]]"]] I've pushed an autotag branch of my own, which refactors things a bit and fixes bugs around deletion/recreation. -I've tested it somewhat. --[[Joey]] +I've tested it fairly thouroughly. --[[Joey]] [f3abeac919c4736429bd3362af6edf51ede8e7fe]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f3abeac919c4736429bd3362af6edf51ede8e7fe (commitdiff for f3abeac919c4736429bd3362af6edf51ede8e7fe) [4af4d26582f0c2b915d7102fb4a604b176385748]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=4af4d26582f0c2b915d7102fb4a604b176385748 (commitdiff for 4af4d26582f0c2b915d7102fb4a604b176385748) -- cgit v1.2.3 From 32dd388f8dbb1f52a46c40a2e0b9a00eca43f40e Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 21:38:53 -0400 Subject: indent --- IkiWiki.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 8af290745..0791e1e75 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2221,7 +2221,7 @@ sub merge_influences { my $anded=shift; if (! $anded || (($this || %{$this->[1]}) && - ($other || %{$other->[1]}))) { + ($other || %{$other->[1]}))) { foreach my $influence (keys %{$other->[1]}) { $this->[1]{$influence} |= $other->[1]{$influence}; } -- cgit v1.2.3 From 6c5f315970b0e7a8473e9a1151229459781192a8 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 21:38:58 -0400 Subject: argh. head exploding. --- doc/bugs/depends_simple_mixup.mdwn | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/doc/bugs/depends_simple_mixup.mdwn b/doc/bugs/depends_simple_mixup.mdwn index 2603ff04c..2ebd53e85 100644 --- a/doc/bugs/depends_simple_mixup.mdwn +++ b/doc/bugs/depends_simple_mixup.mdwn @@ -18,6 +18,42 @@ not noticing that bugs dependeded on the page and needs to be updated. Ok.. Turns out this was not a problem with the actual influences calculation or dependency calculation code. Whew! `match_link` -just didn't set the influence correctly when failing. [[fixed|done]] +just didn't set the influence correctly when failing. fixed --[[Joey]] + +--- + +Update: Reopening this because the fix for it rather sucks. + +I made `match_link` return on failure an influence of +type DEPEND_LINKS. So, a tag page that inlines `tagged(foo)` +gets a `depends_simple` built up that contains link dependencies for +*every* page in the wiki. A very bloaty way to represent the dependency! + +Per [[dependency_types]], `link(done)` only needs to list in +`depends_simple` the pages that currently match. If a page is modified +to add the link, the regular dependency calculation code notices that +a new page matches. If a page that had the link is modified to remove it, +the `depends_simple` lets ikiwiki remember that the now non-matching page +matched before. + +Where that fell down was `!link(done)`. A page matching that was not added +to `depends_simple`, because the `link(done)` did not match it. If the page +is modified to add the link, the regular dependency calculation code +didn't notice, since the pagespec no longer matched. + +In this case, `depends_simple` needs to contain all pages +that do *not* match `link_done)`, but before my change, it contained +all pages that *do* match. After my change, it contained all pages. + +So, seems what is needed is a way for influence info to be manipulated by +the boolean operations that are applied. One way would be to have two +sets of influences be returned, one for successful matches, and one for +failed matches. Normally, these would be the same. For successful +`match_link`, the successful influence would be the page. +For failed `match_link`, the failed influence would be the page. + +Then, when NOTting a `*Reason`, swap the two sets of influences. +When ANDing/ORing, combine the individual sets. Querying the object for +influences should return only the successful influences. -- cgit v1.2.3 From 8cf6b7abf87818f9063b6ef672f20125de75249c Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 21:42:18 -0400 Subject: link fix --- doc/bugs/depends_simple_mixup.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/bugs/depends_simple_mixup.mdwn b/doc/bugs/depends_simple_mixup.mdwn index 2ebd53e85..4fe69a90a 100644 --- a/doc/bugs/depends_simple_mixup.mdwn +++ b/doc/bugs/depends_simple_mixup.mdwn @@ -31,7 +31,7 @@ type DEPEND_LINKS. So, a tag page that inlines `tagged(foo)` gets a `depends_simple` built up that contains link dependencies for *every* page in the wiki. A very bloaty way to represent the dependency! -Per [[dependency_types]], `link(done)` only needs to list in +Per [[todo/dependency_types]], `link(done)` only needs to list in `depends_simple` the pages that currently match. If a page is modified to add the link, the regular dependency calculation code notices that a new page matches. If a page that had the link is modified to remove it, -- cgit v1.2.3 From 09ff797682fd89380a4a71564ec02649af99851e Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 21:55:12 -0400 Subject: more wrongness --- doc/bugs/depends_simple_mixup.mdwn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/bugs/depends_simple_mixup.mdwn b/doc/bugs/depends_simple_mixup.mdwn index 4fe69a90a..472de6349 100644 --- a/doc/bugs/depends_simple_mixup.mdwn +++ b/doc/bugs/depends_simple_mixup.mdwn @@ -57,3 +57,8 @@ For failed `match_link`, the failed influence would be the page. Then, when NOTting a `*Reason`, swap the two sets of influences. When ANDing/ORing, combine the individual sets. Querying the object for influences should return only the successful influences. + +In light of this, commit f2b3d1341447cbf29189ab490daae418fbe5d02d seems +thuroughly wrong. So, what about influence info for other matches +like `!author(foo)` etc? Currently, none is returned, but it should +be a content influence. What about backlink influence data? -- cgit v1.2.3 From 17a89d3d19f3a04ca2686ff18df127e5afaf9577 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 21:57:12 -0400 Subject: update --- doc/plugins/tag/discussion.mdwn | 1 + doc/todo/auto-create_tag_pages_according_to_a_template.mdwn | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/plugins/tag/discussion.mdwn b/doc/plugins/tag/discussion.mdwn index 03dcb7b2f..dfd749252 100644 --- a/doc/plugins/tag/discussion.mdwn +++ b/doc/plugins/tag/discussion.mdwn @@ -28,3 +28,4 @@ See [[todo/auto-create tag pages according to a template]] -- Jeremy Schultz <jeremy.schultz@uleth.ca> +`tag_autocreate` can now enable this. --[[Joey]] diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index 32870dd3d..1e0a910f4 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -247,3 +247,5 @@ I've tested it somewhat. --[[Joey]] [da5d29f95f6e693e8c14be1b896cf25cf4fdb3c0]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=da5d29f95f6e693e8c14be1b896cf25cf4fdb3c0 (commitdiff for da5d29f95f6e693e8c14be1b896cf25cf4fdb3c0) [a358d74bef51dae31332ff27e897fe04834571e6]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=a358d74bef51dae31332ff27e897fe04834571e6 (commitdiff for a358d74bef51dae31332ff27e897fe04834571e6) [981400177d68a279f485727be3f013e68f0bf691]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=981400177d68a279f485727be3f013e68f0bf691 (commitdiff for 981400177d68a279f485727be3f013e68f0bf691) + +[[!tag done]] -- cgit v1.2.3 From 13325317a32529e02769baa5e61e6c401c675b27 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 22:04:03 -0400 Subject: backlink influence data seems ok --- doc/bugs/depends_simple_mixup.mdwn | 2 +- t/pagespec_match_list.t | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/bugs/depends_simple_mixup.mdwn b/doc/bugs/depends_simple_mixup.mdwn index 472de6349..e7b48f802 100644 --- a/doc/bugs/depends_simple_mixup.mdwn +++ b/doc/bugs/depends_simple_mixup.mdwn @@ -61,4 +61,4 @@ influences should return only the successful influences. In light of this, commit f2b3d1341447cbf29189ab490daae418fbe5d02d seems thuroughly wrong. So, what about influence info for other matches like `!author(foo)` etc? Currently, none is returned, but it should -be a content influence. What about backlink influence data? +be a content influence. (Backlink influence data is ok.) diff --git a/t/pagespec_match_list.t b/t/pagespec_match_list.t index 05dc012fe..ee5d60f88 100755 --- a/t/pagespec_match_list.t +++ b/t/pagespec_match_list.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 94; +use Test::More tests => 107; BEGIN { use_ok("IkiWiki"); } @@ -80,7 +80,7 @@ foreach my $spec ("* and link(bar)", "* or link(bar)") { } # a pagespec with backlinks() will add as an influence the page with the links -foreach my $spec ("bar or (backlink(foo) and !*.png)", "backlink(foo)") { +foreach my $spec ("bar or (backlink(foo) and !*.png)", "backlink(foo)", "!backlink(foo)") { pagespec_match_list("foo2", $spec, deptype => deptype("presence")); ok($IkiWiki::depends{foo2}{$spec} & $IkiWiki::DEPEND_PRESENCE); ok(! ($IkiWiki::depends{foo2}{$spec} & ($IkiWiki::DEPEND_CONTENT | $IkiWiki::DEPEND_LINKS))); -- cgit v1.2.3 From c98414e192285b2607ee9fcb27f0e8e00db5fb26 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Wed, 21 Apr 2010 23:08:54 -0400 Subject: added a test case for this bug Further analysis suggests fixing this might not be as dreadful as I first thought! --- doc/bugs/depends_simple_mixup.mdwn | 24 ++++++++++++++++++++++-- t/pagespec_match_list.t | 20 +++++++++++++++++++- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/doc/bugs/depends_simple_mixup.mdwn b/doc/bugs/depends_simple_mixup.mdwn index e7b48f802..79bfa8bdc 100644 --- a/doc/bugs/depends_simple_mixup.mdwn +++ b/doc/bugs/depends_simple_mixup.mdwn @@ -44,9 +44,11 @@ is modified to add the link, the regular dependency calculation code didn't notice, since the pagespec no longer matched. In this case, `depends_simple` needs to contain all pages -that do *not* match `link_done)`, but before my change, it contained +that do *not* match `link(done)`, but before my change, it contained all pages that *do* match. After my change, it contained all pages. +---- + So, seems what is needed is a way for influence info to be manipulated by the boolean operations that are applied. One way would be to have two sets of influences be returned, one for successful matches, and one for @@ -58,7 +60,25 @@ Then, when NOTting a `*Reason`, swap the two sets of influences. When ANDing/ORing, combine the individual sets. Querying the object for influences should return only the successful influences. -In light of this, commit f2b3d1341447cbf29189ab490daae418fbe5d02d seems +---- + +Would it be possible to avoid the complication of maintianing two sets of +influence info? + +Well, notice that the influence of `pagespec_match($page, "link(done)")` +is $page. Iff the match succeeds. + +Also, the influence of `pagespec_match($page, "!link(done)")` is +$page. Iff the (overall) match succeeds. + +Does that hold for all cases? If so, the code that populates +`depends_simple` could just test if the pagespec was successful, and +if not, avoid adding $page influences, while still adding any other, +non-$page influences. + +---- + +Hmm, commit f2b3d1341447cbf29189ab490daae418fbe5d02d seems thuroughly wrong. So, what about influence info for other matches like `!author(foo)` etc? Currently, none is returned, but it should be a content influence. (Backlink influence data is ok.) diff --git a/t/pagespec_match_list.t b/t/pagespec_match_list.t index ee5d60f88..27546e6ca 100755 --- a/t/pagespec_match_list.t +++ b/t/pagespec_match_list.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 107; +use Test::More tests => 115; BEGIN { use_ok("IkiWiki"); } @@ -27,6 +27,8 @@ IkiWiki::checkconfig(); $IkiWiki::pagectime{foo} = 2; $IkiWiki::pagectime{foo2} = 2; $IkiWiki::pagectime{foo3} = 1; +$IkiWiki::pagectime{foo4} = 1; +$IkiWiki::pagectime{foo5} = 1; $IkiWiki::pagectime{bar} = 3; $IkiWiki::pagectime{"post/1"} = 6; $IkiWiki::pagectime{"post/2"} = 6; @@ -69,12 +71,28 @@ foreach my $spec ("* and link(bar)", "* or link(bar)") { ok($IkiWiki::depends{foo2}{$spec} & $IkiWiki::DEPEND_PRESENCE); ok(! ($IkiWiki::depends{foo2}{$spec} & ($IkiWiki::DEPEND_CONTENT | $IkiWiki::DEPEND_LINKS))); ok($IkiWiki::depends_simple{foo2}{foo2} == $IkiWiki::DEPEND_LINKS); + ok($IkiWiki::depends_simple{foo2}{foo} != $IkiWiki::DEPEND_LINKS); %IkiWiki::depends_simple=(); %IkiWiki::depends=(); pagespec_match_list("foo3", $spec, deptype => deptype("links")); ok($IkiWiki::depends{foo3}{$spec} & $IkiWiki::DEPEND_LINKS); ok(! ($IkiWiki::depends{foo3}{$spec} & ($IkiWiki::DEPEND_CONTENT | $IkiWiki::DEPEND_PRESENCE))); ok($IkiWiki::depends_simple{foo3}{foo3} == $IkiWiki::DEPEND_LINKS); + ok($IkiWiki::depends_simple{foo3}{foo} != $IkiWiki::DEPEND_LINKS); + %IkiWiki::depends_simple=(); + %IkiWiki::depends=(); +} +# Above we tested that a link pagespec is influenced +# by the pages that currently contain the link. + +# Oppositely, a pagespec that tests for pages that do not have a link +# is not influenced by pages that currently contain the link, but +# is instead influenced by pages that currently do not (but that +# could be changed to have it). +foreach my $spec ("* and !link(bar)", "* and !(!(!link(bar)))") { + pagespec_match_list("foo2", $spec); + ok($IkiWiki::depends_simple{foo2}{foo2} != $IkiWiki::DEPEND_LINKS); + ok($IkiWiki::depends_simple{foo2}{foo} == $IkiWiki::DEPEND_LINKS); %IkiWiki::depends_simple=(); %IkiWiki::depends=(); } -- cgit v1.2.3 From ef34ea7c05189db8952b08d78aad718ccb64475a Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 00:07:25 -0400 Subject: fix test cases for dynamic influence calculation --- t/add_depends.t | 10 +++++++++- t/pagespec_match_list.t | 25 ++++++++++++++++++------- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/t/add_depends.t b/t/add_depends.t index 9b074818c..aa58fb0ff 100755 --- a/t/add_depends.t +++ b/t/add_depends.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 38; +use Test::More tests => 40; BEGIN { use_ok("IkiWiki"); } %config=IkiWiki::defaultconfig(); @@ -60,3 +60,11 @@ ok(! ($IkiWiki::depends{foo0}{"*"} & $IkiWiki::DEPEND_PRESENCE)); ok(add_depends("foo9", "*", deptype("monkey"))); ok($IkiWiki::depends{foo9}{"*"} & $IkiWiki::DEPEND_CONTENT); ok(! ($IkiWiki::depends{foo9}{"*"} & ($IkiWiki::DEPEND_PRESENCE | $IkiWiki::DEPEND_LINKS))); + +# Influences are added for dependencies involving links. +$pagesources{"foo"}="foo.mdwn"; +$links{foo}=[qw{bar}]; +$pagesources{"bar"}="bar.mdwn"; +$links{bar}=[qw{}]; +ok(add_depends("foo", "link(bar) and backlink(meep)")); +ok($IkiWiki::depends_simple{foo}{foo} == $IkiWiki::DEPEND_LINKS); diff --git a/t/pagespec_match_list.t b/t/pagespec_match_list.t index 27546e6ca..244ad9159 100755 --- a/t/pagespec_match_list.t +++ b/t/pagespec_match_list.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 115; +use Test::More tests => 126; BEGIN { use_ok("IkiWiki"); } @@ -71,19 +71,27 @@ foreach my $spec ("* and link(bar)", "* or link(bar)") { ok($IkiWiki::depends{foo2}{$spec} & $IkiWiki::DEPEND_PRESENCE); ok(! ($IkiWiki::depends{foo2}{$spec} & ($IkiWiki::DEPEND_CONTENT | $IkiWiki::DEPEND_LINKS))); ok($IkiWiki::depends_simple{foo2}{foo2} == $IkiWiki::DEPEND_LINKS); - ok($IkiWiki::depends_simple{foo2}{foo} != $IkiWiki::DEPEND_LINKS); %IkiWiki::depends_simple=(); %IkiWiki::depends=(); pagespec_match_list("foo3", $spec, deptype => deptype("links")); ok($IkiWiki::depends{foo3}{$spec} & $IkiWiki::DEPEND_LINKS); ok(! ($IkiWiki::depends{foo3}{$spec} & ($IkiWiki::DEPEND_CONTENT | $IkiWiki::DEPEND_PRESENCE))); ok($IkiWiki::depends_simple{foo3}{foo3} == $IkiWiki::DEPEND_LINKS); - ok($IkiWiki::depends_simple{foo3}{foo} != $IkiWiki::DEPEND_LINKS); %IkiWiki::depends_simple=(); %IkiWiki::depends=(); } -# Above we tested that a link pagespec is influenced -# by the pages that currently contain the link. + +# A link pagespec is influenced by the pages that currently contain the link. +# It is not influced by pages that do not currently contain the link, +# because if those pages were changed to contain it, regular dependency +# handling would be triggered. +foreach my $spec ("* and link(bar)", "link(bar)", "no_such_page or link(bar)") { + pagespec_match_list("foo2", $spec); + ok($IkiWiki::depends_simple{foo2}{foo2} == $IkiWiki::DEPEND_LINKS); + ok(! exists $IkiWiki::depends_simple{foo2}{foo}, $spec); + %IkiWiki::depends_simple=(); + %IkiWiki::depends=(); +} # Oppositely, a pagespec that tests for pages that do not have a link # is not influenced by pages that currently contain the link, but @@ -91,8 +99,8 @@ foreach my $spec ("* and link(bar)", "* or link(bar)") { # could be changed to have it). foreach my $spec ("* and !link(bar)", "* and !(!(!link(bar)))") { pagespec_match_list("foo2", $spec); - ok($IkiWiki::depends_simple{foo2}{foo2} != $IkiWiki::DEPEND_LINKS); - ok($IkiWiki::depends_simple{foo2}{foo} == $IkiWiki::DEPEND_LINKS); + ok(! exists $IkiWiki::depends_simple{foo2}{foo2}); + ok($IkiWiki::depends_simple{foo2}{foo} == $IkiWiki::DEPEND_LINKS, $spec); %IkiWiki::depends_simple=(); %IkiWiki::depends=(); } @@ -103,12 +111,14 @@ foreach my $spec ("bar or (backlink(foo) and !*.png)", "backlink(foo)", "!backli ok($IkiWiki::depends{foo2}{$spec} & $IkiWiki::DEPEND_PRESENCE); ok(! ($IkiWiki::depends{foo2}{$spec} & ($IkiWiki::DEPEND_CONTENT | $IkiWiki::DEPEND_LINKS))); ok($IkiWiki::depends_simple{foo2}{foo} == $IkiWiki::DEPEND_LINKS); + ok(! exists $IkiWiki::depends_simple{foo2}{foo2}); %IkiWiki::depends_simple=(); %IkiWiki::depends=(); pagespec_match_list("foo2", $spec, deptype => deptype("links")); ok($IkiWiki::depends{foo2}{$spec} & $IkiWiki::DEPEND_LINKS); ok(! ($IkiWiki::depends{foo2}{$spec} & ($IkiWiki::DEPEND_PRESENCE | $IkiWiki::DEPEND_CONTENT))); ok($IkiWiki::depends_simple{foo2}{foo} == $IkiWiki::DEPEND_LINKS); + ok(! exists $IkiWiki::depends_simple{foo2}{foo2}); %IkiWiki::depends_simple=(); %IkiWiki::depends=(); pagespec_match_list("foo2", $spec, deptype => deptype("presence", "links")); @@ -116,6 +126,7 @@ foreach my $spec ("bar or (backlink(foo) and !*.png)", "backlink(foo)", "!backli ok($IkiWiki::depends{foo2}{$spec} & $IkiWiki::DEPEND_LINKS); ok(! ($IkiWiki::depends{foo2}{$spec} & $IkiWiki::DEPEND_CONTENT)); ok($IkiWiki::depends_simple{foo2}{foo} == $IkiWiki::DEPEND_LINKS); + ok(! exists $IkiWiki::depends_simple{foo2}{foo2}); %IkiWiki::depends_simple=(); %IkiWiki::depends=(); pagespec_match_list("foo2", $spec); -- cgit v1.2.3 From bc6d6026093ae6f2bfd72a2c06887358a0e59b6b Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 00:10:13 -0400 Subject: add influence info for failed metadata matches This is needed so that when a negated pagespec like "!author(foo)" stops matching, due to the page being changed, ikiwiki knows that the match was influenced by the page content. --- IkiWiki/Plugin/meta.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm index 128a6342c..159008614 100644 --- a/IkiWiki/Plugin/meta.pm +++ b/IkiWiki/Plugin/meta.pm @@ -346,11 +346,11 @@ sub match { return IkiWiki::SuccessReason->new("$re matches $field of $page", $page => $IkiWiki::DEPEND_CONTENT, "" => 1); } else { - return IkiWiki::FailReason->new("$re does not match $field of $page", "" => 1); + return IkiWiki::FailReason->new("$re does not match $field of $page", $page => $IkiWiki::DEPEND_CONTENT, "" => 1); } } else { - return IkiWiki::FailReason->new("$page does not have a $field", "" => 1); + return IkiWiki::FailReason->new("$page does not have a $field", $page => $IkiWiki::DEPEND_CONTENT); } } -- cgit v1.2.3 From 2b175d7c1fe997277800c0d501332e96de475c6d Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 00:12:15 -0400 Subject: improved fix for depends_simple_mixup Avoid adding the page matched against as an influence for currently failing pagespec matches, while still adding any other influences. This avoids bloating depends_simple with lots of bogus influences when matching eg, "!link(done)". It's only necessary for the page being tested to be an influence of that if the page matches. --- IkiWiki.pm | 14 +++++++++++++- doc/bugs/depends_simple_mixup.mdwn | 6 +++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 0791e1e75..509f9ba2e 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1818,10 +1818,12 @@ sub add_depends ($$;$) { foreach my $p (keys %pagesources) { my $r=$sub->($p, location => $page); my $i=$r->influences; + my $static=$r->influences_static; foreach my $k (keys %$i) { + next unless $r || $static || $k eq $page; $depends_simple{$page}{lc $k} |= $i->{$k}; } - last if $r->influences_static; + last if $static; } $depends{$page}{$pagespec} |= $deptype; @@ -2136,6 +2138,9 @@ sub pagespec_match_list ($$;@) { my $r=$sub->($p, %params, location => $page); error(sprintf(gettext("cannot match pages: %s"), $r)) if $r->isa("IkiWiki::ErrorReason"); + unless ($r) { + $r->remove_influence($p); + } $accum |= $r; if ($r) { push @matches, $p; @@ -2232,6 +2237,13 @@ sub merge_influences { } } +sub remove_influence { + my $this=shift; + my $torm=shift; + + delete $this->[1]{$torm}; +} + package IkiWiki::ErrorReason; our @ISA = 'IkiWiki::FailReason'; diff --git a/doc/bugs/depends_simple_mixup.mdwn b/doc/bugs/depends_simple_mixup.mdwn index 79bfa8bdc..a5910d02e 100644 --- a/doc/bugs/depends_simple_mixup.mdwn +++ b/doc/bugs/depends_simple_mixup.mdwn @@ -81,4 +81,8 @@ non-$page influences. Hmm, commit f2b3d1341447cbf29189ab490daae418fbe5d02d seems thuroughly wrong. So, what about influence info for other matches like `!author(foo)` etc? Currently, none is returned, but it should -be a content influence. (Backlink influence data is ok.) +be a content influence. (Backlink influence data seems ok.) + +---- + +[[done]] again! -- cgit v1.2.3 From 738bd2fa1fef83f5624b06c00577ffe4c5a3245d Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 00:28:21 -0400 Subject: note that the new version will have some optimisation fixes --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index 6b91fd3e6..76405e7da 100644 --- a/debian/changelog +++ b/debian/changelog @@ -62,6 +62,8 @@ ikiwiki (3.20100415) UNRELEASED; urgency=low $pagestate{index}. * bzr: Support rcs_getmtime, and fix rcs_getctime implementation (Jelmer Vernooij) + * Quite a lot of new optimisations, and one major fix to a recent + performance regression. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 -- cgit v1.2.3 From 0db4d920aafa0c7a6b53c59e2605230134ed45eb Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 00:28:58 -0400 Subject: force rebuild from pre 20100422 to ensure those wrong massive depends_simple don't linger on systems that rebuilt for the other reasons already --- debian/NEWS | 2 +- debian/changelog | 2 +- debian/postinst | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/NEWS b/debian/NEWS index 9fd882ad2..2fbe0ea7b 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -1,4 +1,4 @@ -ikiwiki (3.20100406) unstable; urgency=low +ikiwiki (3.20100422) unstable; urgency=low This version of ikiwiki has a lot of changes that you need to know about. diff --git a/debian/changelog b/debian/changelog index 76405e7da..647124b8a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -ikiwiki (3.20100415) UNRELEASED; urgency=low +ikiwiki (3.20100422) UNRELEASED; urgency=low [ Joey Hess ] * bzr: Fix bzr log parsing to work with bzr 2.0. (liw) diff --git a/debian/postinst b/debian/postinst index fa0591153..810b7cfe0 100755 --- a/debian/postinst +++ b/debian/postinst @@ -4,7 +4,7 @@ set -e # Change this when some incompatible change is made that requires # rebuilding all wikis. -firstcompat=3.20100410 +firstcompat=3.20100422 if [ "$1" = configure ] && \ dpkg --compare-versions "$2" lt "$firstcompat"; then -- cgit v1.2.3 From 56bb1b48e4b788ecc36d3b7e2583e29af3dd1617 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 00:36:13 -0400 Subject: format --- debian/NEWS | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/debian/NEWS b/debian/NEWS index 433fc845c..3a8705680 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -7,13 +7,13 @@ ikiwiki (3.20100422) unstable; urgency=low the really important change is, you don't have to remember to use this switch. Now ikiwiki will do it when it needs to. - Starting from this version, the `tagged()` pagespec only matches tags, + Starting from this version, the "tagged()" pagespec only matches tags, not regular wikilinks. If your wiki accidentially relied on the old, - buggy behavior, you might need to change pagespecs to use `link()`. + buggy behavior, you might need to change its pagespecs to use "link()". - Tag pages can automatically be created as new tags are used. This + Now tag pages can automatically be created as new tags are used. This feature is enabled by default if you have configured a tagbase. It - can be turned on or off using the `tag_autocreate` setting. + can be turned on or off using the tag_autocreate setting. The title_natural sort method (as used by the inline directive, etc) have been moved to the new sortnaturally plugin, which is not enabled -- cgit v1.2.3 From 170725dc3e6dd99397959c50d8f33bb0c7926f3a Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 00:40:05 -0400 Subject: update --- doc/ikiwiki/directive/pagestats/discussion.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/ikiwiki/directive/pagestats/discussion.mdwn b/doc/ikiwiki/directive/pagestats/discussion.mdwn index d72b4058d..99029e88e 100644 --- a/doc/ikiwiki/directive/pagestats/discussion.mdwn +++ b/doc/ikiwiki/directive/pagestats/discussion.mdwn @@ -13,3 +13,6 @@ Thanks > The approach that [PmWiki](http://www.pmwiki.org) takes is that it enables the optional auto-creation of (empty) pages which match a particular "group" (set of sub-pages); thus one could set all the "tags/*" pages to be auto-created, creating a new tags/foo page the first time the \[[!tag foo]] directive is used. See [[todo/auto-create_tag_pages_according_to_a_template]] for more discussion on this idea. > -- [[KathrynAndersen]] + +> Update: Ikiwiki can auto-create tags now, though it only defaults to +> doing so when tagbase is set. --[[Joey]] -- cgit v1.2.3 From 1f5d1dff615b8741a2104dad1d42c13b5b4f6d02 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 00:42:53 -0400 Subject: update --- doc/roadmap.mdwn | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/roadmap.mdwn b/doc/roadmap.mdwn index 8e2a01827..c126fd585 100644 --- a/doc/roadmap.mdwn +++ b/doc/roadmap.mdwn @@ -78,7 +78,8 @@ Probably incomplete list: * Make pagespecs match relative by default? (see [[discussion]]) * Flip wikilinks? (see [[todo/link_plugin_perhaps_too_general?]]) * YADA format setup files per default? -* Enable `tag_autocreate` by default. +* Enable tagbase by default (so that tag autocreation will work by default). + Note that this is already done for wikis created by `auto-blog.setup`. In general, we try to use [[ikiwiki-transition]] or forced rebuilds on upgrade to deal with changes that break compatability. Some things that -- cgit v1.2.3 From 8dc7f3005ebf36d5b126867e7ca0440d495d8ee3 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 13:17:45 -0400 Subject: only remove page from influences when influences are not static This matches what add_depends done --- IkiWiki.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 19ed69d75..ec8b32a63 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2148,7 +2148,7 @@ sub pagespec_match_list ($$;@) { my $r=$sub->($p, %params, location => $page); error(sprintf(gettext("cannot match pages: %s"), $r)) if $r->isa("IkiWiki::ErrorReason"); - unless ($r) { + unless ($r || $r->influences_static) { $r->remove_influence($p); } $accum |= $r; -- cgit v1.2.3 From ad296f90c3b99bb5e033f769c44e5653f518f264 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 13:45:25 -0400 Subject: add --- ...dittemplate_should_look_in_templates_directory_by_default.mdwn | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 doc/todo/edittemplate_should_look_in_templates_directory_by_default.mdwn diff --git a/doc/todo/edittemplate_should_look_in_templates_directory_by_default.mdwn b/doc/todo/edittemplate_should_look_in_templates_directory_by_default.mdwn new file mode 100644 index 000000000..4bc10e432 --- /dev/null +++ b/doc/todo/edittemplate_should_look_in_templates_directory_by_default.mdwn @@ -0,0 +1,8 @@ +[[plugins/edittemplate]] looks for the specified template relative to the +page the directive appears on. Which can be handy, eg, make a +blog/mytemplate and put the directive on blog, and it will find +"mytemplate". However, it can also be confusing, since other templates +always are looked for in `templates/`. + +I think it should probably fall back to looking for `templates/$foo`. +--[[Joey]] -- cgit v1.2.3 From 584391aedd2f5392db7e9d3d46cf202d6cb8e951 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 14:07:45 -0400 Subject: clarify --- doc/plugins/write.mdwn | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 404c3b44f..9e8c59f63 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -315,9 +315,9 @@ a new custom parameter to the template. This hook allows plugins to change the [[template|wikitemplates]] that is used for a page in the wiki. The hook is passed a "page" parameter, and -should return the name of the template file to use, or undef if it doesn't -want to change the default ("page.tmpl"). Template files are looked for in -/usr/share/ikiwiki/templates by default. +should return the name of the template file to use (relative to the +template directory), or undef if it doesn't want to change the default +("page.tmpl"). ### sanitize -- cgit v1.2.3 From 23d62f42bd8fe18087cd293962a79d937cf5a3bc Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 14:35:00 -0400 Subject: remove add_templates option Templates are moving into the srcdir, and will also be searched for in configured underlays, so this is redundant. --- IkiWiki.pm | 9 +-------- IkiWiki/Plugin/underlay.pm | 11 ----------- doc/plugins/underlay.mdwn | 6 ------ 3 files changed, 1 insertion(+), 25 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index ec8b32a63..c2c2337b4 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -157,13 +157,6 @@ sub getsetup () { safe => 0, # path rebuild => 1, }, - templatedirs => { - type => "internal", - default => [], - description => "additional directories containing template files", - safe => 0, - rebuild => 0, - }, underlaydir => { type => "string", default => "$installdir/share/ikiwiki/basewiki", @@ -1661,7 +1654,7 @@ sub saveindex () { sub template_file ($) { my $template=shift; - foreach my $dir ($config{templatedir}, @{$config{templatedirs}}, + foreach my $dir ($config{templatedir}, "$installdir/share/ikiwiki/templates") { return "$dir/$template" if -e "$dir/$template"; } diff --git a/IkiWiki/Plugin/underlay.pm b/IkiWiki/Plugin/underlay.pm index 116fe7324..3ea19c635 100644 --- a/IkiWiki/Plugin/underlay.pm +++ b/IkiWiki/Plugin/underlay.pm @@ -27,14 +27,6 @@ sub getsetup () { safe => 0, rebuild => 1, }, - add_templates => { - type => "string", - example => ["$ENV{HOME}/.ikiwiki/templates"], - description => "extra template directories to add", - advanced => 1, - safe => 0, - rebuild => 1, - }, } sub checkconfig () { @@ -43,9 +35,6 @@ sub checkconfig () { add_underlay($dir); } } - if ($config{add_templates}) { - push @{$config{templatedirs}}, @{$config{add_templates}}; - } } 1; diff --git a/doc/plugins/underlay.mdwn b/doc/plugins/underlay.mdwn index 8836a394c..0cf819472 100644 --- a/doc/plugins/underlay.mdwn +++ b/doc/plugins/underlay.mdwn @@ -12,9 +12,3 @@ revision control, like photos or software releases. Directories in `add_underlays` should usually be absolute. If relative, they're interpreted as relative to the parent directory of the basewiki underlay, which is probably not particularly useful in this context. - --- - -This plugin also adds an `add_templates` option to the setup file. -Its value is a list of template directories to look for template files in, -if they are not present in the `templatedir`. -- cgit v1.2.3 From 8eac7c2ad4966bdf2a1ea003df9e356da4c4e6bd Mon Sep 17 00:00:00 2001 From: "http://seph.myopenid.com/" <http://seph.myopenid.com/@web> Date: Thu, 22 Apr 2010 19:15:42 +0000 Subject: --- doc/ikiwiki/directive/map/discussion.mdwn | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/ikiwiki/directive/map/discussion.mdwn b/doc/ikiwiki/directive/map/discussion.mdwn index f6eaa6b80..a39862347 100644 --- a/doc/ikiwiki/directive/map/discussion.mdwn +++ b/doc/ikiwiki/directive/map/discussion.mdwn @@ -83,3 +83,9 @@ Is there any way to do that? I don't mind mucking around with `\[[!meta]]` on e >>> I think that the ideas and code in >>> [[todo/tracking_bugs_with_dependencies]] might also handle this case. >>> --[[Joey]] + +---- + +I feel like this should be obvious, but I can't figure out how to sort numerically. + +I have `map pages="./* and !*/Discussion and !*/sidebar"` and a bunch of pages with names like 1, 2, 3, 11, 12, 1/1.1, 12/12.3 etc. I want to sort them numerically. I see lots of conversation implying there's a simple way to do it, but not how. -- cgit v1.2.3 From 418670c7e85ca32252b82b505ba6bb907229306e Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" <http://smcv.pseudorandom.co.uk/@web> Date: Thu, 22 Apr 2010 19:28:31 +0000 Subject: map can't currently change sort ordering --- doc/ikiwiki/directive/map/discussion.mdwn | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/ikiwiki/directive/map/discussion.mdwn b/doc/ikiwiki/directive/map/discussion.mdwn index a39862347..b7ac17b1a 100644 --- a/doc/ikiwiki/directive/map/discussion.mdwn +++ b/doc/ikiwiki/directive/map/discussion.mdwn @@ -89,3 +89,9 @@ Is there any way to do that? I don't mind mucking around with `\[[!meta]]` on e I feel like this should be obvious, but I can't figure out how to sort numerically. I have `map pages="./* and !*/Discussion and !*/sidebar"` and a bunch of pages with names like 1, 2, 3, 11, 12, 1/1.1, 12/12.3 etc. I want to sort them numerically. I see lots of conversation implying there's a simple way to do it, but not how. + +> No, you can't: map can't currently use a non-default sort order. If it +> could, then you could use [[plugins/sortnaturally]]. There's a +> [[feature_request|todo/sort_parameter_for_map_plugin_and_directive]]; +> [[a_bug_references_it|bugs/map_sorts_by_pagename_and_not_title_when_show=title_is_used]]. +> --[[smcv]] -- cgit v1.2.3 From abd233931247ef38f1b084afd5906619f02c13b6 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 15:34:32 -0400 Subject: look for templates in srcdir and underlays, first This entailed changing template_params; it no longer takes the template filename as its first parameter. Add template_depends to api and replace calls to template() with template_depends() in appropriate places, where a dependency should be added on the template. Other plugins don't use template(), so will need further work. Also, includes are disabled for security. Enabling includes only when using templates from the templatedir would be nice, but would add a lot of complexity to the implementation. --- IkiWiki.pm | 59 +++++++++++++++++++++++++++------------------- IkiWiki/Plugin/comments.pm | 2 +- IkiWiki/Plugin/editpage.pm | 2 +- IkiWiki/Plugin/google.pm | 2 +- IkiWiki/Plugin/inline.pm | 22 ++++++++++------- IkiWiki/Plugin/search.pm | 2 +- IkiWiki/Render.pm | 4 +++- doc/plugins/write.mdwn | 8 +++++++ 8 files changed, 63 insertions(+), 38 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index c2c2337b4..1327e4db5 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -18,8 +18,8 @@ use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase %autofiles}; use Exporter q{import}; -our @EXPORT = qw(hook debug error template htmlpage deptype - add_depends pagespec_match pagespec_match_list bestlink +our @EXPORT = qw(hook debug error htmlpage template template_depends + deptype add_depends pagespec_match pagespec_match_list bestlink htmllink readfile writefile pagetype srcfile pagename displaytime will_render gettext ngettext urlto targetpage add_underlay pagetitle titlepage linkpage newpagefile @@ -1652,47 +1652,58 @@ sub saveindex () { } sub template_file ($) { - my $template=shift; + my $name=shift; + my $template=srcfile("templates/$name", 1); + return $template if defined $template; + foreach my $dir ($config{templatedir}, "$installdir/share/ikiwiki/templates") { - return "$dir/$template" if -e "$dir/$template"; + return "$dir/$name" if -e "$dir/$name"; } return; } sub template_params (@) { - my $filename=template_file(shift); - - if (! defined $filename) { - return if wantarray; - return ""; - } + filter => sub { + my $text_ref = shift; + ${$text_ref} = decode_utf8(${$text_ref}); + }, + loop_context_vars => 1, + die_on_bad_params => 0, + @_, + no_includes => 1, +} - my @ret=( - filter => sub { - my $text_ref = shift; - ${$text_ref} = decode_utf8(${$text_ref}); - }, - filename => $filename, - loop_context_vars => 1, - die_on_bad_params => 0, +sub template ($;@) { + require HTML::Template; + return HTML::Template->new(template_params( + filename => template_file(shift), @_ - ); - return wantarray ? @ret : {@ret}; + )); } -sub template ($;@) { +sub template_depends ($$;@) { + my $name=shift; + my $page=shift; + + if (defined $page) { + add_depends($page, "templates/$name"); + } + my $filename=template_file($name); + require HTML::Template; - return HTML::Template->new(template_params(@_)); + return HTML::Template->new(template_params( + filename => $filename, + @_ + )); } sub misctemplate ($$;@) { my $title=shift; my $pagebody=shift; - my $template=template("misc.tmpl"); - $template->param( + my $template=template("misc.tmpl", title => $title, indexlink => indexlink(), wikiname => $config{wikiname}, diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 58bd4b851..ed75a6e46 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -274,7 +274,7 @@ sub editcomment ($$) { action => $config{cgiurl}, header => 0, table => 0, - template => scalar IkiWiki::template_params('editcomment.tmpl'), + template => template('editcomment.tmpl'), ); IkiWiki::decode_form_utf8($form); diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm index 26e38abc1..5c94ecbca 100644 --- a/IkiWiki/Plugin/editpage.pm +++ b/IkiWiki/Plugin/editpage.pm @@ -78,7 +78,7 @@ sub cgi_editpage ($$) { action => $config{cgiurl}, header => 0, table => 0, - template => scalar template_params("editpage.tmpl"), + template => template("editpage.tmpl"), ); decode_form_utf8($form); diff --git a/IkiWiki/Plugin/google.pm b/IkiWiki/Plugin/google.pm index 48ad4c8ce..68cb16513 100644 --- a/IkiWiki/Plugin/google.pm +++ b/IkiWiki/Plugin/google.pm @@ -36,7 +36,7 @@ sub pagetemplate (@) { # Add search box to page header. if ($template->query(name => "searchform")) { if (! defined $form) { - my $searchform = template("googleform.tmpl", blind_cache => 1); + my $searchform = template_depends("googleform.tmpl", $page, blind_cache => 1); $searchform->param(url => $config{url}); $form=$searchform->output; } diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 3359af314..043649742 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -299,7 +299,7 @@ sub preprocess_inline (@) { (exists $params{postform} && yesno($params{postform}))) && IkiWiki->can("cgi_editpage")) { # Add a blog post form, with feed buttons. - my $formtemplate=template("blogpost.tmpl", blind_cache => 1); + my $formtemplate=template_depends("blogpost.tmpl", $params{page}, blind_cache => 1); $formtemplate->param(cgiurl => $config{cgiurl}); $formtemplate->param(rootpage => rootpage(%params)); $formtemplate->param(rssurl => $rssurl) if $feeds && $rss; @@ -320,19 +320,23 @@ sub preprocess_inline (@) { } elsif ($feeds && !$params{preview} && ($emptyfeeds || @feedlist)) { # Add feed buttons. - my $linktemplate=template("feedlink.tmpl", blind_cache => 1); + my $linktemplate=template_depends("feedlink.tmpl", $params{page}, blind_cache => 1); $linktemplate->param(rssurl => $rssurl) if $rss; $linktemplate->param(atomurl => $atomurl) if $atom; $ret.=$linktemplate->output; } if (! $feedonly) { - require HTML::Template; - my @params=IkiWiki::template_params($params{template}.".tmpl", blind_cache => 1); - if (! @params) { - error sprintf(gettext("nonexistant template %s"), $params{template}); + my $template; + if (! $raw) { + eval { + $template=template_depends($params{template}.".tmpl", $params{page}, + blind_cache => 1); + }; + if (! $@ || ! $template) { + error sprintf(gettext("nonexistant template %s"), $params{template}); + } } - my $template=HTML::Template->new(@params) unless $raw; my $needcontent=$raw || (!($archive && $quick) && $template->query(name => 'content')); foreach my $page (@list) { @@ -534,7 +538,7 @@ sub genfeed ($$$$$@) { my $url=URI->new(encode_utf8(urlto($page,"",1))); - my $itemtemplate=template($feedtype."item.tmpl", blind_cache => 1); + my $itemtemplate=template_depends($feedtype."item.tmpl", $page, blind_cache => 1); my $content=""; my $lasttime = 0; foreach my $p (@pages) { @@ -598,7 +602,7 @@ sub genfeed ($$$$$@) { $lasttime = $pagemtime{$p} if $pagemtime{$p} > $lasttime; } - my $template=template($feedtype."page.tmpl", blind_cache => 1); + my $template=template_depends($feedtype."page.tmpl", $page, blind_cache => 1); $template->param( title => $page ne "index" ? pagetitle($page) : $config{wikiname}, wikiname => $config{wikiname}, diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm index a1e7026ca..55edf8752 100644 --- a/IkiWiki/Plugin/search.pm +++ b/IkiWiki/Plugin/search.pm @@ -52,7 +52,7 @@ sub pagetemplate (@) { # Add search box to page header. if ($template->query(name => "searchform")) { if (! defined $form) { - my $searchform = template("searchform.tmpl", blind_cache => 1); + my $searchform = template_depends("searchform.tmpl", $page, blind_cache => 1); $searchform->param(searchaction => $config{cgiurl}); $form=$searchform->output; } diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 49d080c16..7cf19645e 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -74,7 +74,9 @@ sub genpage ($$) { $templatefile=$file; } }); - my $template=template(defined $templatefile ? $templatefile : 'page.tmpl', blind_cache => 1); + my $template=template_depends( + defined $templatefile ? $templatefile : 'page.tmpl', $page, + blind_cache => 1); my $actions=0; if (length $config{cgiurl}) { diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 9e8c59f63..eaa008131 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -705,6 +705,14 @@ Creates and returns a [[!cpan HTML::Template]] object. The first parameter is the name of the file in the template directory. The optional remaining parameters are passed to `HTML::Template->new`. +### `template_depends($$;@)` + +Use this instead of `template()` if the content of a template is being +included into a page. This causes the page to depend on the template, +so it will be updated if the template is modified. + +Like `template()`, except the second parameter is the page. + ### `htmlpage($)` Passed a page name, returns the base name that will be used for a the html -- cgit v1.2.3 From bbd7e73f64cb5e24965343f7e605870e060c5df1 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 15:58:06 -0400 Subject: refactor to remove template_params template_file will be kept separate, since it needs to be memoized --- IkiWiki.pm | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 1327e4db5..0aaf60569 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1664,23 +1664,8 @@ sub template_file ($) { return; } -sub template_params (@) { - filter => sub { - my $text_ref = shift; - ${$text_ref} = decode_utf8(${$text_ref}); - }, - loop_context_vars => 1, - die_on_bad_params => 0, - @_, - no_includes => 1, -} - sub template ($;@) { - require HTML::Template; - return HTML::Template->new(template_params( - filename => template_file(shift), - @_ - )); + template_depends(shift, undef, @_); } sub template_depends ($$;@) { @@ -1693,10 +1678,17 @@ sub template_depends ($$;@) { my $filename=template_file($name); require HTML::Template; - return HTML::Template->new(template_params( + return HTML::Template->new( + filter => sub { + my $text_ref = shift; + ${$text_ref} = decode_utf8(${$text_ref}); + }, + loop_context_vars => 1, + die_on_bad_params => 0, filename => $filename, - @_ - )); + @_, + no_includes => 1, + ); } sub misctemplate ($$;@) { -- cgit v1.2.3 From 915d5bc32689623b1ff5594602a546e59f826b58 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 15:59:04 -0400 Subject: add --- template-transition-notes | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 template-transition-notes diff --git a/template-transition-notes b/template-transition-notes new file mode 100644 index 000000000..193dd79d4 --- /dev/null +++ b/template-transition-notes @@ -0,0 +1,5 @@ +* add_templates option removed from underlay plugin + (can use add_underlays instead) +* includes no longer allowed in templates +* template directive no longer uses $foo.tmpl , only + page $foo. -- cgit v1.2.3 From 4c99904af30c9213060809937962c1a4ab9c5ad2 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 16:29:49 -0400 Subject: reference my branch for this --- doc/todo/auto_rebuild_on_template_change.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/todo/auto_rebuild_on_template_change.mdwn b/doc/todo/auto_rebuild_on_template_change.mdwn index a112cb9da..66aa07193 100644 --- a/doc/todo/auto_rebuild_on_template_change.mdwn +++ b/doc/todo/auto_rebuild_on_template_change.mdwn @@ -39,6 +39,9 @@ Note also that when using templates from "$srcdir/templates/", `no_includes` needs to be set. Currently this is done by the two plugins that use such templates, while includes are allowed in `templatedir`. +Have started working on this. +[[!template id=gitbranch branch=origin/templatemove author="[[Joey]]"]] + > 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. -- cgit v1.2.3 From 2cd92fcb22166351193cc2b68d9c61744b480b36 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 20:13:47 -0400 Subject: use meta title --- templates/autotag.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/autotag.tmpl b/templates/autotag.tmpl index 7b0d4c90f..f670982b6 100644 --- a/templates/autotag.tmpl +++ b/templates/autotag.tmpl @@ -1,3 +1,3 @@ -## Pages tagged <TMPL_VAR TAGNAME> ## +[[!meta title="tag <TMPL_VAR TAGNAME>"]] [[!inline pages="tagged(<TMPL_VAR TAG>)" actions="no" archive="yes"]] -- cgit v1.2.3 From 898fc1095563412400484d5378ad82b334414b36 Mon Sep 17 00:00:00 2001 From: blipvert <blipvert@web> Date: Fri, 23 Apr 2010 02:36:27 +0000 Subject: --- ...ails_oddly_when_older_ikiwiki_is_installed.mdwn | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 doc/bugs/creating_build_fails_oddly_when_older_ikiwiki_is_installed.mdwn diff --git a/doc/bugs/creating_build_fails_oddly_when_older_ikiwiki_is_installed.mdwn b/doc/bugs/creating_build_fails_oddly_when_older_ikiwiki_is_installed.mdwn new file mode 100644 index 000000000..b11972165 --- /dev/null +++ b/doc/bugs/creating_build_fails_oddly_when_older_ikiwiki_is_installed.mdwn @@ -0,0 +1,26 @@ +I got this failure when trying to build ikiwiki version 3.20100403: + + $ perl Makefile.PL INSTALL_BASE=/opt/ikiwiki PREFIX= + Writing Makefile for IkiWiki + $ make + +*...snip...* + + ./pm_filter /opt/ikiwiki 3.20100403 /opt/ikiwiki/lib/perl5 < ikiwiki.in > ikiwiki.out + chmod +x ikiwiki.out + ./pm_filter /opt/ikiwiki 3.20100403 /opt/ikiwiki/lib/perl5 < ikiwiki-transition.in > ikiwiki-transition.out + chmod +x ikiwiki-transition.out + ./pm_filter /opt/ikiwiki 3.20100403 /opt/ikiwiki/lib/perl5 < ikiwiki-calendar.in > ikiwiki-calendar.out + chmod +x ikiwiki-calendar.out + HOME=/home/me /usr/bin/perl -Iblib/lib ikiwiki.out -libdir . -dumpsetup ikiwiki.setup + Use of uninitialized value $IkiWiki::Setup::config{"setuptype"} in concatenation (.) or string at IkiWiki/Setup.pm line 53. + Can't locate IkiWiki/Setup/.pm in @INC (@INC contains: . /opt/ikiwiki/lib/perl5/i486-linux-gnu-thread-multi /opt/ikiwiki/lib/perl5 blib/lib /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at (eval 35) line 3. + + make: *** [ikiwiki.setup] Error 2 + +Note that I had been trying to upgrade with an installed ikiwiki 3.20091114 +already in place under /opt/ikiwiki. The build does not fail for me +if I first remove the old ikiwiki installation, nor does it fail with +3.20100403 or newer installed at /opt/ikiwiki. Hence this is not +really a critical bug, although it's somewhat perplexing to me why it +ought to make a difference. -- cgit v1.2.3 From a2feb7d477a57a4e7feb1334e7ff4abc4067b1d3 Mon Sep 17 00:00:00 2001 From: blipvert <blipvert@web> Date: Fri, 23 Apr 2010 02:40:36 +0000 Subject: rename bugs/creating_build_fails_oddly_when_older_ikiwiki_is_installed.mdwn to bugs/build_fails_oddly_when_older_ikiwiki_is_installed.mdwn --- ...ails_oddly_when_older_ikiwiki_is_installed.mdwn | 26 ++++++++++++++++++++++ ...ails_oddly_when_older_ikiwiki_is_installed.mdwn | 26 ---------------------- 2 files changed, 26 insertions(+), 26 deletions(-) create mode 100644 doc/bugs/build_fails_oddly_when_older_ikiwiki_is_installed.mdwn delete mode 100644 doc/bugs/creating_build_fails_oddly_when_older_ikiwiki_is_installed.mdwn diff --git a/doc/bugs/build_fails_oddly_when_older_ikiwiki_is_installed.mdwn b/doc/bugs/build_fails_oddly_when_older_ikiwiki_is_installed.mdwn new file mode 100644 index 000000000..b11972165 --- /dev/null +++ b/doc/bugs/build_fails_oddly_when_older_ikiwiki_is_installed.mdwn @@ -0,0 +1,26 @@ +I got this failure when trying to build ikiwiki version 3.20100403: + + $ perl Makefile.PL INSTALL_BASE=/opt/ikiwiki PREFIX= + Writing Makefile for IkiWiki + $ make + +*...snip...* + + ./pm_filter /opt/ikiwiki 3.20100403 /opt/ikiwiki/lib/perl5 < ikiwiki.in > ikiwiki.out + chmod +x ikiwiki.out + ./pm_filter /opt/ikiwiki 3.20100403 /opt/ikiwiki/lib/perl5 < ikiwiki-transition.in > ikiwiki-transition.out + chmod +x ikiwiki-transition.out + ./pm_filter /opt/ikiwiki 3.20100403 /opt/ikiwiki/lib/perl5 < ikiwiki-calendar.in > ikiwiki-calendar.out + chmod +x ikiwiki-calendar.out + HOME=/home/me /usr/bin/perl -Iblib/lib ikiwiki.out -libdir . -dumpsetup ikiwiki.setup + Use of uninitialized value $IkiWiki::Setup::config{"setuptype"} in concatenation (.) or string at IkiWiki/Setup.pm line 53. + Can't locate IkiWiki/Setup/.pm in @INC (@INC contains: . /opt/ikiwiki/lib/perl5/i486-linux-gnu-thread-multi /opt/ikiwiki/lib/perl5 blib/lib /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at (eval 35) line 3. + + make: *** [ikiwiki.setup] Error 2 + +Note that I had been trying to upgrade with an installed ikiwiki 3.20091114 +already in place under /opt/ikiwiki. The build does not fail for me +if I first remove the old ikiwiki installation, nor does it fail with +3.20100403 or newer installed at /opt/ikiwiki. Hence this is not +really a critical bug, although it's somewhat perplexing to me why it +ought to make a difference. diff --git a/doc/bugs/creating_build_fails_oddly_when_older_ikiwiki_is_installed.mdwn b/doc/bugs/creating_build_fails_oddly_when_older_ikiwiki_is_installed.mdwn deleted file mode 100644 index b11972165..000000000 --- a/doc/bugs/creating_build_fails_oddly_when_older_ikiwiki_is_installed.mdwn +++ /dev/null @@ -1,26 +0,0 @@ -I got this failure when trying to build ikiwiki version 3.20100403: - - $ perl Makefile.PL INSTALL_BASE=/opt/ikiwiki PREFIX= - Writing Makefile for IkiWiki - $ make - -*...snip...* - - ./pm_filter /opt/ikiwiki 3.20100403 /opt/ikiwiki/lib/perl5 < ikiwiki.in > ikiwiki.out - chmod +x ikiwiki.out - ./pm_filter /opt/ikiwiki 3.20100403 /opt/ikiwiki/lib/perl5 < ikiwiki-transition.in > ikiwiki-transition.out - chmod +x ikiwiki-transition.out - ./pm_filter /opt/ikiwiki 3.20100403 /opt/ikiwiki/lib/perl5 < ikiwiki-calendar.in > ikiwiki-calendar.out - chmod +x ikiwiki-calendar.out - HOME=/home/me /usr/bin/perl -Iblib/lib ikiwiki.out -libdir . -dumpsetup ikiwiki.setup - Use of uninitialized value $IkiWiki::Setup::config{"setuptype"} in concatenation (.) or string at IkiWiki/Setup.pm line 53. - Can't locate IkiWiki/Setup/.pm in @INC (@INC contains: . /opt/ikiwiki/lib/perl5/i486-linux-gnu-thread-multi /opt/ikiwiki/lib/perl5 blib/lib /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at (eval 35) line 3. - - make: *** [ikiwiki.setup] Error 2 - -Note that I had been trying to upgrade with an installed ikiwiki 3.20091114 -already in place under /opt/ikiwiki. The build does not fail for me -if I first remove the old ikiwiki installation, nor does it fail with -3.20100403 or newer installed at /opt/ikiwiki. Hence this is not -really a critical bug, although it's somewhat perplexing to me why it -ought to make a difference. -- cgit v1.2.3 From 5bc7efab7cc7a437d3d593a3ff62595ed0ab7f81 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 23:00:33 -0400 Subject: switch to PERL5LIB so that use lib inserted for INSTALL_BASE is overridden during build --- Makefile.PL | 6 +++--- doc/bugs/build_fails_oddly_when_older_ikiwiki_is_installed.mdwn | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Makefile.PL b/Makefile.PL index 38db20d44..794a2ed47 100755 --- a/Makefile.PL +++ b/Makefile.PL @@ -36,7 +36,7 @@ scripts=ikiwiki-update-wikilist ikiwiki-makerepo chmod +x $@ ikiwiki.setup: ikiwiki.out - HOME=/home/me $(PERL) -Iblib/lib $(extramodules) $(tflag) ikiwiki.out -libdir . -dumpsetup ikiwiki.setup + PERL5LIB=. HOME=/home/me $(PERL) -Iblib/lib $(extramodules) $(tflag) ikiwiki.out -dumpsetup ikiwiki.setup extra_build: $(outprogs) ikiwiki.setup docwiki ./mdwn2man ikiwiki 1 doc/usage.mdwn > ikiwiki.man @@ -50,10 +50,10 @@ extra_build: $(outprogs) ikiwiki.setup docwiki rm -f ikiwiki.spec.bkp docwiki: ikiwiki.out - $(PERL) -Iblib/lib $(extramodules) $(tflag) ikiwiki.out -libdir . -setup docwiki.setup -refresh + PERL5LIB=. $(PERL) -Iblib/lib $(extramodules) $(tflag) ikiwiki.out -setup docwiki.setup -refresh extra_clean: - $(PERL) -I. $(extramodules) $(tflag) ikiwiki.in -libdir . -setup docwiki.setup -clean + PERL5LIB=. $(PERL) -I. $(extramodules) $(tflag) ikiwiki.in -setup docwiki.setup -clean rm -f *.man $(outprogs) ikiwiki.setup plugins/*.pyc $(MAKE) -C po clean diff --git a/doc/bugs/build_fails_oddly_when_older_ikiwiki_is_installed.mdwn b/doc/bugs/build_fails_oddly_when_older_ikiwiki_is_installed.mdwn index b11972165..7b252031b 100644 --- a/doc/bugs/build_fails_oddly_when_older_ikiwiki_is_installed.mdwn +++ b/doc/bugs/build_fails_oddly_when_older_ikiwiki_is_installed.mdwn @@ -24,3 +24,8 @@ if I first remove the old ikiwiki installation, nor does it fail with 3.20100403 or newer installed at /opt/ikiwiki. Hence this is not really a critical bug, although it's somewhat perplexing to me why it ought to make a difference. + +> So, using INSTALL_BASE causes a 'use lib' to be hardcoded into the `.out` +> files; which overrides the -libdir and the -I, and so the old version +> of IkiWiki.pm is used. +> [[fixed|done]] --[[Joey]] -- cgit v1.2.3 From aaf1d98ebe08271abee8b55f76e5a59183894acb Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Thu, 22 Apr 2010 23:14:57 -0400 Subject: better fix for use lib issue PER5LIB does not override fully, so need to run .in versions --- Makefile.PL | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile.PL b/Makefile.PL index 794a2ed47..b079886ac 100755 --- a/Makefile.PL +++ b/Makefile.PL @@ -35,8 +35,8 @@ scripts=ikiwiki-update-wikilist ikiwiki-makerepo ./pm_filter $(PREFIX) $(VER) $(PROBABLE_INST_LIB) < $< > $@ chmod +x $@ -ikiwiki.setup: ikiwiki.out - PERL5LIB=. HOME=/home/me $(PERL) -Iblib/lib $(extramodules) $(tflag) ikiwiki.out -dumpsetup ikiwiki.setup +ikiwiki.setup: + HOME=/home/me $(PERL) -Iblib/lib $(extramodules) $(tflag) ikiwiki.in -dumpsetup ikiwiki.setup extra_build: $(outprogs) ikiwiki.setup docwiki ./mdwn2man ikiwiki 1 doc/usage.mdwn > ikiwiki.man @@ -49,11 +49,11 @@ extra_build: $(outprogs) ikiwiki.setup docwiki sed -i.bkp "s/Version:.*/Version: $$(perl -e '$$_=<>;print m/\((.*?)\)/'<debian/changelog)/" ikiwiki.spec rm -f ikiwiki.spec.bkp -docwiki: ikiwiki.out - PERL5LIB=. $(PERL) -Iblib/lib $(extramodules) $(tflag) ikiwiki.out -setup docwiki.setup -refresh +docwiki: + $(PERL) -Iblib/lib $(extramodules) $(tflag) ikiwiki.in -setup docwiki.setup -refresh extra_clean: - PERL5LIB=. $(PERL) -I. $(extramodules) $(tflag) ikiwiki.in -setup docwiki.setup -clean + $(PERL) -Iblib/lib $(extramodules) $(tflag) ikiwiki.in -setup docwiki.setup -clean rm -f *.man $(outprogs) ikiwiki.setup plugins/*.pyc $(MAKE) -C po clean -- cgit v1.2.3 From f5466ad7173459bc9481781d8f54ba969f56a516 Mon Sep 17 00:00:00 2001 From: Jon Dowland <jmtd@debian.org> Date: Fri, 23 Apr 2010 16:29:05 +0100 Subject: how important is perl 5.10? --- doc/setup/discussion.mdwn | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/setup/discussion.mdwn b/doc/setup/discussion.mdwn index b71263dae..2000c5dfb 100644 --- a/doc/setup/discussion.mdwn +++ b/doc/setup/discussion.mdwn @@ -245,3 +245,12 @@ Thank you! I'm not a Perl programmer, so what's your opinion: is this behavior a I am experiencing the same problem "/etc/ikiwiki/custom: failed to set up the repository with ikiwiki-makerepo " on Debian squeeze with perl5.10.0. Upgrading to ikiwiki 3.10 fixes it. -- [Albert](http://www.docunext.com/) + +---- + +Just a note, perl 5.10 isn't packaged as part of RHEL or thus CentOS nor EPEL, +so it's not especially trivial to satisfy that requirement for ikiwiki on +those platforms, without backporting it from Fedora or building from source. +However, I have an ikiwiki 3.20100403 running on RHEL-4 supplied 5.8.8 without +(seemingly too much) complaint. How strong is the 5.10 requirement? what +precicely breaks without it? -- [[Jon]] -- cgit v1.2.3 From e779098796e18c11c43e9e38339577376ded8e2b Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 12:35:23 -0400 Subject: update copyright years --- debian/copyright | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/copyright b/debian/copyright index ad72a0459..d4bb1009f 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,11 +1,11 @@ Files: * -Copyright: © 2006-2008 Joey Hess <joey@ikiwiki.info> +Copyright: © 2006-2010 Joey Hess <joey@ikiwiki.info> License: GPL-2+ The full text of the GPL is distributed as doc/GPL in ikiwiki's source, and is distributed in /usr/share/common-licenses/GPL-2 on Debian systems. Files: templates/*, underlays/basewiki/*, doc/ikiwiki/directive/*, ikiwiki.setup, po/underlay/* -Copyright: © 2006-2008 Joey Hess <joey@ikiwiki.info> +Copyright: © 2006-2010 Joey Hess <joey@ikiwiki.info> License: other Redistribution and use in source and compiled forms, with or without modification, are permitted under any circumstances. No warranty. -- cgit v1.2.3 From 4afe2d1170e85a09d43460045b5825fce081c469 Mon Sep 17 00:00:00 2001 From: privat <privat@web> Date: Fri, 23 Apr 2010 17:20:51 +0000 Subject: add my repository in the list --- doc/git.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/git.mdwn b/doc/git.mdwn index 0f280fb35..a5fd742ca 100644 --- a/doc/git.mdwn +++ b/doc/git.mdwn @@ -62,6 +62,7 @@ think about merging them. This is recommended. :-) ([browse](http://git.liegesta.at/?p=ikiwiki.git;a=summary)) * [[GustafThorslund]] `http://gustaf.thorslund.org/src/ikiwiki.git` * [[peteg]] `git://git.hcoop.net/git/peteg/ikiwiki.git` +* [[privat]] `git://github.com/privat/ikiwiki.git` ## branches -- cgit v1.2.3 From 92c927cb9285fb2b6e185f24d93ced3729bda04e Mon Sep 17 00:00:00 2001 From: Jon Dowland <jon@alcopop.org> Date: Fri, 23 Apr 2010 18:28:20 +0100 Subject: half-formed thought about accessible profiling --- doc/users/jon.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/users/jon.mdwn b/doc/users/jon.mdwn index d5593dcbf..eb01821ff 100644 --- a/doc/users/jon.mdwn +++ b/doc/users/jon.mdwn @@ -51,6 +51,8 @@ Penultimately, the following are merely half-formed thoughts: unticking checkboxes next to a tag name (rather than entering the directive into the text of the page directly) * perhaps the same for meta + * I'd like to make profiling ikiwiki in action very easy for newcomers. + Perhaps even a plugin that created a file /profile or similar on build. Finally, backlinks (since I have issues with the current backlinks implementation, see [[bugs/backlinks onhover thing can go weird]]): -- cgit v1.2.3 From 53c8bf9ed98f263163768daeb1d4e0fdbf6e7ef3 Mon Sep 17 00:00:00 2001 From: privat <privat@web> Date: Fri, 23 Apr 2010 17:28:38 +0000 Subject: multiple_sidebars in a gitbranch --- doc/todo/beef_up_sidebar_to_allow_for_multiple_sidebars.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/todo/beef_up_sidebar_to_allow_for_multiple_sidebars.mdwn b/doc/todo/beef_up_sidebar_to_allow_for_multiple_sidebars.mdwn index 02b83244e..bb4339f88 100644 --- a/doc/todo/beef_up_sidebar_to_allow_for_multiple_sidebars.mdwn +++ b/doc/todo/beef_up_sidebar_to_allow_for_multiple_sidebars.mdwn @@ -15,6 +15,8 @@ those contents instead. >> Here a simple [[patch]] for multiple sidebars. Not too fancy but better than having multiple copies of the sidebar plugin. --[[jeanprivat]] +>>> I made a [[git]] branch for it [[!template id=gitbranch branch="privat/multiple_sidebars" author="[[jeanprivat]]"]] --[[jeanprivat]] + <pre> --- /usr/share/perl5/IkiWiki/Plugin/sidebar.pm 2010-02-11 22:53:17.000000000 -0500 +++ plugins/IkiWiki/Plugin/sidebar.pm 2010-02-27 09:54:12.524412391 -0500 -- cgit v1.2.3 From 796ece2a8a482f219a5d4c568af271286511574e Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 13:30:52 -0400 Subject: response --- doc/setup/discussion.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/setup/discussion.mdwn b/doc/setup/discussion.mdwn index 2000c5dfb..74f7740db 100644 --- a/doc/setup/discussion.mdwn +++ b/doc/setup/discussion.mdwn @@ -254,3 +254,7 @@ those platforms, without backporting it from Fedora or building from source. However, I have an ikiwiki 3.20100403 running on RHEL-4 supplied 5.8.8 without (seemingly too much) complaint. How strong is the 5.10 requirement? what precicely breaks without it? -- [[Jon]] + +> I don't remember what was the specific problem with perl 5.8.8. All I can +> find is some taint checking bugs, which are currently worked around by +> taint checking being disabled. --[[Joey]] -- cgit v1.2.3 From 011d88052d6dacb6a9d84b1489d37eefeb992da1 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 14:00:53 -0400 Subject: fix logic --- IkiWiki/Plugin/inline.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 043649742..2d47cb4be 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -333,8 +333,8 @@ sub preprocess_inline (@) { $template=template_depends($params{template}.".tmpl", $params{page}, blind_cache => 1); }; - if (! $@ || ! $template) { - error sprintf(gettext("nonexistant template %s"), $params{template}); + if ($@ || ! $template) { + error sprintf(gettext("nonexistant template %s.tmpl"), $params{template}); } } my $needcontent=$raw || (!($archive && $quick) && $template->query(name => 'content')); -- cgit v1.2.3 From 54898d16d4c86fddcb1b5588eac67a729c14deeb Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 14:44:37 -0400 Subject: allow a bare page name to be specified as a template --- IkiWiki.pm | 31 +++++++++++++++++++++---------- doc/plugins/write.mdwn | 11 +++++++++-- template-transition-notes | 1 + 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 0aaf60569..03441b594 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1653,9 +1653,18 @@ sub saveindex () { sub template_file ($) { my $name=shift; + + my $tpage="templates/$name"; + if ($name !~ /\.tmpl$/ && exists $pagesources{$tpage}) { + $tpage=$pagesources{$tpage}; + $name.=".tmpl"; + } - my $template=srcfile("templates/$name", 1); - return $template if defined $template; + my $template=srcfile($tpage, 1); + if (defined $template) { + return $template, $tpage if wantarray; + return $template; + } foreach my $dir ($config{templatedir}, "$installdir/share/ikiwiki/templates") { @@ -1664,18 +1673,16 @@ sub template_file ($) { return; } -sub template ($;@) { - template_depends(shift, undef, @_); -} - sub template_depends ($$;@) { my $name=shift; my $page=shift; - - if (defined $page) { - add_depends($page, "templates/$name"); + + my ($filename, $tpage)=template_file($name); + if (defined $page && defined $tpage) { + add_depends($page, $tpage); } - my $filename=template_file($name); + + return unless defined $filename; require HTML::Template; return HTML::Template->new( @@ -1691,6 +1698,10 @@ sub template_depends ($$;@) { ); } +sub template ($;@) { + template_depends(shift, undef, @_); +} + sub misctemplate ($$;@) { my $title=shift; my $pagebody=shift; diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index eaa008131..1407b5a12 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -702,8 +702,15 @@ the entire wiki build and make the wiki unusable. ### `template($;@)` Creates and returns a [[!cpan HTML::Template]] object. The first parameter -is the name of the file in the template directory. The optional remaining -parameters are passed to `HTML::Template->new`. +is the name of the template file. The optional remaining parameters are +passed to `HTML::Template->new`. + +The template file is first looked for in the templates/ subdirectory of the +srcdir. Failing that, it is looked for in the templatedir. Typically +the filename will have a ".tmpl" extension. If a filename with no extension +is passed, a wiki page in templates/ with its name is used as the template. +That should only be done for templates which it is safe to let wiki users +edit. ### `template_depends($$;@)` diff --git a/template-transition-notes b/template-transition-notes index 193dd79d4..ccff3e78f 100644 --- a/template-transition-notes +++ b/template-transition-notes @@ -3,3 +3,4 @@ * includes no longer allowed in templates * template directive no longer uses $foo.tmpl , only page $foo. +* template_params removed (not exported API) -- cgit v1.2.3 From d4d7d5ddaf9264d7bc46b83ff87eb919b876568c Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 14:45:02 -0400 Subject: use same error string as template.pm does --- IkiWiki/Plugin/inline.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 2d47cb4be..5d99c9da2 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -334,7 +334,7 @@ sub preprocess_inline (@) { blind_cache => 1); }; if ($@ || ! $template) { - error sprintf(gettext("nonexistant template %s.tmpl"), $params{template}); + error sprintf(gettext("template %s not found"), $params{template}.".tmpl"); } } my $needcontent=$raw || (!($archive && $quick) && $template->query(name => 'content')); -- cgit v1.2.3 From 753bfb17a0b593137341fe61c1a7db5dccd00efa Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 14:45:48 -0400 Subject: switch to using template_depends It now handles all the details of finding a page template that this used to need to implement. --- IkiWiki/Plugin/template.pm | 37 ++++++++++--------------------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/IkiWiki/Plugin/template.pm b/IkiWiki/Plugin/template.pm index 98a13b5fa..fc8292010 100644 --- a/IkiWiki/Plugin/template.pm +++ b/IkiWiki/Plugin/template.pm @@ -5,7 +5,6 @@ package IkiWiki::Plugin::template; use warnings; use strict; use IkiWiki 3.00; -use HTML::Template; use Encode; sub import { @@ -34,36 +33,20 @@ sub preprocess (@) { error gettext("missing id parameter") } - my $template_page="templates/$params{id}"; - add_depends($params{page}, $template_page); - - my $template_file; - if (exists $pagesources{$template_page}) { - $template_file=srcfile($pagesources{$template_page}); - } - else { - $template_file=IkiWiki::template_file("$params{id}.tmpl") - } - return sprintf(gettext("template %s not found"), - htmllink($params{page}, $params{destpage}, "/".$template_page)) - unless defined $template_file; - + # The bare id is used, so a page templates/$id will be used as + # the template. my $template; eval { - $template=HTML::Template->new( - filter => sub { - my $text_ref = shift; - $$text_ref=&Encode::decode_utf8($$text_ref); - chomp $$text_ref; - }, - filename => $template_file, - die_on_bad_params => 0, - no_includes => 1, - blind_cache => 1, - ); + $template=template_depends($params{id}, $params{page}, + blind_cache => 1); }; if ($@) { - error gettext("failed to process:")." $@" + error gettext("failed to process:")." $@"; + } + if (! $template) { + error sprintf(gettext("%s not found"), + htmllink($params{page}, $params{destpage}, + "/templates/$params{id}")) } $params{basename}=IkiWiki::basename($params{page}); -- cgit v1.2.3 From ee8d237f98b2c82b441dc7c26f6ce8545362cb73 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 14:50:00 -0400 Subject: improved error message --- IkiWiki/Plugin/inline.pm | 7 ++++++- IkiWiki/Plugin/template.pm | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 5d99c9da2..95fe90312 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -329,11 +329,16 @@ sub preprocess_inline (@) { if (! $feedonly) { my $template; if (! $raw) { + # cannot use wiki pages as templates; template not sanitized due to + # format hook hack eval { $template=template_depends($params{template}.".tmpl", $params{page}, blind_cache => 1); }; - if ($@ || ! $template) { + if ($@) { + error gettext("failed to process template:")." $@"; + } + if (! $template) { error sprintf(gettext("template %s not found"), $params{template}.".tmpl"); } } diff --git a/IkiWiki/Plugin/template.pm b/IkiWiki/Plugin/template.pm index fc8292010..e5a0c05c3 100644 --- a/IkiWiki/Plugin/template.pm +++ b/IkiWiki/Plugin/template.pm @@ -41,7 +41,7 @@ sub preprocess (@) { blind_cache => 1); }; if ($@) { - error gettext("failed to process:")." $@"; + error gettext("failed to process template:")." $@"; } if (! $template) { error sprintf(gettext("%s not found"), -- cgit v1.2.3 From 78fd3b35a2805489185a14e00b53b450eec961f1 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 15:02:07 -0400 Subject: allow template pages to not be under templates/ --- IkiWiki.pm | 4 +++- doc/plugins/write.mdwn | 14 ++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 03441b594..78612cd08 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1654,7 +1654,7 @@ sub saveindex () { sub template_file ($) { my $name=shift; - my $tpage="templates/$name"; + my $tpage=($name =~ /^\//) ? $name : "templates/$name"; if ($name !~ /\.tmpl$/ && exists $pagesources{$tpage}) { $tpage=$pagesources{$tpage}; $name.=".tmpl"; @@ -1665,6 +1665,8 @@ sub template_file ($) { return $template, $tpage if wantarray; return $template; } + + $name=~s:/::; # avoid path traversal foreach my $dir ($config{templatedir}, "$installdir/share/ikiwiki/templates") { diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 1407b5a12..00b54bdd3 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -705,12 +705,14 @@ Creates and returns a [[!cpan HTML::Template]] object. The first parameter is the name of the template file. The optional remaining parameters are passed to `HTML::Template->new`. -The template file is first looked for in the templates/ subdirectory of the -srcdir. Failing that, it is looked for in the templatedir. Typically -the filename will have a ".tmpl" extension. If a filename with no extension -is passed, a wiki page in templates/ with its name is used as the template. -That should only be done for templates which it is safe to let wiki users -edit. +Normally, the template file is first looked for in the templates/ subdirectory +of the srcdir. Failing that, it is looked for in the templatedir. + +Wiki pages can be used as templates. This should be done only for templates +which it is safe to let wiki users edit. Enable it by passing a filename +with no ".tmpl" extension. Template pages are normally looked for in +the templates/ directory. If the page name starts with "/", a page +elsewhere in the wiki can be used. ### `template_depends($$;@)` -- cgit v1.2.3 From d1cc7e81c84e57c32b6560f82065caf6535c0692 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 15:11:25 -0400 Subject: use template() rather than rolling it by hand --- IkiWiki/Plugin/edittemplate.pm | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/IkiWiki/Plugin/edittemplate.pm b/IkiWiki/Plugin/edittemplate.pm index 5f0551d92..d65072010 100644 --- a/IkiWiki/Plugin/edittemplate.pm +++ b/IkiWiki/Plugin/edittemplate.pm @@ -114,28 +114,18 @@ sub filltemplate ($$) { my $template_page=shift; my $page=shift; - my $template_file=$pagesources{$template_page}; - if (! defined $template_file) { - return; - } - my $template; eval { - $template=HTML::Template->new( - filter => sub { - my $text_ref = shift; - $$text_ref=&Encode::decode_utf8($$text_ref); - chomp $$text_ref; - }, - filename => srcfile($template_file), - die_on_bad_params => 0, - no_includes => 1, - ); + # force page name absolute so it doesn't look in templates/ + $template=template("/".$template_page); }; if ($@) { # Indicate that the earlier preprocessor directive set # up a template that doesn't work. - return "[[!pagetemplate ".gettext("failed to process")." $@]]"; + return "[[!pagetemplate ".gettext("failed to process template:")." $@]]"; + } + if (! defined $template) { + return; } $template->param(name => $page); -- cgit v1.2.3 From 0e68f76a9ab76bc6d0f0d45617517220afc146ff Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 15:23:34 -0400 Subject: update --- IkiWiki/Plugin/template.pm | 2 +- template-transition-notes | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/IkiWiki/Plugin/template.pm b/IkiWiki/Plugin/template.pm index e5a0c05c3..d2b2fef55 100644 --- a/IkiWiki/Plugin/template.pm +++ b/IkiWiki/Plugin/template.pm @@ -33,7 +33,7 @@ sub preprocess (@) { error gettext("missing id parameter") } - # The bare id is used, so a page templates/$id will be used as + # The bare id is used, so a page templates/$id can be used as # the template. my $template; eval { diff --git a/template-transition-notes b/template-transition-notes index ccff3e78f..a319616f4 100644 --- a/template-transition-notes +++ b/template-transition-notes @@ -1,6 +1,4 @@ * add_templates option removed from underlay plugin (can use add_underlays instead) * includes no longer allowed in templates -* template directive no longer uses $foo.tmpl , only - page $foo. * template_params removed (not exported API) -- cgit v1.2.3 From 83703d2f4a8832155e3c111792489062ccc4793b Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 15:32:39 -0400 Subject: move template documentation to the template directive allow new templates to be created via the inline that lists them --- doc/ikiwiki/directive/template.mdwn | 71 ++++++++++++++++++++++++++++++-- doc/templates.mdwn | 82 ++----------------------------------- 2 files changed, 71 insertions(+), 82 deletions(-) diff --git a/doc/ikiwiki/directive/template.mdwn b/doc/ikiwiki/directive/template.mdwn index d538b69b1..ae71ba5b5 100644 --- a/doc/ikiwiki/directive/template.mdwn +++ b/doc/ikiwiki/directive/template.mdwn @@ -5,14 +5,79 @@ wiki, by using the template directive. The directive has an `id` parameter that identifies the template to use. The remaining parameters are used to fill out the template. -Example: +## Example \[[!template id=note text="""Here is the text to insert into my note."""]] This fills out the `note` template, filling in the `text` field with the specified value, and inserts the result into the page. -For a list of available templates, and details about how to create more, -see the [[templates]] page. +## Using a template + +Generally, a value can include any markup that would be allowed in the wiki +page outside the template. Triple-quoting the value even allows quotes to +be included in it. Combined with multi-line quoted values, this allows for +large chunks of marked up text to be embedded into a template: + + \[[!template id=foo name="Sally" color="green" age=8 notes=""" + * \[[Charley]]'s sister. + * "I want to be an astronaut when I grow up." + * Really 8 and a half. + """]] + +## Creating a template + +The template is a regular wiki page, located in the `templates/` +subdirectory inside the source directory of the wiki. + +(Alternatively, templates can be stored in a directory outside the wiki, +as files with the extension ".tmpl". +By default, these are searched for in `/usr/share/ikiwiki/templates`; +the `templatedir` setting can be used to make another directory be searched +first.) + +The template uses the syntax used by the [[!cpan HTML::Template]] perl +module, which allows for some fairly complex things to be done. Consult its +documentation for the full syntax, but all you really need to know are a +few things: + +* Each parameter you pass to the template directive will generate a + template variable. There are also some pre-defined variables like PAGE + and BASENAME. +* To insert the value of a variable, use `<TMPL_VAR variable>`. Wiki markup + in the value will first be converted to html. +* To insert the raw value of a variable, with wiki markup not yet converted + to html, use `<TMPL_VAR raw_variable>`. +* To make a block of text conditional on a variable being set use + `<TMPL_IF NAME="variable">text</TMPL_IF>`. +* To use one block of text if a variable is set and a second if it's not, + use `<TMPL_IF NAME="variable">text<TMPL_ELSE>other text</TMPL_IF>` + +Here's a sample template: + + <span class="infobox"> + Name: \[[<TMPL_VAR raw_name>]]<br /> + Age: <TMPL_VAR age><br /> + <TMPL_IF NAME="color"> + Favorite color: <TMPL_VAR color><br /> + <TMPL_ELSE> + No favorite color.<br /> + </TMPL_IF> + <TMPL_IF NAME="notes"> + <hr /> + <TMPL_VAR notes> + </TMPL_IF> + </span> + +The filled out template will be formatted the same as the rest of the page +that contains it, so you can include WikiLinks and all other forms of wiki +markup in the template. Note though that such WikiLinks will not show up as +backlinks to the page that uses the template. + +Note the use of "raw_name" inside the [[ikiwiki/WikiLink]] generator in the +example above. This ensures that if the name contains something that might +be mistaken for wiki markup, it's not converted to html before being +processed as a [[ikiwiki/WikiLink]]. + [[!meta robots="noindex, follow"]] diff --git a/doc/templates.mdwn b/doc/templates.mdwn index 07531ae98..f2b581d2f 100644 --- a/doc/templates.mdwn +++ b/doc/templates.mdwn @@ -9,85 +9,9 @@ wiki. [[!if test="enabled(template) and enabled(inline)" then=""" -These templates are available for inclusion onto other pages in this -wiki: +These templates are available for use with the template directive. [[!inline pages="templates/* and !*/discussion" feeds=no archive=yes -sort=title template=titlepage]] +sort=title template=titlepage +rootpage=templates postformtext="Add a new template named:"]] """]] - -## Using a template - -Using a template works like this: - - \[[!template id=note text="""Here is the text to insert into my note."""]] - -This fills out the [[note]] template, filling in the `text` field with -the specified value, and inserts the result into the page. - -Generally, a value can include any markup that would be allowed in the wiki -page outside the template. Triple-quoting the value even allows quotes to -be included in it. Combined with multi-line quoted values, this allows for -large chunks of marked up text to be embedded into a template: - - \[[!template id=foo name="Sally" color="green" age=8 notes=""" - * \[[Charley]]'s sister. - * "I want to be an astronaut when I grow up." - * Really 8 and a half. - """]] - -## Creating a template - -To create a template, simply add a template directive to a page, and the -page will provide a link that can be used to create the template. The template -is a regular wiki page, located in the `templates/` subdirectory inside -the source directory of the wiki. - -(Alternatively, templates can be stored in a directory outside the wiki, -as files with the extension ".tmpl". -By default, these are searched for in `/usr/share/ikiwiki/templates`; -the `templatedir` setting can be used to make another directory be searched -first.) - -The template uses the syntax used by the [[!cpan HTML::Template]] perl -module, which allows for some fairly complex things to be done. Consult its -documentation for the full syntax, but all you really need to know are a -few things: - -* Each parameter you pass to the template directive will generate a - template variable. There are also some pre-defined variables like PAGE - and BASENAME. -* To insert the value of a variable, use `<TMPL_VAR variable>`. Wiki markup - in the value will first be converted to html. -* To insert the raw value of a variable, with wiki markup not yet converted - to html, use `<TMPL_VAR raw_variable>`. -* To make a block of text conditional on a variable being set use - `<TMPL_IF NAME="variable">text</TMPL_IF>`. -* To use one block of text if a variable is set and a second if it's not, - use `<TMPL_IF NAME="variable">text<TMPL_ELSE>other text</TMPL_IF>` - -Here's a sample template: - - <span class="infobox"> - Name: \[[<TMPL_VAR raw_name>]]<br /> - Age: <TMPL_VAR age><br /> - <TMPL_IF NAME="color"> - Favorite color: <TMPL_VAR color><br /> - <TMPL_ELSE> - No favorite color.<br /> - </TMPL_IF> - <TMPL_IF NAME="notes"> - <hr /> - <TMPL_VAR notes> - </TMPL_IF> - </span> - -The filled out template will be formatted the same as the rest of the page -that contains it, so you can include WikiLinks and all other forms of wiki -markup in the template. Note though that such WikiLinks will not show up as -backlinks to the page that uses the template. - -Note the use of "raw_name" inside the [[ikiwiki/WikiLink]] generator. This -ensures that if the name contains something that might be mistaken for wiki -markup, it's not converted to html before being processed as a -[[ikiwiki/WikiLink]]. -- cgit v1.2.3 From d822e37d0efc34f2267f275030de11cd3c7ff7bb Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 15:32:39 -0400 Subject: move template documentation to the template directive allow new templates to be created via the inline that lists them (cherry picked from commit 83703d2f4a8832155e3c111792489062ccc4793b) --- doc/ikiwiki/directive/template.mdwn | 71 ++++++++++++++++++++++++++++++-- doc/templates.mdwn | 82 ++----------------------------------- 2 files changed, 71 insertions(+), 82 deletions(-) diff --git a/doc/ikiwiki/directive/template.mdwn b/doc/ikiwiki/directive/template.mdwn index d538b69b1..ae71ba5b5 100644 --- a/doc/ikiwiki/directive/template.mdwn +++ b/doc/ikiwiki/directive/template.mdwn @@ -5,14 +5,79 @@ wiki, by using the template directive. The directive has an `id` parameter that identifies the template to use. The remaining parameters are used to fill out the template. -Example: +## Example \[[!template id=note text="""Here is the text to insert into my note."""]] This fills out the `note` template, filling in the `text` field with the specified value, and inserts the result into the page. -For a list of available templates, and details about how to create more, -see the [[templates]] page. +## Using a template + +Generally, a value can include any markup that would be allowed in the wiki +page outside the template. Triple-quoting the value even allows quotes to +be included in it. Combined with multi-line quoted values, this allows for +large chunks of marked up text to be embedded into a template: + + \[[!template id=foo name="Sally" color="green" age=8 notes=""" + * \[[Charley]]'s sister. + * "I want to be an astronaut when I grow up." + * Really 8 and a half. + """]] + +## Creating a template + +The template is a regular wiki page, located in the `templates/` +subdirectory inside the source directory of the wiki. + +(Alternatively, templates can be stored in a directory outside the wiki, +as files with the extension ".tmpl". +By default, these are searched for in `/usr/share/ikiwiki/templates`; +the `templatedir` setting can be used to make another directory be searched +first.) + +The template uses the syntax used by the [[!cpan HTML::Template]] perl +module, which allows for some fairly complex things to be done. Consult its +documentation for the full syntax, but all you really need to know are a +few things: + +* Each parameter you pass to the template directive will generate a + template variable. There are also some pre-defined variables like PAGE + and BASENAME. +* To insert the value of a variable, use `<TMPL_VAR variable>`. Wiki markup + in the value will first be converted to html. +* To insert the raw value of a variable, with wiki markup not yet converted + to html, use `<TMPL_VAR raw_variable>`. +* To make a block of text conditional on a variable being set use + `<TMPL_IF NAME="variable">text</TMPL_IF>`. +* To use one block of text if a variable is set and a second if it's not, + use `<TMPL_IF NAME="variable">text<TMPL_ELSE>other text</TMPL_IF>` + +Here's a sample template: + + <span class="infobox"> + Name: \[[<TMPL_VAR raw_name>]]<br /> + Age: <TMPL_VAR age><br /> + <TMPL_IF NAME="color"> + Favorite color: <TMPL_VAR color><br /> + <TMPL_ELSE> + No favorite color.<br /> + </TMPL_IF> + <TMPL_IF NAME="notes"> + <hr /> + <TMPL_VAR notes> + </TMPL_IF> + </span> + +The filled out template will be formatted the same as the rest of the page +that contains it, so you can include WikiLinks and all other forms of wiki +markup in the template. Note though that such WikiLinks will not show up as +backlinks to the page that uses the template. + +Note the use of "raw_name" inside the [[ikiwiki/WikiLink]] generator in the +example above. This ensures that if the name contains something that might +be mistaken for wiki markup, it's not converted to html before being +processed as a [[ikiwiki/WikiLink]]. + [[!meta robots="noindex, follow"]] diff --git a/doc/templates.mdwn b/doc/templates.mdwn index 07531ae98..f2b581d2f 100644 --- a/doc/templates.mdwn +++ b/doc/templates.mdwn @@ -9,85 +9,9 @@ wiki. [[!if test="enabled(template) and enabled(inline)" then=""" -These templates are available for inclusion onto other pages in this -wiki: +These templates are available for use with the template directive. [[!inline pages="templates/* and !*/discussion" feeds=no archive=yes -sort=title template=titlepage]] +sort=title template=titlepage +rootpage=templates postformtext="Add a new template named:"]] """]] - -## Using a template - -Using a template works like this: - - \[[!template id=note text="""Here is the text to insert into my note."""]] - -This fills out the [[note]] template, filling in the `text` field with -the specified value, and inserts the result into the page. - -Generally, a value can include any markup that would be allowed in the wiki -page outside the template. Triple-quoting the value even allows quotes to -be included in it. Combined with multi-line quoted values, this allows for -large chunks of marked up text to be embedded into a template: - - \[[!template id=foo name="Sally" color="green" age=8 notes=""" - * \[[Charley]]'s sister. - * "I want to be an astronaut when I grow up." - * Really 8 and a half. - """]] - -## Creating a template - -To create a template, simply add a template directive to a page, and the -page will provide a link that can be used to create the template. The template -is a regular wiki page, located in the `templates/` subdirectory inside -the source directory of the wiki. - -(Alternatively, templates can be stored in a directory outside the wiki, -as files with the extension ".tmpl". -By default, these are searched for in `/usr/share/ikiwiki/templates`; -the `templatedir` setting can be used to make another directory be searched -first.) - -The template uses the syntax used by the [[!cpan HTML::Template]] perl -module, which allows for some fairly complex things to be done. Consult its -documentation for the full syntax, but all you really need to know are a -few things: - -* Each parameter you pass to the template directive will generate a - template variable. There are also some pre-defined variables like PAGE - and BASENAME. -* To insert the value of a variable, use `<TMPL_VAR variable>`. Wiki markup - in the value will first be converted to html. -* To insert the raw value of a variable, with wiki markup not yet converted - to html, use `<TMPL_VAR raw_variable>`. -* To make a block of text conditional on a variable being set use - `<TMPL_IF NAME="variable">text</TMPL_IF>`. -* To use one block of text if a variable is set and a second if it's not, - use `<TMPL_IF NAME="variable">text<TMPL_ELSE>other text</TMPL_IF>` - -Here's a sample template: - - <span class="infobox"> - Name: \[[<TMPL_VAR raw_name>]]<br /> - Age: <TMPL_VAR age><br /> - <TMPL_IF NAME="color"> - Favorite color: <TMPL_VAR color><br /> - <TMPL_ELSE> - No favorite color.<br /> - </TMPL_IF> - <TMPL_IF NAME="notes"> - <hr /> - <TMPL_VAR notes> - </TMPL_IF> - </span> - -The filled out template will be formatted the same as the rest of the page -that contains it, so you can include WikiLinks and all other forms of wiki -markup in the template. Note though that such WikiLinks will not show up as -backlinks to the page that uses the template. - -Note the use of "raw_name" inside the [[ikiwiki/WikiLink]] generator. This -ensures that if the name contains something that might be mistaken for wiki -markup, it's not converted to html before being processed as a -[[ikiwiki/WikiLink]]. -- cgit v1.2.3 From 7e79da76332b93214a7d9a5c91bc046db4219ee2 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 16:10:46 -0400 Subject: template docu reorg Remove wikitemplates page; fold its contents into templates page. Update all backlinks. Document new ability to put templates inside srcdir. --- doc/bugs/SSI_include_stripped_from_mdwn.mdwn | 2 +- doc/bugs/login_page_non-obvious_with_openid.mdwn | 4 +- doc/features.mdwn | 2 +- doc/freesoftware.mdwn | 2 +- doc/ikiwiki-calendar.mdwn | 2 +- doc/ikiwiki/directive/edittemplate.mdwn | 2 +- doc/ikiwiki/directive/pagetemplate.mdwn | 8 +- doc/ikiwiki/directive/template.mdwn | 8 +- doc/plugins/autoindex.mdwn | 2 +- doc/plugins/map/discussion.mdwn | 2 +- doc/plugins/pagetemplate.mdwn | 6 +- doc/plugins/template.mdwn | 4 +- doc/plugins/write.mdwn | 4 +- doc/templates.mdwn | 91 +++++++++++++++++++--- doc/tips/comments_feed.mdwn | 2 +- ...o-create_tag_pages_according_to_a_template.mdwn | 2 +- doc/todo/auto_rebuild_on_template_change.mdwn | 2 +- doc/todo/html.mdwn | 2 +- doc/todo/multiple_templates.mdwn | 2 +- doc/usage.mdwn | 5 +- doc/wikitemplates.mdwn | 52 ------------- doc/wikitemplates/discussion.mdwn | 46 ----------- 22 files changed, 111 insertions(+), 141 deletions(-) delete mode 100644 doc/wikitemplates.mdwn delete mode 100644 doc/wikitemplates/discussion.mdwn diff --git a/doc/bugs/SSI_include_stripped_from_mdwn.mdwn b/doc/bugs/SSI_include_stripped_from_mdwn.mdwn index 5519e45c6..270da86d3 100644 --- a/doc/bugs/SSI_include_stripped_from_mdwn.mdwn +++ b/doc/bugs/SSI_include_stripped_from_mdwn.mdwn @@ -10,7 +10,7 @@ If I have a <--#include virtual="foo" --> in some file, it gets stripped, > Anyway, it makes sense for the htmlscrubber to strip server-side > includes because otherwise your wiki could be attacked > by them being added to it. If you want to use both the htmlscrubber and -> SSI together, I'd suggest you modify the [[wikitemplates]] +> SSI together, I'd suggest you modify the [[templates]] > and put the SSI on there. > > Ie, `page.tmpl` has a diff --git a/doc/bugs/login_page_non-obvious_with_openid.mdwn b/doc/bugs/login_page_non-obvious_with_openid.mdwn index 1d087985a..9aa702037 100644 --- a/doc/bugs/login_page_non-obvious_with_openid.mdwn +++ b/doc/bugs/login_page_non-obvious_with_openid.mdwn @@ -36,7 +36,7 @@ If you want to keep it as one form, then perhaps using some javascript to disabl > that allows modifying that form, but does not allow creating a separate > form. The best way to make it obvious how to use it currently is to just > disable password auth, then it's nice and simple. :-) Javascript is an -> interesting idea. It's also possible to write a custom [[signin.tmpl wikitemplates]] that +> interesting idea. It's also possible to write a custom [[templates]] that > is displayed instead of the regular signin form, and it should be > possible to use that to manually lay it out better than FormBuilder > manages with its automatic layout. --[[Joey]] @@ -44,4 +44,4 @@ If you want to keep it as one form, then perhaps using some javascript to disabl > I've improved the form, I think it's more obvious now that the openid > stuff is separate. Good enough to call this [[done]]. I think. --[[Joey]] ->> Looks good, thanks! :-) -- [[AdamShand]] \ No newline at end of file +>> Looks good, thanks! :-) -- [[AdamShand]] diff --git a/doc/features.mdwn b/doc/features.mdwn index ab521213d..07ce648ea 100644 --- a/doc/features.mdwn +++ b/doc/features.mdwn @@ -72,7 +72,7 @@ you would care to syndicate. Ikiwiki aims to produce [valid XHTML 1.0](http://validator.w3.org/check?url=referer). Ikiwiki -generates html using [[templates|wikitemplates]], and uses [[css]], so you +generates html using [[templates]], and uses [[css]], so you can change the look and layout of all pages in any way you would like. ## [[Plugins]] diff --git a/doc/freesoftware.mdwn b/doc/freesoftware.mdwn index 7ac1ac6b4..2243d9b1f 100644 --- a/doc/freesoftware.mdwn +++ b/doc/freesoftware.mdwn @@ -4,7 +4,7 @@ ikiwiki, and this documentation wiki, are licensed under the terms of the GNU [[GPL]], version 2 or later. The parts of ikiwiki that become part of your own wiki (the [[basewiki]] -pages (but not the smilies) and the [[templates|wikitemplates]]) are licensed +pages (but not the smilies) and the [[templates]]) are licensed as follows: > Redistribution and use in source and compiled forms, with or without diff --git a/doc/ikiwiki-calendar.mdwn b/doc/ikiwiki-calendar.mdwn index c1f4d7267..03cbdd86c 100644 --- a/doc/ikiwiki-calendar.mdwn +++ b/doc/ikiwiki-calendar.mdwn @@ -43,7 +43,7 @@ An example crontab: # TEMPLATES -This command uses two [[template|wikitemplates]] to generate +This command uses two [[templates]] to generate the pages, `calendarmonth.tmpl` and `calendaryear.tmpl`. # AUTHOR diff --git a/doc/ikiwiki/directive/edittemplate.mdwn b/doc/ikiwiki/directive/edittemplate.mdwn index d731bdb47..c486e821b 100644 --- a/doc/ikiwiki/directive/edittemplate.mdwn +++ b/doc/ikiwiki/directive/edittemplate.mdwn @@ -21,7 +21,7 @@ something like: Details: The template page can also contain [[!cpan HTML::Template]] directives, -similar to other ikiwiki [[templates]]. Currently only one variable is +like other ikiwiki [[templates]]. Currently only one variable is set: `<TMPL_VAR name>` is replaced with the name of the page being created. diff --git a/doc/ikiwiki/directive/pagetemplate.mdwn b/doc/ikiwiki/directive/pagetemplate.mdwn index 8ad901c1a..401b38099 100644 --- a/doc/ikiwiki/directive/pagetemplate.mdwn +++ b/doc/ikiwiki/directive/pagetemplate.mdwn @@ -1,17 +1,13 @@ The `pagetemplate` directive is supplied by the [[!iki plugins/pagetemplate desc=pagetemplate]] plugin. -This directive allows a page to be displayed using a different template than -the default `page.tmpl` template. +This directive allows a page to be displayed using a different +[[template|templates]] than the default `page.tmpl` template. The page text is inserted into the template, so the template controls the overall look and feel of the wiki page. This is in contrast to the [[ikiwiki/directive/template]] directive, which allows inserting templates _into_ the body of a page. -This directive can only reference templates that are already installed -by the system administrator, typically into the -`/usr/share/ikiwiki/templates` directory. Example: - \[[!pagetemplate template="my_fancy.tmpl"]] [[!meta robots="noindex, follow"]] diff --git a/doc/ikiwiki/directive/template.mdwn b/doc/ikiwiki/directive/template.mdwn index ae71ba5b5..052ca7873 100644 --- a/doc/ikiwiki/directive/template.mdwn +++ b/doc/ikiwiki/directive/template.mdwn @@ -1,7 +1,11 @@ The `template` directive is supplied by the [[!iki plugins/template desc=template]] plugin. -[[Templates]] are files that can be filled out and inserted into pages in the -wiki, by using the template directive. The directive has an `id` parameter +The template directive allows wiki pages to be used as templates. +These templates can be filled out and inserted into other pages in the +wiki using the directive. The [[templates]] page lists templates +that can be used with this directive. + +The directive has an `id` parameter that identifies the template to use. The remaining parameters are used to fill out the template. diff --git a/doc/plugins/autoindex.mdwn b/doc/plugins/autoindex.mdwn index d1133e4f5..7c4e40419 100644 --- a/doc/plugins/autoindex.mdwn +++ b/doc/plugins/autoindex.mdwn @@ -3,5 +3,5 @@ This plugin searches for [[SubPages|ikiwiki/subpage]] with a missing parent page, and generates the parent pages. The generated page content is -controlled by the `autoindex.tmpl` [[template|wikitemplates]], which by +controlled by the `autoindex.tmpl` [[template|templates]], which by default, uses a [[map]] to list the SubPages. diff --git a/doc/plugins/map/discussion.mdwn b/doc/plugins/map/discussion.mdwn index 2f7b140d6..54c921b0f 100644 --- a/doc/plugins/map/discussion.mdwn +++ b/doc/plugins/map/discussion.mdwn @@ -1,7 +1,7 @@ I'm wanting a [[map]] (with indentation levels) showing page _titles_ instead of page 'names'. As far as I can see, this is not an option with existing plugins - I can get a list of pages using [[inline]] and -appropriate [[wikitemplates]], but that has no indentation and therefore +appropriate [[templates]], but that has no indentation and therefore doesn't show structure well. The quick way is to modify the map plugin to have a 'titles' option. The diff --git a/doc/plugins/pagetemplate.mdwn b/doc/plugins/pagetemplate.mdwn index 53f069d0d..8254e14c5 100644 --- a/doc/plugins/pagetemplate.mdwn +++ b/doc/plugins/pagetemplate.mdwn @@ -3,8 +3,4 @@ This plugin provides the [[ikiwiki/directive/pagetemplate]] [[ikiwiki/directive]], which allows a page to be displayed -using a different [[template|wikitemplates]] than the default. - -This plugin can only use templates that are already installed in -`/usr/share/ikiwiki/templates` (or wherever ikiwiki is configured to look for -them). You can choose to use any .tmpl files in that directory. +using a different [[template|templates]] than the default. diff --git a/doc/plugins/template.mdwn b/doc/plugins/template.mdwn index da775f232..8d17e2825 100644 --- a/doc/plugins/template.mdwn +++ b/doc/plugins/template.mdwn @@ -3,5 +3,5 @@ This plugin provides the [[ikiwiki/directive/template]] [[ikiwiki/directive]]. With this plugin, you can set up templates, and cause them to be filled out -and inserted into pages in the wiki. It's documented and existing templates -are listed in the [[templates]] page. +and inserted into pages in the wiki. Existing templates are listed in the +[[templates]] page. diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 00b54bdd3..9128c7f54 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -297,7 +297,7 @@ value is ignored. hook(type => "pagetemplate", id => "foo", call => \&pagetemplate); -[[Templates|wikitemplates]] are filled out for many different things in +[[Templates]] are filled out for many different things in ikiwiki, like generating a page, or part of a blog page, or an rss feed, or a cgi. This hook allows modifying the variables available on those templates. The function is passed named parameters. The "page" and @@ -313,7 +313,7 @@ a new custom parameter to the template. hook(type => "templatefile", id => "foo", call => \&templatefile); -This hook allows plugins to change the [[template|wikitemplates]] that is +This hook allows plugins to change the [[template|templates]] that is used for a page in the wiki. The hook is passed a "page" parameter, and should return the name of the template file to use (relative to the template directory), or undef if it doesn't want to change the default diff --git a/doc/templates.mdwn b/doc/templates.mdwn index f2b581d2f..f7b3adae5 100644 --- a/doc/templates.mdwn +++ b/doc/templates.mdwn @@ -1,17 +1,88 @@ -[[!meta robots="noindex, follow"]] -[[!if test="enabled(template)" -then="This wiki has templates **enabled**." -else="This wiki has templates **disabled**." -]] +[[Ikiwiki]] uses many templates for many purposes. By editing its templates, +you can fully customise this site. -Templates are files that can be filled out and inserted into pages in the -wiki. +[[!if test="enabled(template)" then=""" +## The template directive +The template directive allows wiki pages to be used as templates. +These templates can be filled out and inserted into other pages in the +wiki using the directive. +"""]] [[!if test="enabled(template) and enabled(inline)" then=""" - -These templates are available for use with the template directive. - [[!inline pages="templates/* and !*/discussion" feeds=no archive=yes sort=title template=titlepage rootpage=templates postformtext="Add a new template named:"]] """]] + +[[!if test="enabled(edittemplate)" then=""" +## The edittemplate directive + +The edittemplate directive can be used to make new pages default to +containing text from a template, which can be filled as out the page is +edited. +"""]] + +## Wiki templates + +These templates are used to build the wiki. The aim is to keep almost all +html out of ikiwiki and in the templates. + +* `page.tmpl` - Used for displaying all regular wiki pages. +* `misc.tmpl` - Generic template used for any page that doesn't + have a custom template. +* `editpage.tmpl` - Create/edit page. +* `change.tmpl` - Used to create a page describing a change made to the wiki. +* `passwordmail.tmpl` - Not a html template, this is used to + generate a mail with an url the user can use to reset their password. +* `rsspage.tmpl` - Used for generating rss feeds for [[blogs|blog]]. +* `rssitem.tmpl` - Used for generating individual items on rss feeds. +* `atompage.tmpl` - Used for generating atom feeds for blogs. +* `atomitem.tmpl` - Used for generating individual items on atom feeds. +* `inlinepage.tmpl` - Used for adding a page inline in a blog + page. +* `archivepage.tmpl` - Used for listing a page in a blog archive page. +* `microblog.tmpl` - Used for showing a microblogging post inline. +* `blogpost.tmpl` - Used for a form to add a post to a blog (and a rss/atom links) +* `feedlink.tmpl` - Used to add rss/atom links if blogpost.tmpl is not used. +* `aggregatepost.tmpl` - Used by the [[plugins/aggregate]] plugin to create + a page for a post. +* `searchform.tmpl` - Used by the [[plugins/search]] plugin to add a search + form to wiki pages. +* `searchquery.tmpl` - This is an omega template, used by the + [[plugins/search]] plugin. +* `comment.tmpl` - This template is used to display a comment + by the [[plugins/comments]] plugin. +* `editcomment.tmpl` - This template is the comment post form for the + [[plugins/comments]] plugin. +* `commentmoderation.tmpl` - This template is used to produce the comment + moderation form. +* `recentchanges.tmpl` - This template is used for listing a change + on the RecentChanges page. + +[[!if test="enabled(pagetemplate)" then=""" +## The pagetemplate directive + +The pagetemplate directive can allow individual pages to use a +different template than `page.tmpl`. +"""]] + +## Template locations + +Templates are located in `/usr/share/ikiwiki/templates` by default; +the `templatedir` setting can be used to make another directory be +searched first. Customized templates can also be placed inside the +"templates/" directory in your wiki's source. + +## Template syntax + +Ikiwiki uses the HTML::Template module as its template engine. This +supports things like conditionals and loops in templates and is pretty easy +to learn. All you really need to know are a few things: + +* To insert the value of a template variable, use `<TMPL_VAR variable>`. +* To make a block of text conditional on a variable being set use + `<TMPL_IF NAME="variable">text</TMPL_IF>`. +* To use one block of text if a variable is set and a second if it's not, + use `<TMPL_IF NAME="variable">text<TMPL_ELSE>other text</TMPL_IF>` + +[[!meta robots="noindex, follow"]] diff --git a/doc/tips/comments_feed.mdwn b/doc/tips/comments_feed.mdwn index 6f8137256..6d4dbb803 100644 --- a/doc/tips/comments_feed.mdwn +++ b/doc/tips/comments_feed.mdwn @@ -6,5 +6,5 @@ add a feed that contains all the comments posted to any page. Here's how: \[[!inline pages="internal(*/comment_*)" template=comment]] The special [[ikiwiki/PageSpec]] matches all comments. The -[[template|wikitemplates]] causes the comments to be displayed formatted +[[template|templates]] causes the comments to be displayed formatted nicely. diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index f6d444890..7eb404910 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -17,7 +17,7 @@ The new tag file is then complied during the change phase. *see git history of this page if you want the patch --[[smcv]]* -This uses a [[template|wikitemplates]] called `autotagpage.tmpl`, here is my template file: +This uses a [[template|templates]] called `autotagpage.tmpl`, here is my template file: \[[!inline pages="link(<TMPL_VAR TAG>)" archive="yes"]] diff --git a/doc/todo/auto_rebuild_on_template_change.mdwn b/doc/todo/auto_rebuild_on_template_change.mdwn index a112cb9da..838d15c1a 100644 --- a/doc/todo/auto_rebuild_on_template_change.mdwn +++ b/doc/todo/auto_rebuild_on_template_change.mdwn @@ -6,7 +6,7 @@ This would allow setting: templatedir => "$srcdir/templates", -.. and then the [[wikitemplates]] are managed like other wiki files; and +.. and then the [[templates]] are managed like other wiki files; and like other wiki files, a change to them automatically updates dependent pages. diff --git a/doc/todo/html.mdwn b/doc/todo/html.mdwn index 44f20c876..4f4542be2 100644 --- a/doc/todo/html.mdwn +++ b/doc/todo/html.mdwn @@ -1,6 +1,6 @@ Create some nice(r) stylesheets. Should be doable w/o touching a single line of code, just -editing the [[wikitemplates]] and/or editing [[style.css]]. +editing the [[templates]] and/or editing [[style.css]]. [[done]] ([[css_market]] ..) diff --git a/doc/todo/multiple_templates.mdwn b/doc/todo/multiple_templates.mdwn index 72783c556..30fb8d6ee 100644 --- a/doc/todo/multiple_templates.mdwn +++ b/doc/todo/multiple_templates.mdwn @@ -1,4 +1,4 @@ -> Another useful feature might be to be able to choose a different [[template|wikitemplates]] +> Another useful feature might be to be able to choose a different [[template|templates]] > file for some pages; [[blog]] pages would use a template different from the > home page, even if both are managed in the same repository, etc. diff --git a/doc/usage.mdwn b/doc/usage.mdwn index 2e12517ea..9cf61cc6c 100644 --- a/doc/usage.mdwn +++ b/doc/usage.mdwn @@ -120,10 +120,11 @@ also be configured using a setup file. * --templatedir dir - Specify the directory that the page [[templates|wikitemplates]] are stored in. + Specify the directory that [[templates|templates]] are stored in. Default is `/usr/share/ikiwiki/templates`, or another location as configured at build time. If the templatedir is changed, missing templates will still - be searched for in the default location as a fallback. + be searched for in the default location as a fallback. Templates can also be + placed in the "templates/" subdirectory of the srcdir. Note that if you choose to copy and modify ikiwiki's templates, you will need to be careful to keep them up to date when upgrading to new versions of diff --git a/doc/wikitemplates.mdwn b/doc/wikitemplates.mdwn deleted file mode 100644 index 6e5a7261d..000000000 --- a/doc/wikitemplates.mdwn +++ /dev/null @@ -1,52 +0,0 @@ -ikiwiki uses the HTML::Template module as its template engine. This -supports things like conditionals and loops in templates and is pretty easy -to learn. - -The aim is to keep almost all html out of ikiwiki and in the templates. - -It ships with some basic templates which can be customised. These are -located in `/usr/share/ikiwiki/templates` by default; the `templatedir` -setting can be used to make another directory be searched first. - -* `page.tmpl` - Used for displaying all regular wiki pages. -* `misc.tmpl` - Generic template used for any page that doesn't - have a custom template. -* `editpage.tmpl` - Create/edit page. -* `change.tmpl` - Used to create a page describing a change made to the wiki. -* `passwordmail.tmpl` - Not a html template, this is used to - generate a mail with an url the user can use to reset their password. -* `rsspage.tmpl` - Used for generating rss feeds for [[blogs|blog]]. -* `rssitem.tmpl` - Used for generating individual items on rss feeds. -* `atompage.tmpl` - Used for generating atom feeds for blogs. -* `atomitem.tmpl` - Used for generating individual items on atom feeds. -* `inlinepage.tmpl` - Used for adding a page inline in a blog - page. -* `archivepage.tmpl` - Used for listing a page in a blog archive page. -* `microblog.tmpl` - Used for showing a microblogging post inline. -* `blogpost.tmpl` - Used for a form to add a post to a blog (and a rss/atom links) -* `feedlink.tmpl` - Used to add rss/atom links if blogpost.tmpl is not used. -* `aggregatepost.tmpl` - Used by the [[plugins/aggregate]] plugin to create - a page for a post. -* `searchform.tmpl` - Used by the [[plugins/search]] plugin to add a search - form to wiki pages. -* `searchquery.tmpl` - This is an omega template, used by the - [[plugins/search]] plugin. -* `comment.tmpl` - This template is used to display a comment - by the [[plugins/comments]] plugin. -* `editcomment.tmpl` - This template is the comment post form for the - [[plugins/comments]] plugin. -* `commentmoderation.tmpl` - This template is used to produce the comment - moderation form. -* `recentchanges.tmpl` - This template is used for listing a change - on the RecentChanges page. - -The [[plugins/pagetemplate]] plugin can allow individual pages to use a -different template than `page.tmpl`. - -The [[plugins/template]] plugin also uses templates, though those -[[templates]] are typically stored as pages in the wiki, and are inserted -into pages. - -The [[plugins/edittemplate]] plugin is used to make new pages default to -containing text from a template, which can be filled as out the page is -edited. diff --git a/doc/wikitemplates/discussion.mdwn b/doc/wikitemplates/discussion.mdwn deleted file mode 100644 index f97444e5f..000000000 --- a/doc/wikitemplates/discussion.mdwn +++ /dev/null @@ -1,46 +0,0 @@ -## Place for local templates -Where does one put any locally modified templates for an individual ikiwiki? --Ivan Z. - -> You can put them whereever you like; the `templatedir` controls -> where ikiwiki looks for them. --[[Joey]] - -Thank you for your response! My question arose out of my intention to make -custom templates for a wiki--specifically suited for the kind of content -it will have--so, that would mean I would want to distribute them through -git together with other content of the wiki. So, for this case the -separation of conceptually ONE thing (the content, the templates, and the -config option which orders to use these templates) into THREE separate -files/repos (the main content repo, the repo with templates, and the config -file) is not convenient: instead of distributing a single repo, I have to -tell people to take three things if they want to replicate this wiki. How -would you solve this inconvenience? Perhaps, a default location of the -templates *inside* the source repo would do?--Ivan Z. - -> I would avoid putting the templates in a subdirectory of the ikiwiki srcdir. -> (I'd also avoid putting the ikiwiki setup file there.) -> While it's safe to do either in some cases, there are configurations where -> it's unsafe. For example, a malicious user could use attachment handling to -> replace those files with their own, bad versions. -> -> So, two ideas for where to put the templatedir and ikiwiki setup. - -> * The easiest option is to put your wiki content in a subdirectory -> ("wiki", say) and point `srcdir` at that. -> then you can have another subdirectory for the wikitemplates, -> and put the setup file at the top. -> * Another option if using git would be to have a separate branch, -> in the same git repository, that holds wikitemplates and the setup file. -> Then you check out the repository once to make the `srcdir` available, -> and have a second checkout, of the other branch, to make the other stuff -> available. -> -> Note that with either of these methods, you have to watch out if -> giving other direct commit access to the repository. They could -> still edit the setup file and templates, so only trusted users should -> be given access. (It is, however, perfectly safe to let people edit -> the wiki via the web, and is even safe to configure -> [[tips/untrusted_git_push]] to such a repository.) --[[Joey]] - -Thanks, that's a nice and simple idea: to have a subdirectory! I'll try it. --Ivan Z. - -A [[!taglink wish|wishlist]]: the ikiwiki program could be improved so that it follows the same logic as git in looking for its config: it could ascend directories until it finds an `.ikiwiki/` directory with `.ikiwiki/setup` and then uses that configuration. Now I'm tired to always type `ikiwiki --setup path/to/the/setup --refresh` when working in my working clone of the sources; I'd like to simply type `ikiwiki` instead, and let it find the setup file. The default location to look for templates could also be made to be a sibling of the setup file: `.ikiwiki/templates/`. --Ivan Z. -- cgit v1.2.3 From 96c9c8aa925120423fc563dbf233c73fc805288b Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 16:20:02 -0400 Subject: fix return of tpage --- IkiWiki.pm | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 78612cd08..7382f11e4 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1661,16 +1661,20 @@ sub template_file ($) { } my $template=srcfile($tpage, 1); - if (defined $template) { - return $template, $tpage if wantarray; - return $template; + if (! defined $template) { + $name=~s:/::; # avoid path traversal + foreach my $dir ($config{templatedir}, + "$installdir/share/ikiwiki/templates") { + if (-e "$dir/$name") { + $template="$dir/$name"; + last; + } + } } - $name=~s:/::; # avoid path traversal - - foreach my $dir ($config{templatedir}, - "$installdir/share/ikiwiki/templates") { - return "$dir/$name" if -e "$dir/$name"; + if (defined $template) { + return $template, $tpage if wantarray; + return $template; } return; } -- cgit v1.2.3 From 8d72e3dc09b017329397bee88db88b4c5dab351e Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 16:40:42 -0400 Subject: add myclean --- Makefile.PL | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Makefile.PL b/Makefile.PL index 38db20d44..09ec2e730 100755 --- a/Makefile.PL +++ b/Makefile.PL @@ -57,6 +57,10 @@ extra_clean: rm -f *.man $(outprogs) ikiwiki.setup plugins/*.pyc $(MAKE) -C po clean +# Joey uses this before committing. +myclean: clean + git checkout po ikiwiki.spec + underlay_install: install -d $(DESTDIR)$(PREFIX)/share/ikiwiki for dir in `cd underlays && find . -follow -type d ! -regex '.*\.svn.*'`; do \ -- cgit v1.2.3 From 6486452e4c94f5699d98d13e25a361435ed3ddeb Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 16:41:07 -0400 Subject: special case for page.tmpl dependency handling Rather than wasting resources recording that every page depends on page.tmpl, add a special case. The special case curretly rebuilds non-page files too when page.tmpl changes, but that's minor. --- IkiWiki/Render.pm | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 7cf19645e..8ae0cbd4f 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -74,9 +74,16 @@ sub genpage ($$) { $templatefile=$file; } }); - my $template=template_depends( - defined $templatefile ? $templatefile : 'page.tmpl', $page, - blind_cache => 1); + my $template; + if (defined $templatefile) { + $template=template_depends($templatefile, $page, + blind_cache => 1); + } + else { + # no explicit depends as special case + $template=template('page.tmpl', + blind_cache => 1); + } my $actions=0; if (length $config{cgiurl}) { @@ -763,8 +770,14 @@ sub refresh () { foreach my $file (@$new, @$del) { render_linkers($file); } - - if (@$changed || @$internal_changed || + + if ($rendered{"templates/page.tmpl"}) { + foreach my $f (@$files) { + next if $f eq "templates/page.tmpl"; + render($f, sprintf(gettext("building %s, which depends on %s"), $f, "templates/page.tmpl")); + } + } + elsif (@$changed || @$internal_changed || @$del || @$internal_del || @$internal_new) { 1 while render_dependent($files, $new, $internal_new, $del, $internal_del, $internal_changed, -- cgit v1.2.3 From d5c5fef363564261ccba236f1d64eaa60567d514 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 16:48:37 -0400 Subject: update --- doc/todo/auto_rebuild_on_template_change.mdwn | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc/todo/auto_rebuild_on_template_change.mdwn b/doc/todo/auto_rebuild_on_template_change.mdwn index 66aa07193..037d0d1db 100644 --- a/doc/todo/auto_rebuild_on_template_change.mdwn +++ b/doc/todo/auto_rebuild_on_template_change.mdwn @@ -62,3 +62,15 @@ Have started working on this. >>>>>> it'd either be necessary to make them be internal pages >>>>>> (templates/inlinepage._tmpl) or special-case them in some other way. >>>>>> --[[smcv]] + +>>>>>>> In my branch, I left in support for the templatedir, and also +>>>>>>> /usr/share/ikiwiki/templates. So, users do not have to put their +>>>>>>> custom templates in templates/ in the wiki. If they do, +>>>>>>> the templates are copied to the destdir like other non-wiki page files +>>>>>>> are. The templates are not wiki pages, except those used by a few +>>>>>>> things like the [[plugins/template]] plugin. +>>>>>>> +>>>>>>> That seems acceptable, since users probably don't need to modify +>>>>>>> many templates, so the clutter is small. (Especially when +>>>>>>> compared to the other clutter the basewiki always puts in destdir.) +>>>>>>> This could be revisted later. --[[Joey]] -- cgit v1.2.3 From 6c64ce0336240be16eeae81313e53c630cb196bc Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 17:01:22 -0400 Subject: update news for template change --- debian/NEWS | 32 +++++++++++++++++++-------- doc/todo/auto_rebuild_on_template_change.mdwn | 2 ++ template-transition-notes | 4 ---- 3 files changed, 25 insertions(+), 13 deletions(-) delete mode 100644 template-transition-notes diff --git a/debian/NEWS b/debian/NEWS index 3a8705680..69967c84c 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -2,22 +2,36 @@ ikiwiki (3.20100422) unstable; urgency=low This version of ikiwiki has a lot of changes that you need to know about. + Now you can include customised versions of templates in the source + of your wiki. (For example, templates/page.tmpl.) When these templates + are changed, ikiwiki will automatically rebuild pages that use them. + The --getctime switch is renamed to --gettimes, and it also gets the file modification time. And it's a lot faster (when using git). But the really important change is, you don't have to remember to use this switch. Now ikiwiki will do it when it needs to. - Starting from this version, the "tagged()" pagespec only matches tags, - not regular wikilinks. If your wiki accidentially relied on the old, - buggy behavior, you might need to change its pagespecs to use "link()". + At last, the "tagged()" pagespec only matches tags, not regular wikilinks. + If your wiki accidentially relied on the old, buggy behavior, you might + need to change its pagespecs to use "link()". + + Many of your wishes have been answered: Now tag pages can automatically be + created when new tags are used. This feature is enabled by default if you + have configured a tagbase. It can be turned on or off using the + tag_autocreate setting. + + These changes may also affect some users: + + * The title_natural sort method (as used by the inline directive, etc) + have been moved to the new sortnaturally plugin, which is not enabled + by default since it requires the Sort::Naturally perl module. - Now tag pages can automatically be created as new tags are used. This - feature is enabled by default if you have configured a tagbase. It - can be turned on or off using the tag_autocreate setting. + * TMPL_INCLUDE is no longer supported in any template used by ikiwiki. + It used to be allowed in certian templates, but not in others. - The title_natural sort method (as used by the inline directive, etc) - have been moved to the new sortnaturally plugin, which is not enabled - by default since it requires the Sort::Naturally perl module. + * The add_templates option has been removed from the underlay plugin. + If you used this option, you can instead use templates/ subdirectories + inside underlay directories added by the add_underlays option. Due to the above and other changes, all wikis need to be rebuilt on upgrade to this version. If you listed your wiki in /etc/ikiwiki/wikilist diff --git a/doc/todo/auto_rebuild_on_template_change.mdwn b/doc/todo/auto_rebuild_on_template_change.mdwn index 192b22f70..ea990b877 100644 --- a/doc/todo/auto_rebuild_on_template_change.mdwn +++ b/doc/todo/auto_rebuild_on_template_change.mdwn @@ -74,3 +74,5 @@ Have started working on this. >>>>>>> many templates, so the clutter is small. (Especially when >>>>>>> compared to the other clutter the basewiki always puts in destdir.) >>>>>>> This could be revisted later. --[[Joey]] + +[[done]] diff --git a/template-transition-notes b/template-transition-notes deleted file mode 100644 index a319616f4..000000000 --- a/template-transition-notes +++ /dev/null @@ -1,4 +0,0 @@ -* add_templates option removed from underlay plugin - (can use add_underlays instead) -* includes no longer allowed in templates -* template_params removed (not exported API) -- cgit v1.2.3 From 9b112cc986023e3a9ec5a4b5e9824af05e80c4d8 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 17:23:31 -0400 Subject: add test case to ensure all templates are documented --- doc/templates.mdwn | 42 +++++++++++++++++++++--------------------- t/templates_documented.t | 14 ++++++++++++++ 2 files changed, 35 insertions(+), 21 deletions(-) create mode 100755 t/templates_documented.t diff --git a/doc/templates.mdwn b/doc/templates.mdwn index f7b3adae5..7b56600d1 100644 --- a/doc/templates.mdwn +++ b/doc/templates.mdwn @@ -30,34 +30,34 @@ html out of ikiwiki and in the templates. * `page.tmpl` - Used for displaying all regular wiki pages. * `misc.tmpl` - Generic template used for any page that doesn't have a custom template. -* `editpage.tmpl` - Create/edit page. -* `change.tmpl` - Used to create a page describing a change made to the wiki. -* `passwordmail.tmpl` - Not a html template, this is used to - generate a mail with an url the user can use to reset their password. -* `rsspage.tmpl` - Used for generating rss feeds for [[blogs|blog]]. +* `rsspage.tmpl` - Used for generating rss feeds for blogs. * `rssitem.tmpl` - Used for generating individual items on rss feeds. * `atompage.tmpl` - Used for generating atom feeds for blogs. * `atomitem.tmpl` - Used for generating individual items on atom feeds. -* `inlinepage.tmpl` - Used for adding a page inline in a blog - page. +* `inlinepage.tmpl` - Used for displaying a post in a blog. * `archivepage.tmpl` - Used for listing a page in a blog archive page. +* `titlepage.tmpl` - Used for listing a page by title in a blog archive page. * `microblog.tmpl` - Used for showing a microblogging post inline. * `blogpost.tmpl` - Used for a form to add a post to a blog (and a rss/atom links) -* `feedlink.tmpl` - Used to add rss/atom links if blogpost.tmpl is not used. -* `aggregatepost.tmpl` - Used by the [[plugins/aggregate]] plugin to create +* `feedlink.tmpl` - Used to add rss/atom links if `blogpost.tmpl` is not used. +* `aggregatepost.tmpl` - Used by the aggregate plugin to create a page for a post. -* `searchform.tmpl` - Used by the [[plugins/search]] plugin to add a search - form to wiki pages. -* `searchquery.tmpl` - This is an omega template, used by the - [[plugins/search]] plugin. -* `comment.tmpl` - This template is used to display a comment - by the [[plugins/comments]] plugin. -* `editcomment.tmpl` - This template is the comment post form for the - [[plugins/comments]] plugin. -* `commentmoderation.tmpl` - This template is used to produce the comment - moderation form. -* `recentchanges.tmpl` - This template is used for listing a change - on the RecentChanges page. +* `searchform.tmpl`, `googleform.tmpl` - Used by the search plugin + and google plugin to add search forms to wiki pages. +* `searchquery.tmpl` - This is a Omega template, used by the + search plugin. +* `comment.tmpl` - Used by the comments plugin to display a comment. +* `change.tmpl` - Used to create a page describing a change made to the wiki. +* `recentchanges.tmpl` - Used for listing a change on the RecentChanges page. +* `autoindex.tmpl` - Filled in by the autoindex plugin to make index pages. +* `autotag.tmpl` - Filled in by the tag plugin to make tag pages. +* `calendarmonth.tmpl`, `calendaryear.tmpl` - Used by ikiwiki-calendar to + make calendar archive pages. +* `editpage.tmpl`, `editconflict.tmpl`, `editcreationconflict.tmpl`, + `editfailedsave.tmpl`, `editpagegone.tmpl`, `pocreatepage.tmpl`, + `editcomment.tmpl` `commentmoderation.tmpl`, `renamesummary.tmpl`, + `passwordmail.tmpl` - Parts of ikiwiki's user interface; do not + normally need to be customised. [[!if test="enabled(pagetemplate)" then=""" ## The pagetemplate directive diff --git a/t/templates_documented.t b/t/templates_documented.t new file mode 100755 index 000000000..826c51d36 --- /dev/null +++ b/t/templates_documented.t @@ -0,0 +1,14 @@ +#!/usr/bin/perl +use warnings; +use strict; +use Test::More 'no_plan'; + +$/=undef; +open(IN, "doc/templates.mdwn") || die "doc/templates.mdwn: $!"; +my $page=<IN>; +close IN; + +foreach my $file (glob("templates/*.tmpl")) { + $file=~s/templates\///; + ok($page =~ /\Q$file\E/, "$file documented on doc/templates.mdwn"); +} -- cgit v1.2.3 From 33b0a69e90f4c2e22fe0e0c812836a2eb661c6d2 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 17:36:07 -0400 Subject: improve attachment example --- doc/ikiwiki/pagespec/attachment.mdwn | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/ikiwiki/pagespec/attachment.mdwn b/doc/ikiwiki/pagespec/attachment.mdwn index 419f00ee4..fa2bc5867 100644 --- a/doc/ikiwiki/pagespec/attachment.mdwn +++ b/doc/ikiwiki/pagespec/attachment.mdwn @@ -7,11 +7,12 @@ If attachments are enabled, the wiki admin can control what types of attachments will be accepted, via the `allowed_attachments` configuration setting. -For example, to limit arbitrary files to 50 kilobytes, but allow -larger mp3 files to be uploaded by joey into a specific directory, and -check all attachments for viruses, something like this could be used: +For example, to limit most users to uploading small images, and nothing else, +while allowing larger mp3 files to be uploaded by joey into a specific +directory, and check all attachments for viruses, something like this could be +used: - virusfree() and ((user(joey) and podcast/*.mp3 and mimetype(audio/mpeg) and maxsize(15mb)) or (!ispage() and maxsize(50kb))) + virusfree() and ((user(joey) and podcast/*.mp3 and mimetype(audio/mpeg) and maxsize(15mb)) or (mimetype(image/*) and maxsize(50kb))) The regular [[ikiwiki/PageSpec]] syntax is expanded with the following additional tests: -- cgit v1.2.3 From 1473bf84c525d18f933fa2dcae86628af9dfff76 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 17:38:37 -0400 Subject: update re template change --- doc/security.mdwn | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/security.mdwn b/doc/security.mdwn index 21aef316b..34a005239 100644 --- a/doc/security.mdwn +++ b/doc/security.mdwn @@ -162,10 +162,11 @@ closed though. ## HTML::Template security -If the [[plugins/template]] plugin is enabled, users can modify templates -like any other part of the wiki. This assumes that HTML::Template is secure +If the [[plugins/template]] plugin is enabled, all users can modify templates +like any other part of the wiki. Some trusted users can modify templates +without it too. This assumes that HTML::Template is secure when used with untrusted/malicious templates. (Note that includes are not -allowed, so that's not a problem.) +allowed.) ---- -- cgit v1.2.3 From 5fc6e56eb86a502f01bd6b79098be5f7e8bac446 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 17:41:24 -0400 Subject: changelog/NEWS update for template changes --- debian/NEWS | 4 ++++ debian/changelog | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/debian/NEWS b/debian/NEWS index 69967c84c..664f55b6e 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -6,6 +6,10 @@ ikiwiki (3.20100422) unstable; urgency=low of your wiki. (For example, templates/page.tmpl.) When these templates are changed, ikiwiki will automatically rebuild pages that use them. + Allowing untrusted users to upload attachments with the ".tmpl" + extension is not recommended, as that allows anyone to change + a wiki's templates. + The --getctime switch is renamed to --gettimes, and it also gets the file modification time. And it's a lot faster (when using git). But the really important change is, you don't have to remember to use this diff --git a/debian/changelog b/debian/changelog index 0ab04f522..425e28fa6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,11 @@ ikiwiki (3.20100422) UNRELEASED; urgency=low [ Joey Hess ] * tag: Automatic creation of tag pages can now be enabled using the tag_autocreate setting. (David Riebenbauer) + * Customised templates can now be included in the source of wikis + (and also in underlays), and dependencies on them are tracked. + * TMPL_INCLUDE is no longer supported in any template. + * underlay: Removed the add_templates option. + * Add template_depends function to plugin API. * bzr: Fix bzr log parsing to work with bzr 2.0. (liw) * comments: Fix missing entity encoding in title. * txt: Add a special case for robots.txt. -- cgit v1.2.3 From 9976abe63ca7359255cdce890e6013e9a2105a13 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Fri, 23 Apr 2010 17:43:29 -0400 Subject: typo --- debian/NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/NEWS b/debian/NEWS index 664f55b6e..f976bdc01 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -27,7 +27,7 @@ ikiwiki (3.20100422) unstable; urgency=low These changes may also affect some users: * The title_natural sort method (as used by the inline directive, etc) - have been moved to the new sortnaturally plugin, which is not enabled + has been moved to the new sortnaturally plugin, which is not enabled by default since it requires the Sort::Naturally perl module. * TMPL_INCLUDE is no longer supported in any template used by ikiwiki. -- cgit v1.2.3 From 05517a5426fb585fdd56b21ce13cb4b80d2bc709 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 00:41:52 -0400 Subject: wording --- doc/templates.mdwn | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/templates.mdwn b/doc/templates.mdwn index 7b56600d1..c91037670 100644 --- a/doc/templates.mdwn +++ b/doc/templates.mdwn @@ -4,9 +4,8 @@ you can fully customise this site. [[!if test="enabled(template)" then=""" ## The template directive -The template directive allows wiki pages to be used as templates. -These templates can be filled out and inserted into other pages in the -wiki using the directive. +The template directive allows wiki pages to be used as templates, +filled out and inserted into other pages in the wiki. """]] [[!if test="enabled(template) and enabled(inline)" then=""" [[!inline pages="templates/* and !*/discussion" feeds=no archive=yes -- cgit v1.2.3 From a46e17893204142c4cb3400057e814aa7856d350 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 00:43:45 -0400 Subject: add link to templates page --- doc/ikiwiki.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ikiwiki.mdwn b/doc/ikiwiki.mdwn index e0a971d96..4d840696c 100644 --- a/doc/ikiwiki.mdwn +++ b/doc/ikiwiki.mdwn @@ -14,3 +14,4 @@ Some documentation on using ikiwiki: * [[ikiwiki/markdown]] * [[ikiwiki/openid]] * [[ikiwiki/searching]] +* [[templates]] -- cgit v1.2.3 From be3d754320088ecbb0d60a1675d71078611ef62c Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 00:45:54 -0400 Subject: remove paragraph about old style directives, it's been long enough --- doc/ikiwiki/wikilink.mdwn | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/doc/ikiwiki/wikilink.mdwn b/doc/ikiwiki/wikilink.mdwn index f561d5850..0c30aafa2 100644 --- a/doc/ikiwiki/wikilink.mdwn +++ b/doc/ikiwiki/wikilink.mdwn @@ -22,15 +22,3 @@ page, but the link will appear like this: [[foo_bar|SandBox]]. To link to an anchor inside a page, you can use something like `\[[WikiLink#foo]]` . - -## Directives and WikiLinks - -ikiwiki has two syntaxes for -[[directives|directive]]. The older syntax -used spaces to distinguish between directives and -wikilinks; as a result, with that syntax in use, you cannot use spaces -in WikiLinks, and must replace spaces with underscores. The newer -syntax, enabled with the `prefix_directives` option in an ikiwiki -setup file, prefixes directives with `!`, and thus does not prevent -links with spaces. Future versions of ikiwiki will turn this option -on by default. -- cgit v1.2.3 From b28323e76a98d56fa4af813338a134dea0106626 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 00:47:46 -0400 Subject: fix caps --- doc/ikiwiki/subpage.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/ikiwiki/subpage.mdwn b/doc/ikiwiki/subpage.mdwn index e047b860c..862f45ec1 100644 --- a/doc/ikiwiki/subpage.mdwn +++ b/doc/ikiwiki/subpage.mdwn @@ -5,8 +5,8 @@ this page, [[SubPage]] has some related pages placed under it, like wiki rather than just having a great big directory full of pages. To add a SubPage, just make a subdirectory and put pages in it. For -example, this page is SubPage.mdwn in this wiki's source, and there is also -a SubPage subdirectory, which contains SubPage/LinkingRules.mdwn. Subpages +example, this page is subpage.mdwn in this wiki's source, and there is also +a subpage subdirectory, which contains subpage/linkingrules.mdwn. Subpages can be nested as deeply as you'd like. Linking to and from a SubPage is explained in [[LinkingRules]]. -- cgit v1.2.3 From e90d67d3c9a93862657563e17e24054087f205d1 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 00:54:59 -0400 Subject: Moved javascript files under the ikiwiki/ directory, to avoid cluttering the top of the web root. This is another things that requires a wiki rebuild on upgrade to this version. --- IkiWiki/Plugin/relativedate.pm | 4 +- IkiWiki/Plugin/toggle.pm | 4 +- debian/changelog | 5 +- debian/postinst | 2 +- underlays/javascript/ikiwiki.js | 54 -------------------- underlays/javascript/ikiwiki/ikiwiki.js | 54 ++++++++++++++++++++ underlays/javascript/ikiwiki/relativedate.js | 76 ++++++++++++++++++++++++++++ underlays/javascript/ikiwiki/toggle.js | 29 +++++++++++ underlays/javascript/relativedate.js | 76 ---------------------------- underlays/javascript/toggle.js | 29 ----------- 10 files changed, 168 insertions(+), 165 deletions(-) delete mode 100644 underlays/javascript/ikiwiki.js create mode 100644 underlays/javascript/ikiwiki/ikiwiki.js create mode 100644 underlays/javascript/ikiwiki/relativedate.js create mode 100644 underlays/javascript/ikiwiki/toggle.js delete mode 100644 underlays/javascript/relativedate.js delete mode 100644 underlays/javascript/toggle.js diff --git a/IkiWiki/Plugin/relativedate.pm b/IkiWiki/Plugin/relativedate.pm index 7f006af83..7e615f7f1 100644 --- a/IkiWiki/Plugin/relativedate.pm +++ b/IkiWiki/Plugin/relativedate.pm @@ -37,9 +37,9 @@ sub include_javascript ($;$) { my $page=shift; my $absolute=shift; - return '<script src="'.urlto("ikiwiki.js", $page, $absolute). + return '<script src="'.urlto("ikiwiki/ikiwiki.js", $page, $absolute). '" type="text/javascript" charset="utf-8"></script>'."\n". - '<script src="'.urlto("relativedate.js", $page, $absolute). + '<script src="'.urlto("ikiwiki/relativedate.js", $page, $absolute). '" type="text/javascript" charset="utf-8"></script>'; } diff --git a/IkiWiki/Plugin/toggle.pm b/IkiWiki/Plugin/toggle.pm index f9c899540..3319421d9 100644 --- a/IkiWiki/Plugin/toggle.pm +++ b/IkiWiki/Plugin/toggle.pm @@ -81,9 +81,9 @@ sub include_javascript ($;$) { my $page=shift; my $absolute=shift; - return '<script src="'.urlto("ikiwiki.js", $page, $absolute). + return '<script src="'.urlto("ikiwiki/ikiwiki.js", $page, $absolute). '" type="text/javascript" charset="utf-8"></script>'."\n". - '<script src="'.urlto("toggle.js", $page, $absolute). + '<script src="'.urlto("ikiwiki/toggle.js", $page, $absolute). '" type="text/javascript" charset="utf-8"></script>'; } diff --git a/debian/changelog b/debian/changelog index 0ab04f522..f9d012e42 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -ikiwiki (3.20100422) UNRELEASED; urgency=low +ikiwiki (3.20100424) UNRELEASED; urgency=low [ Joey Hess ] * tag: Automatic creation of tag pages can now be enabled using @@ -66,6 +66,9 @@ ikiwiki (3.20100422) UNRELEASED; urgency=low (Jelmer Vernooij) * Quite a lot of new optimisations, and one major fix to a recent performance regression. + * Moved javascript files under the ikiwiki/ directory, to avoid cluttering + the top of the web root. This is another things that requires a wiki + rebuild on upgrade to this version. -- Joey Hess <joeyh@debian.org> Sun, 04 Apr 2010 12:17:11 -0400 diff --git a/debian/postinst b/debian/postinst index 810b7cfe0..76ad115ac 100755 --- a/debian/postinst +++ b/debian/postinst @@ -4,7 +4,7 @@ set -e # Change this when some incompatible change is made that requires # rebuilding all wikis. -firstcompat=3.20100422 +firstcompat=3.20100424 if [ "$1" = configure ] && \ dpkg --compare-versions "$2" lt "$firstcompat"; then diff --git a/underlays/javascript/ikiwiki.js b/underlays/javascript/ikiwiki.js deleted file mode 100644 index aebc5cf7e..000000000 --- a/underlays/javascript/ikiwiki.js +++ /dev/null @@ -1,54 +0,0 @@ -// ikiwiki's javascript utility function library - -var hooks; - -// Run onload as soon as the DOM is ready, if possible. -// gecko, opera 9 -if (document.addEventListener) { - document.addEventListener("DOMContentLoaded", run_hooks_onload, false); -} -// other browsers -window.onload = run_hooks_onload; - -var onload_done = 0; - -function run_hooks_onload() { - // avoid firing twice - if (onload_done) - return; - onload_done = true; - - run_hooks("onload"); -} - -function run_hooks(name) { - if (typeof(hooks) != "undefined") { - for (var i = 0; i < hooks.length; i++) { - if (hooks[i].name == name) { - hooks[i].call(); - } - } - } -} - -function hook(name, call) { - if (typeof(hooks) == "undefined") - hooks = new Array; - hooks.push({name: name, call: call}); -} - -function getElementsByClass(cls, node, tag) { - if (document.getElementsByClass) - return document.getElementsByClass(cls, node, tag); - if (! node) node = document; - if (! tag) tag = '*'; - var ret = new Array(); - var pattern = new RegExp("(^|\\s)"+cls+"(\\s|$)"); - var els = node.getElementsByTagName(tag); - for (i = 0; i < els.length; i++) { - if ( pattern.test(els[i].className) ) { - ret.push(els[i]); - } - } - return ret; -} diff --git a/underlays/javascript/ikiwiki/ikiwiki.js b/underlays/javascript/ikiwiki/ikiwiki.js new file mode 100644 index 000000000..aebc5cf7e --- /dev/null +++ b/underlays/javascript/ikiwiki/ikiwiki.js @@ -0,0 +1,54 @@ +// ikiwiki's javascript utility function library + +var hooks; + +// Run onload as soon as the DOM is ready, if possible. +// gecko, opera 9 +if (document.addEventListener) { + document.addEventListener("DOMContentLoaded", run_hooks_onload, false); +} +// other browsers +window.onload = run_hooks_onload; + +var onload_done = 0; + +function run_hooks_onload() { + // avoid firing twice + if (onload_done) + return; + onload_done = true; + + run_hooks("onload"); +} + +function run_hooks(name) { + if (typeof(hooks) != "undefined") { + for (var i = 0; i < hooks.length; i++) { + if (hooks[i].name == name) { + hooks[i].call(); + } + } + } +} + +function hook(name, call) { + if (typeof(hooks) == "undefined") + hooks = new Array; + hooks.push({name: name, call: call}); +} + +function getElementsByClass(cls, node, tag) { + if (document.getElementsByClass) + return document.getElementsByClass(cls, node, tag); + if (! node) node = document; + if (! tag) tag = '*'; + var ret = new Array(); + var pattern = new RegExp("(^|\\s)"+cls+"(\\s|$)"); + var els = node.getElementsByTagName(tag); + for (i = 0; i < els.length; i++) { + if ( pattern.test(els[i].className) ) { + ret.push(els[i]); + } + } + return ret; +} diff --git a/underlays/javascript/ikiwiki/relativedate.js b/underlays/javascript/ikiwiki/relativedate.js new file mode 100644 index 000000000..5142332f1 --- /dev/null +++ b/underlays/javascript/ikiwiki/relativedate.js @@ -0,0 +1,76 @@ +// Causes html elements in the 'relativedate' class to be displayed +// as relative dates. The date is parsed from the title attribute, or from +// the element content. + +var dateElements; + +hook("onload", getDates); + +function getDates() { + dateElements = getElementsByClass('relativedate'); + for (var i = 0; i < dateElements.length; i++) { + var elt = dateElements[i]; + var title = elt.attributes.title; + var d = new Date(title ? title.value : elt.innerHTML); + if (! isNaN(d)) { + dateElements[i].date=d; + elt.title=elt.innerHTML; + } + } + + showDates(); +} + +function showDates() { + for (var i = 0; i < dateElements.length; i++) { + var elt = dateElements[i]; + var d = elt.date; + if (! isNaN(d)) { + elt.innerHTML=relativeDate(d); + } + } + setTimeout(showDates,30000); // keep updating every 30s +} + +var timeUnits = new Array; +timeUnits['minute'] = 60; +timeUnits['hour'] = timeUnits['minute'] * 60; +timeUnits['day'] = timeUnits['hour'] * 24; +timeUnits['month'] = timeUnits['day'] * 30; +timeUnits['year'] = timeUnits['day'] * 364; +var timeUnitOrder = ['year', 'month', 'day', 'hour', 'minute']; + +function relativeDate(date) { + var now = new Date(); + var offset = date.getTime() - now.getTime(); + var seconds = Math.round(Math.abs(offset) / 1000); + + // hack to avoid reading just in the future if there is a minor + // amount of clock slip + if (offset >= 0 && seconds < 30 * timeUnits['minute']) { + return "just now"; + } + + var ret = ""; + var shown = 0; + for (i = 0; i < timeUnitOrder.length; i++) { + var unit = timeUnitOrder[i]; + if (seconds >= timeUnits[unit]) { + var num = Math.floor(seconds / timeUnits[unit]); + seconds -= num * timeUnits[unit]; + if (ret) + ret += "and "; + ret += num + " " + unit + (num > 1 ? "s" : "") + " "; + + if (++shown == 2) + break; + } + else if (shown) + break; + } + + if (! ret) + ret = "less than a minute " + + return ret + (offset < 0 ? "ago" : "from now"); +} diff --git a/underlays/javascript/ikiwiki/toggle.js b/underlays/javascript/ikiwiki/toggle.js new file mode 100644 index 000000000..d190b737a --- /dev/null +++ b/underlays/javascript/ikiwiki/toggle.js @@ -0,0 +1,29 @@ +// Uses CSS to hide toggleables, to avoid any flashing on page load. The +// CSS is only emitted after it tests that it's going to be able +// to show the toggleables. +if (document.getElementById && document.getElementsByTagName && document.createTextNode) { + document.write('<style type="text/css">div.toggleable { display: none; }</style>'); + hook("onload", inittoggle); +} + +function inittoggle() { + var as = getElementsByClass('toggle'); + for (var i = 0; i < as.length; i++) { + var id = as[i].href.match(/#(\w.+)/)[1]; + if (document.getElementById(id).className == "toggleable") + document.getElementById(id).style.display="none"; + as[i].onclick = function() { + toggle(this); + return false; + } + } +} + +function toggle(s) { + var id = s.href.match(/#(\w.+)/)[1]; + style = document.getElementById(id).style; + if (style.display == "none") + style.display = "block"; + else + style.display = "none"; +} diff --git a/underlays/javascript/relativedate.js b/underlays/javascript/relativedate.js deleted file mode 100644 index 5142332f1..000000000 --- a/underlays/javascript/relativedate.js +++ /dev/null @@ -1,76 +0,0 @@ -// Causes html elements in the 'relativedate' class to be displayed -// as relative dates. The date is parsed from the title attribute, or from -// the element content. - -var dateElements; - -hook("onload", getDates); - -function getDates() { - dateElements = getElementsByClass('relativedate'); - for (var i = 0; i < dateElements.length; i++) { - var elt = dateElements[i]; - var title = elt.attributes.title; - var d = new Date(title ? title.value : elt.innerHTML); - if (! isNaN(d)) { - dateElements[i].date=d; - elt.title=elt.innerHTML; - } - } - - showDates(); -} - -function showDates() { - for (var i = 0; i < dateElements.length; i++) { - var elt = dateElements[i]; - var d = elt.date; - if (! isNaN(d)) { - elt.innerHTML=relativeDate(d); - } - } - setTimeout(showDates,30000); // keep updating every 30s -} - -var timeUnits = new Array; -timeUnits['minute'] = 60; -timeUnits['hour'] = timeUnits['minute'] * 60; -timeUnits['day'] = timeUnits['hour'] * 24; -timeUnits['month'] = timeUnits['day'] * 30; -timeUnits['year'] = timeUnits['day'] * 364; -var timeUnitOrder = ['year', 'month', 'day', 'hour', 'minute']; - -function relativeDate(date) { - var now = new Date(); - var offset = date.getTime() - now.getTime(); - var seconds = Math.round(Math.abs(offset) / 1000); - - // hack to avoid reading just in the future if there is a minor - // amount of clock slip - if (offset >= 0 && seconds < 30 * timeUnits['minute']) { - return "just now"; - } - - var ret = ""; - var shown = 0; - for (i = 0; i < timeUnitOrder.length; i++) { - var unit = timeUnitOrder[i]; - if (seconds >= timeUnits[unit]) { - var num = Math.floor(seconds / timeUnits[unit]); - seconds -= num * timeUnits[unit]; - if (ret) - ret += "and "; - ret += num + " " + unit + (num > 1 ? "s" : "") + " "; - - if (++shown == 2) - break; - } - else if (shown) - break; - } - - if (! ret) - ret = "less than a minute " - - return ret + (offset < 0 ? "ago" : "from now"); -} diff --git a/underlays/javascript/toggle.js b/underlays/javascript/toggle.js deleted file mode 100644 index d190b737a..000000000 --- a/underlays/javascript/toggle.js +++ /dev/null @@ -1,29 +0,0 @@ -// Uses CSS to hide toggleables, to avoid any flashing on page load. The -// CSS is only emitted after it tests that it's going to be able -// to show the toggleables. -if (document.getElementById && document.getElementsByTagName && document.createTextNode) { - document.write('<style type="text/css">div.toggleable { display: none; }</style>'); - hook("onload", inittoggle); -} - -function inittoggle() { - var as = getElementsByClass('toggle'); - for (var i = 0; i < as.length; i++) { - var id = as[i].href.match(/#(\w.+)/)[1]; - if (document.getElementById(id).className == "toggleable") - document.getElementById(id).style.display="none"; - as[i].onclick = function() { - toggle(this); - return false; - } - } -} - -function toggle(s) { - var id = s.href.match(/#(\w.+)/)[1]; - style = document.getElementById(id).style; - if (style.display == "none") - style.display = "block"; - else - style.display = "none"; -} -- cgit v1.2.3 From c0b2334815303d4dc2fdf0b22dff12085671c8d8 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 01:13:37 -0400 Subject: reword, reorg, add example --- doc/templates.mdwn | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/doc/templates.mdwn b/doc/templates.mdwn index c91037670..0e54ae8a0 100644 --- a/doc/templates.mdwn +++ b/doc/templates.mdwn @@ -2,7 +2,7 @@ you can fully customise this site. [[!if test="enabled(template)" then=""" -## The template directive +## template pages The template directive allows wiki pages to be used as templates, filled out and inserted into other pages in the wiki. @@ -12,21 +12,32 @@ filled out and inserted into other pages in the wiki. sort=title template=titlepage rootpage=templates postformtext="Add a new template named:"]] """]] +[[!if test="enabled(template)" then=""" +[[!template id=note text="This note box is built using the +[[note]] template!"]] +[[!template id=popup mouseover="popup example" popup="This popup is built using +the [[popup]] template!"]] +"""]] [[!if test="enabled(edittemplate)" then=""" -## The edittemplate directive +## edit templates The edittemplate directive can be used to make new pages default to containing text from a template, which can be filled as out the page is edited. """]] -## Wiki templates +## wiki templates These templates are used to build the wiki. The aim is to keep almost all html out of ikiwiki and in the templates. -* `page.tmpl` - Used for displaying all regular wiki pages. +* `page.tmpl` - Used for displaying all regular wiki pages. This is the + key template customize. +[[!if test="enabled(pagetemplate)" then=""" + (The pagetemplate directive can be used to make a page use a + different template than `page.tmpl`.) +"""]] * `misc.tmpl` - Generic template used for any page that doesn't have a custom template. * `rsspage.tmpl` - Used for generating rss feeds for blogs. @@ -58,13 +69,6 @@ html out of ikiwiki and in the templates. `passwordmail.tmpl` - Parts of ikiwiki's user interface; do not normally need to be customised. -[[!if test="enabled(pagetemplate)" then=""" -## The pagetemplate directive - -The pagetemplate directive can allow individual pages to use a -different template than `page.tmpl`. -"""]] - ## Template locations Templates are located in `/usr/share/ikiwiki/templates` by default; -- cgit v1.2.3 From df012e54c7bf5a8e8fb2cb3c2f8cbf8dc30686f9 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 01:13:58 -0400 Subject: chomp template values Before the template reorg, this was done by a template filter. --- IkiWiki/Plugin/template.pm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/IkiWiki/Plugin/template.pm b/IkiWiki/Plugin/template.pm index d2b2fef55..52c482c38 100644 --- a/IkiWiki/Plugin/template.pm +++ b/IkiWiki/Plugin/template.pm @@ -56,12 +56,14 @@ sub preprocess (@) { IkiWiki::filter($params{page}, $params{destpagea}, $params{$param}), $scan); if ($template->query(name => $param)) { - $template->param($param => - IkiWiki::htmlize($params{page}, $params{destpage}, + my $htmlvalue=IkiWiki::htmlize($params{page}, $params{destpage}, pagetype($pagesources{$params{page}}), - $value)); + $value); + chomp $htmlvalue; + $template->param($param => $htmlvalue); } if ($template->query(name => "raw_$param")) { + chomp $value; $template->param("raw_$param" => $value); } } -- cgit v1.2.3 From a95d824cb43b9ffadb802f0804818b329f57d69a Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 01:36:01 -0400 Subject: update --- doc/templates.mdwn | 46 +++++++++++++++++----------------------------- 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/doc/templates.mdwn b/doc/templates.mdwn index 0e54ae8a0..67e5517e4 100644 --- a/doc/templates.mdwn +++ b/doc/templates.mdwn @@ -1,6 +1,21 @@ [[Ikiwiki]] uses many templates for many purposes. By editing its templates, you can fully customise this site. +Templates are located in `/usr/share/ikiwiki/templates` by default; +the `templatedir` setting can be used to make another directory be +searched first. Customized templates can also be placed inside the +"templates/" directory in your wiki's source. + +Ikiwiki uses the HTML::Template module as its template engine. This +supports things like conditionals and loops in templates and is pretty +easy to learn. All you really need to know are a few things: + +* To insert the value of a template variable, use `<TMPL_VAR variable>`. +* To make a block of text conditional on a variable being set use + `<TMPL_IF NAME="variable">text</TMPL_IF>`. +* To use one block of text if a variable is set and a second if it's not, + use `<TMPL_IF NAME="variable">text<TMPL_ELSE>other text</TMPL_IF>` + [[!if test="enabled(template)" then=""" ## template pages @@ -12,12 +27,6 @@ filled out and inserted into other pages in the wiki. sort=title template=titlepage rootpage=templates postformtext="Add a new template named:"]] """]] -[[!if test="enabled(template)" then=""" -[[!template id=note text="This note box is built using the -[[note]] template!"]] -[[!template id=popup mouseover="popup example" popup="This popup is built using -the [[popup]] template!"]] -"""]] [[!if test="enabled(edittemplate)" then=""" ## edit templates @@ -33,11 +42,9 @@ These templates are used to build the wiki. The aim is to keep almost all html out of ikiwiki and in the templates. * `page.tmpl` - Used for displaying all regular wiki pages. This is the - key template customize. -[[!if test="enabled(pagetemplate)" then=""" + key template to customize. [[!if test="enabled(pagetemplate)" then=""" (The pagetemplate directive can be used to make a page use a - different template than `page.tmpl`.) -"""]] + different template than `page.tmpl`.)"""]] * `misc.tmpl` - Generic template used for any page that doesn't have a custom template. * `rsspage.tmpl` - Used for generating rss feeds for blogs. @@ -69,23 +76,4 @@ html out of ikiwiki and in the templates. `passwordmail.tmpl` - Parts of ikiwiki's user interface; do not normally need to be customised. -## Template locations - -Templates are located in `/usr/share/ikiwiki/templates` by default; -the `templatedir` setting can be used to make another directory be -searched first. Customized templates can also be placed inside the -"templates/" directory in your wiki's source. - -## Template syntax - -Ikiwiki uses the HTML::Template module as its template engine. This -supports things like conditionals and loops in templates and is pretty easy -to learn. All you really need to know are a few things: - -* To insert the value of a template variable, use `<TMPL_VAR variable>`. -* To make a block of text conditional on a variable being set use - `<TMPL_IF NAME="variable">text</TMPL_IF>`. -* To use one block of text if a variable is set and a second if it's not, - use `<TMPL_IF NAME="variable">text<TMPL_ELSE>other text</TMPL_IF>` - [[!meta robots="noindex, follow"]] -- cgit v1.2.3 From 7099978b7255db504ea17ccd07533e86c2b262fa Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 16:00:18 -0400 Subject: bugfix --- IkiWiki.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 7382f11e4..8bae6b72f 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1712,7 +1712,8 @@ sub misctemplate ($$;@) { my $title=shift; my $pagebody=shift; - my $template=template("misc.tmpl", + my $template=template("misc.tmpl"); + $template->param( title => $title, indexlink => indexlink(), wikiname => $config{wikiname}, -- cgit v1.2.3 From c2656f08f3a3671b0ba7dc861d53347c7f695ec1 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 16:11:33 -0400 Subject: template() - return params in list context I forgot CGI::Formbuilder's horrible interface that needs template parameters instead of a constructed object. --- IkiWiki.pm | 7 +- IkiWiki/Plugin/comments.pm | 2 +- IkiWiki/Plugin/editpage.pm | 2 +- doc/plugins/write.mdwn | 8 +- po/bg.po | 236 ++++++++++++++++++++++--------------------- po/cs.po | 243 +++++++++++++++++++++++--------------------- po/da.po | 242 ++++++++++++++++++++++++-------------------- po/de.po | 242 ++++++++++++++++++++++++-------------------- po/es.po | 246 ++++++++++++++++++++++++--------------------- po/fr.po | 242 ++++++++++++++++++++++++-------------------- po/gu.po | 235 +++++++++++++++++++++++-------------------- po/ikiwiki.pot | 218 ++++++++++++++++++++------------------- po/it.po | 242 ++++++++++++++++++++++++-------------------- po/pl.po | 241 +++++++++++++++++++++++--------------------- po/sv.po | 236 ++++++++++++++++++++++--------------------- 15 files changed, 1416 insertions(+), 1226 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 8bae6b72f..c218ed8ab 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1690,8 +1690,7 @@ sub template_depends ($$;@) { return unless defined $filename; - require HTML::Template; - return HTML::Template->new( + my @opts=( filter => sub { my $text_ref = shift; ${$text_ref} = decode_utf8(${$text_ref}); @@ -1702,6 +1701,10 @@ sub template_depends ($$;@) { @_, no_includes => 1, ); + return @opts if wantarray; + + require HTML::Template; + return HTML::Template->new(@opts); } sub template ($;@) { diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index ed75a6e46..f7dc99dca 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -274,7 +274,7 @@ sub editcomment ($$) { action => $config{cgiurl}, header => 0, table => 0, - template => template('editcomment.tmpl'), + template => { template('editcomment.tmpl') }, ); IkiWiki::decode_form_utf8($form); diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm index 5c94ecbca..7bb6eb07c 100644 --- a/IkiWiki/Plugin/editpage.pm +++ b/IkiWiki/Plugin/editpage.pm @@ -78,7 +78,7 @@ sub cgi_editpage ($$) { action => $config{cgiurl}, header => 0, table => 0, - template => template("editpage.tmpl"), + template => { template("editpage.tmpl") }, ); decode_form_utf8($form); diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 9128c7f54..a9ea7db73 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -701,9 +701,11 @@ the entire wiki build and make the wiki unusable. ### `template($;@)` -Creates and returns a [[!cpan HTML::Template]] object. The first parameter -is the name of the template file. The optional remaining parameters are -passed to `HTML::Template->new`. +Creates and returns a [[!cpan HTML::Template]] object. (In a list context, +returns the parameters needed to construct the obhect.) + +The first parameter is the name of the template file. The optional remaining +parameters are passed to `HTML::Template->new`. Normally, the template file is first looked for in the templates/ subdirectory of the srcdir. Failing that, it is looked for in the templatedir. diff --git a/po/bg.po b/po/bg.po index 5585a10d6..f85323ea3 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: 2010-04-03 14:18-0400\n" +"POT-Creation-Date: 2010-04-24 16:15-0400\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" @@ -55,7 +55,7 @@ msgstr "Предпочитанията са запазени." msgid "You are banned." msgstr "Достъпът ви е забранен." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1291 msgid "Error" msgstr "Грешка" @@ -137,7 +137,7 @@ msgstr "създаване на нова страницa „%s”" msgid "deleting bucket.." msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:231 msgid "done" msgstr "готово" @@ -178,7 +178,7 @@ msgstr "" msgid "attachment upload" msgstr "" -#: ../IkiWiki/Plugin/autoindex.pm:105 +#: ../IkiWiki/Plugin/autoindex.pm:117 msgid "automatic index generation" msgstr "" @@ -210,55 +210,55 @@ msgstr "" msgid "Anonymous" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 +#: ../IkiWiki/Plugin/comments.pm:342 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:345 +#: ../IkiWiki/Plugin/comments.pm:347 #, fuzzy, perl-format msgid "commenting on %s" msgstr "създаване на %s" -#: ../IkiWiki/Plugin/comments.pm:363 +#: ../IkiWiki/Plugin/comments.pm:365 #, perl-format msgid "page '%s' doesn't exist, so you can't comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:370 +#: ../IkiWiki/Plugin/comments.pm:372 #, perl-format msgid "comments on page '%s' are closed" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:467 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "comment stored for moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:469 +#: ../IkiWiki/Plugin/comments.pm:471 msgid "Your comment will be posted after moderator review" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:482 +#: ../IkiWiki/Plugin/comments.pm:484 msgid "Added a comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:486 +#: ../IkiWiki/Plugin/comments.pm:488 #, perl-format msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270 +#: ../IkiWiki/Plugin/comments.pm:530 ../IkiWiki/Plugin/websetup.pm:270 msgid "you are not logged in as an admin" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:579 +#: ../IkiWiki/Plugin/comments.pm:581 msgid "Comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:618 +#: ../IkiWiki/Plugin/comments.pm:620 msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:761 +#: ../IkiWiki/Plugin/comments.pm:759 #, perl-format msgid "%i comment" msgid_plural "%i comments" @@ -268,7 +268,7 @@ msgstr[1] "" #. translators: Here "Comment" is a verb; #. translators: the user clicks on it to #. translators: post a comment. -#: ../IkiWiki/Plugin/comments.pm:771 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comment" msgstr "" @@ -298,14 +298,14 @@ msgstr "премахване на старата страница „%s”" msgid "%s is not an editable page" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:296 +#: ../IkiWiki/Plugin/editpage.pm:295 #, perl-format msgid "creating %s" msgstr "създаване на %s" -#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 -#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 -#: ../IkiWiki/Plugin/editpage.pm:426 +#: ../IkiWiki/Plugin/editpage.pm:313 ../IkiWiki/Plugin/editpage.pm:332 +#: ../IkiWiki/Plugin/editpage.pm:342 ../IkiWiki/Plugin/editpage.pm:386 +#: ../IkiWiki/Plugin/editpage.pm:425 #, perl-format msgid "editing %s" msgstr "промяна на %s" @@ -325,9 +325,10 @@ msgstr "не е указан файл на обвивката" msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:138 +#: ../IkiWiki/Plugin/edittemplate.pm:125 ../IkiWiki/Plugin/inline.pm:339 +#: ../IkiWiki/Plugin/template.pm:44 #, fuzzy -msgid "failed to process" +msgid "failed to process template:" msgstr "грешка при обработване на шаблона" #: ../IkiWiki/Plugin/format.pm:30 @@ -358,18 +359,18 @@ msgstr "грешка при четене на „%s”: %s" msgid "%s is an attachment, not a page." msgstr "" -#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 +#: ../IkiWiki/Plugin/git.pm:687 ../IkiWiki/Plugin/git.pm:705 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:698 +#: ../IkiWiki/Plugin/git.pm:727 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:702 +#: ../IkiWiki/Plugin/git.pm:731 msgid "you are not allowed to change file modes" msgstr "" @@ -458,12 +459,12 @@ msgstr "" msgid "Add a new post titled:" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:333 +#: ../IkiWiki/Plugin/inline.pm:342 #, perl-format -msgid "nonexistant template %s" -msgstr "" +msgid "template %s not found" +msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/inline.pm:625 +#: ../IkiWiki/Plugin/inline.pm:635 msgid "RPC::XML::Client not found, not pinging" msgstr "модулът „RPC::XML::Client” не е намерен; източникът не е проверен" @@ -494,21 +495,25 @@ msgstr "" "грешка при зареждането на perl-модула „Markdown.pm” (%s) или „/usr/bin/" "markdown” (%s)" -#: ../IkiWiki/Plugin/meta.pm:162 +#: ../IkiWiki/Plugin/meta.pm:174 #, fuzzy msgid "stylesheet not found" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/meta.pm:200 +#: ../IkiWiki/Plugin/meta.pm:212 #, fuzzy msgid "redir page not found" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/meta.pm:214 +#: ../IkiWiki/Plugin/meta.pm:226 #, fuzzy msgid "redir cycle is not allowed" msgstr "шаблонът „%s” не е намерен" +#: ../IkiWiki/Plugin/meta.pm:383 +msgid "sort=meta requires a parameter" +msgstr "" + #: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Огледала" @@ -525,10 +530,6 @@ msgstr "" msgid "more" msgstr "" -#: ../IkiWiki/Plugin/norcs.pm:66 -msgid "getctime not implemented" -msgstr "функцията „getctime” не е реализирана" - #: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "" @@ -546,39 +547,39 @@ msgstr "Всички страници имат връзки от други ст msgid "bad or missing template" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:229 +#: ../IkiWiki/Plugin/passwordauth.pm:231 msgid "Your user page: " msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:236 +#: ../IkiWiki/Plugin/passwordauth.pm:238 msgid "Create your user page" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:264 +#: ../IkiWiki/Plugin/passwordauth.pm:268 msgid "Account creation successful. Now you can Login." msgstr "Акаунтът е създаден. Можете да влезете." -#: ../IkiWiki/Plugin/passwordauth.pm:267 +#: ../IkiWiki/Plugin/passwordauth.pm:271 msgid "Error creating account." msgstr "Грешка при създаване на акаунта." -#: ../IkiWiki/Plugin/passwordauth.pm:274 +#: ../IkiWiki/Plugin/passwordauth.pm:278 msgid "No email address, so cannot email password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:308 +#: ../IkiWiki/Plugin/passwordauth.pm:312 msgid "Failed to send mail" msgstr "Грешка при изпращане на поща" -#: ../IkiWiki/Plugin/passwordauth.pm:310 +#: ../IkiWiki/Plugin/passwordauth.pm:314 msgid "You have been mailed password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:345 +#: ../IkiWiki/Plugin/passwordauth.pm:349 msgid "incorrect password reset url" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:348 +#: ../IkiWiki/Plugin/passwordauth.pm:352 msgid "password reset denied" msgstr "" @@ -609,94 +610,94 @@ msgstr "модулът „RPC::XML::Client” не е намерен; източ msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:139 +#: ../IkiWiki/Plugin/po.pm:140 #, perl-format msgid "%s is not a valid language code" msgstr "" -#: ../IkiWiki/Plugin/po.pm:151 +#: ../IkiWiki/Plugin/po.pm:152 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:156 +#: ../IkiWiki/Plugin/po.pm:157 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:386 +#: ../IkiWiki/Plugin/po.pm:388 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:392 ../IkiWiki/Render.pm:761 #, fuzzy, perl-format msgid "building %s" msgstr "промяна на %s" -#: ../IkiWiki/Plugin/po.pm:428 +#: ../IkiWiki/Plugin/po.pm:430 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:452 +#: ../IkiWiki/Plugin/po.pm:454 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:472 +#: ../IkiWiki/Plugin/po.pm:474 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:871 +#: ../IkiWiki/Plugin/po.pm:873 #, perl-format msgid "POT file (%s) does not exist" msgstr "" -#: ../IkiWiki/Plugin/po.pm:885 +#: ../IkiWiki/Plugin/po.pm:887 #, fuzzy, perl-format msgid "failed to copy underlay PO file to %s" msgstr "крешка при компилиране на файла %s" -#: ../IkiWiki/Plugin/po.pm:894 +#: ../IkiWiki/Plugin/po.pm:896 #, fuzzy, perl-format msgid "failed to update %s" msgstr "крешка при компилиране на файла %s" -#: ../IkiWiki/Plugin/po.pm:900 +#: ../IkiWiki/Plugin/po.pm:902 #, fuzzy, perl-format msgid "failed to copy the POT file to %s" msgstr "крешка при компилиране на файла %s" -#: ../IkiWiki/Plugin/po.pm:936 +#: ../IkiWiki/Plugin/po.pm:938 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:949 +#: ../IkiWiki/Plugin/po.pm:951 #, fuzzy, perl-format msgid "failed to translate %s" msgstr "грешка при запис на файла „%s”: %s" -#: ../IkiWiki/Plugin/po.pm:1033 +#: ../IkiWiki/Plugin/po.pm:1035 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 -#: ../IkiWiki/Plugin/po.pm:1142 +#: ../IkiWiki/Plugin/po.pm:1091 ../IkiWiki/Plugin/po.pm:1105 +#: ../IkiWiki/Plugin/po.pm:1144 #, fuzzy, perl-format msgid "failed to write %s" msgstr "грешка при запис на файла „%s”: %s" -#: ../IkiWiki/Plugin/po.pm:1101 +#: ../IkiWiki/Plugin/po.pm:1103 #, fuzzy msgid "failed to translate" msgstr "приставката „linkmap”: грешка при изпълнение на „dot”" -#: ../IkiWiki/Plugin/po.pm:1154 +#: ../IkiWiki/Plugin/po.pm:1156 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -841,44 +842,44 @@ msgstr "" msgid "no change to the file name was specified" msgstr "не е указан файл на обвивката" -#: ../IkiWiki/Plugin/rename.pm:69 +#: ../IkiWiki/Plugin/rename.pm:68 #, perl-format msgid "illegal name" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:74 +#: ../IkiWiki/Plugin/rename.pm:73 #, perl-format msgid "%s already exists" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:80 +#: ../IkiWiki/Plugin/rename.pm:79 #, perl-format msgid "%s already exists on disk" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:123 +#: ../IkiWiki/Plugin/rename.pm:122 #, fuzzy, perl-format msgid "rename %s" msgstr "обновяване на страницата „%s”" -#: ../IkiWiki/Plugin/rename.pm:162 +#: ../IkiWiki/Plugin/rename.pm:161 msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:249 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:252 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:349 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:573 +#: ../IkiWiki/Plugin/rename.pm:572 #, fuzzy, perl-format msgid "update for rename of %s to %s" msgstr "обновяване на страниците от уики „%s”: %s от потребител „%s”" @@ -983,21 +984,21 @@ msgstr "" msgid "parse fail at line %d: %s" msgstr "грешка при запис на файла „%s”: %s" -#: ../IkiWiki/Plugin/template.pm:34 +#: ../IkiWiki/Plugin/tag.pm:83 +#, fuzzy, perl-format +msgid "creating tag page %s" +msgstr "създаване на нова страницa „%s”" + +#: ../IkiWiki/Plugin/template.pm:33 #, fuzzy msgid "missing id parameter" msgstr "липсващ параметър „id” на шаблона" #: ../IkiWiki/Plugin/template.pm:47 -#, perl-format -msgid "template %s not found" +#, fuzzy, perl-format +msgid "%s not found" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/template.pm:66 -#, fuzzy -msgid "failed to process:" -msgstr "грешка при обработване на шаблона" - #: ../IkiWiki/Plugin/teximg.pm:72 msgid "missing tex code" msgstr "" @@ -1056,54 +1057,59 @@ msgstr "" msgid "bad file name %s" msgstr "пропускане на невалидното име на файл „%s”" -#: ../IkiWiki/Render.pm:153 +#: ../IkiWiki/Render.pm:162 #, perl-format msgid "scanning %s" msgstr "сканиране на „%s”" -#: ../IkiWiki/Render.pm:274 +#: ../IkiWiki/Render.pm:284 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "allow this" msgstr "" -#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 +#: ../IkiWiki/Render.pm:315 #, perl-format msgid "skipping bad filename %s" msgstr "пропускане на невалидното име на файл „%s”" -#: ../IkiWiki/Render.pm:308 +#: ../IkiWiki/Render.pm:330 #, perl-format msgid "%s has multiple possible source pages" msgstr "" -#: ../IkiWiki/Render.pm:413 +#: ../IkiWiki/Render.pm:372 #, perl-format -msgid "removing old page %s" +msgid "querying %s for file creation and modification times.." +msgstr "" + +#: ../IkiWiki/Render.pm:434 +#, fuzzy, perl-format +msgid "removing obsolete %s" msgstr "премахване на старата страница „%s”" -#: ../IkiWiki/Render.pm:486 +#: ../IkiWiki/Render.pm:507 #, fuzzy, perl-format msgid "building %s, which links to %s" msgstr "обновяване на страницата „%s”, съдържаща препратки към „%s”" -#: ../IkiWiki/Render.pm:495 +#: ../IkiWiki/Render.pm:516 #, fuzzy, perl-format msgid "removing %s, no longer built by %s" msgstr "премахване на „%s” понеже не се генерира от „%s”" -#: ../IkiWiki/Render.pm:618 +#: ../IkiWiki/Render.pm:671 ../IkiWiki/Render.pm:777 #, fuzzy, perl-format msgid "building %s, which depends on %s" msgstr "обновяване на страницата „%s”, зависеща от „%s”" -#: ../IkiWiki/Render.pm:631 +#: ../IkiWiki/Render.pm:684 #, fuzzy, perl-format msgid "building %s, to update its backlinks" msgstr "обновяване на „%s” и осъвременяване на обратните връзки" -#: ../IkiWiki/Render.pm:707 +#: ../IkiWiki/Render.pm:819 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: неуспех при обновяване на страницата „%s”" @@ -1176,64 +1182,65 @@ msgstr "формат: ikiwiki [опции] източник местоназна msgid " ikiwiki --setup configfile" msgstr "" -#: ../ikiwiki.in:95 +#: ../ikiwiki.in:96 msgid "usage: --set var=value" msgstr "" -#: ../ikiwiki.in:102 +#: ../ikiwiki.in:103 msgid "usage: --set-yaml var=value" msgstr "" -#: ../ikiwiki.in:156 +#: ../ikiwiki.in:157 msgid "generating wrappers.." msgstr "генериране на обвивки..." -#: ../ikiwiki.in:219 +#: ../ikiwiki.in:220 msgid "rebuilding wiki.." msgstr "обновяване на уики..." -#: ../ikiwiki.in:222 +#: ../ikiwiki.in:223 msgid "refreshing wiki.." msgstr "осъвременяване на уики..." -#: ../IkiWiki.pm:238 +#: ../IkiWiki.pm:233 msgid "Discussion" msgstr "Дискусия" -#: ../IkiWiki.pm:530 +#: ../IkiWiki.pm:524 msgid "Must specify url to wiki with --url when using --cgi" msgstr "" "При използване на пареметъра „--cgi” е необходимо да се укаже и " "местоположението на уикито чрез параметъра „--url”" -#: ../IkiWiki.pm:576 +#: ../IkiWiki.pm:570 msgid "cannot use multiple rcs plugins" msgstr "" -#: ../IkiWiki.pm:605 +#: ../IkiWiki.pm:599 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1278 +#: ../IkiWiki.pm:1273 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "открита е циклична завидимост при %s на „%s” на дълбочина %i" -#: ../IkiWiki.pm:1901 +#: ../IkiWiki.pm:1932 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2044 -msgid "Sort::Naturally needed for title_natural sort" -msgstr "" +#: ../IkiWiki.pm:2009 +#, fuzzy, perl-format +msgid "invalid sort type %s" +msgstr "непознат вид сортиране „%s”" -#: ../IkiWiki.pm:2055 +#: ../IkiWiki.pm:2030 #, perl-format msgid "unknown sort type %s" msgstr "непознат вид сортиране „%s”" -#: ../IkiWiki.pm:2074 +#: ../IkiWiki.pm:2166 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "грешка при четене на „%s”: %s" @@ -1258,6 +1265,13 @@ msgstr "" msgid "What is the domain name of the web server?" msgstr "" +#, fuzzy +#~ msgid "failed to process" +#~ msgstr "грешка при обработване на шаблона" + +#~ msgid "getctime not implemented" +#~ msgstr "функцията „getctime” не е реализирана" + #, fuzzy #~ msgid "failed to read %s" #~ msgstr "грешка при запис на файла „%s”: %s" @@ -1316,10 +1330,6 @@ msgstr "" #~ "изпълнява като „svn post-commit hook”. Няма да бъдат разпратени " #~ "известявания" -#, fuzzy -#~ msgid "%s not found" -#~ msgstr "шаблонът „%s” не е намерен" - #~ msgid "What's this?" #~ msgstr "Какво е това?" diff --git a/po/cs.po b/po/cs.po index 0b45bb97a..71195bae2 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: 2010-04-03 14:18-0400\n" +"POT-Creation-Date: 2010-04-24 16:15-0400\n" "PO-Revision-Date: 2009-09-11 20:23+0200\n" "Last-Translator: Miroslav Kure <kurem@debian.cz>\n" "Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n" @@ -55,7 +55,7 @@ msgstr "Nastavení uloženo." msgid "You are banned." msgstr "Jste vyhoštěni." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1291 msgid "Error" msgstr "Chyba" @@ -136,7 +136,7 @@ msgstr "vytvářím novou stránku %s" msgid "deleting bucket.." msgstr "mažu bucket..." -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:231 msgid "done" msgstr "hotovo" @@ -174,7 +174,7 @@ msgstr "chybné jméno souboru s přílohou" msgid "attachment upload" msgstr "příloha nahrána" -#: ../IkiWiki/Plugin/autoindex.pm:105 +#: ../IkiWiki/Plugin/autoindex.pm:117 msgid "automatic index generation" msgstr "automatické vytváření indexu" @@ -208,55 +208,55 @@ msgstr "komentář musí mít obsah" msgid "Anonymous" msgstr "Anonym" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 +#: ../IkiWiki/Plugin/comments.pm:342 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "chybný název stránky" -#: ../IkiWiki/Plugin/comments.pm:345 +#: ../IkiWiki/Plugin/comments.pm:347 #, perl-format msgid "commenting on %s" msgstr "komentář k %s" -#: ../IkiWiki/Plugin/comments.pm:363 +#: ../IkiWiki/Plugin/comments.pm:365 #, perl-format msgid "page '%s' doesn't exist, so you can't comment" msgstr "stránka „%s“ neexistuje, takže nemůžete komentovat" -#: ../IkiWiki/Plugin/comments.pm:370 +#: ../IkiWiki/Plugin/comments.pm:372 #, perl-format msgid "comments on page '%s' are closed" msgstr "komentáře na stránce „%s“ jsou uzamčeny" -#: ../IkiWiki/Plugin/comments.pm:467 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "comment stored for moderation" msgstr "komentář uložen pro schválení" -#: ../IkiWiki/Plugin/comments.pm:469 +#: ../IkiWiki/Plugin/comments.pm:471 msgid "Your comment will be posted after moderator review" msgstr "Váš komentář bude zobrazen po schválení moderátorem" -#: ../IkiWiki/Plugin/comments.pm:482 +#: ../IkiWiki/Plugin/comments.pm:484 msgid "Added a comment" msgstr "Přidán komentář" -#: ../IkiWiki/Plugin/comments.pm:486 +#: ../IkiWiki/Plugin/comments.pm:488 #, perl-format msgid "Added a comment: %s" msgstr "Přidán komentář: %s" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270 +#: ../IkiWiki/Plugin/comments.pm:530 ../IkiWiki/Plugin/websetup.pm:270 msgid "you are not logged in as an admin" msgstr "nejste přihlášeni jako správce" -#: ../IkiWiki/Plugin/comments.pm:579 +#: ../IkiWiki/Plugin/comments.pm:581 msgid "Comment moderation" msgstr "Schvalování komentářů" -#: ../IkiWiki/Plugin/comments.pm:618 +#: ../IkiWiki/Plugin/comments.pm:620 msgid "comment moderation" msgstr "schvalování komentářů" -#: ../IkiWiki/Plugin/comments.pm:761 +#: ../IkiWiki/Plugin/comments.pm:759 #, fuzzy, perl-format msgid "%i comment" msgid_plural "%i comments" @@ -266,7 +266,7 @@ msgstr[1] "Komentáře" #. translators: Here "Comment" is a verb; #. translators: the user clicks on it to #. translators: post a comment. -#: ../IkiWiki/Plugin/comments.pm:771 +#: ../IkiWiki/Plugin/comments.pm:769 #, fuzzy msgid "Comment" msgstr "Komentáře" @@ -297,14 +297,14 @@ msgstr "odstraňuji starý náhled %s" msgid "%s is not an editable page" msgstr "%s není editovatelná stránka" -#: ../IkiWiki/Plugin/editpage.pm:296 +#: ../IkiWiki/Plugin/editpage.pm:295 #, perl-format msgid "creating %s" msgstr "vytvářím %s" -#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 -#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 -#: ../IkiWiki/Plugin/editpage.pm:426 +#: ../IkiWiki/Plugin/editpage.pm:313 ../IkiWiki/Plugin/editpage.pm:332 +#: ../IkiWiki/Plugin/editpage.pm:342 ../IkiWiki/Plugin/editpage.pm:386 +#: ../IkiWiki/Plugin/editpage.pm:425 #, perl-format msgid "editing %s" msgstr "upravuji %s" @@ -322,9 +322,11 @@ msgstr "nebyl zadán parametr match" msgid "edittemplate %s registered for %s" msgstr "edittemplate %s byla zaregistrována pro %s" -#: ../IkiWiki/Plugin/edittemplate.pm:138 -msgid "failed to process" -msgstr "nepodařilo se zpracovat" +#: ../IkiWiki/Plugin/edittemplate.pm:125 ../IkiWiki/Plugin/inline.pm:339 +#: ../IkiWiki/Plugin/template.pm:44 +#, fuzzy +msgid "failed to process template:" +msgstr "nepodařilo se zpracovat:" #: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" @@ -352,18 +354,18 @@ msgstr "není stránkou" msgid "%s is an attachment, not a page." msgstr "%s není ani příloha, ani stránka." -#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 +#: ../IkiWiki/Plugin/git.pm:687 ../IkiWiki/Plugin/git.pm:705 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "nejste oprávněni měnit %s" -#: ../IkiWiki/Plugin/git.pm:698 +#: ../IkiWiki/Plugin/git.pm:727 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "nemůžete pracovat se souborem s přístupovým oprávněními %s" -#: ../IkiWiki/Plugin/git.pm:702 +#: ../IkiWiki/Plugin/git.pm:731 msgid "you are not allowed to change file modes" msgstr "nejste oprávněni měnit přístupová oprávnění souborů" @@ -445,12 +447,12 @@ msgstr "parametry %s a %s nelze použít zároveň" msgid "Add a new post titled:" msgstr "Přidat nový příspěvek nazvaný:" -#: ../IkiWiki/Plugin/inline.pm:333 +#: ../IkiWiki/Plugin/inline.pm:342 #, perl-format -msgid "nonexistant template %s" -msgstr "neexistující šablona %s" +msgid "template %s not found" +msgstr "šablona %s nebyla nalezena" -#: ../IkiWiki/Plugin/inline.pm:625 +#: ../IkiWiki/Plugin/inline.pm:635 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client nebyl nalezen, nepinkám" @@ -478,18 +480,23 @@ msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" "selhalo nahrání perlového modulu Markdown.pm (%s) nebo /usr/bin/markdown (%s)" -#: ../IkiWiki/Plugin/meta.pm:162 +#: ../IkiWiki/Plugin/meta.pm:174 msgid "stylesheet not found" msgstr "styl nebyl nalezen" -#: ../IkiWiki/Plugin/meta.pm:200 +#: ../IkiWiki/Plugin/meta.pm:212 msgid "redir page not found" msgstr "stránka, na kterou vede přesměrování, nebyla nalezena" -#: ../IkiWiki/Plugin/meta.pm:214 +#: ../IkiWiki/Plugin/meta.pm:226 msgid "redir cycle is not allowed" msgstr "cykly nejsou v přesměrování povoleny" +#: ../IkiWiki/Plugin/meta.pm:383 +#, fuzzy +msgid "sort=meta requires a parameter" +msgstr "vyžaduje parametry „from“ a „to“" + #: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Zrcadla" @@ -507,10 +514,6 @@ msgstr "schvalování komentářů" msgid "more" msgstr "více" -#: ../IkiWiki/Plugin/norcs.pm:66 -msgid "getctime not implemented" -msgstr "getctime není implementováno" - #: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "Přihlásit pomocí" @@ -527,39 +530,39 @@ msgstr "Na každou stránku vede odkaz z jiné stránky." msgid "bad or missing template" msgstr "chybná nebo chybějící šablona" -#: ../IkiWiki/Plugin/passwordauth.pm:229 +#: ../IkiWiki/Plugin/passwordauth.pm:231 msgid "Your user page: " msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:236 +#: ../IkiWiki/Plugin/passwordauth.pm:238 msgid "Create your user page" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:264 +#: ../IkiWiki/Plugin/passwordauth.pm:268 msgid "Account creation successful. Now you can Login." msgstr "Vytvoření účtu bylo úspěšné. Nyní se můžete přihlásit." -#: ../IkiWiki/Plugin/passwordauth.pm:267 +#: ../IkiWiki/Plugin/passwordauth.pm:271 msgid "Error creating account." msgstr "Chyba při vytváření účtu." -#: ../IkiWiki/Plugin/passwordauth.pm:274 +#: ../IkiWiki/Plugin/passwordauth.pm:278 msgid "No email address, so cannot email password reset instructions." msgstr "Bez e-mailové adresy nelze zaslat postup na resetování hesla." -#: ../IkiWiki/Plugin/passwordauth.pm:308 +#: ../IkiWiki/Plugin/passwordauth.pm:312 msgid "Failed to send mail" msgstr "Nepodařilo se odeslat email." -#: ../IkiWiki/Plugin/passwordauth.pm:310 +#: ../IkiWiki/Plugin/passwordauth.pm:314 msgid "You have been mailed password reset instructions." msgstr "Postup na resetování hesla vám byl odeslán na e-mail." -#: ../IkiWiki/Plugin/passwordauth.pm:345 +#: ../IkiWiki/Plugin/passwordauth.pm:349 msgid "incorrect password reset url" msgstr "chybné URL pro resetování hesla" -#: ../IkiWiki/Plugin/passwordauth.pm:348 +#: ../IkiWiki/Plugin/passwordauth.pm:352 msgid "password reset denied" msgstr "resetování hesla bylo zamítnuto" @@ -589,40 +592,40 @@ msgstr "LWP nebyl nalezen, nepinkám" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "varování: rozpoznána stará verze po4a, doporučen přechod na 0.35." -#: ../IkiWiki/Plugin/po.pm:139 +#: ../IkiWiki/Plugin/po.pm:140 #, perl-format msgid "%s is not a valid language code" msgstr "%s není platným kódem jazyka" -#: ../IkiWiki/Plugin/po.pm:151 +#: ../IkiWiki/Plugin/po.pm:152 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" "%s není platnou hodnotou parametru po_link_to, používám po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:156 +#: ../IkiWiki/Plugin/po.pm:157 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" "po_link_to=negotiated vyžaduje zapnuté usedirs, používám po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:386 +#: ../IkiWiki/Plugin/po.pm:388 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "znovusestavuji všechny stránky, aby se opravily meta nadpisy" -#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:392 ../IkiWiki/Render.pm:761 #, perl-format msgid "building %s" msgstr "sestavuji %s" -#: ../IkiWiki/Plugin/po.pm:428 +#: ../IkiWiki/Plugin/po.pm:430 msgid "updated PO files" msgstr "aktualizovány PO soubory" -#: ../IkiWiki/Plugin/po.pm:452 +#: ../IkiWiki/Plugin/po.pm:454 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." @@ -630,7 +633,7 @@ msgstr "" "Nemohu odstranit překlad. Nicméně pokud bude odstraněna hlavní stránka, " "budou odstraněny také její překlady." -#: ../IkiWiki/Plugin/po.pm:472 +#: ../IkiWiki/Plugin/po.pm:474 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." @@ -638,50 +641,50 @@ msgstr "" "Nemohu přejmenovat překlad. Nicméně pokud bude přejmenována hlavní stránka, " "budou přejmenovány také její překlady." -#: ../IkiWiki/Plugin/po.pm:871 +#: ../IkiWiki/Plugin/po.pm:873 #, perl-format msgid "POT file (%s) does not exist" msgstr "POT soubor (%s) neexistuje" -#: ../IkiWiki/Plugin/po.pm:885 +#: ../IkiWiki/Plugin/po.pm:887 #, perl-format msgid "failed to copy underlay PO file to %s" msgstr "nepodařilo se zkopírovat PO soubor na %s" -#: ../IkiWiki/Plugin/po.pm:894 +#: ../IkiWiki/Plugin/po.pm:896 #, perl-format msgid "failed to update %s" msgstr "nepodařilo se aktualizovat %s" -#: ../IkiWiki/Plugin/po.pm:900 +#: ../IkiWiki/Plugin/po.pm:902 #, perl-format msgid "failed to copy the POT file to %s" msgstr "nepodařilo se zkopírovat POT soubor na %s" -#: ../IkiWiki/Plugin/po.pm:936 +#: ../IkiWiki/Plugin/po.pm:938 msgid "N/A" msgstr "N/A" -#: ../IkiWiki/Plugin/po.pm:949 +#: ../IkiWiki/Plugin/po.pm:951 #, perl-format msgid "failed to translate %s" msgstr "nepodařilo se přeložit %s" -#: ../IkiWiki/Plugin/po.pm:1033 +#: ../IkiWiki/Plugin/po.pm:1035 msgid "removed obsolete PO files" msgstr "odstraněny zastaralé PO soubory" -#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 -#: ../IkiWiki/Plugin/po.pm:1142 +#: ../IkiWiki/Plugin/po.pm:1091 ../IkiWiki/Plugin/po.pm:1105 +#: ../IkiWiki/Plugin/po.pm:1144 #, perl-format msgid "failed to write %s" msgstr "nepodařilo se zapsat %s" -#: ../IkiWiki/Plugin/po.pm:1101 +#: ../IkiWiki/Plugin/po.pm:1103 msgid "failed to translate" msgstr "překlad se nezdařil" -#: ../IkiWiki/Plugin/po.pm:1154 +#: ../IkiWiki/Plugin/po.pm:1156 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" "neplatná gettext data, pro pokračování v úpravách se vraťte na předchozí " @@ -825,44 +828,44 @@ msgstr "%s není ve zdrojovém adresáři a proto nelze přejmenovat" msgid "no change to the file name was specified" msgstr "jméno souboru nebylo změněno" -#: ../IkiWiki/Plugin/rename.pm:69 +#: ../IkiWiki/Plugin/rename.pm:68 #, perl-format msgid "illegal name" msgstr "neplatné jméno" -#: ../IkiWiki/Plugin/rename.pm:74 +#: ../IkiWiki/Plugin/rename.pm:73 #, perl-format msgid "%s already exists" msgstr "%s již existuje" -#: ../IkiWiki/Plugin/rename.pm:80 +#: ../IkiWiki/Plugin/rename.pm:79 #, perl-format msgid "%s already exists on disk" msgstr "%s již na disku existuje" -#: ../IkiWiki/Plugin/rename.pm:123 +#: ../IkiWiki/Plugin/rename.pm:122 #, perl-format msgid "rename %s" msgstr "přejmenování %s" -#: ../IkiWiki/Plugin/rename.pm:162 +#: ../IkiWiki/Plugin/rename.pm:161 msgid "Also rename SubPages and attachments" msgstr "Také přejmenovat podstránky a přílohy" -#: ../IkiWiki/Plugin/rename.pm:249 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "Najednou lze přejmenovat pouze jednu přílohu." -#: ../IkiWiki/Plugin/rename.pm:252 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "Vyberte přílohu, kterou chcete přejmenovat." -#: ../IkiWiki/Plugin/rename.pm:349 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "přejmenování %s na %s" -#: ../IkiWiki/Plugin/rename.pm:573 +#: ../IkiWiki/Plugin/rename.pm:572 #, perl-format msgid "update for rename of %s to %s" msgstr "aktualizace pro přejmenování %s na %s" @@ -960,18 +963,19 @@ msgstr "Stáhnout zdrojová data" msgid "parse fail at line %d: %s" msgstr "zpracovávání selhalo na řádku %d: %s" -#: ../IkiWiki/Plugin/template.pm:34 +#: ../IkiWiki/Plugin/tag.pm:83 +#, fuzzy, perl-format +msgid "creating tag page %s" +msgstr "vytvářím novou stránku %s" + +#: ../IkiWiki/Plugin/template.pm:33 msgid "missing id parameter" msgstr "chybí parametr id" #: ../IkiWiki/Plugin/template.pm:47 #, perl-format -msgid "template %s not found" -msgstr "šablona %s nebyla nalezena" - -#: ../IkiWiki/Plugin/template.pm:66 -msgid "failed to process:" -msgstr "nepodařilo se zpracovat:" +msgid "%s not found" +msgstr "%s nenalezen" #: ../IkiWiki/Plugin/teximg.pm:72 msgid "missing tex code" @@ -1034,12 +1038,12 @@ msgstr "nemohu určit identitu nedůvěryhodného uživatele %s" msgid "bad file name %s" msgstr "chybné jméno souboru %s" -#: ../IkiWiki/Render.pm:153 +#: ../IkiWiki/Render.pm:162 #, perl-format msgid "scanning %s" msgstr "prohledávám %s" -#: ../IkiWiki/Render.pm:274 +#: ../IkiWiki/Render.pm:284 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " @@ -1048,42 +1052,47 @@ msgstr "" "v cestě ke zdrojovému adresáři (%s) byl nalezen symbolický odkaz -- chcete-" "li to povolit, nastavte proměnnou allow_symlinks_before_srcdir" -#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 +#: ../IkiWiki/Render.pm:315 #, perl-format msgid "skipping bad filename %s" msgstr "přeskakuji chybné jméno souboru %s" -#: ../IkiWiki/Render.pm:308 +#: ../IkiWiki/Render.pm:330 #, perl-format msgid "%s has multiple possible source pages" msgstr "%s má několik možných zdrojových stránek" -#: ../IkiWiki/Render.pm:413 +#: ../IkiWiki/Render.pm:372 #, perl-format -msgid "removing old page %s" +msgid "querying %s for file creation and modification times.." +msgstr "" + +#: ../IkiWiki/Render.pm:434 +#, fuzzy, perl-format +msgid "removing obsolete %s" msgstr "odstraňuji starou stránku %s" -#: ../IkiWiki/Render.pm:486 +#: ../IkiWiki/Render.pm:507 #, perl-format msgid "building %s, which links to %s" msgstr "sestavuji %s, která odkazuje na %s" -#: ../IkiWiki/Render.pm:495 +#: ../IkiWiki/Render.pm:516 #, perl-format msgid "removing %s, no longer built by %s" msgstr "odstraňuji %s, již není sestavována pomocí %s" -#: ../IkiWiki/Render.pm:618 +#: ../IkiWiki/Render.pm:671 ../IkiWiki/Render.pm:777 #, perl-format msgid "building %s, which depends on %s" msgstr "sestavuji %s, která závisí na %s" -#: ../IkiWiki/Render.pm:631 +#: ../IkiWiki/Render.pm:684 #, perl-format msgid "building %s, to update its backlinks" msgstr "sestavuji %s, aby se aktualizovaly zpětné odkazy" -#: ../IkiWiki/Render.pm:707 +#: ../IkiWiki/Render.pm:819 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: nelze sestavit %s" @@ -1156,63 +1165,64 @@ msgstr "použití: ikiwiki [volby] zdroj cíl" msgid " ikiwiki --setup configfile" msgstr " ikiwiki --setup konfigurační.soubor" -#: ../ikiwiki.in:95 +#: ../ikiwiki.in:96 msgid "usage: --set var=value" msgstr "použití: --set proměnná=hodnota" -#: ../ikiwiki.in:102 +#: ../ikiwiki.in:103 #, fuzzy msgid "usage: --set-yaml var=value" msgstr "použití: --set proměnná=hodnota" -#: ../ikiwiki.in:156 +#: ../ikiwiki.in:157 msgid "generating wrappers.." msgstr "generuji obaly..." -#: ../ikiwiki.in:219 +#: ../ikiwiki.in:220 msgid "rebuilding wiki.." msgstr "znovusestavuji wiki..." -#: ../ikiwiki.in:222 +#: ../ikiwiki.in:223 msgid "refreshing wiki.." msgstr "obnovuji wiki..." -#: ../IkiWiki.pm:238 +#: ../IkiWiki.pm:233 msgid "Discussion" msgstr "Diskuse" -#: ../IkiWiki.pm:530 +#: ../IkiWiki.pm:524 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:576 +#: ../IkiWiki.pm:570 msgid "cannot use multiple rcs plugins" msgstr "nelze použít několik rcs modulů" -#: ../IkiWiki.pm:605 +#: ../IkiWiki.pm:599 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "nepodařilo se nahrát externí modul vyžadovaný modulem %s: %s" -#: ../IkiWiki.pm:1278 +#: ../IkiWiki.pm:1273 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "Byla rozpoznána smyčka na %s v hloubce %i" -#: ../IkiWiki.pm:1901 +#: ../IkiWiki.pm:1932 msgid "yes" msgstr "ano" -#: ../IkiWiki.pm:2044 -msgid "Sort::Naturally needed for title_natural sort" -msgstr "Pro řazení pomocí title_natural je nutný modul Sort::Naturally" +#: ../IkiWiki.pm:2009 +#, fuzzy, perl-format +msgid "invalid sort type %s" +msgstr "neznámý typ řazení %s" -#: ../IkiWiki.pm:2055 +#: ../IkiWiki.pm:2030 #, perl-format msgid "unknown sort type %s" msgstr "neznámý typ řazení %s" -#: ../IkiWiki.pm:2074 +#: ../IkiWiki.pm:2166 #, perl-format msgid "cannot match pages: %s" msgstr "nelze vybrat stránky: %s" @@ -1237,6 +1247,18 @@ msgstr "Který uživatel (wiki účet nebo openid) bude správce?" msgid "What is the domain name of the web server?" msgstr "Jaké je doménové jméno webového serveru?" +#~ msgid "failed to process" +#~ msgstr "nepodařilo se zpracovat" + +#~ msgid "nonexistant template %s" +#~ msgstr "neexistující šablona %s" + +#~ msgid "getctime not implemented" +#~ msgstr "getctime není implementováno" + +#~ msgid "Sort::Naturally needed for title_natural sort" +#~ msgstr "Pro řazení pomocí title_natural je nutný modul Sort::Naturally" + #~ msgid "failed to read %s" #~ msgstr "nepodařilo se přečíst %s" @@ -1284,9 +1306,6 @@ msgstr "Jaké je doménové jméno webového serveru?" #~ "REV není nastavena, není spuštěna ze svn post-commit, nemohu zaslat " #~ "oznámení" -#~ msgid "%s not found" -#~ msgstr "%s nenalezen" - #~ msgid "What's this?" #~ msgstr "Co to je?" diff --git a/po/da.po b/po/da.po index be7a95e6a..f830d667d 100644 --- a/po/da.po +++ b/po/da.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.14159\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-03 14:18-0400\n" +"POT-Creation-Date: 2010-04-24 16:15-0400\n" "PO-Revision-Date: 2009-07-23 01:07+0200\n" "Last-Translator: Jonas Smedegaard <dr@jones.dk>\n" "Language-Team: None\n" @@ -59,7 +59,7 @@ msgstr "Indstillinger gemt" msgid "You are banned." msgstr "Du er banlyst." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1291 msgid "Error" msgstr "Fejl" @@ -140,7 +140,7 @@ msgstr "opretter ny side %s" msgid "deleting bucket.." msgstr "sletter bundt.." -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:231 msgid "done" msgstr "færdig" @@ -181,7 +181,7 @@ msgstr "dårligt vedhæftningsfilnavn" msgid "attachment upload" msgstr "vedhæftningsoplægning" -#: ../IkiWiki/Plugin/autoindex.pm:105 +#: ../IkiWiki/Plugin/autoindex.pm:117 msgid "automatic index generation" msgstr "automatisk indeks-dannelse" @@ -215,55 +215,55 @@ msgstr "kommentar skal have indhold" msgid "Anonymous" msgstr "Anonym" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 +#: ../IkiWiki/Plugin/comments.pm:342 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "dårligt sidenavn" -#: ../IkiWiki/Plugin/comments.pm:345 +#: ../IkiWiki/Plugin/comments.pm:347 #, perl-format msgid "commenting on %s" msgstr "kommenterer på %s" -#: ../IkiWiki/Plugin/comments.pm:363 +#: ../IkiWiki/Plugin/comments.pm:365 #, perl-format msgid "page '%s' doesn't exist, so you can't comment" msgstr "siden '%s' eksisterer ikke, så du kan ikke kommentere" -#: ../IkiWiki/Plugin/comments.pm:370 +#: ../IkiWiki/Plugin/comments.pm:372 #, perl-format msgid "comments on page '%s' are closed" msgstr "kommentarer på side '%s' er lukket" -#: ../IkiWiki/Plugin/comments.pm:467 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "comment stored for moderation" msgstr "kommentar gemt for moderering" -#: ../IkiWiki/Plugin/comments.pm:469 +#: ../IkiWiki/Plugin/comments.pm:471 msgid "Your comment will be posted after moderator review" msgstr "Din kommentar vil blive tilføjet efter moderatorgenemsyn" -#: ../IkiWiki/Plugin/comments.pm:482 +#: ../IkiWiki/Plugin/comments.pm:484 msgid "Added a comment" msgstr "Tilføjede en kommentar" -#: ../IkiWiki/Plugin/comments.pm:486 +#: ../IkiWiki/Plugin/comments.pm:488 #, perl-format msgid "Added a comment: %s" msgstr "Tilføjede en kommentar: %s" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270 +#: ../IkiWiki/Plugin/comments.pm:530 ../IkiWiki/Plugin/websetup.pm:270 msgid "you are not logged in as an admin" msgstr "du er ikke logget på som en administrator" -#: ../IkiWiki/Plugin/comments.pm:579 +#: ../IkiWiki/Plugin/comments.pm:581 msgid "Comment moderation" msgstr "Kommentarmoderering" -#: ../IkiWiki/Plugin/comments.pm:618 +#: ../IkiWiki/Plugin/comments.pm:620 msgid "comment moderation" msgstr "kommentarkoderering" -#: ../IkiWiki/Plugin/comments.pm:761 +#: ../IkiWiki/Plugin/comments.pm:759 #, fuzzy, perl-format msgid "%i comment" msgid_plural "%i comments" @@ -273,7 +273,7 @@ msgstr[1] "Kommentarer" #. translators: Here "Comment" is a verb; #. translators: the user clicks on it to #. translators: post a comment. -#: ../IkiWiki/Plugin/comments.pm:771 +#: ../IkiWiki/Plugin/comments.pm:769 #, fuzzy msgid "Comment" msgstr "Kommentarer" @@ -304,14 +304,14 @@ msgstr "fjerner gammelt smugkig %s" msgid "%s is not an editable page" msgstr "%s er ikke en redigérbar side" -#: ../IkiWiki/Plugin/editpage.pm:296 +#: ../IkiWiki/Plugin/editpage.pm:295 #, perl-format msgid "creating %s" msgstr "opretter %s" -#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 -#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 -#: ../IkiWiki/Plugin/editpage.pm:426 +#: ../IkiWiki/Plugin/editpage.pm:313 ../IkiWiki/Plugin/editpage.pm:332 +#: ../IkiWiki/Plugin/editpage.pm:342 ../IkiWiki/Plugin/editpage.pm:386 +#: ../IkiWiki/Plugin/editpage.pm:425 #, perl-format msgid "editing %s" msgstr "redigerer %s" @@ -329,9 +329,11 @@ msgstr "sammenligning ikke angivet" msgid "edittemplate %s registered for %s" msgstr "redigeringsskabelon %s registreret for %s" -#: ../IkiWiki/Plugin/edittemplate.pm:138 -msgid "failed to process" -msgstr "dannelsen mislykkedes" +#: ../IkiWiki/Plugin/edittemplate.pm:125 ../IkiWiki/Plugin/inline.pm:339 +#: ../IkiWiki/Plugin/template.pm:44 +#, fuzzy +msgid "failed to process template:" +msgstr "dannelsen mislykkedes:" #: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" @@ -360,18 +362,18 @@ msgstr "kan ikke få sider til at passe sammen: %s" msgid "%s is an attachment, not a page." msgstr "%s er ikke en redigérbar side" -#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 +#: ../IkiWiki/Plugin/git.pm:687 ../IkiWiki/Plugin/git.pm:705 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "Du har ikke lov til at ændre %s" -#: ../IkiWiki/Plugin/git.pm:698 +#: ../IkiWiki/Plugin/git.pm:727 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "du kan ikke påvirke en fil med modus %s" -#: ../IkiWiki/Plugin/git.pm:702 +#: ../IkiWiki/Plugin/git.pm:731 msgid "you are not allowed to change file modes" msgstr "du har ikke lov til at ændre modus for filer" @@ -456,12 +458,12 @@ msgstr "" msgid "Add a new post titled:" msgstr "Tilføj nyt indlæg med følgende titel:" -#: ../IkiWiki/Plugin/inline.pm:333 +#: ../IkiWiki/Plugin/inline.pm:342 #, perl-format -msgid "nonexistant template %s" -msgstr "ikke-eksisterende skabelon: %s" +msgid "template %s not found" +msgstr "skabelon %s ikke fundet" -#: ../IkiWiki/Plugin/inline.pm:625 +#: ../IkiWiki/Plugin/inline.pm:635 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client ikke fundet, pinger ikke" @@ -491,18 +493,23 @@ msgstr "" "Indlæsning af perl-modulet Markdown.pm (%s) eller /usr/bin/markdown (%s) " "mislykkedes" -#: ../IkiWiki/Plugin/meta.pm:162 +#: ../IkiWiki/Plugin/meta.pm:174 msgid "stylesheet not found" msgstr "stilsnit (stylesheet) ikke fundet" -#: ../IkiWiki/Plugin/meta.pm:200 +#: ../IkiWiki/Plugin/meta.pm:212 msgid "redir page not found" msgstr "henvisningsside ikke fundet" -#: ../IkiWiki/Plugin/meta.pm:214 +#: ../IkiWiki/Plugin/meta.pm:226 msgid "redir cycle is not allowed" msgstr "ring af henvisninger er ikke tilladt" +#: ../IkiWiki/Plugin/meta.pm:383 +#, fuzzy +msgid "sort=meta requires a parameter" +msgstr "kræver 'from'- og 'to'-parametre" + #: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Spejle" @@ -520,10 +527,6 @@ msgstr "kommentarkoderering" msgid "more" msgstr "mere" -#: ../IkiWiki/Plugin/norcs.pm:66 -msgid "getctime not implemented" -msgstr "getctime ikke implementeret" - #: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "Log på med" @@ -540,40 +543,40 @@ msgstr "Alle sider har henvisninger fra andre sider." msgid "bad or missing template" msgstr "dårlig eller manglende skabelon" -#: ../IkiWiki/Plugin/passwordauth.pm:229 +#: ../IkiWiki/Plugin/passwordauth.pm:231 msgid "Your user page: " msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:236 +#: ../IkiWiki/Plugin/passwordauth.pm:238 msgid "Create your user page" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:264 +#: ../IkiWiki/Plugin/passwordauth.pm:268 msgid "Account creation successful. Now you can Login." msgstr "Konto korrekt oprettet. Nu kan du logge på." -#: ../IkiWiki/Plugin/passwordauth.pm:267 +#: ../IkiWiki/Plugin/passwordauth.pm:271 msgid "Error creating account." msgstr "Fejl ved kontooprettelse." -#: ../IkiWiki/Plugin/passwordauth.pm:274 +#: ../IkiWiki/Plugin/passwordauth.pm:278 msgid "No email address, so cannot email password reset instructions." msgstr "" "Ingen emailadresse, så kan ikke sende adgangskodenulstillingsinstruktioner." -#: ../IkiWiki/Plugin/passwordauth.pm:308 +#: ../IkiWiki/Plugin/passwordauth.pm:312 msgid "Failed to send mail" msgstr "Afsendelse af mail mislykkedes" -#: ../IkiWiki/Plugin/passwordauth.pm:310 +#: ../IkiWiki/Plugin/passwordauth.pm:314 msgid "You have been mailed password reset instructions." msgstr "Du har fået tilsendt adgangskodenulstillingsinstruktioner." -#: ../IkiWiki/Plugin/passwordauth.pm:345 +#: ../IkiWiki/Plugin/passwordauth.pm:349 msgid "incorrect password reset url" msgstr "Ukorrekt adgangskodenumstillings-URL" -#: ../IkiWiki/Plugin/passwordauth.pm:348 +#: ../IkiWiki/Plugin/passwordauth.pm:352 msgid "password reset denied" msgstr "adgangskodenulstilling afvist" @@ -603,12 +606,12 @@ msgstr "LWP ikke fundet, pinger ikke" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:139 +#: ../IkiWiki/Plugin/po.pm:140 #, perl-format msgid "%s is not a valid language code" msgstr "%s er ikke en gyldig sprogkode" -#: ../IkiWiki/Plugin/po.pm:151 +#: ../IkiWiki/Plugin/po.pm:152 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" @@ -616,7 +619,7 @@ msgstr "" "%s er ikke en gyldig værdi for po_link_to, falder tilbage til " "po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:156 +#: ../IkiWiki/Plugin/po.pm:157 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" @@ -624,21 +627,21 @@ msgstr "" "po_link_to=negotiated kræver at usedirs er aktiveret, falder tilbage til " "po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:386 +#: ../IkiWiki/Plugin/po.pm:388 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "gendanner alle sider for at korrigere meta titler" -#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:392 ../IkiWiki/Render.pm:761 #, perl-format msgid "building %s" msgstr "danner %s" -#: ../IkiWiki/Plugin/po.pm:428 +#: ../IkiWiki/Plugin/po.pm:430 msgid "updated PO files" msgstr "opdaterer PO-filer" -#: ../IkiWiki/Plugin/po.pm:452 +#: ../IkiWiki/Plugin/po.pm:454 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." @@ -646,7 +649,7 @@ msgstr "" "Kan ikke fjerne en oversættelse. Fjern i stedet hovedsiden, så fjernes dens " "oversættelser også." -#: ../IkiWiki/Plugin/po.pm:472 +#: ../IkiWiki/Plugin/po.pm:474 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." @@ -654,50 +657,50 @@ msgstr "" "Kan ikke omdøbe en oversættelse. Omdøb i stedet hovedsiden, så omdøbes dens " "oversættelser også." -#: ../IkiWiki/Plugin/po.pm:871 +#: ../IkiWiki/Plugin/po.pm:873 #, perl-format msgid "POT file (%s) does not exist" msgstr "POT-filen %s eksisterer ikke" -#: ../IkiWiki/Plugin/po.pm:885 +#: ../IkiWiki/Plugin/po.pm:887 #, fuzzy, perl-format msgid "failed to copy underlay PO file to %s" msgstr "kopiering af POT-filen til %s mislykkedes" -#: ../IkiWiki/Plugin/po.pm:894 +#: ../IkiWiki/Plugin/po.pm:896 #, perl-format msgid "failed to update %s" msgstr "opdatering af %s mislykkedes" -#: ../IkiWiki/Plugin/po.pm:900 +#: ../IkiWiki/Plugin/po.pm:902 #, perl-format msgid "failed to copy the POT file to %s" msgstr "kopiering af POT-filen til %s mislykkedes" -#: ../IkiWiki/Plugin/po.pm:936 +#: ../IkiWiki/Plugin/po.pm:938 msgid "N/A" msgstr "N/A" -#: ../IkiWiki/Plugin/po.pm:949 +#: ../IkiWiki/Plugin/po.pm:951 #, perl-format msgid "failed to translate %s" msgstr "oversættelse af %s mislykkedes" -#: ../IkiWiki/Plugin/po.pm:1033 +#: ../IkiWiki/Plugin/po.pm:1035 msgid "removed obsolete PO files" msgstr "forældede PO filer fjernet" -#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 -#: ../IkiWiki/Plugin/po.pm:1142 +#: ../IkiWiki/Plugin/po.pm:1091 ../IkiWiki/Plugin/po.pm:1105 +#: ../IkiWiki/Plugin/po.pm:1144 #, perl-format msgid "failed to write %s" msgstr "skrivning af %s mislykkedes" -#: ../IkiWiki/Plugin/po.pm:1101 +#: ../IkiWiki/Plugin/po.pm:1103 msgid "failed to translate" msgstr "oversættelse mislykkedes" -#: ../IkiWiki/Plugin/po.pm:1154 +#: ../IkiWiki/Plugin/po.pm:1156 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" "forkert gettext-data, gå tilbage til forrige side og fortsæt redigering" @@ -840,44 +843,44 @@ msgstr "%s er ikke i srcdir, så kan ikke blive omdøbt" msgid "no change to the file name was specified" msgstr "ingen ændring til filnavnet blev angivet" -#: ../IkiWiki/Plugin/rename.pm:69 +#: ../IkiWiki/Plugin/rename.pm:68 #, perl-format msgid "illegal name" msgstr "ugyldigt navn" -#: ../IkiWiki/Plugin/rename.pm:74 +#: ../IkiWiki/Plugin/rename.pm:73 #, perl-format msgid "%s already exists" msgstr "%s eksisterer allerede" -#: ../IkiWiki/Plugin/rename.pm:80 +#: ../IkiWiki/Plugin/rename.pm:79 #, perl-format msgid "%s already exists on disk" msgstr "%s eksisterer allerede på disken" -#: ../IkiWiki/Plugin/rename.pm:123 +#: ../IkiWiki/Plugin/rename.pm:122 #, perl-format msgid "rename %s" msgstr "omdøb %s" -#: ../IkiWiki/Plugin/rename.pm:162 +#: ../IkiWiki/Plugin/rename.pm:161 msgid "Also rename SubPages and attachments" msgstr "Omdøb også UnderSider og vedhæftninger" -#: ../IkiWiki/Plugin/rename.pm:249 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "Kun en vedhæftning kan blive omdøbt ad gangen." -#: ../IkiWiki/Plugin/rename.pm:252 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "Vælg vedhæftningen som skal omdøbes." -#: ../IkiWiki/Plugin/rename.pm:349 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "omdøb %s til %s" -#: ../IkiWiki/Plugin/rename.pm:573 +#: ../IkiWiki/Plugin/rename.pm:572 #, perl-format msgid "update for rename of %s to %s" msgstr "opdatering til omdøbning af %s til %s" @@ -975,18 +978,19 @@ msgstr "Direkte datanedlastning" msgid "parse fail at line %d: %s" msgstr "afkodningsfejl på linje %d: %s" -#: ../IkiWiki/Plugin/template.pm:34 +#: ../IkiWiki/Plugin/tag.pm:83 +#, fuzzy, perl-format +msgid "creating tag page %s" +msgstr "opretter ny side %s" + +#: ../IkiWiki/Plugin/template.pm:33 msgid "missing id parameter" msgstr "manglende id-parameter" #: ../IkiWiki/Plugin/template.pm:47 -#, perl-format -msgid "template %s not found" -msgstr "skabelon %s ikke fundet" - -#: ../IkiWiki/Plugin/template.pm:66 -msgid "failed to process:" -msgstr "dannelsen mislykkedes:" +#, fuzzy, perl-format +msgid "%s not found" +msgstr "fødning ikke fundet" #: ../IkiWiki/Plugin/teximg.pm:72 msgid "missing tex code" @@ -1049,12 +1053,12 @@ msgstr "kan ikke afgøre id for ikke-tillidsfulde skribent %s" msgid "bad file name %s" msgstr "dårligt filnavn %s" -#: ../IkiWiki/Render.pm:153 +#: ../IkiWiki/Render.pm:162 #, perl-format msgid "scanning %s" msgstr "gennemlæser %s" -#: ../IkiWiki/Render.pm:274 +#: ../IkiWiki/Render.pm:284 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " @@ -1063,42 +1067,47 @@ msgstr "" "symbolsk lænke fundet i srcdir-sti (%s) -- sæt allow_symlinks_before_srcdir " "for at tillade dette" -#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 +#: ../IkiWiki/Render.pm:315 #, perl-format msgid "skipping bad filename %s" msgstr "udelader forkert filnavn %s" -#: ../IkiWiki/Render.pm:308 +#: ../IkiWiki/Render.pm:330 #, perl-format msgid "%s has multiple possible source pages" msgstr "%s har flere mulige kildesider" -#: ../IkiWiki/Render.pm:413 +#: ../IkiWiki/Render.pm:372 #, perl-format -msgid "removing old page %s" +msgid "querying %s for file creation and modification times.." +msgstr "" + +#: ../IkiWiki/Render.pm:434 +#, fuzzy, perl-format +msgid "removing obsolete %s" msgstr "fjerner gammel side %s" -#: ../IkiWiki/Render.pm:486 +#: ../IkiWiki/Render.pm:507 #, perl-format msgid "building %s, which links to %s" msgstr "danner %s, som henviser til %s" -#: ../IkiWiki/Render.pm:495 +#: ../IkiWiki/Render.pm:516 #, perl-format msgid "removing %s, no longer built by %s" msgstr "fjerner %s, ikke længere dannet af %s" -#: ../IkiWiki/Render.pm:618 +#: ../IkiWiki/Render.pm:671 ../IkiWiki/Render.pm:777 #, perl-format msgid "building %s, which depends on %s" msgstr "danner %s, som afhænger af %s" -#: ../IkiWiki/Render.pm:631 +#: ../IkiWiki/Render.pm:684 #, perl-format msgid "building %s, to update its backlinks" msgstr "danner %s, for at opdatere dens krydshenvisninger (backlinks)" -#: ../IkiWiki/Render.pm:707 +#: ../IkiWiki/Render.pm:819 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: kan ikke danne %s" @@ -1171,64 +1180,65 @@ msgstr "brug: ikiwiki [valg] kilde mål" msgid " ikiwiki --setup configfile" msgstr " ikiwiki --setup opsætningsfil" -#: ../ikiwiki.in:95 +#: ../ikiwiki.in:96 msgid "usage: --set var=value" msgstr "brug: --set var=værdi" -#: ../ikiwiki.in:102 +#: ../ikiwiki.in:103 #, fuzzy msgid "usage: --set-yaml var=value" msgstr "brug: --set var=værdi" -#: ../ikiwiki.in:156 +#: ../ikiwiki.in:157 msgid "generating wrappers.." msgstr "bygger wrappers.." -#: ../ikiwiki.in:219 +#: ../ikiwiki.in:220 msgid "rebuilding wiki.." msgstr "genopbygger wiki..." -#: ../ikiwiki.in:222 +#: ../ikiwiki.in:223 msgid "refreshing wiki.." msgstr "genopfrisker wiki..." -#: ../IkiWiki.pm:238 +#: ../IkiWiki.pm:233 msgid "Discussion" msgstr "Diskussion" -#: ../IkiWiki.pm:530 +#: ../IkiWiki.pm:524 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:576 +#: ../IkiWiki.pm:570 msgid "cannot use multiple rcs plugins" msgstr "kan ikke bruge flere samtidige RCS-udvidelser" -#: ../IkiWiki.pm:605 +#: ../IkiWiki.pm:599 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" "indlæsning af ekstern udvidelse krævet af udvidelsen %s mislykkedes: %s" -#: ../IkiWiki.pm:1278 +#: ../IkiWiki.pm:1273 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "forudberegningssløkke fundet på %s ved dybde %i" -#: ../IkiWiki.pm:1901 +#: ../IkiWiki.pm:1932 msgid "yes" msgstr "ja" -#: ../IkiWiki.pm:2044 -msgid "Sort::Naturally needed for title_natural sort" -msgstr "Sort::Naturally krævet for title_natural sortering" +#: ../IkiWiki.pm:2009 +#, fuzzy, perl-format +msgid "invalid sort type %s" +msgstr "ukendt sorteringsform %s" -#: ../IkiWiki.pm:2055 +#: ../IkiWiki.pm:2030 #, perl-format msgid "unknown sort type %s" msgstr "ukendt sorteringsform %s" -#: ../IkiWiki.pm:2074 +#: ../IkiWiki.pm:2166 #, perl-format msgid "cannot match pages: %s" msgstr "kan ikke få sider til at passe sammen: %s" @@ -1253,6 +1263,18 @@ msgstr "Hvilken bruger (wiki konto eller openid) skal være administrator?" msgid "What is the domain name of the web server?" msgstr "Hvad er webserverens domænenavn?" +#~ msgid "failed to process" +#~ msgstr "dannelsen mislykkedes" + +#~ msgid "nonexistant template %s" +#~ msgstr "ikke-eksisterende skabelon: %s" + +#~ msgid "getctime not implemented" +#~ msgstr "getctime ikke implementeret" + +#~ msgid "Sort::Naturally needed for title_natural sort" +#~ msgstr "Sort::Naturally krævet for title_natural sortering" + #~ msgid "failed to read %s" #~ msgstr "læsning af %s mislykkedes" diff --git a/po/de.po b/po/de.po index e5a18d47b..2452c8d21 100644 --- a/po/de.po +++ b/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.14159\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-03 14:18-0400\n" +"POT-Creation-Date: 2010-04-24 16:15-0400\n" "PO-Revision-Date: 2010-03-14 16:09+0530\n" "Last-Translator: Sebastian Kuhnert <mail@sebastian-kuhnert.de>\n" "Language-Team: German <debian-l10n-german@lists.debian.org>\n" @@ -56,7 +56,7 @@ msgstr "Einstellungen gespeichert." msgid "You are banned." msgstr "Sie sind ausgeschlossen worden." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1291 msgid "Error" msgstr "Fehler" @@ -137,7 +137,7 @@ msgstr "erstelle neue Seite %s" msgid "deleting bucket.." msgstr "lösche Behälter (bucket)..." -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:231 msgid "done" msgstr "fertig" @@ -176,7 +176,7 @@ msgstr "fehlerhafter Dateiname für Anhang" msgid "attachment upload" msgstr "Anhang hochladen" -#: ../IkiWiki/Plugin/autoindex.pm:105 +#: ../IkiWiki/Plugin/autoindex.pm:117 msgid "automatic index generation" msgstr "automatische Index-Erstellung" @@ -210,56 +210,56 @@ msgstr "ein Kommentar sollte Inhalt haben" msgid "Anonymous" msgstr "Anonym" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 +#: ../IkiWiki/Plugin/comments.pm:342 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "fehlerhafter Seitenname" -#: ../IkiWiki/Plugin/comments.pm:345 +#: ../IkiWiki/Plugin/comments.pm:347 #, perl-format msgid "commenting on %s" msgstr "kommentiere %s" -#: ../IkiWiki/Plugin/comments.pm:363 +#: ../IkiWiki/Plugin/comments.pm:365 #, perl-format msgid "page '%s' doesn't exist, so you can't comment" msgstr "" "Seite %s existiert nicht, Sie können sie deshalb auch nicht kommentieren" -#: ../IkiWiki/Plugin/comments.pm:370 +#: ../IkiWiki/Plugin/comments.pm:372 #, perl-format msgid "comments on page '%s' are closed" msgstr "Kommentare zur Seite %s sind gesperrt" -#: ../IkiWiki/Plugin/comments.pm:467 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "comment stored for moderation" msgstr "Der Kommentar wurde zur Moderation gespeichert" -#: ../IkiWiki/Plugin/comments.pm:469 +#: ../IkiWiki/Plugin/comments.pm:471 msgid "Your comment will be posted after moderator review" msgstr "Ihr Kommentar wird nach Moderation verschickt" -#: ../IkiWiki/Plugin/comments.pm:482 +#: ../IkiWiki/Plugin/comments.pm:484 msgid "Added a comment" msgstr "Kommentar hinzugefügt" -#: ../IkiWiki/Plugin/comments.pm:486 +#: ../IkiWiki/Plugin/comments.pm:488 #, perl-format msgid "Added a comment: %s" msgstr "Kommentar hinzugefügt: %s" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270 +#: ../IkiWiki/Plugin/comments.pm:530 ../IkiWiki/Plugin/websetup.pm:270 msgid "you are not logged in as an admin" msgstr "Sie sind nicht als Administrator angemeldet" -#: ../IkiWiki/Plugin/comments.pm:579 +#: ../IkiWiki/Plugin/comments.pm:581 msgid "Comment moderation" msgstr "Kommentar-Moderation" -#: ../IkiWiki/Plugin/comments.pm:618 +#: ../IkiWiki/Plugin/comments.pm:620 msgid "comment moderation" msgstr "Kommentar-Moderation" -#: ../IkiWiki/Plugin/comments.pm:761 +#: ../IkiWiki/Plugin/comments.pm:759 #, perl-format msgid "%i comment" msgid_plural "%i comments" @@ -269,7 +269,7 @@ msgstr[1] "%i Kommentare" #. translators: Here "Comment" is a verb; #. translators: the user clicks on it to #. translators: post a comment. -#: ../IkiWiki/Plugin/comments.pm:771 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comment" msgstr "Kommentieren" @@ -299,14 +299,14 @@ msgstr "entferne alte Vorschau %s" msgid "%s is not an editable page" msgstr "Seite %s kann nicht bearbeitet werden" -#: ../IkiWiki/Plugin/editpage.pm:296 +#: ../IkiWiki/Plugin/editpage.pm:295 #, perl-format msgid "creating %s" msgstr "erstelle %s" -#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 -#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 -#: ../IkiWiki/Plugin/editpage.pm:426 +#: ../IkiWiki/Plugin/editpage.pm:313 ../IkiWiki/Plugin/editpage.pm:332 +#: ../IkiWiki/Plugin/editpage.pm:342 ../IkiWiki/Plugin/editpage.pm:386 +#: ../IkiWiki/Plugin/editpage.pm:425 #, perl-format msgid "editing %s" msgstr "bearbeite %s" @@ -324,9 +324,11 @@ msgstr "Übereinstimmung nicht angegeben" msgid "edittemplate %s registered for %s" msgstr "edittemplate %s für %s registriert" -#: ../IkiWiki/Plugin/edittemplate.pm:138 -msgid "failed to process" -msgstr "Ablauf fehlgeschlagen" +#: ../IkiWiki/Plugin/edittemplate.pm:125 ../IkiWiki/Plugin/inline.pm:339 +#: ../IkiWiki/Plugin/template.pm:44 +#, fuzzy +msgid "failed to process template:" +msgstr "Fehler beim Ablauf:" #: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" @@ -354,18 +356,18 @@ msgstr "Keine Seite" msgid "%s is an attachment, not a page." msgstr "Seite %s ist ein Anhang und keine Seite." -#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 +#: ../IkiWiki/Plugin/git.pm:687 ../IkiWiki/Plugin/git.pm:705 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "Sie dürfen %s nicht verändern" -#: ../IkiWiki/Plugin/git.pm:698 +#: ../IkiWiki/Plugin/git.pm:727 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "Sie können eine Datei mit den Zugriffsrechten %s nicht nutzen" -#: ../IkiWiki/Plugin/git.pm:702 +#: ../IkiWiki/Plugin/git.pm:731 msgid "you are not allowed to change file modes" msgstr "Sie dürfen die Zugriffsrechte der Datei nicht ändern" @@ -451,12 +453,12 @@ msgstr "die Parameter %s und %s können nicht zusammen benutzt werden" msgid "Add a new post titled:" msgstr "Füge einen neuen Beitrag hinzu. Titel:" -#: ../IkiWiki/Plugin/inline.pm:333 +#: ../IkiWiki/Plugin/inline.pm:342 #, perl-format -msgid "nonexistant template %s" -msgstr "nicht-vorhandene Vorlage %s" +msgid "template %s not found" +msgstr "Vorlage %s nicht gefunden" -#: ../IkiWiki/Plugin/inline.pm:625 +#: ../IkiWiki/Plugin/inline.pm:635 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client nicht gefunden, führe Ping nicht aus" @@ -487,18 +489,23 @@ msgstr "" "laden des Perlmoduls Markdown.pm (%s) oder /usr/bin/markdown (%s) " "fehlgeschlagen" -#: ../IkiWiki/Plugin/meta.pm:162 +#: ../IkiWiki/Plugin/meta.pm:174 msgid "stylesheet not found" msgstr "Stylesheet nicht gefunden" -#: ../IkiWiki/Plugin/meta.pm:200 +#: ../IkiWiki/Plugin/meta.pm:212 msgid "redir page not found" msgstr "Umleitungsseite nicht gefunden" -#: ../IkiWiki/Plugin/meta.pm:214 +#: ../IkiWiki/Plugin/meta.pm:226 msgid "redir cycle is not allowed" msgstr "Zyklische Umleitungen sind nicht erlaubt" +#: ../IkiWiki/Plugin/meta.pm:383 +#, fuzzy +msgid "sort=meta requires a parameter" +msgstr "erfordert die Parameter 'from' und 'to'" + #: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Spiegel" @@ -515,10 +522,6 @@ msgstr "Kommentar muss moderiert werden" msgid "more" msgstr "mehr" -#: ../IkiWiki/Plugin/norcs.pm:66 -msgid "getctime not implemented" -msgstr "getctime ist nicht implementiert" - #: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "Anmelden mit" @@ -535,41 +538,41 @@ msgstr "Alle Seiten haben mindestens einen Verweis von einer anderen Seite." msgid "bad or missing template" msgstr "fehlerhafte oder fehlende Vorlage" -#: ../IkiWiki/Plugin/passwordauth.pm:229 +#: ../IkiWiki/Plugin/passwordauth.pm:231 msgid "Your user page: " msgstr "Ihre Benutzerseite: " -#: ../IkiWiki/Plugin/passwordauth.pm:236 +#: ../IkiWiki/Plugin/passwordauth.pm:238 msgid "Create your user page" msgstr "Benutzerseite erstellen" -#: ../IkiWiki/Plugin/passwordauth.pm:264 +#: ../IkiWiki/Plugin/passwordauth.pm:268 msgid "Account creation successful. Now you can Login." msgstr "Kontoerstellung erfolgreich. Sie können sich jetzt anmelden." -#: ../IkiWiki/Plugin/passwordauth.pm:267 +#: ../IkiWiki/Plugin/passwordauth.pm:271 msgid "Error creating account." msgstr "Konto konnte nicht erstellt werden." -#: ../IkiWiki/Plugin/passwordauth.pm:274 +#: ../IkiWiki/Plugin/passwordauth.pm:278 msgid "No email address, so cannot email password reset instructions." msgstr "" "es gibt keine E-Mail Adresse, deshalb kann keine Anweisung zum Zurücksetzen " "des Passwortes zugeschickt werden." -#: ../IkiWiki/Plugin/passwordauth.pm:308 +#: ../IkiWiki/Plugin/passwordauth.pm:312 msgid "Failed to send mail" msgstr "Es konnte keine E-Mail versandt werden" -#: ../IkiWiki/Plugin/passwordauth.pm:310 +#: ../IkiWiki/Plugin/passwordauth.pm:314 msgid "You have been mailed password reset instructions." msgstr "Ihnen wurden Anweisungen zum Zurücksetzen des Passworts zugesandt." -#: ../IkiWiki/Plugin/passwordauth.pm:345 +#: ../IkiWiki/Plugin/passwordauth.pm:349 msgid "incorrect password reset url" msgstr "fehlerhafte URL zum Zurücksetzen des Passworts" -#: ../IkiWiki/Plugin/passwordauth.pm:348 +#: ../IkiWiki/Plugin/passwordauth.pm:352 msgid "password reset denied" msgstr "zurücksetzen des Passworts abgelehnt" @@ -599,12 +602,12 @@ msgstr "LWP nicht gefunden, führe Ping nicht aus" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "Warnung: Altes po4a erkannt! Empfehle Aktualisierung auf 0.35" -#: ../IkiWiki/Plugin/po.pm:139 +#: ../IkiWiki/Plugin/po.pm:140 #, perl-format msgid "%s is not a valid language code" msgstr "%s ist keine gültige Sprachkodierung" -#: ../IkiWiki/Plugin/po.pm:151 +#: ../IkiWiki/Plugin/po.pm:152 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" @@ -612,7 +615,7 @@ msgstr "" "%s ist kein gültiger Wert für po_link_to, greife zurück auf " "po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:156 +#: ../IkiWiki/Plugin/po.pm:157 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" @@ -620,21 +623,21 @@ msgstr "" "po_link_to=negotiated benötigt usedirs eingeschaltet, greife zurück auf " "po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:386 +#: ../IkiWiki/Plugin/po.pm:388 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "um die meta-titeln zu reparieren werden alle Seiten neu erstellt" -#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:392 ../IkiWiki/Render.pm:761 #, perl-format msgid "building %s" msgstr "erzeuge %s" -#: ../IkiWiki/Plugin/po.pm:428 +#: ../IkiWiki/Plugin/po.pm:430 msgid "updated PO files" msgstr "PO-Dateien aktualisiert" -#: ../IkiWiki/Plugin/po.pm:452 +#: ../IkiWiki/Plugin/po.pm:454 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." @@ -642,7 +645,7 @@ msgstr "" "Übersetzung kann nicht entfernt werden. Wenn die Master Seite entfernt wird, " "werden auch ihre Übersetzungen entfernt." -#: ../IkiWiki/Plugin/po.pm:472 +#: ../IkiWiki/Plugin/po.pm:474 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." @@ -650,50 +653,50 @@ msgstr "" "Eine Übersetzung kann nicht umbenannt werden. Wenn die Master Seite " "unbenannt wird, werden auch ihre Übersetzungen unbenannt." -#: ../IkiWiki/Plugin/po.pm:871 +#: ../IkiWiki/Plugin/po.pm:873 #, perl-format msgid "POT file (%s) does not exist" msgstr "POT-Datei (%s) existiert nicht" -#: ../IkiWiki/Plugin/po.pm:885 +#: ../IkiWiki/Plugin/po.pm:887 #, perl-format msgid "failed to copy underlay PO file to %s" msgstr "konnte die PO-Datei nicht aus dem Underlay nach %s kopieren" -#: ../IkiWiki/Plugin/po.pm:894 +#: ../IkiWiki/Plugin/po.pm:896 #, perl-format msgid "failed to update %s" msgstr "aktualisieren von %s fehlgeschlagen" -#: ../IkiWiki/Plugin/po.pm:900 +#: ../IkiWiki/Plugin/po.pm:902 #, perl-format msgid "failed to copy the POT file to %s" msgstr "kopieren der POT-Datei nach %s fehlgeschlagen" -#: ../IkiWiki/Plugin/po.pm:936 +#: ../IkiWiki/Plugin/po.pm:938 msgid "N/A" msgstr "N/A" -#: ../IkiWiki/Plugin/po.pm:949 +#: ../IkiWiki/Plugin/po.pm:951 #, perl-format msgid "failed to translate %s" msgstr "übersetzen von %s fehlgeschlagen" -#: ../IkiWiki/Plugin/po.pm:1033 +#: ../IkiWiki/Plugin/po.pm:1035 msgid "removed obsolete PO files" msgstr "überflüssige PO-Dateien wurden entfernt" -#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 -#: ../IkiWiki/Plugin/po.pm:1142 +#: ../IkiWiki/Plugin/po.pm:1091 ../IkiWiki/Plugin/po.pm:1105 +#: ../IkiWiki/Plugin/po.pm:1144 #, perl-format msgid "failed to write %s" msgstr "schreiben von %s fehlgeschlagen" -#: ../IkiWiki/Plugin/po.pm:1101 +#: ../IkiWiki/Plugin/po.pm:1103 msgid "failed to translate" msgstr "übersetzen fehlgeschlagen" -#: ../IkiWiki/Plugin/po.pm:1154 +#: ../IkiWiki/Plugin/po.pm:1156 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" "ungültige gettext Datei, gehe zurück zur vorherigen Seite um weiter zu " @@ -839,44 +842,44 @@ msgstr "%s ist nicht im srcdir und kann deshalb nicht umbenannt werden" msgid "no change to the file name was specified" msgstr "es wurde keine Änderung des Dateinamens angegeben" -#: ../IkiWiki/Plugin/rename.pm:69 +#: ../IkiWiki/Plugin/rename.pm:68 #, perl-format msgid "illegal name" msgstr "unzulässiger Name" -#: ../IkiWiki/Plugin/rename.pm:74 +#: ../IkiWiki/Plugin/rename.pm:73 #, perl-format msgid "%s already exists" msgstr "%s existiert bereits" -#: ../IkiWiki/Plugin/rename.pm:80 +#: ../IkiWiki/Plugin/rename.pm:79 #, perl-format msgid "%s already exists on disk" msgstr "%s existiert bereits auf der Festplatte" -#: ../IkiWiki/Plugin/rename.pm:123 +#: ../IkiWiki/Plugin/rename.pm:122 #, perl-format msgid "rename %s" msgstr "benenne %s um" -#: ../IkiWiki/Plugin/rename.pm:162 +#: ../IkiWiki/Plugin/rename.pm:161 msgid "Also rename SubPages and attachments" msgstr "Auch Unterseiten (SubPages) und Anhänge umbenennen" -#: ../IkiWiki/Plugin/rename.pm:249 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "Es kann immer nur ein Anhang gleichzeitig umbenannt werden." -#: ../IkiWiki/Plugin/rename.pm:252 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "Bitte wählen Sie den Anhang aus, der umbenannt werden soll." -#: ../IkiWiki/Plugin/rename.pm:349 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "benenne %s in %s um" -#: ../IkiWiki/Plugin/rename.pm:573 +#: ../IkiWiki/Plugin/rename.pm:572 #, perl-format msgid "update for rename of %s to %s" msgstr "aktualisiert zum Umbenennen von %s nach %s" @@ -974,18 +977,19 @@ msgstr "Direkter Daten-Download" msgid "parse fail at line %d: %s" msgstr "Auswertungsfehler in Zeile %d: %s" -#: ../IkiWiki/Plugin/template.pm:34 +#: ../IkiWiki/Plugin/tag.pm:83 +#, fuzzy, perl-format +msgid "creating tag page %s" +msgstr "erstelle neue Seite %s" + +#: ../IkiWiki/Plugin/template.pm:33 msgid "missing id parameter" msgstr "fehlender Parameter id" #: ../IkiWiki/Plugin/template.pm:47 -#, perl-format -msgid "template %s not found" -msgstr "Vorlage %s nicht gefunden" - -#: ../IkiWiki/Plugin/template.pm:66 -msgid "failed to process:" -msgstr "Fehler beim Ablauf:" +#, fuzzy, perl-format +msgid "%s not found" +msgstr "Vorlage (feed) nicht gefunden" #: ../IkiWiki/Plugin/teximg.pm:72 msgid "missing tex code" @@ -1051,12 +1055,12 @@ msgstr "" msgid "bad file name %s" msgstr "fehlerhafter Dateiname %s" -#: ../IkiWiki/Render.pm:153 +#: ../IkiWiki/Render.pm:162 #, perl-format msgid "scanning %s" msgstr "durchsuche %s" -#: ../IkiWiki/Render.pm:274 +#: ../IkiWiki/Render.pm:284 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " @@ -1065,42 +1069,47 @@ msgstr "" "symbolischer Verweis im srcdir Pfad (%s) gefunden -- setzen Sie " "allow_symlinks_before_srcdir, um dies zu erlauben" -#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 +#: ../IkiWiki/Render.pm:315 #, perl-format msgid "skipping bad filename %s" msgstr "überspringe fehlerhaften Dateinamen %s" -#: ../IkiWiki/Render.pm:308 +#: ../IkiWiki/Render.pm:330 #, perl-format msgid "%s has multiple possible source pages" msgstr "%s hat mehrere mögliche Quellseiten" -#: ../IkiWiki/Render.pm:413 +#: ../IkiWiki/Render.pm:372 #, perl-format -msgid "removing old page %s" +msgid "querying %s for file creation and modification times.." +msgstr "" + +#: ../IkiWiki/Render.pm:434 +#, fuzzy, perl-format +msgid "removing obsolete %s" msgstr "entferne alte Seite %s" -#: ../IkiWiki/Render.pm:486 +#: ../IkiWiki/Render.pm:507 #, perl-format msgid "building %s, which links to %s" msgstr "erzeuge %s, die auf %s verweist" -#: ../IkiWiki/Render.pm:495 +#: ../IkiWiki/Render.pm:516 #, perl-format msgid "removing %s, no longer built by %s" msgstr "entferne %s, wird nicht länger von %s erzeugt" -#: ../IkiWiki/Render.pm:618 +#: ../IkiWiki/Render.pm:671 ../IkiWiki/Render.pm:777 #, perl-format msgid "building %s, which depends on %s" msgstr "erzeuge %s, die von %s abhängt" -#: ../IkiWiki/Render.pm:631 +#: ../IkiWiki/Render.pm:684 #, perl-format msgid "building %s, to update its backlinks" msgstr "erzeuge %s, um dessen Rückverweise zu aktualisieren" -#: ../IkiWiki/Render.pm:707 +#: ../IkiWiki/Render.pm:819 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: kann %s nicht erzeugen" @@ -1176,66 +1185,67 @@ msgstr "Aufruf: ikiwiki [Optionen] Quelle Ziel" msgid " ikiwiki --setup configfile" msgstr " ikiwiki --setup Konfigurationsdatei" -#: ../ikiwiki.in:95 +#: ../ikiwiki.in:96 msgid "usage: --set var=value" msgstr "Aufruf: --set Variable=Wert" -#: ../ikiwiki.in:102 +#: ../ikiwiki.in:103 #, fuzzy msgid "usage: --set-yaml var=value" msgstr "Aufruf: --set Variable=Wert" -#: ../ikiwiki.in:156 +#: ../ikiwiki.in:157 msgid "generating wrappers.." msgstr "erzeuge Wrapper.." -#: ../ikiwiki.in:219 +#: ../ikiwiki.in:220 msgid "rebuilding wiki.." msgstr "erzeuge Wiki neu.." -#: ../ikiwiki.in:222 +#: ../ikiwiki.in:223 msgid "refreshing wiki.." msgstr "aktualisiere Wiki.." -#: ../IkiWiki.pm:238 +#: ../IkiWiki.pm:233 msgid "Discussion" msgstr "Diskussion" -#: ../IkiWiki.pm:530 +#: ../IkiWiki.pm:524 msgid "Must specify url to wiki with --url when using --cgi" msgstr "" "Es muss eine URL zum Wiki mit --url angegeben werden, wenn --cgi verwandt " "wird" -#: ../IkiWiki.pm:576 +#: ../IkiWiki.pm:570 msgid "cannot use multiple rcs plugins" msgstr "" "Es können nicht mehrere Versionskontrollsystem-Erweiterungen verwandt werden" -#: ../IkiWiki.pm:605 +#: ../IkiWiki.pm:599 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "Laden der für %s benötigten externen Erweiterung fehlgeschlagen: %s" -#: ../IkiWiki.pm:1278 +#: ../IkiWiki.pm:1273 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "Präprozessorschleife auf %s in Tiefe %i erkannt" -#: ../IkiWiki.pm:1901 +#: ../IkiWiki.pm:1932 msgid "yes" msgstr "ja" -#: ../IkiWiki.pm:2044 -msgid "Sort::Naturally needed for title_natural sort" -msgstr "Sort::Naturally wird benötigt für title_natural sort" +#: ../IkiWiki.pm:2009 +#, fuzzy, perl-format +msgid "invalid sort type %s" +msgstr "Unbekannter Sortierungstyp %s" -#: ../IkiWiki.pm:2055 +#: ../IkiWiki.pm:2030 #, perl-format msgid "unknown sort type %s" msgstr "Unbekannter Sortierungstyp %s" -#: ../IkiWiki.pm:2074 +#: ../IkiWiki.pm:2166 #, perl-format msgid "cannot match pages: %s" msgstr "Kann die Seiten nicht zuordnen: %s" @@ -1260,6 +1270,18 @@ msgstr "Wer (Wiki-Konto oder OpenID) soll Administrator sein?" msgid "What is the domain name of the web server?" msgstr "Wie lautet der Domainname des Webservers?" +#~ msgid "failed to process" +#~ msgstr "Ablauf fehlgeschlagen" + +#~ msgid "nonexistant template %s" +#~ msgstr "nicht-vorhandene Vorlage %s" + +#~ msgid "getctime not implemented" +#~ msgstr "getctime ist nicht implementiert" + +#~ msgid "Sort::Naturally needed for title_natural sort" +#~ msgstr "Sort::Naturally wird benötigt für title_natural sort" + #~ msgid "failed to read %s" #~ msgstr "lesen von %s fehlgeschlagen" diff --git a/po/es.po b/po/es.po index 413572866..a6f3a2c6b 100644 --- a/po/es.po +++ b/po/es.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: es\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-03 14:18-0400\n" +"POT-Creation-Date: 2010-04-24 16:15-0400\n" "PO-Revision-Date: 2009-06-14 12:32+0200\n" "Last-Translator: Victor Moral <victor@taquiones.net>\n" "Language-Team: <en@li.org>\n" @@ -60,7 +60,7 @@ msgstr "Las preferencias se han guardado." msgid "You are banned." msgstr "Ha sido expulsado." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1291 msgid "Error" msgstr "Error" @@ -142,7 +142,7 @@ msgstr "creando nueva página %s" msgid "deleting bucket.." msgstr "borrando el directorio.." -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:231 msgid "done" msgstr "completado" @@ -183,7 +183,7 @@ msgstr "nombre de archivo adjunto erróneo" msgid "attachment upload" msgstr "enviado el adjunto" -#: ../IkiWiki/Plugin/autoindex.pm:105 +#: ../IkiWiki/Plugin/autoindex.pm:117 msgid "automatic index generation" msgstr "creación de índice automática" @@ -217,55 +217,55 @@ msgstr "Un comentario debe tener algún contenido" msgid "Anonymous" msgstr "Anónimo" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 +#: ../IkiWiki/Plugin/comments.pm:342 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "nombre de página erróneo" -#: ../IkiWiki/Plugin/comments.pm:345 +#: ../IkiWiki/Plugin/comments.pm:347 #, perl-format msgid "commenting on %s" msgstr "creando comentarios en la página %s" -#: ../IkiWiki/Plugin/comments.pm:363 +#: ../IkiWiki/Plugin/comments.pm:365 #, perl-format msgid "page '%s' doesn't exist, so you can't comment" msgstr "la página '%s' no existe, así que no se puede comentar sobre ella" -#: ../IkiWiki/Plugin/comments.pm:370 +#: ../IkiWiki/Plugin/comments.pm:372 #, perl-format msgid "comments on page '%s' are closed" msgstr "los comentarios para la página '%s' están cerrados" -#: ../IkiWiki/Plugin/comments.pm:467 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "comment stored for moderation" msgstr "comentario guardado a la espera de aprobación" -#: ../IkiWiki/Plugin/comments.pm:469 +#: ../IkiWiki/Plugin/comments.pm:471 msgid "Your comment will be posted after moderator review" msgstr "Su comentario será publicado después de que el moderador lo revise" -#: ../IkiWiki/Plugin/comments.pm:482 +#: ../IkiWiki/Plugin/comments.pm:484 msgid "Added a comment" msgstr "Añadir un comentario" -#: ../IkiWiki/Plugin/comments.pm:486 +#: ../IkiWiki/Plugin/comments.pm:488 #, perl-format msgid "Added a comment: %s" msgstr "Comentario añadido: %s" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270 +#: ../IkiWiki/Plugin/comments.pm:530 ../IkiWiki/Plugin/websetup.pm:270 msgid "you are not logged in as an admin" msgstr "No está registrado como un administrador" -#: ../IkiWiki/Plugin/comments.pm:579 +#: ../IkiWiki/Plugin/comments.pm:581 msgid "Comment moderation" msgstr "Aprobación de comentarios" -#: ../IkiWiki/Plugin/comments.pm:618 +#: ../IkiWiki/Plugin/comments.pm:620 msgid "comment moderation" msgstr "aprobación de comentarios" -#: ../IkiWiki/Plugin/comments.pm:761 +#: ../IkiWiki/Plugin/comments.pm:759 #, fuzzy, perl-format msgid "%i comment" msgid_plural "%i comments" @@ -275,7 +275,7 @@ msgstr[1] "Comentarios" #. translators: Here "Comment" is a verb; #. translators: the user clicks on it to #. translators: post a comment. -#: ../IkiWiki/Plugin/comments.pm:771 +#: ../IkiWiki/Plugin/comments.pm:769 #, fuzzy msgid "Comment" msgstr "Comentarios" @@ -306,14 +306,14 @@ msgstr "eliminando la antigua previsualización %s" msgid "%s is not an editable page" msgstr "la página %s no es modificable" -#: ../IkiWiki/Plugin/editpage.pm:296 +#: ../IkiWiki/Plugin/editpage.pm:295 #, perl-format msgid "creating %s" msgstr "creando página %s" -#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 -#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 -#: ../IkiWiki/Plugin/editpage.pm:426 +#: ../IkiWiki/Plugin/editpage.pm:313 ../IkiWiki/Plugin/editpage.pm:332 +#: ../IkiWiki/Plugin/editpage.pm:342 ../IkiWiki/Plugin/editpage.pm:386 +#: ../IkiWiki/Plugin/editpage.pm:425 #, perl-format msgid "editing %s" msgstr "modificando página %s" @@ -331,9 +331,11 @@ msgstr "falta indicar la coincidencia de páginas (match)" msgid "edittemplate %s registered for %s" msgstr "plantilla de edición %s registrada para %s" -#: ../IkiWiki/Plugin/edittemplate.pm:138 -msgid "failed to process" -msgstr "fallo en el proceso" +#: ../IkiWiki/Plugin/edittemplate.pm:125 ../IkiWiki/Plugin/inline.pm:339 +#: ../IkiWiki/Plugin/template.pm:44 +#, fuzzy +msgid "failed to process template:" +msgstr "se ha producido un error fatal mientras procesaba la plantilla:" #: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" @@ -362,18 +364,18 @@ msgstr "no encuentro páginas coincidentes: %s" msgid "%s is an attachment, not a page." msgstr "la página %s no es modificable" -#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 +#: ../IkiWiki/Plugin/git.pm:687 ../IkiWiki/Plugin/git.pm:705 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "No puede cambiar %s" -#: ../IkiWiki/Plugin/git.pm:698 +#: ../IkiWiki/Plugin/git.pm:727 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "no puede actuar sobre un archivo con permisos %s" -#: ../IkiWiki/Plugin/git.pm:702 +#: ../IkiWiki/Plugin/git.pm:731 msgid "you are not allowed to change file modes" msgstr "No puede cambiar los permisos de acceso de un archivo" @@ -460,12 +462,12 @@ msgstr "" msgid "Add a new post titled:" msgstr "Añadir una entrada nueva titulada:" -#: ../IkiWiki/Plugin/inline.pm:333 +#: ../IkiWiki/Plugin/inline.pm:342 #, perl-format -msgid "nonexistant template %s" -msgstr "la plantilla %s no existe " +msgid "template %s not found" +msgstr "no he encontrado la plantilla %s" -#: ../IkiWiki/Plugin/inline.pm:625 +#: ../IkiWiki/Plugin/inline.pm:635 msgid "RPC::XML::Client not found, not pinging" msgstr "No he encontrado el componente RPC::XML::Client, no envío señal alguna" @@ -495,18 +497,23 @@ msgstr "" "no he podido cargar el módulo Perl Markdown.pm (%s) ó no he podido ejecutar " "el programa /usr/bin/markdown (%s)" -#: ../IkiWiki/Plugin/meta.pm:162 +#: ../IkiWiki/Plugin/meta.pm:174 msgid "stylesheet not found" msgstr "hoja de estilo no encontrada " -#: ../IkiWiki/Plugin/meta.pm:200 +#: ../IkiWiki/Plugin/meta.pm:212 msgid "redir page not found" msgstr "falta la página a donde redirigir" -#: ../IkiWiki/Plugin/meta.pm:214 +#: ../IkiWiki/Plugin/meta.pm:226 msgid "redir cycle is not allowed" msgstr "ciclo de redirección no permitido" +#: ../IkiWiki/Plugin/meta.pm:383 +#, fuzzy +msgid "sort=meta requires a parameter" +msgstr "los parámetros 'from' y 'to' son obligatorios" + #: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Réplicas" @@ -524,10 +531,6 @@ msgstr "aprobación de comentarios" msgid "more" msgstr "ver más" -#: ../IkiWiki/Plugin/norcs.pm:66 -msgid "getctime not implemented" -msgstr "la funcionalidad getctime no está incluida" - #: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "Identificarse mediante " @@ -545,43 +548,43 @@ msgstr "Todas las páginas están referenciadas entre sí." msgid "bad or missing template" msgstr "plantilla errónea ó no existente" -#: ../IkiWiki/Plugin/passwordauth.pm:229 +#: ../IkiWiki/Plugin/passwordauth.pm:231 msgid "Your user page: " msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:236 +#: ../IkiWiki/Plugin/passwordauth.pm:238 msgid "Create your user page" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:264 +#: ../IkiWiki/Plugin/passwordauth.pm:268 msgid "Account creation successful. Now you can Login." msgstr "Cuenta de usuario creada con éxito. Ahora puede identificarse." -#: ../IkiWiki/Plugin/passwordauth.pm:267 +#: ../IkiWiki/Plugin/passwordauth.pm:271 msgid "Error creating account." msgstr "Error creando la cuenta de usuario." -#: ../IkiWiki/Plugin/passwordauth.pm:274 +#: ../IkiWiki/Plugin/passwordauth.pm:278 msgid "No email address, so cannot email password reset instructions." msgstr "" "No tengo dirección de correo electrónica, así que no puedo enviar " "instrucciones para reiniciar la contraseña" -#: ../IkiWiki/Plugin/passwordauth.pm:308 +#: ../IkiWiki/Plugin/passwordauth.pm:312 msgid "Failed to send mail" msgstr "No he podido enviar el mensaje de correo electrónico" -#: ../IkiWiki/Plugin/passwordauth.pm:310 +#: ../IkiWiki/Plugin/passwordauth.pm:314 msgid "You have been mailed password reset instructions." msgstr "" "Las instrucciones para reiniciar la contraseña se le han enviado por correo " "electrónico" -#: ../IkiWiki/Plugin/passwordauth.pm:345 +#: ../IkiWiki/Plugin/passwordauth.pm:349 msgid "incorrect password reset url" msgstr "el url para reiniciar la contraseña es incorrecto" -#: ../IkiWiki/Plugin/passwordauth.pm:348 +#: ../IkiWiki/Plugin/passwordauth.pm:352 msgid "password reset denied" msgstr "reinicio de contraseña denegado" @@ -611,94 +614,94 @@ msgstr "No he encontrado el componente LWP, no envío señal alguna" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:139 +#: ../IkiWiki/Plugin/po.pm:140 #, fuzzy, perl-format msgid "%s is not a valid language code" msgstr "%s no es un archivo" -#: ../IkiWiki/Plugin/po.pm:151 +#: ../IkiWiki/Plugin/po.pm:152 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:156 +#: ../IkiWiki/Plugin/po.pm:157 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:386 +#: ../IkiWiki/Plugin/po.pm:388 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:392 ../IkiWiki/Render.pm:761 #, fuzzy, perl-format msgid "building %s" msgstr "Informaremos a %s" -#: ../IkiWiki/Plugin/po.pm:428 +#: ../IkiWiki/Plugin/po.pm:430 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:452 +#: ../IkiWiki/Plugin/po.pm:454 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:472 +#: ../IkiWiki/Plugin/po.pm:474 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:871 +#: ../IkiWiki/Plugin/po.pm:873 #, fuzzy, perl-format msgid "POT file (%s) does not exist" msgstr "No existe la página %s." -#: ../IkiWiki/Plugin/po.pm:885 +#: ../IkiWiki/Plugin/po.pm:887 #, fuzzy, perl-format msgid "failed to copy underlay PO file to %s" msgstr "ha fallado la compilación del programa %s" -#: ../IkiWiki/Plugin/po.pm:894 +#: ../IkiWiki/Plugin/po.pm:896 #, fuzzy, perl-format msgid "failed to update %s" msgstr "ha fallado la compilación del programa %s" -#: ../IkiWiki/Plugin/po.pm:900 +#: ../IkiWiki/Plugin/po.pm:902 #, fuzzy, perl-format msgid "failed to copy the POT file to %s" msgstr "ha fallado la compilación del programa %s" -#: ../IkiWiki/Plugin/po.pm:936 +#: ../IkiWiki/Plugin/po.pm:938 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:949 +#: ../IkiWiki/Plugin/po.pm:951 #, fuzzy, perl-format msgid "failed to translate %s" msgstr "dimensionamiento fallido: %s" -#: ../IkiWiki/Plugin/po.pm:1033 +#: ../IkiWiki/Plugin/po.pm:1035 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 -#: ../IkiWiki/Plugin/po.pm:1142 +#: ../IkiWiki/Plugin/po.pm:1091 ../IkiWiki/Plugin/po.pm:1105 +#: ../IkiWiki/Plugin/po.pm:1144 #, fuzzy, perl-format msgid "failed to write %s" msgstr "dimensionamiento fallido: %s" -#: ../IkiWiki/Plugin/po.pm:1101 +#: ../IkiWiki/Plugin/po.pm:1103 #, fuzzy msgid "failed to translate" msgstr "no he podido ejecutar el programa dot" -#: ../IkiWiki/Plugin/po.pm:1154 +#: ../IkiWiki/Plugin/po.pm:1156 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -840,44 +843,44 @@ msgstr "%s no está en el directorio fuente por lo que no puede ser renombrado" msgid "no change to the file name was specified" msgstr "no se ha indicado cambio alguno en el nombre del archivo" -#: ../IkiWiki/Plugin/rename.pm:69 +#: ../IkiWiki/Plugin/rename.pm:68 #, perl-format msgid "illegal name" msgstr "nombre no válido" -#: ../IkiWiki/Plugin/rename.pm:74 +#: ../IkiWiki/Plugin/rename.pm:73 #, perl-format msgid "%s already exists" msgstr "%s ya existe" -#: ../IkiWiki/Plugin/rename.pm:80 +#: ../IkiWiki/Plugin/rename.pm:79 #, perl-format msgid "%s already exists on disk" msgstr "%s ya existe en el disco" -#: ../IkiWiki/Plugin/rename.pm:123 +#: ../IkiWiki/Plugin/rename.pm:122 #, perl-format msgid "rename %s" msgstr "cambiando de nombre %s" -#: ../IkiWiki/Plugin/rename.pm:162 +#: ../IkiWiki/Plugin/rename.pm:161 msgid "Also rename SubPages and attachments" msgstr "También cambia de nombre las subpáginas y los adjuntos" -#: ../IkiWiki/Plugin/rename.pm:249 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "Únicamente un adjunto puede ser renombrado a la vez." -#: ../IkiWiki/Plugin/rename.pm:252 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "Por favor, seleccione el adjunto al que cambiar el nombre." -#: ../IkiWiki/Plugin/rename.pm:349 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "%s cambia de nombre a %s" -#: ../IkiWiki/Plugin/rename.pm:573 +#: ../IkiWiki/Plugin/rename.pm:572 #, perl-format msgid "update for rename of %s to %s" msgstr "actualizado el cambio de nombre de %s a %s" @@ -979,18 +982,19 @@ msgstr "Enlace directo para descarga" msgid "parse fail at line %d: %s" msgstr "error de análisis en la línea %d: %s" -#: ../IkiWiki/Plugin/template.pm:34 +#: ../IkiWiki/Plugin/tag.pm:83 +#, fuzzy, perl-format +msgid "creating tag page %s" +msgstr "creando nueva página %s" + +#: ../IkiWiki/Plugin/template.pm:33 msgid "missing id parameter" msgstr "falta el parámetro \"id\"" #: ../IkiWiki/Plugin/template.pm:47 -#, perl-format -msgid "template %s not found" -msgstr "no he encontrado la plantilla %s" - -#: ../IkiWiki/Plugin/template.pm:66 -msgid "failed to process:" -msgstr "se ha producido un error fatal mientras procesaba la plantilla:" +#, fuzzy, perl-format +msgid "%s not found" +msgstr "fuente de datos no encontrada" #: ../IkiWiki/Plugin/teximg.pm:72 msgid "missing tex code" @@ -1055,12 +1059,12 @@ msgstr "no puedo determinar el identificador de un usuario no fiable como %s" msgid "bad file name %s" msgstr "el nombre de archivo %s es erróneo" -#: ../IkiWiki/Render.pm:153 +#: ../IkiWiki/Render.pm:162 #, perl-format msgid "scanning %s" msgstr "explorando %s" -#: ../IkiWiki/Render.pm:274 +#: ../IkiWiki/Render.pm:284 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " @@ -1069,44 +1073,49 @@ msgstr "" "encontrado un enlace simbólico en la ruta del directorio fuente (%s) -- use " "la directiva allow_symlinks_before_srcdir para permitir la acción" -#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 +#: ../IkiWiki/Render.pm:315 #, perl-format msgid "skipping bad filename %s" msgstr "ignorando el archivo %s porque su nombre no es correcto" -#: ../IkiWiki/Render.pm:308 +#: ../IkiWiki/Render.pm:330 #, perl-format msgid "%s has multiple possible source pages" msgstr "%s tiene mútiples páginas fuente posibles" -#: ../IkiWiki/Render.pm:413 +#: ../IkiWiki/Render.pm:372 #, perl-format -msgid "removing old page %s" +msgid "querying %s for file creation and modification times.." +msgstr "" + +#: ../IkiWiki/Render.pm:434 +#, fuzzy, perl-format +msgid "removing obsolete %s" msgstr "eliminando la antigua página %s" -#: ../IkiWiki/Render.pm:486 +#: ../IkiWiki/Render.pm:507 #, fuzzy, perl-format msgid "building %s, which links to %s" msgstr "convirtiendo la página %s, la cual referencia a %s" -#: ../IkiWiki/Render.pm:495 +#: ../IkiWiki/Render.pm:516 #, fuzzy, perl-format msgid "removing %s, no longer built by %s" msgstr "eliminando la página %s puesto que ya no se deriva de %s" -#: ../IkiWiki/Render.pm:618 +#: ../IkiWiki/Render.pm:671 ../IkiWiki/Render.pm:777 #, fuzzy, perl-format msgid "building %s, which depends on %s" msgstr "convirtiendo la página %s, la cual depende de %s" -#: ../IkiWiki/Render.pm:631 +#: ../IkiWiki/Render.pm:684 #, fuzzy, perl-format msgid "building %s, to update its backlinks" msgstr "" "convirtiendo la página %s para actualizar la lista de páginas que hacen " "referencia a ella." -#: ../IkiWiki/Render.pm:707 +#: ../IkiWiki/Render.pm:819 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: no puedo convertir la página %s" @@ -1181,69 +1190,68 @@ msgstr "uso: ikiwiki [opciones] origen destino" msgid " ikiwiki --setup configfile" msgstr " ikiwiki --setup archivo_de_configuración" -#: ../ikiwiki.in:95 +#: ../ikiwiki.in:96 msgid "usage: --set var=value" msgstr "uso: --set variable=valor" -#: ../ikiwiki.in:102 +#: ../ikiwiki.in:103 #, fuzzy msgid "usage: --set-yaml var=value" msgstr "uso: --set variable=valor" -#: ../ikiwiki.in:156 +#: ../ikiwiki.in:157 msgid "generating wrappers.." msgstr "generando programas auxiliares.." -#: ../ikiwiki.in:219 +#: ../ikiwiki.in:220 msgid "rebuilding wiki.." msgstr "reconstruyendo el wiki.." -#: ../ikiwiki.in:222 +#: ../ikiwiki.in:223 msgid "refreshing wiki.." msgstr "actualizando el wiki.." -#: ../IkiWiki.pm:238 +#: ../IkiWiki.pm:233 msgid "Discussion" msgstr "Comentarios" -#: ../IkiWiki.pm:530 +#: ../IkiWiki.pm:524 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:576 +#: ../IkiWiki.pm:570 msgid "cannot use multiple rcs plugins" msgstr "no puedo emplear varios complementos rcs" -#: ../IkiWiki.pm:605 +#: ../IkiWiki.pm:599 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "no he podido cargar el complemento externo %s necesario para %s" -#: ../IkiWiki.pm:1278 +#: ../IkiWiki.pm:1273 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "" "se ha detectado en la página %s un bucle de preprocesado en la iteración " "número %i" -#: ../IkiWiki.pm:1901 +#: ../IkiWiki.pm:1932 msgid "yes" msgstr "si" -#: ../IkiWiki.pm:2044 -msgid "Sort::Naturally needed for title_natural sort" -msgstr "" -"Se necesita el módulo Sort::Naturally para el tipo de ordenación " -"title_natural" +#: ../IkiWiki.pm:2009 +#, fuzzy, perl-format +msgid "invalid sort type %s" +msgstr "no conozco este tipo de ordenación %s" -#: ../IkiWiki.pm:2055 +#: ../IkiWiki.pm:2030 #, perl-format msgid "unknown sort type %s" msgstr "no conozco este tipo de ordenación %s" -#: ../IkiWiki.pm:2074 +#: ../IkiWiki.pm:2166 #, perl-format msgid "cannot match pages: %s" msgstr "no encuentro páginas coincidentes: %s" @@ -1271,6 +1279,20 @@ msgstr "" msgid "What is the domain name of the web server?" msgstr "¿ Cuál es el dominio para el servidor web ?" +#~ msgid "failed to process" +#~ msgstr "fallo en el proceso" + +#~ msgid "nonexistant template %s" +#~ msgstr "la plantilla %s no existe " + +#~ msgid "getctime not implemented" +#~ msgstr "la funcionalidad getctime no está incluida" + +#~ msgid "Sort::Naturally needed for title_natural sort" +#~ msgstr "" +#~ "Se necesita el módulo Sort::Naturally para el tipo de ordenación " +#~ "title_natural" + #, fuzzy #~ msgid "failed to read %s" #~ msgstr "no puedo leer de %s: %s " diff --git a/po/fr.po b/po/fr.po index 6be9482ce..b98a498c0 100644 --- a/po/fr.po +++ b/po/fr.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.141\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-03 14:18-0400\n" +"POT-Creation-Date: 2010-04-24 16:15-0400\n" "PO-Revision-Date: 2009-08-17 10:06+0200\n" "Last-Translator: Philippe Batailler <philippe.batailler@free.fr>\n" "Language-Team: French <debian-l10n-french@lists.debian.org>\n" @@ -57,7 +57,7 @@ msgstr "Les préférences ont été enregistrées." msgid "You are banned." msgstr "Vous avez été banni." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1291 msgid "Error" msgstr "Erreur" @@ -138,7 +138,7 @@ msgstr "Création de la nouvelle page %s" msgid "deleting bucket.." msgstr "Suppression du compartiment S3 (« bucket »)..." -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:231 msgid "done" msgstr "Terminé" @@ -176,7 +176,7 @@ msgstr "Nom de la pièce jointe incorrect" msgid "attachment upload" msgstr "Envoi de la pièce jointe" -#: ../IkiWiki/Plugin/autoindex.pm:105 +#: ../IkiWiki/Plugin/autoindex.pm:117 msgid "automatic index generation" msgstr "Génération de l'index automatique" @@ -210,55 +210,55 @@ msgstr "Un commentaire doit avoir un contenu." msgid "Anonymous" msgstr "Anonyme" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 +#: ../IkiWiki/Plugin/comments.pm:342 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "Nom de page incorrect" -#: ../IkiWiki/Plugin/comments.pm:345 +#: ../IkiWiki/Plugin/comments.pm:347 #, perl-format msgid "commenting on %s" msgstr "Faire un commentaire sur %s" -#: ../IkiWiki/Plugin/comments.pm:363 +#: ../IkiWiki/Plugin/comments.pm:365 #, perl-format msgid "page '%s' doesn't exist, so you can't comment" msgstr "La page '%s' n'existe pas, commentaire impossible." -#: ../IkiWiki/Plugin/comments.pm:370 +#: ../IkiWiki/Plugin/comments.pm:372 #, perl-format msgid "comments on page '%s' are closed" msgstr "Le commentaire pour la page '%s' est terminé." -#: ../IkiWiki/Plugin/comments.pm:467 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "comment stored for moderation" msgstr "Le commentaire a été enregistré, en attente de « modération »" -#: ../IkiWiki/Plugin/comments.pm:469 +#: ../IkiWiki/Plugin/comments.pm:471 msgid "Your comment will be posted after moderator review" msgstr "Votre commentaire sera publié après vérification par le modérateur" -#: ../IkiWiki/Plugin/comments.pm:482 +#: ../IkiWiki/Plugin/comments.pm:484 msgid "Added a comment" msgstr "Commentaire ajouté" -#: ../IkiWiki/Plugin/comments.pm:486 +#: ../IkiWiki/Plugin/comments.pm:488 #, perl-format msgid "Added a comment: %s" msgstr "Commentaire ajouté : %s" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270 +#: ../IkiWiki/Plugin/comments.pm:530 ../IkiWiki/Plugin/websetup.pm:270 msgid "you are not logged in as an admin" msgstr "Vous n'êtes pas authentifié comme administrateur" -#: ../IkiWiki/Plugin/comments.pm:579 +#: ../IkiWiki/Plugin/comments.pm:581 msgid "Comment moderation" msgstr "Modération du commentaire" -#: ../IkiWiki/Plugin/comments.pm:618 +#: ../IkiWiki/Plugin/comments.pm:620 msgid "comment moderation" msgstr "modération du commentaire" -#: ../IkiWiki/Plugin/comments.pm:761 +#: ../IkiWiki/Plugin/comments.pm:759 #, fuzzy, perl-format msgid "%i comment" msgid_plural "%i comments" @@ -268,7 +268,7 @@ msgstr[1] "Commentaires" #. translators: Here "Comment" is a verb; #. translators: the user clicks on it to #. translators: post a comment. -#: ../IkiWiki/Plugin/comments.pm:771 +#: ../IkiWiki/Plugin/comments.pm:769 #, fuzzy msgid "Comment" msgstr "Commentaires" @@ -299,14 +299,14 @@ msgstr "Suppression de l'ancienne prévisualisation %s" msgid "%s is not an editable page" msgstr "%s n'est pas une page éditable" -#: ../IkiWiki/Plugin/editpage.pm:296 +#: ../IkiWiki/Plugin/editpage.pm:295 #, perl-format msgid "creating %s" msgstr "Création de %s" -#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 -#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 -#: ../IkiWiki/Plugin/editpage.pm:426 +#: ../IkiWiki/Plugin/editpage.pm:313 ../IkiWiki/Plugin/editpage.pm:332 +#: ../IkiWiki/Plugin/editpage.pm:342 ../IkiWiki/Plugin/editpage.pm:386 +#: ../IkiWiki/Plugin/editpage.pm:425 #, perl-format msgid "editing %s" msgstr "Édition de %s" @@ -324,9 +324,11 @@ msgstr "correspondance non indiquée" msgid "edittemplate %s registered for %s" msgstr "edittemplate %s enregistré pour %s" -#: ../IkiWiki/Plugin/edittemplate.pm:138 -msgid "failed to process" -msgstr "Échec du traitement" +#: ../IkiWiki/Plugin/edittemplate.pm:125 ../IkiWiki/Plugin/inline.pm:339 +#: ../IkiWiki/Plugin/template.pm:44 +#, fuzzy +msgid "failed to process template:" +msgstr "Échec du traitement :" #: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" @@ -354,18 +356,18 @@ msgstr "Ce n'est pas une page." msgid "%s is an attachment, not a page." msgstr "%s est une pièce jointe, pas une page." -#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 +#: ../IkiWiki/Plugin/git.pm:687 ../IkiWiki/Plugin/git.pm:705 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "Vous n'êtes pas autorisé à modifier %s" -#: ../IkiWiki/Plugin/git.pm:698 +#: ../IkiWiki/Plugin/git.pm:727 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "Vous ne pouvez pas modifier un fichier dont le mode est %s" -#: ../IkiWiki/Plugin/git.pm:702 +#: ../IkiWiki/Plugin/git.pm:731 msgid "you are not allowed to change file modes" msgstr "Vous n'êtes pas autorisé à modifier le mode des fichiers" @@ -452,12 +454,12 @@ msgstr "Les paramètres %s et %s ne peuvent être utilisés ensemble." msgid "Add a new post titled:" msgstr "Ajouter un nouvel article dont le titre est :" -#: ../IkiWiki/Plugin/inline.pm:333 +#: ../IkiWiki/Plugin/inline.pm:342 #, perl-format -msgid "nonexistant template %s" -msgstr "Le modèle de page %s n'existe pas" +msgid "template %s not found" +msgstr "Modèle de page %s introuvable" -#: ../IkiWiki/Plugin/inline.pm:625 +#: ../IkiWiki/Plugin/inline.pm:635 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client introuvable, pas de réponse au ping" @@ -486,18 +488,23 @@ msgstr "" "Échec du chargement du module Perl Markdown.pm (%s) ou de /usr/bin/markdown " "(%s)" -#: ../IkiWiki/Plugin/meta.pm:162 +#: ../IkiWiki/Plugin/meta.pm:174 msgid "stylesheet not found" msgstr "Feuille de style introuvable " -#: ../IkiWiki/Plugin/meta.pm:200 +#: ../IkiWiki/Plugin/meta.pm:212 msgid "redir page not found" msgstr "Page de redirection introuvable" -#: ../IkiWiki/Plugin/meta.pm:214 +#: ../IkiWiki/Plugin/meta.pm:226 msgid "redir cycle is not allowed" msgstr "Redirection cyclique non autorisée" +#: ../IkiWiki/Plugin/meta.pm:383 +#, fuzzy +msgid "sort=meta requires a parameter" +msgstr "les paramètres « from » et « to » sont nécessaires." + #: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Miroirs" @@ -515,10 +522,6 @@ msgstr "modération du commentaire" msgid "more" msgstr "lire la suite" -#: ../IkiWiki/Plugin/norcs.pm:66 -msgid "getctime not implemented" -msgstr "getctime n'est pas implémenté" - #: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "S'identifier en tant que" @@ -535,43 +538,43 @@ msgstr "Toutes les pages sont liées à d'autres pages." msgid "bad or missing template" msgstr "Modèle de page incorrect ou manquant" -#: ../IkiWiki/Plugin/passwordauth.pm:229 +#: ../IkiWiki/Plugin/passwordauth.pm:231 msgid "Your user page: " msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:236 +#: ../IkiWiki/Plugin/passwordauth.pm:238 msgid "Create your user page" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:264 +#: ../IkiWiki/Plugin/passwordauth.pm:268 msgid "Account creation successful. Now you can Login." msgstr "Le compte a été créé. Vous pouvez maintenant vous identifier." -#: ../IkiWiki/Plugin/passwordauth.pm:267 +#: ../IkiWiki/Plugin/passwordauth.pm:271 msgid "Error creating account." msgstr "Erreur lors de la création du compte." -#: ../IkiWiki/Plugin/passwordauth.pm:274 +#: ../IkiWiki/Plugin/passwordauth.pm:278 msgid "No email address, so cannot email password reset instructions." msgstr "" "Aucune adresse indiquée. Impossible d'envoyer les instructions pour " "réinitialiser le mot de passe." -#: ../IkiWiki/Plugin/passwordauth.pm:308 +#: ../IkiWiki/Plugin/passwordauth.pm:312 msgid "Failed to send mail" msgstr "Impossible d'envoyer un courriel" -#: ../IkiWiki/Plugin/passwordauth.pm:310 +#: ../IkiWiki/Plugin/passwordauth.pm:314 msgid "You have been mailed password reset instructions." msgstr "" "Vous avez reçu un message contenant les instructions pour réinitialiser le " "mot de passe" -#: ../IkiWiki/Plugin/passwordauth.pm:345 +#: ../IkiWiki/Plugin/passwordauth.pm:349 msgid "incorrect password reset url" msgstr "Adresse pour la réinitialisation du mot de passe incorrecte" -#: ../IkiWiki/Plugin/passwordauth.pm:348 +#: ../IkiWiki/Plugin/passwordauth.pm:352 msgid "password reset denied" msgstr "réinitialisation du mot de passe refusée" @@ -603,12 +606,12 @@ msgstr "" "Note : ancienne version de po4a détectée. Il est recommandé d'installer la " "version 0.35." -#: ../IkiWiki/Plugin/po.pm:139 +#: ../IkiWiki/Plugin/po.pm:140 #, perl-format msgid "%s is not a valid language code" msgstr "%s n'est pas un code de langue valable" -#: ../IkiWiki/Plugin/po.pm:151 +#: ../IkiWiki/Plugin/po.pm:152 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" @@ -616,7 +619,7 @@ msgstr "" "%s n'est pas une valeur correcte pour po_link_to, retour à la valeur par " "défaut." -#: ../IkiWiki/Plugin/po.pm:156 +#: ../IkiWiki/Plugin/po.pm:157 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" @@ -624,23 +627,23 @@ msgstr "" "po_link_to=negotiated nécessite que usedirs soit activé, retour à " "po_link_to=default." -#: ../IkiWiki/Plugin/po.pm:386 +#: ../IkiWiki/Plugin/po.pm:388 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" "Reconstruction de toutes les pages pour corriger les titres (greffon " "« meta »)." -#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:392 ../IkiWiki/Render.pm:761 #, perl-format msgid "building %s" msgstr "construction de %s" -#: ../IkiWiki/Plugin/po.pm:428 +#: ../IkiWiki/Plugin/po.pm:430 msgid "updated PO files" msgstr "Fichiers PO mis à jour." -#: ../IkiWiki/Plugin/po.pm:452 +#: ../IkiWiki/Plugin/po.pm:454 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." @@ -648,7 +651,7 @@ msgstr "" "Impossible de supprimer cette traduction. Si la page maître est supprimée, " "alors ses traductions seront supprimées." -#: ../IkiWiki/Plugin/po.pm:472 +#: ../IkiWiki/Plugin/po.pm:474 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." @@ -656,50 +659,50 @@ msgstr "" "Impossible de renommer cette traduction. Si la page maître est renommée, " "alors ses traductions pourront être renommées." -#: ../IkiWiki/Plugin/po.pm:871 +#: ../IkiWiki/Plugin/po.pm:873 #, perl-format msgid "POT file (%s) does not exist" msgstr "Le fichier POT %s n'existe pas." -#: ../IkiWiki/Plugin/po.pm:885 +#: ../IkiWiki/Plugin/po.pm:887 #, perl-format msgid "failed to copy underlay PO file to %s" msgstr "Impossible de copier le fichier PO underlay dans %s" -#: ../IkiWiki/Plugin/po.pm:894 +#: ../IkiWiki/Plugin/po.pm:896 #, perl-format msgid "failed to update %s" msgstr "Impossible de mettre à jour %s" -#: ../IkiWiki/Plugin/po.pm:900 +#: ../IkiWiki/Plugin/po.pm:902 #, perl-format msgid "failed to copy the POT file to %s" msgstr "Impossible de copier le fichier POT dans %s" -#: ../IkiWiki/Plugin/po.pm:936 +#: ../IkiWiki/Plugin/po.pm:938 msgid "N/A" msgstr "N/A" -#: ../IkiWiki/Plugin/po.pm:949 +#: ../IkiWiki/Plugin/po.pm:951 #, perl-format msgid "failed to translate %s" msgstr "Impossible de traduire %s" -#: ../IkiWiki/Plugin/po.pm:1033 +#: ../IkiWiki/Plugin/po.pm:1035 msgid "removed obsolete PO files" msgstr "Fichiers PO obsolètes supprimés." -#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 -#: ../IkiWiki/Plugin/po.pm:1142 +#: ../IkiWiki/Plugin/po.pm:1091 ../IkiWiki/Plugin/po.pm:1105 +#: ../IkiWiki/Plugin/po.pm:1144 #, perl-format msgid "failed to write %s" msgstr "Impossible de modifier %s" -#: ../IkiWiki/Plugin/po.pm:1101 +#: ../IkiWiki/Plugin/po.pm:1103 msgid "failed to translate" msgstr "Impossible de traduire" -#: ../IkiWiki/Plugin/po.pm:1154 +#: ../IkiWiki/Plugin/po.pm:1156 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" "Données gettext incorrectes, retour à la page précédente pour la poursuite " @@ -844,44 +847,44 @@ msgstr "%s n'est pas dans srcdir. Impossible de le renommer" msgid "no change to the file name was specified" msgstr "Aucun changement dans le nom du fichier n'a été spécifié" -#: ../IkiWiki/Plugin/rename.pm:69 +#: ../IkiWiki/Plugin/rename.pm:68 #, perl-format msgid "illegal name" msgstr "Appellation interdite" -#: ../IkiWiki/Plugin/rename.pm:74 +#: ../IkiWiki/Plugin/rename.pm:73 #, perl-format msgid "%s already exists" msgstr "%s existe déjà" -#: ../IkiWiki/Plugin/rename.pm:80 +#: ../IkiWiki/Plugin/rename.pm:79 #, perl-format msgid "%s already exists on disk" msgstr "%s existe déjà sur le disque" -#: ../IkiWiki/Plugin/rename.pm:123 +#: ../IkiWiki/Plugin/rename.pm:122 #, perl-format msgid "rename %s" msgstr "%s renommé" -#: ../IkiWiki/Plugin/rename.pm:162 +#: ../IkiWiki/Plugin/rename.pm:161 msgid "Also rename SubPages and attachments" msgstr "« SubPages » et attachements renommés." -#: ../IkiWiki/Plugin/rename.pm:249 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "Modification de pièce jointe : une seule à la fois" -#: ../IkiWiki/Plugin/rename.pm:252 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "Veuillez sélectionner la pièce jointe à renommer" -#: ../IkiWiki/Plugin/rename.pm:349 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "Renomme %s en %s" -#: ../IkiWiki/Plugin/rename.pm:573 +#: ../IkiWiki/Plugin/rename.pm:572 #, perl-format msgid "update for rename of %s to %s" msgstr "mise à jour, suite au changement de %s en %s" @@ -979,18 +982,19 @@ msgstr "Téléchargement direct des données" msgid "parse fail at line %d: %s" msgstr "Erreur d'analyse à la ligne %d : %s" -#: ../IkiWiki/Plugin/template.pm:34 +#: ../IkiWiki/Plugin/tag.pm:83 +#, fuzzy, perl-format +msgid "creating tag page %s" +msgstr "Création de la nouvelle page %s" + +#: ../IkiWiki/Plugin/template.pm:33 msgid "missing id parameter" msgstr "Paramètre d'identification manquant" #: ../IkiWiki/Plugin/template.pm:47 -#, perl-format -msgid "template %s not found" -msgstr "Modèle de page %s introuvable" - -#: ../IkiWiki/Plugin/template.pm:66 -msgid "failed to process:" -msgstr "Échec du traitement :" +#, fuzzy, perl-format +msgid "%s not found" +msgstr "Flux introuvable " #: ../IkiWiki/Plugin/teximg.pm:72 msgid "missing tex code" @@ -1054,12 +1058,12 @@ msgstr "" msgid "bad file name %s" msgstr "Nom de fichier incorrect %s" -#: ../IkiWiki/Render.pm:153 +#: ../IkiWiki/Render.pm:162 #, perl-format msgid "scanning %s" msgstr "Examen de %s" -#: ../IkiWiki/Render.pm:274 +#: ../IkiWiki/Render.pm:284 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " @@ -1068,42 +1072,47 @@ msgstr "" "Lien symbolique trouvé dans l'adresse de srcdir (%s) -- pour l'autoriser, " "activez le paramètre « allow_symlinks_before_srcdir »." -#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 +#: ../IkiWiki/Render.pm:315 #, perl-format msgid "skipping bad filename %s" msgstr "Omission du fichier au nom incorrect %s" -#: ../IkiWiki/Render.pm:308 +#: ../IkiWiki/Render.pm:330 #, perl-format msgid "%s has multiple possible source pages" msgstr "%s peut être associé à plusieurs pages source." -#: ../IkiWiki/Render.pm:413 +#: ../IkiWiki/Render.pm:372 #, perl-format -msgid "removing old page %s" +msgid "querying %s for file creation and modification times.." +msgstr "" + +#: ../IkiWiki/Render.pm:434 +#, fuzzy, perl-format +msgid "removing obsolete %s" msgstr "Suppression de l'ancienne page %s" -#: ../IkiWiki/Render.pm:486 +#: ../IkiWiki/Render.pm:507 #, perl-format msgid "building %s, which links to %s" msgstr "Reconstruction de %s, qui est lié à %s" -#: ../IkiWiki/Render.pm:495 +#: ../IkiWiki/Render.pm:516 #, perl-format msgid "removing %s, no longer built by %s" msgstr "Suppression de %s, qui n'est plus rendu par %s" -#: ../IkiWiki/Render.pm:618 +#: ../IkiWiki/Render.pm:671 ../IkiWiki/Render.pm:777 #, perl-format msgid "building %s, which depends on %s" msgstr "Reconstruction de %s, qui dépend de %s" -#: ../IkiWiki/Render.pm:631 +#: ../IkiWiki/Render.pm:684 #, perl-format msgid "building %s, to update its backlinks" msgstr "Reconstruction de %s, afin de mettre à jour ses rétroliens" -#: ../IkiWiki/Render.pm:707 +#: ../IkiWiki/Render.pm:819 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki : impossible de reconstruire %s" @@ -1181,64 +1190,65 @@ msgstr "Syntaxe : ikiwiki [options] source destination" msgid " ikiwiki --setup configfile" msgstr " ikiwiki --setup fichier de configuration" -#: ../ikiwiki.in:95 +#: ../ikiwiki.in:96 msgid "usage: --set var=value" msgstr "Syntaxe : -- set var=valeur" -#: ../ikiwiki.in:102 +#: ../ikiwiki.in:103 #, fuzzy msgid "usage: --set-yaml var=value" msgstr "Syntaxe : -- set var=valeur" -#: ../ikiwiki.in:156 +#: ../ikiwiki.in:157 msgid "generating wrappers.." msgstr "Création des fichiers CGI..." -#: ../ikiwiki.in:219 +#: ../ikiwiki.in:220 msgid "rebuilding wiki.." msgstr "Reconstruction du wiki..." -#: ../ikiwiki.in:222 +#: ../ikiwiki.in:223 msgid "refreshing wiki.." msgstr "Rafraîchissement du wiki..." -#: ../IkiWiki.pm:238 +#: ../IkiWiki.pm:233 msgid "Discussion" msgstr "Discussion" -#: ../IkiWiki.pm:530 +#: ../IkiWiki.pm:524 msgid "Must specify url to wiki with --url when using --cgi" msgstr "" "Vous devez indiquer l'URL du wiki par --url lors de l'utilisation de --cgi" -#: ../IkiWiki.pm:576 +#: ../IkiWiki.pm:570 msgid "cannot use multiple rcs plugins" msgstr "Impossible d'utiliser plusieurs systèmes de contrôle des versions" -#: ../IkiWiki.pm:605 +#: ../IkiWiki.pm:599 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "Impossible de charger le greffon externe nécessaire au greffon %s : %s" -#: ../IkiWiki.pm:1278 +#: ../IkiWiki.pm:1273 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "Une boucle de prétraitement a été détectée sur %s à hauteur de %i" -#: ../IkiWiki.pm:1901 +#: ../IkiWiki.pm:1932 msgid "yes" msgstr "oui" -#: ../IkiWiki.pm:2044 -msgid "Sort::Naturally needed for title_natural sort" -msgstr "Sort::Naturally est nécessaire pour un tri « title_natural »" +#: ../IkiWiki.pm:2009 +#, fuzzy, perl-format +msgid "invalid sort type %s" +msgstr "Type de tri %s inconnu" -#: ../IkiWiki.pm:2055 +#: ../IkiWiki.pm:2030 #, perl-format msgid "unknown sort type %s" msgstr "Type de tri %s inconnu" -#: ../IkiWiki.pm:2074 +#: ../IkiWiki.pm:2166 #, perl-format msgid "cannot match pages: %s" msgstr "Impossible de trouver les pages %s" @@ -1263,6 +1273,18 @@ msgstr "Identifiant de l'administrateur (utilisateur du wiki ou openid) :" msgid "What is the domain name of the web server?" msgstr "Nom de domaine du serveur HTTP :" +#~ msgid "failed to process" +#~ msgstr "Échec du traitement" + +#~ msgid "nonexistant template %s" +#~ msgstr "Le modèle de page %s n'existe pas" + +#~ msgid "getctime not implemented" +#~ msgstr "getctime n'est pas implémenté" + +#~ msgid "Sort::Naturally needed for title_natural sort" +#~ msgstr "Sort::Naturally est nécessaire pour un tri « title_natural »" + #~ msgid "failed to read %s" #~ msgstr "Impossible de lire %s" diff --git a/po/gu.po b/po/gu.po index d4bfd42c0..4f652358d 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: 2010-04-03 14:18-0400\n" +"POT-Creation-Date: 2010-04-24 16:15-0400\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" @@ -54,7 +54,7 @@ msgstr "પ્રાથમિકતાઓ સંગ્રહાઇ." msgid "You are banned." msgstr "તમારા પર પ્રતિબંધ છે." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1291 msgid "Error" msgstr "ક્ષતિ" @@ -135,7 +135,7 @@ msgstr "નવું પાનું %s બનાવે છે" msgid "deleting bucket.." msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:231 msgid "done" msgstr "સંપૂર્ણ" @@ -176,7 +176,7 @@ msgstr "" msgid "attachment upload" msgstr "" -#: ../IkiWiki/Plugin/autoindex.pm:105 +#: ../IkiWiki/Plugin/autoindex.pm:117 msgid "automatic index generation" msgstr "" @@ -208,55 +208,55 @@ msgstr "" msgid "Anonymous" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 +#: ../IkiWiki/Plugin/comments.pm:342 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:345 +#: ../IkiWiki/Plugin/comments.pm:347 #, fuzzy, perl-format msgid "commenting on %s" msgstr "%s બનાવે છે" -#: ../IkiWiki/Plugin/comments.pm:363 +#: ../IkiWiki/Plugin/comments.pm:365 #, perl-format msgid "page '%s' doesn't exist, so you can't comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:370 +#: ../IkiWiki/Plugin/comments.pm:372 #, perl-format msgid "comments on page '%s' are closed" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:467 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "comment stored for moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:469 +#: ../IkiWiki/Plugin/comments.pm:471 msgid "Your comment will be posted after moderator review" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:482 +#: ../IkiWiki/Plugin/comments.pm:484 msgid "Added a comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:486 +#: ../IkiWiki/Plugin/comments.pm:488 #, perl-format msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270 +#: ../IkiWiki/Plugin/comments.pm:530 ../IkiWiki/Plugin/websetup.pm:270 msgid "you are not logged in as an admin" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:579 +#: ../IkiWiki/Plugin/comments.pm:581 msgid "Comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:618 +#: ../IkiWiki/Plugin/comments.pm:620 msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:761 +#: ../IkiWiki/Plugin/comments.pm:759 #, perl-format msgid "%i comment" msgid_plural "%i comments" @@ -266,7 +266,7 @@ msgstr[1] "" #. translators: Here "Comment" is a verb; #. translators: the user clicks on it to #. translators: post a comment. -#: ../IkiWiki/Plugin/comments.pm:771 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comment" msgstr "" @@ -296,14 +296,14 @@ msgstr "જુનાં પાનાં દૂર કરે છે %s" msgid "%s is not an editable page" msgstr "%s એ સુધારી શકાય તેવું પાનું નથી" -#: ../IkiWiki/Plugin/editpage.pm:296 +#: ../IkiWiki/Plugin/editpage.pm:295 #, perl-format msgid "creating %s" msgstr "%s બનાવે છે" -#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 -#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 -#: ../IkiWiki/Plugin/editpage.pm:426 +#: ../IkiWiki/Plugin/editpage.pm:313 ../IkiWiki/Plugin/editpage.pm:332 +#: ../IkiWiki/Plugin/editpage.pm:342 ../IkiWiki/Plugin/editpage.pm:386 +#: ../IkiWiki/Plugin/editpage.pm:425 #, perl-format msgid "editing %s" msgstr "%s સુધારે છે" @@ -323,9 +323,10 @@ msgstr "આવરણ ફાઇલનામ સ્પષ્ટ કરેલ ન msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:138 +#: ../IkiWiki/Plugin/edittemplate.pm:125 ../IkiWiki/Plugin/inline.pm:339 +#: ../IkiWiki/Plugin/template.pm:44 #, fuzzy -msgid "failed to process" +msgid "failed to process template:" msgstr "ક્રિયા કરવામાં નિષ્ફળ:" #: ../IkiWiki/Plugin/format.pm:30 @@ -356,18 +357,18 @@ msgstr "વાંચી શકાતી નથી %s: %s" msgid "%s is an attachment, not a page." msgstr "%s એ સુધારી શકાય તેવું પાનું નથી" -#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 +#: ../IkiWiki/Plugin/git.pm:687 ../IkiWiki/Plugin/git.pm:705 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:698 +#: ../IkiWiki/Plugin/git.pm:727 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:702 +#: ../IkiWiki/Plugin/git.pm:731 msgid "you are not allowed to change file modes" msgstr "" @@ -453,12 +454,12 @@ msgstr "" msgid "Add a new post titled:" msgstr "આ શિર્ષકથી નવું પોસ્ટ ઉમેરો:" -#: ../IkiWiki/Plugin/inline.pm:333 +#: ../IkiWiki/Plugin/inline.pm:342 #, perl-format -msgid "nonexistant template %s" -msgstr "અસ્તિત્વમાં ન હોય તેવું ટેમ્પલેટ %s" +msgid "template %s not found" +msgstr "ટેમ્પલેટ %s મળ્યું નહી" -#: ../IkiWiki/Plugin/inline.pm:625 +#: ../IkiWiki/Plugin/inline.pm:635 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client મળ્યું નહી, પિંગ કરવામાં આવતું નથી" @@ -485,20 +486,24 @@ msgstr "" msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "Markdown.pm પર્લ મોડ્યુલ (%s) અથવા /usr/bin/markdown (%s) લાવવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/meta.pm:162 +#: ../IkiWiki/Plugin/meta.pm:174 msgid "stylesheet not found" msgstr "સ્ટાઇલશીટ મળ્યું નહી" -#: ../IkiWiki/Plugin/meta.pm:200 +#: ../IkiWiki/Plugin/meta.pm:212 #, fuzzy msgid "redir page not found" msgstr "ફીડ મળ્યું નહી" -#: ../IkiWiki/Plugin/meta.pm:214 +#: ../IkiWiki/Plugin/meta.pm:226 #, fuzzy msgid "redir cycle is not allowed" msgstr "ફીડ મળ્યું નહી" +#: ../IkiWiki/Plugin/meta.pm:383 +msgid "sort=meta requires a parameter" +msgstr "" + #: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "મિરરો" @@ -515,10 +520,6 @@ msgstr "" msgid "more" msgstr "વધુ" -#: ../IkiWiki/Plugin/norcs.pm:66 -msgid "getctime not implemented" -msgstr "getctime અમલમાં મૂકાયેલ નથી" - #: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "" @@ -536,39 +537,39 @@ msgstr "બધા પાનાંઓ બીજા પાનાંઓ વડે msgid "bad or missing template" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:229 +#: ../IkiWiki/Plugin/passwordauth.pm:231 msgid "Your user page: " msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:236 +#: ../IkiWiki/Plugin/passwordauth.pm:238 msgid "Create your user page" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:264 +#: ../IkiWiki/Plugin/passwordauth.pm:268 msgid "Account creation successful. Now you can Login." msgstr "ખાતું બનાવવાનું સફળ. તમે હવે લોગઇન કરી શકો છો." -#: ../IkiWiki/Plugin/passwordauth.pm:267 +#: ../IkiWiki/Plugin/passwordauth.pm:271 msgid "Error creating account." msgstr "ખાતું બનાવવામાં ક્ષતિ." -#: ../IkiWiki/Plugin/passwordauth.pm:274 +#: ../IkiWiki/Plugin/passwordauth.pm:278 msgid "No email address, so cannot email password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:308 +#: ../IkiWiki/Plugin/passwordauth.pm:312 msgid "Failed to send mail" msgstr "મેઇલ મોકલવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/passwordauth.pm:310 +#: ../IkiWiki/Plugin/passwordauth.pm:314 msgid "You have been mailed password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:345 +#: ../IkiWiki/Plugin/passwordauth.pm:349 msgid "incorrect password reset url" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:348 +#: ../IkiWiki/Plugin/passwordauth.pm:352 msgid "password reset denied" msgstr "" @@ -599,94 +600,94 @@ msgstr "RPC::XML::Client મળ્યું નહી, પિંગ કરવા msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:139 +#: ../IkiWiki/Plugin/po.pm:140 #, fuzzy, perl-format msgid "%s is not a valid language code" msgstr "%s એ સુધારી શકાય તેવું પાનું નથી" -#: ../IkiWiki/Plugin/po.pm:151 +#: ../IkiWiki/Plugin/po.pm:152 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:156 +#: ../IkiWiki/Plugin/po.pm:157 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:386 +#: ../IkiWiki/Plugin/po.pm:388 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:392 ../IkiWiki/Render.pm:761 #, fuzzy, perl-format msgid "building %s" msgstr "%s સુધારે છે" -#: ../IkiWiki/Plugin/po.pm:428 +#: ../IkiWiki/Plugin/po.pm:430 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:452 +#: ../IkiWiki/Plugin/po.pm:454 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:472 +#: ../IkiWiki/Plugin/po.pm:474 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:871 +#: ../IkiWiki/Plugin/po.pm:873 #, perl-format msgid "POT file (%s) does not exist" msgstr "" -#: ../IkiWiki/Plugin/po.pm:885 +#: ../IkiWiki/Plugin/po.pm:887 #, fuzzy, perl-format msgid "failed to copy underlay PO file to %s" msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/po.pm:894 +#: ../IkiWiki/Plugin/po.pm:896 #, fuzzy, perl-format msgid "failed to update %s" msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/po.pm:900 +#: ../IkiWiki/Plugin/po.pm:902 #, fuzzy, perl-format msgid "failed to copy the POT file to %s" msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/po.pm:936 +#: ../IkiWiki/Plugin/po.pm:938 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:949 +#: ../IkiWiki/Plugin/po.pm:951 #, fuzzy, perl-format msgid "failed to translate %s" msgstr "માપ બદલવામાં નિષ્ફળ: %s" -#: ../IkiWiki/Plugin/po.pm:1033 +#: ../IkiWiki/Plugin/po.pm:1035 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 -#: ../IkiWiki/Plugin/po.pm:1142 +#: ../IkiWiki/Plugin/po.pm:1091 ../IkiWiki/Plugin/po.pm:1105 +#: ../IkiWiki/Plugin/po.pm:1144 #, fuzzy, perl-format msgid "failed to write %s" msgstr "%s લખવામાં નિષ્ફળ: %s" -#: ../IkiWiki/Plugin/po.pm:1101 +#: ../IkiWiki/Plugin/po.pm:1103 #, fuzzy msgid "failed to translate" msgstr "ડોટ ચલાવવામાં નિષ્ફળ" -#: ../IkiWiki/Plugin/po.pm:1154 +#: ../IkiWiki/Plugin/po.pm:1156 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -831,44 +832,44 @@ msgstr "" msgid "no change to the file name was specified" msgstr "આવરણ ફાઇલનામ સ્પષ્ટ કરેલ નથી" -#: ../IkiWiki/Plugin/rename.pm:69 +#: ../IkiWiki/Plugin/rename.pm:68 #, perl-format msgid "illegal name" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:74 +#: ../IkiWiki/Plugin/rename.pm:73 #, perl-format msgid "%s already exists" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:80 +#: ../IkiWiki/Plugin/rename.pm:79 #, perl-format msgid "%s already exists on disk" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:123 +#: ../IkiWiki/Plugin/rename.pm:122 #, fuzzy, perl-format msgid "rename %s" msgstr "રેન્ડર કરે છે %s" -#: ../IkiWiki/Plugin/rename.pm:162 +#: ../IkiWiki/Plugin/rename.pm:161 msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:249 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:252 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:349 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:573 +#: ../IkiWiki/Plugin/rename.pm:572 #, fuzzy, perl-format msgid "update for rename of %s to %s" msgstr "%s નો સુધારો %s નાં %s વડે" @@ -970,19 +971,20 @@ msgstr "સીધી માહિતી ડાઉનલોડ" msgid "parse fail at line %d: %s" msgstr "ઉકેલવાનું લીટી %d પર નિષ્ફળ: %s" -#: ../IkiWiki/Plugin/template.pm:34 +#: ../IkiWiki/Plugin/tag.pm:83 +#, fuzzy, perl-format +msgid "creating tag page %s" +msgstr "નવું પાનું %s બનાવે છે" + +#: ../IkiWiki/Plugin/template.pm:33 msgid "missing id parameter" msgstr "ખોવાયેલ આઇડી વિકલ્પ" #: ../IkiWiki/Plugin/template.pm:47 #, perl-format -msgid "template %s not found" +msgid "%s not found" msgstr "ટેમ્પલેટ %s મળ્યું નહી" -#: ../IkiWiki/Plugin/template.pm:66 -msgid "failed to process:" -msgstr "ક્રિયા કરવામાં નિષ્ફળ:" - #: ../IkiWiki/Plugin/teximg.pm:72 #, fuzzy msgid "missing tex code" @@ -1042,54 +1044,59 @@ msgstr "" msgid "bad file name %s" msgstr "ખરાબ ફાઇલ નામ છોડી દે છે %s" -#: ../IkiWiki/Render.pm:153 +#: ../IkiWiki/Render.pm:162 #, perl-format msgid "scanning %s" msgstr "%s શોધે છે" -#: ../IkiWiki/Render.pm:274 +#: ../IkiWiki/Render.pm:284 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "allow this" msgstr "" -#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 +#: ../IkiWiki/Render.pm:315 #, perl-format msgid "skipping bad filename %s" msgstr "ખરાબ ફાઇલ નામ છોડી દે છે %s" -#: ../IkiWiki/Render.pm:308 +#: ../IkiWiki/Render.pm:330 #, perl-format msgid "%s has multiple possible source pages" msgstr "" -#: ../IkiWiki/Render.pm:413 +#: ../IkiWiki/Render.pm:372 #, perl-format -msgid "removing old page %s" +msgid "querying %s for file creation and modification times.." +msgstr "" + +#: ../IkiWiki/Render.pm:434 +#, fuzzy, perl-format +msgid "removing obsolete %s" msgstr "જુનાં પાનાં દૂર કરે છે %s" -#: ../IkiWiki/Render.pm:486 +#: ../IkiWiki/Render.pm:507 #, fuzzy, perl-format msgid "building %s, which links to %s" msgstr "રેન્ડર કરે છે %s, જે %s સાથે જોડાણ ધરાવે છે" -#: ../IkiWiki/Render.pm:495 +#: ../IkiWiki/Render.pm:516 #, fuzzy, perl-format msgid "removing %s, no longer built by %s" msgstr "દૂર કરે છે %s, હવે %s વડે રેન્ડર કરાતું નથી" -#: ../IkiWiki/Render.pm:618 +#: ../IkiWiki/Render.pm:671 ../IkiWiki/Render.pm:777 #, fuzzy, perl-format msgid "building %s, which depends on %s" msgstr "રેન્ડર કરે છે %s, જે %s પર આધારિત છે" -#: ../IkiWiki/Render.pm:631 +#: ../IkiWiki/Render.pm:684 #, fuzzy, perl-format msgid "building %s, to update its backlinks" msgstr "રેન્ડર કરે છે %s, તેનાં પાછળનાં જોડાણો સુધારવા માટે" -#: ../IkiWiki/Render.pm:707 +#: ../IkiWiki/Render.pm:819 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: %s રેન્ડર કરી શકાતું નથી" @@ -1162,62 +1169,63 @@ msgstr "ઉપયોગ: ikiwiki [વિકલ્પો] source dest" msgid " ikiwiki --setup configfile" msgstr "" -#: ../ikiwiki.in:95 +#: ../ikiwiki.in:96 msgid "usage: --set var=value" msgstr "" -#: ../ikiwiki.in:102 +#: ../ikiwiki.in:103 msgid "usage: --set-yaml var=value" msgstr "" -#: ../ikiwiki.in:156 +#: ../ikiwiki.in:157 msgid "generating wrappers.." msgstr "આવરણ બનાવે છે.." -#: ../ikiwiki.in:219 +#: ../ikiwiki.in:220 msgid "rebuilding wiki.." msgstr "વીકી ફરીથી બનાવે છે.." -#: ../ikiwiki.in:222 +#: ../ikiwiki.in:223 msgid "refreshing wiki.." msgstr "વીકીને તાજી કરે છે.." -#: ../IkiWiki.pm:238 +#: ../IkiWiki.pm:233 msgid "Discussion" msgstr "ચર્ચા" -#: ../IkiWiki.pm:530 +#: ../IkiWiki.pm:524 msgid "Must specify url to wiki with --url when using --cgi" msgstr "જ્યારે --cgi ઉપયોગ કરતાં હોય ત્યારે વીકીનું યુઆરએલ સ્પષ્ટ કરવું જ પડશે" -#: ../IkiWiki.pm:576 +#: ../IkiWiki.pm:570 msgid "cannot use multiple rcs plugins" msgstr "" -#: ../IkiWiki.pm:605 +#: ../IkiWiki.pm:599 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1278 +#: ../IkiWiki.pm:1273 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "%s પર શોધાયેલ લુપ %s પર ચલાવે છે %i ઉંડાણ પર" -#: ../IkiWiki.pm:1901 +#: ../IkiWiki.pm:1932 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2044 -msgid "Sort::Naturally needed for title_natural sort" -msgstr "" +#: ../IkiWiki.pm:2009 +#, fuzzy, perl-format +msgid "invalid sort type %s" +msgstr "અજાણ્યો ગોઠવણી પ્રકાર %s" -#: ../IkiWiki.pm:2055 +#: ../IkiWiki.pm:2030 #, perl-format msgid "unknown sort type %s" msgstr "અજાણ્યો ગોઠવણી પ્રકાર %s" -#: ../IkiWiki.pm:2074 +#: ../IkiWiki.pm:2166 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "વાંચી શકાતી નથી %s: %s" @@ -1242,6 +1250,16 @@ msgstr "" msgid "What is the domain name of the web server?" msgstr "" +#, fuzzy +#~ msgid "failed to process" +#~ msgstr "ક્રિયા કરવામાં નિષ્ફળ:" + +#~ msgid "nonexistant template %s" +#~ msgstr "અસ્તિત્વમાં ન હોય તેવું ટેમ્પલેટ %s" + +#~ msgid "getctime not implemented" +#~ msgstr "getctime અમલમાં મૂકાયેલ નથી" + #, fuzzy #~ msgid "failed to read %s" #~ msgstr "%s વાંચવામાં નિષ્ફળ: %s" @@ -1295,9 +1313,6 @@ msgstr "" #~ msgstr "" #~ "REV ગોઠવેલ નથી, svn post-commit hook માંથી ચાલતું નથી, નોંધ મોકલી શકાશે નહી" -#~ msgid "%s not found" -#~ msgstr "ટેમ્પલેટ %s મળ્યું નહી" - #~ msgid "What's this?" #~ msgstr "આ શું છે?" diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index c2f4e24a9..638e724d5 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: 2010-04-03 14:18-0400\n" +"POT-Creation-Date: 2010-04-24 16:15-0400\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" @@ -55,7 +55,7 @@ msgstr "" msgid "You are banned." msgstr "" -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1291 msgid "Error" msgstr "" @@ -136,7 +136,7 @@ msgstr "" msgid "deleting bucket.." msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:231 msgid "done" msgstr "" @@ -174,7 +174,7 @@ msgstr "" msgid "attachment upload" msgstr "" -#: ../IkiWiki/Plugin/autoindex.pm:105 +#: ../IkiWiki/Plugin/autoindex.pm:117 msgid "automatic index generation" msgstr "" @@ -206,55 +206,55 @@ msgstr "" msgid "Anonymous" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 +#: ../IkiWiki/Plugin/comments.pm:342 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:345 +#: ../IkiWiki/Plugin/comments.pm:347 #, perl-format msgid "commenting on %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:363 +#: ../IkiWiki/Plugin/comments.pm:365 #, perl-format msgid "page '%s' doesn't exist, so you can't comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:370 +#: ../IkiWiki/Plugin/comments.pm:372 #, perl-format msgid "comments on page '%s' are closed" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:467 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "comment stored for moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:469 +#: ../IkiWiki/Plugin/comments.pm:471 msgid "Your comment will be posted after moderator review" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:482 +#: ../IkiWiki/Plugin/comments.pm:484 msgid "Added a comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:486 +#: ../IkiWiki/Plugin/comments.pm:488 #, perl-format msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270 +#: ../IkiWiki/Plugin/comments.pm:530 ../IkiWiki/Plugin/websetup.pm:270 msgid "you are not logged in as an admin" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:579 +#: ../IkiWiki/Plugin/comments.pm:581 msgid "Comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:618 +#: ../IkiWiki/Plugin/comments.pm:620 msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:761 +#: ../IkiWiki/Plugin/comments.pm:759 #, perl-format msgid "%i comment" msgid_plural "%i comments" @@ -264,7 +264,7 @@ msgstr[1] "" #. translators: Here "Comment" is a verb; #. translators: the user clicks on it to #. translators: post a comment. -#: ../IkiWiki/Plugin/comments.pm:771 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comment" msgstr "" @@ -294,14 +294,14 @@ msgstr "" msgid "%s is not an editable page" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:296 +#: ../IkiWiki/Plugin/editpage.pm:295 #, perl-format msgid "creating %s" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 -#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 -#: ../IkiWiki/Plugin/editpage.pm:426 +#: ../IkiWiki/Plugin/editpage.pm:313 ../IkiWiki/Plugin/editpage.pm:332 +#: ../IkiWiki/Plugin/editpage.pm:342 ../IkiWiki/Plugin/editpage.pm:386 +#: ../IkiWiki/Plugin/editpage.pm:425 #, perl-format msgid "editing %s" msgstr "" @@ -319,8 +319,9 @@ msgstr "" msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:138 -msgid "failed to process" +#: ../IkiWiki/Plugin/edittemplate.pm:125 ../IkiWiki/Plugin/inline.pm:339 +#: ../IkiWiki/Plugin/template.pm:44 +msgid "failed to process template:" msgstr "" #: ../IkiWiki/Plugin/format.pm:30 @@ -349,18 +350,18 @@ msgstr "" msgid "%s is an attachment, not a page." msgstr "" -#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 +#: ../IkiWiki/Plugin/git.pm:687 ../IkiWiki/Plugin/git.pm:705 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:698 +#: ../IkiWiki/Plugin/git.pm:727 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:702 +#: ../IkiWiki/Plugin/git.pm:731 msgid "you are not allowed to change file modes" msgstr "" @@ -442,12 +443,12 @@ msgstr "" msgid "Add a new post titled:" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:333 +#: ../IkiWiki/Plugin/inline.pm:342 #, perl-format -msgid "nonexistant template %s" +msgid "template %s not found" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:625 +#: ../IkiWiki/Plugin/inline.pm:635 msgid "RPC::XML::Client not found, not pinging" msgstr "" @@ -474,18 +475,22 @@ msgstr "" msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:162 +#: ../IkiWiki/Plugin/meta.pm:174 msgid "stylesheet not found" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:200 +#: ../IkiWiki/Plugin/meta.pm:212 msgid "redir page not found" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:214 +#: ../IkiWiki/Plugin/meta.pm:226 msgid "redir cycle is not allowed" msgstr "" +#: ../IkiWiki/Plugin/meta.pm:383 +msgid "sort=meta requires a parameter" +msgstr "" + #: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "" @@ -502,10 +507,6 @@ msgstr "" msgid "more" msgstr "" -#: ../IkiWiki/Plugin/norcs.pm:66 -msgid "getctime not implemented" -msgstr "" - #: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "" @@ -522,39 +523,39 @@ msgstr "" msgid "bad or missing template" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:229 +#: ../IkiWiki/Plugin/passwordauth.pm:231 msgid "Your user page: " msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:236 +#: ../IkiWiki/Plugin/passwordauth.pm:238 msgid "Create your user page" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:264 +#: ../IkiWiki/Plugin/passwordauth.pm:268 msgid "Account creation successful. Now you can Login." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:267 +#: ../IkiWiki/Plugin/passwordauth.pm:271 msgid "Error creating account." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:274 +#: ../IkiWiki/Plugin/passwordauth.pm:278 msgid "No email address, so cannot email password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:308 +#: ../IkiWiki/Plugin/passwordauth.pm:312 msgid "Failed to send mail" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:310 +#: ../IkiWiki/Plugin/passwordauth.pm:314 msgid "You have been mailed password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:345 +#: ../IkiWiki/Plugin/passwordauth.pm:349 msgid "incorrect password reset url" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:348 +#: ../IkiWiki/Plugin/passwordauth.pm:352 msgid "password reset denied" msgstr "" @@ -584,93 +585,93 @@ msgstr "" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:139 +#: ../IkiWiki/Plugin/po.pm:140 #, perl-format msgid "%s is not a valid language code" msgstr "" -#: ../IkiWiki/Plugin/po.pm:151 +#: ../IkiWiki/Plugin/po.pm:152 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:156 +#: ../IkiWiki/Plugin/po.pm:157 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:386 +#: ../IkiWiki/Plugin/po.pm:388 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:392 ../IkiWiki/Render.pm:761 #, perl-format msgid "building %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:428 +#: ../IkiWiki/Plugin/po.pm:430 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:452 +#: ../IkiWiki/Plugin/po.pm:454 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:472 +#: ../IkiWiki/Plugin/po.pm:474 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:871 +#: ../IkiWiki/Plugin/po.pm:873 #, perl-format msgid "POT file (%s) does not exist" msgstr "" -#: ../IkiWiki/Plugin/po.pm:885 +#: ../IkiWiki/Plugin/po.pm:887 #, perl-format msgid "failed to copy underlay PO file to %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:894 +#: ../IkiWiki/Plugin/po.pm:896 #, perl-format msgid "failed to update %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:900 +#: ../IkiWiki/Plugin/po.pm:902 #, perl-format msgid "failed to copy the POT file to %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:936 +#: ../IkiWiki/Plugin/po.pm:938 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:949 +#: ../IkiWiki/Plugin/po.pm:951 #, perl-format msgid "failed to translate %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1033 +#: ../IkiWiki/Plugin/po.pm:1035 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 -#: ../IkiWiki/Plugin/po.pm:1142 +#: ../IkiWiki/Plugin/po.pm:1091 ../IkiWiki/Plugin/po.pm:1105 +#: ../IkiWiki/Plugin/po.pm:1144 #, perl-format msgid "failed to write %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1101 +#: ../IkiWiki/Plugin/po.pm:1103 msgid "failed to translate" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1154 +#: ../IkiWiki/Plugin/po.pm:1156 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -812,44 +813,44 @@ msgstr "" msgid "no change to the file name was specified" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:69 +#: ../IkiWiki/Plugin/rename.pm:68 #, perl-format msgid "illegal name" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:74 +#: ../IkiWiki/Plugin/rename.pm:73 #, perl-format msgid "%s already exists" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:80 +#: ../IkiWiki/Plugin/rename.pm:79 #, perl-format msgid "%s already exists on disk" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:123 +#: ../IkiWiki/Plugin/rename.pm:122 #, perl-format msgid "rename %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:162 +#: ../IkiWiki/Plugin/rename.pm:161 msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:249 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:252 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:349 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:573 +#: ../IkiWiki/Plugin/rename.pm:572 #, perl-format msgid "update for rename of %s to %s" msgstr "" @@ -947,17 +948,18 @@ msgstr "" msgid "parse fail at line %d: %s" msgstr "" -#: ../IkiWiki/Plugin/template.pm:34 +#: ../IkiWiki/Plugin/tag.pm:83 +#, perl-format +msgid "creating tag page %s" +msgstr "" + +#: ../IkiWiki/Plugin/template.pm:33 msgid "missing id parameter" msgstr "" #: ../IkiWiki/Plugin/template.pm:47 #, perl-format -msgid "template %s not found" -msgstr "" - -#: ../IkiWiki/Plugin/template.pm:66 -msgid "failed to process:" +msgid "%s not found" msgstr "" #: ../IkiWiki/Plugin/teximg.pm:72 @@ -1017,54 +1019,59 @@ msgstr "" msgid "bad file name %s" msgstr "" -#: ../IkiWiki/Render.pm:153 +#: ../IkiWiki/Render.pm:162 #, perl-format msgid "scanning %s" msgstr "" -#: ../IkiWiki/Render.pm:274 +#: ../IkiWiki/Render.pm:284 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "allow this" msgstr "" -#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 +#: ../IkiWiki/Render.pm:315 #, perl-format msgid "skipping bad filename %s" msgstr "" -#: ../IkiWiki/Render.pm:308 +#: ../IkiWiki/Render.pm:330 #, perl-format msgid "%s has multiple possible source pages" msgstr "" -#: ../IkiWiki/Render.pm:413 +#: ../IkiWiki/Render.pm:372 #, perl-format -msgid "removing old page %s" +msgid "querying %s for file creation and modification times.." msgstr "" -#: ../IkiWiki/Render.pm:486 +#: ../IkiWiki/Render.pm:434 +#, perl-format +msgid "removing obsolete %s" +msgstr "" + +#: ../IkiWiki/Render.pm:507 #, perl-format msgid "building %s, which links to %s" msgstr "" -#: ../IkiWiki/Render.pm:495 +#: ../IkiWiki/Render.pm:516 #, perl-format msgid "removing %s, no longer built by %s" msgstr "" -#: ../IkiWiki/Render.pm:618 +#: ../IkiWiki/Render.pm:671 ../IkiWiki/Render.pm:777 #, perl-format msgid "building %s, which depends on %s" msgstr "" -#: ../IkiWiki/Render.pm:631 +#: ../IkiWiki/Render.pm:684 #, perl-format msgid "building %s, to update its backlinks" msgstr "" -#: ../IkiWiki/Render.pm:707 +#: ../IkiWiki/Render.pm:819 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "" @@ -1137,62 +1144,63 @@ msgstr "" msgid " ikiwiki --setup configfile" msgstr "" -#: ../ikiwiki.in:95 +#: ../ikiwiki.in:96 msgid "usage: --set var=value" msgstr "" -#: ../ikiwiki.in:102 +#: ../ikiwiki.in:103 msgid "usage: --set-yaml var=value" msgstr "" -#: ../ikiwiki.in:156 +#: ../ikiwiki.in:157 msgid "generating wrappers.." msgstr "" -#: ../ikiwiki.in:219 +#: ../ikiwiki.in:220 msgid "rebuilding wiki.." msgstr "" -#: ../ikiwiki.in:222 +#: ../ikiwiki.in:223 msgid "refreshing wiki.." msgstr "" -#: ../IkiWiki.pm:238 +#: ../IkiWiki.pm:233 msgid "Discussion" msgstr "" -#: ../IkiWiki.pm:530 +#: ../IkiWiki.pm:524 msgid "Must specify url to wiki with --url when using --cgi" msgstr "" -#: ../IkiWiki.pm:576 +#: ../IkiWiki.pm:570 msgid "cannot use multiple rcs plugins" msgstr "" -#: ../IkiWiki.pm:605 +#: ../IkiWiki.pm:599 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1278 +#: ../IkiWiki.pm:1273 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "" -#: ../IkiWiki.pm:1901 +#: ../IkiWiki.pm:1932 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2044 -msgid "Sort::Naturally needed for title_natural sort" +#: ../IkiWiki.pm:2009 +#, perl-format +msgid "invalid sort type %s" msgstr "" -#: ../IkiWiki.pm:2055 +#: ../IkiWiki.pm:2030 #, perl-format msgid "unknown sort type %s" msgstr "" -#: ../IkiWiki.pm:2074 +#: ../IkiWiki.pm:2166 #, perl-format msgid "cannot match pages: %s" msgstr "" diff --git a/po/it.po b/po/it.po index b1b3dbd55..45efc2d3f 100644 --- a/po/it.po +++ b/po/it.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Ikiwiki\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-03 14:18-0400\n" +"POT-Creation-Date: 2010-04-24 16:15-0400\n" "PO-Revision-Date: 2009-08-16 11:01+0100\n" "Last-Translator: Luca Bruno <lucab@debian.org>\n" "Language-Team: Italian TP <tp@lists.linux.it>\n" @@ -53,7 +53,7 @@ msgstr "Preferenze salvate." msgid "You are banned." msgstr "Avete ricevuto un ban." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1291 msgid "Error" msgstr "Errore" @@ -135,7 +135,7 @@ msgstr "creazione nuova pagina %s" msgid "deleting bucket.." msgstr "eliminazione contenitore..." -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:231 msgid "done" msgstr "fatto" @@ -173,7 +173,7 @@ msgstr "nome file dell'allegato non valido" msgid "attachment upload" msgstr "carica allegato" -#: ../IkiWiki/Plugin/autoindex.pm:105 +#: ../IkiWiki/Plugin/autoindex.pm:117 msgid "automatic index generation" msgstr "generazione automatica dell'indice" @@ -207,55 +207,55 @@ msgstr "i commenti devono avere un contenuto" msgid "Anonymous" msgstr "Anonimo" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 +#: ../IkiWiki/Plugin/comments.pm:342 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "nome pagina non valido" -#: ../IkiWiki/Plugin/comments.pm:345 +#: ../IkiWiki/Plugin/comments.pm:347 #, perl-format msgid "commenting on %s" msgstr "commento su %s" -#: ../IkiWiki/Plugin/comments.pm:363 +#: ../IkiWiki/Plugin/comments.pm:365 #, perl-format msgid "page '%s' doesn't exist, so you can't comment" msgstr "la pagina «%s» non esiste, impossibile commentarla" -#: ../IkiWiki/Plugin/comments.pm:370 +#: ../IkiWiki/Plugin/comments.pm:372 #, perl-format msgid "comments on page '%s' are closed" msgstr "i commenti per la pagina «%s» sono chiusi" -#: ../IkiWiki/Plugin/comments.pm:467 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "comment stored for moderation" msgstr "commento trattenuto per moderazione" -#: ../IkiWiki/Plugin/comments.pm:469 +#: ../IkiWiki/Plugin/comments.pm:471 msgid "Your comment will be posted after moderator review" msgstr "Il commento sarà pubblicato dopo la verifica del moderatore" -#: ../IkiWiki/Plugin/comments.pm:482 +#: ../IkiWiki/Plugin/comments.pm:484 msgid "Added a comment" msgstr "Aggiunto commento" -#: ../IkiWiki/Plugin/comments.pm:486 +#: ../IkiWiki/Plugin/comments.pm:488 #, perl-format msgid "Added a comment: %s" msgstr "Aggiunto commento: %s" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270 +#: ../IkiWiki/Plugin/comments.pm:530 ../IkiWiki/Plugin/websetup.pm:270 msgid "you are not logged in as an admin" msgstr "non siete autenticati come amministratore" -#: ../IkiWiki/Plugin/comments.pm:579 +#: ../IkiWiki/Plugin/comments.pm:581 msgid "Comment moderation" msgstr "Moderazione commenti" -#: ../IkiWiki/Plugin/comments.pm:618 +#: ../IkiWiki/Plugin/comments.pm:620 msgid "comment moderation" msgstr "moderazione commento" -#: ../IkiWiki/Plugin/comments.pm:761 +#: ../IkiWiki/Plugin/comments.pm:759 #, fuzzy, perl-format msgid "%i comment" msgid_plural "%i comments" @@ -265,7 +265,7 @@ msgstr[1] "Commenti" #. translators: Here "Comment" is a verb; #. translators: the user clicks on it to #. translators: post a comment. -#: ../IkiWiki/Plugin/comments.pm:771 +#: ../IkiWiki/Plugin/comments.pm:769 #, fuzzy msgid "Comment" msgstr "Commenti" @@ -296,14 +296,14 @@ msgstr "rimozione vecchia anteprima %s" msgid "%s is not an editable page" msgstr "%s non è una pagina modificabile" -#: ../IkiWiki/Plugin/editpage.pm:296 +#: ../IkiWiki/Plugin/editpage.pm:295 #, perl-format msgid "creating %s" msgstr "creazione %s" -#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 -#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 -#: ../IkiWiki/Plugin/editpage.pm:426 +#: ../IkiWiki/Plugin/editpage.pm:313 ../IkiWiki/Plugin/editpage.pm:332 +#: ../IkiWiki/Plugin/editpage.pm:342 ../IkiWiki/Plugin/editpage.pm:386 +#: ../IkiWiki/Plugin/editpage.pm:425 #, perl-format msgid "editing %s" msgstr "modifica %s" @@ -321,9 +321,11 @@ msgstr "corrispondenza non specificata" msgid "edittemplate %s registered for %s" msgstr "edittemplate %s registrato per %s" -#: ../IkiWiki/Plugin/edittemplate.pm:138 -msgid "failed to process" -msgstr "errore nell'elaborazione" +#: ../IkiWiki/Plugin/edittemplate.pm:125 ../IkiWiki/Plugin/inline.pm:339 +#: ../IkiWiki/Plugin/template.pm:44 +#, fuzzy +msgid "failed to process template:" +msgstr "errore nell'elaborazione:" #: ../IkiWiki/Plugin/format.pm:30 msgid "must specify format and text" @@ -351,18 +353,18 @@ msgstr "non è una pagina" msgid "%s is an attachment, not a page." msgstr "%s è un allegato, non una pagina." -#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 +#: ../IkiWiki/Plugin/git.pm:687 ../IkiWiki/Plugin/git.pm:705 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "non è permesso modificare %s" -#: ../IkiWiki/Plugin/git.pm:698 +#: ../IkiWiki/Plugin/git.pm:727 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "non è permesso lavorare su un file in modalità %s" -#: ../IkiWiki/Plugin/git.pm:702 +#: ../IkiWiki/Plugin/git.pm:731 msgid "you are not allowed to change file modes" msgstr "non è permesso cambiare la modalità del file" @@ -447,12 +449,12 @@ msgstr "i parametri %s e %s non possono essere usati insieme" msgid "Add a new post titled:" msgstr "Aggiungere un nuovo articolo dal titolo:" -#: ../IkiWiki/Plugin/inline.pm:333 +#: ../IkiWiki/Plugin/inline.pm:342 #, perl-format -msgid "nonexistant template %s" -msgstr "modello %s non esistente" +msgid "template %s not found" +msgstr "modello %s non trovato" -#: ../IkiWiki/Plugin/inline.pm:625 +#: ../IkiWiki/Plugin/inline.pm:635 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client non trovato, impossibile inviare ping" @@ -481,18 +483,23 @@ msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" "impossibile caricare il modulo perl Markdown.pm (%s) o /usr/bin/markdown (%s)" -#: ../IkiWiki/Plugin/meta.pm:162 +#: ../IkiWiki/Plugin/meta.pm:174 msgid "stylesheet not found" msgstr "foglio di stile non trovato" -#: ../IkiWiki/Plugin/meta.pm:200 +#: ../IkiWiki/Plugin/meta.pm:212 msgid "redir page not found" msgstr "pagina di reindirizzamento non trovata" -#: ../IkiWiki/Plugin/meta.pm:214 +#: ../IkiWiki/Plugin/meta.pm:226 msgid "redir cycle is not allowed" msgstr "ciclo di reindirizzamento non ammesso" +#: ../IkiWiki/Plugin/meta.pm:383 +#, fuzzy +msgid "sort=meta requires a parameter" +msgstr "sono richiesti i parametri \"to\" e \"from\"" + #: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Mirror" @@ -510,10 +517,6 @@ msgstr "moderazione commento" msgid "more" msgstr "altro" -#: ../IkiWiki/Plugin/norcs.pm:66 -msgid "getctime not implemented" -msgstr "getctime non implementata" - #: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "Accedi tramite" @@ -530,42 +533,42 @@ msgstr "Tutte le pagine hanno collegamenti in entrata da altre pagine." msgid "bad or missing template" msgstr "modello errato o mancante" -#: ../IkiWiki/Plugin/passwordauth.pm:229 +#: ../IkiWiki/Plugin/passwordauth.pm:231 msgid "Your user page: " msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:236 +#: ../IkiWiki/Plugin/passwordauth.pm:238 msgid "Create your user page" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:264 +#: ../IkiWiki/Plugin/passwordauth.pm:268 msgid "Account creation successful. Now you can Login." msgstr "Account creato con successo. È ora possibile effettuare l'accesso." -#: ../IkiWiki/Plugin/passwordauth.pm:267 +#: ../IkiWiki/Plugin/passwordauth.pm:271 msgid "Error creating account." msgstr "Errore nella creazione dell'account." -#: ../IkiWiki/Plugin/passwordauth.pm:274 +#: ../IkiWiki/Plugin/passwordauth.pm:278 msgid "No email address, so cannot email password reset instructions." msgstr "" "Nessun indirizzo email, impossibile inviare per email le istruzioni per " "reimpostare la password." -#: ../IkiWiki/Plugin/passwordauth.pm:308 +#: ../IkiWiki/Plugin/passwordauth.pm:312 msgid "Failed to send mail" msgstr "Impossibile spedire il messaggio" -#: ../IkiWiki/Plugin/passwordauth.pm:310 +#: ../IkiWiki/Plugin/passwordauth.pm:314 msgid "You have been mailed password reset instructions." msgstr "" "Il messaggio con le istruzioni per reimpostare la password è stato inviato." -#: ../IkiWiki/Plugin/passwordauth.pm:345 +#: ../IkiWiki/Plugin/passwordauth.pm:349 msgid "incorrect password reset url" msgstr "url per il reset della password non corretto" -#: ../IkiWiki/Plugin/passwordauth.pm:348 +#: ../IkiWiki/Plugin/passwordauth.pm:352 msgid "password reset denied" msgstr "reset della password non permesso" @@ -597,19 +600,19 @@ msgstr "" "attenzione: è presente un vecchio po4a. Si raccomanda di aggiornare almeno " "alla versione 0.35." -#: ../IkiWiki/Plugin/po.pm:139 +#: ../IkiWiki/Plugin/po.pm:140 #, perl-format msgid "%s is not a valid language code" msgstr "%s non è una codifica di lingua valida" -#: ../IkiWiki/Plugin/po.pm:151 +#: ../IkiWiki/Plugin/po.pm:152 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" "%s non è un valore per po_link_to valido, verrà utilizzato po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:156 +#: ../IkiWiki/Plugin/po.pm:157 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" @@ -617,21 +620,21 @@ msgstr "" "po_link_to=negotiated richiede che venga abilitato usedirs, verrà utilizzato " "po_link_to=default" -#: ../IkiWiki/Plugin/po.pm:386 +#: ../IkiWiki/Plugin/po.pm:388 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "rigenerazione di tutte le pagine per sistemare i meta-titoli" -#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:392 ../IkiWiki/Render.pm:761 #, perl-format msgid "building %s" msgstr "compilazione di %s" -#: ../IkiWiki/Plugin/po.pm:428 +#: ../IkiWiki/Plugin/po.pm:430 msgid "updated PO files" msgstr "file PO aggiornati" -#: ../IkiWiki/Plugin/po.pm:452 +#: ../IkiWiki/Plugin/po.pm:454 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." @@ -639,7 +642,7 @@ msgstr "" "Impossibile eliminare una traduzione. Tuttavia, se la pagina principale è " "stata eliminata anche le traduzioni lo saranno." -#: ../IkiWiki/Plugin/po.pm:472 +#: ../IkiWiki/Plugin/po.pm:474 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." @@ -647,50 +650,50 @@ msgstr "" "Impossibile rinominare una traduzione. Tuttavia, se la pagina principale è " "stata rinominata anche le traduzioni lo saranno." -#: ../IkiWiki/Plugin/po.pm:871 +#: ../IkiWiki/Plugin/po.pm:873 #, perl-format msgid "POT file (%s) does not exist" msgstr "Il file POT (%s) non esiste" -#: ../IkiWiki/Plugin/po.pm:885 +#: ../IkiWiki/Plugin/po.pm:887 #, perl-format msgid "failed to copy underlay PO file to %s" msgstr "impossibile copiare il file PO di underlay in %s" -#: ../IkiWiki/Plugin/po.pm:894 +#: ../IkiWiki/Plugin/po.pm:896 #, perl-format msgid "failed to update %s" msgstr "impossibile aggiornare %s" -#: ../IkiWiki/Plugin/po.pm:900 +#: ../IkiWiki/Plugin/po.pm:902 #, perl-format msgid "failed to copy the POT file to %s" msgstr "impossibile copiare il file POT in %s" -#: ../IkiWiki/Plugin/po.pm:936 +#: ../IkiWiki/Plugin/po.pm:938 msgid "N/A" msgstr "N/D" -#: ../IkiWiki/Plugin/po.pm:949 +#: ../IkiWiki/Plugin/po.pm:951 #, perl-format msgid "failed to translate %s" msgstr "impossibile tradurre %s" -#: ../IkiWiki/Plugin/po.pm:1033 +#: ../IkiWiki/Plugin/po.pm:1035 msgid "removed obsolete PO files" msgstr "file PO obsoleti rimossi" -#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 -#: ../IkiWiki/Plugin/po.pm:1142 +#: ../IkiWiki/Plugin/po.pm:1091 ../IkiWiki/Plugin/po.pm:1105 +#: ../IkiWiki/Plugin/po.pm:1144 #, perl-format msgid "failed to write %s" msgstr "impossibile scrivere %s" -#: ../IkiWiki/Plugin/po.pm:1101 +#: ../IkiWiki/Plugin/po.pm:1103 msgid "failed to translate" msgstr "impossibile tradurre" -#: ../IkiWiki/Plugin/po.pm:1154 +#: ../IkiWiki/Plugin/po.pm:1156 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" "dati gettext non validi, tornare alle pagina precedente per continuare le " @@ -836,44 +839,44 @@ msgstr "%s non è in src, quindi non può essere rinominato" msgid "no change to the file name was specified" msgstr "non è stata specificata nessuna modifica al nome del file" -#: ../IkiWiki/Plugin/rename.pm:69 +#: ../IkiWiki/Plugin/rename.pm:68 #, perl-format msgid "illegal name" msgstr "nome non valido" -#: ../IkiWiki/Plugin/rename.pm:74 +#: ../IkiWiki/Plugin/rename.pm:73 #, perl-format msgid "%s already exists" msgstr "%s esiste già" -#: ../IkiWiki/Plugin/rename.pm:80 +#: ../IkiWiki/Plugin/rename.pm:79 #, perl-format msgid "%s already exists on disk" msgstr "%s già presente su disco" -#: ../IkiWiki/Plugin/rename.pm:123 +#: ../IkiWiki/Plugin/rename.pm:122 #, perl-format msgid "rename %s" msgstr "rinomina di %s" -#: ../IkiWiki/Plugin/rename.pm:162 +#: ../IkiWiki/Plugin/rename.pm:161 msgid "Also rename SubPages and attachments" msgstr "Rinomina anche SottoPagine e allegati" -#: ../IkiWiki/Plugin/rename.pm:249 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "Si può rinominare un solo allegato alla volta." -#: ../IkiWiki/Plugin/rename.pm:252 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "Selezionare l'allegato da rinominare." -#: ../IkiWiki/Plugin/rename.pm:349 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "rinomina %s in %s" -#: ../IkiWiki/Plugin/rename.pm:573 +#: ../IkiWiki/Plugin/rename.pm:572 #, perl-format msgid "update for rename of %s to %s" msgstr "aggiornamento per rinomina di %s in %s" @@ -971,18 +974,19 @@ msgstr "Scaricamento diretto dei dati" msgid "parse fail at line %d: %s" msgstr "errore di interpretazione alla riga %d: %s" -#: ../IkiWiki/Plugin/template.pm:34 +#: ../IkiWiki/Plugin/tag.pm:83 +#, fuzzy, perl-format +msgid "creating tag page %s" +msgstr "creazione nuova pagina %s" + +#: ../IkiWiki/Plugin/template.pm:33 msgid "missing id parameter" msgstr "parametro id mancante" #: ../IkiWiki/Plugin/template.pm:47 -#, perl-format -msgid "template %s not found" -msgstr "modello %s non trovato" - -#: ../IkiWiki/Plugin/template.pm:66 -msgid "failed to process:" -msgstr "errore nell'elaborazione:" +#, fuzzy, perl-format +msgid "%s not found" +msgstr "notiziario non trovato" #: ../IkiWiki/Plugin/teximg.pm:72 msgid "missing tex code" @@ -1045,12 +1049,12 @@ msgstr "impossibile determinare l'id del committer non fidato %s" msgid "bad file name %s" msgstr "nome file %s scorretto" -#: ../IkiWiki/Render.pm:153 +#: ../IkiWiki/Render.pm:162 #, perl-format msgid "scanning %s" msgstr "scansione %s" -#: ../IkiWiki/Render.pm:274 +#: ../IkiWiki/Render.pm:284 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " @@ -1059,42 +1063,47 @@ msgstr "" "collegamento simbolico trovato nel percorso srcdir (%s) -- impostare " "allow_symlinks_before_srcdir per abilitare questa configurazione" -#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 +#: ../IkiWiki/Render.pm:315 #, perl-format msgid "skipping bad filename %s" msgstr "ignorato il file dal nome scorretto %s" -#: ../IkiWiki/Render.pm:308 +#: ../IkiWiki/Render.pm:330 #, perl-format msgid "%s has multiple possible source pages" msgstr "%s ha diverse pagine sorgenti possibili" -#: ../IkiWiki/Render.pm:413 +#: ../IkiWiki/Render.pm:372 #, perl-format -msgid "removing old page %s" +msgid "querying %s for file creation and modification times.." +msgstr "" + +#: ../IkiWiki/Render.pm:434 +#, fuzzy, perl-format +msgid "removing obsolete %s" msgstr "rimozione della vecchia pagina %s" -#: ../IkiWiki/Render.pm:486 +#: ../IkiWiki/Render.pm:507 #, perl-format msgid "building %s, which links to %s" msgstr "compilazione di %s, che è collegato a %s" -#: ../IkiWiki/Render.pm:495 +#: ../IkiWiki/Render.pm:516 #, perl-format msgid "removing %s, no longer built by %s" msgstr "rimozione di %s, non più richiesto da %s" -#: ../IkiWiki/Render.pm:618 +#: ../IkiWiki/Render.pm:671 ../IkiWiki/Render.pm:777 #, perl-format msgid "building %s, which depends on %s" msgstr "compilazione di %s, che dipende da %s" -#: ../IkiWiki/Render.pm:631 +#: ../IkiWiki/Render.pm:684 #, perl-format msgid "building %s, to update its backlinks" msgstr "compilazione di %s, per aggiornare i collegamenti ai precedenti" -#: ../IkiWiki/Render.pm:707 +#: ../IkiWiki/Render.pm:819 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: impossibile compilare %s" @@ -1168,63 +1177,64 @@ msgstr "utilizzo: ikiwiki [opzioni] sorgente destinazione" msgid " ikiwiki --setup configfile" msgstr " ikiwiki --setup configfile" -#: ../ikiwiki.in:95 +#: ../ikiwiki.in:96 msgid "usage: --set var=value" msgstr "utilizzo: --set var=valore" -#: ../ikiwiki.in:102 +#: ../ikiwiki.in:103 #, fuzzy msgid "usage: --set-yaml var=value" msgstr "utilizzo: --set var=valore" -#: ../ikiwiki.in:156 +#: ../ikiwiki.in:157 msgid "generating wrappers.." msgstr "generazione contenitori..." -#: ../ikiwiki.in:219 +#: ../ikiwiki.in:220 msgid "rebuilding wiki.." msgstr "ricostruzione wiki..." -#: ../ikiwiki.in:222 +#: ../ikiwiki.in:223 msgid "refreshing wiki.." msgstr "aggiornamento wiki..." -#: ../IkiWiki.pm:238 +#: ../IkiWiki.pm:233 msgid "Discussion" msgstr "Discussione" -#: ../IkiWiki.pm:530 +#: ../IkiWiki.pm:524 msgid "Must specify url to wiki with --url when using --cgi" msgstr "Occorre specificare l'url del wiki tramite --url quando si usa --cgi" -#: ../IkiWiki.pm:576 +#: ../IkiWiki.pm:570 msgid "cannot use multiple rcs plugins" msgstr "impossibile usare più plugin rcs" -#: ../IkiWiki.pm:605 +#: ../IkiWiki.pm:599 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "impossibile caricare il plugin esterno per il plugin %s: %s" -#: ../IkiWiki.pm:1278 +#: ../IkiWiki.pm:1273 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "ciclo del preprocessore individuato su %s alla profondità %i" -#: ../IkiWiki.pm:1901 +#: ../IkiWiki.pm:1932 msgid "yes" msgstr "sì" -#: ../IkiWiki.pm:2044 -msgid "Sort::Naturally needed for title_natural sort" -msgstr "Sort::Naturally è richiesto per l'ordinamento title_natural" +#: ../IkiWiki.pm:2009 +#, fuzzy, perl-format +msgid "invalid sort type %s" +msgstr "ordinamento %s sconosciuto" -#: ../IkiWiki.pm:2055 +#: ../IkiWiki.pm:2030 #, perl-format msgid "unknown sort type %s" msgstr "ordinamento %s sconosciuto" -#: ../IkiWiki.pm:2074 +#: ../IkiWiki.pm:2166 #, perl-format msgid "cannot match pages: %s" msgstr "impossibile trovare pagine corrispondenti: %s" @@ -1249,6 +1259,18 @@ msgstr "Quale utente (openid o del wiki) sarà l'amministratore?" msgid "What is the domain name of the web server?" msgstr "Qual è il nome del dominio del server web?" +#~ msgid "failed to process" +#~ msgstr "errore nell'elaborazione" + +#~ msgid "nonexistant template %s" +#~ msgstr "modello %s non esistente" + +#~ msgid "getctime not implemented" +#~ msgstr "getctime non implementata" + +#~ msgid "Sort::Naturally needed for title_natural sort" +#~ msgstr "Sort::Naturally è richiesto per l'ordinamento title_natural" + #~ msgid "failed to read %s" #~ msgstr "impossibile leggere %s" diff --git a/po/pl.po b/po/pl.po index 9fb3cacc0..837c5acd2 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: 2010-04-03 14:18-0400\n" +"POT-Creation-Date: 2010-04-24 16:15-0400\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" @@ -57,7 +57,7 @@ msgstr "Preferencje zapisane." msgid "You are banned." msgstr "Twój dostęp został zabroniony przez administratora." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1291 msgid "Error" msgstr "Błąd" @@ -139,7 +139,7 @@ msgstr "tworzenie nowej strony %s" msgid "deleting bucket.." msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:231 msgid "done" msgstr "gotowe" @@ -180,7 +180,7 @@ msgstr "" msgid "attachment upload" msgstr "" -#: ../IkiWiki/Plugin/autoindex.pm:105 +#: ../IkiWiki/Plugin/autoindex.pm:117 msgid "automatic index generation" msgstr "" @@ -212,55 +212,55 @@ msgstr "" msgid "Anonymous" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 +#: ../IkiWiki/Plugin/comments.pm:342 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:345 +#: ../IkiWiki/Plugin/comments.pm:347 #, fuzzy, perl-format msgid "commenting on %s" msgstr "tworzenie %s" -#: ../IkiWiki/Plugin/comments.pm:363 +#: ../IkiWiki/Plugin/comments.pm:365 #, perl-format msgid "page '%s' doesn't exist, so you can't comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:370 +#: ../IkiWiki/Plugin/comments.pm:372 #, perl-format msgid "comments on page '%s' are closed" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:467 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "comment stored for moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:469 +#: ../IkiWiki/Plugin/comments.pm:471 msgid "Your comment will be posted after moderator review" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:482 +#: ../IkiWiki/Plugin/comments.pm:484 msgid "Added a comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:486 +#: ../IkiWiki/Plugin/comments.pm:488 #, perl-format msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270 +#: ../IkiWiki/Plugin/comments.pm:530 ../IkiWiki/Plugin/websetup.pm:270 msgid "you are not logged in as an admin" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:579 +#: ../IkiWiki/Plugin/comments.pm:581 msgid "Comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:618 +#: ../IkiWiki/Plugin/comments.pm:620 msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:761 +#: ../IkiWiki/Plugin/comments.pm:759 #, perl-format msgid "%i comment" msgid_plural "%i comments" @@ -270,7 +270,7 @@ msgstr[1] "" #. translators: Here "Comment" is a verb; #. translators: the user clicks on it to #. translators: post a comment. -#: ../IkiWiki/Plugin/comments.pm:771 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comment" msgstr "" @@ -300,14 +300,14 @@ msgstr "usuwanie starej strony %s" msgid "%s is not an editable page" msgstr "Strona %s nie może być edytowana" -#: ../IkiWiki/Plugin/editpage.pm:296 +#: ../IkiWiki/Plugin/editpage.pm:295 #, perl-format msgid "creating %s" msgstr "tworzenie %s" -#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 -#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 -#: ../IkiWiki/Plugin/editpage.pm:426 +#: ../IkiWiki/Plugin/editpage.pm:313 ../IkiWiki/Plugin/editpage.pm:332 +#: ../IkiWiki/Plugin/editpage.pm:342 ../IkiWiki/Plugin/editpage.pm:386 +#: ../IkiWiki/Plugin/editpage.pm:425 #, perl-format msgid "editing %s" msgstr "edycja %s" @@ -327,9 +327,10 @@ msgstr "nieokreślona nazwa pliku osłony" msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:138 +#: ../IkiWiki/Plugin/edittemplate.pm:125 ../IkiWiki/Plugin/inline.pm:339 +#: ../IkiWiki/Plugin/template.pm:44 #, fuzzy -msgid "failed to process" +msgid "failed to process template:" msgstr "awaria w trakcie przetwarzania:" #: ../IkiWiki/Plugin/format.pm:30 @@ -360,18 +361,18 @@ msgstr "awaria w trakcie odczytu %s: %s" msgid "%s is an attachment, not a page." msgstr "Strona %s nie może być edytowana" -#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 +#: ../IkiWiki/Plugin/git.pm:687 ../IkiWiki/Plugin/git.pm:705 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:698 +#: ../IkiWiki/Plugin/git.pm:727 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:702 +#: ../IkiWiki/Plugin/git.pm:731 msgid "you are not allowed to change file modes" msgstr "" @@ -460,12 +461,12 @@ msgstr "" msgid "Add a new post titled:" msgstr "Tytuł nowego wpisu" -#: ../IkiWiki/Plugin/inline.pm:333 +#: ../IkiWiki/Plugin/inline.pm:342 #, perl-format -msgid "nonexistant template %s" -msgstr "brakujący szablon %s" +msgid "template %s not found" +msgstr "nieznaleziony szablon %s" -#: ../IkiWiki/Plugin/inline.pm:625 +#: ../IkiWiki/Plugin/inline.pm:635 msgid "RPC::XML::Client not found, not pinging" msgstr "Nieznaleziony moduł RPC::XML::Client, brak możliwości pingowania" @@ -497,21 +498,25 @@ msgstr "" "Awaria w trakcie ładowania perlowego modułu Markdown.pm (%s) lub " "uruchamiania programu /usr/bin/markdown (%s)" -#: ../IkiWiki/Plugin/meta.pm:162 +#: ../IkiWiki/Plugin/meta.pm:174 #, fuzzy msgid "stylesheet not found" msgstr "nieznaleziony szablon ze stylami CSS" -#: ../IkiWiki/Plugin/meta.pm:200 +#: ../IkiWiki/Plugin/meta.pm:212 #, fuzzy msgid "redir page not found" msgstr "nieznaleziony kanał RSS" -#: ../IkiWiki/Plugin/meta.pm:214 +#: ../IkiWiki/Plugin/meta.pm:226 #, fuzzy msgid "redir cycle is not allowed" msgstr "nieznaleziony kanał RSS" +#: ../IkiWiki/Plugin/meta.pm:383 +msgid "sort=meta requires a parameter" +msgstr "" + #: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Kopie lustrzane" @@ -528,10 +533,6 @@ msgstr "" msgid "more" msgstr "więcej" -#: ../IkiWiki/Plugin/norcs.pm:66 -msgid "getctime not implemented" -msgstr "niedostępna funkcja getctime" - #: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "" @@ -549,39 +550,39 @@ msgstr "Dla każdej strony istnieje odnośnik z innej strony" msgid "bad or missing template" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:229 +#: ../IkiWiki/Plugin/passwordauth.pm:231 msgid "Your user page: " msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:236 +#: ../IkiWiki/Plugin/passwordauth.pm:238 msgid "Create your user page" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:264 +#: ../IkiWiki/Plugin/passwordauth.pm:268 msgid "Account creation successful. Now you can Login." msgstr "Konto założone pomyślnie. Teraz można zalogować się." -#: ../IkiWiki/Plugin/passwordauth.pm:267 +#: ../IkiWiki/Plugin/passwordauth.pm:271 msgid "Error creating account." msgstr "Błąd w trakcie zakładania konta." -#: ../IkiWiki/Plugin/passwordauth.pm:274 +#: ../IkiWiki/Plugin/passwordauth.pm:278 msgid "No email address, so cannot email password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:308 +#: ../IkiWiki/Plugin/passwordauth.pm:312 msgid "Failed to send mail" msgstr "Awaria w trakcie wysyłania wiadomości" -#: ../IkiWiki/Plugin/passwordauth.pm:310 +#: ../IkiWiki/Plugin/passwordauth.pm:314 msgid "You have been mailed password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:345 +#: ../IkiWiki/Plugin/passwordauth.pm:349 msgid "incorrect password reset url" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:348 +#: ../IkiWiki/Plugin/passwordauth.pm:352 msgid "password reset denied" msgstr "" @@ -612,94 +613,94 @@ msgstr "Nieznaleziony moduł RPC::XML::Client, brak możliwości pingowania" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:139 +#: ../IkiWiki/Plugin/po.pm:140 #, fuzzy, perl-format msgid "%s is not a valid language code" msgstr "Strona %s nie może być edytowana" -#: ../IkiWiki/Plugin/po.pm:151 +#: ../IkiWiki/Plugin/po.pm:152 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:156 +#: ../IkiWiki/Plugin/po.pm:157 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:386 +#: ../IkiWiki/Plugin/po.pm:388 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:392 ../IkiWiki/Render.pm:761 #, fuzzy, perl-format msgid "building %s" msgstr "edycja %s" -#: ../IkiWiki/Plugin/po.pm:428 +#: ../IkiWiki/Plugin/po.pm:430 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:452 +#: ../IkiWiki/Plugin/po.pm:454 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:472 +#: ../IkiWiki/Plugin/po.pm:474 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:871 +#: ../IkiWiki/Plugin/po.pm:873 #, perl-format msgid "POT file (%s) does not exist" msgstr "" -#: ../IkiWiki/Plugin/po.pm:885 +#: ../IkiWiki/Plugin/po.pm:887 #, fuzzy, perl-format msgid "failed to copy underlay PO file to %s" msgstr "awaria w trakcie kompilowania %s" -#: ../IkiWiki/Plugin/po.pm:894 +#: ../IkiWiki/Plugin/po.pm:896 #, fuzzy, perl-format msgid "failed to update %s" msgstr "awaria w trakcie kompilowania %s" -#: ../IkiWiki/Plugin/po.pm:900 +#: ../IkiWiki/Plugin/po.pm:902 #, fuzzy, perl-format msgid "failed to copy the POT file to %s" msgstr "awaria w trakcie kompilowania %s" -#: ../IkiWiki/Plugin/po.pm:936 +#: ../IkiWiki/Plugin/po.pm:938 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:949 +#: ../IkiWiki/Plugin/po.pm:951 #, fuzzy, perl-format msgid "failed to translate %s" msgstr "awaria w trakcie zmiany rozmiaru: %s" -#: ../IkiWiki/Plugin/po.pm:1033 +#: ../IkiWiki/Plugin/po.pm:1035 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 -#: ../IkiWiki/Plugin/po.pm:1142 +#: ../IkiWiki/Plugin/po.pm:1091 ../IkiWiki/Plugin/po.pm:1105 +#: ../IkiWiki/Plugin/po.pm:1144 #, fuzzy, perl-format msgid "failed to write %s" msgstr "awaria w trakcie zapisu %s: %s" -#: ../IkiWiki/Plugin/po.pm:1101 +#: ../IkiWiki/Plugin/po.pm:1103 #, fuzzy msgid "failed to translate" msgstr "awaria w trakcie uruchamiania dot" -#: ../IkiWiki/Plugin/po.pm:1154 +#: ../IkiWiki/Plugin/po.pm:1156 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -846,44 +847,44 @@ msgstr "" msgid "no change to the file name was specified" msgstr "nieokreślona nazwa pliku osłony" -#: ../IkiWiki/Plugin/rename.pm:69 +#: ../IkiWiki/Plugin/rename.pm:68 #, perl-format msgid "illegal name" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:74 +#: ../IkiWiki/Plugin/rename.pm:73 #, perl-format msgid "%s already exists" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:80 +#: ../IkiWiki/Plugin/rename.pm:79 #, perl-format msgid "%s already exists on disk" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:123 +#: ../IkiWiki/Plugin/rename.pm:122 #, fuzzy, perl-format msgid "rename %s" msgstr "renderowanie %s" -#: ../IkiWiki/Plugin/rename.pm:162 +#: ../IkiWiki/Plugin/rename.pm:161 msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:249 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:252 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:349 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:573 +#: ../IkiWiki/Plugin/rename.pm:572 #, fuzzy, perl-format msgid "update for rename of %s to %s" msgstr "aktualizacja stron wiki %s: %s przez użytkownika %s" @@ -990,20 +991,20 @@ msgstr "Bezpośrednie pobieranie danych" msgid "parse fail at line %d: %s" msgstr "awaria w trakcie przetwarzania linii %d: %s" -#: ../IkiWiki/Plugin/template.pm:34 +#: ../IkiWiki/Plugin/tag.pm:83 +#, fuzzy, perl-format +msgid "creating tag page %s" +msgstr "tworzenie nowej strony %s" + +#: ../IkiWiki/Plugin/template.pm:33 #, fuzzy msgid "missing id parameter" msgstr "brakujący parametr id" #: ../IkiWiki/Plugin/template.pm:47 -#, perl-format -msgid "template %s not found" -msgstr "nieznaleziony szablon %s" - -#: ../IkiWiki/Plugin/template.pm:66 -#, fuzzy -msgid "failed to process:" -msgstr "awaria w trakcie przetwarzania:" +#, fuzzy, perl-format +msgid "%s not found" +msgstr "nie znaleziono %s" #: ../IkiWiki/Plugin/teximg.pm:72 #, fuzzy @@ -1064,54 +1065,59 @@ msgstr "" msgid "bad file name %s" msgstr "pomijanie nieprawidłowej nazwy pliku %s" -#: ../IkiWiki/Render.pm:153 +#: ../IkiWiki/Render.pm:162 #, perl-format msgid "scanning %s" msgstr "skanowanie %s" -#: ../IkiWiki/Render.pm:274 +#: ../IkiWiki/Render.pm:284 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "allow this" msgstr "" -#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 +#: ../IkiWiki/Render.pm:315 #, perl-format msgid "skipping bad filename %s" msgstr "pomijanie nieprawidłowej nazwy pliku %s" -#: ../IkiWiki/Render.pm:308 +#: ../IkiWiki/Render.pm:330 #, perl-format msgid "%s has multiple possible source pages" msgstr "" -#: ../IkiWiki/Render.pm:413 +#: ../IkiWiki/Render.pm:372 #, perl-format -msgid "removing old page %s" +msgid "querying %s for file creation and modification times.." +msgstr "" + +#: ../IkiWiki/Render.pm:434 +#, fuzzy, perl-format +msgid "removing obsolete %s" msgstr "usuwanie starej strony %s" -#: ../IkiWiki/Render.pm:486 +#: ../IkiWiki/Render.pm:507 #, fuzzy, perl-format msgid "building %s, which links to %s" msgstr "renderowanie %s z odnośnikiem do %s" -#: ../IkiWiki/Render.pm:495 +#: ../IkiWiki/Render.pm:516 #, fuzzy, perl-format msgid "removing %s, no longer built by %s" msgstr "usuwanie %s nie tworzonego już przez %s" -#: ../IkiWiki/Render.pm:618 +#: ../IkiWiki/Render.pm:671 ../IkiWiki/Render.pm:777 #, fuzzy, perl-format msgid "building %s, which depends on %s" msgstr "renderowanie %s zależącego od %s" -#: ../IkiWiki/Render.pm:631 +#: ../IkiWiki/Render.pm:684 #, fuzzy, perl-format msgid "building %s, to update its backlinks" msgstr "renderowanie %s w celu aktualizacji powrotnych odnośników" -#: ../IkiWiki/Render.pm:707 +#: ../IkiWiki/Render.pm:819 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: awaria w trakcie tworzenia %s" @@ -1184,64 +1190,65 @@ msgstr "użycie: ikiwiki [parametry] źródło cel" msgid " ikiwiki --setup configfile" msgstr "" -#: ../ikiwiki.in:95 +#: ../ikiwiki.in:96 msgid "usage: --set var=value" msgstr "" -#: ../ikiwiki.in:102 +#: ../ikiwiki.in:103 msgid "usage: --set-yaml var=value" msgstr "" -#: ../ikiwiki.in:156 +#: ../ikiwiki.in:157 msgid "generating wrappers.." msgstr "tworzenie osłon..." -#: ../ikiwiki.in:219 +#: ../ikiwiki.in:220 msgid "rebuilding wiki.." msgstr "przebudowywanie wiki..." -#: ../ikiwiki.in:222 +#: ../ikiwiki.in:223 msgid "refreshing wiki.." msgstr "odświeżanie wiki..." -#: ../IkiWiki.pm:238 +#: ../IkiWiki.pm:233 msgid "Discussion" msgstr "Dyskusja" -#: ../IkiWiki.pm:530 +#: ../IkiWiki.pm:524 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:576 +#: ../IkiWiki.pm:570 msgid "cannot use multiple rcs plugins" msgstr "" -#: ../IkiWiki.pm:605 +#: ../IkiWiki.pm:599 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1278 +#: ../IkiWiki.pm:1273 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "polecenie preprocesora %s wykryte w %s na głębokości %i" -#: ../IkiWiki.pm:1901 +#: ../IkiWiki.pm:1932 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2044 -msgid "Sort::Naturally needed for title_natural sort" -msgstr "" +#: ../IkiWiki.pm:2009 +#, fuzzy, perl-format +msgid "invalid sort type %s" +msgstr "nieznany sposób sortowania %s" -#: ../IkiWiki.pm:2055 +#: ../IkiWiki.pm:2030 #, perl-format msgid "unknown sort type %s" msgstr "nieznany sposób sortowania %s" -#: ../IkiWiki.pm:2074 +#: ../IkiWiki.pm:2166 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "awaria w trakcie odczytu %s: %s" @@ -1266,6 +1273,16 @@ msgstr "" msgid "What is the domain name of the web server?" msgstr "" +#, fuzzy +#~ msgid "failed to process" +#~ msgstr "awaria w trakcie przetwarzania:" + +#~ msgid "nonexistant template %s" +#~ msgstr "brakujący szablon %s" + +#~ msgid "getctime not implemented" +#~ msgstr "niedostępna funkcja getctime" + #, fuzzy #~ msgid "failed to read %s" #~ msgstr "awaria w trakcie odczytu %s: %s" @@ -1323,10 +1340,6 @@ msgstr "" #~ "Brak możliwości wysłania powiadomień od Subversion przez \"haczyk\" post-" #~ "commit z powodu nieustawionego parametru REV" -#, fuzzy -#~ msgid "%s not found" -#~ msgstr "nie znaleziono %s" - #~ msgid "What's this?" #~ msgstr "Więcej o OpenID" diff --git a/po/sv.po b/po/sv.po index 0d4c6202e..2cba1cc2e 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: 2010-04-03 14:18-0400\n" +"POT-Creation-Date: 2010-04-24 16:15-0400\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" @@ -54,7 +54,7 @@ msgstr "Inställningar sparades." msgid "You are banned." msgstr "Du är bannlyst." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1291 msgid "Error" msgstr "Fel" @@ -136,7 +136,7 @@ msgstr "skapar nya sidan %s" msgid "deleting bucket.." msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:231 msgid "done" msgstr "klar" @@ -177,7 +177,7 @@ msgstr "" msgid "attachment upload" msgstr "" -#: ../IkiWiki/Plugin/autoindex.pm:105 +#: ../IkiWiki/Plugin/autoindex.pm:117 msgid "automatic index generation" msgstr "" @@ -209,55 +209,55 @@ msgstr "" msgid "Anonymous" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 +#: ../IkiWiki/Plugin/comments.pm:342 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:345 +#: ../IkiWiki/Plugin/comments.pm:347 #, fuzzy, perl-format msgid "commenting on %s" msgstr "skapar %s" -#: ../IkiWiki/Plugin/comments.pm:363 +#: ../IkiWiki/Plugin/comments.pm:365 #, perl-format msgid "page '%s' doesn't exist, so you can't comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:370 +#: ../IkiWiki/Plugin/comments.pm:372 #, perl-format msgid "comments on page '%s' are closed" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:467 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "comment stored for moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:469 +#: ../IkiWiki/Plugin/comments.pm:471 msgid "Your comment will be posted after moderator review" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:482 +#: ../IkiWiki/Plugin/comments.pm:484 msgid "Added a comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:486 +#: ../IkiWiki/Plugin/comments.pm:488 #, perl-format msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270 +#: ../IkiWiki/Plugin/comments.pm:530 ../IkiWiki/Plugin/websetup.pm:270 msgid "you are not logged in as an admin" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:579 +#: ../IkiWiki/Plugin/comments.pm:581 msgid "Comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:618 +#: ../IkiWiki/Plugin/comments.pm:620 msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:761 +#: ../IkiWiki/Plugin/comments.pm:759 #, perl-format msgid "%i comment" msgid_plural "%i comments" @@ -267,7 +267,7 @@ msgstr[1] "" #. translators: Here "Comment" is a verb; #. translators: the user clicks on it to #. translators: post a comment. -#: ../IkiWiki/Plugin/comments.pm:771 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comment" msgstr "" @@ -297,14 +297,14 @@ msgstr "tar bort gammal sida %s" msgid "%s is not an editable page" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:296 +#: ../IkiWiki/Plugin/editpage.pm:295 #, perl-format msgid "creating %s" msgstr "skapar %s" -#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 -#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 -#: ../IkiWiki/Plugin/editpage.pm:426 +#: ../IkiWiki/Plugin/editpage.pm:313 ../IkiWiki/Plugin/editpage.pm:332 +#: ../IkiWiki/Plugin/editpage.pm:342 ../IkiWiki/Plugin/editpage.pm:386 +#: ../IkiWiki/Plugin/editpage.pm:425 #, perl-format msgid "editing %s" msgstr "redigerar %s" @@ -324,9 +324,10 @@ msgstr "filnamn för wrapper har inte angivits" msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:138 +#: ../IkiWiki/Plugin/edittemplate.pm:125 ../IkiWiki/Plugin/inline.pm:339 +#: ../IkiWiki/Plugin/template.pm:44 #, fuzzy -msgid "failed to process" +msgid "failed to process template:" msgstr "misslyckades med att behandla mall:" #: ../IkiWiki/Plugin/format.pm:30 @@ -357,18 +358,18 @@ msgstr "kan inte läsa %s: %s" msgid "%s is an attachment, not a page." msgstr "" -#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 +#: ../IkiWiki/Plugin/git.pm:687 ../IkiWiki/Plugin/git.pm:705 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:698 +#: ../IkiWiki/Plugin/git.pm:727 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:702 +#: ../IkiWiki/Plugin/git.pm:731 msgid "you are not allowed to change file modes" msgstr "" @@ -455,12 +456,12 @@ msgstr "" msgid "Add a new post titled:" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:333 +#: ../IkiWiki/Plugin/inline.pm:342 #, perl-format -msgid "nonexistant template %s" -msgstr "" +msgid "template %s not found" +msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/inline.pm:625 +#: ../IkiWiki/Plugin/inline.pm:635 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client hittades inte, pingar inte" @@ -490,21 +491,25 @@ msgstr "" "misslyckades med att läsa in Perl-modulen Markdown.pm (%s) eller /usr/bin/" "markdown (%s)" -#: ../IkiWiki/Plugin/meta.pm:162 +#: ../IkiWiki/Plugin/meta.pm:174 #, fuzzy msgid "stylesheet not found" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/meta.pm:200 +#: ../IkiWiki/Plugin/meta.pm:212 #, fuzzy msgid "redir page not found" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/meta.pm:214 +#: ../IkiWiki/Plugin/meta.pm:226 #, fuzzy msgid "redir cycle is not allowed" msgstr "mallen %s hittades inte" +#: ../IkiWiki/Plugin/meta.pm:383 +msgid "sort=meta requires a parameter" +msgstr "" + #: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Speglar" @@ -521,10 +526,6 @@ msgstr "" msgid "more" msgstr "" -#: ../IkiWiki/Plugin/norcs.pm:66 -msgid "getctime not implemented" -msgstr "getctime inte implementerad" - #: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "" @@ -542,39 +543,39 @@ msgstr "Alla sidor länkas till av andra sidor." msgid "bad or missing template" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:229 +#: ../IkiWiki/Plugin/passwordauth.pm:231 msgid "Your user page: " msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:236 +#: ../IkiWiki/Plugin/passwordauth.pm:238 msgid "Create your user page" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:264 +#: ../IkiWiki/Plugin/passwordauth.pm:268 msgid "Account creation successful. Now you can Login." msgstr "Kontot har skapats. Du kan nu logga in." -#: ../IkiWiki/Plugin/passwordauth.pm:267 +#: ../IkiWiki/Plugin/passwordauth.pm:271 msgid "Error creating account." msgstr "Fel vid skapandet av konto." -#: ../IkiWiki/Plugin/passwordauth.pm:274 +#: ../IkiWiki/Plugin/passwordauth.pm:278 msgid "No email address, so cannot email password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:308 +#: ../IkiWiki/Plugin/passwordauth.pm:312 msgid "Failed to send mail" msgstr "Misslyckades med att skicka e-post" -#: ../IkiWiki/Plugin/passwordauth.pm:310 +#: ../IkiWiki/Plugin/passwordauth.pm:314 msgid "You have been mailed password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:345 +#: ../IkiWiki/Plugin/passwordauth.pm:349 msgid "incorrect password reset url" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:348 +#: ../IkiWiki/Plugin/passwordauth.pm:352 msgid "password reset denied" msgstr "" @@ -605,94 +606,94 @@ msgstr "RPC::XML::Client hittades inte, pingar inte" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:139 +#: ../IkiWiki/Plugin/po.pm:140 #, perl-format msgid "%s is not a valid language code" msgstr "" -#: ../IkiWiki/Plugin/po.pm:151 +#: ../IkiWiki/Plugin/po.pm:152 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:156 +#: ../IkiWiki/Plugin/po.pm:157 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:386 +#: ../IkiWiki/Plugin/po.pm:388 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:392 ../IkiWiki/Render.pm:761 #, fuzzy, perl-format msgid "building %s" msgstr "redigerar %s" -#: ../IkiWiki/Plugin/po.pm:428 +#: ../IkiWiki/Plugin/po.pm:430 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:452 +#: ../IkiWiki/Plugin/po.pm:454 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:472 +#: ../IkiWiki/Plugin/po.pm:474 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:871 +#: ../IkiWiki/Plugin/po.pm:873 #, perl-format msgid "POT file (%s) does not exist" msgstr "" -#: ../IkiWiki/Plugin/po.pm:885 +#: ../IkiWiki/Plugin/po.pm:887 #, fuzzy, perl-format msgid "failed to copy underlay PO file to %s" msgstr "misslyckades med att kompilera %s" -#: ../IkiWiki/Plugin/po.pm:894 +#: ../IkiWiki/Plugin/po.pm:896 #, fuzzy, perl-format msgid "failed to update %s" msgstr "misslyckades med att kompilera %s" -#: ../IkiWiki/Plugin/po.pm:900 +#: ../IkiWiki/Plugin/po.pm:902 #, fuzzy, perl-format msgid "failed to copy the POT file to %s" msgstr "misslyckades med att kompilera %s" -#: ../IkiWiki/Plugin/po.pm:936 +#: ../IkiWiki/Plugin/po.pm:938 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:949 +#: ../IkiWiki/Plugin/po.pm:951 #, fuzzy, perl-format msgid "failed to translate %s" msgstr "misslyckades med att skriva %s: %s" -#: ../IkiWiki/Plugin/po.pm:1033 +#: ../IkiWiki/Plugin/po.pm:1035 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 -#: ../IkiWiki/Plugin/po.pm:1142 +#: ../IkiWiki/Plugin/po.pm:1091 ../IkiWiki/Plugin/po.pm:1105 +#: ../IkiWiki/Plugin/po.pm:1144 #, fuzzy, perl-format msgid "failed to write %s" msgstr "misslyckades med att skriva %s: %s" -#: ../IkiWiki/Plugin/po.pm:1101 +#: ../IkiWiki/Plugin/po.pm:1103 #, fuzzy msgid "failed to translate" msgstr "linkmap misslyckades att köra dot" -#: ../IkiWiki/Plugin/po.pm:1154 +#: ../IkiWiki/Plugin/po.pm:1156 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -836,44 +837,44 @@ msgstr "" msgid "no change to the file name was specified" msgstr "filnamn för wrapper har inte angivits" -#: ../IkiWiki/Plugin/rename.pm:69 +#: ../IkiWiki/Plugin/rename.pm:68 #, perl-format msgid "illegal name" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:74 +#: ../IkiWiki/Plugin/rename.pm:73 #, perl-format msgid "%s already exists" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:80 +#: ../IkiWiki/Plugin/rename.pm:79 #, perl-format msgid "%s already exists on disk" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:123 +#: ../IkiWiki/Plugin/rename.pm:122 #, fuzzy, perl-format msgid "rename %s" msgstr "ritar upp %s" -#: ../IkiWiki/Plugin/rename.pm:162 +#: ../IkiWiki/Plugin/rename.pm:161 msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:249 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:252 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:349 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:573 +#: ../IkiWiki/Plugin/rename.pm:572 #, fuzzy, perl-format msgid "update for rename of %s to %s" msgstr "uppdatering av %s, %s av %s" @@ -978,21 +979,21 @@ msgstr "" msgid "parse fail at line %d: %s" msgstr "misslyckades med att skriva %s: %s" -#: ../IkiWiki/Plugin/template.pm:34 +#: ../IkiWiki/Plugin/tag.pm:83 +#, fuzzy, perl-format +msgid "creating tag page %s" +msgstr "skapar nya sidan %s" + +#: ../IkiWiki/Plugin/template.pm:33 #, fuzzy msgid "missing id parameter" msgstr "mall saknar id-parameter" #: ../IkiWiki/Plugin/template.pm:47 -#, perl-format -msgid "template %s not found" +#, fuzzy, perl-format +msgid "%s not found" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/template.pm:66 -#, fuzzy -msgid "failed to process:" -msgstr "misslyckades med att behandla mall:" - #: ../IkiWiki/Plugin/teximg.pm:72 msgid "missing tex code" msgstr "" @@ -1051,54 +1052,59 @@ msgstr "" msgid "bad file name %s" msgstr "hoppar över felaktigt filnamn %s" -#: ../IkiWiki/Render.pm:153 +#: ../IkiWiki/Render.pm:162 #, perl-format msgid "scanning %s" msgstr "söker av %s" -#: ../IkiWiki/Render.pm:274 +#: ../IkiWiki/Render.pm:284 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "allow this" msgstr "" -#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 +#: ../IkiWiki/Render.pm:315 #, perl-format msgid "skipping bad filename %s" msgstr "hoppar över felaktigt filnamn %s" -#: ../IkiWiki/Render.pm:308 +#: ../IkiWiki/Render.pm:330 #, perl-format msgid "%s has multiple possible source pages" msgstr "" -#: ../IkiWiki/Render.pm:413 +#: ../IkiWiki/Render.pm:372 #, perl-format -msgid "removing old page %s" +msgid "querying %s for file creation and modification times.." +msgstr "" + +#: ../IkiWiki/Render.pm:434 +#, fuzzy, perl-format +msgid "removing obsolete %s" msgstr "tar bort gammal sida %s" -#: ../IkiWiki/Render.pm:486 +#: ../IkiWiki/Render.pm:507 #, fuzzy, perl-format msgid "building %s, which links to %s" msgstr "ritar upp %s, vilken länkar till %s" -#: ../IkiWiki/Render.pm:495 +#: ../IkiWiki/Render.pm:516 #, fuzzy, perl-format msgid "removing %s, no longer built by %s" msgstr "tar bort %s, som inte längre ritas upp av %s" -#: ../IkiWiki/Render.pm:618 +#: ../IkiWiki/Render.pm:671 ../IkiWiki/Render.pm:777 #, fuzzy, perl-format msgid "building %s, which depends on %s" msgstr "ritar upp %s, vilken är beroende av %s" -#: ../IkiWiki/Render.pm:631 +#: ../IkiWiki/Render.pm:684 #, fuzzy, perl-format msgid "building %s, to update its backlinks" msgstr "ritar upp %s, för att uppdatera dess bakåtlänkar" -#: ../IkiWiki/Render.pm:707 +#: ../IkiWiki/Render.pm:819 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: kan inte rita upp %s" @@ -1171,62 +1177,63 @@ msgstr "användning: ikiwiki [flaggor] källa mål" msgid " ikiwiki --setup configfile" msgstr "" -#: ../ikiwiki.in:95 +#: ../ikiwiki.in:96 msgid "usage: --set var=value" msgstr "" -#: ../ikiwiki.in:102 +#: ../ikiwiki.in:103 msgid "usage: --set-yaml var=value" msgstr "" -#: ../ikiwiki.in:156 +#: ../ikiwiki.in:157 msgid "generating wrappers.." msgstr "genererar wrappers.." -#: ../ikiwiki.in:219 +#: ../ikiwiki.in:220 msgid "rebuilding wiki.." msgstr "bygger om wiki.." -#: ../ikiwiki.in:222 +#: ../ikiwiki.in:223 msgid "refreshing wiki.." msgstr "uppdaterar wiki.." -#: ../IkiWiki.pm:238 +#: ../IkiWiki.pm:233 msgid "Discussion" msgstr "Diskussion" -#: ../IkiWiki.pm:530 +#: ../IkiWiki.pm:524 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:576 +#: ../IkiWiki.pm:570 msgid "cannot use multiple rcs plugins" msgstr "" -#: ../IkiWiki.pm:605 +#: ../IkiWiki.pm:599 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1278 +#: ../IkiWiki.pm:1273 #, fuzzy, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "%s förbehandlingsslinga detekterades på %s, djup %i" -#: ../IkiWiki.pm:1901 +#: ../IkiWiki.pm:1932 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2044 -msgid "Sort::Naturally needed for title_natural sort" -msgstr "" +#: ../IkiWiki.pm:2009 +#, fuzzy, perl-format +msgid "invalid sort type %s" +msgstr "okänd sorteringstyp %s" -#: ../IkiWiki.pm:2055 +#: ../IkiWiki.pm:2030 #, perl-format msgid "unknown sort type %s" msgstr "okänd sorteringstyp %s" -#: ../IkiWiki.pm:2074 +#: ../IkiWiki.pm:2166 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "kan inte läsa %s: %s" @@ -1251,6 +1258,13 @@ msgstr "" msgid "What is the domain name of the web server?" msgstr "" +#, fuzzy +#~ msgid "failed to process" +#~ msgstr "misslyckades med att behandla mall:" + +#~ msgid "getctime not implemented" +#~ msgstr "getctime inte implementerad" + #, fuzzy #~ msgid "failed to read %s" #~ msgstr "misslyckades med att skriva %s: %s" @@ -1305,10 +1319,6 @@ msgstr "" #~ "REV är inte inställt, kör inte från svn post-commit-hook, kan inte skicka " #~ "notifieringar" -#, fuzzy -#~ msgid "%s not found" -#~ msgstr "mallen %s hittades inte" - #~ msgid "What's this?" #~ msgstr "Vad är det här?" -- cgit v1.2.3 From cce3042457facddfe5100327dbe98445d9d12b7c Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 16:44:45 -0400 Subject: po: fix some uninitalized value warnings when used by websetup --- IkiWiki/Plugin/po.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 759e812e6..7c979ebca 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -567,7 +567,7 @@ sub mybestlink ($$) { my $link=shift; return $origsubs{'bestlink'}->($page, $link) - if $config{po_link_to} eq "default"; + if defined $config{po_link_to} && $config{po_link_to} eq "default"; my $res=$origsubs{'bestlink'}->(masterpage($page), $link); my @caller = caller(1); @@ -585,7 +585,7 @@ sub mybeautify_urlpath ($) { my $url=shift; my $res=$origsubs{'beautify_urlpath'}->($url); - if ($config{po_link_to} eq "negotiated") { + if (defined $config{po_link_to} && $config{po_link_to} eq "negotiated") { $res =~ s!/\Qindex.$config{po_master_language}{code}.$config{htmlext}\E$!/!; $res =~ s!/\Qindex.$config{htmlext}\E$!/!; map { @@ -729,6 +729,7 @@ sub istranslatablefile ($) { my $type=pagetype($file); return 0 if ! defined $type || $type eq 'po'; return 0 if $file =~ /\.pot$/; + return 0 if ! defined $config{po_translatable_pages}; return 1 if pagespec_match(pagename($file), $config{po_translatable_pages}); return; } -- cgit v1.2.3 From 0d8fc55d3356ea7da2ce175d25230d207bd32088 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 19:50:23 -0400 Subject: bugfix --- IkiWiki.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index c218ed8ab..c2cadd35f 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1654,7 +1654,7 @@ sub saveindex () { sub template_file ($) { my $name=shift; - my $tpage=($name =~ /^\//) ? $name : "templates/$name"; + my $tpage=($name =~ s/^\///) ? $name : "templates/$name"; if ($name !~ /\.tmpl$/ && exists $pagesources{$tpage}) { $tpage=$pagesources{$tpage}; $name.=".tmpl"; -- cgit v1.2.3 From ca9c6cc254d934837406ef9bb0dc5d021983661b Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 20:22:20 -0400 Subject: add support for mass dependencies Registered by passing "" as page name to add_depends. --- IkiWiki.pm | 4 ++-- IkiWiki/Plugin/google.pm | 6 +++++- IkiWiki/Plugin/search.pm | 6 +++++- IkiWiki/Render.pm | 19 +++++++++---------- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index c2cadd35f..0ac49ade9 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -13,8 +13,8 @@ use open qw{:utf8 :std}; use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase %pagestate %wikistate %renderedfiles %oldrenderedfiles - %pagesources %destsources %depends %depends_simple %hooks - %forcerebuild %loaded_plugins %typedlinks %oldtypedlinks + %pagesources %destsources %depends %depends_simple @mass_depends + %hooks %forcerebuild %loaded_plugins %typedlinks %oldtypedlinks %autofiles}; use Exporter q{import}; diff --git a/IkiWiki/Plugin/google.pm b/IkiWiki/Plugin/google.pm index 68cb16513..529a2c801 100644 --- a/IkiWiki/Plugin/google.pm +++ b/IkiWiki/Plugin/google.pm @@ -25,6 +25,10 @@ sub checkconfig () { if (! length $config{url}) { error(sprintf(gettext("Must specify %s when using the %s plugin"), "url", 'google')); } + + # This is a mass dependency, so if the search form template + # changes, every page is rebuilt. + add_depends("", "googleform.tmpl"); } my $form; @@ -36,7 +40,7 @@ sub pagetemplate (@) { # Add search box to page header. if ($template->query(name => "searchform")) { if (! defined $form) { - my $searchform = template_depends("googleform.tmpl", $page, blind_cache => 1); + my $searchform = template("googleform.tmpl", blind_cache => 1); $searchform->param(url => $config{url}); $form=$searchform->output; } diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm index 55edf8752..c9a69f443 100644 --- a/IkiWiki/Plugin/search.pm +++ b/IkiWiki/Plugin/search.pm @@ -41,6 +41,10 @@ sub checkconfig () { if (! defined $config{omega_cgi}) { $config{omega_cgi}="/usr/lib/cgi-bin/omega/omega"; } + + # This is a mass dependency, so if the search form template + # changes, every page is rebuilt. + add_depends("", "searchform.tmpl"); } my $form; @@ -52,7 +56,7 @@ sub pagetemplate (@) { # Add search box to page header. if ($template->query(name => "searchform")) { if (! defined $form) { - my $searchform = template_depends("searchform.tmpl", $page, blind_cache => 1); + my $searchform = template("searchform.tmpl", blind_cache => 1); $searchform->param(searchaction => $config{cgiurl}); $form=$searchform->output; } diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 8ae0cbd4f..50af2bdec 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -591,13 +591,18 @@ sub render_dependent ($$$$$$$) { my %lc_changed = map { lc(pagename($_)) => 1 } @changed; my %lc_exists_changed = map { lc(pagename($_)) => 1 } @exists_changed; + + my $mass_reason; + foreach my $p ("page.tmpl", keys %{$depends_simple{""}}) { + $mass_reason=$p if $rendered{$p}; + } foreach my $f (@$files) { next if $rendered{$f}; my $p=pagename($f); - my $reason = undef; - - if (exists $depends_simple{$p}) { + my $reason = $mass_reason; + + if (exists $depends_simple{$p} && ! defined $reason) { foreach my $d (keys %{$depends_simple{$p}}) { if (($depends_simple{$p}{$d} & $IkiWiki::DEPEND_CONTENT && $lc_changed{$d}) @@ -771,13 +776,7 @@ sub refresh () { render_linkers($file); } - if ($rendered{"templates/page.tmpl"}) { - foreach my $f (@$files) { - next if $f eq "templates/page.tmpl"; - render($f, sprintf(gettext("building %s, which depends on %s"), $f, "templates/page.tmpl")); - } - } - elsif (@$changed || @$internal_changed || + if (@$changed || @$internal_changed || @$del || @$internal_del || @$internal_new) { 1 while render_dependent($files, $new, $internal_new, $del, $internal_del, $internal_changed, -- cgit v1.2.3 From c6a473b8eea0ea015c44c3cd7a267f6325febac5 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 20:30:05 -0400 Subject: update --- doc/templates.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/templates.mdwn b/doc/templates.mdwn index 67e5517e4..892e36cd2 100644 --- a/doc/templates.mdwn +++ b/doc/templates.mdwn @@ -23,8 +23,8 @@ The template directive allows wiki pages to be used as templates, filled out and inserted into other pages in the wiki. """]] [[!if test="enabled(template) and enabled(inline)" then=""" -[[!inline pages="templates/* and !*/discussion" feeds=no archive=yes -sort=title template=titlepage +[[!inline pages="templates/* and !*.tmpl and !*/discussion" +feeds=no archive=yes sort=title template=titlepage rootpage=templates postformtext="Add a new template named:"]] """]] -- cgit v1.2.3 From a1575b0c8398f3ebb70b2364b986964fb354e09a Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 20:41:35 -0400 Subject: bugfixes --- IkiWiki/Plugin/google.pm | 2 +- IkiWiki/Plugin/search.pm | 2 +- IkiWiki/Render.pm | 13 +++++++++---- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/IkiWiki/Plugin/google.pm b/IkiWiki/Plugin/google.pm index 529a2c801..85467fa0b 100644 --- a/IkiWiki/Plugin/google.pm +++ b/IkiWiki/Plugin/google.pm @@ -28,7 +28,7 @@ sub checkconfig () { # This is a mass dependency, so if the search form template # changes, every page is rebuilt. - add_depends("", "googleform.tmpl"); + add_depends("", "templates/googleform.tmpl"); } my $form; diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm index c9a69f443..be39fdf1e 100644 --- a/IkiWiki/Plugin/search.pm +++ b/IkiWiki/Plugin/search.pm @@ -44,7 +44,7 @@ sub checkconfig () { # This is a mass dependency, so if the search form template # changes, every page is rebuilt. - add_depends("", "searchform.tmpl"); + add_depends("", "templates/searchform.tmpl"); } my $form; diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 50af2bdec..d0c7e58a3 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -592,15 +592,20 @@ sub render_dependent ($$$$$$$) { my %lc_changed = map { lc(pagename($_)) => 1 } @changed; my %lc_exists_changed = map { lc(pagename($_)) => 1 } @exists_changed; - my $mass_reason; - foreach my $p ("page.tmpl", keys %{$depends_simple{""}}) { - $mass_reason=$p if $rendered{$p}; + foreach my $p ("templates/page.tmpl", keys %{$depends_simple{""}}) { + if ($rendered{$p}) { + foreach my $f (@$files) { + next if $rendered{$f}; + render($f, sprintf(gettext("building %s, which depends on %s"), $f, $p)); + } + return 0; + } } foreach my $f (@$files) { next if $rendered{$f}; my $p=pagename($f); - my $reason = $mass_reason; + my $reason = undef; if (exists $depends_simple{$p} && ! defined $reason) { foreach my $d (keys %{$depends_simple{$p}}) { -- cgit v1.2.3 From e05c9653ef823d1af3c79a89a6231c86be7f8960 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 21:13:53 -0400 Subject: rebuild on template removal --- IkiWiki/Render.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index d0c7e58a3..871e005b2 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -593,7 +593,7 @@ sub render_dependent ($$$$$$$) { my %lc_exists_changed = map { lc(pagename($_)) => 1 } @exists_changed; foreach my $p ("templates/page.tmpl", keys %{$depends_simple{""}}) { - if ($rendered{$p}) { + if ($rendered{$p} || grep { $_ eq $p } @$del) { foreach my $f (@$files) { next if $rendered{$f}; render($f, sprintf(gettext("building %s, which depends on %s"), $f, $p)); -- cgit v1.2.3 From ca9c17db57a408e6cc118cf33fcec886a72388fb Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 21:38:22 -0400 Subject: reword templatedir description --- IkiWiki.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 0ac49ade9..63a7f5e2a 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -152,7 +152,7 @@ sub getsetup () { templatedir => { type => "string", default => "$installdir/share/ikiwiki/templates", - description => "location of template files", + description => "additional directory to search for template files", advanced => 1, safe => 0, # path rebuild => 1, -- cgit v1.2.3 From 5afda336720dc83e0fd4c6e2f311ff6664c68211 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sat, 24 Apr 2010 21:39:03 -0400 Subject: wording --- doc/templates.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/templates.mdwn b/doc/templates.mdwn index 892e36cd2..9208db0eb 100644 --- a/doc/templates.mdwn +++ b/doc/templates.mdwn @@ -8,7 +8,7 @@ searched first. Customized templates can also be placed inside the Ikiwiki uses the HTML::Template module as its template engine. This supports things like conditionals and loops in templates and is pretty -easy to learn. All you really need to know are a few things: +easy to learn. All you really need to know to modify templates is this: * To insert the value of a template variable, use `<TMPL_VAR variable>`. * To make a block of text conditional on a variable being set use -- cgit v1.2.3 From f49b9e7411bf9748dc81389e14d70cafaa6ded02 Mon Sep 17 00:00:00 2001 From: "http://id.ertugkaramatli.com/" <http://id.ertugkaramatli.com/@web> Date: Sun, 25 Apr 2010 13:25:59 +0000 Subject: added my personal site --- doc/ikiwikiusers.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index cb4213405..edf36b5c6 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -143,6 +143,7 @@ Personal sites and blogs * [Chris Dombroski's boring bliki](https://www.icanttype.org/) * [Josh Triplett's homepage](http://joshtriplett.org/) - Git backend with the CGI disabled, to publish a static site with the convenience of ikiwiki. * [Gustaf Thorslund's blog](http://blog.thorslund.org) +* [Ertug Karamatli](http://pages.karamatli.com) Please feel free to add your own ikiwiki site! -- cgit v1.2.3 From 506075695f32a63bfc8b57cef1a601bd937b7a72 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Sun, 25 Apr 2010 14:16:53 -0400 Subject: typo --- doc/usage.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/usage.mdwn b/doc/usage.mdwn index 9cf61cc6c..2f87d60d5 100644 --- a/doc/usage.mdwn +++ b/doc/usage.mdwn @@ -330,7 +330,7 @@ also be configured using a setup file. * --set var=value This allows setting an arbitrary configuration variable, the same as if it - were set via a setup file. Since most options commonly used options can be + were set via a setup file. Since most commonly used options can be configured using command-line switches, you will rarely need to use this. * --set-yaml var=value -- cgit v1.2.3 From 86484c109d30c0062c5a5056f4adf41c0581b5e9 Mon Sep 17 00:00:00 2001 From: "http://jmtd.livejournal.com/" <http://jmtd.livejournal.com/@web> Date: Mon, 26 Apr 2010 15:14:08 +0000 Subject: table name for querying the mediawiki mysql db --- doc/tips/convert_mediawiki_to_ikiwiki.mdwn | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/tips/convert_mediawiki_to_ikiwiki.mdwn b/doc/tips/convert_mediawiki_to_ikiwiki.mdwn index 9719d9a7e..db1a1745c 100644 --- a/doc/tips/convert_mediawiki_to_ikiwiki.mdwn +++ b/doc/tips/convert_mediawiki_to_ikiwiki.mdwn @@ -59,7 +59,13 @@ specific prefix: e.g. `Category:` will be stripped off. ### Querying the database If you have access to the relational database in which your mediawiki data is -stored, it is possible to derive a list of page names from this. +stored, it is possible to derive a list of page names from this. With mediawiki's +MySQL backend, the page table is, appropriately enough, called `table`: + + SELECT page_namespace, page_title FROM page; + +As with the previous method, you will need to do some filtering based on the +namespace. ## Step 2: fetching the page data -- cgit v1.2.3 From 60481cad90d61a4d1abe2dc5e69eee69ce938992 Mon Sep 17 00:00:00 2001 From: "http://jmtd.livejournal.com/" <http://jmtd.livejournal.com/@web> Date: Mon, 26 Apr 2010 15:19:04 +0000 Subject: move list of namespaces to its own section --- doc/tips/convert_mediawiki_to_ikiwiki.mdwn | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/tips/convert_mediawiki_to_ikiwiki.mdwn b/doc/tips/convert_mediawiki_to_ikiwiki.mdwn index db1a1745c..fe0fd46b0 100644 --- a/doc/tips/convert_mediawiki_to_ikiwiki.mdwn +++ b/doc/tips/convert_mediawiki_to_ikiwiki.mdwn @@ -48,10 +48,7 @@ in HTML, you may need to add further processing to the last line. Note that by default, `Special:Allpages` will only list pages in the main namespace. You need to add a `&namespace=XX` argument to get pages in a -different namespace. The following numbers correspond to common namespaces: - - * 10 - templates (`Template:foo`) - * 14 - categories (`Category:bar`) +different namespace. (See below for the default list of namespaces) Note that the page names obtained this way will not include any namespace specific prefix: e.g. `Category:` will be stripped off. @@ -67,6 +64,12 @@ MySQL backend, the page table is, appropriately enough, called `table`: As with the previous method, you will need to do some filtering based on the namespace. +### namespaces + +The list of default namespaces in mediawiki is available from <http://www.mediawiki.org/wiki/Manual:Namespace#Built-in_namespaces>, reproduced here for convenience: + +[[mediawiki_namespaces]] + ## Step 2: fetching the page data Once you have a list of page names, you can fetch the data for each page. -- cgit v1.2.3 From 76e8e4ea838516ebdb8e981fff47efa6af836079 Mon Sep 17 00:00:00 2001 From: "http://jmtd.livejournal.com/" <http://jmtd.livejournal.com/@web> Date: Mon, 26 Apr 2010 15:24:50 +0000 Subject: insert table of common namespaces --- doc/tips/convert_mediawiki_to_ikiwiki.mdwn | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/doc/tips/convert_mediawiki_to_ikiwiki.mdwn b/doc/tips/convert_mediawiki_to_ikiwiki.mdwn index fe0fd46b0..3a266bc8b 100644 --- a/doc/tips/convert_mediawiki_to_ikiwiki.mdwn +++ b/doc/tips/convert_mediawiki_to_ikiwiki.mdwn @@ -66,9 +66,18 @@ namespace. ### namespaces -The list of default namespaces in mediawiki is available from <http://www.mediawiki.org/wiki/Manual:Namespace#Built-in_namespaces>, reproduced here for convenience: - -[[mediawiki_namespaces]] +The list of default namespaces in mediawiki is available from <http://www.mediawiki.org/wiki/Manual:Namespace#Built-in_namespaces>. Here are reproduced the ones you are most likely to encounter if you are running a small mediawiki install for your own purposes: + +[[!table data=""" +Index | Name | Example +0 | Main | Foo +1 | Talk | Talk:Foo +2 | User | User:Jon +3 | User talk | User_talk:Jon +6 | File | File:Barack_Obama_signature.svg +10 | Template | Template:Prettytable +14 | Category | Category:Pages_needing_review +"""]] ## Step 2: fetching the page data -- cgit v1.2.3 From d3c994d980c2f52102c78c0157ce06140c639bc6 Mon Sep 17 00:00:00 2001 From: "http://jmtd.livejournal.com/" <http://jmtd.livejournal.com/@web> Date: Mon, 26 Apr 2010 15:29:04 +0000 Subject: fix indent --- doc/tips/convert_mediawiki_to_ikiwiki.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/tips/convert_mediawiki_to_ikiwiki.mdwn b/doc/tips/convert_mediawiki_to_ikiwiki.mdwn index 3a266bc8b..38de01109 100644 --- a/doc/tips/convert_mediawiki_to_ikiwiki.mdwn +++ b/doc/tips/convert_mediawiki_to_ikiwiki.mdwn @@ -59,7 +59,7 @@ If you have access to the relational database in which your mediawiki data is stored, it is possible to derive a list of page names from this. With mediawiki's MySQL backend, the page table is, appropriately enough, called `table`: - SELECT page_namespace, page_title FROM page; + SELECT page_namespace, page_title FROM page; As with the previous method, you will need to do some filtering based on the namespace. -- cgit v1.2.3 From 0689f2dbc5d4f80cd13f51055b24ff0506f638fb Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Mon, 26 Apr 2010 13:43:24 -0400 Subject: add blipvert --- doc/git.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/git.mdwn b/doc/git.mdwn index a5fd742ca..a0b9c950f 100644 --- a/doc/git.mdwn +++ b/doc/git.mdwn @@ -63,6 +63,7 @@ think about merging them. This is recommended. :-) * [[GustafThorslund]] `http://gustaf.thorslund.org/src/ikiwiki.git` * [[peteg]] `git://git.hcoop.net/git/peteg/ikiwiki.git` * [[privat]] `git://github.com/privat/ikiwiki.git` +* [[blipvert]] `git://github.com/blipvert/ikiwiki.git` ## branches -- cgit v1.2.3 From 7f3047f67c1bb45e25b91362f9ae4bb18734e140 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Mon, 26 Apr 2010 13:47:01 -0400 Subject: added match_guid function to meta plugin (cherry picked from commit 8b6fde73669ddf9204acb3d334c3984566f3c59d) Conflicts: IkiWiki/Plugin/meta.pm --- IkiWiki/Plugin/meta.pm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm index 159008614..7d68a9b2d 100644 --- a/IkiWiki/Plugin/meta.pm +++ b/IkiWiki/Plugin/meta.pm @@ -376,6 +376,10 @@ sub match_copyright ($$;@) { IkiWiki::Plugin::meta::match("copyright", @_); } +sub match_guid ($$;@) { + IkiWiki::Plugin::meta::match("guid", @_); +} + package IkiWiki::SortSpec; sub cmp_meta { -- cgit v1.2.3 From 06d5a19370e07d39e3dcbd975fe479388104b0a5 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Mon, 26 Apr 2010 13:47:40 -0400 Subject: document match_guid --- doc/ikiwiki/pagespec.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/ikiwiki/pagespec.mdwn b/doc/ikiwiki/pagespec.mdwn index 5c191f23f..7810e790b 100644 --- a/doc/ikiwiki/pagespec.mdwn +++ b/doc/ikiwiki/pagespec.mdwn @@ -40,8 +40,8 @@ Some more elaborate limits can be added to what matches using these functions: * "`internal(glob)`" - like `glob()`, but matches even internal-use pages that globs do not usually match. * "`title(glob)`", "`author(glob)`", "`authorurl(glob)`", - "`license(glob)`", "`copyright(glob)`" - match pages that have the given - metadata, matching the specified glob. + "`license(glob)`", "`copyright(glob)`", "`guid(glob)`" + - match pages that have the given metadata, matching the specified glob. * "`user(username)`" - tests whether a modification is being made by a user with the specified username. If openid is enabled, an openid can also be put here. Glob patterns can be used in the username. For example, -- cgit v1.2.3 From a17e6ed4632f7f618151b2a882827aba20dded90 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Mon, 26 Apr 2010 13:52:54 -0400 Subject: Minor, seemingly harmless tweaks to misc.tmpl Whenever the DIV tag structure of page.tmpl has been changed, the DIV tag structure of misc.tmpl must also change to reflect this, or else any page which uses misc.tmpl will not look right. My intent is to make ease parallel maintenance of these two files by eliminating trivial/accidental difference between the two, so that duplicated regions can be more readily identified (perhaps even mechanically). (cherry-picked from commit 075980f94996e8f67d9632ae95b8bf41fdf09afa, but without the changes to comments in page.tmpl) --- templates/misc.tmpl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/templates/misc.tmpl b/templates/misc.tmpl index 9ec9a59cb..535a6f06b 100644 --- a/templates/misc.tmpl +++ b/templates/misc.tmpl @@ -9,11 +9,11 @@ </TMPL_IF> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><TMPL_VAR TITLE> - - + + @@ -32,9 +32,9 @@ -

+ -- cgit v1.2.3 From fc0c43aa759ee5ee16b24acf5116c6b3c6167bc7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 26 Apr 2010 15:51:20 -0400 Subject: fix missing \ --- po/underlays/basewiki/ikiwiki/formatting.de.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/po/underlays/basewiki/ikiwiki/formatting.de.po b/po/underlays/basewiki/ikiwiki/formatting.de.po index d4955eeb8..a0171c348 100644 --- a/po/underlays/basewiki/ikiwiki/formatting.de.po +++ b/po/underlays/basewiki/ikiwiki/formatting.de.po @@ -163,7 +163,7 @@ msgid "" msgstr "" "Um eine URL oder E-Mail-Adresse zu verlinken, kann man die\n" "URL einfach ein spitze Klammern schreiben: <>; " -"man kann auch die Form \\[Link-Text\\]\\(URL)\) verwenden.\n" +"man kann auch die Form \\[Link-Text\\]\\(URL)\\) verwenden.\n" #. type: Plain text msgid "" -- cgit v1.2.3 From a6bd053638c67e5410c4a0a3742ba3825320b344 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 26 Apr 2010 16:31:00 -0400 Subject: remove manual file remove instructions Since that was written, ikiwiki got fixed to track old rendered files across --rebuild and remove them. --- doc/tips/switching_to_usedirs.mdwn | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/doc/tips/switching_to_usedirs.mdwn b/doc/tips/switching_to_usedirs.mdwn index 183ce00ac..92871439f 100644 --- a/doc/tips/switching_to_usedirs.mdwn +++ b/doc/tips/switching_to_usedirs.mdwn @@ -8,9 +8,7 @@ to usedirs, or edit your setup file and turn usedirs back off. or manually. * Since usedirs is enabled, ikiwiki will have created a bunch of new html files. Where before ikiwiki generated a `dest/foo.html`, now it will - generate `dest/foo/index.html`. But, the old html files will still be - present too. Remove them: - find dest -name \*.html -not -name index.html -exec rm {} \; + generate `dest/foo/index.html`. The old html files will be removed. * If you have a blog that is aggregated on a Planet or similar, all the items in the RSS or atom feed will seem like new posts, since their URLs have changed. See [[howto_avoid_flooding_aggregators]] for a workaround. -- cgit v1.2.3 From 97b0c6e455f9edb99d9bd5145a8e82549ed54694 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 26 Apr 2010 17:14:03 -0400 Subject: Fix removal of rendered files in rebuild mode. Needed to handle the move of the .js files into ikiwiki/, but also this is a longstanding bug. Old pagemtime is not remembered in rebuild mode, and changing that would need a lot of changes. So instead, loop on pagectime, which is remembered. Change to remembering old pagesources info in rebuild mode. This seems safe enough. --- IkiWiki.pm | 2 +- IkiWiki/Render.pm | 2 +- debian/changelog | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 63a7f5e2a..944001d9b 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1531,8 +1531,8 @@ sub loadindex () { my $d=$pages->{$src}; my $page=pagename($src); $pagectime{$page}=$d->{ctime}; + $pagesources{$page}=$src; if (! $config{rebuild}) { - $pagesources{$page}=$src; $pagemtime{$page}=$d->{mtime}; $renderedfiles{$page}=$d->{dest}; if (exists $d->{links} && ref $d->{links}) { diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 871e005b2..b04664e41 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -409,7 +409,7 @@ sub find_del_files ($) { my @del; my @internal_del; - foreach my $page (keys %pagemtime) { + foreach my $page (keys %pagectime) { if (! $pages->{$page}) { if (isinternal($page)) { push @internal_del, $pagesources{$page}; diff --git a/debian/changelog b/debian/changelog index 53febb433..1229b1198 100644 --- a/debian/changelog +++ b/debian/changelog @@ -74,6 +74,7 @@ ikiwiki (3.20100424) UNRELEASED; urgency=low * Moved javascript files under the ikiwiki/ directory, to avoid cluttering the top of the web root. This is another things that requires a wiki rebuild on upgrade to this version. + * Fix removal of rendered files in rebuild mode. -- Joey Hess Sun, 04 Apr 2010 12:17:11 -0400 -- cgit v1.2.3 From 194824ce293a64f7dce68d568d1f906d675af858 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 26 Apr 2010 18:32:06 -0400 Subject: loop on pagesources, not ctime --- IkiWiki/Render.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index b04664e41..7e3d78861 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -409,7 +409,7 @@ sub find_del_files ($) { my @del; my @internal_del; - foreach my $page (keys %pagectime) { + foreach my $page (keys %pagesources) { if (! $pages->{$page}) { if (isinternal($page)) { push @internal_del, $pagesources{$page}; -- cgit v1.2.3 From 3ac2ae1f14952bd92038183d92b1eb618c9d0f55 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 26 Apr 2010 18:47:17 -0400 Subject: Add page() PageSpec, which is like glob() but matches only pages, not other files. --- IkiWiki.pm | 10 +++++++++- debian/changelog | 2 ++ doc/ikiwiki/pagespec.mdwn | 11 ++++++----- t/pagespec_match.t | 16 +++++++++++++++- 4 files changed, 32 insertions(+), 7 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 944001d9b..623396c9c 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2299,7 +2299,11 @@ sub match_glob ($$;@) { my $regexp=IkiWiki::glob2re($glob); if ($page=~/^$regexp$/i) { - if (! IkiWiki::isinternal($page) || $params{internal}) { + if ($params{onlypage} && + ! defined IkiWiki::pagetype($IkiWiki::pagesources{$page})) { + return IkiWiki::FailReason->new("$page is not a page"); + } + elsif (! IkiWiki::isinternal($page) || $params{internal}) { return IkiWiki::SuccessReason->new("$glob matches $page"); } else { @@ -2315,6 +2319,10 @@ sub match_internal ($$;@) { return match_glob($_[0], $_[1], @_, internal => 1) } +sub match_page ($$;@) { + return match_glob($_[0], $_[1], @_, onlypage => 1) +} + sub match_link ($$;@) { my $page=shift; my $link=lc(shift); diff --git a/debian/changelog b/debian/changelog index 1229b1198..610d0c9cb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -75,6 +75,8 @@ ikiwiki (3.20100424) UNRELEASED; urgency=low the top of the web root. This is another things that requires a wiki rebuild on upgrade to this version. * Fix removal of rendered files in rebuild mode. + * Add page() PageSpec, which is like glob() but matches only pages, + not other files. -- Joey Hess Sun, 04 Apr 2010 12:17:11 -0400 diff --git a/doc/ikiwiki/pagespec.mdwn b/doc/ikiwiki/pagespec.mdwn index 7810e790b..1c99aefac 100644 --- a/doc/ikiwiki/pagespec.mdwn +++ b/doc/ikiwiki/pagespec.mdwn @@ -24,19 +24,20 @@ match all pages except for Discussion pages and the SandBox: Some more elaborate limits can be added to what matches using these functions: +* "`glob(someglob)`" - matches pages and other files that match the given glob. + Just writing the glob by itself is actually a shorthand for this function. +* "`page(glob)`" - like `glob()`, but only matches pages, not other files * "`link(page)`" - matches only pages that link to a given page (or glob) * "`tagged(tag)`" - matches pages that are tagged or link to the given tag (or tags matched by a glob) * "`backlink(page)`" - matches only pages that a given page links to -* "`creation_month(month)`" - matches only pages created on the given month +* "`creation_month(month)`" - matches only files created on the given month * "`creation_day(mday)`" - or day of the month * "`creation_year(year)`" - or year -* "`created_after(page)`" - matches only pages created after the given page +* "`created_after(page)`" - matches only files created after the given page was created -* "`created_before(page)`" - matches only pages created before the given page +* "`created_before(page)`" - matches only files created before the given page was created -* "`glob(someglob)`" - matches pages that match the given glob. Just writing - the glob by itself is actually a shorthand for this function. * "`internal(glob)`" - like `glob()`, but matches even internal-use pages that globs do not usually match. * "`title(glob)`", "`author(glob)`", "`authorurl(glob)`", diff --git a/t/pagespec_match.t b/t/pagespec_match.t index ade9bca5a..97bcc969c 100755 --- a/t/pagespec_match.t +++ b/t/pagespec_match.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 75; +use Test::More tests => 85; BEGIN { use_ok("IkiWiki"); } @@ -66,7 +66,21 @@ $links{"ook"}=[qw{/blog/tags/foo}]; foreach my $p (keys %links) { $pagesources{$p}="$p.mdwn"; } +$pagesources{"foo.png"}="foo.png"; +$pagesources{"foo"}="foo.mdwn"; +$IkiWiki::hooks{htmlize}{mdwn}={}; +ok(pagespec_match("foo", "foo"), "simple"); +ok(! pagespec_match("foo", "bar"), "simple fail"); +ok(pagespec_match("foo", "foo"), "simple glob"); +ok(pagespec_match("foo", "f*"), "simple glob fail"); +ok(pagespec_match("foo", "page(foo)"), "page()"); +print pagespec_match("foo", "page(foo)")."\n"; +ok(! pagespec_match("foo", "page(bar)"), "page() fail"); +ok(! pagespec_match("foo.png", "page(foo.png)"), "page() fails on non-page"); +ok(! pagespec_match("foo.png", "page(foo*)"), "page() fails on non-page glob"); +ok(pagespec_match("foo", "page(foo)"), "page() glob"); +ok(pagespec_match("foo", "page(f*)"), "page() glob fail"); ok(pagespec_match("foo", "link(bar)"), "link"); ok(pagespec_match("foo", "link(ba?)"), "glob link"); ok(! pagespec_match("foo", "link(quux)"), "failed link"); -- cgit v1.2.3 From a6d38b7f26561e26b8c3d813f19b8eff736684d2 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 26 Apr 2010 19:01:31 -0400 Subject: update test suite for recent index load on rebuild changes --- t/index.t | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/t/index.t b/t/index.t index 44273059d..392a167e9 100755 --- a/t/index.t +++ b/t/index.t @@ -117,11 +117,14 @@ is_deeply(\%oldtypedlinks, { %pagesources=%pagemtime=%oldlinks=%links=%depends=%typedlinks=%oldtypedlinks= %destsources=%renderedfiles=%pagecase=%pagestate=(); -# When state is loaded for a wiki rebuild, only ctime and oldrenderedfiles -# are retained. +# When state is loaded for a wiki rebuild, only ctime, oldrenderedfiles, +# and pagesources are retained. $config{rebuild}=1; ok(loadindex(), "load index"); is_deeply(\%pagesources, { + Foo => "Foo.mdwn", + bar => "bar.mdwn", + "bar.png" => "bar.png", }, "%pagesources loaded correctly"); is_deeply(\%pagemtime, { }, "%pagemtime loaded correctly"); @@ -143,7 +146,10 @@ is_deeply(\%depends, { }, "%depends loaded correctly"); is_deeply(\%pagestate, { }, "%pagestate loaded correctly"); -is_deeply(\%pagecase, { +is_deeply(\%pagecase, { # generated implicitly since pagesources is loaded + foo => "Foo", + bar => "bar", + "bar.png" => "bar.png" }, "%pagecase generated correctly"); is_deeply(\%destsources, { }, "%destsources generated correctly"); -- cgit v1.2.3 From a9cf5810a6c6d2f266d9ddcc5b676f836d4d11e6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 27 Apr 2010 00:00:09 -0400 Subject: releasing version 3.20100427 --- debian/NEWS | 4 ++-- debian/changelog | 4 ++-- ikiwiki.spec | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/debian/NEWS b/debian/NEWS index f976bdc01..6a410866d 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -1,4 +1,4 @@ -ikiwiki (3.20100422) unstable; urgency=low +ikiwiki (3.20100427) unstable; urgency=low This version of ikiwiki has a lot of changes that you need to know about. @@ -42,7 +42,7 @@ ikiwiki (3.20100422) unstable; urgency=low this will be done automatically when the Debian package is upgraded. Or use ikiwiki-mass-rebuild to force a rebuild. - -- Joey Hess Wed, 21 Apr 2010 20:31:29 -0400 + -- Joey Hess Tue, 27 Apr 2010 00:00:00 -0400 ikiwiki (3.20091017) unstable; urgency=low diff --git a/debian/changelog b/debian/changelog index 610d0c9cb..411f67bd1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -ikiwiki (3.20100424) UNRELEASED; urgency=low +ikiwiki (3.20100427) unstable; urgency=low [ Joey Hess ] * tag: Automatic creation of tag pages can now be enabled using @@ -78,7 +78,7 @@ ikiwiki (3.20100424) UNRELEASED; urgency=low * Add page() PageSpec, which is like glob() but matches only pages, not other files. - -- Joey Hess Sun, 04 Apr 2010 12:17:11 -0400 + -- Joey Hess Tue, 27 Apr 2010 00:00:00 -0400 ikiwiki (3.20100403) unstable; urgency=low diff --git a/ikiwiki.spec b/ikiwiki.spec index fb7971b27..8d871eb21 100644 --- a/ikiwiki.spec +++ b/ikiwiki.spec @@ -1,5 +1,5 @@ Name: ikiwiki -Version: 3.20100403 +Version: 3.20100427 Release: 1%{?dist} Summary: A wiki compiler -- cgit v1.2.3 From 47dfa3b8b97c97532f4e49f9883b6a59a9036b40 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 27 Apr 2010 00:00:46 -0400 Subject: add news item for ikiwiki 3.20100427 --- doc/news/version_3.20100122.mdwn | 15 ------ doc/news/version_3.20100427.mdwn | 111 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+), 15 deletions(-) delete mode 100644 doc/news/version_3.20100122.mdwn create mode 100644 doc/news/version_3.20100427.mdwn diff --git a/doc/news/version_3.20100122.mdwn b/doc/news/version_3.20100122.mdwn deleted file mode 100644 index 11051fad8..000000000 --- a/doc/news/version_3.20100122.mdwn +++ /dev/null @@ -1,15 +0,0 @@ -ikiwiki 3.20100122 released with [[!toggle text="these changes"]] -[[!toggleable text=""" - * inline: Avoid showing edit links if page editing is disabled. - (Sjoerd) - * signinedit: Auto-disable the plugin when all authentication methods - are disabled. - * comments: Fix permalinks for comments using new conflict-free filenames. - * img: Support alignment of images with captions. (Giuseppe Bilotta) - * websetup: Fix utf-8 problems. - * websetup: Fix bug in array change detection. - * linkmap: Simplify and improve browser compatibility by using an img, - not object tag. - * git: The new git-notes feature in git 1.6.6 changes git log output - in a way that broke ikiwiki's parser if notes are added to commits. - * po: Avoid crash when a page is empty."""]] \ No newline at end of file diff --git a/doc/news/version_3.20100427.mdwn b/doc/news/version_3.20100427.mdwn new file mode 100644 index 000000000..5fe732f87 --- /dev/null +++ b/doc/news/version_3.20100427.mdwn @@ -0,0 +1,111 @@ +News for ikiwiki 3.20100427: + + This version of ikiwiki has a lot of changes that you need to know about. + Now you can include customised versions of templates in the source + of your wiki. (For example, templates/page.tmpl.) When these templates + are changed, ikiwiki will automatically rebuild pages that use them. + Allowing untrusted users to upload attachments with the ".tmpl" + extension is not recommended, as that allows anyone to change + a wiki's templates. + The --getctime switch is renamed to --gettimes, and it also gets the + file modification time. And it's a lot faster (when using git). But + the really important change is, you don't have to remember to use this + switch. Now ikiwiki will do it when it needs to. + At last, the "tagged()" pagespec only matches tags, not regular wikilinks. + If your wiki accidentially relied on the old, buggy behavior, you might + need to change its pagespecs to use "link()". + Many of your wishes have been answered: Now tag pages can automatically be + created when new tags are used. This feature is enabled by default if you + have configured a tagbase. It can be turned on or off using the + tag\_autocreate setting. + These changes may also affect some users: + * The title\_natural sort method (as used by the inline directive, etc) + has been moved to the new sortnaturally plugin, which is not enabled + by default since it requires the Sort::Naturally perl module. + * TMPL\_INCLUDE is no longer supported in any template used by ikiwiki. + It used to be allowed in certian templates, but not in others. + * The add\_templates option has been removed from the underlay plugin. + If you used this option, you can instead use templates/ subdirectories + inside underlay directories added by the add\_underlays option. + Due to the above and other changes, all wikis need to be rebuilt on + upgrade to this version. If you listed your wiki in /etc/ikiwiki/wikilist + this will be done automatically when the Debian package is upgraded. Or + use ikiwiki-mass-rebuild to force a rebuild. + +ikiwiki 3.20100427 released with [[!toggle text="these changes"]] +[[!toggleable text=""" + * [ Joey Hess ] + * tag: Automatic creation of tag pages can now be enabled using + the tag\_autocreate setting. (David Riebenbauer) + * Customised templates can now be included in the source of wikis + (and also in underlays), and dependencies on them are tracked. + * TMPL\_INCLUDE is no longer supported in any template. + * underlay: Removed the add\_templates option. + * Add template\_depends function to plugin API. + * bzr: Fix bzr log parsing to work with bzr 2.0. (liw) + * comments: Fix missing entity encoding in title. + * txt: Add a special case for robots.txt. + * [ Simon McVittie ] + * Add support for link types, and make the the tagged() pagespec only + match tags, not regular links (a bugfix). + * Rebuild wikis on upgrade to this version to get tag link types recorded + correctly. + * Revamp sorting system; allow new sort methods to be added by plugins, + and add a "sortspec" syntax that can combine, reverse, etc sort methods. + * meta: Add `meta(author)`, `meta(title)` etc sortspecs to allow sorting + by metadata. + * meta: Add optional sortas parameter to author and title meta directives. + This can be used to get names sorted by last name without displaying + them last name first. + * sortnaturally: New plugin; the title\_natural sort method has moved here. + * meta: store fields consistently unescaped, and escape on use. + (A wiki rebuild is also needed due to this change.) + * [ Joey Hess ] + * Update dependency for git-core to git transition. + * po: Check that translated underlay directories exist before using them + for master language. + * po: Configuring the same language as master and slave confuses processing; + so filter out such a misconfiguration. + * calendar: Add archive\_pagespec, which is used by ikiwiki-calendar to + specify which pages to include on the calendar archive pages. + (The pagespec can still also be specified on the ikiwiki-calendar command + line.) + * pagestats: Class parameter can be used to override default class for + custom styling. + * pagestats: Use style=list to get a list of tags, scaled by use like + in a tag cloud. This is useful to put in a sidebar. + * Rework example blog front page. + * CSS and templates for sidebar changed to use a class, not an id. + * sidebar: Now a sidebar directive can be used to override the sidebar + shown on a page. + * Enable calendar and sidebar in auto-blog.setup. + * sidebar: Add global\_sidebars setting. + * conditional: Fix bug that forced "all" mode off by default. + * calendarmonth.tmpl: The month calendar is now put in a sidebar. + * calendar: Improved display of arrows. + * Rename --getctime to --gettime. (The old name still works for + backwards compatibility.) + * --gettime now also looks up last modification time. + * Automatically run --gettime the first time ikiwiki is run on + a given srcdir. (Use --no-gettime to disable.) + * Add rcs\_getmtime to plugin API; currently only implemented + for git and svn. + * Optimise --gettime for git, so it's appropriately screamingly + fast. (This could be done for most other backends too.) + * However, --gettime for git no longer follows renames. That would + be slow, and whether a renamed wiki page is the same page is really + an iffy thing. + * Use above to fix up timestamps on docwiki, as well as ensure that + timestamps on basewiki files shipped in the deb are sane. + * autoindex: Switch to using %wikistate instead of abusing + $pagestate{index}. + * bzr: Support rcs\_getmtime, and fix rcs\_getctime implementation + (Jelmer Vernooij) + * Quite a lot of new optimisations, and one major fix to a recent + performance regression. + * Moved javascript files under the ikiwiki/ directory, to avoid cluttering + the top of the web root. This is another things that requires a wiki + rebuild on upgrade to this version. + * Fix removal of rendered files in rebuild mode. + * Add page() PageSpec, which is like glob() but matches only pages, + not other files."""]] \ No newline at end of file -- cgit v1.2.3 From 9daf3db277c31d3ce434253af2dfb7e0e436b5f9 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 27 Apr 2010 00:02:49 -0400 Subject: format --- doc/news/version_3.20100427.mdwn | 74 ++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 33 deletions(-) diff --git a/doc/news/version_3.20100427.mdwn b/doc/news/version_3.20100427.mdwn index 5fe732f87..1701fd670 100644 --- a/doc/news/version_3.20100427.mdwn +++ b/doc/news/version_3.20100427.mdwn @@ -1,36 +1,44 @@ -News for ikiwiki 3.20100427: +This version of ikiwiki has a lot of changes that you need to know about. - This version of ikiwiki has a lot of changes that you need to know about. - Now you can include customised versions of templates in the source - of your wiki. (For example, templates/page.tmpl.) When these templates - are changed, ikiwiki will automatically rebuild pages that use them. - Allowing untrusted users to upload attachments with the ".tmpl" - extension is not recommended, as that allows anyone to change - a wiki's templates. - The --getctime switch is renamed to --gettimes, and it also gets the - file modification time. And it's a lot faster (when using git). But - the really important change is, you don't have to remember to use this - switch. Now ikiwiki will do it when it needs to. - At last, the "tagged()" pagespec only matches tags, not regular wikilinks. - If your wiki accidentially relied on the old, buggy behavior, you might - need to change its pagespecs to use "link()". - Many of your wishes have been answered: Now tag pages can automatically be - created when new tags are used. This feature is enabled by default if you - have configured a tagbase. It can be turned on or off using the - tag\_autocreate setting. - These changes may also affect some users: - * The title\_natural sort method (as used by the inline directive, etc) - has been moved to the new sortnaturally plugin, which is not enabled - by default since it requires the Sort::Naturally perl module. - * TMPL\_INCLUDE is no longer supported in any template used by ikiwiki. - It used to be allowed in certian templates, but not in others. - * The add\_templates option has been removed from the underlay plugin. - If you used this option, you can instead use templates/ subdirectories - inside underlay directories added by the add\_underlays option. - Due to the above and other changes, all wikis need to be rebuilt on - upgrade to this version. If you listed your wiki in /etc/ikiwiki/wikilist - this will be done automatically when the Debian package is upgraded. Or - use ikiwiki-mass-rebuild to force a rebuild. +Now you can include customised versions of templates in the source +of your wiki. (For example, templates/page.tmpl.) When these templates +are changed, ikiwiki will automatically rebuild pages that use them. + +Allowing untrusted users to upload attachments with the ".tmpl" +extension is not recommended, as that allows anyone to change +a wiki's templates. + +The --getctime switch is renamed to --gettimes, and it also gets the +file modification time. And it's a lot faster (when using git). But +the really important change is, you don't have to remember to use this +switch. Now ikiwiki will do it when it needs to. + +At last, the "tagged()" pagespec only matches tags, not regular wikilinks. +If your wiki accidentially relied on the old, buggy behavior, you might +need to change its pagespecs to use "link()". + +Many of your wishes have been answered: Now tag pages can automatically be +created when new tags are used. This feature is enabled by default if you +have configured a tagbase. It can be turned on or off using the +`tag_autocreate` setting. + +These changes may also affect some users: + +* The `title_natural` sort method (as used by the inline directive, etc) + has been moved to the new sortnaturally plugin, which is not enabled + by default since it requires the Sort::Naturally perl module. + +* `TMPL_INCLUDE` is no longer supported in any template used by ikiwiki. + It used to be allowed in certian templates, but not in others. + +* The `add_templates` option has been removed from the underlay plugin. + If you used this option, you can instead use templates/ subdirectories + inside underlay directories added by the `add_underlays` option. + +Due to the above and other changes, all wikis need to be rebuilt on +upgrade to this version. If you listed your wiki in /etc/ikiwiki/wikilist +this will be done automatically when the Debian package is upgraded. Or +use ikiwiki-mass-rebuild to force a rebuild. ikiwiki 3.20100427 released with [[!toggle text="these changes"]] [[!toggleable text=""" @@ -108,4 +116,4 @@ ikiwiki 3.20100427 released with [[!toggle text="these changes"]] rebuild on upgrade to this version. * Fix removal of rendered files in rebuild mode. * Add page() PageSpec, which is like glob() but matches only pages, - not other files."""]] \ No newline at end of file + not other files."""]] -- cgit v1.2.3 From 0e7a3640aec280eb19330285308af6ad7535627f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 27 Apr 2010 12:10:58 -0400 Subject: template: Fix typo. --- IkiWiki/Plugin/template.pm | 2 +- debian/changelog | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/template.pm b/IkiWiki/Plugin/template.pm index 52c482c38..b8c2f05b2 100644 --- a/IkiWiki/Plugin/template.pm +++ b/IkiWiki/Plugin/template.pm @@ -53,7 +53,7 @@ sub preprocess (@) { foreach my $param (keys %params) { my $value=IkiWiki::preprocess($params{page}, $params{destpage}, - IkiWiki::filter($params{page}, $params{destpagea}, + IkiWiki::filter($params{page}, $params{destpage}, $params{$param}), $scan); if ($template->query(name => $param)) { my $htmlvalue=IkiWiki::htmlize($params{page}, $params{destpage}, diff --git a/debian/changelog b/debian/changelog index 411f67bd1..b19840865 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +ikiwiki (3.20100428) UNRELEASED; urgency=low + + * template: Fix typo. + + -- Joey Hess Tue, 27 Apr 2010 12:10:51 -0400 + ikiwiki (3.20100427) unstable; urgency=low [ Joey Hess ] -- cgit v1.2.3 From 67e8edc59712cfc3dbd24fd7f3aae0fa734983be Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Wed, 28 Apr 2010 03:22:37 +0000 Subject: question about TMPL_INCLUDE --- doc/news/version_3.20100427/discussion.mdwn | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 doc/news/version_3.20100427/discussion.mdwn diff --git a/doc/news/version_3.20100427/discussion.mdwn b/doc/news/version_3.20100427/discussion.mdwn new file mode 100644 index 000000000..4daf8085f --- /dev/null +++ b/doc/news/version_3.20100427/discussion.mdwn @@ -0,0 +1,3 @@ +*TMPL_INCLUDE is no longer supported in any template used by ikiwiki. It used to be allowed in certian templates, but not in others.* + +Would it be possible to make that a config option? Because I do use includes in my templates, and I don't allow users to edit templates, so it isn't a security loophole for me. --[[KathrynAndersen]] -- cgit v1.2.3 From a6e6f604bd8e9a8f90000163f8b00299829729d5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 28 Apr 2010 12:39:13 -0400 Subject: TMPL_INCLUDE re-enabled for templates read from the templatedir. (But not in-wiki templates.) --- IkiWiki.pm | 18 +++++++++++------- debian/changelog | 2 ++ doc/news/version_3.20100427/discussion.mdwn | 4 ++++ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 623396c9c..dcee376ee 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1661,7 +1661,11 @@ sub template_file ($) { } my $template=srcfile($tpage, 1); - if (! defined $template) { + if (defined $template) { + return $template, $tpage, 1 if wantarray; + return $template; + } + else { $name=~s:/::; # avoid path traversal foreach my $dir ($config{templatedir}, "$installdir/share/ikiwiki/templates") { @@ -1670,12 +1674,12 @@ sub template_file ($) { last; } } + if (defined $template) { + return $template, $tpage if wantarray; + return $template; + } } - if (defined $template) { - return $template, $tpage if wantarray; - return $template; - } return; } @@ -1683,7 +1687,7 @@ sub template_depends ($$;@) { my $name=shift; my $page=shift; - my ($filename, $tpage)=template_file($name); + my ($filename, $tpage, $untrusted)=template_file($name); if (defined $page && defined $tpage) { add_depends($page, $tpage); } @@ -1699,7 +1703,7 @@ sub template_depends ($$;@) { die_on_bad_params => 0, filename => $filename, @_, - no_includes => 1, + ($untrusted ? (no_includes => 1) : ()), ); return @opts if wantarray; diff --git a/debian/changelog b/debian/changelog index b19840865..0a70dc6ee 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,8 @@ ikiwiki (3.20100428) UNRELEASED; urgency=low * template: Fix typo. + * TMPL_INCLUDE re-enabled for templates read from the templatedir. + (But not in-wiki templates.) -- Joey Hess Tue, 27 Apr 2010 12:10:51 -0400 diff --git a/doc/news/version_3.20100427/discussion.mdwn b/doc/news/version_3.20100427/discussion.mdwn index 4daf8085f..726f9a0d2 100644 --- a/doc/news/version_3.20100427/discussion.mdwn +++ b/doc/news/version_3.20100427/discussion.mdwn @@ -1,3 +1,7 @@ *TMPL_INCLUDE is no longer supported in any template used by ikiwiki. It used to be allowed in certian templates, but not in others.* Would it be possible to make that a config option? Because I do use includes in my templates, and I don't allow users to edit templates, so it isn't a security loophole for me. --[[KathrynAndersen]] + +> I don't like config options that make wikis unsafe, but I should have +> revisted enabling includes for templates read from the templatedir -- +> it's easy to do, and I've done it now. --[[Joey]] -- cgit v1.2.3 From b61dc50dabaa76025cfcac1e139a80894abc3953 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 28 Apr 2010 12:42:14 -0400 Subject: remove obsolete NEWS --- debian/NEWS | 3 --- 1 file changed, 3 deletions(-) diff --git a/debian/NEWS b/debian/NEWS index 6a410866d..c9b8f3d09 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -30,9 +30,6 @@ ikiwiki (3.20100427) unstable; urgency=low has been moved to the new sortnaturally plugin, which is not enabled by default since it requires the Sort::Naturally perl module. - * TMPL_INCLUDE is no longer supported in any template used by ikiwiki. - It used to be allowed in certian templates, but not in others. - * The add_templates option has been removed from the underlay plugin. If you used this option, you can instead use templates/ subdirectories inside underlay directories added by the add_underlays option. -- cgit v1.2.3 From a5923e39995165bd75d4048d646a226a88be920b Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Thu, 29 Apr 2010 00:27:03 +0000 Subject: reply --- doc/news/version_3.20100427/discussion.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/news/version_3.20100427/discussion.mdwn b/doc/news/version_3.20100427/discussion.mdwn index 726f9a0d2..011f3d88f 100644 --- a/doc/news/version_3.20100427/discussion.mdwn +++ b/doc/news/version_3.20100427/discussion.mdwn @@ -5,3 +5,5 @@ Would it be possible to make that a config option? Because I do use includes in > I don't like config options that make wikis unsafe, but I should have > revisted enabling includes for templates read from the templatedir -- > it's easy to do, and I've done it now. --[[Joey]] + +>> Thank you! --[[KathrynAndersen]] -- cgit v1.2.3 From 0c7d2cf9b2773bd17c0ec549ed1ba833ff1913e1 Mon Sep 17 00:00:00 2001 From: albertlash Date: Thu, 29 Apr 2010 03:44:27 +0000 Subject: --- doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn b/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn index 683a3f8ac..31110f3c6 100644 --- a/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn +++ b/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn @@ -1,3 +1,11 @@ +20100428 - I just wrote a simple ruby script which will connect to a mysql server and then recreate the pages and their revision histories with Grit. It also does one simple conversion of equals titles to pounds. Enjoy! + +http://github.com/docunext/mediawiki2gitikiwiki + +-- [[users/Albert]] + +---- + The u32 page is excellent, but I wonder if documenting the procedure here would be worthwhile. Who knows, the remote site might disappear. But also there are some variations on the approach that might be useful: -- cgit v1.2.3 From ebde1ee2fd814e45e0e108bb1a9ba81499d86c87 Mon Sep 17 00:00:00 2001 From: albertlash Date: Thu, 29 Apr 2010 03:44:52 +0000 Subject: --- doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn b/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn index 31110f3c6..592a06a5b 100644 --- a/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn +++ b/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn @@ -1,6 +1,6 @@ 20100428 - I just wrote a simple ruby script which will connect to a mysql server and then recreate the pages and their revision histories with Grit. It also does one simple conversion of equals titles to pounds. Enjoy! -http://github.com/docunext/mediawiki2gitikiwiki + -- [[users/Albert]] -- cgit v1.2.3 From 8d7dba2fb274b024e7a8b5d8ce4414d3e5bf7420 Mon Sep 17 00:00:00 2001 From: "http://jmtd.livejournal.com/" Date: Thu, 29 Apr 2010 15:35:59 +0000 Subject: wl rcs --- doc/rcs/svn.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/rcs/svn.mdwn b/doc/rcs/svn.mdwn index f8c44b6eb..7aa682978 100644 --- a/doc/rcs/svn.mdwn +++ b/doc/rcs/svn.mdwn @@ -1,4 +1,4 @@ -[Subversion](http://subversion.tigris.org/) is a revision control system. While ikiwiki is relatively +[Subversion](http://subversion.tigris.org/) is a [[revision control system|rcs]]. While ikiwiki is relatively independent of the underlying revision control system, and can easily be used without one, using it with Subversion or another revision control system is recommended. -- cgit v1.2.3 From d57d2ecca722cb7c43d2b14ed31f38c3e204079c Mon Sep 17 00:00:00 2001 From: simonraven Date: Thu, 29 Apr 2010 16:18:15 +0000 Subject: YA URI to another mediawiki to git project --- doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn b/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn index 592a06a5b..8a2261543 100644 --- a/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn +++ b/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn @@ -657,3 +657,6 @@ page.--[[users/Chadius]] > on mediawiki in general. It seems to produce output that could be > used by the [[plugins/contrib/mediawiki]] plugin, if the filenames > were fixed to use the right extension. --[[Joey]] + +>> Here's another I found while browsing around starting from the link you gave Joey
+>> -- cgit v1.2.3 From f7f1dd3a3852ef158a577387faee2c34c4f9cfad Mon Sep 17 00:00:00 2001 From: simonraven Date: Thu, 29 Apr 2010 16:24:23 +0000 Subject: more to add on my comment --- doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn b/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn index 8a2261543..d67a9131b 100644 --- a/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn +++ b/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn @@ -659,4 +659,7 @@ page.--[[users/Chadius]] > were fixed to use the right extension. --[[Joey]] >> Here's another I found while browsing around starting from the link you gave Joey
->> +>>
+>> As I don't run mediawiki anymore, but I still have my xz/gzip-compressed XML dumps, +>> it's certainly easier for me to do it this way; also a file or a set of files is easier to lug +>> around on some medium than a full mysqld or postgres master and relevant databases. -- cgit v1.2.3 From 9fb15ec9fec8903776be0be01eaed0e7bb7d5009 Mon Sep 17 00:00:00 2001 From: Jon Dowland Date: Fri, 30 Apr 2010 16:48:19 +0100 Subject: new bug: svn commit failures... --- ...vn_commit_failures_interpreted_as_merge_conflicts.mdwn | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 doc/bugs/svn_commit_failures_interpreted_as_merge_conflicts.mdwn diff --git a/doc/bugs/svn_commit_failures_interpreted_as_merge_conflicts.mdwn b/doc/bugs/svn_commit_failures_interpreted_as_merge_conflicts.mdwn new file mode 100644 index 000000000..09753b4ee --- /dev/null +++ b/doc/bugs/svn_commit_failures_interpreted_as_merge_conflicts.mdwn @@ -0,0 +1,15 @@ +I'm attempting a merge with the SVN plugin via the web interface +with ikiwiki-3.20100403 and subversion 1.6.11. + +The web interface says + + Your changes conflict with other changes made to the page. + + Conflict markers have been inserted into the page content. Reconcile the conflict and commit again to save your changes. + +However there are no merge conflict markers in the page. My apache error log says: + + [Fri Apr 30 16:43:57 2010] [error] [client 10.64.64.42] svn: Commit failed (details follow):, referer: https://unixwiki.ncl.ac.uk/ikiwiki.cgi + [Fri Apr 30 16:43:57 2010] [error] [client 10.64.64.42] svn: Authorization failed, referer: https://unixwiki.ncl.ac.uk/ikiwiki.cgi + +-- [[Jon]] -- cgit v1.2.3 From 8ce5c7773884504c3936cb6e91e5a05ac4c1073d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 30 Apr 2010 13:06:52 -0400 Subject: Version dependency on liburi-perl to >= 1.36; previous versions did not support building urls from utf-8 strings. Closes: #579713 --- Bundle/IkiWiki.pm | 2 +- debian/changelog | 2 ++ debian/control | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Bundle/IkiWiki.pm b/Bundle/IkiWiki.pm index 769791d30..d6c344d6a 100644 --- a/Bundle/IkiWiki.pm +++ b/Bundle/IkiWiki.pm @@ -20,7 +20,7 @@ Text::Markdown HTML::Scrubber HTML::Template HTML::Parser -URI +URI 1.36 XML::Simple Date::Parse CGI::FormBuilder diff --git a/debian/changelog b/debian/changelog index 0a70dc6ee..a1bd85bfa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,8 @@ ikiwiki (3.20100428) UNRELEASED; urgency=low * template: Fix typo. * TMPL_INCLUDE re-enabled for templates read from the templatedir. (But not in-wiki templates.) + * Version dependency on liburi-perl to >= 1.36; previous versions + did not support building urls from utf-8 strings. Closes: #579713 -- Joey Hess Tue, 27 Apr 2010 12:10:51 -0400 diff --git a/debian/control b/debian/control index ae06f32b0..bba89d82e 100644 --- a/debian/control +++ b/debian/control @@ -6,7 +6,7 @@ Build-Depends-Indep: dpkg-dev (>= 1.9.0), libxml-simple-perl, libtext-markdown-perl | markdown, libtimedate-perl, libhtml-template-perl, libhtml-scrubber-perl, wdg-html-validator, - libhtml-parser-perl, liburi-perl, perlmagick, po4a (>= 0.34), + libhtml-parser-perl, liburi-perl (>= 1.36), perlmagick, po4a (>= 0.34), libfile-chdir-perl, Maintainer: Joey Hess Uploaders: Josh Triplett @@ -20,7 +20,7 @@ Architecture: all Depends: ${misc:Depends}, ${perl:Depends}, ${python:Depends}, libtext-markdown-perl | markdown, libhtml-scrubber-perl, libhtml-template-perl, - libhtml-parser-perl, liburi-perl + libhtml-parser-perl, liburi-perl (>= 1.36) Recommends: gcc | c-compiler, libc6-dev | libc-dev, subversion | git-core (>= 1:1.5.0) | git (>= 1:1.7) | tla | bzr (>= 0.91) | mercurial | monotone (>= 0.38) | darcs, -- cgit v1.2.3 From dd75b61d9332e50364f97fc04179ab895bfc2ef8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 30 Apr 2010 14:15:58 -0400 Subject: response --- doc/bugs/svn_commit_failures_interpreted_as_merge_conflicts.mdwn | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/bugs/svn_commit_failures_interpreted_as_merge_conflicts.mdwn b/doc/bugs/svn_commit_failures_interpreted_as_merge_conflicts.mdwn index 09753b4ee..0c9bce4b9 100644 --- a/doc/bugs/svn_commit_failures_interpreted_as_merge_conflicts.mdwn +++ b/doc/bugs/svn_commit_failures_interpreted_as_merge_conflicts.mdwn @@ -13,3 +13,9 @@ However there are no merge conflict markers in the page. My apache error log say [Fri Apr 30 16:43:57 2010] [error] [client 10.64.64.42] svn: Authorization failed, referer: https://unixwiki.ncl.ac.uk/ikiwiki.cgi -- [[Jon]] + +> Only way for this to be improved would be for the svn plugin to +> explicitly check the file for conflict markers. I guess it could +> change the error message then, but the actual behavior of putting the +> changed file back in the editor so the user can recommit is about right +> as far as error recovery goes. --[[Joey]] -- cgit v1.2.3 From 6293c62cac02fdc604f12db71462ee3f1af18f1d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 30 Apr 2010 17:26:41 -0400 Subject: no need to use HTML::Entities That module is unused now. Long long ago, it used to be used to encode data in the index. Checked all modules, and every module that uses it imports it. --- IkiWiki.pm | 1 - 1 file changed, 1 deletion(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index dcee376ee..5ff1a5ae6 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -5,7 +5,6 @@ package IkiWiki; use warnings; use strict; use Encode; -use HTML::Entities; use URI::Escape q{uri_escape_utf8}; use POSIX (); use Storable; -- cgit v1.2.3 From 3252df4aa8a35495bbaa8280ca13a545285e6192 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 15:27:32 -0400 Subject: comments, branch review, questions --- doc/bugs/html5_support.mdwn | 63 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/doc/bugs/html5_support.mdwn b/doc/bugs/html5_support.mdwn index 239474275..5d2a41303 100644 --- a/doc/bugs/html5_support.mdwn +++ b/doc/bugs/html5_support.mdwn @@ -9,10 +9,67 @@ HTML5](http://www.w3.org/TR/html5-diff/). * [ikiwiki instance with HTML5 templates](http://natalian.org) * [HTML5 outliner tool](http://gsnedders.html5.org/outliner/) -- to check you have the structure of your markup correct +> Kai, thanks enormously for working on this. I switched a page to +> the html5 doctype today, and was rather pleasently suprised that it +> validated, except for the new Cache-Control meta tag. Now I see you're +> well ahead of me. --[[Joey]] +> +> So, how should ikiwiki support html5? There are basically 3 approaches: +> +> 1. Allow users to add html5 tags to their existing xhtml pages. +> What has been done so far, can be extended. Basically works +> in browsers, if you don't care about standards. A good prerequisite +> for anything else, anyway. +> 2. Switch to html5 in eg, ikiwiki 4; users have to deal with +> any custom markup on their pages/templates that breaks then. +> 3. Have both a html5 and a xhtml mode, allow user to select. +> +> The third option seems fairly tractable from what I see here and in +> your branch. You made only relatively minor changes to 10 templates. +> It would probably not be too dreadful to put them in ifdefs. +> +> Some of your changes are obvious, like using the new `time` and +> and `article` elements. Others less so, and I'm particularly +> puzzled by these: +> +> * Removing the value="Submit" from the button on the +> commentmoderation form. +> * Removing feedlink.tmpl. What?! +> * Using a `h2` for the header of inlinepage.tmpl and page.tmpl, rather +> than the styled span. Ikiwiki has +> [[a_reason|todo/Option_to_make_title_an_h1?]] for not +> using real `hN` for the header atop a page and here. +> AFAICS, html5 does not invalidate that. +> * Removing Editurl from inlinepage.tmpl actions. I assume +> this is your own preference, needs to be removed from branch +> before I can use it. +> * Removing the pageheader, content, and footer divs +> which are all used by style.css. +> Perhaps, the style sheet needs to be updated to use +> the new elements, like the `footer` and `header`. +> * Removal of the favicon from page.tmpl. Surely html5 supports? +> * Removal of BASEURL from page.tmpl, apparently a mistake. +> * Removal of the `/` between wiki title and page title. +> Personal preference. +> * Removal of `comments` div, which is there to be styled. +> * Why use a `p` rather than the `div` for `addcomments`? +> * Moving the action bar to the bottom of the page. +> Personal preference. +> * Clearly searchquery.tmpl has no business using bad old `center` +> tag, but something should still be done to replace it. +> +> (BTW, it would be helpful if you could re-merge master into your branch +> as it is a bit diverged now.) --[[Joey]] + # htmlscrubber.pm needs to not scrub new HTML5 elements * [new elements](http://www.w3.org/TR/html5-diff/#new-elements) +> Most of these can be supported trivially, since they are just semantic +> markup. Make a list of these, and their attributes (and which attributes +> can contain urls or other javascript injection mechanisms), and I can add +> them. Others, like `embed`, and `canvas` are *scary*. --[[Joey]] + # HTML5 Validation and t/html.t [validator.nu](http://validator.nu/) is the authorative HTML5 validator, @@ -25,6 +82,9 @@ In the future, hopefully ikiwiki can test for valid HTML5 using [Relax NG schema](http://syntax.whattf.org/) using a Debian package tool [rnv](http://packages.qa.debian.org/r/rnv.html). +> Validation in the test suite is nice, but I am willing to lose those +> tests for a while. --[[Joey]] + # HTML5 migration issues # [article](http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-article-element) element @@ -45,3 +105,6 @@ As a workaround: au:~% grep timeformat natalian.setup timeformat => '%Y-%m-%d', + +> Also, the [[plugins/relativedate]] plugin needs to be updated to +> support relatatizing the contents of time elements. --[[Joey]] -- cgit v1.2.3 From 91c57b03c93a0b86f09cf8b066eadd7cecb73b65 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 15:32:30 -0400 Subject: limit feeds for tag pages to including ten posts With archive=yes, feeds default to including all, but that is expensive for automatically created tag pages. --- templates/autotag.tmpl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/autotag.tmpl b/templates/autotag.tmpl index f670982b6..6bc809d22 100644 --- a/templates/autotag.tmpl +++ b/templates/autotag.tmpl @@ -1,3 +1,4 @@ [[!meta title="tag "]] -[[!inline pages="tagged()" actions="no" archive="yes"]] +[[!inline pages="tagged()" actions="no" archive="yes" +feedshow=10]] -- cgit v1.2.3 From a034716009e29b1ef4bd44e0cddb7f7cf2fd93a2 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 15:35:52 -0400 Subject: update example tag pages to match autotag.tmpl --- doc/examples/blog/tags/life.mdwn | 6 +++--- doc/examples/blog/tags/tech.mdwn | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/examples/blog/tags/life.mdwn b/doc/examples/blog/tags/life.mdwn index 719f2b192..e1614dbdc 100644 --- a/doc/examples/blog/tags/life.mdwn +++ b/doc/examples/blog/tags/life.mdwn @@ -1,4 +1,4 @@ -This feed contains pages in the "life" category. +[[!meta title="tag life"]] -[[!inline pages="link(tags/life) and !*/Discussion" -show="10" actions=yes]] +[[!inline pages="tagged(tags/life)" actions="no" archive="yes" +feedshow=10]] diff --git a/doc/examples/blog/tags/tech.mdwn b/doc/examples/blog/tags/tech.mdwn index e811cac34..398146cdb 100644 --- a/doc/examples/blog/tags/tech.mdwn +++ b/doc/examples/blog/tags/tech.mdwn @@ -1,3 +1,4 @@ -This feed contains pages in the "tech" category. +[[!meta title="tag tech"]] -[[!inline pages="link(tags/tech) and !*/Discussion" show=10 actions=yes]] +[[!inline pages="tagged(tags/tech)" actions="no" archive="yes" +feedshow=10]] -- cgit v1.2.3 From 80f2042464f9d14bcaed999e9769c71618bf5252 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 16:34:47 -0400 Subject: htmlscrubber: Allow html5 semantic tags: section nav article aside hgroup header footer time mark --- IkiWiki/Plugin/htmlscrubber.pm | 9 ++++++--- debian/changelog | 2 ++ doc/bugs/html5_support.mdwn | 10 ++++++++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm index 9f40c752f..1604d776a 100644 --- a/IkiWiki/Plugin/htmlscrubber.pm +++ b/IkiWiki/Plugin/htmlscrubber.pm @@ -72,7 +72,7 @@ sub scrubber { eval q{use HTML::Scrubber}; error($@) if $@; # Lists based on http://feedparser.org/docs/html-sanitization.html - # With html 5 video and audio tags added. + # With html5 tags added. $_scrubber = HTML::Scrubber->new( allow => [qw{ a abbr acronym address area b big blockquote br br/ @@ -82,7 +82,9 @@ sub scrubber { menu ol optgroup option p p/ pre q s samp select small span strike strong sub sup table tbody td textarea tfoot th thead tr tt u ul var - video audio + + video audio section nav article aside hgroup header + footer time mark }], default => [undef, { ( map { $_ => 1 } qw{ @@ -98,8 +100,9 @@ sub scrubber { selected shape size span start summary tabindex target title type valign value vspace width + autoplay loopstart loopend end - playcount controls + playcount controls pubdate } ), "/" => 1, # emit proper
XHTML href => $safe_url_regexp, diff --git a/debian/changelog b/debian/changelog index a1bd85bfa..9a6cf68e3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,8 @@ ikiwiki (3.20100428) UNRELEASED; urgency=low (But not in-wiki templates.) * Version dependency on liburi-perl to >= 1.36; previous versions did not support building urls from utf-8 strings. Closes: #579713 + * htmlscrubber: Allow html5 semantic tags: section nav article aside hgroup + header footer time mark -- Joey Hess Tue, 27 Apr 2010 12:10:51 -0400 diff --git a/doc/bugs/html5_support.mdwn b/doc/bugs/html5_support.mdwn index 5d2a41303..a330d3ae6 100644 --- a/doc/bugs/html5_support.mdwn +++ b/doc/bugs/html5_support.mdwn @@ -59,7 +59,13 @@ HTML5](http://www.w3.org/TR/html5-diff/). > tag, but something should still be done to replace it. > > (BTW, it would be helpful if you could re-merge master into your branch -> as it is a bit diverged now.) --[[Joey]] +> as it is a bit diverged now.) +> +> Other ideas: +> +> * Add pubdate attribute to time elements as appropriate. +> * Use aside for the sidebar? Or for the [[templates/note]] template? +> --[[Joey]] # htmlscrubber.pm needs to not scrub new HTML5 elements @@ -68,7 +74,7 @@ HTML5](http://www.w3.org/TR/html5-diff/). > Most of these can be supported trivially, since they are just semantic > markup. Make a list of these, and their attributes (and which attributes > can contain urls or other javascript injection mechanisms), and I can add -> them. Others, like `embed`, and `canvas` are *scary*. --[[Joey]] +> them. (Added several now.) Others, like `embed`, and `canvas` are *scary*. --[[Joey]] # HTML5 Validation and t/html.t -- cgit v1.2.3 From 73c8209484ac730c82f7c7b749d08a1b3d895ee0 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 17:56:35 -0400 Subject: more html5 * htmlscrubber: Also allow html5 canvas tags. * htmlscrubber: Round out html5 video support with the preload attribute and the source tag. --- IkiWiki/Plugin/htmlscrubber.pm | 6 +++--- debian/changelog | 3 +++ doc/bugs/html5_support.mdwn | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm index 1604d776a..cc00fd5ff 100644 --- a/IkiWiki/Plugin/htmlscrubber.pm +++ b/IkiWiki/Plugin/htmlscrubber.pm @@ -83,8 +83,8 @@ sub scrubber { span strike strong sub sup table tbody td textarea tfoot th thead tr tt u ul var - video audio section nav article aside hgroup header - footer time mark + video audio source section nav article aside hgroup + header footer time mark canvas }], default => [undef, { ( map { $_ => 1 } qw{ @@ -101,7 +101,7 @@ sub scrubber { tabindex target title type valign value vspace width - autoplay loopstart loopend end + autoplay preload loopstart loopend end playcount controls pubdate } ), "/" => 1, # emit proper
XHTML diff --git a/debian/changelog b/debian/changelog index 9a6cf68e3..9613d8b6d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,9 @@ ikiwiki (3.20100428) UNRELEASED; urgency=low did not support building urls from utf-8 strings. Closes: #579713 * htmlscrubber: Allow html5 semantic tags: section nav article aside hgroup header footer time mark + * htmlscrubber: Also allow html5 canvas tags. + * htmlscrubber: Round out html5 video support with the preload + attribute and the source tag. -- Joey Hess Tue, 27 Apr 2010 12:10:51 -0400 diff --git a/doc/bugs/html5_support.mdwn b/doc/bugs/html5_support.mdwn index a330d3ae6..c05208fbf 100644 --- a/doc/bugs/html5_support.mdwn +++ b/doc/bugs/html5_support.mdwn @@ -65,6 +65,7 @@ HTML5](http://www.w3.org/TR/html5-diff/). > > * Add pubdate attribute to time elements as appropriate. > * Use aside for the sidebar? Or for the [[templates/note]] template? +> * Use nav for the actionbar > --[[Joey]] # htmlscrubber.pm needs to not scrub new HTML5 elements @@ -74,7 +75,7 @@ HTML5](http://www.w3.org/TR/html5-diff/). > Most of these can be supported trivially, since they are just semantic > markup. Make a list of these, and their attributes (and which attributes > can contain urls or other javascript injection mechanisms), and I can add -> them. (Added several now.) Others, like `embed`, and `canvas` are *scary*. --[[Joey]] +> them. (Added several now.) Others, like `embed` are *scary*. --[[Joey]] # HTML5 Validation and t/html.t -- cgit v1.2.3 From 442bc59a15301941613d62f4b1d846c57557ca8f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 18:14:50 -0400 Subject: htmlscrubber: Allow the placeholder attribute. --- IkiWiki/Plugin/htmlscrubber.pm | 2 +- debian/changelog | 1 + doc/bugs/html5_support.mdwn | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm index cc00fd5ff..b3f659f73 100644 --- a/IkiWiki/Plugin/htmlscrubber.pm +++ b/IkiWiki/Plugin/htmlscrubber.pm @@ -102,7 +102,7 @@ sub scrubber { value vspace width autoplay preload loopstart loopend end - playcount controls pubdate + playcount controls pubdate placeholder } ), "/" => 1, # emit proper
XHTML href => $safe_url_regexp, diff --git a/debian/changelog b/debian/changelog index 9613d8b6d..951caab9e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,7 @@ ikiwiki (3.20100428) UNRELEASED; urgency=low * htmlscrubber: Also allow html5 canvas tags. * htmlscrubber: Round out html5 video support with the preload attribute and the source tag. + * htmlscrubber: Allow the placeholder attribute. -- Joey Hess Tue, 27 Apr 2010 12:10:51 -0400 diff --git a/doc/bugs/html5_support.mdwn b/doc/bugs/html5_support.mdwn index c05208fbf..9c077a2d3 100644 --- a/doc/bugs/html5_support.mdwn +++ b/doc/bugs/html5_support.mdwn @@ -66,6 +66,8 @@ HTML5](http://www.w3.org/TR/html5-diff/). > * Add pubdate attribute to time elements as appropriate. > * Use aside for the sidebar? Or for the [[templates/note]] template? > * Use nav for the actionbar +> * Use placeholder in the search box. Allows closing +> [[this_todo|Add_label_to_search_form_input_field]] > --[[Joey]] # htmlscrubber.pm needs to not scrub new HTML5 elements -- cgit v1.2.3 From 0a139aba823ece3166d29ff2daee0b5c9507b52f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 18:27:53 -0400 Subject: htmlscrubber: Allow the html5 form attributes: placeholder autofocus, min, max, step. --- IkiWiki/Plugin/htmlscrubber.pm | 5 +++-- debian/changelog | 3 ++- doc/todo/Add_label_to_search_form_input_field.mdwn | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm index b3f659f73..479e10e74 100644 --- a/IkiWiki/Plugin/htmlscrubber.pm +++ b/IkiWiki/Plugin/htmlscrubber.pm @@ -101,8 +101,9 @@ sub scrubber { tabindex target title type valign value vspace width - autoplay preload loopstart loopend end - playcount controls pubdate placeholder + autofocus autoplay preload loopstart + loopend end playcount controls pubdate + placeholder min max step } ), "/" => 1, # emit proper
XHTML href => $safe_url_regexp, diff --git a/debian/changelog b/debian/changelog index 951caab9e..12ef08a91 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,7 +10,8 @@ ikiwiki (3.20100428) UNRELEASED; urgency=low * htmlscrubber: Also allow html5 canvas tags. * htmlscrubber: Round out html5 video support with the preload attribute and the source tag. - * htmlscrubber: Allow the placeholder attribute. + * htmlscrubber: Allow the html5 form attributes: placeholder autofocus, + min, max, step. -- Joey Hess Tue, 27 Apr 2010 12:10:51 -0400 diff --git a/doc/todo/Add_label_to_search_form_input_field.mdwn b/doc/todo/Add_label_to_search_form_input_field.mdwn index 51b34927d..281ab48e2 100644 --- a/doc/todo/Add_label_to_search_form_input_field.mdwn +++ b/doc/todo/Add_label_to_search_form_input_field.mdwn @@ -51,4 +51,4 @@ The patch below adds a label for the field to improve usability: > element. already works in eg, chromium. However, ikiwiki does not use > html5 yet. --[[Joey]] -[[!tag wishlist html5]] +[[!tag wishlist bugs/html5_support]] -- cgit v1.2.3 From 80f9a2a0879f74e86b2720ca7d1c88ee165100ea Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 18:31:33 -0400 Subject: add figure and figcaption --- IkiWiki/Plugin/htmlscrubber.pm | 2 +- debian/changelog | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm index 479e10e74..0090b67b9 100644 --- a/IkiWiki/Plugin/htmlscrubber.pm +++ b/IkiWiki/Plugin/htmlscrubber.pm @@ -84,7 +84,7 @@ sub scrubber { tfoot th thead tr tt u ul var video audio source section nav article aside hgroup - header footer time mark canvas + header footer figure figcaption time mark canvas }], default => [undef, { ( map { $_ => 1 } qw{ diff --git a/debian/changelog b/debian/changelog index 12ef08a91..108764c39 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,7 +6,7 @@ ikiwiki (3.20100428) UNRELEASED; urgency=low * Version dependency on liburi-perl to >= 1.36; previous versions did not support building urls from utf-8 strings. Closes: #579713 * htmlscrubber: Allow html5 semantic tags: section nav article aside hgroup - header footer time mark + header footer figure figcaption time mark * htmlscrubber: Also allow html5 canvas tags. * htmlscrubber: Round out html5 video support with the preload attribute and the source tag. -- cgit v1.2.3 From 78cee5140ac37f93cd2e87d8a03d71420303eb13 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 18:44:37 -0400 Subject: add rest of html5 form attributes It's easy to imagine pattern being used to freeze or crash browsers, if they implement it stupidly. Let's hope not.. --- IkiWiki/Plugin/htmlscrubber.pm | 2 +- debian/changelog | 2 +- doc/bugs/html5_support.mdwn | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm index 0090b67b9..7517c82c6 100644 --- a/IkiWiki/Plugin/htmlscrubber.pm +++ b/IkiWiki/Plugin/htmlscrubber.pm @@ -103,7 +103,7 @@ sub scrubber { autofocus autoplay preload loopstart loopend end playcount controls pubdate - placeholder min max step + placeholder min max step form required } ), "/" => 1, # emit proper
XHTML href => $safe_url_regexp, diff --git a/debian/changelog b/debian/changelog index 108764c39..cdc79ae78 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,7 +11,7 @@ ikiwiki (3.20100428) UNRELEASED; urgency=low * htmlscrubber: Round out html5 video support with the preload attribute and the source tag. * htmlscrubber: Allow the html5 form attributes: placeholder autofocus, - min, max, step. + min, max, step, required, autocomplete, novalidate, pattern, and form. -- Joey Hess Tue, 27 Apr 2010 12:10:51 -0400 diff --git a/doc/bugs/html5_support.mdwn b/doc/bugs/html5_support.mdwn index 9c077a2d3..7d9dc9f79 100644 --- a/doc/bugs/html5_support.mdwn +++ b/doc/bugs/html5_support.mdwn @@ -79,6 +79,10 @@ HTML5](http://www.w3.org/TR/html5-diff/). > can contain urls or other javascript injection mechanisms), and I can add > them. (Added several now.) Others, like `embed` are *scary*. --[[Joey]] +> I have not added the new `ping` attribute, because parsing a +> space-separeated list of urls to avoid javascript injection is annoying, +> and the attribute seems generally dubious. --[[Joey]] + # HTML5 Validation and t/html.t [validator.nu](http://validator.nu/) is the authorative HTML5 validator, -- cgit v1.2.3 From f1e2d0af123352b692e8e4efdb208e370a00d3c1 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 19:11:03 -0400 Subject: more html5 attributes --- IkiWiki/Plugin/htmlscrubber.pm | 5 +++++ debian/changelog | 4 ++++ doc/bugs/html5_support.mdwn | 5 ++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm index 7517c82c6..d52614a4d 100644 --- a/IkiWiki/Plugin/htmlscrubber.pm +++ b/IkiWiki/Plugin/htmlscrubber.pm @@ -85,6 +85,7 @@ sub scrubber { video audio source section nav article aside hgroup header footer figure figcaption time mark canvas + datalist }], default => [undef, { ( map { $_ => 1 } qw{ @@ -104,11 +105,15 @@ sub scrubber { autofocus autoplay preload loopstart loopend end playcount controls pubdate placeholder min max step form required + autocomplete novalidate pattern list + formenctype formmethod formnovalidate + formtarget reversed } ), "/" => 1, # emit proper
XHTML href => $safe_url_regexp, src => $safe_url_regexp, action => $safe_url_regexp, + formaction => $safe_url_regexp, cite => $safe_url_regexp, longdesc => $safe_url_regexp, poster => $safe_url_regexp, diff --git a/debian/changelog b/debian/changelog index cdc79ae78..e0f506f29 100644 --- a/debian/changelog +++ b/debian/changelog @@ -12,6 +12,10 @@ ikiwiki (3.20100428) UNRELEASED; urgency=low attribute and the source tag. * htmlscrubber: Allow the html5 form attributes: placeholder autofocus, min, max, step, required, autocomplete, novalidate, pattern, and form. + (Also the form* override attributes for input and buttons.) + * htmlscrubber: Allow the html5 datalist element, and the form list + attribute. + * htmlscrubber: Allow the html5 reversed and spellcheck attributes. -- Joey Hess Tue, 27 Apr 2010 12:10:51 -0400 diff --git a/doc/bugs/html5_support.mdwn b/doc/bugs/html5_support.mdwn index 7d9dc9f79..1ca45f46d 100644 --- a/doc/bugs/html5_support.mdwn +++ b/doc/bugs/html5_support.mdwn @@ -81,7 +81,10 @@ HTML5](http://www.w3.org/TR/html5-diff/). > I have not added the new `ping` attribute, because parsing a > space-separeated list of urls to avoid javascript injection is annoying, -> and the attribute seems generally dubious. --[[Joey]] +> and the attribute seems generally dubious. +> +> Need to understand better the attributes contenteditabl, contextmenu, +> data-*, draggable, hidden, role, aria-*. Have not added those. --[[Joey]] # HTML5 Validation and t/html.t -- cgit v1.2.3 From 790a339db18f1c697052446728641c9e6ef06bdb Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 19:28:28 -0400 Subject: htmlscrubber: Also allow some other html5 tags: canvas, progress, meter, ruby, rt, rp, details, summary. --- IkiWiki/Plugin/htmlscrubber.pm | 10 +++++----- debian/changelog | 3 ++- doc/bugs/html5_support.mdwn | 22 ++++++++++++++-------- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm index d52614a4d..505a6f142 100644 --- a/IkiWiki/Plugin/htmlscrubber.pm +++ b/IkiWiki/Plugin/htmlscrubber.pm @@ -85,7 +85,7 @@ sub scrubber { video audio source section nav article aside hgroup header footer figure figcaption time mark canvas - datalist + datalist progress meter ruby rt rp details summary }], default => [undef, { ( map { $_ => 1 } qw{ @@ -104,10 +104,10 @@ sub scrubber { autofocus autoplay preload loopstart loopend end playcount controls pubdate - placeholder min max step form required - autocomplete novalidate pattern list - formenctype formmethod formnovalidate - formtarget reversed + placeholder min max step low high optimum + form required autocomplete novalidate pattern + list formenctype formmethod formnovalidate + formtarget reversed spellcheck open } ), "/" => 1, # emit proper
XHTML href => $safe_url_regexp, diff --git a/debian/changelog b/debian/changelog index e0f506f29..3d33f3bfc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,7 +7,8 @@ ikiwiki (3.20100428) UNRELEASED; urgency=low did not support building urls from utf-8 strings. Closes: #579713 * htmlscrubber: Allow html5 semantic tags: section nav article aside hgroup header footer figure figcaption time mark - * htmlscrubber: Also allow html5 canvas tags. + * htmlscrubber: Also allow some other html5 tags: canvas, progress, meter, + ruby, rt, rp, details, summary. * htmlscrubber: Round out html5 video support with the preload attribute and the source tag. * htmlscrubber: Allow the html5 form attributes: placeholder autofocus, diff --git a/doc/bugs/html5_support.mdwn b/doc/bugs/html5_support.mdwn index 1ca45f46d..48b63b29a 100644 --- a/doc/bugs/html5_support.mdwn +++ b/doc/bugs/html5_support.mdwn @@ -68,23 +68,29 @@ HTML5](http://www.w3.org/TR/html5-diff/). > * Use nav for the actionbar > * Use placeholder in the search box. Allows closing > [[this_todo|Add_label_to_search_form_input_field]] +> * Use details tag instead of the javascript in the toggle plugin. +> (Need to wait on browser support probably.) > --[[Joey]] # htmlscrubber.pm needs to not scrub new HTML5 elements * [new elements](http://www.w3.org/TR/html5-diff/#new-elements) -> Most of these can be supported trivially, since they are just semantic -> markup. Make a list of these, and their attributes (and which attributes -> can contain urls or other javascript injection mechanisms), and I can add -> them. (Added several now.) Others, like `embed` are *scary*. --[[Joey]] - +> Many added now. +> +> Things I left out, too hard to understand today: +> Attributes contenteditabl, contextmenu, +> data-*, draggable, hidden, role, aria-*. Tags command, keygen, +> output. +> +> Clearly unsafe: embed. +> +> Apparently cannot be used w/o javascript: menu. +> > I have not added the new `ping` attribute, because parsing a > space-separeated list of urls to avoid javascript injection is annoying, > and the attribute seems generally dubious. -> -> Need to understand better the attributes contenteditabl, contextmenu, -> data-*, draggable, hidden, role, aria-*. Have not added those. --[[Joey]] +> --[[Joey]] # HTML5 Validation and t/html.t -- cgit v1.2.3 From 704263534ab645d34bc58261eb8d488413f1d80e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 19:33:24 -0400 Subject: apply simonrvn patch to quote attributes --- templates/change.tmpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/change.tmpl b/templates/change.tmpl index c9f6ce42b..5f277a0fb 100644 --- a/templates/change.tmpl +++ b/templates/change.tmpl @@ -29,7 +29,7 @@
Date:
-
+

@@ -37,7 +37,7 @@
-
+
 
 
-- cgit v1.2.3 From 930a60ae1dfa6c376b4d4b43f6383967d37f7f17 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 19:37:27 -0400 Subject: apply simonrvn patch adding labels for radio buttons and other minor html improvement --- templates/commentmoderation.tmpl | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/templates/commentmoderation.tmpl b/templates/commentmoderation.tmpl index e91d3146d..297886407 100644 --- a/templates/commentmoderation.tmpl +++ b/templates/commentmoderation.tmpl @@ -4,23 +4,26 @@ -Reject -all comments marked Defer -
+ + +
-Defer -Accept -Reject + + + + + +

-Reject -all comments marked Defer + +

-- cgit v1.2.3 From ccafb10007731d04e0ff6aa36978690e6dfa6dec Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 19:59:16 -0400 Subject: enable hidden attribute --- IkiWiki/Plugin/htmlscrubber.pm | 2 +- debian/changelog | 17 ++++++++--------- doc/bugs/html5_support.mdwn | 6 +++--- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm index 505a6f142..847518178 100644 --- a/IkiWiki/Plugin/htmlscrubber.pm +++ b/IkiWiki/Plugin/htmlscrubber.pm @@ -107,7 +107,7 @@ sub scrubber { placeholder min max step low high optimum form required autocomplete novalidate pattern list formenctype formmethod formnovalidate - formtarget reversed spellcheck open + formtarget reversed spellcheck open hidden } ), "/" => 1, # emit proper


XHTML href => $safe_url_regexp, diff --git a/debian/changelog b/debian/changelog index 3d33f3bfc..8bf6f89b6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,18 +5,17 @@ ikiwiki (3.20100428) UNRELEASED; urgency=low (But not in-wiki templates.) * Version dependency on liburi-perl to >= 1.36; previous versions did not support building urls from utf-8 strings. Closes: #579713 - * htmlscrubber: Allow html5 semantic tags: section nav article aside hgroup - header footer figure figcaption time mark + * htmlscrubber: Allow html5 semantic tags: section, nav, article, aside + hgroup, header, footer, figure, figcaption, time, mark * htmlscrubber: Also allow some other html5 tags: canvas, progress, meter, - ruby, rt, rp, details, summary. + ruby, rt, rp, details, summary, datalist. * htmlscrubber: Round out html5 video support with the preload attribute and the source tag. - * htmlscrubber: Allow the html5 form attributes: placeholder autofocus, - min, max, step, required, autocomplete, novalidate, pattern, and form. - (Also the form* override attributes for input and buttons.) - * htmlscrubber: Allow the html5 datalist element, and the form list - attribute. - * htmlscrubber: Allow the html5 reversed and spellcheck attributes. + * htmlscrubber: Allow the html5 form attributes: placeholder, autofocus, + min, max, step, required, autocomplete, novalidate, pattern, list, + and form. (Also the form* override attributes for input and buttons.) + * htmlscrubber: Allow additional misc html5 attributes: reversed, + spellcheck, and hidden. -- Joey Hess Tue, 27 Apr 2010 12:10:51 -0400 diff --git a/doc/bugs/html5_support.mdwn b/doc/bugs/html5_support.mdwn index 48b63b29a..2d27ac803 100644 --- a/doc/bugs/html5_support.mdwn +++ b/doc/bugs/html5_support.mdwn @@ -79,9 +79,9 @@ HTML5](http://www.w3.org/TR/html5-diff/). > Many added now. > > Things I left out, too hard to understand today: -> Attributes contenteditabl, contextmenu, -> data-*, draggable, hidden, role, aria-*. Tags command, keygen, -> output. +> Attributes contenteditable, +> data-\*, draggable, role, aria-\*. +> Tags command, keygen, output. > > Clearly unsafe: embed. > -- cgit v1.2.3 From a547d2685866898665fad221939b0b820a42a088 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 20:40:31 -0400 Subject: html5 option * Ikiwiki can be configured to generate html5 instead of the default xhtml 1.0. The html5 output mode is experimental, not yet fully standards compliant, and will be subject to rapid change. --- IkiWiki.pm | 8 ++++++++ IkiWiki/Render.pm | 1 + debian/changelog | 5 ++++- doc/bugs/html5_support.mdwn | 12 +++++++----- doc/roadmap.mdwn | 1 + templates/misc.tmpl | 5 ++++- templates/page.tmpl | 5 ++++- 7 files changed, 29 insertions(+), 8 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 5ff1a5ae6..1e11d34e2 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -234,6 +234,13 @@ sub getsetup () { safe => 1, rebuild => 1, }, + html5 => { + type => "boolean", + default => 0, + description => "generate HTML5? (experimental)", + safe => 1, + rebuild => 1, + }, sslcookie => { type => "boolean", default => 0, @@ -1725,6 +1732,7 @@ sub misctemplate ($$;@) { wikiname => $config{wikiname}, pagebody => $pagebody, baseurl => baseurl(), + html5 => $config{html5}, @_, ); run_hooks(pagetemplate => sub { diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 7e3d78861..5923f5e74 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -138,6 +138,7 @@ sub genpage ($$) { mtime => displaytime($pagemtime{$page}), ctime => displaytime($pagectime{$page}), baseurl => baseurl($page), + html5 => $config{html5}, ); run_hooks(pagetemplate => sub { diff --git a/debian/changelog b/debian/changelog index 8bf6f89b6..fc5a6124b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,12 @@ ikiwiki (3.20100428) UNRELEASED; urgency=low - * template: Fix typo. * TMPL_INCLUDE re-enabled for templates read from the templatedir. (But not in-wiki templates.) * Version dependency on liburi-perl to >= 1.36; previous versions did not support building urls from utf-8 strings. Closes: #579713 + * Ikiwiki can be configured to generate html5 instead of the default xhtml + 1.0. The html5 output mode is experimental, not yet fully standards + compliant, and will be subject to rapid change. * htmlscrubber: Allow html5 semantic tags: section, nav, article, aside hgroup, header, footer, figure, figcaption, time, mark * htmlscrubber: Also allow some other html5 tags: canvas, progress, meter, @@ -16,6 +18,7 @@ ikiwiki (3.20100428) UNRELEASED; urgency=low and form. (Also the form* override attributes for input and buttons.) * htmlscrubber: Allow additional misc html5 attributes: reversed, spellcheck, and hidden. + * template: Fix typo. -- Joey Hess Tue, 27 Apr 2010 12:10:51 -0400 diff --git a/doc/bugs/html5_support.mdwn b/doc/bugs/html5_support.mdwn index 2d27ac803..bf782a3bf 100644 --- a/doc/bugs/html5_support.mdwn +++ b/doc/bugs/html5_support.mdwn @@ -20,13 +20,14 @@ HTML5](http://www.w3.org/TR/html5-diff/). > What has been done so far, can be extended. Basically works > in browsers, if you don't care about standards. A good prerequisite > for anything else, anyway. -> 2. Switch to html5 in eg, ikiwiki 4; users have to deal with +> 2. Have both a html5 and a xhtml mode, allow user to select. +> 3. Switch to html5 in eg, ikiwiki 4; users have to deal with > any custom markup on their pages/templates that breaks then. -> 3. Have both a html5 and a xhtml mode, allow user to select. -> -> The third option seems fairly tractable from what I see here and in +> +> The second option seems fairly tractable from what I see here and in > your branch. You made only relatively minor changes to 10 templates. -> It would probably not be too dreadful to put them in ifdefs. +> It would probably not be too dreadful to put them in ifdefs. I've made a +> small start at doing that. > > Some of your changes are obvious, like using the new `time` and > and `article` elements. Others less so, and I'm particularly @@ -70,6 +71,7 @@ HTML5](http://www.w3.org/TR/html5-diff/). > [[this_todo|Add_label_to_search_form_input_field]] > * Use details tag instead of the javascript in the toggle plugin. > (Need to wait on browser support probably.) +> > --[[Joey]] # htmlscrubber.pm needs to not scrub new HTML5 elements diff --git a/doc/roadmap.mdwn b/doc/roadmap.mdwn index c126fd585..4b5f01c45 100644 --- a/doc/roadmap.mdwn +++ b/doc/roadmap.mdwn @@ -80,6 +80,7 @@ Probably incomplete list: * YADA format setup files per default? * Enable tagbase by default (so that tag autocreation will work by default). Note that this is already done for wikis created by `auto-blog.setup`. +* html5 on by default (some day..) In general, we try to use [[ikiwiki-transition]] or forced rebuilds on upgrade to deal with changes that break compatability. Some things that diff --git a/templates/misc.tmpl b/templates/misc.tmpl index 535a6f06b..0b7fefa08 100644 --- a/templates/misc.tmpl +++ b/templates/misc.tmpl @@ -1,6 +1,9 @@ - + + + diff --git a/templates/page.tmpl b/templates/page.tmpl index 7e850a56b..661d4a515 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -1,6 +1,9 @@ - + + + -- cgit v1.2.3 From 8e4af6a8e2a8e8d9b7d9f4312c4216261ebd5a28 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 20:57:54 -0400 Subject: tidy plugin issue --- doc/bugs/html5_support.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/bugs/html5_support.mdwn b/doc/bugs/html5_support.mdwn index bf782a3bf..dca60d57e 100644 --- a/doc/bugs/html5_support.mdwn +++ b/doc/bugs/html5_support.mdwn @@ -132,3 +132,7 @@ As a workaround: > Also, the [[plugins/relativedate]] plugin needs to be updated to > support relatatizing the contents of time elements. --[[Joey]] + +## tidy plugin + +Will reformat html5 to html4. -- cgit v1.2.3 From 1226269f683bce6bf3a0539f0374ee1844687b02 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 21:00:06 -0400 Subject: mention html5 --- doc/features.mdwn | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/features.mdwn b/doc/features.mdwn index 07ce648ea..215c1cecd 100644 --- a/doc/features.mdwn +++ b/doc/features.mdwn @@ -71,8 +71,10 @@ you would care to syndicate. ## Valid html and [[css]] Ikiwiki aims to produce -[valid XHTML 1.0](http://validator.w3.org/check?url=referer). Ikiwiki -generates html using [[templates]], and uses [[css]], so you +[valid XHTML 1.0](http://validator.w3.org/check?url=referer). +(Experimental HTML5 support is also available.) + +Ikiwiki generates html using [[templates]], and uses [[css]], so you can change the look and layout of all pages in any way you would like. ## [[Plugins]] -- cgit v1.2.3 From 0ec1fe1944f88ed285bb467e143c4967af11ad5c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 21:04:14 -0400 Subject: set html5 option as advanced for now --- IkiWiki.pm | 1 + 1 file changed, 1 insertion(+) diff --git a/IkiWiki.pm b/IkiWiki.pm index 1e11d34e2..ed57710bb 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -238,6 +238,7 @@ sub getsetup () { type => "boolean", default => 0, description => "generate HTML5? (experimental)", + advanced => 1, safe => 1, rebuild => 1, }, -- cgit v1.2.3 From 0dc6235659b4638f148af2d570d470e47ce9eb76 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 21:14:05 -0400 Subject: use styled divs instead of center tags More could be done to modernize this html, but I don't want to diverge too far from the one in xapian. --- templates/searchquery.tmpl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/templates/searchquery.tmpl b/templates/searchquery.tmpl index 782b12cab..5b9fbbf7f 100644 --- a/templates/searchquery.tmpl +++ b/templates/searchquery.tmpl @@ -33,7 +33,7 @@ $def{NEXT,$if{$ne{$last,$msize},}}
-
+
$env{HELPLINK} @@ -54,7 +54,7 @@ $if{$not{$msizeexact}, $nice{$add{$topdoc,1}}$if{$ne{$add{$topdoc,1},$last},-$nice{$last}} of exactly $nice{$msize} matches} }
-
+
$list{$map{$queryterms,$list{$html{$uniq{$unstem{$_}}},,/,}: $nice{$freq{$_}}},Term frequencies: ,$. ,}
Search took $time seconds @@ -77,8 +77,9 @@ $percentage% relevant$. matching: $list{$map{$terms,$html{$prettyterm{$_}}},$. , and }${for lynx:}

}

-
+
+
${suppress next, prev, and page links if there's only one page} $if{$ne{$lastpage,1}, $set{a,$if{$opt{pagelink_height}, HEIGHT=$opt{pagelink_height}}$if{$opt{pagelink_width}, WIDTH=$opt{pagelink_width}}} @@ -97,7 +98,7 @@ $if{$ne{$opt{y},$lastpage},...} $NEXT } }} -

+

$if{$dbname,} $if{$ne{$topdoc,0},} $if{$ne{$hitsperpage,10},} -- cgit v1.2.3 From d9e22adb6639e3c6cb4fe46d146940fa2182db4f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 21:42:13 -0400 Subject: releasing version 3.20100501 --- debian/changelog | 4 +- ikiwiki.spec | 2 +- po/ikiwiki.pot | 74 ++++++++--------- po/tr.po | 226 ++++++++++++++++++++++++++------------------------- po/vi.po | 240 +++++++++++++++++++++++++++++-------------------------- 5 files changed, 282 insertions(+), 264 deletions(-) diff --git a/debian/changelog b/debian/changelog index fc5a6124b..6962e5171 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -ikiwiki (3.20100428) UNRELEASED; urgency=low +ikiwiki (3.20100501) unstable; urgency=low * TMPL_INCLUDE re-enabled for templates read from the templatedir. (But not in-wiki templates.) @@ -20,7 +20,7 @@ ikiwiki (3.20100428) UNRELEASED; urgency=low spellcheck, and hidden. * template: Fix typo. - -- Joey Hess Tue, 27 Apr 2010 12:10:51 -0400 + -- Joey Hess Sat, 01 May 2010 20:49:28 -0400 ikiwiki (3.20100427) unstable; urgency=low diff --git a/ikiwiki.spec b/ikiwiki.spec index 8d871eb21..b107f28eb 100644 --- a/ikiwiki.spec +++ b/ikiwiki.spec @@ -1,5 +1,5 @@ Name: ikiwiki -Version: 3.20100427 +Version: 3.20100501 Release: 1%{?dist} Summary: A wiki compiler diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index 638e724d5..5e2f05b27 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: 2010-04-24 16:15-0400\n" +"POT-Creation-Date: 2010-05-01 21:16-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -55,7 +55,7 @@ msgstr "" msgid "You are banned." msgstr "" -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1291 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1298 msgid "Error" msgstr "" @@ -487,7 +487,7 @@ msgstr "" msgid "redir cycle is not allowed" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:383 +#: ../IkiWiki/Plugin/meta.pm:387 msgid "sort=meta requires a parameter" msgstr "" @@ -607,7 +607,7 @@ msgstr "" msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:392 ../IkiWiki/Render.pm:761 +#: ../IkiWiki/Plugin/po.pm:392 ../IkiWiki/Render.pm:772 #, perl-format msgid "building %s" msgstr "" @@ -628,50 +628,50 @@ msgid "" "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:873 +#: ../IkiWiki/Plugin/po.pm:874 #, perl-format msgid "POT file (%s) does not exist" msgstr "" -#: ../IkiWiki/Plugin/po.pm:887 +#: ../IkiWiki/Plugin/po.pm:888 #, perl-format msgid "failed to copy underlay PO file to %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:896 +#: ../IkiWiki/Plugin/po.pm:897 #, perl-format msgid "failed to update %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:902 +#: ../IkiWiki/Plugin/po.pm:903 #, perl-format msgid "failed to copy the POT file to %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:938 +#: ../IkiWiki/Plugin/po.pm:939 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:951 +#: ../IkiWiki/Plugin/po.pm:952 #, perl-format msgid "failed to translate %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1035 +#: ../IkiWiki/Plugin/po.pm:1036 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1091 ../IkiWiki/Plugin/po.pm:1105 -#: ../IkiWiki/Plugin/po.pm:1144 +#: ../IkiWiki/Plugin/po.pm:1092 ../IkiWiki/Plugin/po.pm:1106 +#: ../IkiWiki/Plugin/po.pm:1145 #, perl-format msgid "failed to write %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1103 +#: ../IkiWiki/Plugin/po.pm:1104 msgid "failed to translate" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1156 +#: ../IkiWiki/Plugin/po.pm:1157 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -865,12 +865,12 @@ msgstr "" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:184 +#: ../IkiWiki/Plugin/search.pm:188 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "" -#: ../IkiWiki/Plugin/search.pm:221 +#: ../IkiWiki/Plugin/search.pm:225 msgid "search" msgstr "" @@ -1019,59 +1019,59 @@ msgstr "" msgid "bad file name %s" msgstr "" -#: ../IkiWiki/Render.pm:162 +#: ../IkiWiki/Render.pm:163 #, perl-format msgid "scanning %s" msgstr "" -#: ../IkiWiki/Render.pm:284 +#: ../IkiWiki/Render.pm:285 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "allow this" msgstr "" -#: ../IkiWiki/Render.pm:315 +#: ../IkiWiki/Render.pm:316 #, perl-format msgid "skipping bad filename %s" msgstr "" -#: ../IkiWiki/Render.pm:330 +#: ../IkiWiki/Render.pm:331 #, perl-format msgid "%s has multiple possible source pages" msgstr "" -#: ../IkiWiki/Render.pm:372 +#: ../IkiWiki/Render.pm:373 #, perl-format msgid "querying %s for file creation and modification times.." msgstr "" -#: ../IkiWiki/Render.pm:434 +#: ../IkiWiki/Render.pm:435 #, perl-format msgid "removing obsolete %s" msgstr "" -#: ../IkiWiki/Render.pm:507 +#: ../IkiWiki/Render.pm:508 #, perl-format msgid "building %s, which links to %s" msgstr "" -#: ../IkiWiki/Render.pm:516 +#: ../IkiWiki/Render.pm:517 #, perl-format msgid "removing %s, no longer built by %s" msgstr "" -#: ../IkiWiki/Render.pm:671 ../IkiWiki/Render.pm:777 +#: ../IkiWiki/Render.pm:600 ../IkiWiki/Render.pm:682 #, perl-format msgid "building %s, which depends on %s" msgstr "" -#: ../IkiWiki/Render.pm:684 +#: ../IkiWiki/Render.pm:695 #, perl-format msgid "building %s, to update its backlinks" msgstr "" -#: ../IkiWiki/Render.pm:819 +#: ../IkiWiki/Render.pm:824 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "" @@ -1164,43 +1164,43 @@ msgstr "" msgid "refreshing wiki.." msgstr "" -#: ../IkiWiki.pm:233 +#: ../IkiWiki.pm:232 msgid "Discussion" msgstr "" -#: ../IkiWiki.pm:524 +#: ../IkiWiki.pm:531 msgid "Must specify url to wiki with --url when using --cgi" msgstr "" -#: ../IkiWiki.pm:570 +#: ../IkiWiki.pm:577 msgid "cannot use multiple rcs plugins" msgstr "" -#: ../IkiWiki.pm:599 +#: ../IkiWiki.pm:606 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1273 +#: ../IkiWiki.pm:1280 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "" -#: ../IkiWiki.pm:1932 +#: ../IkiWiki.pm:1944 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2009 +#: ../IkiWiki.pm:2021 #, perl-format msgid "invalid sort type %s" msgstr "" -#: ../IkiWiki.pm:2030 +#: ../IkiWiki.pm:2042 #, perl-format msgid "unknown sort type %s" msgstr "" -#: ../IkiWiki.pm:2166 +#: ../IkiWiki.pm:2178 #, perl-format msgid "cannot match pages: %s" msgstr "" diff --git a/po/tr.po b/po/tr.po index b59f5e941..dca798e3e 100644 --- a/po/tr.po +++ b/po/tr.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki 3.20091031\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-03 14:18-0400\n" +"POT-Creation-Date: 2010-05-01 21:16-0400\n" "PO-Revision-Date: 2009-11-08 03:04+0200\n" "Last-Translator: Recai Oktaş \n" "Language-Team: Turkish \n" @@ -51,7 +51,7 @@ msgstr "Tercihler kaydedildi." msgid "You are banned." msgstr "" -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1298 msgid "Error" msgstr "Hata" @@ -132,7 +132,7 @@ msgstr "%s için yeni sayfa oluşturuluyor" msgid "deleting bucket.." msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:231 msgid "done" msgstr "" @@ -170,7 +170,7 @@ msgstr "" msgid "attachment upload" msgstr "" -#: ../IkiWiki/Plugin/autoindex.pm:105 +#: ../IkiWiki/Plugin/autoindex.pm:117 msgid "automatic index generation" msgstr "" @@ -202,55 +202,55 @@ msgstr "" msgid "Anonymous" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 +#: ../IkiWiki/Plugin/comments.pm:342 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:345 +#: ../IkiWiki/Plugin/comments.pm:347 #, perl-format msgid "commenting on %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:363 +#: ../IkiWiki/Plugin/comments.pm:365 #, perl-format msgid "page '%s' doesn't exist, so you can't comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:370 +#: ../IkiWiki/Plugin/comments.pm:372 #, perl-format msgid "comments on page '%s' are closed" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:467 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "comment stored for moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:469 +#: ../IkiWiki/Plugin/comments.pm:471 msgid "Your comment will be posted after moderator review" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:482 +#: ../IkiWiki/Plugin/comments.pm:484 msgid "Added a comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:486 +#: ../IkiWiki/Plugin/comments.pm:488 #, perl-format msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270 +#: ../IkiWiki/Plugin/comments.pm:530 ../IkiWiki/Plugin/websetup.pm:270 msgid "you are not logged in as an admin" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:579 +#: ../IkiWiki/Plugin/comments.pm:581 msgid "Comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:618 +#: ../IkiWiki/Plugin/comments.pm:620 msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:761 +#: ../IkiWiki/Plugin/comments.pm:759 #, perl-format msgid "%i comment" msgid_plural "%i comments" @@ -260,7 +260,7 @@ msgstr[1] "" #. translators: Here "Comment" is a verb; #. translators: the user clicks on it to #. translators: post a comment. -#: ../IkiWiki/Plugin/comments.pm:771 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comment" msgstr "" @@ -290,14 +290,14 @@ msgstr "" msgid "%s is not an editable page" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:296 +#: ../IkiWiki/Plugin/editpage.pm:295 #, perl-format msgid "creating %s" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 -#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 -#: ../IkiWiki/Plugin/editpage.pm:426 +#: ../IkiWiki/Plugin/editpage.pm:313 ../IkiWiki/Plugin/editpage.pm:332 +#: ../IkiWiki/Plugin/editpage.pm:342 ../IkiWiki/Plugin/editpage.pm:386 +#: ../IkiWiki/Plugin/editpage.pm:425 #, perl-format msgid "editing %s" msgstr "" @@ -315,8 +315,9 @@ msgstr "" msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:138 -msgid "failed to process" +#: ../IkiWiki/Plugin/edittemplate.pm:125 ../IkiWiki/Plugin/inline.pm:339 +#: ../IkiWiki/Plugin/template.pm:44 +msgid "failed to process template:" msgstr "" #: ../IkiWiki/Plugin/format.pm:30 @@ -345,18 +346,18 @@ msgstr "" msgid "%s is an attachment, not a page." msgstr "" -#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 +#: ../IkiWiki/Plugin/git.pm:687 ../IkiWiki/Plugin/git.pm:705 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:698 +#: ../IkiWiki/Plugin/git.pm:727 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:702 +#: ../IkiWiki/Plugin/git.pm:731 msgid "you are not allowed to change file modes" msgstr "" @@ -438,12 +439,12 @@ msgstr "" msgid "Add a new post titled:" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:333 +#: ../IkiWiki/Plugin/inline.pm:342 #, perl-format -msgid "nonexistant template %s" +msgid "template %s not found" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:625 +#: ../IkiWiki/Plugin/inline.pm:635 msgid "RPC::XML::Client not found, not pinging" msgstr "" @@ -470,18 +471,22 @@ msgstr "" msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:162 +#: ../IkiWiki/Plugin/meta.pm:174 msgid "stylesheet not found" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:200 +#: ../IkiWiki/Plugin/meta.pm:212 msgid "redir page not found" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:214 +#: ../IkiWiki/Plugin/meta.pm:226 msgid "redir cycle is not allowed" msgstr "" +#: ../IkiWiki/Plugin/meta.pm:387 +msgid "sort=meta requires a parameter" +msgstr "" + #: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "" @@ -498,10 +503,6 @@ msgstr "" msgid "more" msgstr "" -#: ../IkiWiki/Plugin/norcs.pm:66 -msgid "getctime not implemented" -msgstr "" - #: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "" @@ -518,39 +519,39 @@ msgstr "" msgid "bad or missing template" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:229 +#: ../IkiWiki/Plugin/passwordauth.pm:231 msgid "Your user page: " msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:236 +#: ../IkiWiki/Plugin/passwordauth.pm:238 msgid "Create your user page" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:264 +#: ../IkiWiki/Plugin/passwordauth.pm:268 msgid "Account creation successful. Now you can Login." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:267 +#: ../IkiWiki/Plugin/passwordauth.pm:271 msgid "Error creating account." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:274 +#: ../IkiWiki/Plugin/passwordauth.pm:278 msgid "No email address, so cannot email password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:308 +#: ../IkiWiki/Plugin/passwordauth.pm:312 msgid "Failed to send mail" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:310 +#: ../IkiWiki/Plugin/passwordauth.pm:314 msgid "You have been mailed password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:345 +#: ../IkiWiki/Plugin/passwordauth.pm:349 msgid "incorrect password reset url" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:348 +#: ../IkiWiki/Plugin/passwordauth.pm:352 msgid "password reset denied" msgstr "" @@ -580,93 +581,93 @@ msgstr "" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:139 +#: ../IkiWiki/Plugin/po.pm:140 #, perl-format msgid "%s is not a valid language code" msgstr "" -#: ../IkiWiki/Plugin/po.pm:151 +#: ../IkiWiki/Plugin/po.pm:152 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:156 +#: ../IkiWiki/Plugin/po.pm:157 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:386 +#: ../IkiWiki/Plugin/po.pm:388 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:392 ../IkiWiki/Render.pm:772 #, perl-format msgid "building %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:428 +#: ../IkiWiki/Plugin/po.pm:430 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:452 +#: ../IkiWiki/Plugin/po.pm:454 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:472 +#: ../IkiWiki/Plugin/po.pm:474 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:871 +#: ../IkiWiki/Plugin/po.pm:874 #, perl-format msgid "POT file (%s) does not exist" msgstr "" -#: ../IkiWiki/Plugin/po.pm:885 +#: ../IkiWiki/Plugin/po.pm:888 #, perl-format msgid "failed to copy underlay PO file to %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:894 +#: ../IkiWiki/Plugin/po.pm:897 #, perl-format msgid "failed to update %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:900 +#: ../IkiWiki/Plugin/po.pm:903 #, perl-format msgid "failed to copy the POT file to %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:936 +#: ../IkiWiki/Plugin/po.pm:939 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:949 +#: ../IkiWiki/Plugin/po.pm:952 #, perl-format msgid "failed to translate %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1033 +#: ../IkiWiki/Plugin/po.pm:1036 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 -#: ../IkiWiki/Plugin/po.pm:1142 +#: ../IkiWiki/Plugin/po.pm:1092 ../IkiWiki/Plugin/po.pm:1106 +#: ../IkiWiki/Plugin/po.pm:1145 #, perl-format msgid "failed to write %s" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1101 +#: ../IkiWiki/Plugin/po.pm:1104 msgid "failed to translate" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1154 +#: ../IkiWiki/Plugin/po.pm:1157 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -808,44 +809,44 @@ msgstr "" msgid "no change to the file name was specified" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:69 +#: ../IkiWiki/Plugin/rename.pm:68 #, perl-format msgid "illegal name" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:74 +#: ../IkiWiki/Plugin/rename.pm:73 #, perl-format msgid "%s already exists" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:80 +#: ../IkiWiki/Plugin/rename.pm:79 #, perl-format msgid "%s already exists on disk" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:123 +#: ../IkiWiki/Plugin/rename.pm:122 #, perl-format msgid "rename %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:162 +#: ../IkiWiki/Plugin/rename.pm:161 msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:249 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:252 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:349 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:573 +#: ../IkiWiki/Plugin/rename.pm:572 #, perl-format msgid "update for rename of %s to %s" msgstr "" @@ -860,12 +861,12 @@ msgstr "" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:184 +#: ../IkiWiki/Plugin/search.pm:188 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "" -#: ../IkiWiki/Plugin/search.pm:221 +#: ../IkiWiki/Plugin/search.pm:225 msgid "search" msgstr "" @@ -943,18 +944,19 @@ msgstr "" msgid "parse fail at line %d: %s" msgstr "" -#: ../IkiWiki/Plugin/template.pm:34 +#: ../IkiWiki/Plugin/tag.pm:83 +#, fuzzy, perl-format +msgid "creating tag page %s" +msgstr "%s için yeni sayfa oluşturuluyor" + +#: ../IkiWiki/Plugin/template.pm:33 msgid "missing id parameter" msgstr "" #: ../IkiWiki/Plugin/template.pm:47 -#, perl-format -msgid "template %s not found" -msgstr "" - -#: ../IkiWiki/Plugin/template.pm:66 -msgid "failed to process:" -msgstr "" +#, fuzzy, perl-format +msgid "%s not found" +msgstr "özet akışı bulunamadı" #: ../IkiWiki/Plugin/teximg.pm:72 msgid "missing tex code" @@ -1013,54 +1015,59 @@ msgstr "" msgid "bad file name %s" msgstr "" -#: ../IkiWiki/Render.pm:153 +#: ../IkiWiki/Render.pm:163 #, perl-format msgid "scanning %s" msgstr "" -#: ../IkiWiki/Render.pm:274 +#: ../IkiWiki/Render.pm:285 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "allow this" msgstr "" -#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 +#: ../IkiWiki/Render.pm:316 #, perl-format msgid "skipping bad filename %s" msgstr "" -#: ../IkiWiki/Render.pm:308 +#: ../IkiWiki/Render.pm:331 #, perl-format msgid "%s has multiple possible source pages" msgstr "" -#: ../IkiWiki/Render.pm:413 +#: ../IkiWiki/Render.pm:373 #, perl-format -msgid "removing old page %s" +msgid "querying %s for file creation and modification times.." msgstr "" -#: ../IkiWiki/Render.pm:486 +#: ../IkiWiki/Render.pm:435 +#, perl-format +msgid "removing obsolete %s" +msgstr "" + +#: ../IkiWiki/Render.pm:508 #, perl-format msgid "building %s, which links to %s" msgstr "" -#: ../IkiWiki/Render.pm:495 +#: ../IkiWiki/Render.pm:517 #, perl-format msgid "removing %s, no longer built by %s" msgstr "" -#: ../IkiWiki/Render.pm:618 +#: ../IkiWiki/Render.pm:600 ../IkiWiki/Render.pm:682 #, perl-format msgid "building %s, which depends on %s" msgstr "" -#: ../IkiWiki/Render.pm:631 +#: ../IkiWiki/Render.pm:695 #, perl-format msgid "building %s, to update its backlinks" msgstr "" -#: ../IkiWiki/Render.pm:707 +#: ../IkiWiki/Render.pm:824 #, perl-format msgid "ikiwiki: cannot build %s" msgstr "" @@ -1133,62 +1140,63 @@ msgstr "" msgid " ikiwiki --setup configfile" msgstr "" -#: ../ikiwiki.in:95 +#: ../ikiwiki.in:96 msgid "usage: --set var=value" msgstr "" -#: ../ikiwiki.in:102 +#: ../ikiwiki.in:103 msgid "usage: --set-yaml var=value" msgstr "" -#: ../ikiwiki.in:156 +#: ../ikiwiki.in:157 msgid "generating wrappers.." msgstr "" -#: ../ikiwiki.in:219 +#: ../ikiwiki.in:220 msgid "rebuilding wiki.." msgstr "" -#: ../ikiwiki.in:222 +#: ../ikiwiki.in:223 msgid "refreshing wiki.." msgstr "" -#: ../IkiWiki.pm:238 +#: ../IkiWiki.pm:232 msgid "Discussion" msgstr "" -#: ../IkiWiki.pm:530 +#: ../IkiWiki.pm:531 msgid "Must specify url to wiki with --url when using --cgi" msgstr "" -#: ../IkiWiki.pm:576 +#: ../IkiWiki.pm:577 msgid "cannot use multiple rcs plugins" msgstr "" -#: ../IkiWiki.pm:605 +#: ../IkiWiki.pm:606 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1278 +#: ../IkiWiki.pm:1280 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "" -#: ../IkiWiki.pm:1901 +#: ../IkiWiki.pm:1944 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2044 -msgid "Sort::Naturally needed for title_natural sort" +#: ../IkiWiki.pm:2021 +#, perl-format +msgid "invalid sort type %s" msgstr "" -#: ../IkiWiki.pm:2055 +#: ../IkiWiki.pm:2042 #, perl-format msgid "unknown sort type %s" msgstr "" -#: ../IkiWiki.pm:2074 +#: ../IkiWiki.pm:2178 #, perl-format msgid "cannot match pages: %s" msgstr "" diff --git a/po/vi.po b/po/vi.po index 5f968ccb3..b5596b926 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: 2010-04-03 14:18-0400\n" +"POT-Creation-Date: 2010-05-01 21:16-0400\n" "PO-Revision-Date: 2007-01-13 15:31+1030\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" @@ -55,7 +55,7 @@ msgstr "Tùy thích đã được lưu." msgid "You are banned." msgstr "Bạn bị cấm ra." -#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1296 +#: ../IkiWiki/CGI.pm:411 ../IkiWiki/CGI.pm:412 ../IkiWiki.pm:1298 msgid "Error" msgstr "Lỗi" @@ -137,7 +137,7 @@ msgstr "đang tạo trang mới %s" msgid "deleting bucket.." msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:230 +#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:231 msgid "done" msgstr "xong" @@ -178,7 +178,7 @@ msgstr "" msgid "attachment upload" msgstr "" -#: ../IkiWiki/Plugin/autoindex.pm:105 +#: ../IkiWiki/Plugin/autoindex.pm:117 msgid "automatic index generation" msgstr "" @@ -210,55 +210,55 @@ msgstr "" msgid "Anonymous" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:340 ../IkiWiki/Plugin/editpage.pm:98 +#: ../IkiWiki/Plugin/comments.pm:342 ../IkiWiki/Plugin/editpage.pm:98 msgid "bad page name" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:345 +#: ../IkiWiki/Plugin/comments.pm:347 #, fuzzy, perl-format msgid "commenting on %s" msgstr "đang tạo %s" -#: ../IkiWiki/Plugin/comments.pm:363 +#: ../IkiWiki/Plugin/comments.pm:365 #, perl-format msgid "page '%s' doesn't exist, so you can't comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:370 +#: ../IkiWiki/Plugin/comments.pm:372 #, perl-format msgid "comments on page '%s' are closed" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:467 +#: ../IkiWiki/Plugin/comments.pm:469 msgid "comment stored for moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:469 +#: ../IkiWiki/Plugin/comments.pm:471 msgid "Your comment will be posted after moderator review" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:482 +#: ../IkiWiki/Plugin/comments.pm:484 msgid "Added a comment" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:486 +#: ../IkiWiki/Plugin/comments.pm:488 #, perl-format msgid "Added a comment: %s" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:528 ../IkiWiki/Plugin/websetup.pm:270 +#: ../IkiWiki/Plugin/comments.pm:530 ../IkiWiki/Plugin/websetup.pm:270 msgid "you are not logged in as an admin" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:579 +#: ../IkiWiki/Plugin/comments.pm:581 msgid "Comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:618 +#: ../IkiWiki/Plugin/comments.pm:620 msgid "comment moderation" msgstr "" -#: ../IkiWiki/Plugin/comments.pm:761 +#: ../IkiWiki/Plugin/comments.pm:759 #, perl-format msgid "%i comment" msgid_plural "%i comments" @@ -267,7 +267,7 @@ msgstr[0] "" #. translators: Here "Comment" is a verb; #. translators: the user clicks on it to #. translators: post a comment. -#: ../IkiWiki/Plugin/comments.pm:771 +#: ../IkiWiki/Plugin/comments.pm:769 msgid "Comment" msgstr "" @@ -297,14 +297,14 @@ msgstr "đang gỡ bỏ trang cũ %s" msgid "%s is not an editable page" msgstr "" -#: ../IkiWiki/Plugin/editpage.pm:296 +#: ../IkiWiki/Plugin/editpage.pm:295 #, perl-format msgid "creating %s" msgstr "đang tạo %s" -#: ../IkiWiki/Plugin/editpage.pm:314 ../IkiWiki/Plugin/editpage.pm:333 -#: ../IkiWiki/Plugin/editpage.pm:343 ../IkiWiki/Plugin/editpage.pm:387 -#: ../IkiWiki/Plugin/editpage.pm:426 +#: ../IkiWiki/Plugin/editpage.pm:313 ../IkiWiki/Plugin/editpage.pm:332 +#: ../IkiWiki/Plugin/editpage.pm:342 ../IkiWiki/Plugin/editpage.pm:386 +#: ../IkiWiki/Plugin/editpage.pm:425 #, perl-format msgid "editing %s" msgstr "đang sửa %s" @@ -324,9 +324,10 @@ msgstr "chưa xác định tên tập tin bộ bao bọc" msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:138 +#: ../IkiWiki/Plugin/edittemplate.pm:125 ../IkiWiki/Plugin/inline.pm:339 +#: ../IkiWiki/Plugin/template.pm:44 #, fuzzy -msgid "failed to process" +msgid "failed to process template:" msgstr "mẫu không xử lý được:" #: ../IkiWiki/Plugin/format.pm:30 @@ -357,18 +358,18 @@ msgstr "không thể đọc %s: %s" msgid "%s is an attachment, not a page." msgstr "" -#: ../IkiWiki/Plugin/git.pm:658 ../IkiWiki/Plugin/git.pm:676 +#: ../IkiWiki/Plugin/git.pm:687 ../IkiWiki/Plugin/git.pm:705 #: ../IkiWiki/Receive.pm:130 #, perl-format msgid "you are not allowed to change %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:698 +#: ../IkiWiki/Plugin/git.pm:727 #, perl-format msgid "you cannot act on a file with mode %s" msgstr "" -#: ../IkiWiki/Plugin/git.pm:702 +#: ../IkiWiki/Plugin/git.pm:731 msgid "you are not allowed to change file modes" msgstr "" @@ -457,12 +458,12 @@ msgstr "" msgid "Add a new post titled:" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:333 +#: ../IkiWiki/Plugin/inline.pm:342 #, perl-format -msgid "nonexistant template %s" -msgstr "" +msgid "template %s not found" +msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/inline.pm:625 +#: ../IkiWiki/Plugin/inline.pm:635 msgid "RPC::XML::Client not found, not pinging" msgstr "Không tìm thấy RPC::XML::Client nên không gửi gói tin ping" @@ -490,21 +491,25 @@ msgstr "" msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "lỗi nạp mô-đun perl Markdown.pm (%s) hay « /usr/bin/markdown » (%s)" -#: ../IkiWiki/Plugin/meta.pm:162 +#: ../IkiWiki/Plugin/meta.pm:174 #, fuzzy msgid "stylesheet not found" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/meta.pm:200 +#: ../IkiWiki/Plugin/meta.pm:212 #, fuzzy msgid "redir page not found" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/meta.pm:214 +#: ../IkiWiki/Plugin/meta.pm:226 #, fuzzy msgid "redir cycle is not allowed" msgstr "không tìm thấy mẫu %s" +#: ../IkiWiki/Plugin/meta.pm:387 +msgid "sort=meta requires a parameter" +msgstr "" + #: ../IkiWiki/Plugin/mirrorlist.pm:44 msgid "Mirrors" msgstr "Nhân bản" @@ -521,10 +526,6 @@ msgstr "" msgid "more" msgstr "" -#: ../IkiWiki/Plugin/norcs.pm:66 -msgid "getctime not implemented" -msgstr "chưa thực hiện getctime" - #: ../IkiWiki/Plugin/openid.pm:62 msgid "Log in with" msgstr "" @@ -542,39 +543,39 @@ msgstr "Mọi trang được liên kết với trang khác." msgid "bad or missing template" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:229 +#: ../IkiWiki/Plugin/passwordauth.pm:231 msgid "Your user page: " msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:236 +#: ../IkiWiki/Plugin/passwordauth.pm:238 msgid "Create your user page" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:264 +#: ../IkiWiki/Plugin/passwordauth.pm:268 msgid "Account creation successful. Now you can Login." msgstr "Tài khoản đã được tạo. Lúc bây giờ bạn có thể đăng nhập." -#: ../IkiWiki/Plugin/passwordauth.pm:267 +#: ../IkiWiki/Plugin/passwordauth.pm:271 msgid "Error creating account." msgstr "Gặp lỗi khi tạo tài khoản." -#: ../IkiWiki/Plugin/passwordauth.pm:274 +#: ../IkiWiki/Plugin/passwordauth.pm:278 msgid "No email address, so cannot email password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:308 +#: ../IkiWiki/Plugin/passwordauth.pm:312 msgid "Failed to send mail" msgstr "Lỗi gửi thư" -#: ../IkiWiki/Plugin/passwordauth.pm:310 +#: ../IkiWiki/Plugin/passwordauth.pm:314 msgid "You have been mailed password reset instructions." msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:345 +#: ../IkiWiki/Plugin/passwordauth.pm:349 msgid "incorrect password reset url" msgstr "" -#: ../IkiWiki/Plugin/passwordauth.pm:348 +#: ../IkiWiki/Plugin/passwordauth.pm:352 msgid "password reset denied" msgstr "" @@ -605,94 +606,94 @@ msgstr "Không tìm thấy RPC::XML::Client nên không gửi gói tin ping" msgid "warning: Old po4a detected! Recommend upgrade to 0.35." msgstr "" -#: ../IkiWiki/Plugin/po.pm:139 +#: ../IkiWiki/Plugin/po.pm:140 #, perl-format msgid "%s is not a valid language code" msgstr "" -#: ../IkiWiki/Plugin/po.pm:151 +#: ../IkiWiki/Plugin/po.pm:152 #, perl-format msgid "" "%s is not a valid value for po_link_to, falling back to po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:156 +#: ../IkiWiki/Plugin/po.pm:157 msgid "" "po_link_to=negotiated requires usedirs to be enabled, falling back to " "po_link_to=default" msgstr "" -#: ../IkiWiki/Plugin/po.pm:386 +#: ../IkiWiki/Plugin/po.pm:388 #, perl-format msgid "rebuilding all pages to fix meta titles" msgstr "" -#: ../IkiWiki/Plugin/po.pm:390 ../IkiWiki/Render.pm:655 +#: ../IkiWiki/Plugin/po.pm:392 ../IkiWiki/Render.pm:772 #, fuzzy, perl-format msgid "building %s" msgstr "đang sửa %s" -#: ../IkiWiki/Plugin/po.pm:428 +#: ../IkiWiki/Plugin/po.pm:430 msgid "updated PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:452 +#: ../IkiWiki/Plugin/po.pm:454 msgid "" "Can not remove a translation. If the master page is removed, however, its " "translations will be removed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:472 +#: ../IkiWiki/Plugin/po.pm:474 msgid "" "Can not rename a translation. If the master page is renamed, however, its " "translations will be renamed as well." msgstr "" -#: ../IkiWiki/Plugin/po.pm:871 +#: ../IkiWiki/Plugin/po.pm:874 #, perl-format msgid "POT file (%s) does not exist" msgstr "" -#: ../IkiWiki/Plugin/po.pm:885 +#: ../IkiWiki/Plugin/po.pm:888 #, fuzzy, perl-format msgid "failed to copy underlay PO file to %s" msgstr "lỗi biên dịch %s" -#: ../IkiWiki/Plugin/po.pm:894 +#: ../IkiWiki/Plugin/po.pm:897 #, fuzzy, perl-format msgid "failed to update %s" msgstr "lỗi biên dịch %s" -#: ../IkiWiki/Plugin/po.pm:900 +#: ../IkiWiki/Plugin/po.pm:903 #, fuzzy, perl-format msgid "failed to copy the POT file to %s" msgstr "lỗi biên dịch %s" -#: ../IkiWiki/Plugin/po.pm:936 +#: ../IkiWiki/Plugin/po.pm:939 msgid "N/A" msgstr "" -#: ../IkiWiki/Plugin/po.pm:949 +#: ../IkiWiki/Plugin/po.pm:952 #, fuzzy, perl-format msgid "failed to translate %s" msgstr "lỗi ghi %s: %s" -#: ../IkiWiki/Plugin/po.pm:1033 +#: ../IkiWiki/Plugin/po.pm:1036 msgid "removed obsolete PO files" msgstr "" -#: ../IkiWiki/Plugin/po.pm:1089 ../IkiWiki/Plugin/po.pm:1103 -#: ../IkiWiki/Plugin/po.pm:1142 +#: ../IkiWiki/Plugin/po.pm:1092 ../IkiWiki/Plugin/po.pm:1106 +#: ../IkiWiki/Plugin/po.pm:1145 #, fuzzy, perl-format msgid "failed to write %s" msgstr "lỗi ghi %s: %s" -#: ../IkiWiki/Plugin/po.pm:1101 +#: ../IkiWiki/Plugin/po.pm:1104 #, fuzzy msgid "failed to translate" msgstr "linkmap không chạy dot được" -#: ../IkiWiki/Plugin/po.pm:1154 +#: ../IkiWiki/Plugin/po.pm:1157 msgid "invalid gettext data, go back to previous page to continue edit" msgstr "" @@ -836,44 +837,44 @@ msgstr "" msgid "no change to the file name was specified" msgstr "chưa xác định tên tập tin bộ bao bọc" -#: ../IkiWiki/Plugin/rename.pm:69 +#: ../IkiWiki/Plugin/rename.pm:68 #, perl-format msgid "illegal name" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:74 +#: ../IkiWiki/Plugin/rename.pm:73 #, perl-format msgid "%s already exists" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:80 +#: ../IkiWiki/Plugin/rename.pm:79 #, perl-format msgid "%s already exists on disk" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:123 +#: ../IkiWiki/Plugin/rename.pm:122 #, fuzzy, perl-format msgid "rename %s" msgstr "đang vẽ %s" -#: ../IkiWiki/Plugin/rename.pm:162 +#: ../IkiWiki/Plugin/rename.pm:161 msgid "Also rename SubPages and attachments" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:249 +#: ../IkiWiki/Plugin/rename.pm:248 msgid "Only one attachment can be renamed at a time." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:252 +#: ../IkiWiki/Plugin/rename.pm:251 msgid "Please select the attachment to rename." msgstr "" -#: ../IkiWiki/Plugin/rename.pm:349 +#: ../IkiWiki/Plugin/rename.pm:348 #, perl-format msgid "rename %s to %s" msgstr "" -#: ../IkiWiki/Plugin/rename.pm:573 +#: ../IkiWiki/Plugin/rename.pm:572 #, fuzzy, perl-format msgid "update for rename of %s to %s" msgstr "cập nhật %2$s của %1$s bởi %3$s" @@ -888,12 +889,12 @@ msgstr "lỗi ghi %s: %s" msgid "rsync_command exited %d" msgstr "" -#: ../IkiWiki/Plugin/search.pm:184 +#: ../IkiWiki/Plugin/search.pm:188 #, perl-format msgid "need Digest::SHA1 to index %s" msgstr "" -#: ../IkiWiki/Plugin/search.pm:221 +#: ../IkiWiki/Plugin/search.pm:225 msgid "search" msgstr "" @@ -978,21 +979,21 @@ msgstr "" msgid "parse fail at line %d: %s" msgstr "lỗi ghi %s: %s" -#: ../IkiWiki/Plugin/template.pm:34 +#: ../IkiWiki/Plugin/tag.pm:83 +#, fuzzy, perl-format +msgid "creating tag page %s" +msgstr "đang tạo trang mới %s" + +#: ../IkiWiki/Plugin/template.pm:33 #, fuzzy msgid "missing id parameter" msgstr "mẫu thiếu tham số id" #: ../IkiWiki/Plugin/template.pm:47 -#, perl-format -msgid "template %s not found" +#, fuzzy, perl-format +msgid "%s not found" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/template.pm:66 -#, fuzzy -msgid "failed to process:" -msgstr "mẫu không xử lý được:" - #: ../IkiWiki/Plugin/teximg.pm:72 msgid "missing tex code" msgstr "" @@ -1051,54 +1052,59 @@ msgstr "" msgid "bad file name %s" msgstr "đang bỏ qua tên tập tin sai %s" -#: ../IkiWiki/Render.pm:153 +#: ../IkiWiki/Render.pm:163 #, perl-format msgid "scanning %s" msgstr "đang quét %s" -#: ../IkiWiki/Render.pm:274 +#: ../IkiWiki/Render.pm:285 #, perl-format msgid "" "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "allow this" msgstr "" -#: ../IkiWiki/Render.pm:303 ../IkiWiki/Render.pm:330 +#: ../IkiWiki/Render.pm:316 #, perl-format msgid "skipping bad filename %s" msgstr "đang bỏ qua tên tập tin sai %s" -#: ../IkiWiki/Render.pm:308 +#: ../IkiWiki/Render.pm:331 #, perl-format msgid "%s has multiple possible source pages" msgstr "" -#: ../IkiWiki/Render.pm:413 +#: ../IkiWiki/Render.pm:373 #, perl-format -msgid "removing old page %s" +msgid "querying %s for file creation and modification times.." +msgstr "" + +#: ../IkiWiki/Render.pm:435 +#, fuzzy, perl-format +msgid "removing obsolete %s" msgstr "đang gỡ bỏ trang cũ %s" -#: ../IkiWiki/Render.pm:486 +#: ../IkiWiki/Render.pm:508 #, fuzzy, perl-format msgid "building %s, which links to %s" msgstr "đang vẽ %s mà liên kết tới %s" -#: ../IkiWiki/Render.pm:495 +#: ../IkiWiki/Render.pm:517 #, fuzzy, perl-format msgid "removing %s, no longer built by %s" msgstr "đang gỡ bỏ %s, không còn được vẽ lại bởi %s" -#: ../IkiWiki/Render.pm:618 +#: ../IkiWiki/Render.pm:600 ../IkiWiki/Render.pm:682 #, fuzzy, perl-format msgid "building %s, which depends on %s" msgstr "đang vẽ %s mà phụ thuộc vào %s" -#: ../IkiWiki/Render.pm:631 +#: ../IkiWiki/Render.pm:695 #, fuzzy, perl-format msgid "building %s, to update its backlinks" msgstr "đang vẽ %s để cập nhật các liên kết ngược của nó" -#: ../IkiWiki/Render.pm:707 +#: ../IkiWiki/Render.pm:824 #, fuzzy, perl-format msgid "ikiwiki: cannot build %s" msgstr "ikiwiki: không thể vẽ %s" @@ -1171,62 +1177,63 @@ msgstr "cách sử dụng: ikiwiki [tùy chọn] nguồn đích" msgid " ikiwiki --setup configfile" msgstr "" -#: ../ikiwiki.in:95 +#: ../ikiwiki.in:96 msgid "usage: --set var=value" msgstr "" -#: ../ikiwiki.in:102 +#: ../ikiwiki.in:103 msgid "usage: --set-yaml var=value" msgstr "" -#: ../ikiwiki.in:156 +#: ../ikiwiki.in:157 msgid "generating wrappers.." msgstr "đang tạo ra các bộ bao bọc.." -#: ../ikiwiki.in:219 +#: ../ikiwiki.in:220 msgid "rebuilding wiki.." msgstr "đang xây dựng lại wiki.." -#: ../ikiwiki.in:222 +#: ../ikiwiki.in:223 msgid "refreshing wiki.." msgstr "đang làm tươi wiki.." -#: ../IkiWiki.pm:238 +#: ../IkiWiki.pm:232 msgid "Discussion" msgstr "Thảo luận" -#: ../IkiWiki.pm:530 +#: ../IkiWiki.pm:531 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:576 +#: ../IkiWiki.pm:577 msgid "cannot use multiple rcs plugins" msgstr "" -#: ../IkiWiki.pm:605 +#: ../IkiWiki.pm:606 #, perl-format msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1278 +#: ../IkiWiki.pm:1280 #, fuzzy, perl-format msgid "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" -#: ../IkiWiki.pm:1901 +#: ../IkiWiki.pm:1944 msgid "yes" msgstr "" -#: ../IkiWiki.pm:2044 -msgid "Sort::Naturally needed for title_natural sort" -msgstr "" +#: ../IkiWiki.pm:2021 +#, fuzzy, perl-format +msgid "invalid sort type %s" +msgstr "kiểu sắp xếp không rõ %s" -#: ../IkiWiki.pm:2055 +#: ../IkiWiki.pm:2042 #, perl-format msgid "unknown sort type %s" msgstr "kiểu sắp xếp không rõ %s" -#: ../IkiWiki.pm:2074 +#: ../IkiWiki.pm:2178 #, fuzzy, perl-format msgid "cannot match pages: %s" msgstr "không thể đọc %s: %s" @@ -1251,6 +1258,13 @@ msgstr "" msgid "What is the domain name of the web server?" msgstr "" +#, fuzzy +#~ msgid "failed to process" +#~ msgstr "mẫu không xử lý được:" + +#~ msgid "getctime not implemented" +#~ msgstr "chưa thực hiện getctime" + #, fuzzy #~ msgid "failed to read %s" #~ msgstr "lỗi ghi %s: %s" @@ -1302,10 +1316,6 @@ msgstr "" #~ msgstr "" #~ "Chưa đặt REV, không chạy từ móc sau gài vào nên không thể gửi thông báo" -#, fuzzy -#~ msgid "%s not found" -#~ msgstr "không tìm thấy mẫu %s" - #~ msgid "What's this?" #~ msgstr "Cái này là gì?" -- cgit v1.2.3 From f9e41d19b77f677a58bb22e1db47627cf9faa57f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 1 May 2010 21:42:48 -0400 Subject: add news item for ikiwiki 3.20100501 --- doc/news/version_3.20100212.mdwn | 26 -------------------------- doc/news/version_3.20100302.mdwn | 12 ------------ doc/news/version_3.20100501.mdwn | 21 +++++++++++++++++++++ 3 files changed, 21 insertions(+), 38 deletions(-) delete mode 100644 doc/news/version_3.20100212.mdwn delete mode 100644 doc/news/version_3.20100302.mdwn create mode 100644 doc/news/version_3.20100501.mdwn diff --git a/doc/news/version_3.20100212.mdwn b/doc/news/version_3.20100212.mdwn deleted file mode 100644 index 3dcfe5f84..000000000 --- a/doc/news/version_3.20100212.mdwn +++ /dev/null @@ -1,26 +0,0 @@ -ikiwiki 3.20100212 released with [[!toggle text="these changes"]] -[[!toggleable text=""" - * template: Preprocess parameters before htmlizing. - * img: Fix a bug that could taint @links with undef values. - * setup automator: Configure Term::Readline to use bold for prompt, rather - than default underline. Closes: #[517656](http://bugs.debian.org/517656) - * Allow jumping directly into account registration process by going to - ikiwiki.cgi?do=register - * Improve display of openid in preferences page. - * Add link to userpage (or creation link) to top of preferences page. - * opendiscussion: This plugin will also now allow posting comments - to otherwise locked-down sites. - * auto-blog.setup: Lock all pages, so only admin can post to the blog - by default, and enable opendiscussion so others can comment. - * Fix color and format plugins to appear in the websetup interface. - * amazon\_s3: Fix to support the EU S3 datacenter, which is more picky - about attempts to create already existing buckets. - * httpauth: When cgiauthurl is configured, httpauth can now be used - alongside other authentication methods (like openid or anonok). Rather - than always redirect to the cgiauthurl for authentication, there is now - a button on the login form to use it. - * httpauth: Add httpauth\_pagespec setting that can be used to limit - pages to only being edited via users authed with httpauth. - * Allow globs to be used in user() pagespecs. - * Group related plugins into sections in the setup file, and drop - unused rcs plugins from the setup file."""]] \ No newline at end of file diff --git a/doc/news/version_3.20100302.mdwn b/doc/news/version_3.20100302.mdwn deleted file mode 100644 index f439b1b23..000000000 --- a/doc/news/version_3.20100302.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -ikiwiki 3.20100302 released with [[!toggle text="these changes"]] -[[!toggleable text=""" - * comments: Display number of comments in comment action link. - * Rebuild wikis on upgrade to this version to get the comment counts - added to existing pages. - * Loosen regexp, to allow empty quoted parameters in directives. - * Add force\_overwrite setting to make setup automator overwrite existing - files/directories. - * Fix admin openid detection in setup automator, and avoid prompting - for a password. - * Add new --clean option; this makes ikiwiki remove all built - files in the destdir, as well as wrappers and the .ikiwiki directory."""]] \ No newline at end of file diff --git a/doc/news/version_3.20100501.mdwn b/doc/news/version_3.20100501.mdwn new file mode 100644 index 000000000..0cf5e38be --- /dev/null +++ b/doc/news/version_3.20100501.mdwn @@ -0,0 +1,21 @@ +ikiwiki 3.20100501 released with [[!toggle text="these changes"]] +[[!toggleable text=""" + * TMPL\_INCLUDE re-enabled for templates read from the templatedir. + (But not in-wiki templates.) + * Version dependency on liburi-perl to >= 1.36; previous versions + did not support building urls from utf-8 strings. Closes: #[579713](http://bugs.debian.org/579713) + * Ikiwiki can be configured to generate html5 instead of the default xhtml + 1.0. The html5 output mode is experimental, not yet fully standards + compliant, and will be subject to rapid change. + * htmlscrubber: Allow html5 semantic tags: section, nav, article, aside + hgroup, header, footer, figure, figcaption, time, mark + * htmlscrubber: Also allow some other html5 tags: canvas, progress, meter, + ruby, rt, rp, details, summary, datalist. + * htmlscrubber: Round out html5 video support with the preload + attribute and the source tag. + * htmlscrubber: Allow the html5 form attributes: placeholder, autofocus, + min, max, step, required, autocomplete, novalidate, pattern, list, + and form. (Also the form* override attributes for input and buttons.) + * htmlscrubber: Allow additional misc html5 attributes: reversed, + spellcheck, and hidden. + * template: Fix typo."""]] \ No newline at end of file -- cgit v1.2.3 From 970373548fda77223ebbeb6aadbdbe4884b67cef Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 2 May 2010 13:44:13 -0400 Subject: Add parameter to displaytime to specify that it is a pubdate, and in html5 mode, use time tag. --- IkiWiki.pm | 22 ++++++++++++++++++++-- IkiWiki/Plugin/comments.pm | 2 +- IkiWiki/Plugin/inline.pm | 12 +----------- IkiWiki/Plugin/relativedate.pm | 15 ++++++++++++--- IkiWiki/Render.pm | 2 +- debian/changelog | 7 +++++++ doc/bugs/html5_support.mdwn | 3 +++ doc/plugins/write.mdwn | 5 ++++- 8 files changed, 49 insertions(+), 19 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index ed57710bb..c428de77f 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -998,10 +998,18 @@ sub abs2rel ($$) { return $ret; } -sub displaytime ($;$) { +sub displaytime ($;$$) { # Plugins can override this function to mark up the time to # display. - return ''.formattime(@_).''; + my $time=formattime($_[0], $_[1]); + if ($config{html5}) { + return ''; + } + else { + return ''.$time.''; + } } sub formattime ($;$) { @@ -1017,6 +1025,16 @@ sub formattime ($;$) { return decode_utf8(POSIX::strftime($format, localtime($time))); } +sub date_3339 ($) { + my $time=shift; + + my $lc_time=POSIX::setlocale(&POSIX::LC_TIME); + POSIX::setlocale(&POSIX::LC_TIME, "C"); + my $ret=POSIX::strftime("%Y-%m-%dT%H:%M:%SZ", gmtime($time)); + POSIX::setlocale(&POSIX::LC_TIME, $lc_time); + return $ret; +} + sub beautify_urlpath ($) { my $url=shift; diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index f7dc99dca..02f1d9301 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -672,7 +672,7 @@ sub previewcomment ($$$) { my $template = template("comment.tmpl"); $template->param(content => $preview); - $template->param(ctime => displaytime($time)); + $template->param(ctime => displaytime($time, undef, 1)); IkiWiki::run_hooks(pagetemplate => sub { shift->(page => $location, diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 95fe90312..2df59f414 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -358,7 +358,7 @@ sub preprocess_inline (@) { $template->param(pageurl => urlto($page, $params{destpage})); $template->param(inlinepage => $page); $template->param(title => pagetitle(basename($page))); - $template->param(ctime => displaytime($pagectime{$page}, $params{timeformat})); + $template->param(ctime => displaytime($pagectime{$page}, $params{timeformat}, 1)); $template->param(mtime => displaytime($pagemtime{$page}, $params{timeformat})); $template->param(first => 1) if $page eq $list[0]; $template->param(last => 1) if $page eq $list[$#list]; @@ -500,16 +500,6 @@ sub date_822 ($) { return $ret; } -sub date_3339 ($) { - my $time=shift; - - my $lc_time=POSIX::setlocale(&POSIX::LC_TIME); - POSIX::setlocale(&POSIX::LC_TIME, "C"); - my $ret=POSIX::strftime("%Y-%m-%dT%H:%M:%SZ", gmtime($time)); - POSIX::setlocale(&POSIX::LC_TIME, $lc_time); - return $ret; -} - sub absolute_urls ($$) { # sucky sub because rss sucks my $content=shift; diff --git a/IkiWiki/Plugin/relativedate.pm b/IkiWiki/Plugin/relativedate.pm index 7e615f7f1..fe8ef0901 100644 --- a/IkiWiki/Plugin/relativedate.pm +++ b/IkiWiki/Plugin/relativedate.pm @@ -43,9 +43,10 @@ sub include_javascript ($;$) { '" type="text/javascript" charset="utf-8">'; } -sub mydisplaytime ($;$) { +sub mydisplaytime ($;$$) { my $time=shift; my $format=shift; + my $pubdate=shift; # This needs to be in a form that can be parsed by javascript. # Being fairly human readable is also nice, as it will be exposed @@ -53,8 +54,16 @@ sub mydisplaytime ($;$) { my $gmtime=decode_utf8(POSIX::strftime("%a, %d %b %Y %H:%M:%S %z", localtime($time))); - return ''. - IkiWiki::formattime($time, $format).''; + my $mid=' class="relativedate" title="'.$gmtime.'">'. + IkiWiki::formattime($time, $format); + + if ($config{html5}) { + return '
'); } 1 -- cgit v1.2.3 From 7517d34da928bb9612c65fcde87cc434b7b7d653 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 2 May 2010 15:09:15 -0400 Subject: update --- doc/bugs/html5_support.mdwn | 37 ++++--------------------------------- 1 file changed, 4 insertions(+), 33 deletions(-) diff --git a/doc/bugs/html5_support.mdwn b/doc/bugs/html5_support.mdwn index 5530b29db..ef0ec1e70 100644 --- a/doc/bugs/html5_support.mdwn +++ b/doc/bugs/html5_support.mdwn @@ -30,40 +30,11 @@ HTML5](http://www.w3.org/TR/html5-diff/). > small start at doing that. > > Some of your changes are obvious, like using the new `time` and -> and `article` elements. Others less so, and I'm particularly -> puzzled by these: -> -> * Removing the value="Submit" from the button on the -> commentmoderation form. -> * Removing feedlink.tmpl. What?! -> * Using a `h2` for the header of inlinepage.tmpl and page.tmpl, rather -> than the styled span. Ikiwiki has -> [[a_reason|todo/Option_to_make_title_an_h1?]] for not -> using real `hN` for the header atop a page and here. -> AFAICS, html5 does not invalidate that. -> * Removing Editurl from inlinepage.tmpl actions. I assume -> this is your own preference, needs to be removed from branch -> before I can use it. -> * Removing the pageheader, content, and footer divs -> which are all used by style.css. -> Perhaps, the style sheet needs to be updated to use -> the new elements, like the `footer` and `header`. -> * Removal of the favicon from page.tmpl. Surely html5 supports? -> * Removal of BASEURL from page.tmpl, apparently a mistake. -> * Removal of the `/` between wiki title and page title. -> Personal preference. -> * Removal of `comments` div, which is there to be styled. -> * Why use a `p` rather than the `div` for `addcomments`? -> * Moving the action bar to the bottom of the page. -> Personal preference. -> * Clearly searchquery.tmpl has no business using bad old `center` -> tag, but something should still be done to replace it. -> -> (BTW, it would be helpful if you could re-merge master into your branch -> as it is a bit diverged now.) -> +> and `article` elements. Looks like I can't merge it as-is though +> due to other changes. +> > Other ideas: -> +> > * Use aside for the sidebar? Or for the [[templates/note]] template? > * Use nav for the actionbar > * Use details tag instead of the javascript in the toggle plugin. -- cgit v1.2.3 From d69f6057d1e1787fa3c19cc13c40eb3e9b822283 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 2 May 2010 15:09:33 -0400 Subject: use html5 semantic markup in page.tmpl This is a first pass, it avoids needing to change style.css except where it refers to tag types. This goes a bit off the rails at the pageheader with its nested header. Semantically, there should be an article around the whole page header, content, and footer. Just as there will be an article around a whole comment or inlined page header, content, and footer. But that will mean changing the css that currently refers to pageheader to refer to the enclosing article instead. --- debian/changelog | 3 +++ doc/style.css | 5 +---- templates/page.tmpl | 49 +++++++++++++++++++++++++------------------------ 3 files changed, 29 insertions(+), 28 deletions(-) diff --git a/debian/changelog b/debian/changelog index c9fc2e657..789fda1ce 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,9 @@ ikiwiki (3.20100502) UNRELEASED; urgency=low * Add parameter to displaytime to specify that it is a pubdate, and in html5 mode, use time tag. * Add placeholder text in search form (in html5 mode only). + * In html5 mode, use all the nice new semantic tags. Care was taken + to not change the id/class named used in the CSS, so only CSS + that refers to tag types needed to be changed. -- Joey Hess Sun, 02 May 2010 13:22:50 -0400 diff --git a/doc/style.css b/doc/style.css index 7ffcf9fe2..69c7f80d8 100644 --- a/doc/style.css +++ b/doc/style.css @@ -60,15 +60,12 @@ div.inlinecontent { clear: both; } -.tags { -} - #pageinfo { margin: 1em 0; border-top: 1px solid #000; } -div.tags { +.tags { margin-top: 1em; } diff --git a/templates/page.tmpl b/templates/page.tmpl index 661d4a515..0176b0116 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -5,7 +5,7 @@ - + <TMPL_VAR TITLE> @@ -26,8 +26,8 @@ - - -
+
-
-
+
-
+ +
+ - +
-- cgit v1.2.3 From fa26c67b2a8842a57b551145d25c3719dcea2ccd Mon Sep 17 00:00:00 2001 From: raf Date: Sun, 2 May 2010 19:19:33 +0000 Subject: --- doc/forum/how_to_add_post_titles_in_ikiwiki_blog__63__.mdwn | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 doc/forum/how_to_add_post_titles_in_ikiwiki_blog__63__.mdwn diff --git a/doc/forum/how_to_add_post_titles_in_ikiwiki_blog__63__.mdwn b/doc/forum/how_to_add_post_titles_in_ikiwiki_blog__63__.mdwn new file mode 100644 index 000000000..2bae57806 --- /dev/null +++ b/doc/forum/how_to_add_post_titles_in_ikiwiki_blog__63__.mdwn @@ -0,0 +1,12 @@ +Look at these two blogs: +1) http://ciffer.net/~svend/blog/ +2) http://upsilon.cc/~zack/blog/ + +Well, i set up successfully my blog /i am using inline function in a wiki page) but i have manually to insert blog pos titles and the result is that of blog #2. +Instead i would like to have blog post titles automatically inserted like blog #1 (and they are links too! I want them that way). +I looked in git repo of the two blogs but i couldn't find the answer. +Any help wuold be appreciated. + +Thanks + +Raf -- cgit v1.2.3 From 40aba87965a3d59f59ef2c6a0c6751036cd4a351 Mon Sep 17 00:00:00 2001 From: raf Date: Sun, 2 May 2010 19:20:37 +0000 Subject: --- doc/forum/how_to_add_post_titles_in_ikiwiki_blog__63__.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/forum/how_to_add_post_titles_in_ikiwiki_blog__63__.mdwn b/doc/forum/how_to_add_post_titles_in_ikiwiki_blog__63__.mdwn index 2bae57806..f5da168a5 100644 --- a/doc/forum/how_to_add_post_titles_in_ikiwiki_blog__63__.mdwn +++ b/doc/forum/how_to_add_post_titles_in_ikiwiki_blog__63__.mdwn @@ -1,5 +1,7 @@ Look at these two blogs: + 1) http://ciffer.net/~svend/blog/ + 2) http://upsilon.cc/~zack/blog/ Well, i set up successfully my blog /i am using inline function in a wiki page) but i have manually to insert blog pos titles and the result is that of blog #2. -- cgit v1.2.3 From 9480dc44277ad9301f1e1eba5b09990b459e7b26 Mon Sep 17 00:00:00 2001 From: raf Date: Sun, 2 May 2010 19:26:06 +0000 Subject: --- doc/forum/how_to_add_post_titles_in_ikiwiki_blog__63__.mdwn | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/forum/how_to_add_post_titles_in_ikiwiki_blog__63__.mdwn b/doc/forum/how_to_add_post_titles_in_ikiwiki_blog__63__.mdwn index f5da168a5..4b5e21979 100644 --- a/doc/forum/how_to_add_post_titles_in_ikiwiki_blog__63__.mdwn +++ b/doc/forum/how_to_add_post_titles_in_ikiwiki_blog__63__.mdwn @@ -4,11 +4,11 @@ Look at these two blogs: 2) http://upsilon.cc/~zack/blog/ -Well, i set up successfully my blog /i am using inline function in a wiki page) but i have manually to insert blog pos titles and the result is that of blog #2. +Well, i set up successfully my blog (i am using inline function in a wiki page) but i have manually to insert blog pos titles and the result is that of blog #2. Instead i would like to have blog post titles automatically inserted like blog #1 (and they are links too! I want them that way). I looked in git repo of the two blogs but i couldn't find the answer. -Any help wuold be appreciated. +Any help would be really appreciated. -Thanks +Thanks! Raf -- cgit v1.2.3 From 0aad1794ad27da6ab41001e335eba952c2e0ac88 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 2 May 2010 15:41:12 -0400 Subject: improve semantic markup Now the toplevel layout is:
content
comments
And I managed to preserve all CSS ids and names in their prior structure, so CSS should not need changed. --- templates/page.tmpl | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/templates/page.tmpl b/templates/page.tmpl index 0176b0116..195ce7886 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -26,7 +26,9 @@ - + -- cgit v1.2.3 From 154732dc4235b7b31191975da50d780a2765fa02 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 2 May 2010 16:12:08 -0400 Subject: adapt comment.tmpl to html5 Note that I put comment-header in a
despite it being below the comment. Using a
would be confusing given the class name. Also, the content is semantically closer to a header than a footer. --- IkiWiki/Plugin/comments.pm | 1 + IkiWiki/Plugin/inline.pm | 1 + doc/style.css | 2 +- templates/comment.tmpl | 29 ++++++++++++++--------------- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 02f1d9301..89560c88b 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -673,6 +673,7 @@ sub previewcomment ($$$) { my $template = template("comment.tmpl"); $template->param(content => $preview); $template->param(ctime => displaytime($time, undef, 1)); + $template->param(html5 => $config{html5}); IkiWiki::run_hooks(pagetemplate => sub { shift->(page => $location, diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 2df59f414..933e30646 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -362,6 +362,7 @@ sub preprocess_inline (@) { $template->param(mtime => displaytime($pagemtime{$page}, $params{timeformat})); $template->param(first => 1) if $page eq $list[0]; $template->param(last => 1) if $page eq $list[$#list]; + $template->param(html5 => $config{html5}); if ($actions) { my $file = $pagesources{$page}; diff --git a/doc/style.css b/doc/style.css index 69c7f80d8..c857157b6 100644 --- a/doc/style.css +++ b/doc/style.css @@ -49,7 +49,7 @@ border-bottom: 1px solid #000; } -div.inlinecontent { +.inlinecontent { margin-top: .4em; } diff --git a/templates/comment.tmpl b/templates/comment.tmpl index fb76ea004..39cba0ff9 100644 --- a/templates/comment.tmpl +++ b/templates/comment.tmpl @@ -1,20 +1,20 @@ -
+
+
-
+
-
+
-
+
-
+
-
+
Comment by - @@ -29,10 +29,10 @@ Comment by - + - + @@ -41,19 +41,18 @@ Comment by - - + — -
+
- -
+
-- cgit v1.2.3 From 677d2af18aaafdfa1532e9eaff3c39107ec169f6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 2 May 2010 16:36:10 -0400 Subject: adapt inlinepage.tmpl to html5 Needed to force tags to display inline, since
+ -
+
-
+
- -- cgit v1.2.3 From 28dcb52a6c5b60302db285a13bf84e5e90c39cbc Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 2 May 2010 16:54:31 -0400 Subject: force article and header to display as blocks iceweasel 3.5.9 does not know to display these as blocks, resulting in bad displays of blogs --- doc/bugs/html5_support.mdwn | 11 +++++------ doc/style.css | 7 +++++++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/doc/bugs/html5_support.mdwn b/doc/bugs/html5_support.mdwn index ef0ec1e70..0b15e64f6 100644 --- a/doc/bugs/html5_support.mdwn +++ b/doc/bugs/html5_support.mdwn @@ -29,14 +29,11 @@ HTML5](http://www.w3.org/TR/html5-diff/). > It would probably not be too dreadful to put them in ifdefs. I've made a > small start at doing that. > -> Some of your changes are obvious, like using the new `time` and -> and `article` elements. Looks like I can't merge it as-is though -> due to other changes. -> +> I've made ikiwiki use the time element and all the new semantic elements +> in html5 mode. +> > Other ideas: > -> * Use aside for the sidebar? Or for the [[templates/note]] template? -> * Use nav for the actionbar > * Use details tag instead of the javascript in the toggle plugin. > (Need to wait on browser support probably.) > @@ -89,6 +86,8 @@ This element is poorly supported by browsers. As a workaround, `style.css` needs Internet Explorer will display it as a block, though you can't seem to be able to further control the style. +> done (needed for header too) --[[Joey]] + ## Time element The [time element](http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-time-element) ideally needs the datatime= attribute set by a template variable with what [HTML5 defines as a valid datetime string](http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#valid-global-date-and-time-string). diff --git a/doc/style.css b/doc/style.css index ea18ca0c3..82de8fe6e 100644 --- a/doc/style.css +++ b/doc/style.css @@ -4,6 +4,13 @@ * local.css and use it to override or change settings in this one. */ +article { + display: block; +} +header { + display: block; +} + .header { margin: 0; font-size: 22px; -- cgit v1.2.3 From 43eef80b46e157ec32037d198f7341adef338c50 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 2 May 2010 16:58:29 -0400 Subject: bugfix --- templates/inlinepage.tmpl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/inlinepage.tmpl b/templates/inlinepage.tmpl index b32a7e497..1e0a1674e 100644 --- a/templates/inlinepage.tmpl +++ b/templates/inlinepage.tmpl @@ -16,14 +16,14 @@ - + -
+
-
+
Posted -- cgit v1.2.3 From d37ff8d29993ccea880e36eba620e1ecdf91b80f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 2 May 2010 17:01:28 -0400 Subject: ff also needs footer and nav forced to block --- doc/style.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/style.css b/doc/style.css index 82de8fe6e..f2f558497 100644 --- a/doc/style.css +++ b/doc/style.css @@ -4,10 +4,10 @@ * local.css and use it to override or change settings in this one. */ -article { - display: block; -} -header { +article, +header, +footer, +nav { display: block; } -- cgit v1.2.3 From 34076e398cb7662e3bf0659d591faa4208679882 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 2 May 2010 17:16:15 -0400 Subject: html5 bug closure, and documentation --- doc/bugs/html5_support.mdwn | 6 ++++++ doc/features.mdwn | 2 +- doc/roadmap.mdwn | 2 +- doc/tips/html5.mdwn | 25 +++++++++++++++++++++++++ 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 doc/tips/html5.mdwn diff --git a/doc/bugs/html5_support.mdwn b/doc/bugs/html5_support.mdwn index 0b15e64f6..3d1689301 100644 --- a/doc/bugs/html5_support.mdwn +++ b/doc/bugs/html5_support.mdwn @@ -106,3 +106,9 @@ As a workaround: ## tidy plugin Will reformat html5 to html4. + +---- + + +Ok, I consider this [[done]], at least as a first pass. Html5 mode +is experimental, but complete enough. --[[Joey]] diff --git a/doc/features.mdwn b/doc/features.mdwn index 215c1cecd..1f8168703 100644 --- a/doc/features.mdwn +++ b/doc/features.mdwn @@ -72,7 +72,7 @@ you would care to syndicate. Ikiwiki aims to produce [valid XHTML 1.0](http://validator.w3.org/check?url=referer). -(Experimental HTML5 support is also available.) +(Experimental [[tips/HTML5]] support is also available.) Ikiwiki generates html using [[templates]], and uses [[css]], so you can change the look and layout of all pages in any way you would like. diff --git a/doc/roadmap.mdwn b/doc/roadmap.mdwn index 4b5f01c45..e257c21a2 100644 --- a/doc/roadmap.mdwn +++ b/doc/roadmap.mdwn @@ -80,7 +80,7 @@ Probably incomplete list: * YADA format setup files per default? * Enable tagbase by default (so that tag autocreation will work by default). Note that this is already done for wikis created by `auto-blog.setup`. -* html5 on by default (some day..) +* [[tips/html5]] on by default (some day..) In general, we try to use [[ikiwiki-transition]] or forced rebuilds on upgrade to deal with changes that break compatability. Some things that diff --git a/doc/tips/html5.mdwn b/doc/tips/html5.mdwn new file mode 100644 index 000000000..9321aa401 --- /dev/null +++ b/doc/tips/html5.mdwn @@ -0,0 +1,25 @@ +First, if you just want to embed videos using the html5 `
- -
- -
- -
- - - diff --git a/templates/page.tmpl b/templates/page.tmpl index 8a9911fae..b6c751a3a 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -5,6 +5,15 @@ + + + + + + + + + <TMPL_VAR TITLE> @@ -124,6 +133,7 @@
+
+
-- cgit v1.2.3 From 66cc23a591f25344072deb07b2ccc7a4d4c89047 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 5 May 2010 18:22:47 -0400 Subject: no more misc.tmpl * Removed misc.tmpl. Now to theme ikiwiki, you only need to customise a single template, page.tmpl. * misc.tmpl will, however, still be read if a locally modified version exists. This is to avoid forcing users to update page.tmpl right now. --- IkiWiki.pm | 22 +++++++++++++++------- debian/changelog | 9 +++++++++ doc/roadmap.mdwn | 3 +++ doc/templates.mdwn | 2 -- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index c428de77f..d20a3709c 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1742,21 +1742,29 @@ sub template ($;@) { sub misctemplate ($$;@) { my $title=shift; - my $pagebody=shift; + my $content=shift; - my $template=template("misc.tmpl"); + my $template=template("misc.tmpl") || template("page.tmpl"); + + run_hooks(pagetemplate => sub { + shift->(page => "", destpage => "", template => $template); + }); + $template->param( title => $title, - indexlink => indexlink(), wikiname => $config{wikiname}, - pagebody => $pagebody, + content => $content, baseurl => baseurl(), html5 => $config{html5}, + have_actions => 0, # force off + searchform => 0, # ditto + parentlinks => [{ # override + url => $config{url}, + page => $config{wikiname}, + }], @_, ); - run_hooks(pagetemplate => sub { - shift->(page => "", destpage => "", template => $template); - }); + return $template->output; } diff --git a/debian/changelog b/debian/changelog index 43c907544..0c3a99f0e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +ikiwiki (3.20100505) UNRELEASED; urgency=low + + * Removed misc.tmpl. Now to theme ikiwiki, you only need to customise + a single template, page.tmpl. + * misc.tmpl will, however, still be read if a locally modified version + exists. This is to avoid forcing users to update page.tmpl right now. + + -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 + ikiwiki (3.20100504) unstable; urgency=low * Add parameter to displaytime to specify that it is a pubdate, diff --git a/doc/roadmap.mdwn b/doc/roadmap.mdwn index e257c21a2..729d22fb8 100644 --- a/doc/roadmap.mdwn +++ b/doc/roadmap.mdwn @@ -81,6 +81,9 @@ Probably incomplete list: * Enable tagbase by default (so that tag autocreation will work by default). Note that this is already done for wikis created by `auto-blog.setup`. * [[tips/html5]] on by default (some day..) +* stop reading misc.tmpl if it exists (only done in case users have a customized + version, or an outdated version of page.tmpl that cannot be used by + misctemplate) In general, we try to use [[ikiwiki-transition]] or forced rebuilds on upgrade to deal with changes that break compatability. Some things that diff --git a/doc/templates.mdwn b/doc/templates.mdwn index 9208db0eb..2444cf14d 100644 --- a/doc/templates.mdwn +++ b/doc/templates.mdwn @@ -45,8 +45,6 @@ html out of ikiwiki and in the templates. key template to customize. [[!if test="enabled(pagetemplate)" then=""" (The pagetemplate directive can be used to make a page use a different template than `page.tmpl`.)"""]] -* `misc.tmpl` - Generic template used for any page that doesn't - have a custom template. * `rsspage.tmpl` - Used for generating rss feeds for blogs. * `rssitem.tmpl` - Used for generating individual items on rss feeds. * `atompage.tmpl` - Used for generating atom feeds for blogs. -- cgit v1.2.3 From 58a07f9e5436ec815c0cb5736a9680096c977eed Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 5 May 2010 18:27:09 -0400 Subject: on second thought, remove FOOTER variable We always want a footer, just not a pagefooter when doing misctemplate. --- templates/page.tmpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/page.tmpl b/templates/page.tmpl index b6c751a3a..f5257058c 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -133,8 +133,8 @@ -
+
-
-- cgit v1.2.3 From 9257381e8d6e0ec18eac699e22aca63873859e32 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 5 May 2010 18:32:48 -0400 Subject: fix test count --- t/find_src_files.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/find_src_files.t b/t/find_src_files.t index 4a995c2d3..a3742db75 100755 --- a/t/find_src_files.t +++ b/t/find_src_files.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 19; +use Test::More tests => 20; BEGIN { use_ok("IkiWiki"); } BEGIN { use_ok("IkiWiki::Render"); } -- cgit v1.2.3 From 5971a731e98b9b6543d78572c181ffc1bb7e1dd1 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 5 May 2010 18:42:18 -0400 Subject: allow search form visibility to be controlled on the template hide extrafooter from misctemplate display per default --- IkiWiki.pm | 1 - templates/page.tmpl | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index d20a3709c..54271becc 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1757,7 +1757,6 @@ sub misctemplate ($$;@) { baseurl => baseurl(), html5 => $config{html5}, have_actions => 0, # force off - searchform => 0, # ditto parentlinks => [{ # override url => $config{url}, page => $config{wikiname}, diff --git a/templates/page.tmpl b/templates/page.tmpl index f5257058c..eb76cafa6 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -52,9 +52,11 @@ + + @@ -184,8 +186,8 @@ Last edited - + -- cgit v1.2.3 From 83b907c35e3a03d097c004b0d66cc37f45a4410d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 5 May 2010 18:43:49 -0400 Subject: remove misc.tmpl checking Turns out that users with a modified page.tmpl need to modify it on upgrade, at least to add the FORCEBASEURL (so edit preview works), so there is no point in trying to retain compatability. --- IkiWiki.pm | 2 +- debian/changelog | 4 ++-- doc/roadmap.mdwn | 3 --- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 54271becc..72f416489 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1744,7 +1744,7 @@ sub misctemplate ($$;@) { my $title=shift; my $content=shift; - my $template=template("misc.tmpl") || template("page.tmpl"); + my $template=template("page.tmpl"); run_hooks(pagetemplate => sub { shift->(page => "", destpage => "", template => $template); diff --git a/debian/changelog b/debian/changelog index 0c3a99f0e..6b4ba7592 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,8 +2,8 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low * Removed misc.tmpl. Now to theme ikiwiki, you only need to customise a single template, page.tmpl. - * misc.tmpl will, however, still be read if a locally modified version - exists. This is to avoid forcing users to update page.tmpl right now. + * If you have a locally customised page.tmpl, it needs to be updated + to set when BASEURL or FORCEBAREURL is set. -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 diff --git a/doc/roadmap.mdwn b/doc/roadmap.mdwn index 729d22fb8..e257c21a2 100644 --- a/doc/roadmap.mdwn +++ b/doc/roadmap.mdwn @@ -81,9 +81,6 @@ Probably incomplete list: * Enable tagbase by default (so that tag autocreation will work by default). Note that this is already done for wikis created by `auto-blog.setup`. * [[tips/html5]] on by default (some day..) -* stop reading misc.tmpl if it exists (only done in case users have a customized - version, or an outdated version of page.tmpl that cannot be used by - misctemplate) In general, we try to use [[ikiwiki-transition]] or forced rebuilds on upgrade to deal with changes that break compatability. Some things that -- cgit v1.2.3 From 66c787658e4e040e15a3c836514e5e80c453cc09 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 5 May 2010 18:53:03 -0400 Subject: remove unused --- IkiWiki/Render.pm | 1 - 1 file changed, 1 deletion(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index fc5d3953d..7d66bf5ec 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -146,7 +146,6 @@ sub genpage ($$) { mtime => displaytime($pagemtime{$page}), ctime => displaytime($pagectime{$page}, undef, 1), baseurl => baseurl($page), - have_footer => 1, html5 => $config{html5}, ); -- cgit v1.2.3 From 11937595687df86aa93502d2e895f747a6262c4c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 5 May 2010 20:42:56 -0400 Subject: remove unused indexlink function and template variable --- IkiWiki.pm | 4 ---- IkiWiki/Plugin/editpage.pm | 1 - 2 files changed, 5 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 72f416489..0da2c93c8 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1401,10 +1401,6 @@ sub filter ($$$) { return $content; } -sub indexlink () { - return "$config{wikiname}"; -} - sub check_canedit ($$$;$) { my $page=shift; my $q=shift; diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm index 7bb6eb07c..670eedfd9 100644 --- a/IkiWiki/Plugin/editpage.pm +++ b/IkiWiki/Plugin/editpage.pm @@ -148,7 +148,6 @@ sub cgi_editpage ($$) { $form->field(name => "editcontent", type => "textarea", rows => 20, cols => 80); $form->tmpl_param("can_commit", $config{rcs}); - $form->tmpl_param("indexlink", indexlink()); $form->tmpl_param("helponformattinglink", htmllink($page, $page, "ikiwiki/formatting", noimageinline => 1, -- cgit v1.2.3 From f52f395437a946478da2a126015c05e3e0afdc1f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 5 May 2010 21:08:41 -0400 Subject: consistently drop NAME= in templates also add template syntax smoke test --- doc/ikiwiki/directive/template.mdwn | 8 ++--- doc/templates.mdwn | 4 +-- doc/templates/gitbranch.mdwn | 2 +- doc/templates/note.mdwn | 2 +- doc/templates/plugin.mdwn | 2 +- doc/templates/popup.mdwn | 2 +- templates/aggregatepost.tmpl | 18 +++++------ templates/archivepage.tmpl | 6 ++-- templates/atomitem.tmpl | 24 +++++++------- templates/atompage.tmpl | 10 +++--- templates/blogpost.tmpl | 8 ++--- templates/change.tmpl | 18 +++++------ templates/comment.tmpl | 30 ++++++++--------- templates/commentmoderation.tmpl | 4 +-- templates/editcomment.tmpl | 12 +++---- templates/editpage.tmpl | 12 +++---- templates/feedlink.tmpl | 8 ++--- templates/googleform.tmpl | 1 + templates/inlinepage.tmpl | 18 +++++------ templates/microblog.tmpl | 4 +-- templates/page.tmpl | 64 ++++++++++++++++++------------------- templates/pocreatepage.tmpl | 4 +-- templates/renamesummary.tmpl | 4 +-- templates/rssitem.tmpl | 14 ++++---- templates/titlepage.tmpl | 2 +- 25 files changed, 141 insertions(+), 140 deletions(-) diff --git a/doc/ikiwiki/directive/template.mdwn b/doc/ikiwiki/directive/template.mdwn index 052ca7873..6c50fa32e 100644 --- a/doc/ikiwiki/directive/template.mdwn +++ b/doc/ikiwiki/directive/template.mdwn @@ -53,21 +53,21 @@ few things: * To insert the raw value of a variable, with wiki markup not yet converted to html, use ``. * To make a block of text conditional on a variable being set use - `text`. + `text`. * To use one block of text if a variable is set and a second if it's not, - use `textother text` + use `textother text` Here's a sample template: Name: \[[]]
Age:
- + Favorite color:
No favorite color.
- +
diff --git a/doc/templates.mdwn b/doc/templates.mdwn index 2444cf14d..8f6561fcf 100644 --- a/doc/templates.mdwn +++ b/doc/templates.mdwn @@ -12,9 +12,9 @@ easy to learn. All you really need to know to modify templates is this: * To insert the value of a template variable, use ``. * To make a block of text conditional on a variable being set use - `text`. + `text`. * To use one block of text if a variable is set and a second if it's not, - use `textother text` + use `textother text` [[!if test="enabled(template)" then=""" ## template pages diff --git a/doc/templates/gitbranch.mdwn b/doc/templates/gitbranch.mdwn index fcce925d9..962420940 100644 --- a/doc/templates/gitbranch.mdwn +++ b/doc/templates/gitbranch.mdwn @@ -3,7 +3,7 @@ Available in a [[!taglink /git]] repository.
Branch:
Author:
- + This template is used to create an infobox for a git branch. It uses these parameters: diff --git a/doc/templates/note.mdwn b/doc/templates/note.mdwn index 4cc323c0e..9ef5ad942 100644 --- a/doc/templates/note.mdwn +++ b/doc/templates/note.mdwn @@ -1,7 +1,7 @@
- + Use this template to insert a note into a page. The note will be styled to float to the right of other text on the page. This template has one parameter: diff --git a/doc/templates/plugin.mdwn b/doc/templates/plugin.mdwn index c1d1974d6..322c49445 100644 --- a/doc/templates/plugin.mdwn +++ b/doc/templates/plugin.mdwn @@ -8,7 +8,7 @@ Currently enabled: [[!if test="enabled()" then="yes" else="no"]]< [[!if test="sourcepage(plugins/contrib/*)" then="""[[!meta title=" (third party plugin)"]]"""]] [[!tag plugins/type/core]] - + This template is used to create an infobox for an ikiwiki plugin. It uses these parameters:
    diff --git a/doc/templates/popup.mdwn b/doc/templates/popup.mdwn index b355daa2e..92455eb21 100644 --- a/doc/templates/popup.mdwn +++ b/doc/templates/popup.mdwn @@ -1,4 +1,4 @@ - + Use this template to create a popup window that is displayed when the mouse is over part of the page. This template has two parameters:
      diff --git a/templates/aggregatepost.tmpl b/templates/aggregatepost.tmpl index 8b8936733..4e89efe32 100644 --- a/templates/aggregatepost.tmpl +++ b/templates/aggregatepost.tmpl @@ -1,15 +1,15 @@ - + [[!tag ]] - -[[!meta title=""]] + +[[!meta title=""]] - -[[!meta permalink=""]] + +[[!meta permalink=""]] - -[[!meta copyright=""]] + +[[!meta copyright=""]] -[[!meta author=""]] -[[!meta authorurl=""]] +[[!meta author=""]] +[[!meta authorurl=""]] diff --git a/templates/archivepage.tmpl b/templates/archivepage.tmpl index 28800e763..93bdd9ce0 100644 --- a/templates/archivepage.tmpl +++ b/templates/archivepage.tmpl @@ -1,14 +1,14 @@

      - +

      Posted - + by - + diff --git a/templates/atomitem.tmpl b/templates/atomitem.tmpl index 87cbee9e0..4ed17bc62 100644 --- a/templates/atomitem.tmpl +++ b/templates/atomitem.tmpl @@ -1,17 +1,17 @@ <TMPL_VAR TITLE> - + - + - + - + @@ -19,30 +19,30 @@ - + - - + + - + - - " type="text/html" /> + + - - " type="application/atom+xml" /> + + diff --git a/templates/atompage.tmpl b/templates/atompage.tmpl index fc0088ae8..e82b59827 100644 --- a/templates/atompage.tmpl +++ b/templates/atompage.tmpl @@ -5,15 +5,15 @@ - + - + - + @@ -21,13 +21,13 @@ - + - + diff --git a/templates/blogpost.tmpl b/templates/blogpost.tmpl index 7eeede603..5a31e3f8a 100644 --- a/templates/blogpost.tmpl +++ b/templates/blogpost.tmpl @@ -1,10 +1,10 @@

      - -RSS + +RSS - -Atom + +Atom diff --git a/templates/change.tmpl b/templates/change.tmpl index 5f277a0fb..671b9e483 100644 --- a/templates/change.tmpl +++ b/templates/change.tmpl @@ -2,15 +2,15 @@ [[!meta authorurl=""""""]] -[[!meta title="""change to on """]] +[[!meta title="""change to on """]] [[!meta permalink=""]]
      - - -
      + + +
      - +
      -
      +
       
      diff --git a/templates/comment.tmpl b/templates/comment.tmpl index 39cba0ff9..fa90e6d26 100644 --- a/templates/comment.tmpl +++ b/templates/comment.tmpl @@ -1,5 +1,5 @@ -
      -
      +
      +
      @@ -15,40 +15,40 @@
      Comment by - - + + - + - - + + - + - - + + - - + + - +
      - +
      @@ -183,7 +183,7 @@ Last edited
      - +
      -- cgit v1.2.3 From 81948abda76e2aba370533397e9e786ee9f71905 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 5 May 2010 22:47:37 -0400 Subject: remove bogus test for empty page --- t/parentlinks.t | 1 - 1 file changed, 1 deletion(-) diff --git a/t/parentlinks.t b/t/parentlinks.t index 593937a97..9b4654903 100755 --- a/t/parentlinks.t +++ b/t/parentlinks.t @@ -21,7 +21,6 @@ IkiWiki::checkconfig(); # Test data $expected{'parentlinks'} = { - "" => [], "ikiwiki" => [], "ikiwiki/pagespec" => [ {depth => 0, height => 2, }, -- cgit v1.2.3 From 511b9c85085768197f8f595c16747982125a4909 Mon Sep 17 00:00:00 2001 From: "http://ptecza.myopenid.com/" Date: Thu, 6 May 2010 10:51:32 +0000 Subject: * Typo --- doc/news/version_3.20100427.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/news/version_3.20100427.mdwn b/doc/news/version_3.20100427.mdwn index 1701fd670..61cf67141 100644 --- a/doc/news/version_3.20100427.mdwn +++ b/doc/news/version_3.20100427.mdwn @@ -8,7 +8,7 @@ Allowing untrusted users to upload attachments with the ".tmpl" extension is not recommended, as that allows anyone to change a wiki's templates. -The --getctime switch is renamed to --gettimes, and it also gets the +The --getctime switch is renamed to --gettime, and it also gets the file modification time. And it's a lot faster (when using git). But the really important change is, you don't have to remember to use this switch. Now ikiwiki will do it when it needs to. -- cgit v1.2.3 From f69026667b523adaad8626fef549944f9d5b91e4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 13:55:32 -0400 Subject: typo --- debian/NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/NEWS b/debian/NEWS index 0f2c1f562..4e0c7810b 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -23,7 +23,7 @@ ikiwiki (3.20100427) unstable; urgency=low extension is not recommended, as that allows anyone to change a wiki's templates. - The --getctime switch is renamed to --gettimes, and it also gets the + The --getctime switch is renamed to --gettime, and it also gets the file modification time. And it's a lot faster (when using git). But the really important change is, you don't have to remember to use this switch. Now ikiwiki will do it when it needs to. -- cgit v1.2.3 From f0b83af9aadfb5c4755fe9079f1dc97112f49d95 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 17:18:08 -0400 Subject: add --- doc/bugs/comments_not_searchable.mdwn | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 doc/bugs/comments_not_searchable.mdwn diff --git a/doc/bugs/comments_not_searchable.mdwn b/doc/bugs/comments_not_searchable.mdwn new file mode 100644 index 000000000..72f7bf30f --- /dev/null +++ b/doc/bugs/comments_not_searchable.mdwn @@ -0,0 +1,17 @@ +The text of comments (and other internal pages) does not get indexed by the +search plugin. + +Search indexes content passed to the postscan hook. +Comments are inlined, but inline's speed hack avoids adding inlined +content to the page until the format hook. + +And hmm, that's somewhat desirable, because we don't want searches +to find content that is inlined onto another page. + +That suggests that the fix could be to call the postscan hook +for internal pages. + +However, the search postscan hook tells xapian the page url, +and uses `urlto($page)` to do it. And that won't work for +an internal page. Guess it could be modified to tell xapian the +permalink. --[[Joey]] -- cgit v1.2.3 From 3f925ac7351bcee9a8cbbcae881681e68087de50 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 17:28:47 -0400 Subject: new todo --- doc/todo/comment_moderation_feed.mdwn | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 doc/todo/comment_moderation_feed.mdwn diff --git a/doc/todo/comment_moderation_feed.mdwn b/doc/todo/comment_moderation_feed.mdwn new file mode 100644 index 000000000..267706b1b --- /dev/null +++ b/doc/todo/comment_moderation_feed.mdwn @@ -0,0 +1,9 @@ +There should be a way to generate a feed that is updated whenever a new +comment needs moderation. Otherwise, it can be hard to remember to check +sites, which may rarely get comments. + +The feed should not include the comment subject or body, but could mention +the author. It would be especially handy if it was generated statically. +One way would be to generate internal pages corresponding to each comment +that needs moderation; then the feed could be constructed via a usual +inline. -- cgit v1.2.3 From 7f64ff2ae0e2f2769cf0d0c0c9bc4b370a94b0b7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 17:32:19 -0400 Subject: url to myopenid affiliate program has changed --- doc/plugins/openid.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plugins/openid.mdwn b/doc/plugins/openid.mdwn index 91fc7cddc..cd05bb1ad 100644 --- a/doc/plugins/openid.mdwn +++ b/doc/plugins/openid.mdwn @@ -16,7 +16,7 @@ to the url of a third-party site where users can sign up for an OpenID. If it's set, the signin page will link to that site. This plugin supports the -[myopenid.com affiliate program](http://myopenid.com/affiliate_welcome), +[myopenid.com affiliate program](http://myopenid.com/affiliate), which can be used to help users sign up for an OpenID and log into your site in a single, unified process. When you create the affiliate, specify a login url like `http://example.com/ikiwiki.cgi?do=continue`. Once the -- cgit v1.2.3 From 71b8d2ad4122b7cfe9eda52959e0b2c1f172439c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 19:04:56 -0400 Subject: move meat of type checking to match_page where it belongs --- IkiWiki.pm | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index ee1ecb58f..43995fc96 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2329,11 +2329,7 @@ sub match_glob ($$;@) { my $regexp=IkiWiki::glob2re($glob); if ($page=~/^$regexp$/i) { - if ($params{onlypage} && - ! defined IkiWiki::pagetype($IkiWiki::pagesources{$page})) { - return IkiWiki::FailReason->new("$page is not a page"); - } - elsif (! IkiWiki::isinternal($page) || $params{internal}) { + if (! IkiWiki::isinternal($page) || $params{internal}) { return IkiWiki::SuccessReason->new("$glob matches $page"); } else { @@ -2350,7 +2346,14 @@ sub match_internal ($$;@) { } sub match_page ($$;@) { - return match_glob($_[0], $_[1], @_, onlypage => 1) + my $page=shift; + my $match=match_glob($page, $_[1], @_); + if ($match && ! defined IkiWiki::pagetype($IkiWiki::pagesources{$page})) { + return IkiWiki::FailReason->new("$page is not a page"); + } + else { + return $match; + } } sub match_link ($$;@) { -- cgit v1.2.3 From d9d910f6765de6ba07508ab56a5a0f93edb4c8ad Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 19:19:51 -0400 Subject: moved comments pending moderation * comments: Comments pending moderation are now stored in the srcdir alongside accepted comments, but with a `._comment_pending` extension. * This allows easier byhand moderation, as the "_pending" need only be stripped off and the comment be committed to version control. * The `comment_pending()` pagespec can be used to match such unmoderated comments, which makes it easy to add a feed of them, or a counter indicating how many there are. * Belatedly added a `comment()` pagespec. --- IkiWiki.pm | 4 +- IkiWiki/Plugin/comments.pm | 130 +++++++++++++++++++++++++++++++------------- debian/NEWS | 6 ++ debian/changelog | 8 +++ doc/ikiwiki/pagespec.mdwn | 2 + doc/plugins/comments.mdwn | 4 +- doc/tips/comments_feed.mdwn | 9 ++- ikiwiki.spec | 2 +- 8 files changed, 121 insertions(+), 44 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 43995fc96..11cfcdfd2 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2342,12 +2342,12 @@ sub match_glob ($$;@) { } sub match_internal ($$;@) { - return match_glob($_[0], $_[1], @_, internal => 1) + return match_glob(shift, shift, @_, internal => 1) } sub match_page ($$;@) { my $page=shift; - my $match=match_glob($page, $_[1], @_); + my $match=match_glob($page, shift, @_); if ($match && ! defined IkiWiki::pagetype($IkiWiki::pagesources{$page})) { return IkiWiki::FailReason->new("$page is not a page"); } diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 89560c88b..448ef02f7 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -26,8 +26,11 @@ sub import { hook(type => "preprocess", id => '_comment', call => \&preprocess); hook(type => "sessioncgi", id => 'comment', call => \&sessioncgi); hook(type => "htmlize", id => "_comment", call => \&htmlize); + hook(type => "htmlize", id => "_comment_pending", + call => \&htmlize_pending); hook(type => "pagetemplate", id => "comments", call => \&pagetemplate); - hook(type => "formbuilder_setup", id => "comments", call => \&formbuilder_setup); + hook(type => "formbuilder_setup", id => "comments", + call => \&formbuilder_setup); # Load goto to fix up user page links for logged-in commenters IkiWiki::loadplugin("goto"); IkiWiki::loadplugin("inline"); @@ -104,6 +107,14 @@ sub htmlize { return $params{content}; } +sub htmlize_pending { + my %params = @_; + return sprintf(gettext("comment pending %s"), + ''. + gettext("moderation").''); +} + # FIXME: copied verbatim from meta sub safeurl ($) { my $url=shift; @@ -462,9 +473,15 @@ sub editcomment ($$) { $postcomment=0; if (! $ok) { - my $penddir=$config{wikistatedir}."/comments_pending"; - $location=unique_comment_location($page, $content, $penddir); - writefile("$location._comment", $penddir, $content); + $location=unique_comment_location($page, $content, $config{srcdir}); + writefile("$location._comment_pending", $config{srcdir}, $content); + + # Refresh so anything that deals with pending + # comments can be updated. + require IkiWiki::Render; + IkiWiki::refresh(); + IkiWiki::saveindex(); + IkiWiki::printheader($session); print IkiWiki::misctemplate(gettext(gettext("comment stored for moderation")), "

      ". @@ -540,21 +557,24 @@ sub commentmoderation ($$) { my %vars=$cgi->Vars; my $added=0; foreach my $id (keys %vars) { - if ($id =~ /(.*)\Q._comment\E$/) { + if ($id =~ /(.*)\Q._comment(?:_pending)?\E$/) { my $action=$cgi->param($id); next if $action eq 'Defer' && ! $rejectalldefer; # Make sure that the id is of a legal - # pending comment before untainting. - my ($f)= $id =~ /$config{wiki_file_regexp}/; + # pending comment. + my ($f) = $id =~ /$config{wiki_file_regexp}/; if (! defined $f || ! length $f || IkiWiki::file_pruned($f)) { error("illegal file"); } - my $page=IkiWiki::possibly_foolish_untaint(IkiWiki::dirname($1)); - my $file="$config{wikistatedir}/comments_pending/". - IkiWiki::possibly_foolish_untaint($id); + my $page=IkiWiki::dirname($f); + my $file="$config{srcdir}/$f"; + if (! -e $file) { + # old location + $file="$config{wikistatedir}/comments_pending/".$f; + } if ($action eq 'Accept') { my $content=eval { readfile($file) }; @@ -567,9 +587,6 @@ sub commentmoderation ($$) { $added++; } - # This removes empty subdirs, so the - # .ikiwiki/comments_pending dir will - # go away when all are moderated. require IkiWiki::Render; IkiWiki::prune($file); } @@ -596,15 +613,14 @@ sub commentmoderation ($$) { } my @comments=map { - my ($id, $ctime)=@{$_}; - my $file="$config{wikistatedir}/comments_pending/$id"; - my $content=readfile($file); + my ($id, $dir, $ctime)=@{$_}; + my $content=readfile("$dir/$id"); my $preview=previewcomment($content, $id, - IkiWiki::dirname($_), $ctime); + $id, $ctime); { id => $id, view => $preview, - } + } } sort { $b->[1] <=> $a->[1] } comments_pending(); my $template=template("commentmoderation.tmpl"); @@ -635,26 +651,35 @@ sub formbuilder_setup (@) { } sub comments_pending () { - my $dir="$config{wikistatedir}/comments_pending/"; - return unless -d $dir; - my @ret; + eval q{use File::Find}; error($@) if $@; - find({ - no_chdir => 1, - wanted => sub { - my $file=decode_utf8($_); - $file=~s/^\Q$dir\E\/?//; - return if ! length $file || IkiWiki::file_pruned($file) - || -l $_ || -d _ || $file !~ /\Q._comment\E$/; - my ($f) = $file =~ /$config{wiki_file_regexp}/; # untaint - if (defined $f) { - my $ctime=(stat($_))[10]; - push @ret, [$f, $ctime]; + + my $find_comments=sub { + my $dir=shift; + my $extension=shift; + return unless -d $dir; + find({ + no_chdir => 1, + wanted => sub { + my $file=decode_utf8($_); + $file=~s/^\Q$dir\E\/?//; + return if ! length $file || IkiWiki::file_pruned($file) + || -l $_ || -d _ || $file !~ /\Q$extension\E$/; + my ($f) = $file =~ /$config{wiki_file_regexp}/; # untaint + if (defined $f) { + my $ctime=(stat($_))[10]; + push @ret, [$f, $dir, $ctime]; + } } - } - }, $dir); + }, $dir); + }; + + $find_comments->($config{srcdir}, "._comment_pending"); + # old location + $find_comments->("$config{wikistatedir}/comments_pending/", + "._comment"); return @ret; } @@ -689,7 +714,7 @@ sub previewcomment ($$$) { sub commentsshown ($) { my $page=shift; - return ! pagespec_match($page, "internal(*/$config{comments_pagename}*)", + return ! pagespec_match($page, "comment(*)", location => $page) && pagespec_match($page, $config{comments_pagespec}, location => $page); @@ -719,7 +744,7 @@ sub pagetemplate (@) { my $comments = undef; if ($shown) { $comments = IkiWiki::preprocess_inline( - pages => "internal($page/$config{comments_pagename}*)", + pages => "comment($page)", template => 'comment', show => 0, reverse => 'yes', @@ -847,7 +872,8 @@ sub unique_comment_location ($$$) { do { $i++; $location = "$page/$config{comments_pagename}${i}_${content_md5}"; - } while (-e "$dir/$location._comment"); + } while (-e "$dir/$location._comment" || + -e "$dir/$location._comment_pending"); return $location; } @@ -873,7 +899,35 @@ sub match_postcomment ($$;@) { if (! $postcomment) { return IkiWiki::FailReason->new("not posting a comment"); } - return match_glob($page, $glob); + return match_glob($page, $glob, @_); +} + +sub match_comment ($$;@) { + my $page = shift; + my $glob = shift; + + my $match=match_glob($page, "$glob/*", @_); + if ($match) { + my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page}); + if ($type ne "_comment") { + return IkiWiki::FailReason->new("$page is not a comment"); + } + } + return $match; +} + +sub match_comment_pending ($$;@) { + my $page = shift; + my $glob = shift; + + my $match=match_glob($page, "$glob/*", @_); + if ($match) { + my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page}); + if ($type ne "_comment_pending") { + return IkiWiki::FailReason->new("$page is not a pending comment"); + } + } + return $match; } 1 diff --git a/debian/NEWS b/debian/NEWS index 4e0c7810b..b751f1478 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -1,5 +1,11 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low + There is a new "comment()" pagespec, that can be used to match a comment + on a page. It is recommended it be used instead of the old + method of using a pagespec such as "internal(comment_*)" to match + things that looked like comments. The old pagespec will now also match + comments that are held for moderation; likely not what you want. + There is a significant change to the page.tmpl template in this version. If you have locally modified versions of that template, you will need to update it to contain the following in the HTML : diff --git a/debian/changelog b/debian/changelog index 6b4ba7592..5b51a74f9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,14 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low a single template, page.tmpl. * If you have a locally customised page.tmpl, it needs to be updated to set when BASEURL or FORCEBAREURL is set. + * comments: Comments pending moderation are now stored in the srcdir + alongside accepted comments, but with a `._comment_pending` extension. + * This allows easier byhand moderation, as the "_pending" need + only be stripped off and the comment be committed to version control. + * The `comment_pending()` pagespec can be used to match such unmoderated + comments, which makes it easy to add a feed of them, or a counter + indicating how many there are. + * Belatedly added a `comment()` pagespec. -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 diff --git a/doc/ikiwiki/pagespec.mdwn b/doc/ikiwiki/pagespec.mdwn index 1c99aefac..c66395f84 100644 --- a/doc/ikiwiki/pagespec.mdwn +++ b/doc/ikiwiki/pagespec.mdwn @@ -51,6 +51,8 @@ Some more elaborate limits can be added to what matches using these functions: wiki admins. * "`ip(address)`" - tests whether a modification is being made from the specified IP address. +* "`comment(glob)`" - matches comments to a page matching the glob. +* "`comment_pending(glob)`" - matches unmoderated, pending comments. * "`postcomment(glob)`" - matches only when comments are being posted to a page matching the specified glob diff --git a/doc/plugins/comments.mdwn b/doc/plugins/comments.mdwn index 775ef75a0..14bd28a04 100644 --- a/doc/plugins/comments.mdwn +++ b/doc/plugins/comments.mdwn @@ -49,5 +49,5 @@ held for moderation. (Or with the [[moderatedcomments]] plugin, all comments will be held.) Wiki admins can access the comment moderation queue via a button on their Preferences page. -The comments are stored in `.ikiwiki/comments_pending/`, and can be -deleted, or moved into the wiki's srcdir to be posted. +The unmoderated comments are stored in the `srcdir` with a filename ending +in "._comment_pending". They are not checked into revision control. diff --git a/doc/tips/comments_feed.mdwn b/doc/tips/comments_feed.mdwn index 6d4dbb803..3d6a8c449 100644 --- a/doc/tips/comments_feed.mdwn +++ b/doc/tips/comments_feed.mdwn @@ -3,8 +3,15 @@ blog can have comments added to them. Pages with comments even have special feeds that can be used to subscribe to those comments. But you'd like to add a feed that contains all the comments posted to any page. Here's how: - \[[!inline pages="internal(*/comment_*)" template=comment]] + \[[!inline pages="comment(*)" template=comment]] The special [[ikiwiki/PageSpec]] matches all comments. The [[template|templates]] causes the comments to be displayed formatted nicely. + +--- + +It's also possible to make a feed of comments that are held pending +moderation. + + \[[!inline pages="comment_pending(*)" template=comment]] diff --git a/ikiwiki.spec b/ikiwiki.spec index 76398e9fb..b2b5af3dc 100644 --- a/ikiwiki.spec +++ b/ikiwiki.spec @@ -1,5 +1,5 @@ Name: ikiwiki -Version: 3.20100504 +Version: 3.20100505 Release: 1%{?dist} Summary: A wiki compiler -- cgit v1.2.3 From 2e86b8df985067e101269bb4f8a41c5237af9f91 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 20:46:58 -0400 Subject: fix param passing to match_glob --- IkiWiki.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 43995fc96..11cfcdfd2 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2342,12 +2342,12 @@ sub match_glob ($$;@) { } sub match_internal ($$;@) { - return match_glob($_[0], $_[1], @_, internal => 1) + return match_glob(shift, shift, @_, internal => 1) } sub match_page ($$;@) { my $page=shift; - my $match=match_glob($page, $_[1], @_); + my $match=match_glob($page, shift, @_); if ($match && ! defined IkiWiki::pagetype($IkiWiki::pagesources{$page})) { return IkiWiki::FailReason->new("$page is not a page"); } -- cgit v1.2.3 From 931045301a3a5be917b775277f2a3088209a00f2 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 21:45:17 -0400 Subject: Gave comment and page editing forms some CSS and accessability love. In particular, added

        + + +
      1. + + (optional, or signin) +
      2. +
      3. + + (optional) +
      4. -(You might want to Signin first?)
        +
      5. +(You might want to Signin first?) +
      6. -Subject:
        +
      7. + +
        +
      8. +
      9. +
        +
      10. +

      - + - +
      Comment preview: diff --git a/templates/editpage.tmpl b/templates/editpage.tmpl index 6d8a902a2..1e2d070ed 100644 --- a/templates/editpage.tmpl +++ b/templates/editpage.tmpl @@ -1,4 +1,3 @@ -
      @@ -7,30 +6,37 @@ - -Page location: -Page type: +
        + +
      1. + + +
      2. -
        +

      3. - -Optional comment about this change:
        +
      4. + +
      5. +
        +
      6. +
      - + Attachments
      - + - +
      @@ -39,7 +45,7 @@ Optional comment about this change:
      - +
      Page preview: -- cgit v1.2.3 From a47e835f3a97c9f490622f21562b32fbf527ef1b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 21:55:26 -0400 Subject: reordered some sections --- doc/style.css | 217 ++++++++++++++++++++++++++-------------------------------- 1 file changed, 98 insertions(+), 119 deletions(-) diff --git a/doc/style.css b/doc/style.css index 393f40135..5f77037e4 100644 --- a/doc/style.css +++ b/doc/style.css @@ -4,6 +4,7 @@ * local.css and use it to override or change settings in this one. */ +/* html5 compat */ article, header, footer, @@ -164,7 +165,6 @@ div.recentchanges { width: 60%; } -/* Used for adding a blog page. */ #blogform { padding: 10px 10px; border: 1px solid #aaa; @@ -189,53 +189,6 @@ div.recentchanges { color: #C00; } -/* Used for invalid form fields. */ -.fb_invalid { - color: red; - background: white !important; -} - -/* Used for required form fields. */ -.fb_required { - font-weight: bold; -} - -/* Orange feed button. */ -.feedbutton { - background: #ff6600; - color: white !important; - border-left: 1px solid #cc9966; - border-top: 1px solid #ccaa99; - border-right: 1px solid #993300; - border-bottom: 1px solid #331100; - padding: 0px 0.5em 0px 0.5em; - font-family: sans-serif; - font-weight: bold; - font-size: small; - text-decoration: none; - margin-top: 1em; -} -.feedbutton:hover { - color: white !important; - background: #ff9900; -} - -/* Tag cloud. */ -.pagecloud { - float: right; - width: 30%; - text-align: center; - padding: 10px 10px; - border: 1px solid #aaa; - background: #eee; - color: black !important; -} -.smallestPC { font-size: 70%; } -.smallPC { font-size: 85%; } -.normalPC { font-size: 100%; } -.bigPC { font-size: 115%; } -.biggestPC { font-size: 130%; } - .sidebar { width: 30ex; float: right; @@ -248,32 +201,6 @@ div.recentchanges { color: black !important; } -/* outlines */ -li.L1 { - list-style: upper-roman; -} -li.L2 { - list-style: decimal; -} -li.L3 { - list-style: lower-alpha; -} -li.L4 { - list-style: disc; -} -li.L5 { - list-style: square; -} -li.L6 { - list-style: circle; -} -li.L7 { - list-style: lower-roman; -} -li.L8 { - list-style: upper-alpha; -} - hr.poll { height: 10pt; color: white !important; @@ -287,6 +214,27 @@ div.poll { border: 1px solid #aaa; } +span.color { + padding: 2px; +} + +.comment-header, +.microblog-header { + font-style: italic; + margin-top: .3em; +} +.comment .author, +.microblog .author { + font-weight: bold; +} +.comment-subject { + font-weight: bold; +} +.comment { + border: 1px solid #aaa; + padding: 3px; +} + div.progress { margin-top: 1ex; margin-bottom: 1ex; @@ -303,23 +251,7 @@ div.progress-done { padding: 1px; } -input#openid_url { - background: url(wikiicons/openidlogin-bg.gif) no-repeat; - background-color: #fff; - background-position: 0 50%; - color: #000; - padding-left: 18px; -} - -input#searchbox { - background: url(wikiicons/search-bg.gif) no-repeat; - background-color: #fff; - background-position: 100% 50%; - color: #000; - padding-right: 16px; -} - -/* Things to hide in printouts. */ +/* things to hide in printouts */ @media print { .actions { display: none; } .tags { display: none; } @@ -329,7 +261,7 @@ input#searchbox { #backlinks { display: none; } } -/* Provided for use by template plugin for floating info boxes. */ +/* infobox template */ .infobox { float: right; margin-left: 2ex; @@ -341,7 +273,7 @@ input#searchbox { color: black !important; } -/* Provided for use by template plugin for floating note boxes. */ +/* notebox template */ .notebox { float: right; margin-left: 2ex; @@ -354,7 +286,7 @@ input#searchbox { color: black !important; } -/* Used by the popup template and for backlinks hiding. */ +/* popup template and backlinks hiding */ .popup { border-bottom: 1px dotted #366; color: #366; @@ -375,7 +307,7 @@ input#searchbox { color: black; } -/* Formbuilder styling */ +/* form styling */ fieldset { margin: 1ex 0; border: 1px solid black; @@ -397,28 +329,6 @@ legend { background: #eee; color: black !important; } - -span.color { - padding: 2px; -} - -.comment-header, -.microblog-header { - font-style: italic; - margin-top: .3em; -} -.comment .author, -.microblog .author { - font-weight: bold; -} -.comment-subject { - font-weight: bold; -} -.comment { - border: 1px solid #aaa; - padding: 3px; -} - label.block { display: block; } @@ -432,8 +342,31 @@ ol.form { li.form { padding-bottom: 1em; } +input#openid_url { + background: url(wikiicons/openidlogin-bg.gif) no-repeat; + background-color: #fff; + background-position: 0 50%; + color: #000; + padding-left: 18px; +} +input#searchbox { + background: url(wikiicons/search-bg.gif) no-repeat; + background-color: #fff; + background-position: 100% 50%; + color: #000; + padding-right: 16px; +} +/* invalid form fields */ +.fb_invalid { + color: red; + background: white !important; +} +/* required form fields */ +.fb_required { + font-weight: bold; +} -/* Used by the highlight plugin. */ +/* highlight plugin */ pre.hl { color:#000000; background-color:#ffffff; } .hl.num { color:#2928ff; } .hl.esc { color:#ff00ff; } @@ -450,7 +383,7 @@ pre.hl { color:#000000; background-color:#ffffff; } .hl.kwc { color:#000000; font-weight:bold; } .hl.kwd { color:#010181; } -/* For the calendar plugin. */ +/* calendar plugin */ .month-calendar-day-this-day { background-color: #eee; } .year-calendar-this-month { background-color: #eee; } .month-calendar-arrow A:link, @@ -461,3 +394,49 @@ pre.hl { color:#000000; background-color:#ffffff; } font-weight: normal; font-size: 150%; } + +/* outlines */ +li.L1 { list-style: upper-roman; } +li.L2 { list-style: decimal; } +li.L3 { list-style: lower-alpha; } +li.L4 { list-style: disc; } +li.L5 { list-style: square; } +li.L6 { list-style: circle; } +li.L7 { list-style: lower-roman; } +li.L8 { list-style: upper-alpha; } + +/* tag cloud */ +.pagecloud { + float: right; + width: 30%; + text-align: center; + padding: 10px 10px; + border: 1px solid #aaa; + background: #eee; + color: black !important; +} +.smallestPC { font-size: 70%; } +.smallPC { font-size: 85%; } +.normalPC { font-size: 100%; } +.bigPC { font-size: 115%; } +.biggestPC { font-size: 130%; } + +/* orange feed button */ +.feedbutton { + background: #ff6600; + color: white !important; + border-left: 1px solid #cc9966; + border-top: 1px solid #ccaa99; + border-right: 1px solid #993300; + border-bottom: 1px solid #331100; + padding: 0px 0.5em 0px 0.5em; + font-family: sans-serif; + font-weight: bold; + font-size: small; + text-decoration: none; + margin-top: 1em; +} +.feedbutton:hover { + color: white !important; + background: #ff9900; +} -- cgit v1.2.3 From d3aaf6e01fe7f90a530e640957b5908d5dba2f7f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 22:19:14 -0400 Subject: fix pagediff to not display as "preview" I think originally, the page preview header was not displayed, so diff was hacked in using it. --- IkiWiki/Plugin/editdiff.pm | 2 +- templates/editpage.tmpl | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/editdiff.pm b/IkiWiki/Plugin/editdiff.pm index d8f53a42e..015ce9c14 100644 --- a/IkiWiki/Plugin/editdiff.pm +++ b/IkiWiki/Plugin/editdiff.pm @@ -71,7 +71,7 @@ sub formbuilder_setup { $content=~s/\r/\n/g; my $diff = diff(srcfile($pagesources{$page}), $content); - $form->tmpl_param("page_preview", $diff); + $form->tmpl_param("page_diff", $diff); } } diff --git a/templates/editpage.tmpl b/templates/editpage.tmpl index 1e2d070ed..118ca4550 100644 --- a/templates/editpage.tmpl +++ b/templates/editpage.tmpl @@ -54,3 +54,12 @@
      + +
      +
      +Diff: +
      +
      + +
      +
      -- cgit v1.2.3 From 4c320176c080038f95131f39ecaca3101b4b1745 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 22:27:12 -0400 Subject: simplify formbuilder stylesheet specification Since all forms are wrapped in a template that defines the actual stylesheets, formbuilder just has to be told to turn on stylesheet mode, not what file is the style sheet. --- IkiWiki/CGI.pm | 4 ++-- IkiWiki/Plugin/remove.pm | 2 +- IkiWiki/Plugin/rename.pm | 2 +- IkiWiki/Plugin/websetup.pm | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 07369ac10..49a505514 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -108,7 +108,7 @@ sub cgi_signin ($$) { action => $config{cgiurl}, header => 0, template => {type => 'div'}, - stylesheet => baseurl()."style.css", + stylesheet => 1, ); my $buttons=["Login"]; @@ -187,7 +187,7 @@ sub cgi_prefs ($$) { params => $q, action => $config{cgiurl}, template => {type => 'div'}, - stylesheet => baseurl()."style.css", + stylesheet => 1, fieldsets => [ [login => gettext("Login")], [preferences => gettext("Preferences")], diff --git a/IkiWiki/Plugin/remove.pm b/IkiWiki/Plugin/remove.pm index 0fc180f69..a46294e78 100644 --- a/IkiWiki/Plugin/remove.pm +++ b/IkiWiki/Plugin/remove.pm @@ -103,7 +103,7 @@ sub confirmation_form ($$) { javascript => 0, params => $q, action => $config{cgiurl}, - stylesheet => IkiWiki::baseurl()."style.css", + stylesheet => 1, fields => [qw{do page}], ); diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm index 69e615ead..537e91317 100644 --- a/IkiWiki/Plugin/rename.pm +++ b/IkiWiki/Plugin/rename.pm @@ -126,7 +126,7 @@ sub rename_form ($$$) { javascript => 0, params => $q, action => $config{cgiurl}, - stylesheet => IkiWiki::baseurl()."style.css", + stylesheet => 1, fields => [qw{do page new_name attachment}], ); diff --git a/IkiWiki/Plugin/websetup.pm b/IkiWiki/Plugin/websetup.pm index 4d2e611eb..9cb5eb13c 100644 --- a/IkiWiki/Plugin/websetup.pm +++ b/IkiWiki/Plugin/websetup.pm @@ -293,7 +293,7 @@ sub showform ($$) { ], action => $config{cgiurl}, template => {type => 'div'}, - stylesheet => IkiWiki::baseurl()."style.css", + stylesheet => 1, ); $form->field(name => "do", type => "hidden", value => "setup", -- cgit v1.2.3 From 121e2ffc2f25bf264a68d35e80a9386995fa9e5a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 23:07:08 -0400 Subject: Renamed postscan hook to indexhtml, to reflect its changed position. Probably only the search plugin uses it, so this seemed safe. --- IkiWiki/Plugin/search.pm | 2 +- IkiWiki/Plugin/skeleton.pm.example | 6 +++--- IkiWiki/Render.pm | 2 +- debian/changelog | 2 ++ doc/bugs/pagetitle_function_does_not_respect_meta_titles.mdwn | 2 +- doc/plugins/po/discussion.mdwn | 2 +- doc/plugins/write.mdwn | 6 +++--- 7 files changed, 12 insertions(+), 10 deletions(-) diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm index 9e875c79c..b1f4747fe 100644 --- a/IkiWiki/Plugin/search.pm +++ b/IkiWiki/Plugin/search.pm @@ -10,7 +10,7 @@ sub import { hook(type => "getsetup", id => "search", call => \&getsetup); hook(type => "checkconfig", id => "search", call => \&checkconfig); hook(type => "pagetemplate", id => "search", call => \&pagetemplate); - hook(type => "postscan", id => "search", call => \&index); + hook(type => "indexhtml", id => "search", call => \&index); hook(type => "delete", id => "search", call => \&delete); hook(type => "cgi", id => "search", call => \&cgi); } diff --git a/IkiWiki/Plugin/skeleton.pm.example b/IkiWiki/Plugin/skeleton.pm.example index a404e24af..34713c73b 100644 --- a/IkiWiki/Plugin/skeleton.pm.example +++ b/IkiWiki/Plugin/skeleton.pm.example @@ -20,7 +20,7 @@ sub import { hook(type => "scan", id => "skeleton", call => \&scan); hook(type => "htmlize", id => "skeleton", call => \&htmlize); hook(type => "sanitize", id => "skeleton", call => \&sanitize); - hook(type => "postscan", id => "skeleton", call => \&postscan); + hook(type => "indexhtml", id => "skeleton", call => \&indexhtml); hook(type => "format", id => "skeleton", call => \&format); hook(type => "pagetemplate", id => "skeleton", call => \&pagetemplate); hook(type => "templatefile", id => "skeleton", call => \&templatefile); @@ -118,10 +118,10 @@ sub sanitize (@) { return $params{content}; } -sub postscan (@) { +sub indexhtml (@) { my %params=@_; - debug("skeleton plugin running as postscan"); + debug("skeleton plugin running as indexhtml"); } sub format (@) { diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index e5ba0079b..30e3d4199 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -62,7 +62,7 @@ sub genpage ($$) { my $page=shift; my $content=shift; - run_hooks(postscan => sub { + run_hooks(indexhtml => sub { shift->(page => $page, content => $content); }); diff --git a/debian/changelog b/debian/changelog index 77fd13826..eb67c2bde 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,8 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low * If you have a locally customised page.tmpl, it needs to be updated to set when BASEURL or FORCEBAREURL is set. * Gave comment and page editing forms some CSS and accessability love. + * Renamed postscan hook to indexhtml, to reflect its changed position, + and typical use. -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 diff --git a/doc/bugs/pagetitle_function_does_not_respect_meta_titles.mdwn b/doc/bugs/pagetitle_function_does_not_respect_meta_titles.mdwn index be14e5126..c6e3cd4fd 100644 --- a/doc/bugs/pagetitle_function_does_not_respect_meta_titles.mdwn +++ b/doc/bugs/pagetitle_function_does_not_respect_meta_titles.mdwn @@ -144,7 +144,7 @@ So, looking at your meta branch: --[[Joey]] has no title, then A will display the link as "B". Now page B is modified and a title is added. Nothing updates "A". The added overhead of rebuilding every page that links to B when B is - changed (as the `postscan` hook of the po plugin does) is IMHO a killer. + changed (as the `indexhtml` hook of the po plugin does) is IMHO a killer. That could be hundreds or thousands of pages, making interactive editing way slow. This is probably the main reason I had not attempted this whole thing myself. IMHO this calls for some kind of intellegent dependency diff --git a/doc/plugins/po/discussion.mdwn b/doc/plugins/po/discussion.mdwn index ab822e76c..27683f1ea 100644 --- a/doc/plugins/po/discussion.mdwn +++ b/doc/plugins/po/discussion.mdwn @@ -513,7 +513,7 @@ finish it at some point in the first quarter of 2009. --[[intrigeri]] >>>> >>>>> Done. --[[intrigeri]] >>> -> * I'm very fearful of the `add_depends` in `postscan`. +> * I'm very fearful of the `add_depends` in `indexhtml`. > Does this make every page depend on every page that links > to it? Won't this absurdly bloat the dependency pagespecs > and slow everything down? And since nicepagetitle is given diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 3b1d770eb..7180237a4 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -39,7 +39,7 @@ built. Now that it knows what pages it needs to build, ikiwiki runs two compile passes. First, it runs `scan` hooks, which collect metadata about the pages. Then it runs a page rendering pipeline, by calling in turn these -hooks: `filter`, `preprocess`, `linkify`, `htmlize`, `postscan`, +hooks: `filter`, `preprocess`, `linkify`, `htmlize`, `indexhtml`, `pagetemplate`, `sanitize`, `format`. After all necessary pages are built, it calls the `change` hook. Finally, @@ -282,9 +282,9 @@ like `Makefile` that have no extension. If `hook` is passed an optional "longname" parameter, this value is used when prompting a user to choose a page type on the edit page form. -### postscan +### indexhtml - hook(type => "postscan", id => "foo", call => \&postscan); + hook(type => "indexhtml", id => "foo", call => \&indexhtml); This hook is called once the page has been converted to html (but before the generated html is put in a template). The most common use is to -- cgit v1.2.3 From ea4967f184bf0a27eaa2dc81da1084780756156a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 23:20:48 -0400 Subject: inline: Call indexhtml when inlining internal pages, so their text can be indexed for searching. --- IkiWiki/Plugin/inline.pm | 7 +++++++ IkiWiki/Plugin/search.pm | 6 +++--- IkiWiki/Render.pm | 2 +- debian/changelog | 2 ++ doc/plugins/write.mdwn | 4 ++-- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 933e30646..715a3d652 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -476,6 +476,13 @@ sub get_inline_content ($$) { filter($page, $destpage, readfile(srcfile($file)))))); $nested--; + if (isinternal($page)) { + # make inlined text of internal pages searchable + run_hooks(indexhtml => sub { + shift->(page => $page, destpage => $page, + content => $ret); + }); + } } if ($cached_destpage ne $destpage) { diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm index b1f4747fe..c578b44ab 100644 --- a/IkiWiki/Plugin/search.pm +++ b/IkiWiki/Plugin/search.pm @@ -10,7 +10,7 @@ sub import { hook(type => "getsetup", id => "search", call => \&getsetup); hook(type => "checkconfig", id => "search", call => \&checkconfig); hook(type => "pagetemplate", id => "search", call => \&pagetemplate); - hook(type => "indexhtml", id => "search", call => \&index); + hook(type => "indexhtml", id => "search", call => \&indexhtml); hook(type => "delete", id => "search", call => \&delete); hook(type => "cgi", id => "search", call => \&cgi); } @@ -68,7 +68,7 @@ sub pagetemplate (@) { my $scrubber; my $stemmer; -sub index (@) { +sub indexhtml (@) { my %params=@_; setupfiles(); @@ -117,7 +117,7 @@ sub index (@) { eval q{use HTML::Entities}; error $@ if $@; $doc->set_data( - "url=".urlto($params{page}, "")."\n". + "url=".urlto($params{destpage}, "")."\n". "sample=".decode_entities($sample)."\n". "caption=".decode_entities($caption)."\n". "modtime=$IkiWiki::pagemtime{$params{page}}\n". diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 30e3d4199..b0bd8dee0 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -63,7 +63,7 @@ sub genpage ($$) { my $content=shift; run_hooks(indexhtml => sub { - shift->(page => $page, content => $content); + shift->(page => $page, destpage => $page, content => $content); }); my $templatefile; diff --git a/debian/changelog b/debian/changelog index eb67c2bde..10a4912af 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,8 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low * Gave comment and page editing forms some CSS and accessability love. * Renamed postscan hook to indexhtml, to reflect its changed position, and typical use. + * inline: Call indexhtml when inlining internal pages, so their + text can be indexed for searching. -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 7180237a4..193005565 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -290,8 +290,8 @@ This hook is called once the page has been converted to html (but before the generated html is put in a template). The most common use is to update search indexes. Added in ikiwiki 2.54. -The function is passed named parameters "page" and "content". Its return -value is ignored. +The function is passed named parameters "page", "destpage", and "content". +Its return value is ignored. ### pagetemplate -- cgit v1.2.3 From 14826ad92792b4870108dac3c28840abe1e00428 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 23:25:27 -0400 Subject: Delete hooks are passed deleted internal pages. Necessary so search can remove its indexes for internal pages. But also, it seems it was an omission not to pass the deleted pages before. --- IkiWiki/Render.pm | 2 +- debian/changelog | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index b0bd8dee0..2bf2e336b 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -801,7 +801,7 @@ sub refresh () { remove_unrendered(); if (@$del) { - run_hooks(delete => sub { shift->(@$del) }); + run_hooks(delete => sub { shift->(@$del, @$internal_del) }); } if (%rendered) { run_hooks(change => sub { shift->(keys %rendered) }); diff --git a/debian/changelog b/debian/changelog index 10a4912af..31d64e237 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,6 +9,7 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low and typical use. * inline: Call indexhtml when inlining internal pages, so their text can be indexed for searching. + * Delete hooks are passed deleted internal pages. -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 -- cgit v1.2.3 From 575080d6ef114f24e23c17bd63cf406b22460657 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 23:28:40 -0400 Subject: respect permalinks --- IkiWiki/Plugin/search.pm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm index c578b44ab..cc26b7ac1 100644 --- a/IkiWiki/Plugin/search.pm +++ b/IkiWiki/Plugin/search.pm @@ -112,12 +112,17 @@ sub indexhtml (@) { } $sample=~s/\n/ /g; + my $url=urlto($params{destpage}, ""); + if (defined $pagestate{$params{page}}{meta}{permalink}) { + $url=$pagestate{$params{page}}{meta}{permalink} + } + # data used by omega # Decode html entities in it, since omega re-encodes them. eval q{use HTML::Entities}; error $@ if $@; $doc->set_data( - "url=".urlto($params{destpage}, "")."\n". + "url=".$url."\n". "sample=".decode_entities($sample)."\n". "caption=".decode_entities($caption)."\n". "modtime=$IkiWiki::pagemtime{$params{page}}\n". -- cgit v1.2.3 From 300001184ea60895de9a63537951c41b21486f11 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 6 May 2010 23:28:54 -0400 Subject: done --- doc/bugs/comments_not_searchable.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/bugs/comments_not_searchable.mdwn b/doc/bugs/comments_not_searchable.mdwn index 72f7bf30f..6fda89bd2 100644 --- a/doc/bugs/comments_not_searchable.mdwn +++ b/doc/bugs/comments_not_searchable.mdwn @@ -15,3 +15,5 @@ However, the search postscan hook tells xapian the page url, and uses `urlto($page)` to do it. And that won't work for an internal page. Guess it could be modified to tell xapian the permalink. --[[Joey]] + +> [[done]] --[[Joey]] -- cgit v1.2.3 From 1678604fe36e2a1397e13aa1b36e7807be8f2bc6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 00:22:05 -0400 Subject: avoid redir loop when going to an internal page that has no permalink --- IkiWiki/Plugin/goto.pm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/IkiWiki/Plugin/goto.pm b/IkiWiki/Plugin/goto.pm index 03bd682b3..669211691 100644 --- a/IkiWiki/Plugin/goto.pm +++ b/IkiWiki/Plugin/goto.pm @@ -41,14 +41,15 @@ sub cgi_goto ($;$) { IkiWiki::loadindex(); - # If the page is internal (like a comment), see if it has a - # permalink. Comments do. - if (IkiWiki::isinternal($page) && - defined $pagestate{$page}{meta}{permalink}) { - IkiWiki::redirect($q, $pagestate{$page}{meta}{permalink}); + my $link; + if (! IkiWiki::isinternal($page)) { + $link = bestlink("", $page); + } + elsif (defined $pagestate{$page}{meta}{permalink}) { + # Can only redirect to an internal page if it has a + # permalink. + IkiWiki::redirect($q, $pagestate{$page}{meta}{permalink}); } - - my $link = bestlink("", $page); if (! length $link) { IkiWiki::cgi_custom_failure( -- cgit v1.2.3 From 915d9281dbfb3e93fad7a551a37e7ea3c695d794 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 00:26:59 -0400 Subject: call delete hook even if only internal pages are deleted --- IkiWiki/Render.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 2bf2e336b..c9ba95363 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -800,7 +800,7 @@ sub refresh () { render_backlinks($backlinkchanged); remove_unrendered(); - if (@$del) { + if (@$del || @$internal_del) { run_hooks(delete => sub { shift->(@$del, @$internal_del) }); } if (%rendered) { -- cgit v1.2.3 From da366390cdcf21aa4482bcc805e34049f104a8d3 Mon Sep 17 00:00:00 2001 From: markd Date: Fri, 7 May 2010 10:48:39 +0000 Subject: --- doc/index.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/index.mdwn b/doc/index.mdwn index 06acc9cec..024a48272 100644 --- a/doc/index.mdwn +++ b/doc/index.mdwn @@ -25,4 +25,4 @@ The [[forum]] is open for discussions. can be submitted and tracked using this wiki. Ikiwiki is developed by [[Joey]] and many contributors, -and is [[FreeSoftware]]. +and is [[FreeSoftware]] -- cgit v1.2.3 From 43e27cc25140e4541509558b9c7a51afea58166c Mon Sep 17 00:00:00 2001 From: markd Date: Fri, 7 May 2010 10:50:55 +0000 Subject: --- doc/consultants.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/consultants.mdwn b/doc/consultants.mdwn index ee0915600..2ff769136 100644 --- a/doc/consultants.mdwn +++ b/doc/consultants.mdwn @@ -6,4 +6,4 @@ available to do consulting or other work on ikiwiki. * [[Joey]] wrote ikiwiki. He is available for consulting on a part-time basis. -Feel free to add yourself to this list. +Feel free to add yourself to this list -- cgit v1.2.3 From c9f8fef594e3d820ce4251737e3152e4ffaae528 Mon Sep 17 00:00:00 2001 From: "http://peter-simons.myopenid.com/" Date: Fri, 7 May 2010 13:34:29 +0000 Subject: --- doc/users/KarlMW/discussion.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/users/KarlMW/discussion.mdwn b/doc/users/KarlMW/discussion.mdwn index 9117abcab..4a111a3f9 100644 --- a/doc/users/KarlMW/discussion.mdwn +++ b/doc/users/KarlMW/discussion.mdwn @@ -23,3 +23,5 @@ things that need changing then I will probably need help/guidance. >> I suspect that asciidoc can't really be made to play nice to the extent that I would want casual users/abusers to have it as a markup option on a live wiki - it's fine for a personal site where you can look at the output before putting it online, but I think it would be a hideously gaping integrity hole for anything more than that. However, for a personal site (as I am using it), it does seem to have its uses. >> I'll keep an eye on the format_escape plugin, and assuming it is accepted into ikiwiki, will see if I can apply it to asciidoc. --[[KarlMW]] + +Is there any way to enable latexmath rendering? It semes that ikiwiki strips the necessary javascript and/or style sheet information from the HTML page generated by asciidoc. --Peter -- cgit v1.2.3 From 25033d91145d0f102c6f6889f04e80e31b218684 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 12:18:43 -0400 Subject: Revert markd changes spammer testing? --- doc/consultants.mdwn | 2 +- doc/index.mdwn | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/consultants.mdwn b/doc/consultants.mdwn index 2ff769136..ee0915600 100644 --- a/doc/consultants.mdwn +++ b/doc/consultants.mdwn @@ -6,4 +6,4 @@ available to do consulting or other work on ikiwiki. * [[Joey]] wrote ikiwiki. He is available for consulting on a part-time basis. -Feel free to add yourself to this list +Feel free to add yourself to this list. diff --git a/doc/index.mdwn b/doc/index.mdwn index 024a48272..06acc9cec 100644 --- a/doc/index.mdwn +++ b/doc/index.mdwn @@ -25,4 +25,4 @@ The [[forum]] is open for discussions. can be submitted and tracked using this wiki. Ikiwiki is developed by [[Joey]] and many contributors, -and is [[FreeSoftware]] +and is [[FreeSoftware]]. -- cgit v1.2.3 From 5e6ed105836e4b19b1773bfd9d7f1002b1da57bf Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 12:43:51 -0400 Subject: nasty update to ugly hack to allow comment() pagespecs to work --- IkiWiki/Render.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index c9ba95363..8b1b9aef4 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -641,7 +641,7 @@ sub render_dependent ($$$$$$$) { # only consider internal files # if the page explicitly depends # on such files - my $internal_dep=$dep =~ /internal\(/; + my $internal_dep=$dep =~ /(?:internal|comment|comment_pending)\(/; my $in=sub { my $list=shift; -- cgit v1.2.3 From c2c57f0cfba182964359f0ee71f84fb1b935d10f Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Fri, 7 May 2010 17:46:21 +0100 Subject: gitremotes: don't fetch tags, other than from ikiwiki.info Getting this change in an existing git clone requires removing or reconfiguring the remotes. --- gitremotes | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gitremotes b/gitremotes index f596c650f..6c03011a8 100755 --- a/gitremotes +++ b/gitremotes @@ -16,7 +16,9 @@ while () { my ($oldurl)=$info=~/URL: (.*)/m; if ($oldurl ne $url) { system("git remote rm $remote 2>/dev/null"); - system("git", "remote", "add", "-f", $remote, $url) + system("git", "remote", "add", "-f", $remote, $url); + system("git", "config", "remote.$remote.tagopt", + "--no-tags"); } } } -- cgit v1.2.3 From db5cee6cb6b14367a4e3aa39e0ab3a1a21d25a21 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 12:55:24 -0400 Subject: reorder --- debian/NEWS | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/debian/NEWS b/debian/NEWS index b751f1478..8f456bced 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -1,11 +1,5 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low - There is a new "comment()" pagespec, that can be used to match a comment - on a page. It is recommended it be used instead of the old - method of using a pagespec such as "internal(comment_*)" to match - things that looked like comments. The old pagespec will now also match - comments that are held for moderation; likely not what you want. - There is a significant change to the page.tmpl template in this version. If you have locally modified versions of that template, you will need to update it to contain the following in the HTML : @@ -14,6 +8,12 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low + + Also, there is a new "comment()" pagespec, that can be used to match a + comment on a page. It is recommended it be used instead of the old + method of using a pagespec such as "internal(comment_*)" to match + things that looked like comments. The old pagespec will now also match + comments that are held for moderation; likely not what you want. -- Joey Hess Wed, 05 May 2010 21:47:08 -0400 -- cgit v1.2.3 From 8cd216d748961a18d373b8fea6e4346c0c372f6e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 12:55:34 -0400 Subject: fix match_comment --- IkiWiki/Plugin/comments.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 448ef02f7..0a808aaef 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -906,7 +906,7 @@ sub match_comment ($$;@) { my $page = shift; my $glob = shift; - my $match=match_glob($page, "$glob/*", @_); + my $match=match_glob($page, "$glob/*", internal => 1, @_); if ($match) { my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page}); if ($type ne "_comment") { @@ -920,7 +920,7 @@ sub match_comment_pending ($$;@) { my $page = shift; my $glob = shift; - my $match=match_glob($page, "$glob/*", @_); + my $match=match_glob($page, "$glob/*", internal => 1, @_); if ($match) { my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page}); if ($type ne "_comment_pending") { -- cgit v1.2.3 From f9553a06ab0a13140c62a90a59c566faeedfa9d6 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Fri, 7 May 2010 16:56:45 +0000 Subject: patch --- doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn diff --git a/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn b/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn new file mode 100644 index 000000000..96bdab9cd --- /dev/null +++ b/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn @@ -0,0 +1,11 @@ +[[!tag patch]] +[[!template id=gitbranch branch=smcv/ready/no-tags author="[[smcv]]"]] + +The `gitremotes` script picks up tags from any repository, including those +used for local .debs that were never actually present in Debian: + + smcv@reptile% git tag | grep -c nmu + 52 + +This can be avoided with the `tagopt = --no-tags` option in .git/config; +see -- cgit v1.2.3 From 5dfcaf1f7f3c2ae8304465bdc10bd82bb862fa09 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 13:04:00 -0400 Subject: applied --- doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn b/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn index 96bdab9cd..eb37aee1b 100644 --- a/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn +++ b/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn @@ -9,3 +9,5 @@ used for local .debs that were never actually present in Debian: This can be avoided with the `tagopt = --no-tags` option in .git/config; see + +> [[done]] thanks. Also cleared propigated tags out of origin. --[[Joey]] -- cgit v1.2.3 From 888ac35e11a22fe254127f2c39d71909038494c9 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 13:13:57 -0400 Subject: a bug? --- doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn b/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn index eb37aee1b..32cf419e8 100644 --- a/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn +++ b/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn @@ -10,4 +10,9 @@ used for local .debs that were never actually present in Debian: This can be avoided with the `tagopt = --no-tags` option in .git/config; see -> [[done]] thanks. Also cleared propigated tags out of origin. --[[Joey]] +> [[done]] thanks. Also cleared propigated tags out of origin. +> +> Hmm, in testing I still see tags get pulled the first time a remote +> is added. If those are then locally deleted, it doesn't pull them again +> with the `--no-tags`. +> --[[Joey]] -- cgit v1.2.3 From 4549a4aaa81fa9dbed87954def3eec5bca974157 Mon Sep 17 00:00:00 2001 From: zimek Date: Fri, 7 May 2010 17:22:20 +0000 Subject: --- doc/forum/how_to_login_as_admin.mdwn | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/forum/how_to_login_as_admin.mdwn diff --git a/doc/forum/how_to_login_as_admin.mdwn b/doc/forum/how_to_login_as_admin.mdwn new file mode 100644 index 000000000..67ee9e377 --- /dev/null +++ b/doc/forum/how_to_login_as_admin.mdwn @@ -0,0 +1 @@ +I even managed to set up ikiwiki so it works fine with git; but how on earth do I log in as an administrator? In the .setup file the admin user is set to 'zimek' but when I go and register 'zimek' on the web it appears as normal user not the administrator. What am I missing? -- cgit v1.2.3 From b01a2274c3f96541b8b48f9ebb883ee8b7451fa3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 13:25:32 -0400 Subject: fix undef warning when page() tests a deleted file --- IkiWiki.pm | 3 ++- doc/bugs/deletion_warnings.mdwn | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 11cfcdfd2..d76b5edb4 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2348,7 +2348,8 @@ sub match_internal ($$;@) { sub match_page ($$;@) { my $page=shift; my $match=match_glob($page, shift, @_); - if ($match && ! defined IkiWiki::pagetype($IkiWiki::pagesources{$page})) { + if ($match && ! (exists $IkiWiki::pagesources{$page} + && defined IkiWiki::pagetype($IkiWiki::pagesources{$page}))) { return IkiWiki::FailReason->new("$page is not a page"); } else { diff --git a/doc/bugs/deletion_warnings.mdwn b/doc/bugs/deletion_warnings.mdwn index c8879379b..668626b49 100644 --- a/doc/bugs/deletion_warnings.mdwn +++ b/doc/bugs/deletion_warnings.mdwn @@ -2,6 +2,9 @@ Seen while deleting a blog's calendar pages: --[[Joey]] +[[done]] -- the new `page()` pagespec needed to check if there was a source +file for the page, and was leaking undef. +
          427250f..ff6c054  master     -> origin/master
       Use of uninitialized value $file in pattern match (m//) at /usr/share/perl5/IkiWiki.pm line 688.
      -- 
      cgit v1.2.3
      
      
      From be0c2df6db1e30b4ee4213f402a1414e2e2abd85 Mon Sep 17 00:00:00 2001
      From: Joey Hess 
      Date: Fri, 7 May 2010 13:28:14 -0400
      Subject: check that pagesources exists before testing
      
      ---
       IkiWiki/Plugin/comments.pm | 8 ++++----
       1 file changed, 4 insertions(+), 4 deletions(-)
      
      diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
      index 0a808aaef..76f6551ae 100644
      --- a/IkiWiki/Plugin/comments.pm
      +++ b/IkiWiki/Plugin/comments.pm
      @@ -907,9 +907,9 @@ sub match_comment ($$;@) {
       	my $glob = shift;
       
       	my $match=match_glob($page, "$glob/*", internal => 1, @_);
      -	if ($match) {
      +	if ($match && exists $IkiWiki::pagesources{$page}) {
       		my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page});
      -		if ($type ne "_comment") {
      +		if (defined $type && $type ne "_comment") {
       			return IkiWiki::FailReason->new("$page is not a comment");
       		}
       	}
      @@ -921,9 +921,9 @@ sub match_comment_pending ($$;@) {
       	my $glob = shift;
       
       	my $match=match_glob($page, "$glob/*", internal => 1, @_);
      -	if ($match) {
      +	if ($match && $IkiWiki::pagesources{$page}) {
       		my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page});
      -		if ($type ne "_comment_pending") {
      +		if (defined $type && $type ne "_comment_pending") {
       			return IkiWiki::FailReason->new("$page is not a pending comment");
       		}
       	}
      -- 
      cgit v1.2.3
      
      
      From c420e057f36b39b8ba4599cc95de7e90407e43ae Mon Sep 17 00:00:00 2001
      From: Joey Hess 
      Date: Fri, 7 May 2010 13:32:43 -0400
      Subject: response
      
      ---
       doc/forum/how_to_login_as_admin.mdwn | 15 ++++++++++++++-
       1 file changed, 14 insertions(+), 1 deletion(-)
      
      diff --git a/doc/forum/how_to_login_as_admin.mdwn b/doc/forum/how_to_login_as_admin.mdwn
      index 67ee9e377..e960d66b3 100644
      --- a/doc/forum/how_to_login_as_admin.mdwn
      +++ b/doc/forum/how_to_login_as_admin.mdwn
      @@ -1 +1,14 @@
      -I even managed to set up ikiwiki so it works fine with git; but how on earth do I log in as an administrator? In the .setup file the admin user is set to 'zimek' but when I go and register 'zimek' on the web it appears as normal user not the administrator. What am I missing?
      +I even managed to set up ikiwiki so it works fine with git; but how on earth do
      +I log in as an administrator? In the .setup file the admin user is set to
      +'zimek' but when I go and register 'zimek' on the web it appears as normal user
      +not the administrator. What am I missing?
      +
      +> That's really all there is to it. The [[automatic_setup|setup]] script
      +> registers the admin user for you before the wiki goes live. If you didn't
      +> use it, registering the right account name will get you the admin account.
      +> 
      +> The name is case sensative, perhaps you really spelled one of them `Zimek`?
      +> 
      +> Or maybe you're the admin, and don't know it? Everything looks the same for the admin,
      +> except they can edit even locked pages, and can access the websetup interface from their
      +> Preferences page, if you have that plugin enabled. --[[Joey]] 
      -- 
      cgit v1.2.3
      
      
      From 682a6480d9dc0256c021fea7565e63c7372d5991 Mon Sep 17 00:00:00 2001
      From: zimek 
      Date: Fri, 7 May 2010 17:39:34 +0000
      Subject:
      
      ---
       doc/forum/how_to_login_as_admin.mdwn | 2 ++
       1 file changed, 2 insertions(+)
      
      diff --git a/doc/forum/how_to_login_as_admin.mdwn b/doc/forum/how_to_login_as_admin.mdwn
      index e960d66b3..0f32dc428 100644
      --- a/doc/forum/how_to_login_as_admin.mdwn
      +++ b/doc/forum/how_to_login_as_admin.mdwn
      @@ -12,3 +12,5 @@ not the administrator. What am I missing?
       > Or maybe you're the admin, and don't know it? Everything looks the same for the admin,
       > except they can edit even locked pages, and can access the websetup interface from their
       > Preferences page, if you have that plugin enabled. --[[Joey]] 
      +
      +>> Maybe I'm indeed. I know that I've disabled all the plugins while installing ikiwiki. Checking it now ;-)
      -- 
      cgit v1.2.3
      
      
      From 8d3c89f0c75c31c5e17a661150662e3efd3a146e Mon Sep 17 00:00:00 2001
      From: Joey Hess 
      Date: Fri, 7 May 2010 13:44:24 -0400
      Subject: bugfixes
      
      ---
       IkiWiki/Plugin/comments.pm | 4 ++--
       1 file changed, 2 insertions(+), 2 deletions(-)
      
      diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
      index 76f6551ae..93c8c4061 100644
      --- a/IkiWiki/Plugin/comments.pm
      +++ b/IkiWiki/Plugin/comments.pm
      @@ -557,7 +557,7 @@ sub commentmoderation ($$) {
       		my %vars=$cgi->Vars;
       		my $added=0;
       		foreach my $id (keys %vars) {
      -			if ($id =~ /(.*)\Q._comment(?:_pending)?\E$/) {
      +			if ($id =~ /(.*)\._comment(?:_pending)?$/) {
       				my $action=$cgi->param($id);
       				next if $action eq 'Defer' && ! $rejectalldefer;
       
      @@ -621,7 +621,7 @@ sub commentmoderation ($$) {
       			id => $id,
       			view => $preview,
       		}
      -	} sort { $b->[1] <=> $a->[1] } comments_pending();
      +	} sort { $b->[2] <=> $a->[2] } comments_pending();
       
       	my $template=template("commentmoderation.tmpl");
       	$template->param(
      -- 
      cgit v1.2.3
      
      
      From 941782168040c00d46e9bdf7a1b5014972973ef5 Mon Sep 17 00:00:00 2001
      From: zimek 
      Date: Fri, 7 May 2010 17:46:39 +0000
      Subject:
      
      ---
       doc/forum/how_to_login_as_admin.mdwn | 2 ++
       1 file changed, 2 insertions(+)
      
      diff --git a/doc/forum/how_to_login_as_admin.mdwn b/doc/forum/how_to_login_as_admin.mdwn
      index 0f32dc428..b4e704a80 100644
      --- a/doc/forum/how_to_login_as_admin.mdwn
      +++ b/doc/forum/how_to_login_as_admin.mdwn
      @@ -14,3 +14,5 @@ not the administrator. What am I missing?
       > Preferences page, if you have that plugin enabled. --[[Joey]] 
       
       >> Maybe I'm indeed. I know that I've disabled all the plugins while installing ikiwiki. Checking it now ;-)
      +
      +>> Yup, I'm the God of my ikiwiki.
      -- 
      cgit v1.2.3
      
      
      From 2dfdadf10cefea593508e85979a0dff8c1584f2f Mon Sep 17 00:00:00 2001
      From: Joey Hess 
      Date: Fri, 7 May 2010 13:47:29 -0400
      Subject: bugfix
      
      ---
       IkiWiki/Plugin/comments.pm | 10 ++++------
       1 file changed, 4 insertions(+), 6 deletions(-)
      
      diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
      index 93c8c4061..077c4776b 100644
      --- a/IkiWiki/Plugin/comments.pm
      +++ b/IkiWiki/Plugin/comments.pm
      @@ -473,7 +473,7 @@ sub editcomment ($$) {
       		$postcomment=0;
       
       		if (! $ok) {
      -			$location=unique_comment_location($page, $content, $config{srcdir});
      +			$location=unique_comment_location($page, $content, $config{srcdir}, "._comment_pending");
       			writefile("$location._comment_pending", $config{srcdir}, $content);
       
       			# Refresh so anything that deals with pending
      @@ -858,22 +858,20 @@ sub num_comments ($$) {
       	return @comments;
       }
       
      -sub unique_comment_location ($$$) {
      +sub unique_comment_location ($$$$) {
       	my $page=shift;
      -
       	eval q{use Digest::MD5 'md5_hex'};
       	error($@) if $@;
       	my $content_md5=md5_hex(Encode::encode_utf8(shift));
      -
       	my $dir=shift;
      +	my $ext=shift || "._comment";
       
       	my $location;
       	my $i = num_comments($page, $dir);
       	do {
       		$i++;
       		$location = "$page/$config{comments_pagename}${i}_${content_md5}";
      -	} while (-e "$dir/$location._comment" ||
      -	         -e "$dir/$location._comment_pending");
      +	} while (-e "$dir/$location$ext");
       
       	return $location;
       }
      -- 
      cgit v1.2.3
      
      
      From 9b18bdf1e1b5176c100dc1cbee4853d0538c3a71 Mon Sep 17 00:00:00 2001
      From: zimek 
      Date: Fri, 7 May 2010 17:48:43 +0000
      Subject:
      
      ---
       doc/forum/how_to_login_as_admin.mdwn | 2 +-
       1 file changed, 1 insertion(+), 1 deletion(-)
      
      diff --git a/doc/forum/how_to_login_as_admin.mdwn b/doc/forum/how_to_login_as_admin.mdwn
      index b4e704a80..807f82501 100644
      --- a/doc/forum/how_to_login_as_admin.mdwn
      +++ b/doc/forum/how_to_login_as_admin.mdwn
      @@ -15,4 +15,4 @@ not the administrator. What am I missing?
       
       >> Maybe I'm indeed. I know that I've disabled all the plugins while installing ikiwiki. Checking it now ;-)
       
      ->> Yup, I'm the God of my ikiwiki.
      +>> Yup, I'm the God of my ikiwiki. (Thanks)
      -- 
      cgit v1.2.3
      
      
      From 93ad589b463259916f3d1c2db4e6ff590b6ae9e2 Mon Sep 17 00:00:00 2001
      From: zimek 
      Date: Fri, 7 May 2010 17:51:53 +0000
      Subject:
      
      ---
       ...double_forward_slash___39____47____47____39___in_the_address_bar.mdwn | 1 +
       1 file changed, 1 insertion(+)
       create mode 100644 doc/forum/double_forward_slash___39____47____47____39___in_the_address_bar.mdwn
      
      diff --git a/doc/forum/double_forward_slash___39____47____47____39___in_the_address_bar.mdwn b/doc/forum/double_forward_slash___39____47____47____39___in_the_address_bar.mdwn
      new file mode 100644
      index 000000000..38e486c73
      --- /dev/null
      +++ b/doc/forum/double_forward_slash___39____47____47____39___in_the_address_bar.mdwn
      @@ -0,0 +1 @@
      +Why do all the pages are preceded with a double forward slash in the address bar... ie. http://example.org//ikiwiki/pagespec/ .. maybe someone knows?
      -- 
      cgit v1.2.3
      
      
      From fe8f4a77818f835aaaeb3784ca954e9ae96b4709 Mon Sep 17 00:00:00 2001
      From: Joey Hess 
      Date: Fri, 7 May 2010 13:55:08 -0400
      Subject: better wording
      
      ---
       IkiWiki/Plugin/comments.pm | 2 +-
       1 file changed, 1 insertion(+), 1 deletion(-)
      
      diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
      index 077c4776b..5d7176a8c 100644
      --- a/IkiWiki/Plugin/comments.pm
      +++ b/IkiWiki/Plugin/comments.pm
      @@ -109,7 +109,7 @@ sub htmlize {
       
       sub htmlize_pending {
       	my %params = @_;
      -	return sprintf(gettext("comment pending %s"),
      +	return sprintf(gettext("this comment needs %s"),
       		''.
       		gettext("moderation").'');
      -- 
      cgit v1.2.3
      
      
      From 6a83be26471ac6615bad48a1a365a7e62e972a7b Mon Sep 17 00:00:00 2001
      From: zimek 
      Date: Fri, 7 May 2010 17:56:06 +0000
      Subject:
      
      ---
       ...ouble_forward_slash___39____47____47____39___in_the_address_bar.mdwn | 2 ++
       1 file changed, 2 insertions(+)
      
      diff --git a/doc/forum/double_forward_slash___39____47____47____39___in_the_address_bar.mdwn b/doc/forum/double_forward_slash___39____47____47____39___in_the_address_bar.mdwn
      index 38e486c73..b5fb2aa18 100644
      --- a/doc/forum/double_forward_slash___39____47____47____39___in_the_address_bar.mdwn
      +++ b/doc/forum/double_forward_slash___39____47____47____39___in_the_address_bar.mdwn
      @@ -1 +1,3 @@
       Why do all the pages are preceded with a double forward slash in the address bar... ie. http://example.org//ikiwiki/pagespec/ .. maybe someone knows?
      +
      +> Sorted, base url in the .setup file had the unnecessary '/' suffix.
      -- 
      cgit v1.2.3
      
      
      From b50b549cabc8695959628bee10e015d2dcbb2e95 Mon Sep 17 00:00:00 2001
      From: Joey Hess 
      Date: Fri, 7 May 2010 13:59:08 -0400
      Subject: fix comment matching pagespecs
      
      test isinternal first, because match_glob with internal => 1 also returns
      non-internal pages that match. This order should also be faster.
      
      Remove test to see if pagesources is set. isinternal will not succeed if it
      is not.
      ---
       IkiWiki/Plugin/comments.pm | 32 +++++++++++++++++---------------
       debian/changelog           |  2 +-
       2 files changed, 18 insertions(+), 16 deletions(-)
      
      diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
      index 5d7176a8c..348d91fd8 100644
      --- a/IkiWiki/Plugin/comments.pm
      +++ b/IkiWiki/Plugin/comments.pm
      @@ -904,28 +904,30 @@ sub match_comment ($$;@) {
       	my $page = shift;
       	my $glob = shift;
       
      -	my $match=match_glob($page, "$glob/*", internal => 1, @_);
      -	if ($match && exists $IkiWiki::pagesources{$page}) {
      -		my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page});
      -		if (defined $type && $type ne "_comment") {
      -			return IkiWiki::FailReason->new("$page is not a comment");
      -		}
      +	if (! IkiWiki::isinternal($page)) {
      +		return IkiWiki::FailReason->new("$page is not a comment");
      +	}
      +	my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page});
      +	if (defined $type && $type ne "_comment") {
      +		return IkiWiki::FailReason->new("$page is not a comment");
       	}
      -	return $match;
      +
      +	return match_glob($page, "$glob/*", internal => 1, @_);
       }
       
       sub match_comment_pending ($$;@) {
       	my $page = shift;
       	my $glob = shift;
      -
      -	my $match=match_glob($page, "$glob/*", internal => 1, @_);
      -	if ($match && $IkiWiki::pagesources{$page}) {
      -		my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page});
      -		if (defined $type && $type ne "_comment_pending") {
      -			return IkiWiki::FailReason->new("$page is not a pending comment");
      -		}
      +	
      +	if (! IkiWiki::isinternal($page)) {
      +		return IkiWiki::FailReason->new("$page is not a pending comment");
       	}
      -	return $match;
      +	my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page});
      +	if (defined $type && $type ne "_comment_pending") {
      +		return IkiWiki::FailReason->new("$page is not a pending comment");
      +	}
      +
      +	return match_glob($page, "$glob/*", internal => 1, @_);
       }
       
       1
      diff --git a/debian/changelog b/debian/changelog
      index 7f024a84b..0851a975d 100644
      --- a/debian/changelog
      +++ b/debian/changelog
      @@ -6,7 +6,7 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low
           to set  when BASEURL or FORCEBAREURL is set.
         * comments: Comments pending moderation are now stored in the srcdir
           alongside accepted comments, but with a `._comment_pending` extension.
      -  * This allows easier byhand moderation, as the "_pending" need
      +    This allows easier byhand moderation, as the "_pending" need
           only be stripped off and the comment be committed to version control.
         * The `comment_pending()` pagespec can be used to match such unmoderated
           comments, which makes it easy to add a feed of them, or a counter
      -- 
      cgit v1.2.3
      
      
      From 70f121af025764bda665767d2566b9fa2f66ea91 Mon Sep 17 00:00:00 2001
      From: Joey Hess 
      Date: Fri, 7 May 2010 14:12:14 -0400
      Subject: switch to use comments(), and add a count (and a feed) of comments
       pending moderation
      
      ---
       doc/examples/blog/comments.mdwn | 6 +++++-
       1 file changed, 5 insertions(+), 1 deletion(-)
      
      diff --git a/doc/examples/blog/comments.mdwn b/doc/examples/blog/comments.mdwn
      index 0b503ba01..32ffa5537 100644
      --- a/doc/examples/blog/comments.mdwn
      +++ b/doc/examples/blog/comments.mdwn
      @@ -1,3 +1,7 @@
       This page will show recent comments made to posts in the [[blog|index]].
       
      -[[!inline pages="./posts/*/Discussion or internal(./posts/*/comment_*)"]]
      +There are [[!pagecount pages="comment_pending(/posts/*)"]] comments
      +in the moderation queue.
      +[[!inline pages="comment_pending(/posts/*)" name=pendingmoderation show=-1]]
      +
      +[[!inline pages="./posts/*/Discussion or comment(./posts/*)"]]
      -- 
      cgit v1.2.3
      
      
      From be2669e1e1e51ccf1514ce60697e1ba7ed05497e Mon Sep 17 00:00:00 2001
      From: Joey Hess 
      Date: Fri, 7 May 2010 15:00:45 -0400
      Subject: todo
      
      ---
       doc/roadmap.mdwn | 1 +
       1 file changed, 1 insertion(+)
      
      diff --git a/doc/roadmap.mdwn b/doc/roadmap.mdwn
      index e257c21a2..cdec6e7e8 100644
      --- a/doc/roadmap.mdwn
      +++ b/doc/roadmap.mdwn
      @@ -81,6 +81,7 @@ Probably incomplete list:
       * Enable tagbase by default (so that tag autocreation will work by default).
         Note that this is already done for wikis created by `auto-blog.setup`.
       * [[tips/html5]] on by default (some day..)
      +* Remove support for old `.ikiwiki/comments_pending` from comment plugin.
       
       In general, we try to use [[ikiwiki-transition]] or forced rebuilds on
       upgrade to deal with changes that break compatability. Some things that
      -- 
      cgit v1.2.3
      
      
      From 2ee820dedd9ab80dd0f37c4169970485cb529c3b Mon Sep 17 00:00:00 2001
      From: Joey Hess 
      Date: Fri, 7 May 2010 17:11:23 -0400
      Subject: avoid linking directly to ikiwiki.cgi?do=signin
      
      Instead, add a custom do=commentsignin, that calls cgi_signin.
      
      This allows a plugin to inject a custom cgi_signin, that uses a different
      do= parameter, and have it be used consitently. (This was the only
      place to hardcode a link to do=signin.)
      ---
       IkiWiki/Plugin/comments.pm | 6 +++++-
       1 file changed, 5 insertions(+), 1 deletion(-)
      
      diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
      index 89560c88b..6d513cd2a 100644
      --- a/IkiWiki/Plugin/comments.pm
      +++ b/IkiWiki/Plugin/comments.pm
      @@ -251,6 +251,10 @@ sub sessioncgi ($$) {
       	elsif ($do eq 'commentmoderation') {
       		commentmoderation($cgi, $session);
       	}
      +	elsif ($do eq 'commentsignin') {
      +		IkiWiki::cgi_signin($cgi, $session);
      +		exit;
      +	}
       }
       
       # Mostly cargo-culted from IkiWiki::plugin::editpage
      @@ -328,7 +332,7 @@ sub editcomment ($$) {
       
       	if (! defined $session->param('name')) {
       		# Make signinurl work and return here.
      -		$form->tmpl_param(signinurl => IkiWiki::cgiurl(do => 'signin'));
      +		$form->tmpl_param(signinurl => IkiWiki::cgiurl(do => 'commentsignin'));
       		$session->param(postsignin => $ENV{QUERY_STRING});
       		IkiWiki::cgi_savesession($session);
       	}
      -- 
      cgit v1.2.3
      
      
      From 79b309b3580a6a96aa11c8a59c9734912bec0156 Mon Sep 17 00:00:00 2001
      From: zimek 
      Date: Fri, 7 May 2010 21:56:56 +0000
      Subject:
      
      ---
       doc/forum/debian_backports_update_someone_please.mdwn | 1 +
       1 file changed, 1 insertion(+)
       create mode 100644 doc/forum/debian_backports_update_someone_please.mdwn
      
      diff --git a/doc/forum/debian_backports_update_someone_please.mdwn b/doc/forum/debian_backports_update_someone_please.mdwn
      new file mode 100644
      index 000000000..e5b3cf338
      --- /dev/null
      +++ b/doc/forum/debian_backports_update_someone_please.mdwn
      @@ -0,0 +1 @@
      +I'm just in the process of deploying ikiwiki and I'd love to use it in the html5 mode instead of in XHTML. Any chance that the ikiwiki's .deb in debian backports will be updated any time soon?
      -- 
      cgit v1.2.3
      
      
      From 9541defa69b967d50d3abd8e34e3d5d40e73b358 Mon Sep 17 00:00:00 2001
      From: zimek 
      Date: Fri, 7 May 2010 21:59:05 +0000
      Subject:
      
      ---
       doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn | 1 +
       1 file changed, 1 insertion(+)
       create mode 100644 doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn
      
      diff --git a/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn b/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn
      new file mode 100644
      index 000000000..a26bc9448
      --- /dev/null
      +++ b/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn
      @@ -0,0 +1 @@
      +Puzzled a bit :-/
      -- 
      cgit v1.2.3
      
      
      From 7749350ecd8e760ff6f7808348e750f1feaac248 Mon Sep 17 00:00:00 2001
      From: Joey Hess 
      Date: Fri, 7 May 2010 19:02:30 -0400
      Subject: r21 from http://code.google.com/p/openid-selector/source/checkout
      
      ---
       .../ikiwiki/openid-selector/openid-jquery.js       | 240 +++++++++++++++++++++
       1 file changed, 240 insertions(+)
       create mode 100644 underlays/javascript/ikiwiki/openid-selector/openid-jquery.js
      
      diff --git a/underlays/javascript/ikiwiki/openid-selector/openid-jquery.js b/underlays/javascript/ikiwiki/openid-selector/openid-jquery.js
      new file mode 100644
      index 000000000..eceaddef3
      --- /dev/null
      +++ b/underlays/javascript/ikiwiki/openid-selector/openid-jquery.js
      @@ -0,0 +1,240 @@
      +/*
      +Simple OpenID Plugin
      +http://code.google.com/p/openid-selector/
      +
      +This code is licenced under the New BSD License.
      +*/
      +
      +var providers_large = {
      +    google: {
      +        name: 'Google',
      +        url: 'https://www.google.com/accounts/o8/id'
      +    },
      +    yahoo: {
      +        name: 'Yahoo',      
      +        url: 'http://yahoo.com/'
      +    },    
      +    aol: {
      +        name: 'AOL',     
      +        label: 'Enter your AOL screenname.',
      +        url: 'http://openid.aol.com/{username}'
      +    },
      +    verisign: {
      +        name: 'Verisign',
      +        label: 'Your Verisign username',
      +        url: 'http://{username}.pip.verisignlabs.com/'
      +    },
      +    openid: {
      +        name: 'OpenID',     
      +        label: 'Enter your OpenID.',
      +        url: null
      +    }
      +};
      +var providers_small = {
      +    myopenid: {
      +        name: 'MyOpenID',
      +        label: 'Enter your MyOpenID username.',
      +        url: 'http://{username}.myopenid.com/'
      +    },
      +    livejournal: {
      +        name: 'LiveJournal',
      +        label: 'Enter your Livejournal username.',
      +        url: 'http://{username}.livejournal.com/'
      +    },
      +    flickr: {
      +        name: 'Flickr',        
      +        label: 'Enter your Flickr username.',
      +        url: 'http://flickr.com/{username}/'
      +    },
      +    technorati: {
      +        name: 'Technorati',
      +        label: 'Enter your Technorati username.',
      +        url: 'http://technorati.com/people/technorati/{username}/'
      +    },
      +    wordpress: {
      +        name: 'Wordpress',
      +        label: 'Enter your Wordpress.com username.',
      +        url: 'http://{username}.wordpress.com/'
      +    },
      +    blogger: {
      +        name: 'Blogger',
      +        label: 'Your Blogger account',
      +        url: 'http://{username}.blogspot.com/'
      +    },
      +    vidoop: {
      +        name: 'Vidoop',
      +        label: 'Your Vidoop username',
      +        url: 'http://{username}.myvidoop.com/'
      +    },
      +    claimid: {
      +        name: 'ClaimID',
      +        label: 'Your ClaimID username',
      +        url: 'http://claimid.com/{username}'
      +    }
      +};
      +var providers = $.extend({}, providers_large, providers_small);
      +
      +var openid = {
      +
      +	demo: false,
      +	ajaxHandler: null,
      +	cookie_expires: 6*30,	// 6 months.
      +	cookie_name: 'openid_provider',
      +	cookie_path: '/',
      +	
      +	img_path: 'images/',
      +	
      +	input_id: null,
      +	provider_url: null,
      +	provider_id: null,
      +	
      +    init: function(input_id) {
      +        
      +        var openid_btns = $('#openid_btns');
      +        
      +        this.input_id = input_id;
      +        
      +        $('#openid_choice').show();
      +        $('#openid_input_area').empty();
      +        
      +        // add box for each provider
      +        for (id in providers_large) {
      +        
      +           	openid_btns.append(this.getBoxHTML(providers_large[id], 'large', '.gif'));
      +        }
      +        if (providers_small) {
      +        	openid_btns.append('
      '); + + for (id in providers_small) { + + openid_btns.append(this.getBoxHTML(providers_small[id], 'small', '.ico')); + } + } + + $('#openid_form').submit(this.submit); + + var box_id = this.readCookie(); + if (box_id) { + this.signin(box_id, true); + } + }, + getBoxHTML: function(provider, box_size, image_ext) { + + var box_id = provider["name"].toLowerCase(); + return ''; + + }, + /* Provider image click */ + signin: function(box_id, onload) { + + var provider = providers[box_id]; + if (! provider) { + return; + } + + this.highlight(box_id); + this.setCookie(box_id); + + this.provider_id = box_id; + this.provider_url = provider['url']; + + // prompt user for input? + if (provider['label']) { + this.useInputBox(provider); + } else { + $('#openid_input_area').empty(); + if (! onload) { + $('#openid_form').submit(); + } + } + }, + /* Sign-in button click */ + submit: function() { + + var url = openid.provider_url; + if (url) { + url = url.replace('{username}', $('#openid_username').val()); + openid.setOpenIdUrl(url); + } + if(openid.ajaxHandler) { + openid.ajaxHandler(openid.provider_id, document.getElementById(openid.input_id).value); + return false; + } + if(openid.demo) { + alert("In client demo mode. Normally would have submitted OpenID:\r\n" + document.getElementById(openid.input_id).value); + return false; + } + return true; + }, + setOpenIdUrl: function (url) { + + var hidden = document.getElementById(this.input_id); + if (hidden != null) { + hidden.value = url; + } else { + $('#openid_form').append(''); + } + }, + highlight: function (box_id) { + + // remove previous highlight. + var highlight = $('#openid_highlight'); + if (highlight) { + highlight.replaceWith($('#openid_highlight a')[0]); + } + // add new highlight. + $('.'+box_id).wrap('
      '); + }, + setCookie: function (value) { + + var date = new Date(); + date.setTime(date.getTime()+(this.cookie_expires*24*60*60*1000)); + var expires = "; expires="+date.toGMTString(); + + document.cookie = this.cookie_name+"="+value+expires+"; path=" + this.cookie_path; + }, + readCookie: function () { + var nameEQ = this.cookie_name + "="; + var ca = document.cookie.split(';'); + for(var i=0;i < ca.length;i++) { + var c = ca[i]; + while (c.charAt(0)==' ') c = c.substring(1,c.length); + if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); + } + return null; + }, + useInputBox: function (provider) { + + var input_area = $('#openid_input_area'); + + var html = ''; + var id = 'openid_username'; + var value = ''; + var label = provider['label']; + var style = ''; + + if (label) { + html = '

      ' + label + '

      '; + } + if (provider['name'] == 'OpenID') { + id = this.input_id; + value = 'http://'; + style = 'background:#FFF url('+this.img_path+'openid-inputicon.gif) no-repeat scroll 0 50%; padding-left:18px;'; + } + html += '' + + ''; + + input_area.empty(); + input_area.append(html); + + $('#'+id).focus(); + }, + setDemoMode: function (demoMode) { + this.demo = demoMode; + }, + setAjaxHandler: function (ajaxFunction) { + this.ajaxHandler = ajaxFunction; + } +}; -- cgit v1.2.3 From 76f6ff5f6b437534f8778abf225e2c4398262489 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 19:02:55 -0400 Subject: use me.yahoo.com Fixes http://code.google.com/p/openid-selector/issues/detail?id=10 --- underlays/javascript/ikiwiki/openid-selector/openid-jquery.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/underlays/javascript/ikiwiki/openid-selector/openid-jquery.js b/underlays/javascript/ikiwiki/openid-selector/openid-jquery.js index eceaddef3..3b60827b6 100644 --- a/underlays/javascript/ikiwiki/openid-selector/openid-jquery.js +++ b/underlays/javascript/ikiwiki/openid-selector/openid-jquery.js @@ -12,7 +12,7 @@ var providers_large = { }, yahoo: { name: 'Yahoo', - url: 'http://yahoo.com/' + url: 'http://me.yahoo.com/' }, aol: { name: 'AOL', -- cgit v1.2.3 From 378c64776856ee1313c030375a921e8acb4ff1ef Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 19:10:50 -0400 Subject: patch hidden field setting code Fixes http://code.google.com/p/openid-selector/issues/detail?id=11#c3 --- IkiWiki/Plugin/openid.pm | 82 ++++++++++++++++++---- debian/changelog | 2 + debian/copyright | 7 ++ doc/templates.mdwn | 4 +- templates/openid-selector.tmpl | 30 ++++++++ .../ikiwiki/openid-selector/openid-jquery.js | 8 +-- 6 files changed, 114 insertions(+), 19 deletions(-) create mode 100644 templates/openid-selector.tmpl diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index 7b1a17831..0ad8697d8 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -7,6 +7,7 @@ use strict; use IkiWiki 3.00; sub import { + hook(type => "checkconfig", id => "openid", call => \&checkconfig); hook(type => "getopt", id => "openid", call => \&getopt); hook(type => "getsetup", id => "openid", call => \&getsetup); hook(type => "auth", id => "openid", call => \&auth); @@ -14,6 +15,18 @@ sub import { call => \&formbuilder_setup, last => 1); } +sub checkconfig () { + if ($config{cgi}) { + # Intercept normal signin form, so the openid selector + # can be displayed. + require IkiWiki::CGI; + my $real_cgi_signin=\&IkiWiki::cgi_signin; + inject(name => "IkiWiki::cgi_signin", call => sub ($$) { + openid_selector($real_cgi_signin, @_); + }); + } +} + sub getopt () { eval q{use Getopt::Long}; error($@) if $@; @@ -37,6 +50,39 @@ sub getsetup () { }, } +sub openid_selector { + my $real_cgi_signin=shift; + my $q=shift; + my $session=shift; + + my $openid_url=$q->param('openid_url'); + my $openid_error; + + if (defined $q->param("action") && $q->param("action") eq "verify") { + validate($q, $session, $openid_url, sub { + $openid_error=shift; + }); + } + elsif ($q->param("do") eq "signin" || ! load_openid_module()) { + $real_cgi_signin->($q, $session); + exit; + } + + my $template=IkiWiki::template("openid-selector.tmpl"); + $template->param( + cgiurl => $config{cgiurl}, + (defined $openid_error ? (openid_error => $openid_error) : ()), + (defined $openid_url ? (openid_url => $openid_url) : ()), + # TODO only if other auth methods are available + nonopenidurl => IkiWiki::cgiurl(do => "signin"), + loginlabel => loginlabel(), + ); + + IkiWiki::printheader($session); + print IkiWiki::misctemplate("signin", $template->output); + exit; +} + sub formbuilder_setup (@) { my %params=@_; @@ -45,13 +91,7 @@ sub formbuilder_setup (@) { my $cgi=$params{cgi}; if ($form->title eq "signin") { - # Give up if module is unavailable to avoid - # needing to depend on it. - eval q{use Net::OpenID::Consumer}; - if ($@) { - debug("unable to load Net::OpenID::Consumer, not enabling OpenID login ($@)"); - return; - } + return unless load_openid_module(); # This avoids it displaying a redundant label for the # OpenID fieldset. @@ -59,7 +99,7 @@ sub formbuilder_setup (@) { $form->field( name => "openid_url", - label => gettext("Log in with")." ".htmllink("", "", "ikiwiki/OpenID", noimageinline => 1), + label => loginlabel(), fieldset => "OpenID", size => 30, comment => ($config{openidsignup} ? " | ".gettext("Get an OpenID")."" : "") @@ -72,7 +112,10 @@ sub formbuilder_setup (@) { $form->field( name => "openid_url", validate => sub { - validate($cgi, $session, shift, $form); + validate($cgi, $session, shift, sub { + # Display error in the form. + $form->field(name => "openid_url", comment => shift); + }); }, ); # Skip all other required fields in this case. @@ -98,15 +141,14 @@ sub validate ($$$;$) { my $q=shift; my $session=shift; my $openid_url=shift; - my $form=shift; + my $errhandler=shift; my $csr=getobj($q, $session); my $claimed_identity = $csr->claimed_identity($openid_url); if (! $claimed_identity) { - if ($form) { - # Put the error in the form and fail validation. - $form->field(name => "openid_url", comment => $csr->err); + if ($errhandler) { + $errhandler->($csr->err); return 0; } else { @@ -230,4 +272,18 @@ sub getobj ($$) { ); } +sub load_openid_module { + # Give up if module is unavailable to avoid needing to depend on it. + eval q{use Net::OpenID::Consumer}; + if ($@) { + debug("unable to load Net::OpenID::Consumer, not enabling OpenID login ($@)"); + return; + } + return 1; +} + +sub loginlabel { + return gettext("Log in with")." ".htmllink("", "", "ikiwiki/OpenID", noimageinline => 1); +} + 1 diff --git a/debian/changelog b/debian/changelog index 31d64e237..c335030ed 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,8 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low * inline: Call indexhtml when inlining internal pages, so their text can be indexed for searching. * Delete hooks are passed deleted internal pages. + * openid: Incorporated a fancy openid-selector signin form + (http://code.google.com/p/openid-selector/). -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 diff --git a/debian/copyright b/debian/copyright index d4bb1009f..b6dd3782b 100644 --- a/debian/copyright +++ b/debian/copyright @@ -191,6 +191,13 @@ License: GPL-2+ Files: cvs.pm Copyright: © 2009 Amitai Schlair +License: BSD-C2 + +Files: underlays/javascript/ikiwiki/openid-selector/* +Copyright: © 2008-2010 andyjm, david.j.boden +License: BSD-C2 + From http://code.google.com/p/openid-selector/ + License: BSD-C2 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions diff --git a/doc/templates.mdwn b/doc/templates.mdwn index 8f6561fcf..22b9345ef 100644 --- a/doc/templates.mdwn +++ b/doc/templates.mdwn @@ -71,7 +71,7 @@ html out of ikiwiki and in the templates. * `editpage.tmpl`, `editconflict.tmpl`, `editcreationconflict.tmpl`, `editfailedsave.tmpl`, `editpagegone.tmpl`, `pocreatepage.tmpl`, `editcomment.tmpl` `commentmoderation.tmpl`, `renamesummary.tmpl`, - `passwordmail.tmpl` - Parts of ikiwiki's user interface; do not - normally need to be customised. + `passwordmail.tmpl`, `openid-selector.tmpl` - Parts of ikiwiki's user + interface; do not normally need to be customised. [[!meta robots="noindex, follow"]] diff --git a/templates/openid-selector.tmpl b/templates/openid-selector.tmpl new file mode 100644 index 000000000..76c4051ed --- /dev/null +++ b/templates/openid-selector.tmpl @@ -0,0 +1,30 @@ + + + + + +
      + +
      + + + + +
      +

      :

      +
      +
      + + local account + +
      + + + + + + diff --git a/underlays/javascript/ikiwiki/openid-selector/openid-jquery.js b/underlays/javascript/ikiwiki/openid-selector/openid-jquery.js index 3b60827b6..f39fff842 100644 --- a/underlays/javascript/ikiwiki/openid-selector/openid-jquery.js +++ b/underlays/javascript/ikiwiki/openid-selector/openid-jquery.js @@ -170,11 +170,11 @@ var openid = { }, setOpenIdUrl: function (url) { - var hidden = document.getElementById(this.input_id); - if (hidden != null) { - hidden.value = url; + var hidden = $('#'+this.input_id); + if (hidden.length > 0) { + hidden.value = url; } else { - $('#openid_form').append(''); + $('#openid_form').append(''); } }, highlight: function (box_id) { -- cgit v1.2.3 From 1b8d2ce36b5d6098b318c5b2f75b0e2752b51ac6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 19:29:59 -0400 Subject: add minified jquery.js from openid-selector svn --- .../javascript/ikiwiki/openid-selector/jquery.js | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 underlays/javascript/ikiwiki/openid-selector/jquery.js diff --git a/underlays/javascript/ikiwiki/openid-selector/jquery.js b/underlays/javascript/ikiwiki/openid-selector/jquery.js new file mode 100644 index 000000000..82b98e1d7 --- /dev/null +++ b/underlays/javascript/ikiwiki/openid-selector/jquery.js @@ -0,0 +1,32 @@ +/* + * jQuery 1.2.6 - New Wave Javascript + * + * Copyright (c) 2008 John Resig (jquery.com) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $ + * $Rev: 5685 $ + */ +(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else +return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else +return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else +selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else +this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else +return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else +jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else +jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
      "]||!tags.indexOf("",""]||(!tags.indexOf("",""]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div
      ","
      "]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else +ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&¬xml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&¬xml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&¬xml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else +while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else +for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
      ").append(res.responseText.replace(//g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else +xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else +jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else +for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else +s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else +e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;ithis.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})(); \ No newline at end of file -- cgit v1.2.3 From 1fb9db21807d5136794e3d88bb3c453c03401b00 Mon Sep 17 00:00:00 2001 From: "http://joey.kitenet.net/" Date: Sat, 8 May 2010 00:02:04 +0000 Subject: --- doc/forum/debian_backports_update_someone_please.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/forum/debian_backports_update_someone_please.mdwn b/doc/forum/debian_backports_update_someone_please.mdwn index e5b3cf338..b3fbf1adc 100644 --- a/doc/forum/debian_backports_update_someone_please.mdwn +++ b/doc/forum/debian_backports_update_someone_please.mdwn @@ -1 +1,5 @@ I'm just in the process of deploying ikiwiki and I'd love to use it in the html5 mode instead of in XHTML. Any chance that the ikiwiki's .deb in debian backports will be updated any time soon? + +> Formerer does a good job keeping the backport up-to-date with whatever is in Debian testing. +> Which is the policy of what Backports should contain. So, I just need to stop releasing ikiwiki +> for 2 weeks. :) --[[Joey]] -- cgit v1.2.3 From e196bd3f3a2b1b48fbd19f1014bf03b044c4e829 Mon Sep 17 00:00:00 2001 From: "http://joey.kitenet.net/" Date: Sat, 8 May 2010 00:02:59 +0000 Subject: --- doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn b/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn index a26bc9448..a4644ff64 100644 --- a/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn +++ b/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn @@ -1 +1,3 @@ Puzzled a bit :-/ + +> There is no explicit interface for reverting edits. Most of us use `git revert`. --[[Joey]] -- cgit v1.2.3 From f8c2a67b3cdbce81bbb661e05411a129b07414ce Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 20:14:25 -0400 Subject: pretty openid login * openid: Incorporated a fancy openid-selector signin form. (http://code.google.com/p/openid-selector/) * openid: Use "openid_identifier" as the form field, as required by OpenID Authentication v2.0 spec. --- IkiWiki/Plugin/openid.pm | 68 ++---- debian/changelog | 6 +- debian/copyright | 6 +- doc/style.css | 57 +++-- t/openiduser.t | 2 +- t/permalink.t | 2 +- templates/openid-selector.tmpl | 37 ++-- .../javascript/ikiwiki/openid-selector/jquery.js | 32 --- .../ikiwiki/openid-selector/openid-jquery.js | 240 --------------------- underlays/openid-selector/ikiwiki/openid/jquery.js | 32 +++ .../ikiwiki/openid/openid-jquery.js | 240 +++++++++++++++++++++ 11 files changed, 363 insertions(+), 359 deletions(-) delete mode 100644 underlays/javascript/ikiwiki/openid-selector/jquery.js delete mode 100644 underlays/javascript/ikiwiki/openid-selector/openid-jquery.js create mode 100644 underlays/openid-selector/ikiwiki/openid/jquery.js create mode 100644 underlays/openid-selector/ikiwiki/openid/openid-jquery.js diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index 0ad8697d8..e722c68ba 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -7,6 +7,7 @@ use strict; use IkiWiki 3.00; sub import { + add_underlay("openid-selector"); hook(type => "checkconfig", id => "openid", call => \&checkconfig); hook(type => "getopt", id => "openid", call => \&getopt); hook(type => "getsetup", id => "openid", call => \&getsetup); @@ -19,10 +20,16 @@ sub checkconfig () { if ($config{cgi}) { # Intercept normal signin form, so the openid selector # can be displayed. - require IkiWiki::CGI; - my $real_cgi_signin=\&IkiWiki::cgi_signin; + # + # When other auth hooks are registered, give the selector + # a reference to the normal signin form. + my $real_cgi_signin; + if (keys %{$IkiWiki::hooks{auth}} > 1) { + require IkiWiki::CGI; + $real_cgi_signin=\&IkiWiki::cgi_signin; + } inject(name => "IkiWiki::cgi_signin", call => sub ($$) { - openid_selector($real_cgi_signin, @_); + openid_selector($real_cgi_signin, @_); }); } } @@ -55,15 +62,21 @@ sub openid_selector { my $q=shift; my $session=shift; - my $openid_url=$q->param('openid_url'); + my $openid_url=$q->param('openid_identifier'); my $openid_error; - if (defined $q->param("action") && $q->param("action") eq "verify") { + if (! load_openid_module()) { + if ($real_cgi_signin) { + $real_cgi_signin->($q, $session); + } + error(sprintf(gettext("failed to load openid module: "), @_)); + } + elsif (defined $q->param("action") && $q->param("action") eq "verify") { validate($q, $session, $openid_url, sub { $openid_error=shift; }); } - elsif ($q->param("do") eq "signin" || ! load_openid_module()) { + elsif ($q->param("do") eq "signin" && $real_cgi_signin) { $real_cgi_signin->($q, $session); exit; } @@ -73,8 +86,7 @@ sub openid_selector { cgiurl => $config{cgiurl}, (defined $openid_error ? (openid_error => $openid_error) : ()), (defined $openid_url ? (openid_url => $openid_url) : ()), - # TODO only if other auth methods are available - nonopenidurl => IkiWiki::cgiurl(do => "signin"), + ($real_cgi_signin ? (nonopenidurl => IkiWiki::cgiurl(do => "signin")) : ()), loginlabel => loginlabel(), ); @@ -90,45 +102,9 @@ sub formbuilder_setup (@) { my $session=$params{session}; my $cgi=$params{cgi}; - if ($form->title eq "signin") { - return unless load_openid_module(); - - # This avoids it displaying a redundant label for the - # OpenID fieldset. - $form->fieldsets("OpenID"); - - $form->field( - name => "openid_url", - label => loginlabel(), - fieldset => "OpenID", - size => 30, - comment => ($config{openidsignup} ? " | ".gettext("Get an OpenID")."" : "") - ); - - # Handle submission of an OpenID as validation. - if ($form->submitted && $form->submitted eq "Login" && - defined $form->field("openid_url") && - length $form->field("openid_url")) { - $form->field( - name => "openid_url", - validate => sub { - validate($cgi, $session, shift, sub { - # Display error in the form. - $form->field(name => "openid_url", comment => shift); - }); - }, - ); - # Skip all other required fields in this case. - foreach my $field ($form->field) { - next if $field eq "openid_url"; - $form->field(name => $field, required => 0, - validate => '/.*/'); - } - } - } - elsif ($form->title eq "preferences" && + if ($form->title eq "preferences" && IkiWiki::openiduser($session->param("name"))) { - $form->field(name => "openid_url", disabled => 1, + $form->field(name => "openid_identifier", disabled => 1, label => htmllink("", "", "ikiwiki/OpenID", noimageinline => 1), value => $session->param("name"), size => 50, force => 1, diff --git a/debian/changelog b/debian/changelog index c335030ed..3f20aec1a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,8 +10,10 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low * inline: Call indexhtml when inlining internal pages, so their text can be indexed for searching. * Delete hooks are passed deleted internal pages. - * openid: Incorporated a fancy openid-selector signin form - (http://code.google.com/p/openid-selector/). + * openid: Incorporated a fancy openid-selector signin form. + (http://code.google.com/p/openid-selector/) + * openid: Use "openid_identifier" as the form field, as required + by OpenID Authentication v2.0 spec. -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 diff --git a/debian/copyright b/debian/copyright index b6dd3782b..7ef266151 100644 --- a/debian/copyright +++ b/debian/copyright @@ -193,11 +193,15 @@ Files: cvs.pm Copyright: © 2009 Amitai Schlair License: BSD-C2 -Files: underlays/javascript/ikiwiki/openid-selector/* +Files: underlays/openid-selector/ikiwiki/openid/* Copyright: © 2008-2010 andyjm, david.j.boden License: BSD-C2 From http://code.google.com/p/openid-selector/ +Files: underlays/openid-selector/ikiwiki/openid/jquery.js +Copyright: © 2005-2008 by John Resig, Branden Aaron & Jörn Zaefferer +License: GPL-2 + License: BSD-C2 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions diff --git a/doc/style.css b/doc/style.css index 5f77037e4..75aa28407 100644 --- a/doc/style.css +++ b/doc/style.css @@ -319,16 +319,6 @@ legend { float: left; margin: 2px 0; } -#signin_openid_url_label { - float: left; - margin-right: 1ex; -} -#signin_openid { - padding: 10px 10px; - border: 1px solid #aaa; - background: #eee; - color: black !important; -} label.block { display: block; } @@ -342,13 +332,6 @@ ol.form { li.form { padding-bottom: 1em; } -input#openid_url { - background: url(wikiicons/openidlogin-bg.gif) no-repeat; - background-color: #fff; - background-position: 0 50%; - color: #000; - padding-left: 18px; -} input#searchbox { background: url(wikiicons/search-bg.gif) no-repeat; background-color: #fff; @@ -440,3 +423,43 @@ li.L8 { list-style: upper-alpha; } color: white !important; background: #ff9900; } + +/* openid selector */ +#openid_choice { + display: none; +} +#openid_input_area { + clear: both; + padding: 10px; +} +#openid_btns, #openid_btns br { + clear: both; +} +#openid_highlight { + padding: 3px; + background-color: #FFFCC9; + float: left; +} +.openid_large_btn { + width: 100px; + height: 60px; + border: 1px solid #DDD; + margin: 3px; + float: left; +} +.openid_small_btn { + width: 24px; + height: 24px; + border: 1px solid #DDD; + margin: 3px; + float: left; +} +a.openid_large_btn:focus { + outline: none; +} +a.openid_large_btn:focus { + -moz-outline-style: none; +} +.openid_selected { + border: 4px solid #DDD; +} diff --git a/t/openiduser.t b/t/openiduser.t index caabbcefc..746090103 100755 --- a/t/openiduser.t +++ b/t/openiduser.t @@ -12,7 +12,7 @@ BEGIN { else { eval q{use Test::More tests => 11}; } - use_ok("IkiWiki::Plugin::openid"); + use_ok("IkiWiki"); } # Some typical examples: diff --git a/t/permalink.t b/t/permalink.t index b49b98338..adb8648b4 100755 --- a/t/permalink.t +++ b/t/permalink.t @@ -5,7 +5,7 @@ use Test::More 'no_plan'; ok(! system("mkdir t/tmp")); ok(! system("make -s ikiwiki.out")); -ok(! system("perl -I. ./ikiwiki.out -plugin inline -url=http://example.com -cgiurl=http://example.com/ikiwiki.cgi -rss -atom -underlaydir=underlays/basewiki -templatedir=templates t/tinyblog t/tmp/out")); +ok(! system("perl -I. ./ikiwiki.out -plugin inline -url=http://example.com -cgiurl=http://example.com/ikiwiki.cgi -rss -atom -underlaydir=underlays/basewiki -set underlaydirbase=underlays -templatedir=templates t/tinyblog t/tmp/out")); # This guid should never, ever change, for any reason whatsoever! my $guid="http://example.com/post/"; ok(length `grep '$guid' t/tmp/out/index.rss`); diff --git a/templates/openid-selector.tmpl b/templates/openid-selector.tmpl index 76c4051ed..393479865 100644 --- a/templates/openid-selector.tmpl +++ b/templates/openid-selector.tmpl @@ -1,30 +1,29 @@ - - + + - -
      - -
      -
      -
      -

      :

      -
      +
      + +
      +
      +
      + + local account +
      - - local account +
      + + +
      + +
      -
      - - - - - + diff --git a/underlays/javascript/ikiwiki/openid-selector/jquery.js b/underlays/javascript/ikiwiki/openid-selector/jquery.js deleted file mode 100644 index 82b98e1d7..000000000 --- a/underlays/javascript/ikiwiki/openid-selector/jquery.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - * jQuery 1.2.6 - New Wave Javascript - * - * Copyright (c) 2008 John Resig (jquery.com) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $ - * $Rev: 5685 $ - */ -(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else -return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else -return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else -selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else -this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else -return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else -jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else -jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
      "]||!tags.indexOf("",""]||(!tags.indexOf("",""]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div
      ","
      "]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else -ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&¬xml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&¬xml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&¬xml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else -while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else -for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
      ").append(res.responseText.replace(//g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else -xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else -jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else -for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else -s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else -e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;ithis.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})(); \ No newline at end of file diff --git a/underlays/javascript/ikiwiki/openid-selector/openid-jquery.js b/underlays/javascript/ikiwiki/openid-selector/openid-jquery.js deleted file mode 100644 index f39fff842..000000000 --- a/underlays/javascript/ikiwiki/openid-selector/openid-jquery.js +++ /dev/null @@ -1,240 +0,0 @@ -/* -Simple OpenID Plugin -http://code.google.com/p/openid-selector/ - -This code is licenced under the New BSD License. -*/ - -var providers_large = { - google: { - name: 'Google', - url: 'https://www.google.com/accounts/o8/id' - }, - yahoo: { - name: 'Yahoo', - url: 'http://me.yahoo.com/' - }, - aol: { - name: 'AOL', - label: 'Enter your AOL screenname.', - url: 'http://openid.aol.com/{username}' - }, - verisign: { - name: 'Verisign', - label: 'Your Verisign username', - url: 'http://{username}.pip.verisignlabs.com/' - }, - openid: { - name: 'OpenID', - label: 'Enter your OpenID.', - url: null - } -}; -var providers_small = { - myopenid: { - name: 'MyOpenID', - label: 'Enter your MyOpenID username.', - url: 'http://{username}.myopenid.com/' - }, - livejournal: { - name: 'LiveJournal', - label: 'Enter your Livejournal username.', - url: 'http://{username}.livejournal.com/' - }, - flickr: { - name: 'Flickr', - label: 'Enter your Flickr username.', - url: 'http://flickr.com/{username}/' - }, - technorati: { - name: 'Technorati', - label: 'Enter your Technorati username.', - url: 'http://technorati.com/people/technorati/{username}/' - }, - wordpress: { - name: 'Wordpress', - label: 'Enter your Wordpress.com username.', - url: 'http://{username}.wordpress.com/' - }, - blogger: { - name: 'Blogger', - label: 'Your Blogger account', - url: 'http://{username}.blogspot.com/' - }, - vidoop: { - name: 'Vidoop', - label: 'Your Vidoop username', - url: 'http://{username}.myvidoop.com/' - }, - claimid: { - name: 'ClaimID', - label: 'Your ClaimID username', - url: 'http://claimid.com/{username}' - } -}; -var providers = $.extend({}, providers_large, providers_small); - -var openid = { - - demo: false, - ajaxHandler: null, - cookie_expires: 6*30, // 6 months. - cookie_name: 'openid_provider', - cookie_path: '/', - - img_path: 'images/', - - input_id: null, - provider_url: null, - provider_id: null, - - init: function(input_id) { - - var openid_btns = $('#openid_btns'); - - this.input_id = input_id; - - $('#openid_choice').show(); - $('#openid_input_area').empty(); - - // add box for each provider - for (id in providers_large) { - - openid_btns.append(this.getBoxHTML(providers_large[id], 'large', '.gif')); - } - if (providers_small) { - openid_btns.append('
      '); - - for (id in providers_small) { - - openid_btns.append(this.getBoxHTML(providers_small[id], 'small', '.ico')); - } - } - - $('#openid_form').submit(this.submit); - - var box_id = this.readCookie(); - if (box_id) { - this.signin(box_id, true); - } - }, - getBoxHTML: function(provider, box_size, image_ext) { - - var box_id = provider["name"].toLowerCase(); - return ''; - - }, - /* Provider image click */ - signin: function(box_id, onload) { - - var provider = providers[box_id]; - if (! provider) { - return; - } - - this.highlight(box_id); - this.setCookie(box_id); - - this.provider_id = box_id; - this.provider_url = provider['url']; - - // prompt user for input? - if (provider['label']) { - this.useInputBox(provider); - } else { - $('#openid_input_area').empty(); - if (! onload) { - $('#openid_form').submit(); - } - } - }, - /* Sign-in button click */ - submit: function() { - - var url = openid.provider_url; - if (url) { - url = url.replace('{username}', $('#openid_username').val()); - openid.setOpenIdUrl(url); - } - if(openid.ajaxHandler) { - openid.ajaxHandler(openid.provider_id, document.getElementById(openid.input_id).value); - return false; - } - if(openid.demo) { - alert("In client demo mode. Normally would have submitted OpenID:\r\n" + document.getElementById(openid.input_id).value); - return false; - } - return true; - }, - setOpenIdUrl: function (url) { - - var hidden = $('#'+this.input_id); - if (hidden.length > 0) { - hidden.value = url; - } else { - $('#openid_form').append(''); - } - }, - highlight: function (box_id) { - - // remove previous highlight. - var highlight = $('#openid_highlight'); - if (highlight) { - highlight.replaceWith($('#openid_highlight a')[0]); - } - // add new highlight. - $('.'+box_id).wrap('
      '); - }, - setCookie: function (value) { - - var date = new Date(); - date.setTime(date.getTime()+(this.cookie_expires*24*60*60*1000)); - var expires = "; expires="+date.toGMTString(); - - document.cookie = this.cookie_name+"="+value+expires+"; path=" + this.cookie_path; - }, - readCookie: function () { - var nameEQ = this.cookie_name + "="; - var ca = document.cookie.split(';'); - for(var i=0;i < ca.length;i++) { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); - } - return null; - }, - useInputBox: function (provider) { - - var input_area = $('#openid_input_area'); - - var html = ''; - var id = 'openid_username'; - var value = ''; - var label = provider['label']; - var style = ''; - - if (label) { - html = '

      ' + label + '

      '; - } - if (provider['name'] == 'OpenID') { - id = this.input_id; - value = 'http://'; - style = 'background:#FFF url('+this.img_path+'openid-inputicon.gif) no-repeat scroll 0 50%; padding-left:18px;'; - } - html += '' + - ''; - - input_area.empty(); - input_area.append(html); - - $('#'+id).focus(); - }, - setDemoMode: function (demoMode) { - this.demo = demoMode; - }, - setAjaxHandler: function (ajaxFunction) { - this.ajaxHandler = ajaxFunction; - } -}; diff --git a/underlays/openid-selector/ikiwiki/openid/jquery.js b/underlays/openid-selector/ikiwiki/openid/jquery.js new file mode 100644 index 000000000..82b98e1d7 --- /dev/null +++ b/underlays/openid-selector/ikiwiki/openid/jquery.js @@ -0,0 +1,32 @@ +/* + * jQuery 1.2.6 - New Wave Javascript + * + * Copyright (c) 2008 John Resig (jquery.com) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $ + * $Rev: 5685 $ + */ +(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else +return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else +return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else +selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else +this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else +return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else +jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else +jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
      "]||!tags.indexOf("",""]||(!tags.indexOf("",""]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div
      ","
      "]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else +ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&¬xml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&¬xml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&¬xml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else +while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else +for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
      ").append(res.responseText.replace(//g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else +xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else +jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else +for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else +s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else +e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;ithis.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})(); \ No newline at end of file diff --git a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js new file mode 100644 index 000000000..f39fff842 --- /dev/null +++ b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js @@ -0,0 +1,240 @@ +/* +Simple OpenID Plugin +http://code.google.com/p/openid-selector/ + +This code is licenced under the New BSD License. +*/ + +var providers_large = { + google: { + name: 'Google', + url: 'https://www.google.com/accounts/o8/id' + }, + yahoo: { + name: 'Yahoo', + url: 'http://me.yahoo.com/' + }, + aol: { + name: 'AOL', + label: 'Enter your AOL screenname.', + url: 'http://openid.aol.com/{username}' + }, + verisign: { + name: 'Verisign', + label: 'Your Verisign username', + url: 'http://{username}.pip.verisignlabs.com/' + }, + openid: { + name: 'OpenID', + label: 'Enter your OpenID.', + url: null + } +}; +var providers_small = { + myopenid: { + name: 'MyOpenID', + label: 'Enter your MyOpenID username.', + url: 'http://{username}.myopenid.com/' + }, + livejournal: { + name: 'LiveJournal', + label: 'Enter your Livejournal username.', + url: 'http://{username}.livejournal.com/' + }, + flickr: { + name: 'Flickr', + label: 'Enter your Flickr username.', + url: 'http://flickr.com/{username}/' + }, + technorati: { + name: 'Technorati', + label: 'Enter your Technorati username.', + url: 'http://technorati.com/people/technorati/{username}/' + }, + wordpress: { + name: 'Wordpress', + label: 'Enter your Wordpress.com username.', + url: 'http://{username}.wordpress.com/' + }, + blogger: { + name: 'Blogger', + label: 'Your Blogger account', + url: 'http://{username}.blogspot.com/' + }, + vidoop: { + name: 'Vidoop', + label: 'Your Vidoop username', + url: 'http://{username}.myvidoop.com/' + }, + claimid: { + name: 'ClaimID', + label: 'Your ClaimID username', + url: 'http://claimid.com/{username}' + } +}; +var providers = $.extend({}, providers_large, providers_small); + +var openid = { + + demo: false, + ajaxHandler: null, + cookie_expires: 6*30, // 6 months. + cookie_name: 'openid_provider', + cookie_path: '/', + + img_path: 'images/', + + input_id: null, + provider_url: null, + provider_id: null, + + init: function(input_id) { + + var openid_btns = $('#openid_btns'); + + this.input_id = input_id; + + $('#openid_choice').show(); + $('#openid_input_area').empty(); + + // add box for each provider + for (id in providers_large) { + + openid_btns.append(this.getBoxHTML(providers_large[id], 'large', '.gif')); + } + if (providers_small) { + openid_btns.append('
      '); + + for (id in providers_small) { + + openid_btns.append(this.getBoxHTML(providers_small[id], 'small', '.ico')); + } + } + + $('#openid_form').submit(this.submit); + + var box_id = this.readCookie(); + if (box_id) { + this.signin(box_id, true); + } + }, + getBoxHTML: function(provider, box_size, image_ext) { + + var box_id = provider["name"].toLowerCase(); + return ''; + + }, + /* Provider image click */ + signin: function(box_id, onload) { + + var provider = providers[box_id]; + if (! provider) { + return; + } + + this.highlight(box_id); + this.setCookie(box_id); + + this.provider_id = box_id; + this.provider_url = provider['url']; + + // prompt user for input? + if (provider['label']) { + this.useInputBox(provider); + } else { + $('#openid_input_area').empty(); + if (! onload) { + $('#openid_form').submit(); + } + } + }, + /* Sign-in button click */ + submit: function() { + + var url = openid.provider_url; + if (url) { + url = url.replace('{username}', $('#openid_username').val()); + openid.setOpenIdUrl(url); + } + if(openid.ajaxHandler) { + openid.ajaxHandler(openid.provider_id, document.getElementById(openid.input_id).value); + return false; + } + if(openid.demo) { + alert("In client demo mode. Normally would have submitted OpenID:\r\n" + document.getElementById(openid.input_id).value); + return false; + } + return true; + }, + setOpenIdUrl: function (url) { + + var hidden = $('#'+this.input_id); + if (hidden.length > 0) { + hidden.value = url; + } else { + $('#openid_form').append(''); + } + }, + highlight: function (box_id) { + + // remove previous highlight. + var highlight = $('#openid_highlight'); + if (highlight) { + highlight.replaceWith($('#openid_highlight a')[0]); + } + // add new highlight. + $('.'+box_id).wrap('
      '); + }, + setCookie: function (value) { + + var date = new Date(); + date.setTime(date.getTime()+(this.cookie_expires*24*60*60*1000)); + var expires = "; expires="+date.toGMTString(); + + document.cookie = this.cookie_name+"="+value+expires+"; path=" + this.cookie_path; + }, + readCookie: function () { + var nameEQ = this.cookie_name + "="; + var ca = document.cookie.split(';'); + for(var i=0;i < ca.length;i++) { + var c = ca[i]; + while (c.charAt(0)==' ') c = c.substring(1,c.length); + if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); + } + return null; + }, + useInputBox: function (provider) { + + var input_area = $('#openid_input_area'); + + var html = ''; + var id = 'openid_username'; + var value = ''; + var label = provider['label']; + var style = ''; + + if (label) { + html = '

      ' + label + '

      '; + } + if (provider['name'] == 'OpenID') { + id = this.input_id; + value = 'http://'; + style = 'background:#FFF url('+this.img_path+'openid-inputicon.gif) no-repeat scroll 0 50%; padding-left:18px;'; + } + html += '' + + ''; + + input_area.empty(); + input_area.append(html); + + $('#'+id).focus(); + }, + setDemoMode: function (demoMode) { + this.demo = demoMode; + }, + setAjaxHandler: function (ajaxFunction) { + this.ajaxHandler = ajaxFunction; + } +}; -- cgit v1.2.3 From 7d152f5be5ab12ef17167c820bfc548ccc68cc80 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 20:17:31 -0400 Subject: modify openid selector to not default to http:// for openid ikiwiki doesn't care if the http:// is there, and it seems cleaner and less annoying this way --- underlays/openid-selector/ikiwiki/openid/openid-jquery.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js index f39fff842..48054f79a 100644 --- a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js +++ b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js @@ -220,7 +220,7 @@ var openid = { } if (provider['name'] == 'OpenID') { id = this.input_id; - value = 'http://'; + value = ''; style = 'background:#FFF url('+this.img_path+'openid-inputicon.gif) no-repeat scroll 0 50%; padding-left:18px;'; } html += '' + -- cgit v1.2.3 From 0f2bdbb9686d994ecf96b24be3f7be8295a572c4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 20:20:28 -0400 Subject: use ikiwiki's replacement openid logo in input box --- underlays/openid-selector/ikiwiki/openid/openid-jquery.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js index 48054f79a..37f305bc4 100644 --- a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js +++ b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js @@ -221,7 +221,7 @@ var openid = { if (provider['name'] == 'OpenID') { id = this.input_id; value = ''; - style = 'background:#FFF url('+this.img_path+'openid-inputicon.gif) no-repeat scroll 0 50%; padding-left:18px;'; + style = 'background:#FFF url(wikiicons/openidlogin-bg.gif) no-repeat scroll 0 50%; padding-left:18px;'; } html += '' + ''; -- cgit v1.2.3 From 0800d25f10534005511f696ffefb4548045ef631 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 20:24:42 -0400 Subject: modify labels to input box for consistency --- .../ikiwiki/openid/openid-jquery.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js index 37f305bc4..1d96555a8 100644 --- a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js +++ b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js @@ -16,59 +16,59 @@ var providers_large = { }, aol: { name: 'AOL', - label: 'Enter your AOL screenname.', + label: 'Enter your AOL screenname:', url: 'http://openid.aol.com/{username}' }, verisign: { name: 'Verisign', - label: 'Your Verisign username', + label: 'Enter your Verisign username:', url: 'http://{username}.pip.verisignlabs.com/' }, openid: { name: 'OpenID', - label: 'Enter your OpenID.', + label: 'Enter your OpenID:', url: null } }; var providers_small = { myopenid: { name: 'MyOpenID', - label: 'Enter your MyOpenID username.', + label: 'Enter your MyOpenID username:', url: 'http://{username}.myopenid.com/' }, livejournal: { name: 'LiveJournal', - label: 'Enter your Livejournal username.', + label: 'Enter your Livejournal username:', url: 'http://{username}.livejournal.com/' }, flickr: { name: 'Flickr', - label: 'Enter your Flickr username.', + label: 'Enter your Flickr username:', url: 'http://flickr.com/{username}/' }, technorati: { name: 'Technorati', - label: 'Enter your Technorati username.', + label: 'Enter your Technorati username:', url: 'http://technorati.com/people/technorati/{username}/' }, wordpress: { name: 'Wordpress', - label: 'Enter your Wordpress.com username.', + label: 'Enter your Wordpress.com username:', url: 'http://{username}.wordpress.com/' }, blogger: { name: 'Blogger', - label: 'Your Blogger account', + label: 'Enter your Blogger account:', url: 'http://{username}.blogspot.com/' }, vidoop: { name: 'Vidoop', - label: 'Your Vidoop username', + label: 'Enter your Vidoop username:', url: 'http://{username}.myvidoop.com/' }, claimid: { name: 'ClaimID', - label: 'Your ClaimID username', + label: 'Enter your ClaimID username:', url: 'http://claimid.com/{username}' } }; -- cgit v1.2.3 From c1e365abdc8b89acc4d52b2bb3773b16ae722b8b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 21:20:21 -0400 Subject: remove loginlabel, not used --- IkiWiki/Plugin/openid.pm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index e722c68ba..0454a43fa 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -87,7 +87,6 @@ sub openid_selector { (defined $openid_error ? (openid_error => $openid_error) : ()), (defined $openid_url ? (openid_url => $openid_url) : ()), ($real_cgi_signin ? (nonopenidurl => IkiWiki::cgiurl(do => "signin")) : ()), - loginlabel => loginlabel(), ); IkiWiki::printheader($session); @@ -258,8 +257,4 @@ sub load_openid_module { return 1; } -sub loginlabel { - return gettext("Log in with")." ".htmllink("", "", "ikiwiki/OpenID", noimageinline => 1); -} - 1 -- cgit v1.2.3 From 62b15f811f57cb6b915022e8a58d30b6e38a3f8a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 21:20:40 -0400 Subject: update --- templates/openid-selector.tmpl | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/templates/openid-selector.tmpl b/templates/openid-selector.tmpl index 393479865..06eefebb9 100644 --- a/templates/openid-selector.tmpl +++ b/templates/openid-selector.tmpl @@ -2,21 +2,18 @@
      - -
      - + Select your account provider + + +
      -
      -
      - - local account - +
      -- cgit v1.2.3 From 62edf97941860cd242c08fa8dede3625ee1acb8b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 21:20:50 -0400 Subject: openid signin style changes --- doc/style.css | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/doc/style.css b/doc/style.css index 75aa28407..5f1a8e63a 100644 --- a/doc/style.css +++ b/doc/style.css @@ -441,15 +441,12 @@ li.L8 { list-style: upper-alpha; } float: left; } .openid_large_btn { - width: 100px; - height: 60px; + padding: 1em 1em; border: 1px solid #DDD; margin: 3px; float: left; } .openid_small_btn { - width: 24px; - height: 24px; border: 1px solid #DDD; margin: 3px; float: left; -- cgit v1.2.3 From ede2d1b46de45122c5cc81cd6e7e1131007ce93d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 21:21:04 -0400 Subject: adapt to ikiwiki Upstream ships a collection of icons, but the licences of them are very unclear, since most seem to be taken from the various openid provider websites. That can't be included in ikiwiki. So, instead hotlink to favicons of sites, and for large display, include the site name. Removed vidoop.com, which is gone. If an url is passed to init as the second parameter, add a "Local Login" provider, which just links to do=signin. --- .../ikiwiki/openid/openid-jquery.js | 99 ++++++++++++++-------- 1 file changed, 63 insertions(+), 36 deletions(-) diff --git a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js index 1d96555a8..43d2ef668 100644 --- a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js +++ b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js @@ -8,69 +8,76 @@ This code is licenced under the New BSD License. var providers_large = { google: { name: 'Google', + icon: 'http://google.com/favicon.ico', url: 'https://www.google.com/accounts/o8/id' }, yahoo: { name: 'Yahoo', + icon: 'http://yahoo.com/favicon.ico', url: 'http://me.yahoo.com/' }, - aol: { - name: 'AOL', - label: 'Enter your AOL screenname:', - url: 'http://openid.aol.com/{username}' - }, - verisign: { - name: 'Verisign', - label: 'Enter your Verisign username:', - url: 'http://{username}.pip.verisignlabs.com/' - }, openid: { name: 'OpenID', + icon: 'wikiicons/openidlogin-bg.gif', label: 'Enter your OpenID:', url: null - } + }, }; var providers_small = { - myopenid: { - name: 'MyOpenID', - label: 'Enter your MyOpenID username:', - url: 'http://{username}.myopenid.com/' - }, livejournal: { name: 'LiveJournal', + icon: 'http://livejournal.com/favicon.ico', label: 'Enter your Livejournal username:', url: 'http://{username}.livejournal.com/' }, flickr: { name: 'Flickr', + icon: 'http://flickr.com/favicon.ico', label: 'Enter your Flickr username:', url: 'http://flickr.com/{username}/' }, - technorati: { - name: 'Technorati', - label: 'Enter your Technorati username:', - url: 'http://technorati.com/people/technorati/{username}/' - }, wordpress: { name: 'Wordpress', + icon: 'https://ddgw.s3.amazonaws.com/wordpress.org.ico', label: 'Enter your Wordpress.com username:', url: 'http://{username}.wordpress.com/' }, blogger: { name: 'Blogger', + icon: 'http://blogger.com/favicon.ico', label: 'Enter your Blogger account:', url: 'http://{username}.blogspot.com/' }, - vidoop: { - name: 'Vidoop', - label: 'Enter your Vidoop username:', - url: 'http://{username}.myvidoop.com/' + technorati: { + name: 'Technorati', + icon: 'http://technorati.com/favicon.ico', + label: 'Enter your Technorati username:', + url: 'http://technorati.com/people/technorati/{username}/' + }, + myopenid: { + name: 'MyOpenID', + icon: 'http://myopenid.com/favicon.ico', + label: 'Enter your MyOpenID username:', + url: 'http://{username}.myopenid.com/' }, claimid: { name: 'ClaimID', + icon: 'http://claimid.com/favicon.ico', label: 'Enter your ClaimID username:', url: 'http://claimid.com/{username}' - } + }, + aol: { + name: 'AOL', + icon: 'http://aol.com/favicon.ico', + label: 'Enter your AOL screenname:', + url: 'http://openid.aol.com/{username}' + }, + verisign: { + name: 'Verisign', + icon: 'http://verisign.com/favicon.ico', + label: 'Enter your Verisign username:', + url: 'http://{username}.pip.verisignlabs.com/' + }, }; var providers = $.extend({}, providers_large, providers_small); @@ -88,7 +95,7 @@ var openid = { provider_url: null, provider_id: null, - init: function(input_id) { + init: function(input_id, localloginurl) { var openid_btns = $('#openid_btns'); @@ -99,15 +106,25 @@ var openid = { // add box for each provider for (id in providers_large) { - - openid_btns.append(this.getBoxHTML(providers_large[id], 'large', '.gif')); + openid_btns.append(this.getBoxHTML(providers_large[id], 'large')); } + + if (localloginurl != "") { + openid_btns.append( + '' + + '' + + ' Local Account' + + '' + ); + } if (providers_small) { openid_btns.append('
      '); for (id in providers_small) { - openid_btns.append(this.getBoxHTML(providers_small[id], 'small', '.ico')); + openid_btns.append(this.getBoxHTML(providers_small[id], 'small')); } } @@ -118,12 +135,22 @@ var openid = { this.signin(box_id, true); } }, - getBoxHTML: function(provider, box_size, image_ext) { - + getBoxHTML: function(provider, box_size) { + var label=""; + var title="" + if (box_size == 'large') { + label=' ' + provider["name"]; + } + else { + title=' title="'+provider["name"]+'"'; + } var box_id = provider["name"].toLowerCase(); - return ''; + return '' + + '' + + label + + ''; }, /* Provider image click */ @@ -224,7 +251,7 @@ var openid = { style = 'background:#FFF url(wikiicons/openidlogin-bg.gif) no-repeat scroll 0 50%; padding-left:18px;'; } html += '' + - ''; + ''; input_area.empty(); input_area.append(html); -- cgit v1.2.3 From dc0d48459cfc0dc53301b87c2fc98216f4dcca06 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 21:27:02 -0400 Subject: bugfix --- IkiWiki/Plugin/openid.pm | 1 + 1 file changed, 1 insertion(+) diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index 0454a43fa..427d61457 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -68,6 +68,7 @@ sub openid_selector { if (! load_openid_module()) { if ($real_cgi_signin) { $real_cgi_signin->($q, $session); + exit; } error(sprintf(gettext("failed to load openid module: "), @_)); } -- cgit v1.2.3 From 1e75389a856c8ab8e233b81fd3310169cbe8d57e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 21:28:59 -0400 Subject: bugfix Always load IkiWiki::CGI so its cgi_signin is present, so we replace it. --- IkiWiki/Plugin/openid.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index 427d61457..7e4d0844a 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -23,9 +23,9 @@ sub checkconfig () { # # When other auth hooks are registered, give the selector # a reference to the normal signin form. + require IkiWiki::CGI; my $real_cgi_signin; if (keys %{$IkiWiki::hooks{auth}} > 1) { - require IkiWiki::CGI; $real_cgi_signin=\&IkiWiki::cgi_signin; } inject(name => "IkiWiki::cgi_signin", call => sub ($$) { -- cgit v1.2.3 From 8f6cfbfade6018732495addce11f6d5e93e0b723 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 21:33:27 -0400 Subject: Removed the openidsignup option. --- IkiWiki/Plugin/openid.pm | 15 --------------- debian/changelog | 1 + doc/plugins/openid.mdwn | 12 ------------ 3 files changed, 1 insertion(+), 27 deletions(-) diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index 7e4d0844a..36002371a 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -9,7 +9,6 @@ use IkiWiki 3.00; sub import { add_underlay("openid-selector"); hook(type => "checkconfig", id => "openid", call => \&checkconfig); - hook(type => "getopt", id => "openid", call => \&getopt); hook(type => "getsetup", id => "openid", call => \&getsetup); hook(type => "auth", id => "openid", call => \&auth); hook(type => "formbuilder_setup", id => "openid", @@ -34,13 +33,6 @@ sub checkconfig () { } } -sub getopt () { - eval q{use Getopt::Long}; - error($@) if $@; - Getopt::Long::Configure('pass_through'); - GetOptions("openidsignup=s" => \$config{openidsignup}); -} - sub getsetup () { return plugin => { @@ -48,13 +40,6 @@ sub getsetup () { rebuild => 0, section => "auth", }, - openidsignup => { - type => "string", - example => "http://myopenid.com/", - description => "an url where users can signup for an OpenID", - safe => 1, - rebuild => 0, - }, } sub openid_selector { diff --git a/debian/changelog b/debian/changelog index 3f20aec1a..595b8a2b1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -14,6 +14,7 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low (http://code.google.com/p/openid-selector/) * openid: Use "openid_identifier" as the form field, as required by OpenID Authentication v2.0 spec. + * Removed the openidsignup option. -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 diff --git a/doc/plugins/openid.mdwn b/doc/plugins/openid.mdwn index cd05bb1ad..7da2f8575 100644 --- a/doc/plugins/openid.mdwn +++ b/doc/plugins/openid.mdwn @@ -11,17 +11,5 @@ The [[!cpan LWPx::ParanoidAgent]] perl module is used if available, for added security. Finally, the [[!cpan Crypt::SSLeay]] perl module is needed to support users entering "https" OpenID urls. -This plugin has a configuration option. You can set `--openidsignup` -to the url of a third-party site where users can sign up for an OpenID. If -it's set, the signin page will link to that site. - -This plugin supports the -[myopenid.com affiliate program](http://myopenid.com/affiliate), -which can be used to help users sign up for an OpenID and log into your -site in a single, unified process. When you create the affiliate, specify a -login url like `http://example.com/ikiwiki.cgi?do=continue`. Once the -affiliate is created, set `openidsignup` to point to the affiliate's signup -url. - This plugin is enabled by default, but can be turned off if you want to only use some other form of authentication, such as [[passwordauth]]. -- cgit v1.2.3 From bb7877707ef730c7fdab01509ac6a9cc9eb252d1 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 21:35:47 -0400 Subject: mention style.css changes --- debian/NEWS | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/debian/NEWS b/debian/NEWS index 4e0c7810b..e65a15457 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -9,6 +9,11 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low + There have also been some changes to the style.css in this version, + particularly to support the new openid selector. If you have a modified + version, of style.css, updating it (or moving it to local.css) is + recommended. + -- Joey Hess Wed, 05 May 2010 21:47:08 -0400 ikiwiki (3.20100427) unstable; urgency=low -- cgit v1.2.3 From e2a76696dd9d42c6ed66b831bfd441baadfb4893 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 21:39:42 -0400 Subject: advice --- debian/changelog | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 595b8a2b1..050613706 100644 --- a/debian/changelog +++ b/debian/changelog @@ -14,7 +14,10 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low (http://code.google.com/p/openid-selector/) * openid: Use "openid_identifier" as the form field, as required by OpenID Authentication v2.0 spec. - * Removed the openidsignup option. + * Removed the openidsignup option. Instead, my recommendation is to + leave passwordauth enabled and let people who don't have an openid use it. + The openid selector form avoids the UI annoyance of having both openid + and passwordauth on one form. -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 -- cgit v1.2.3 From 885ac1de47f001f6dcc2393ac8b14f717c2d1780 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 21:44:06 -0400 Subject: improve display w/noscript --- templates/openid-selector.tmpl | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/templates/openid-selector.tmpl b/templates/openid-selector.tmpl index 06eefebb9..7e5ae9a01 100644 --- a/templates/openid-selector.tmpl +++ b/templates/openid-selector.tmpl @@ -10,6 +10,13 @@ $(document).ready(function() {
      Select your account provider +
      +
      @@ -22,5 +29,9 @@ $(document).ready(function() {
      +
    + -- cgit v1.2.3 From b8dcaf91d02c1d8754032c60f8d713261dafffe4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 21:48:50 -0400 Subject: scale display form to match openid size --- IkiWiki/Plugin/openid.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index 36002371a..d75099ce9 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -92,7 +92,7 @@ sub formbuilder_setup (@) { $form->field(name => "openid_identifier", disabled => 1, label => htmllink("", "", "ikiwiki/OpenID", noimageinline => 1), value => $session->param("name"), - size => 50, force => 1, + size => length($session->param("name")), force => 1, fieldset => "login"); $form->field(name => "email", type => "hidden"); } -- cgit v1.2.3 From 3a1d81bd9c5a866aed0dd7890a4174f0ff6b1e78 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 21:54:58 -0400 Subject: avoid scaling favicons chromium's rather impressive jaggy-free scaling spoiled me, but in iceweasel, scaled favicons look crap --- doc/style.css | 1 + underlays/openid-selector/ikiwiki/openid/openid-jquery.js | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/style.css b/doc/style.css index 5f1a8e63a..78756481e 100644 --- a/doc/style.css +++ b/doc/style.css @@ -447,6 +447,7 @@ li.L8 { list-style: upper-alpha; } float: left; } .openid_small_btn { + padding: 4px 4px; border: 1px solid #DDD; margin: 3px; float: left; diff --git a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js index 43d2ef668..8137f232f 100644 --- a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js +++ b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js @@ -114,7 +114,7 @@ var openid = { '' + - '' + + '' + ' Local Account' + '' ); @@ -148,7 +148,7 @@ var openid = { return '' + - '' + + '' + label + ''; -- cgit v1.2.3 From f1f6973d2d05e2cfc7f463df8568de07314e1720 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 7 May 2010 22:21:48 -0400 Subject: update --- doc/ikiwiki/openid.mdwn | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/doc/ikiwiki/openid.mdwn b/doc/ikiwiki/openid.mdwn index 318928139..2fa972ede 100644 --- a/doc/ikiwiki/openid.mdwn +++ b/doc/ikiwiki/openid.mdwn @@ -9,15 +9,10 @@ that allows you to have one login that you can use on a growing number of websites. -To sign up for an OpenID, visit one of the following identity providers: +If you have an account with some of the larger web service providers, +you might already have an OpenID. +[Directory of OpenID providers](http://openiddirectory.com/openid-providers-c-1.html) -* [MyOpenID](https://www.myopenid.com/) -* [GetOpenID](https://getopenid.com/) -* [LiveJournal](http://www.livejournal.com/openid/) -* [TrustBearer](https://openid.trustbearer.com/) -* or any of the [many others out there](http://openiddirectory.com/openid-providers-c-1.html) - -Your OpenID is the URL that you are given when you sign up. [[!if test="enabled(openid)" then=""" To sign in to this wiki using OpenID, just enter it in the OpenID field in the signin form. You do not need to give this wiki a password or go through any -- cgit v1.2.3 From d50de130e8f9c1183ae958a3dc902829ab72c3bc Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 00:00:03 -0400 Subject: conditionalize use of sidebar --- doc/examples/blog/index.mdwn | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/examples/blog/index.mdwn b/doc/examples/blog/index.mdwn index a22c40c72..220c1b3e3 100644 --- a/doc/examples/blog/index.mdwn +++ b/doc/examples/blog/index.mdwn @@ -1,6 +1,11 @@ +[[!if test="enabled(sidebar)" then=""" +[[!sidebar]] +""" else=""" +[[!inline pages=sidebar raw=yes]] +"""]] + [[!inline pages="./posts/* and !*/Discussion" show="10" actions=yes rootpage="posts"]] -[[!sidebar]] This blog is powered by [ikiwiki](http://ikiwiki.info). -- cgit v1.2.3 From f05043ed80e9cae38168e8824852835bc950e962 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 00:18:58 -0400 Subject: gardening openid provider list - fix url to flickr profile - remove blogger; google property and uses their openid system; wants to sign user up for a blogger blog - remove technorati, which dropped openid provider support - AOL seems to call it a username, not a screenname --- .../openid-selector/ikiwiki/openid/openid-jquery.js | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js index 8137f232f..067d68f3f 100644 --- a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js +++ b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js @@ -31,10 +31,10 @@ var providers_small = { url: 'http://{username}.livejournal.com/' }, flickr: { - name: 'Flickr', + name: 'Flickr', icon: 'http://flickr.com/favicon.ico', - label: 'Enter your Flickr username:', - url: 'http://flickr.com/{username}/' + label: 'Enter your Flickr username:', + url: 'http://flickr.com/photos/{username}/' }, wordpress: { name: 'Wordpress', @@ -42,18 +42,6 @@ var providers_small = { label: 'Enter your Wordpress.com username:', url: 'http://{username}.wordpress.com/' }, - blogger: { - name: 'Blogger', - icon: 'http://blogger.com/favicon.ico', - label: 'Enter your Blogger account:', - url: 'http://{username}.blogspot.com/' - }, - technorati: { - name: 'Technorati', - icon: 'http://technorati.com/favicon.ico', - label: 'Enter your Technorati username:', - url: 'http://technorati.com/people/technorati/{username}/' - }, myopenid: { name: 'MyOpenID', icon: 'http://myopenid.com/favicon.ico', @@ -69,7 +57,7 @@ var providers_small = { aol: { name: 'AOL', icon: 'http://aol.com/favicon.ico', - label: 'Enter your AOL screenname:', + label: 'Enter your AOL username:', url: 'http://openid.aol.com/{username}' }, verisign: { -- cgit v1.2.3 From ac8a91fe06808191b4eded829cf118d70be2c585 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 00:40:36 -0400 Subject: improve selector layout --- doc/style.css | 2 +- .../openid-selector/ikiwiki/openid/openid-jquery.js | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/doc/style.css b/doc/style.css index 78756481e..d8b48bcd0 100644 --- a/doc/style.css +++ b/doc/style.css @@ -441,7 +441,7 @@ li.L8 { list-style: upper-alpha; } float: left; } .openid_large_btn { - padding: 1em 1em; + padding: 1em 1.5em; border: 1px solid #DDD; margin: 3px; float: left; diff --git a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js index 067d68f3f..4dfb7420b 100644 --- a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js +++ b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js @@ -97,24 +97,24 @@ var openid = { openid_btns.append(this.getBoxHTML(providers_large[id], 'large')); } + if (providers_small) { + openid_btns.append('
    '); + + for (id in providers_small) { + + openid_btns.append(this.getBoxHTML(providers_small[id], 'small')); + } + } if (localloginurl != "") { openid_btns.append( '' + + 'class="openid_small_btn">' + '' + ' Local Account' + '' ); } - if (providers_small) { - openid_btns.append('
    '); - - for (id in providers_small) { - - openid_btns.append(this.getBoxHTML(providers_small[id], 'small')); - } - } $('#openid_form').submit(this.submit); -- cgit v1.2.3 From 5570d144418267f910112fe8f26bd61e1cd0cd15 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 01:00:25 -0400 Subject: improve selector highlight --- doc/style.css | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/style.css b/doc/style.css index d8b48bcd0..6832194b2 100644 --- a/doc/style.css +++ b/doc/style.css @@ -436,8 +436,7 @@ li.L8 { list-style: upper-alpha; } clear: both; } #openid_highlight { - padding: 3px; - background-color: #FFFCC9; + background-color: black; float: left; } .openid_large_btn { -- cgit v1.2.3 From 4298c809e540a7556d886f57341d3e5456a9c92f Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawlcaGfdn9Kye1Gc8aGb67PDVQW4mKbQD7E" Date: Sat, 8 May 2010 05:54:29 +0000 Subject: make an edit with the new login thinger --- doc/users/schmonz.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/users/schmonz.mdwn b/doc/users/schmonz.mdwn index 03c52b6aa..ed3332bf9 100644 --- a/doc/users/schmonz.mdwn +++ b/doc/users/schmonz.mdwn @@ -1,3 +1,5 @@ [Amitai Schlair](http://www.netbsd.org/~schmonz/) recently discovered ikiwiki and finds himself using it for all sorts of things. His attempts at contributing: [[!map pages="!*/Discussion and ((link(users/schmonz) and plugins/*) or rcs/cvs)"]] + +In progress: a plugin for [WIND authentication](http://www.columbia.edu/acis/rad/authmethods/wind/). -- cgit v1.2.3 From b945299706bf06b70415fa1c1a91fad30aa9f179 Mon Sep 17 00:00:00 2001 From: simonraven Date: Sat, 8 May 2010 06:01:27 +0000 Subject: edit using the fancy jquery login thingy, update user page --- doc/users/simonraven.mdwn | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/users/simonraven.mdwn b/doc/users/simonraven.mdwn index 5fc24711e..13681a674 100644 --- a/doc/users/simonraven.mdwn +++ b/doc/users/simonraven.mdwn @@ -1,8 +1,7 @@ ## personal/site info -New ikiwiki site at my web site, blog, kisikew.org home site, for indigenews, and our indigenous-centric wiki (mostly East Coast/Woodlands area). Mediawiki stuff was imported successfully (as noted on this web site). - +Have several ikiwiki-based sites at my web site, blog, kisikew.org home site, for indigenews, and our indigenous-centric wiki (mostly East Coast/Woodlands area). ## ikiwiki branch at github -Maintain my own branch, partly to learn about VCS, git, ikiwiki, Debian packaging, and Perl. I don't recommend anyone pull from it, as I use third-party plugins included on this site that people may not want in a default installation of ikiwiki. This is why I don't push to Joey's -- so it's nothing personal, I just don't want to mess things up for other people, from my mistakes and stumbles. +Maintain my own branch, partly to learn about VCS, git, ikiwiki, Debian packaging, and Perl. Thinking of removing most 3rd-party plugins (found in contrib/). Have some custom plugins to support dual bottom-of-the-page "sidebars" and an attempt at supporting HTTPBL (see projecthoneypot.org). -- cgit v1.2.3 From 541298e66892300f9d98d089c59b7ad837e49016 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 02:15:04 -0400 Subject: avoid setting cookie for promptless buttons I think it is clearer to not have such a button appear pre-selected when entering the signin page, because that may suggest to the user they don't need to click on it, and yet they do. --- underlays/openid-selector/ikiwiki/openid/openid-jquery.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js index 4dfb7420b..59a59c084 100644 --- a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js +++ b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js @@ -150,15 +150,16 @@ var openid = { } this.highlight(box_id); - this.setCookie(box_id); this.provider_id = box_id; this.provider_url = provider['url']; // prompt user for input? if (provider['label']) { + this.setCookie(box_id); this.useInputBox(provider); } else { + this.setCookie(''); $('#openid_input_area').empty(); if (! onload) { $('#openid_form').submit(); -- cgit v1.2.3 From 32a79523bbb4051a9a528a148a6db82e9fdd20d6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 02:38:54 -0400 Subject: add gmail button It uses the google profile openid url, which results in a nicer openid than the o8/id url. --- doc/style.css | 2 +- .../openid-selector/ikiwiki/openid/openid-jquery.js | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/doc/style.css b/doc/style.css index 6832194b2..171a68474 100644 --- a/doc/style.css +++ b/doc/style.css @@ -440,7 +440,7 @@ li.L8 { list-style: upper-alpha; } float: left; } .openid_large_btn { - padding: 1em 1.5em; + padding: 1em 1.75em; border: 1px solid #DDD; margin: 3px; float: left; diff --git a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js index 59a59c084..544ba8936 100644 --- a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js +++ b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js @@ -30,18 +30,24 @@ var providers_small = { label: 'Enter your Livejournal username:', url: 'http://{username}.livejournal.com/' }, - flickr: { - name: 'Flickr', - icon: 'http://flickr.com/favicon.ico', - label: 'Enter your Flickr username:', - url: 'http://flickr.com/photos/{username}/' - }, wordpress: { name: 'Wordpress', icon: 'https://ddgw.s3.amazonaws.com/wordpress.org.ico', label: 'Enter your Wordpress.com username:', url: 'http://{username}.wordpress.com/' }, + gmail: { + name: 'Gmail', + icon: 'http://mail.google.com/favicon.ico', + label: 'Enter your Gmail address:', + url: 'http://google.com/profiles/{email_username}/' + }, + flickr: { + name: 'Flickr', + icon: 'http://www.flickr.com/favicon.ico', + label: 'Enter your Flickr username:', + url: 'http://flickr.com/photos/{username}/' + }, myopenid: { name: 'MyOpenID', icon: 'http://myopenid.com/favicon.ico', @@ -172,6 +178,7 @@ var openid = { var url = openid.provider_url; if (url) { url = url.replace('{username}', $('#openid_username').val()); + url = url.replace('{email_username}', $('#openid_username').val().split('@')[0]); openid.setOpenIdUrl(url); } if(openid.ajaxHandler) { -- cgit v1.2.3 From f0914b386b026035d0055812a43dbd4a6ae528f7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 02:53:18 -0400 Subject: Revert "add gmail button" This reverts commit 32a79523bbb4051a9a528a148a6db82e9fdd20d6. Buggy and I need sleep. --- doc/style.css | 2 +- .../openid-selector/ikiwiki/openid/openid-jquery.js | 19 ++++++------------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/doc/style.css b/doc/style.css index 171a68474..6832194b2 100644 --- a/doc/style.css +++ b/doc/style.css @@ -440,7 +440,7 @@ li.L8 { list-style: upper-alpha; } float: left; } .openid_large_btn { - padding: 1em 1.75em; + padding: 1em 1.5em; border: 1px solid #DDD; margin: 3px; float: left; diff --git a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js index 544ba8936..59a59c084 100644 --- a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js +++ b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js @@ -30,24 +30,18 @@ var providers_small = { label: 'Enter your Livejournal username:', url: 'http://{username}.livejournal.com/' }, + flickr: { + name: 'Flickr', + icon: 'http://flickr.com/favicon.ico', + label: 'Enter your Flickr username:', + url: 'http://flickr.com/photos/{username}/' + }, wordpress: { name: 'Wordpress', icon: 'https://ddgw.s3.amazonaws.com/wordpress.org.ico', label: 'Enter your Wordpress.com username:', url: 'http://{username}.wordpress.com/' }, - gmail: { - name: 'Gmail', - icon: 'http://mail.google.com/favicon.ico', - label: 'Enter your Gmail address:', - url: 'http://google.com/profiles/{email_username}/' - }, - flickr: { - name: 'Flickr', - icon: 'http://www.flickr.com/favicon.ico', - label: 'Enter your Flickr username:', - url: 'http://flickr.com/photos/{username}/' - }, myopenid: { name: 'MyOpenID', icon: 'http://myopenid.com/favicon.ico', @@ -178,7 +172,6 @@ var openid = { var url = openid.provider_url; if (url) { url = url.replace('{username}', $('#openid_username').val()); - url = url.replace('{email_username}', $('#openid_username').val().split('@')[0]); openid.setOpenIdUrl(url); } if(openid.ajaxHandler) { -- cgit v1.2.3 From f4cfae1466558ab2163263f300d7f698182229b7 Mon Sep 17 00:00:00 2001 From: zimek Date: Sat, 8 May 2010 08:08:13 +0000 Subject: --- doc/forum/debian_backports_update_someone_please.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/forum/debian_backports_update_someone_please.mdwn b/doc/forum/debian_backports_update_someone_please.mdwn index b3fbf1adc..46b0aca6b 100644 --- a/doc/forum/debian_backports_update_someone_please.mdwn +++ b/doc/forum/debian_backports_update_someone_please.mdwn @@ -3,3 +3,5 @@ I'm just in the process of deploying ikiwiki and I'd love to use it in the html5 > Formerer does a good job keeping the backport up-to-date with whatever is in Debian testing. > Which is the policy of what Backports should contain. So, I just need to stop releasing ikiwiki > for 2 weeks. :) --[[Joey]] + +>> And are there any chances you doing it... or rather not doing it? -- cgit v1.2.3 From 6578dc2c2b2bc8e1947ba50b914cacd48c30c860 Mon Sep 17 00:00:00 2001 From: zimek Date: Sat, 8 May 2010 08:15:41 +0000 Subject: --- doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn b/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn index a4644ff64..c326b8205 100644 --- a/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn +++ b/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn @@ -1,3 +1,5 @@ Puzzled a bit :-/ > There is no explicit interface for reverting edits. Most of us use `git revert`. --[[Joey]] + +>> That's a blow; I was planning on appointing no techies to keep law and order on our pages :-/ Is there a plugin or at least a plan to add such a 'in demand' feature? -- cgit v1.2.3 From 0f778849c6df237f2219de6e1fa237cf2bc9955f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 12:45:21 -0400 Subject: calendar: Allow negative month to be specified. -1 is last month, etc. (And also negaitve years.) --- IkiWiki/Plugin/calendar.pm | 27 +++++++++++++++++++++++---- debian/changelog | 2 ++ doc/ikiwiki/directive/calendar.mdwn | 6 +++--- doc/plugins/calendar/discussion.mdwn | 11 ++++++++++- 4 files changed, 38 insertions(+), 8 deletions(-) diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm index aeb5f3d29..02f41070e 100644 --- a/IkiWiki/Plugin/calendar.pm +++ b/IkiWiki/Plugin/calendar.pm @@ -386,8 +386,19 @@ sub preprocess (@) { $params{year} = $thisyear unless defined $params{year}; $params{month} = $thismonth unless defined $params{month}; + my $relativemonth=0; + if ($params{month} < 1) { + $params{month}=$thismonth+$params{month}; + $relativemonth=1; + } + my $relativeyear=0; + if ($params{year} < 1) { + $params{year}=$thisyear+$params{year}; + $relativeyear=1; + } + $params{month} = sprintf("%02d", $params{month}); - + if ($params{type} eq 'month' && $params{year} == $thisyear && $params{month} == $thismonth) { # calendar for current month, updates next midnight @@ -404,8 +415,11 @@ sub preprocess (@) { $pagestate{$params{destpage}}{calendar}{nextchange}= timelocal(0, 0, 0, 1, $params{month}-1, $params{year}); } - elsif ($params{type} eq 'year' && $params{year} == $thisyear) { - # calendar for current year, updates 1st of next month + elsif (($params{type} eq 'year' && $params{year} == $thisyear) || + $relativemonth) { + # Calendar for current year updates 1st of next month. + # Any calendar relative to the current month also updates + # then. if ($thismonth < 12) { $pagestate{$params{destpage}}{calendar}{nextchange}= timelocal(0, 0, 0, 1, $thismonth+1-1, $params{year}); @@ -415,6 +429,12 @@ sub preprocess (@) { timelocal(0, 0, 0, 1, 1-1, $params{year}+1); } } + elsif ($relativeyear) { + # Any calendar relative to the current year updates 1st + # of next year. + $pagestate{$params{destpage}}{calendar}{nextchange}= + timelocal(0, 0, 0, 1, 1-1, $thisyear+1); + } elsif ($params{type} eq 'year' && $params{year} > $thisyear) { # calendar for upcoming year, updates 1st of that year $pagestate{$params{destpage}}{calendar}{nextchange}= @@ -426,7 +446,6 @@ sub preprocess (@) { delete $pagestate{$params{destpage}}{calendar}; } - # Calculate month names for next month, and previous months my $calendar=""; if ($params{type} eq 'month') { $calendar=format_month(%params); diff --git a/debian/changelog b/debian/changelog index f74e9929f..795f02822 100644 --- a/debian/changelog +++ b/debian/changelog @@ -26,6 +26,8 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low leave passwordauth enabled and let people who don't have an openid use it. The openid selector form avoids the UI annoyance of having both openid and passwordauth on one form. + * calendar: Allow negative month to be specified. -1 is last month, etc. + (And also negaitve years.) -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 diff --git a/doc/ikiwiki/directive/calendar.mdwn b/doc/ikiwiki/directive/calendar.mdwn index 198da9d51..e9216e11f 100644 --- a/doc/ikiwiki/directive/calendar.mdwn +++ b/doc/ikiwiki/directive/calendar.mdwn @@ -47,14 +47,14 @@ An example crontab: "2010". These pages can be automatically created using the `ikiwiki-calendar` program. * `year` - The year for which the calendar is requested. Defaults to the - current year. + current year. Can also use -1 to refer to last year, and so on. * `month` - The numeric month for which the calendar is requested, in the range 1..12. Used only for the month view calendar, and defaults to the - current month. + current month. Can also use -1 to refer to last month, and so on. * `week_start_day` - A number, in the range 0..6, which represents the day of the week that the month calendar starts with. 0 is Sunday, 1 is Monday, and so on. Defaults to 0, which is Sunday. -* `months_per_row` - In the annual calendar, number of months to place in +* `months_per_row` - In the year calendar, number of months to place in each row. Defaults to 3. [[!meta robots="noindex, follow"]] diff --git a/doc/plugins/calendar/discussion.mdwn b/doc/plugins/calendar/discussion.mdwn index 9d57b7a1e..bb76a9d8b 100644 --- a/doc/plugins/calendar/discussion.mdwn +++ b/doc/plugins/calendar/discussion.mdwn @@ -1,6 +1,15 @@ It would be nice if the "month" type calendar could collect all of the matching pages on a given date in some inline type way. --[[DavidBremner]] +> I agree, but I have not come up with good html to display them. Seems +> it might need some sort of popup. + Is it possible to get the calendar to link to pages based not on their timestamp (as I understand that it does now, or have I misunderstood this?) and instead on for example their location in a directory hierarchy. That way the calendar could be used as a planning / timeline device which I think would be great. --[[Alexander]] -I would like the ability to specify relative previous months. This way I could have a sidebar with the last three months by specifying no month, then 'month="-1"' and 'month="-2"'. Negative numbers for the month would otherwise be invalid, so this shouldn't produce any conflicts with expected behavior. (Right?) -- [[StevenBlack]] +I would like the ability to specify relative previous months. This way I +could have a sidebar with the last three months by specifying no month, +then 'month="-1"' and 'month="-2"'. Negative numbers for the month would +otherwise be invalid, so this shouldn't produce any conflicts with expected +behavior. (Right?) -- [[StevenBlack]] + +> Great idea! Just implemented that and also relative years. --[[Joey]] -- cgit v1.2.3 From fd817f9ac3c074622fe7076516dca61199b09372 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 12:52:19 -0400 Subject: calendar: nextchange calculation bugfix If a page had multiple calendars, the last one won and set nextchange. That's wrong; the calendar that needs to next update soonest should win. --- IkiWiki/Plugin/calendar.pm | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm index 02f41070e..d43320cac 100644 --- a/IkiWiki/Plugin/calendar.pm +++ b/IkiWiki/Plugin/calendar.pm @@ -373,6 +373,16 @@ EOF return $calendar; } +sub setnextchange ($$) { + my $page=shift; + my $timestamp=shift; + + if (! exists $pagestate{$page}{calendar}{nextchange} || + $pagestate{$page}{calendar}{nextchange} > $timestamp) { + $pagestate{$page}{calendar}{nextchange}=$timestamp; + } +} + sub preprocess (@) { my %params=@_; @@ -402,18 +412,18 @@ sub preprocess (@) { if ($params{type} eq 'month' && $params{year} == $thisyear && $params{month} == $thismonth) { # calendar for current month, updates next midnight - $pagestate{$params{destpage}}{calendar}{nextchange}=($time + setnextchange($params{destpage}, ($time + (60 - $now[0]) # seconds + (59 - $now[1]) * 60 # minutes + (23 - $now[2]) * 60 * 60 # hours - ); + )); } elsif ($params{type} eq 'month' && (($params{year} == $thisyear && $params{month} > $thismonth) || $params{year} > $thisyear)) { # calendar for upcoming month, updates 1st of that month - $pagestate{$params{destpage}}{calendar}{nextchange}= - timelocal(0, 0, 0, 1, $params{month}-1, $params{year}); + setnextchange($params{destpage}, + timelocal(0, 0, 0, 1, $params{month}-1, $params{year})); } elsif (($params{type} eq 'year' && $params{year} == $thisyear) || $relativemonth) { @@ -421,24 +431,24 @@ sub preprocess (@) { # Any calendar relative to the current month also updates # then. if ($thismonth < 12) { - $pagestate{$params{destpage}}{calendar}{nextchange}= - timelocal(0, 0, 0, 1, $thismonth+1-1, $params{year}); + setnextchange($params{destpage}, + timelocal(0, 0, 0, 1, $thismonth+1-1, $params{year})); } else { - $pagestate{$params{destpage}}{calendar}{nextchange}= - timelocal(0, 0, 0, 1, 1-1, $params{year}+1); + setnextchange($params{destpage}, + timelocal(0, 0, 0, 1, 1-1, $params{year}+1)); } } elsif ($relativeyear) { # Any calendar relative to the current year updates 1st # of next year. - $pagestate{$params{destpage}}{calendar}{nextchange}= - timelocal(0, 0, 0, 1, 1-1, $thisyear+1); + setnextchange($params{destpage}, + timelocal(0, 0, 0, 1, 1-1, $thisyear+1)); } elsif ($params{type} eq 'year' && $params{year} > $thisyear) { # calendar for upcoming year, updates 1st of that year - $pagestate{$params{destpage}}{calendar}{nextchange}= - timelocal(0, 0, 0, 1, 1-1, $params{year}); + setnextchange($params{destpage}, + timelocal(0, 0, 0, 1, 1-1, $params{year})); } else { # calendar for past month or year, does not need -- cgit v1.2.3 From d0c17a4a46b48d8513c0167271f2f2eb8b9bc081 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 13:51:05 -0400 Subject: calendar: Display year name in title of month calendar. Also, fix relative month calculations. --- IkiWiki/Plugin/calendar.pm | 21 +++++++++++++-------- debian/changelog | 1 + 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm index d43320cac..0bf933dcd 100644 --- a/IkiWiki/Plugin/calendar.pm +++ b/IkiWiki/Plugin/calendar.pm @@ -132,12 +132,12 @@ sub format_month (@) { $archivebase = $params{archivebase} if defined $params{archivebase}; # Calculate URL's for monthly archives. - my ($url, $purl, $nurl)=("$monthname",'',''); + my ($url, $purl, $nurl)=("$monthname $params{year}",'',''); if (exists $pagesources{"$archivebase/$params{year}/$params{month}"}) { $url = htmllink($params{page}, $params{destpage}, "$archivebase/$params{year}/".$params{month}, noimageinline => 1, - linktext => $monthname, + linktext => "$monthname $params{year}", title => $monthname); } add_depends($params{page}, "$archivebase/$params{year}/$params{month}", @@ -396,15 +396,20 @@ sub preprocess (@) { $params{year} = $thisyear unless defined $params{year}; $params{month} = $thismonth unless defined $params{month}; - my $relativemonth=0; - if ($params{month} < 1) { - $params{month}=$thismonth+$params{month}; - $relativemonth=1; - } my $relativeyear=0; if ($params{year} < 1) { - $params{year}=$thisyear+$params{year}; $relativeyear=1; + $params{year}=$thisyear+$params{year}; + } + my $relativemonth=0; + if ($params{month} < 1) { + $relativemonth=1; + my $monthoff=$params{month}; + $params{month}=($thismonth+$monthoff) % 12; + $params{month}=12 if $params{month}==0; + my $yearoff=POSIX::ceil(($thismonth-$params{month}) / -12) + - int($monthoff / 12); + $params{year}-=$yearoff; } $params{month} = sprintf("%02d", $params{month}); diff --git a/debian/changelog b/debian/changelog index 795f02822..f47793477 100644 --- a/debian/changelog +++ b/debian/changelog @@ -28,6 +28,7 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low and passwordauth on one form. * calendar: Allow negative month to be specified. -1 is last month, etc. (And also negaitve years.) + * calendar: Display year name in title of month calendar. -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 -- cgit v1.2.3 From f735e2d1b3ced6dc1e246e61be0256302ff5eb14 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 14:03:20 -0400 Subject: fixups --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index f47793477..a8527521f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -27,8 +27,8 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low The openid selector form avoids the UI annoyance of having both openid and passwordauth on one form. * calendar: Allow negative month to be specified. -1 is last month, etc. - (And also negaitve years.) - * calendar: Display year name in title of month calendar. + (And also negative years.) + * calendar: Display year in title of month calendar. -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 -- cgit v1.2.3 From c3e9215e1fcb604c3ee01119fdf7cf13724c3812 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 15:57:39 -0400 Subject: moved non-openid signin form into same page as openid selector; show/hide as buttons are pressed --- IkiWiki/CGI.pm | 23 ++++++++++++---- IkiWiki/Plugin/openid.pm | 6 +---- templates/openid-selector.tmpl | 31 ++++++++++++---------- .../ikiwiki/openid/openid-jquery.js | 27 ++++++++++++++----- 4 files changed, 57 insertions(+), 30 deletions(-) diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 49a505514..b98e9e0a1 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -22,7 +22,7 @@ sub printheader ($) { } } -sub showform ($$$$;@) { +sub prepform { my $form=shift; my $buttons=shift; my $session=shift; @@ -35,6 +35,16 @@ sub showform ($$$$;@) { }); } + return $form; +} + +sub showform ($$$$;@) { + my $form=prepform(@_); + shift; + my $buttons=shift; + my $session=shift; + my $cgi=shift; + printheader($session); print misctemplate($form->title, $form->render(submit => $buttons), @_); } @@ -90,9 +100,10 @@ sub needsignin ($$) { } } -sub cgi_signin ($$) { +sub cgi_signin ($$;$) { my $q=shift; my $session=shift; + my $returnhtml=shift; decode_cgi_utf8($q); eval q{use CGI::FormBuilder}; @@ -112,9 +123,6 @@ sub cgi_signin ($$) { ); my $buttons=["Login"]; - if ($q->param("do") ne "signin" && !$form->submitted) { - $form->text(gettext("You need to log in first.")); - } $form->field(name => "do", type => "hidden", value => "signin", force => 1); @@ -129,6 +137,11 @@ sub cgi_signin ($$) { $form->validate; } + if ($returnhtml) { + $form=prepform($form, $buttons, $session, $q); + return $form->render(submit => $buttons); + } + showform($form, $buttons, $session, $q); } diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index d75099ce9..e10e21f4d 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -62,17 +62,13 @@ sub openid_selector { $openid_error=shift; }); } - elsif ($q->param("do") eq "signin" && $real_cgi_signin) { - $real_cgi_signin->($q, $session); - exit; - } my $template=IkiWiki::template("openid-selector.tmpl"); $template->param( cgiurl => $config{cgiurl}, (defined $openid_error ? (openid_error => $openid_error) : ()), (defined $openid_url ? (openid_url => $openid_url) : ()), - ($real_cgi_signin ? (nonopenidurl => IkiWiki::cgiurl(do => "signin")) : ()), + ($real_cgi_signin ? (nonopenidform => $real_cgi_signin->($q, $session, 1)) : ()), ); IkiWiki::printheader($session); diff --git a/templates/openid-selector.tmpl b/templates/openid-selector.tmpl index 7e5ae9a01..b4d0e314f 100644 --- a/templates/openid-selector.tmpl +++ b/templates/openid-selector.tmpl @@ -2,21 +2,18 @@ - + + +
    Select your account provider - -
    + +
    + +
    + +
    + +
    diff --git a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js index 59a59c084..bf14fd3d5 100644 --- a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js +++ b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js @@ -82,8 +82,9 @@ var openid = { input_id: null, provider_url: null, provider_id: null, + localsignin_id: null, - init: function(input_id, localloginurl) { + init: function(input_id, localsignin_id) { var openid_btns = $('#openid_btns'); @@ -105,13 +106,14 @@ var openid = { openid_btns.append(this.getBoxHTML(providers_small[id], 'small')); } } - if (localloginurl != "") { + if (localsignin_id != "") { + this.localsignin_id=localsignin_id; openid_btns.append( - '' + + 'class="localsignin openid_small_btn">' + '' + - ' Local Account' + + ' other' + '' ); } @@ -143,7 +145,20 @@ var openid = { }, /* Provider image click */ signin: function(box_id, onload) { - + + if (box_id == 'localsignin') { + this.highlight(box_id); + $('#openid_input_area').empty(); + $('#'+this.localsignin_id).show(); + this.setCookie(box_id); + return; + } + else { + if (this.localsignin_id) { + $('#'+this.localsignin_id).hide(); + } + } + var provider = providers[box_id]; if (! provider) { return; -- cgit v1.2.3 From 10a1c0feca18a0615358539771b5a58aacb72c0e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 16:04:18 -0400 Subject: update --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index a8527521f..730cae1e2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -19,7 +19,7 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low text can be indexed for searching. * Delete hooks are passed deleted internal pages. * openid: Incorporated a fancy openid-selector signin form. - (http://code.google.com/p/openid-selector/) + (Based on http://code.google.com/p/openid-selector/) * openid: Use "openid_identifier" as the form field, as required by OpenID Authentication v2.0 spec. * Removed the openidsignup option. Instead, my recommendation is to -- cgit v1.2.3 From bf19c01f29a7e740f47354318629e61ad4ee5175 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 16:16:38 -0400 Subject: use labels --- templates/openid-selector.tmpl | 5 ++++- underlays/openid-selector/ikiwiki/openid/openid-jquery.js | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/templates/openid-selector.tmpl b/templates/openid-selector.tmpl index b4d0e314f..c12df519f 100644 --- a/templates/openid-selector.tmpl +++ b/templates/openid-selector.tmpl @@ -12,7 +12,9 @@ $(document).ready(function() {
    - Select your account provider + @@ -20,6 +22,7 @@ $(document).ready(function() {
    +
    diff --git a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js index bf14fd3d5..4eaa613d9 100644 --- a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js +++ b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js @@ -246,14 +246,14 @@ var openid = { var label = provider['label']; var style = ''; - if (label) { - html = '

    ' + label + '

    '; - } if (provider['name'] == 'OpenID') { id = this.input_id; value = ''; style = 'background:#FFF url(wikiicons/openidlogin-bg.gif) no-repeat scroll 0 50%; padding-left:18px;'; } + if (label) { + html = ''; + } html += '' + ''; -- cgit v1.2.3 From 8d80ad0c173f8d0fbd888a25486ac3f919337d78 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 16:18:55 -0400 Subject: wording --- templates/openid-selector.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/openid-selector.tmpl b/templates/openid-selector.tmpl index c12df519f..0659ee583 100644 --- a/templates/openid-selector.tmpl +++ b/templates/openid-selector.tmpl @@ -36,7 +36,7 @@ $(document).ready(function() {
    -- cgit v1.2.3 From d238fd1b04b41b17cc9cb444d6dcee498d6a14c5 Mon Sep 17 00:00:00 2001 From: simonraven Date: Sat, 8 May 2010 23:38:35 +0000 Subject: bug with pubdate, in process of testing fix --- ...e_wrong_when_using_xhtml5___34__mode__34__.mdwn | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn diff --git a/doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn b/doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn new file mode 100644 index 000000000..c55b3f62d --- /dev/null +++ b/doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn @@ -0,0 +1,40 @@ +Hi, + +XML error: + + Created + +The pubdate REQUIRES a date, so e.g. `pubdate="2009-03-24T18:02:14Z"` + +Otherwise the XML parser chokes. + + + +
    +diff --git a/IkiWiki.pm b/IkiWiki.pm
    +index 1f2ab07..6ab5b56 100644
    +--- a/IkiWiki.pm
    ++++ b/IkiWiki.pm
    +@@ -1004,7 +1004,7 @@ sub displaytime ($;$$) {
    +    my $time=formattime($_[0], $_[1]);
    +    if ($config{html5}) {
    +        return '';
    +    }
    +    else {
    +diff --git a/IkiWiki/Plugin/relativedate.pm b/IkiWiki/Plugin/relativedate.pm
    +index fe8ef09..8c4a1b4 100644
    +--- a/IkiWiki/Plugin/relativedate.pm
    ++++ b/IkiWiki/Plugin/relativedate.pm
    +@@ -59,7 +59,7 @@ sub mydisplaytime ($;$$) {
    + 
    +    if ($config{html5}) {
    +        return '';
    +    }
    +    else {
    +        return '';
    +
    -- cgit v1.2.3 From 6512423f159a0917137b2caca3fa244147dd0131 Mon Sep 17 00:00:00 2001 From: simonraven Date: Sat, 8 May 2010 23:42:45 +0000 Subject: fixed patch display... --- ...e_wrong_when_using_xhtml5___34__mode__34__.mdwn | 54 +++++++++++----------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn b/doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn index c55b3f62d..2dd0d945f 100644 --- a/doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn +++ b/doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn @@ -10,31 +10,33 @@ Otherwise the XML parser chokes. +(indented exactly 4 spaces) +
    -diff --git a/IkiWiki.pm b/IkiWiki.pm
    -index 1f2ab07..6ab5b56 100644
    ---- a/IkiWiki.pm
    -+++ b/IkiWiki.pm
    -@@ -1004,7 +1004,7 @@ sub displaytime ($;$$) {
    -    my $time=formattime($_[0], $_[1]);
    -    if ($config{html5}) {
    -        return '';
    -    }
    -    else {
    -diff --git a/IkiWiki/Plugin/relativedate.pm b/IkiWiki/Plugin/relativedate.pm
    -index fe8ef09..8c4a1b4 100644
    ---- a/IkiWiki/Plugin/relativedate.pm
    -+++ b/IkiWiki/Plugin/relativedate.pm
    -@@ -59,7 +59,7 @@ sub mydisplaytime ($;$$) {
    - 
    -    if ($config{html5}) {
    -        return '';
    -    }
    -    else {
    -        return '';
    +    diff --git a/IkiWiki.pm b/IkiWiki.pm
    +    index 1f2ab07..6ab5b56 100644
    +    --- a/IkiWiki.pm
    +    +++ b/IkiWiki.pm
    +    @@ -1004,7 +1004,7 @@ sub displaytime ($;$$) {
    +        my $time=formattime($_[0], $_[1]);
    +        if ($config{html5}) {
    +            return '<time datetime="'.date_3339($_[0]).'"'.
    +    -         ($_[2] ? ' pubdate' : '').
    +    +           ($_[2] ? ' pubdate="'.date_3339($_[0]).'"' : '').
    +                '>'.$time.'</time>';
    +        }
    +        else {
    +    diff --git a/IkiWiki/Plugin/relativedate.pm b/IkiWiki/Plugin/relativedate.pm
    +    index fe8ef09..8c4a1b4 100644
    +    --- a/IkiWiki/Plugin/relativedate.pm
    +    +++ b/IkiWiki/Plugin/relativedate.pm
    +    @@ -59,7 +59,7 @@ sub mydisplaytime ($;$$) {
    +     
    +        if ($config{html5}) {
    +            return '<time datetime="'.IkiWiki::date_3339($time).'"'.
    +    -         ($pubdate ? ' pubdate' : '').$mid.'</time>';
    +    +           ($pubdate ? ' pubdate="'.IkiWiki::date_3339($time).'"' : '').$mid.'</time>';
    +        }
    +        else {
    +            return '<span'.$mid.'</span>';
     
    -- cgit v1.2.3 From bc0aa4d40e10238f6b83e285869caab3dfeca395 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 19:45:02 -0400 Subject: Use xhtml friendly pubdate setting. --- IkiWiki.pm | 2 +- IkiWiki/Plugin/relativedate.pm | 2 +- debian/changelog | 1 + ...lement__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn | 3 +++ 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index d76b5edb4..33e4e1d1f 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1004,7 +1004,7 @@ sub displaytime ($;$$) { my $time=formattime($_[0], $_[1]); if ($config{html5}) { return ''; } else { diff --git a/IkiWiki/Plugin/relativedate.pm b/IkiWiki/Plugin/relativedate.pm index fe8ef0901..179f9238c 100644 --- a/IkiWiki/Plugin/relativedate.pm +++ b/IkiWiki/Plugin/relativedate.pm @@ -59,7 +59,7 @@ sub mydisplaytime ($;$$) { if ($config{html5}) { return ''; } else { return ''; diff --git a/debian/changelog b/debian/changelog index 730cae1e2..e6c5e42ae 100644 --- a/debian/changelog +++ b/debian/changelog @@ -29,6 +29,7 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low * calendar: Allow negative month to be specified. -1 is last month, etc. (And also negative years.) * calendar: Display year in title of month calendar. + * Use xhtml friendly pubdate setting. -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 diff --git a/doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn b/doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn index 2dd0d945f..1f6bdb333 100644 --- a/doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn +++ b/doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn @@ -6,6 +6,9 @@ XML error: The pubdate REQUIRES a date, so e.g. `pubdate="2009-03-24T18:02:14Z"` +> No, `pubdate="pubdate"`. It's a boolean attribute. applied && [[done]] +> --[[Joey]] + Otherwise the XML parser chokes. -- cgit v1.2.3 From d379d8ab9dc999da6dcd3212634e9d2dc97d7a3e Mon Sep 17 00:00:00 2001 From: simonraven Date: Sat, 8 May 2010 23:55:47 +0000 Subject: --- ..._element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn b/doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn index 1f6bdb333..def5bcc2a 100644 --- a/doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn +++ b/doc/bugs/html5_time_element__39__s_pubdate_wrong_when_using_xhtml5___34__mode__34__.mdwn @@ -8,6 +8,7 @@ The pubdate REQUIRES a date, so e.g. `pubdate="2009-03-24T18:02:14Z"` > No, `pubdate="pubdate"`. It's a boolean attribute. applied && [[done]] > --[[Joey]] +>> awesome, thanks for fixing my fix ;) --[[simonraven]] Otherwise the XML parser chokes. -- cgit v1.2.3 From 7cb31560a584cf8f62723e0a142fddafa637f09e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 8 May 2010 23:07:15 -0400 Subject: dropped old html branch --- doc/git.mdwn | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/git.mdwn b/doc/git.mdwn index a0b9c950f..c0f42a704 100644 --- a/doc/git.mdwn +++ b/doc/git.mdwn @@ -76,8 +76,6 @@ Some of the branches included in the main repository include: * `gallery` contains the [[todo/Gallery]] plugin. It's not yet merged due to license issues. Also some bits need to be tweaked to make it work with the current *master* branch again. -* `html` is an unfinished attempt at making ikiwiki output HTML 4.01 - instead of xhtml. * `wikiwyg` adds [[todo/wikiwyg]] support. It is unmerged pending some changes. * `debian-stable` is used for updates to the old version included in -- cgit v1.2.3 From 2d60e55303fbabe70b42ee31703a8d4aca2d8460 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Sun, 9 May 2010 16:44:47 +0100 Subject: gitremotes: don't fetch the new remote until we've turned off tags --- gitremotes | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gitremotes b/gitremotes index 6c03011a8..5cafad1b8 100755 --- a/gitremotes +++ b/gitremotes @@ -16,9 +16,10 @@ while () { my ($oldurl)=$info=~/URL: (.*)/m; if ($oldurl ne $url) { system("git remote rm $remote 2>/dev/null"); - system("git", "remote", "add", "-f", $remote, $url); + system("git", "remote", "add", $remote, $url); system("git", "config", "remote.$remote.tagopt", "--no-tags"); + system("git", "fetch", $remote); } } } -- cgit v1.2.3 From 0badce2ec03d9db1f6034546eabef097a5d7354d Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Sun, 9 May 2010 15:46:11 +0000 Subject: bugfix - only fetch after tags are disabled --- doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn b/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn index 32cf419e8..f9f086793 100644 --- a/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn +++ b/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn @@ -10,9 +10,11 @@ used for local .debs that were never actually present in Debian: This can be avoided with the `tagopt = --no-tags` option in .git/config; see -> [[done]] thanks. Also cleared propigated tags out of origin. +> *done* thanks. Also cleared propigated tags out of origin. > > Hmm, in testing I still see tags get pulled the first time a remote > is added. If those are then locally deleted, it doesn't pull them again > with the `--no-tags`. > --[[Joey]] + +>> Oh, I see why. Try the same branch again... --[[smcv]] -- cgit v1.2.3 From b5aa42d3e0f54649c8e5d3842ad0025279ba38a5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 9 May 2010 12:56:42 -0400 Subject: remerged --- doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn b/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn index f9f086793..9bd8938c5 100644 --- a/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn +++ b/doc/bugs/gitremotes_script_picks_up_tags_from_anywhere.mdwn @@ -18,3 +18,5 @@ see --[[Joey]] >> Oh, I see why. Try the same branch again... --[[smcv]] + +>>> [[done]] --[[Joey]] -- cgit v1.2.3 From 27cb77cd1919d5c61ba67333a349ab6e54ed5976 Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Sun, 9 May 2010 18:11:51 +0000 Subject: updated branch, using add_autopage to spawn viewer pages --- doc/plugins/contrib/album.mdwn | 173 ++++++++++++++++++++++++++--------------- 1 file changed, 110 insertions(+), 63 deletions(-) diff --git a/doc/plugins/contrib/album.mdwn b/doc/plugins/contrib/album.mdwn index 395c99bce..0393d26dc 100644 --- a/doc/plugins/contrib/album.mdwn +++ b/doc/plugins/contrib/album.mdwn @@ -9,9 +9,11 @@ thoughts about this plugin). This plugin formats a collection of images into a photo album, in the same way as many websites: good examples include the PHP application [Gallery](http://gallery.menalto.com/), Flickr, -and Facebook's Photos "application". I've called it `album` -to distinguish it from [[contrib/gallery|plugins/contrib/gallery]], -although `gallery` might well be a better name for this functionality. +and Facebook's Photos "application". + +I've called it `album` to distinguish it from +[[contrib/gallery|plugins/contrib/gallery]], although `gallery` might well be +a better name for this functionality. The web UI I'm trying to achieve consists of one [HTML page of thumbnails](http://www.pseudorandom.co.uk/2008/2008-03-08-panic-cell-gig/) @@ -26,83 +28,128 @@ individual photos can't be bookmarked in a meaningful way, and the best it can do as a fallback for non-Javascript browsers is to provide a direct link to the image.) -## Writing the viewers +

    album directive

    + +Each page containing an `album` directive is treated as a photo album. + +Every image attached to an album or its subpages is considered to be part of +the album. A "viewer" page, with the wiki's default page extension, will be +generated to display the image, if there isn't already a page of the same +name as the image: for instance, if `debconf` is an album and +`debconf/tuesday/p100.jpg` exists, then `debconf/tuesday/p100.mdwn` might +be created. + +There's currently a hard-coded list of extensions that are treated as images: +`png`, `gif`, `jpg`, `jpeg` or `mov` files. More image and video types could +be added in future. Videos aren't currently handled very well; +ideally, something like totem-video-thumbnailer would be used. + +The `album` directive also produces an [[ikiwiki/directive/inline]] which +automatically includes all the viewers for this album, except those that +will appear in an albumsection (if every image +is in a section, then the `album` directive won't have any visible effect). - \[[!albumimage image=foo.jpg album=myalbum - title=... - caption=... - copyright=... - size=... - viewertemplate=... - ]] +The `inline` is in `archive` and `quick` mode, but can include some +extra information about the images, including file size and a thumbnail made +using [[ikiwiki/directive/img]]). The default template is `albumitem.tmpl`, +which takes advantage of these things. -Each viewer contains one `\[[!albumimage]]` directive. This -sets the `image` filename, the `album` in which this image appears, -and an optional `caption`, and can override the `size` at which to -display the image and the `viewertemplate` to use to display the -image. +

    albumsection directive

    -It can also have `title`, `copyright` and `date` parameters, which -are short-cuts for [[ikiwiki/directive/meta]] directives. +The `albumsection` directive is used to split an album into sections. It can +only appear on a page that also has the album directive. + +The `filter` parameter is a [[ikiwiki/PageSpec]] against which viewer pages +are matched. The `albumsection` directive displays all the images that match +the filter, and the `album` directive displays any leftover images, like +this: + + # Holiday photos + + \[[!album]] + -The viewer can also have any other content, but typically the -directive will be the only thing there. + ## People -Eventually, there will be a specialized CGI user interface to -edit all the photos of an album at once, upload a new photo -(which will attach the photo but also write out a viewer page -for it), or mark an already-uploaded photo as a member of an -album (which is done by writing out a viewer page for it). + \[[!albumsection filter="tagged(people)"]] + -The `\[[!albumimage]]` directive is replaced by an + ## Landscapes + + \[[!albumsection filter="tagged(landscapes)"]] + + +

    albumimage directive

    + +Each viewer page produced by the album directive +contains an `albumimage` directive, which is replaced by an [[ikiwiki/directive/img]], wrapped in some formatting using a -template (by default `albumviewer.tmpl`). The template can (and -should) also include "next photo", "previous photo" and -"up to gallery" links. +template (by default it's `albumviewer.tmpl`). That template can also include +links to the next photo, the previous photo and the album it's in; the default +template has all of these. -The next/previous links are themselves implemented by -[[inlining|ikiwiki/directive/inline]] the next or previous -photo, using a special template (by default `albumnext.tmpl` -or `albumprev.tmpl`), in `archive`/`quick` mode. +The next/previous links are themselves implemented by evaluating a template, +either `albumnext.tmpl` or `albumprev.tmpl` by default. -> With hindsight, using an inline here is wrong - I should just -> run hooks and fill in the template within the album plugin. -> inline has some specialized functionality that's overkill -> here, and its delayed HTML substitution breaks the ability -> to have previous/up/next links both above and below the -> photo, for instance. --[[smcv]] +The directive can also have parameters: -## Writing the album +* `title`, `copyright` and `date` are short-cuts for the corresponding + [[ikiwiki/directive/meta]] directives -The album contains one `\[[!album]]` directive. It may also -contain any number of `\[[!albumsection]]` directives, for -example the demo album linked above could look like: +* `caption` sets a caption which is displayed in the album and viewer + pages - \[[!album]] - +The viewer page can also have other contents before or after the actual +image viewer. + +## Bugs + +* The plugin doesn't do anything special to handle albums that are subpages + of each other. If, say, `debconf` and `debconf/monday` are both albums, + then `debconf/monday/p100.jpg` will currently be assigned to one or the + other, arbitrarily. + +* The plugin doesn't do anything special to handle photos with similar names. + If you have `p100.jpg` and `p100.png`, one will get a viewer page called + `p100` and the other will be ignored. + +* If there's no `albumimage` in a viewer page, one should probably be appended + automatically. - ## Gamarra +## TODO - \[[!albumsection filter="link(gamarra)"]] - +* The documentation should mention how to replicate the appearance of + `album` and `albumsection` using an `inline` of viewer pages. - ## Smokescreen +* The documentation should mention all the template variables and + all the parameters. - \[[!albumsection filter="link(smokescreen)"]] - +* The generated viewer page should include most or all of the possible + parameters to the `albumimage` directive, with empty values, as a + template for editing. - ... +* The generated viewer page should extract as much metadata as possible from + the photo's EXIF tags (creation/modification dates, author, title, caption, + copyright). [[smcv]] has a half-written implementation which runs + `scanimage` hooks, and has an `exiftool` plugin using [[!cpan Image::ExifTool]]. -The `\[[!album]]` directive is replaced by an -[[ikiwiki/directive/inline]] which automatically includes every -page that has an `\[[!albumimage]]` directive linking it to this -album, except those that will appear in an `\[[!albumsection]]`. +* There should be an option to reduce the size of photos and write them into + an underlay, for this workflow: -The `inline` is in `archive`/`quick` mode, but includes some -extra information about the images, including file size and a -thumbnail (again, made using [[ikiwiki/directive/img]]). The -default template is `albumitem.tmpl`, which takes advantage -of these things. + * your laptop's local ikiwiki has two underlays, `photos` and `webphotos` + * `photos` contains full resolution photos with EXIF tags + * for each photo that exists in `photos` but not in `webphotos`, the album + plugin automatically resamples it down to a web-compatible resolution + ([[smcv]] uses up to 640x640), optimizes it with `jpegoptim`, strips out + all EXIF tags, and and writes it into the corresponding location + in `webphotos` + * `webphotos` is what you rsync to the web server + * the web server's ikiwiki only has `webphotos` as an underlay -Each `\[[!albumsection]]` is replaced by a similar inline, which -selects a subset of the photos in the album. +* Eventually, there could be a specialized CGI user interface to batch-edit + all the photos of an album (so for each photo, you get an edit box each for + title, author, copyright etc.) - this would work by making programmatic + edits to all the `albumimage` directives. -- cgit v1.2.3 From 0594ea04a811a59120ea7e91e94c3389ffcd33ca Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Sun, 9 May 2010 18:13:05 +0000 Subject: clarify --- doc/plugins/contrib/album.mdwn | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/plugins/contrib/album.mdwn b/doc/plugins/contrib/album.mdwn index 0393d26dc..3cfcb68d4 100644 --- a/doc/plugins/contrib/album.mdwn +++ b/doc/plugins/contrib/album.mdwn @@ -134,7 +134,8 @@ image viewer. * The generated viewer page should extract as much metadata as possible from the photo's EXIF tags (creation/modification dates, author, title, caption, copyright). [[smcv]] has a half-written implementation which runs - `scanimage` hooks, and has an `exiftool` plugin using [[!cpan Image::ExifTool]]. + `scanimage` hooks, and has an `exiftool` plugin using [[!cpan Image::ExifTool]] + as a reference implementation of that hook. * There should be an option to reduce the size of photos and write them into an underlay, for this workflow: -- cgit v1.2.3 From 3f7ef01ca22963dc253d76a27a711dd18998606c Mon Sep 17 00:00:00 2001 From: "http://smcv.pseudorandom.co.uk/" Date: Sun, 9 May 2010 18:27:58 +0000 Subject: respond with better design --- doc/plugins/contrib/album/discussion.mdwn | 41 +++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/doc/plugins/contrib/album/discussion.mdwn b/doc/plugins/contrib/album/discussion.mdwn index 9720589b4..0356860d8 100644 --- a/doc/plugins/contrib/album/discussion.mdwn +++ b/doc/plugins/contrib/album/discussion.mdwn @@ -46,6 +46,10 @@ secondly: barring the CGI interface for editing the album, which would be great, > > --[[smcv]] +>> In the current version of the branch, the viewer pages are +>> generated automatically if you didn't generate them yourself, +>> so `ikiwiki-album` is no longer needed. --[[smcv]] + i'm new to ikiwiki, apologies if this is dealt with elsewhere. -brush > This plugin is pretty ambitious, and is unfinished, so I'd recommend @@ -80,6 +84,10 @@ code or tried it yet, but here goes. --[[Joey]] >> an image with a strange extension to a differing target filename >> with the normal extension, respectively). -s +>>> Now that we have `add_autofile` I can just create viewer pages +>>> whenever there's an image to view. The current version of the +>>> branch does that. -s + * With each viewer page having next/prev links, I can see how you were having the scalability issues with ikiwiki's data structures earlier! -J @@ -94,6 +102,8 @@ code or tried it yet, but here goes. --[[Joey]] >> (Unless you use img to make the thumbnails for those links, then it >> would rebuild the thumbnails anyway. Have not looked at the code.) --[[Joey]] +>>> I do use img. -s + * And doesn't each viewer page really depend on every other page in the same albumsection? If a new page is added, the next/prev links may need to be updated, for example. If so, there will be much @@ -142,13 +152,20 @@ code or tried it yet, but here goes. --[[Joey]] > one album: if they're subpages of 2+ nested albums then they're only > considered to be in the deepest-nested one (i.e. longest URL), and if > they're not in any album then that's a usage error. This would -> also make prev/next links sane. -> +> also make prev/next links sane. -s + +>> The current version constrains images to be in at most one album, +>> choosing one arbitrarily (dependent on scan order) if albums are +>> nested. -s + > If you want to reference images from elsewhere in the wiki and display > them as if in an album, then you can use an ordinary inline with > the same template that the album would use, and I'll make sure the -> templates are set up so this works. -> +> templates are set up so this works. -s + +>> Still needs documenting, I've put it on the TODO list on the main +>> page. -s + > (Implementation detail: this means that an image X/Y/Z/W/V, where X and > Y are albums, Z does not exist and W exists but is not an album, > would have a content dependency on Y, a presence dependency on Z @@ -158,6 +175,12 @@ code or tried it yet, but here goes. --[[Joey]] > subpages of the album, although that would mean breaking some URLs > on the existing website I'm doing all this work for... -s +>> The current version of the branch doesn't have this restriction; +>> perhaps it's a worthwhile simplification, or perhaps it's too +>> restrictive? I fairly often use directory hierarchies like +>> `a_festival/saturday/foo.jpg` within an album, which makes +>> it very easy to write `albumsection` filters. -s + * Putting a few of the above thoughts together, my ideal album system seems to be one where I can just drop the images into a directory and have them appear in the album index, as well as each generate their own wiki @@ -195,6 +218,10 @@ code or tried it yet, but here goes. --[[Joey]] >> upload-and-rename. >> -s +>>> I believe the current branch meets your requirements, by having +>>> first-class wiki pages spring into existence using `add_autofile` +>>> to be viewer pages for photos. -s + > In a way, what you really want for metadata is to have it in the album > page, so you can batch-edit the whole lot by editing one file (this > does mean that editing the album necessarily causes each of its viewers @@ -214,6 +241,9 @@ code or tried it yet, but here goes. --[[Joey]] >> (That's apparently good enough for Bugzilla, but not really >> for ikiwiki). -s +>>> This is now in the main page's TODO list; if/when I implement this, +>>> I intend to make it a specialized CGI interface. -s + >> Yes, [all metadata in one file] would make some sense.. It also allows putting one image in >> two albums, with different caption etc. (Maybe for different audiences.) >> --[[Joey]] @@ -229,7 +259,8 @@ code or tried it yet, but here goes. --[[Joey]] ---- -Trying to use the "special extension" design: +'''I think the "special extension" design is a dead-end, but here's what +happened when I tried to work out how it would work. --[[smcv]]''' Suppose that each viewer is a JPEG-or-GIF-or-something, with extension ".albumimage". We have a gallery "memes" with three images, badger, -- cgit v1.2.3 From 28bba0c4bab95228343ecccb33d94e028858a9e3 Mon Sep 17 00:00:00 2001 From: ImRajja Date: Mon, 10 May 2010 14:25:25 +0000 Subject: dsf sdfvsd --- doc/Test_Post.mdwn | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/Test_Post.mdwn diff --git a/doc/Test_Post.mdwn b/doc/Test_Post.mdwn new file mode 100644 index 000000000..e8dfce394 --- /dev/null +++ b/doc/Test_Post.mdwn @@ -0,0 +1 @@ +this is a test page.. -- cgit v1.2.3 From a855fa1d1846fd1c72254130e8cbcaa0f98bd200 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 10 May 2010 15:56:57 -0400 Subject: bring back input#openid_url styling Still used on prefs page. --- doc/style.css | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/style.css b/doc/style.css index 6832194b2..cb02f812a 100644 --- a/doc/style.css +++ b/doc/style.css @@ -332,6 +332,13 @@ ol.form { li.form { padding-bottom: 1em; } +input#openid_url { + background: url(wikiicons/openidlogin-bg.gif) no-repeat; + background-color: #fff; + background-position: 0 50%; + color: #000; + padding-left: 18px; +} input#searchbox { background: url(wikiicons/search-bg.gif) no-repeat; background-color: #fff; -- cgit v1.2.3 From c305303b42649bc0276ea43ef7dbb27117ba151b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 10 May 2010 16:04:28 -0400 Subject: hide local signin when nothing is selected --- underlays/openid-selector/ikiwiki/openid/openid-jquery.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js index 4eaa613d9..f22f5776a 100644 --- a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js +++ b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js @@ -116,6 +116,7 @@ var openid = { ' other' + '' ); + $('#'+this.localsignin_id).hide(); } $('#openid_form').submit(this.submit); @@ -123,7 +124,7 @@ var openid = { var box_id = this.readCookie(); if (box_id) { this.signin(box_id, true); - } + } }, getBoxHTML: function(provider, box_size) { var label=""; -- cgit v1.2.3 From 378cae14bbd540aa1cd6b165bee408c0add169c3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 10 May 2010 16:12:55 -0400 Subject: openid_url was renamed to openid_identifier --- doc/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/style.css b/doc/style.css index cb02f812a..4ea77573a 100644 --- a/doc/style.css +++ b/doc/style.css @@ -332,7 +332,7 @@ ol.form { li.form { padding-bottom: 1em; } -input#openid_url { +input#openid_identifier { background: url(wikiicons/openidlogin-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; -- cgit v1.2.3 From 4ceae1761b6f190a6115c106713d28f0a94e9191 Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawngPXAGrxk1pbqnum3O4I_VPRgNj_TZR1I" Date: Tue, 11 May 2010 21:52:38 +0000 Subject: --- doc/bugs/pagespec_error_on_refresh_but_not_rebuild.mdwn | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/bugs/pagespec_error_on_refresh_but_not_rebuild.mdwn b/doc/bugs/pagespec_error_on_refresh_but_not_rebuild.mdwn index 316ea7e9b..e89545955 100644 --- a/doc/bugs/pagespec_error_on_refresh_but_not_rebuild.mdwn +++ b/doc/bugs/pagespec_error_on_refresh_but_not_rebuild.mdwn @@ -25,4 +25,8 @@ But there is no error if I use `ikiwiki --rebuild` to regenerate the whole thing > that only happened some of the time. > > (The Text::Typography warning seems probably unrelated.) -> --[[Joey]] +> --[[Joey]] + +>> I'm sorry, I don't know what I was thinking there. It's ikiwiki 3.20100212, and manually applying the patch you linked to made the bug go away. (Upgrading ikiwiki is a pain on nearlyfreespeech, especially if you don't want to keep the build directory around -- please consider making ikiwiki runnable directly from a git clone.) + +[[!meta link="done"]] -- cgit v1.2.3 From 4c22562ec10bed4d8e499f226b2b3ba8a18a6489 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 11 May 2010 19:18:35 -0400 Subject: remove --- doc/Test_Post.mdwn | 1 - 1 file changed, 1 deletion(-) delete mode 100644 doc/Test_Post.mdwn diff --git a/doc/Test_Post.mdwn b/doc/Test_Post.mdwn deleted file mode 100644 index e8dfce394..000000000 --- a/doc/Test_Post.mdwn +++ /dev/null @@ -1 +0,0 @@ -this is a test page.. -- cgit v1.2.3 From 978416a2e60edea6d3d2c9ede80b8f6ef27fcecc Mon Sep 17 00:00:00 2001 From: BerndZeimetz Date: Tue, 11 May 2010 23:41:38 +0000 Subject: --- doc/users/BerndZeimetz.mdwn | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 doc/users/BerndZeimetz.mdwn diff --git a/doc/users/BerndZeimetz.mdwn b/doc/users/BerndZeimetz.mdwn new file mode 100644 index 000000000..cf21dc585 --- /dev/null +++ b/doc/users/BerndZeimetz.mdwn @@ -0,0 +1,8 @@ +See [wiki.debian.org/BerndZeimetz](http://wiki.debian.org/BerndZeimetz) for details. + +
    + Bernd Zeimetz                            Debian GNU/Linux Developer
    + http://bzed.de                                http://www.debian.org
    + GPG Fingerprints: 06C8 C9A2 EAAD E37E 5B2C BE93 067A AD04 C93B FF79
    +                   ECA1 E3F2 8E11 2432 D485 DD95 EB36 171A 6FF9 435F
    +
    -- cgit v1.2.3 From 85dea5786a5fee835b9677e5267d487813104018 Mon Sep 17 00:00:00 2001 From: BerndZeimetz Date: Tue, 11 May 2010 23:57:45 +0000 Subject: Add bzed's git repo to the list of repositories to pull from --- doc/git.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/git.mdwn b/doc/git.mdwn index c0f42a704..88608d4b5 100644 --- a/doc/git.mdwn +++ b/doc/git.mdwn @@ -64,6 +64,7 @@ think about merging them. This is recommended. :-) * [[peteg]] `git://git.hcoop.net/git/peteg/ikiwiki.git` * [[privat]] `git://github.com/privat/ikiwiki.git` * [[blipvert]] `git://github.com/blipvert/ikiwiki.git` +* [[bzed|BerndZeimetz]] `git://git.recluse.de/users/bzed/ikiwiki.git` ## branches -- cgit v1.2.3 From 72d7b8dc54d4dccc3100fddc23b9a245f62d3521 Mon Sep 17 00:00:00 2001 From: BerndZeimetz Date: Wed, 12 May 2010 09:20:31 +0000 Subject: Add short page about contrib / tracking plugin --- doc/plugins/contrib/tracking.mdwn | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 doc/plugins/contrib/tracking.mdwn diff --git a/doc/plugins/contrib/tracking.mdwn b/doc/plugins/contrib/tracking.mdwn new file mode 100644 index 000000000..ee01b261b --- /dev/null +++ b/doc/plugins/contrib/tracking.mdwn @@ -0,0 +1,30 @@ +[[!template id=plugin name=ftemplate author="[[BerndZeimetz]]"]] +[[!toc]] +[[!tag plugins]] [[!tag patch]] [[!tag wishlist]] + +## NAME + +IkiWiki::Plugin::tracking - enable google/piwik visitor tracking + +## SYNOPSIS + + # activate the plugin + add_plugins => [qw{goodstuff tracking ....}], + + # to use Piwik: + piwik_id => '1', + piwik_https_url => "https://ssl.example.com/piwik/", + piwik_http_url => "http://www.example.com/piwik/", + + # to use Google Analytics: + google_analytics_id => "UA-xxxxxx-x" + +## DESCRIPTION + +This plugin includes the necessary tracking codes for Piwik and/or Google Analytics on all pages. Tracking codes will only be included if the necessary config options are set. The plugin could be enhanced to support goals/profiles and similar things, but I do not plan to do so. + +## DOWNLOAD + +* single files: [tracking.pm](http://git.recluse.de/?p=users/bzed/ikiwiki.git;a=blob;f=IkiWiki/Plugin/tracking.pm;hb=refs/heads/tracking) [piwik.tmpl](http://git.recluse.de/?p=users/bzed/ikiwiki.git;a=blob;f=templates/piwik.tmpl;hb=refs/heads/tracking) [google_analytics.tmpl](http://git.recluse.de/?p=users/bzed/ikiwiki.git;a=blob;f=templates/google_analytics.tmpl;hb=refs/heads/tracking) +* browse repository: +* git repo: `git://git.recluse.de/users/bzed/ikiwiki.git` or (Use the tracking branch) -- cgit v1.2.3 From 1805bfbb5dd24ed23418ceee00524f4dd658993e Mon Sep 17 00:00:00 2001 From: BerndZeimetz Date: Wed, 12 May 2010 09:21:40 +0000 Subject: ... choose the right name.... --- doc/plugins/contrib/tracking.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plugins/contrib/tracking.mdwn b/doc/plugins/contrib/tracking.mdwn index ee01b261b..06d4120cd 100644 --- a/doc/plugins/contrib/tracking.mdwn +++ b/doc/plugins/contrib/tracking.mdwn @@ -1,4 +1,4 @@ -[[!template id=plugin name=ftemplate author="[[BerndZeimetz]]"]] +[[!template id=plugin name=tracking author="[[BerndZeimetz]]"]] [[!toc]] [[!tag plugins]] [[!tag patch]] [[!tag wishlist]] -- cgit v1.2.3 From 7112da3ed10a95e170fb197d473444a92009c223 Mon Sep 17 00:00:00 2001 From: "http://blog.farnz.org.uk/" Date: Wed, 12 May 2010 19:21:54 +0000 Subject: --- doc/sandbox.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index c323153c8..1c746c190 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -79,3 +79,4 @@ Hmm, can I dig it? Test test2 +I assume this triggers a checkin and recompile? -- cgit v1.2.3 From 3f2f447cb57acbcf2bf767c19160426a5efe5d75 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 12 May 2010 15:42:28 -0400 Subject: responses --- .../debian_backports_update_someone_please.mdwn | 5 +++++ ...ow_do_I_revert_edits_in_the_web_mode__63__.mdwn | 24 ++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/doc/forum/debian_backports_update_someone_please.mdwn b/doc/forum/debian_backports_update_someone_please.mdwn index 46b0aca6b..f1854762e 100644 --- a/doc/forum/debian_backports_update_someone_please.mdwn +++ b/doc/forum/debian_backports_update_someone_please.mdwn @@ -5,3 +5,8 @@ I'm just in the process of deploying ikiwiki and I'd love to use it in the html5 > for 2 weeks. :) --[[Joey]] >> And are there any chances you doing it... or rather not doing it? + +>>> Sure, I'm busily not doing it right now. Should reach testing in 3 +>>> days. I generally schedule things so a new ikiwiki reaches testing +>>> every 2 weeks to month. Getting important new features and bugfixes out +>>> can take priority though. --[[Joey]] diff --git a/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn b/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn index c326b8205..eca572c70 100644 --- a/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn +++ b/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn @@ -3,3 +3,27 @@ Puzzled a bit :-/ > There is no explicit interface for reverting edits. Most of us use `git revert`. --[[Joey]] >> That's a blow; I was planning on appointing no techies to keep law and order on our pages :-/ Is there a plugin or at least a plan to add such a 'in demand' feature? + +>>> A lot of things complicate adding that feature to the web interface. +>>> +>>> First, ikiwiki happily uses whatever the VCS's best of breed web +>>> history interface is. (ie, viewvcs, gitweb). To allow reverting +>>> past the bottom of the RecentChanges page, it would need to have its +>>> own history browser. Not sure I want to go there. +>>> +>>> And the mechanics of handling reverting can quickly get complex. +>>> Web reverting should only allow users to revert things they can edit, +>>> but reverting a whole commit in git might touch multiple files. +>>> Some files may not be editable over the web at all. (The +>>> [[tips/untrusted_git_push]] also has to deal with those issues.) +>>> Finally, a revert can fail with a conflict. The revert could touch +>>> multiple files, and multiple ones could conflict. The conflict may +>>> involve non-page files that can't be diffed. So an interface for +>>> resolving such a conflict could be hard. +>>> +>>> Probably web-based reverting would need to be limited to reverting +>>> single file changes, not whole commits, and not having very good +>>> conflict handling. And maybe only being accessible for changes +>>> still visible on RecentChanges. With those limitations, it's certianly +>>> doable (as a plugin even), but given how excellent `git revert` is in +>>> comparison, I have not had a real desire to do so. --[[Joey]] -- cgit v1.2.3 From 50c9851ddc834f6261da0df525374efd867f731d Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawlcaGfdn9Kye1Gc8aGb67PDVQW4mKbQD7E" Date: Thu, 13 May 2010 00:07:54 +0000 Subject: comments --- doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn b/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn index eca572c70..510e93077 100644 --- a/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn +++ b/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn @@ -27,3 +27,7 @@ Puzzled a bit :-/ >>> still visible on RecentChanges. With those limitations, it's certianly >>> doable (as a plugin even), but given how excellent `git revert` is in >>> comparison, I have not had a real desire to do so. --[[Joey]] + +>>>> Web edits are single-file anyway, so I wouldn't expect web reverts +>>>> to handle the multi-file case. OTOH, I've sometimes wished ikiwiki +>>>> had its own history browser (somewhere down my todo list). --[[schmonz]] -- cgit v1.2.3 From 031da9c134fca2c6d689f343ac0b4a537b4cfd15 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 13 May 2010 16:28:09 -0400 Subject: po: guard against reimportation If po is imported twice, bad things happen. Guard against that. I'm not sure what causes the double import; I saw it when websetup did a wiki rebuild. Carp failed to show a backtrace for the second call to import. --- IkiWiki/Plugin/po.pm | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 7c979ebca..990847b48 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -51,18 +51,20 @@ sub import { hook(type => "formbuilder_setup", id => "po", call => \&formbuilder_setup, last => 1); hook(type => "formbuilder", id => "po", call => \&formbuilder); - $origsubs{'bestlink'}=\&IkiWiki::bestlink; - inject(name => "IkiWiki::bestlink", call => \&mybestlink); - $origsubs{'beautify_urlpath'}=\&IkiWiki::beautify_urlpath; - inject(name => "IkiWiki::beautify_urlpath", call => \&mybeautify_urlpath); - $origsubs{'targetpage'}=\&IkiWiki::targetpage; - inject(name => "IkiWiki::targetpage", call => \&mytargetpage); - $origsubs{'urlto'}=\&IkiWiki::urlto; - inject(name => "IkiWiki::urlto", call => \&myurlto); - $origsubs{'cgiurl'}=\&IkiWiki::cgiurl; - inject(name => "IkiWiki::cgiurl", call => \&mycgiurl); - $origsubs{'rootpage'}=\&IkiWiki::rootpage; - inject(name => "IkiWiki::rootpage", call => \&myrootpage); + if (! %origsubs) { + $origsubs{'bestlink'}=\&IkiWiki::bestlink; + inject(name => "IkiWiki::bestlink", call => \&mybestlink); + $origsubs{'beautify_urlpath'}=\&IkiWiki::beautify_urlpath; + inject(name => "IkiWiki::beautify_urlpath", call => \&mybeautify_urlpath); + $origsubs{'targetpage'}=\&IkiWiki::targetpage; + inject(name => "IkiWiki::targetpage", call => \&mytargetpage); + $origsubs{'urlto'}=\&IkiWiki::urlto; + inject(name => "IkiWiki::urlto", call => \&myurlto); + $origsubs{'cgiurl'}=\&IkiWiki::cgiurl; + inject(name => "IkiWiki::cgiurl", call => \&mycgiurl); + $origsubs{'rootpage'}=\&IkiWiki::rootpage; + inject(name => "IkiWiki::rootpage", call => \&myrootpage); + } } -- cgit v1.2.3 From 7edd9e7ef3aec48f2b5206d307781378521d16f0 Mon Sep 17 00:00:00 2001 From: zimek Date: Fri, 14 May 2010 14:00:39 +0000 Subject: --- doc/forum/debian_backports_update_someone_please.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/forum/debian_backports_update_someone_please.mdwn b/doc/forum/debian_backports_update_someone_please.mdwn index f1854762e..66f5eb0c5 100644 --- a/doc/forum/debian_backports_update_someone_please.mdwn +++ b/doc/forum/debian_backports_update_someone_please.mdwn @@ -10,3 +10,5 @@ I'm just in the process of deploying ikiwiki and I'd love to use it in the html5 >>> days. I generally schedule things so a new ikiwiki reaches testing >>> every 2 weeks to month. Getting important new features and bugfixes out >>> can take priority though. --[[Joey]] + +>>>> Great! Thanks. -- cgit v1.2.3 From 4611c77696496287385f19301bcdf301393c6a61 Mon Sep 17 00:00:00 2001 From: zimek Date: Fri, 14 May 2010 14:02:25 +0000 Subject: --- doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn b/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn index 510e93077..7686a7a08 100644 --- a/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn +++ b/doc/forum/how_do_I_revert_edits_in_the_web_mode__63__.mdwn @@ -31,3 +31,5 @@ Puzzled a bit :-/ >>>> Web edits are single-file anyway, so I wouldn't expect web reverts >>>> to handle the multi-file case. OTOH, I've sometimes wished ikiwiki >>>> had its own history browser (somewhere down my todo list). --[[schmonz]] + +>>>> Yup, having a possibility to revert a single file would suffice. -- cgit v1.2.3 From 01d28878d70b3a854fb683afaa81706f5b76b597 Mon Sep 17 00:00:00 2001 From: zimek Date: Fri, 14 May 2010 14:11:04 +0000 Subject: --- ...o_load_an_external_page_and_still_have_it_under_ikiwiki_template.mdwn | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/forum/how_to_load_an_external_page_and_still_have_it_under_ikiwiki_template.mdwn diff --git a/doc/forum/how_to_load_an_external_page_and_still_have_it_under_ikiwiki_template.mdwn b/doc/forum/how_to_load_an_external_page_and_still_have_it_under_ikiwiki_template.mdwn new file mode 100644 index 000000000..9f70bf442 --- /dev/null +++ b/doc/forum/how_to_load_an_external_page_and_still_have_it_under_ikiwiki_template.mdwn @@ -0,0 +1 @@ +OK, probably title is bit confusing. Basically I'd like to be able to keep my left hand side menu, which is part of the template, and at the same time load let's say forum on the right hand side, which sits on a separate domain. Is it possible then to construct template that for some special links it runs as lets say in mode? -- cgit v1.2.3 From f09cd4b7363b5ff8bdaf71fa6aad56747cf6c734 Mon Sep 17 00:00:00 2001 From: zimek Date: Fri, 14 May 2010 14:12:03 +0000 Subject: --- ..._load_an_external_page_and_still_have_it_under_ikiwiki_template.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/forum/how_to_load_an_external_page_and_still_have_it_under_ikiwiki_template.mdwn b/doc/forum/how_to_load_an_external_page_and_still_have_it_under_ikiwiki_template.mdwn index 9f70bf442..0475d126f 100644 --- a/doc/forum/how_to_load_an_external_page_and_still_have_it_under_ikiwiki_template.mdwn +++ b/doc/forum/how_to_load_an_external_page_and_still_have_it_under_ikiwiki_template.mdwn @@ -1 +1 @@ -OK, probably title is bit confusing. Basically I'd like to be able to keep my left hand side menu, which is part of the template, and at the same time load let's say forum on the right hand side, which sits on a separate domain. Is it possible then to construct template that for some special links it runs as lets say in mode? +OK, probably title is bit confusing. Basically I'd like to be able to keep my left hand side menu, which is part of the template, and at the same time load let's say forum on the right hand side, which sits on a separate domain. Is it possible then to construct template that for some special links it runs as lets say in *frameset* mode? -- cgit v1.2.3 From c9699ef0652bee261e03ff684dfe26b2bd791bd9 Mon Sep 17 00:00:00 2001 From: zimek Date: Fri, 14 May 2010 16:14:29 +0000 Subject: --- ...sallow_all__44___allow_chosen__95__few_page_editing_policy__63__.mdwn | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/forum/what_is_the_easiest_way_to_implement_order:_disallow_all__44___allow_chosen__95__few_page_editing_policy__63__.mdwn diff --git a/doc/forum/what_is_the_easiest_way_to_implement_order:_disallow_all__44___allow_chosen__95__few_page_editing_policy__63__.mdwn b/doc/forum/what_is_the_easiest_way_to_implement_order:_disallow_all__44___allow_chosen__95__few_page_editing_policy__63__.mdwn new file mode 100644 index 000000000..c86c35da4 --- /dev/null +++ b/doc/forum/what_is_the_easiest_way_to_implement_order:_disallow_all__44___allow_chosen__95__few_page_editing_policy__63__.mdwn @@ -0,0 +1 @@ +As in title, I'd like to allow editing only some pages on my wiki. Rest by default is not editable by users except admin. Thanks -- cgit v1.2.3 From 8ff761afa24febdb280c672b3b31d6145990f050 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 14 May 2010 14:21:45 -0400 Subject: remove, rename: Add guards against XSRF attacks. --- IkiWiki/Plugin/remove.pm | 4 ++++ IkiWiki/Plugin/rename.pm | 4 ++++ debian/changelog | 1 + 3 files changed, 9 insertions(+) diff --git a/IkiWiki/Plugin/remove.pm b/IkiWiki/Plugin/remove.pm index a46294e78..d23b2cc10 100644 --- a/IkiWiki/Plugin/remove.pm +++ b/IkiWiki/Plugin/remove.pm @@ -107,6 +107,8 @@ sub confirmation_form ($$) { fields => [qw{do page}], ); + $f->field(name => "sid", type => "hidden", value => $session->id, + force => 1); $f->field(name => "do", type => "hidden", value => "remove", force => 1); return $f, ["Remove", "Cancel"]; @@ -188,6 +190,8 @@ sub sessioncgi ($$) { postremove($session); } elsif ($form->submitted eq 'Remove' && $form->validate) { + IkiWiki::checksessionexpiry($q, $session, $q->param('sid')); + my @pages=$form->field("page"); # Validate removal by checking that the page exists, diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm index 537e91317..0da90a538 100644 --- a/IkiWiki/Plugin/rename.pm +++ b/IkiWiki/Plugin/rename.pm @@ -131,6 +131,8 @@ sub rename_form ($$$) { ); $f->field(name => "do", type => "hidden", value => "rename", force => 1); + $f->field(name => "sid", type => "hidden", value => $session->id, + force => 1); $f->field(name => "page", type => "hidden", value => $page, force => 1); $f->field(name => "new_name", value => pagetitle($page, 1), size => 60); if (!$q->param("attachment")) { @@ -286,6 +288,8 @@ sub sessioncgi ($$) { postrename($session); } elsif ($form->submitted eq 'Rename' && $form->validate) { + IkiWiki::checksessionexpiry($q, $session, $q->param('sid')); + # Queue of rename actions to perfom. my @torename; diff --git a/debian/changelog b/debian/changelog index e6c5e42ae..a09c8e228 100644 --- a/debian/changelog +++ b/debian/changelog @@ -30,6 +30,7 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low (And also negative years.) * calendar: Display year in title of month calendar. * Use xhtml friendly pubdate setting. + * remove, rename: Add guards against XSRF attacks. -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 -- cgit v1.2.3 From 68b91528dd66c1e29147babc0647647cc0e0a958 Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawlcaGfdn9Kye1Gc8aGb67PDVQW4mKbQD7E" Date: Fri, 14 May 2010 19:01:35 +0000 Subject: lockedit --- ...allow_all__44___allow_chosen__95__few_page_editing_policy__63__.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/forum/what_is_the_easiest_way_to_implement_order:_disallow_all__44___allow_chosen__95__few_page_editing_policy__63__.mdwn b/doc/forum/what_is_the_easiest_way_to_implement_order:_disallow_all__44___allow_chosen__95__few_page_editing_policy__63__.mdwn index c86c35da4..fbc5c58e2 100644 --- a/doc/forum/what_is_the_easiest_way_to_implement_order:_disallow_all__44___allow_chosen__95__few_page_editing_policy__63__.mdwn +++ b/doc/forum/what_is_the_easiest_way_to_implement_order:_disallow_all__44___allow_chosen__95__few_page_editing_policy__63__.mdwn @@ -1 +1,3 @@ As in title, I'd like to allow editing only some pages on my wiki. Rest by default is not editable by users except admin. Thanks + +> See [[plugins/lockedit]]. --[[schmonz]] -- cgit v1.2.3 From 5a4c95cc352d6895c11542245981c62a5c003370 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 14 May 2010 20:04:02 -0400 Subject: enable action bar on misctemplates So RecentChanges shows on the action bar there, convert recentchanges to use new pageactions hook, with compatability code to avoid breaking old templates. --- IkiWiki.pm | 11 ++++++++++- IkiWiki/Plugin/recentchanges.pm | 18 ++++++++++++++++-- templates/page.tmpl | 3 --- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 33e4e1d1f..46c29abe3 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1748,7 +1748,6 @@ sub misctemplate ($$;@) { $template->param( dynamic => 1, - have_actions => 0, # force off title => $title, wikiname => $config{wikiname}, content => $content, @@ -1756,6 +1755,16 @@ sub misctemplate ($$;@) { html5 => $config{html5}, @_, ); + + my @actions; + run_hooks(pageactions => sub { + push @actions, map { { action => $_ } } + grep { defined } shift->(page => ""); + }); + $template->param(actions => \@actions); + if (@actions) { + $template->param(have_actions => 1); + } return $template->output; } diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 5c7b71aaa..65044080f 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -11,6 +11,7 @@ sub import { hook(type => "getsetup", id => "recentchanges", call => \&getsetup); hook(type => "checkconfig", id => "recentchanges", call => \&checkconfig); hook(type => "refresh", id => "recentchanges", call => \&refresh); + hook(type => "pageactions", id => "recentchanges", call => \&pageactions); hook(type => "pagetemplate", id => "recentchanges", call => \&pagetemplate); hook(type => "htmlize", id => "_change", call => \&htmlize); # Load goto to fix up links from recentchanges @@ -61,14 +62,27 @@ sub refresh ($) { } # Enable the recentchanges link on wiki pages. +sub pageactions (@) { + my %params=@_; + my $page=$params{page}; + + if (defined $config{recentchangespage} && $config{rcs} && + $page ne $config{recentchangespage}) { + return htmllink($page, $page, $config{recentchangespage}, + gettext("RecentChanges")); + } +} + +# Backwards compatability for templates still using +# RECENTCHANGESURL. sub pagetemplate (@) { my %params=@_; my $template=$params{template}; my $page=$params{page}; if (defined $config{recentchangespage} && $config{rcs} && - $page ne $config{recentchangespage} && - $template->query(name => "recentchangesurl")) { + $template->query(name => "recentchangesurl") && + $page ne $config{recentchangespage}) { $template->param(recentchangesurl => urlto($config{recentchangespage}, $page)); $template->param(have_actions => 1); } diff --git a/templates/page.tmpl b/templates/page.tmpl index 3bb7197f0..049d31ad5 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -61,9 +61,6 @@
  • Edit
  • - -
  • RecentChanges
  • -
  • History
  • -- cgit v1.2.3 From 377e82b16c95833a37c1f87e57122e8b44c187cb Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 14 May 2010 20:10:18 -0400 Subject: we want the recentchanges link to be the first floating action --- IkiWiki/Plugin/recentchanges.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 65044080f..7eba931be 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -11,7 +11,8 @@ sub import { hook(type => "getsetup", id => "recentchanges", call => \&getsetup); hook(type => "checkconfig", id => "recentchanges", call => \&checkconfig); hook(type => "refresh", id => "recentchanges", call => \&refresh); - hook(type => "pageactions", id => "recentchanges", call => \&pageactions); + hook(type => "pageactions", id => "recentchanges", call => \&pageactions, + first => 1); hook(type => "pagetemplate", id => "recentchanges", call => \&pagetemplate); hook(type => "htmlize", id => "_change", call => \&htmlize); # Load goto to fix up links from recentchanges -- cgit v1.2.3 From bbe971881a7a3c03dfdb5312215c434e35eff94e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 14 May 2010 20:20:41 -0400 Subject: refactor template actions --- IkiWiki.pm | 22 ++++++++++++++++++---- IkiWiki/Render.pm | 18 +++--------------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 46c29abe3..a42f56bf0 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1755,18 +1755,32 @@ sub misctemplate ($$;@) { html5 => $config{html5}, @_, ); + + templateactions($template, ""); + return $template->output; +} + +sub templateactions ($$) { + my $template=shift; + my $page=shift; + + my $have_actions=0; my @actions; run_hooks(pageactions => sub { push @actions, map { { action => $_ } } - grep { defined } shift->(page => ""); + grep { defined } shift->(page => $page); }); $template->param(actions => \@actions); - if (@actions) { - $template->param(have_actions => 1); + + if ($config{cgiurl} && exists $hooks{auth}) { + $template->param(prefsurl => cgiurl(do => "prefs")); + $have_actions=1; } - return $template->output; + if ($have_actions || @actions) { + $template->param(have_actions => 1); + } } sub hook (@) { diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 8b1b9aef4..833fcaaff 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -84,19 +84,14 @@ sub genpage ($$) { $template=template('page.tmpl', blind_cache => 1); } - my $actions=0; + my $actions=0; if (length $config{cgiurl}) { if (IkiWiki->can("cgi_editpage")) { $template->param(editurl => cgiurl(do => "edit", page => $page)); $actions++; } - if (exists $hooks{auth}) { - $template->param(prefsurl => cgiurl(do => "prefs")); - $actions++; - } } - if (defined $config{historyurl} && length $config{historyurl}) { my $u=$config{historyurl}; $u=~s/\[\[file\]\]/$pagesources{$page}/g; @@ -111,17 +106,10 @@ sub genpage ($$) { $actions++; } } - - my @actions; - run_hooks(pageactions => sub { - push @actions, map { { action => $_ } } - grep { defined } shift->(page => $page); - }); - $template->param(actions => \@actions); - - if ($actions || @actions) { + if ($actions) { $template->param(have_actions => 1); } + templateactions($template, $page); my @backlinks=sort { $a->{page} cmp $b->{page} } backlinks($page); my ($backlinks, $more_backlinks); -- cgit v1.2.3 From d80a649073ecabe70870fbe01dfcdf6fc8735201 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 14 May 2010 20:29:16 -0400 Subject: bugfix --- IkiWiki/Plugin/recentchanges.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 7eba931be..0ee8f0e66 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -70,7 +70,7 @@ sub pageactions (@) { if (defined $config{recentchangespage} && $config{rcs} && $page ne $config{recentchangespage}) { return htmllink($page, $page, $config{recentchangespage}, - gettext("RecentChanges")); + linktext => gettext("RecentChanges")); } } -- cgit v1.2.3 From ce731ec33fc4b30fae1f99be7476d9cb1c494fc9 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 14 May 2010 20:33:53 -0400 Subject: avoid warning --- po/underlay.setup | 1 + 1 file changed, 1 insertion(+) diff --git a/po/underlay.setup b/po/underlay.setup index c34045981..8d3516cff 100644 --- a/po/underlay.setup +++ b/po/underlay.setup @@ -24,6 +24,7 @@ use IkiWiki::Setup::Standard { # we don't want to pull in the normal underlays underlaydirbase => "underlays/empty", underlaydir => "underlays/empty", + disable_plugins => [qw{openid}], # needs special underlay discussion => 0, locale => '', verbose => 1, -- cgit v1.2.3 From 3dd98a3b3f66555ca3d83ec6940a9cd11cf8bec7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 14 May 2010 20:38:08 -0400 Subject: put back recentchangesurl On second thought, misctemplate can use pagetemplate hooks to provide it, so it's better to keep back-compat, and allow full customisation of how it's displayed via the template. --- IkiWiki/Plugin/recentchanges.pm | 17 +---------------- templates/page.tmpl | 3 +++ 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 0ee8f0e66..e546e4702 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -11,8 +11,6 @@ sub import { hook(type => "getsetup", id => "recentchanges", call => \&getsetup); hook(type => "checkconfig", id => "recentchanges", call => \&checkconfig); hook(type => "refresh", id => "recentchanges", call => \&refresh); - hook(type => "pageactions", id => "recentchanges", call => \&pageactions, - first => 1); hook(type => "pagetemplate", id => "recentchanges", call => \&pagetemplate); hook(type => "htmlize", id => "_change", call => \&htmlize); # Load goto to fix up links from recentchanges @@ -62,20 +60,7 @@ sub refresh ($) { } } -# Enable the recentchanges link on wiki pages. -sub pageactions (@) { - my %params=@_; - my $page=$params{page}; - - if (defined $config{recentchangespage} && $config{rcs} && - $page ne $config{recentchangespage}) { - return htmllink($page, $page, $config{recentchangespage}, - linktext => gettext("RecentChanges")); - } -} - -# Backwards compatability for templates still using -# RECENTCHANGESURL. +# Enable the recentchanges link. sub pagetemplate (@) { my %params=@_; my $template=$params{template}; diff --git a/templates/page.tmpl b/templates/page.tmpl index 049d31ad5..3bb7197f0 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -61,6 +61,9 @@
  • Edit
  • + +
  • RecentChanges
  • +
  • History
  • -- cgit v1.2.3 From 827e092b58771e5c5efdbc1cf04a62a1d039a015 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 14 May 2010 20:40:42 -0400 Subject: show search form on dynamic pages --- templates/page.tmpl | 2 -- 1 file changed, 2 deletions(-) diff --git a/templates/page.tmpl b/templates/page.tmpl index 3bb7197f0..f7944e40e 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -48,11 +48,9 @@ - - -- cgit v1.2.3 From f69c072d8aad7ad68547f17bf60bd804542b064f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 14 May 2010 21:40:30 -0400 Subject: better misctemplate splitting sequence --- IkiWiki/Plugin/websetup.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/websetup.pm b/IkiWiki/Plugin/websetup.pm index 9cb5eb13c..c4b75c4b3 100644 --- a/IkiWiki/Plugin/websetup.pm +++ b/IkiWiki/Plugin/websetup.pm @@ -450,8 +450,8 @@ sub showform ($$) { IkiWiki::unlockwiki(); # Print the top part of a standard misctemplate, - # then show the rebuild or refresh. - my $divider="xxx"; + # then show the rebuild or refresh, live. + my $divider="\0"; my $html=IkiWiki::misctemplate("setup", $divider); IkiWiki::printheader($session); my ($head, $tail)=split($divider, $html, 2); -- cgit v1.2.3 From 4c6fa6413fc26ddbb1f8dc2c73f97a105c5002f8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 14 May 2010 21:42:48 -0400 Subject: avoid showing redundant search box on search results page --- IkiWiki/Plugin/search.pm | 3 ++- templates/page.tmpl | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm index cc26b7ac1..a9089620b 100644 --- a/IkiWiki/Plugin/search.pm +++ b/IkiWiki/Plugin/search.pm @@ -228,7 +228,8 @@ sub setupfiles () { # Avoid omega interpreting anything in the misctemplate # as an omegascript command. - my $misctemplate=IkiWiki::misctemplate(gettext("search"), "\0"); + my $misctemplate=IkiWiki::misctemplate(gettext("search"), "\0", + searching => 1); eval q{use HTML::Entities}; error $@ if $@; $misctemplate=encode_entities($misctemplate, '\$'); diff --git a/templates/page.tmpl b/templates/page.tmpl index f7944e40e..a7d200466 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -48,9 +48,11 @@ + + -- cgit v1.2.3 From c8b34aa31c7d146adf4210c6171dfea2988a7688 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 14 May 2010 21:45:22 -0400 Subject: allow misctemplate callers to pass params to suppress actions etc Suppress disiplay of small search for on search results page, and of Prefrences link on prefs page. --- IkiWiki.pm | 3 +-- IkiWiki/CGI.pm | 4 +++- IkiWiki/Plugin/search.pm | 3 ++- templates/page.tmpl | 2 -- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index a42f56bf0..699ad13da 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1745,6 +1745,7 @@ sub misctemplate ($$;@) { run_hooks(pagetemplate => sub { shift->(page => "", destpage => "", template => $template); }); + templateactions($template, ""); $template->param( dynamic => 1, @@ -1755,8 +1756,6 @@ sub misctemplate ($$;@) { html5 => $config{html5}, @_, ); - - templateactions($template, ""); return $template->output; } diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index b98e9e0a1..28020b500 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -247,7 +247,9 @@ sub cgi_prefs ($$) { $form->text(gettext("Preferences saved.")); } - showform($form, $buttons, $session, $q); + showform($form, $buttons, $session, $q, + prefsurl => "", # avoid showing the preferences link + ); } sub cgi_custom_failure ($$$) { diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm index a9089620b..ff5d0ccbe 100644 --- a/IkiWiki/Plugin/search.pm +++ b/IkiWiki/Plugin/search.pm @@ -229,7 +229,8 @@ sub setupfiles () { # Avoid omega interpreting anything in the misctemplate # as an omegascript command. my $misctemplate=IkiWiki::misctemplate(gettext("search"), "\0", - searching => 1); + searchform => "", # avoid showing the small search form + ); eval q{use HTML::Entities}; error $@ if $@; $misctemplate=encode_entities($misctemplate, '\$'); diff --git a/templates/page.tmpl b/templates/page.tmpl index a7d200466..f7944e40e 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -48,11 +48,9 @@ - - -- cgit v1.2.3 From 5071347e2b08c21206ed3d0dc30eebb4f499efe5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 14 May 2010 23:02:29 -0400 Subject: tweak actionvar for visual consistentcy when there are no actions --- doc/style.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/style.css b/doc/style.css index 4ea77573a..2cd7a9652 100644 --- a/doc/style.css +++ b/doc/style.css @@ -29,12 +29,13 @@ nav { .actions ul { margin: 0; - padding: 6px; + padding: 6px .4em; + height: 1em; list-style-type: none; } .actions li { display: inline; - padding: .2em .4em; + padding: .2em; } .pageheader .actions ul { border-bottom: 1px solid #000; -- cgit v1.2.3 From e650b084a3651b4f49b60c6397501dea01723a51 Mon Sep 17 00:00:00 2001 From: "https://mukund.startssl.com/" Date: Sat, 15 May 2010 09:53:32 +0000 Subject: Remove Banu --- doc/ikiwikiusers.mdwn | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index edf36b5c6..94dc00b25 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -53,7 +53,6 @@ Projects & Organizations * [Debian Costa Rica](http://cr.debian.net/) * [Fvwm Wiki](http://fvwmwiki.xteddy.org) * [Serialist](http://serialist.net/)'s static pages (documentation, blog). We actually have ikiwiki generate its static content as HTML fragments using a modified page.tmpl template, and then the FastCGI powering our site grabs those fragments and embeds them in the standard dynamic site template. -* [Banu](https://www.banu.com/) Personal sites and blogs ======================== -- cgit v1.2.3 From 8c05fcde9ee5ae9da5de71e0c27d59aca106c877 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 21:09:38 -0400 Subject: relase finalised --- debian/changelog | 4 ++-- ikiwiki.spec | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index a09c8e228..50b1fddff 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -ikiwiki (3.20100505) UNRELEASED; urgency=low +ikiwiki (3.20100515) unstable; urgency=low * Removed misc.tmpl. Now to theme ikiwiki, you only need to customise a single template, page.tmpl. @@ -32,7 +32,7 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low * Use xhtml friendly pubdate setting. * remove, rename: Add guards against XSRF attacks. - -- Joey Hess Wed, 05 May 2010 18:07:29 -0400 + -- Joey Hess Sat, 15 May 2010 21:00:45 -0400 ikiwiki (3.20100504) unstable; urgency=low diff --git a/ikiwiki.spec b/ikiwiki.spec index b2b5af3dc..09f07c6ce 100644 --- a/ikiwiki.spec +++ b/ikiwiki.spec @@ -1,5 +1,5 @@ Name: ikiwiki -Version: 3.20100505 +Version: 3.20100515 Release: 1%{?dist} Summary: A wiki compiler -- cgit v1.2.3 From 083e491262b337296e28de2c9b2a53401ec780ef Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 22:21:17 -0400 Subject: add missing closing tmpl_if --- debian/NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/NEWS b/debian/NEWS index 68f0a207b..e8408edff 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -1,4 +1,4 @@ -ikiwiki (3.20100505) UNRELEASED; urgency=low +ikiwiki (3.20100515) unstable; urgency=low There is a significant change to the page.tmpl template in this version. If you have locally modified versions of that template, you will need @@ -8,6 +8,7 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low + Also, there is a new "comment()" pagespec, that can be used to match a comment on a page. It is recommended it be used instead of the old -- cgit v1.2.3 From 0287fe29ac7b2e38f8887ad0a5b0f6e98986809f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 22:23:44 -0400 Subject: reword comment count to avoid pluralisation issues --- doc/examples/blog/comments.mdwn | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/doc/examples/blog/comments.mdwn b/doc/examples/blog/comments.mdwn index 32ffa5537..f8569a549 100644 --- a/doc/examples/blog/comments.mdwn +++ b/doc/examples/blog/comments.mdwn @@ -1,7 +1,6 @@ -This page will show recent comments made to posts in the [[blog|index]]. - -There are [[!pagecount pages="comment_pending(/posts/*)"]] comments -in the moderation queue. [[!inline pages="comment_pending(/posts/*)" name=pendingmoderation show=-1]] +Comments in the moderation queue: +[[!pagecount pages="comment_pending(/posts/*)"]] +Recent comments on posts in the [[blog|index]]: [[!inline pages="./posts/*/Discussion or comment(./posts/*)"]] -- cgit v1.2.3 From 4a6d5330e5b9554f1bd25b9025dd96200c6519c7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 22:28:07 -0400 Subject: avoid showing comment post stuff on dynamic pages If the site is configured to allow comments on *, then the comment post interface was being added to cgi pages like signin and prefs. This fixes it w/o requiring more page.tmpl changes. The pagetemplate hook is called by misctemplate with an empty page name for dynamic pages. --- IkiWiki/Plugin/comments.pm | 1 + 1 file changed, 1 insertion(+) diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 3cafcbe9c..af7e7eccd 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -742,6 +742,7 @@ sub pagetemplate (@) { $template->query(name => 'commentsurl') || $template->query(name => 'atomcommentsurl') || $template->query(name => 'comments')) && + length $page && # not dynamic commentsshown($page); if ($template->query(name => 'comments')) { -- cgit v1.2.3 From e2ad879932446ee25b61fa3b30f5233df59dad59 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 22:32:24 -0400 Subject: reword --- debian/NEWS | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/debian/NEWS b/debian/NEWS index e8408edff..0a00ea6dd 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -1,8 +1,9 @@ ikiwiki (3.20100515) unstable; urgency=low - There is a significant change to the page.tmpl template in this version. - If you have locally modified versions of that template, you will need - to update it to contain the following in the HTML : + There is a significant change to the page.tmpl template in this version, + (and several less significant changes). If you have a locally modified + version of that template, you will need to update it at least to + contain the following in the HTML : -- cgit v1.2.3 From ff67a31db53dee296ef5f603cc6062d2191c7178 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 22:38:59 -0400 Subject: Revert "avoid showing comment post stuff on dynamic pages" This reverts commit 4a6d5330e5b9554f1bd25b9025dd96200c6519c7. That was too ugly, the DYNAMIC test on page.tmpl will avoid the problem anyway -- just needs to be added. --- IkiWiki/Plugin/comments.pm | 1 - 1 file changed, 1 deletion(-) diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index af7e7eccd..3cafcbe9c 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -742,7 +742,6 @@ sub pagetemplate (@) { $template->query(name => 'commentsurl') || $template->query(name => 'atomcommentsurl') || $template->query(name => 'comments')) && - length $page && # not dynamic commentsshown($page); if ($template->query(name => 'comments')) { -- cgit v1.2.3 From e02c1bcf3df6b269ed7d5a29a97ea7f8f9464a3d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 22:41:37 -0400 Subject: document needing to wrap footer in dynamic test --- debian/NEWS | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/debian/NEWS b/debian/NEWS index 0a00ea6dd..f73ac9c3d 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -1,17 +1,18 @@ ikiwiki (3.20100515) unstable; urgency=low - There is a significant change to the page.tmpl template in this version, - (and several less significant changes). If you have a locally modified - version of that template, you will need to update it at least to - contain the following in the HTML : + There are two significant changes to the page.tmpl template in this version. + If you have a locally modified version of that template, you will need to + update it at least to contain the following in the HTML : + + Also, the footer should be wrapped in ... - Also, there is a new "comment()" pagespec, that can be used to match a + There is a new "comment()" pagespec, that can be used to match a comment on a page. It is recommended it be used instead of the old method of using a pagespec such as "internal(comment_*)" to match things that looked like comments. The old pagespec will now also match -- cgit v1.2.3 From 758cd909e9cc7bf9b46679131808132a397c8770 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 23:01:40 -0400 Subject: move moderation info to sidebar --- doc/examples/blog/comments.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/examples/blog/comments.mdwn b/doc/examples/blog/comments.mdwn index f8569a549..1873fb9ac 100644 --- a/doc/examples/blog/comments.mdwn +++ b/doc/examples/blog/comments.mdwn @@ -1,6 +1,8 @@ +[[!sidebar content=""" [[!inline pages="comment_pending(/posts/*)" name=pendingmoderation show=-1]] Comments in the moderation queue: [[!pagecount pages="comment_pending(/posts/*)"]] +"""]] Recent comments on posts in the [[blog|index]]: [[!inline pages="./posts/*/Discussion or comment(./posts/*)"]] -- cgit v1.2.3 From 0ab4496237e42a0044116477d0358b2faaa95675 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 23:06:19 -0400 Subject: fix comment feed filename --- doc/examples/blog/comments.mdwn | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/examples/blog/comments.mdwn b/doc/examples/blog/comments.mdwn index 1873fb9ac..f600ae183 100644 --- a/doc/examples/blog/comments.mdwn +++ b/doc/examples/blog/comments.mdwn @@ -1,5 +1,6 @@ [[!sidebar content=""" -[[!inline pages="comment_pending(/posts/*)" name=pendingmoderation show=-1]] +[[!inline pages="comment_pending(/posts/*)" feedfile=pendingmoderation +description="comments pending moderation" show=-1]] Comments in the moderation queue: [[!pagecount pages="comment_pending(/posts/*)"]] """]] -- cgit v1.2.3 From 0e13c97345a54269f25264a66a85e78f0748eca3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 23:24:57 -0400 Subject: disable openid when building doc dir --- docwiki.setup | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docwiki.setup b/docwiki.setup index 6bc200066..8b898f619 100644 --- a/docwiki.setup +++ b/docwiki.setup @@ -29,7 +29,8 @@ use IkiWiki::Setup::Standard { usedirs => 0, prefix_directives => 1, add_plugins => [qw{goodstuff version haiku polygen fortune table}], - disable_plugins => [qw{recentchanges}], # not appropriate for doc dir + # not appropriate for doc dir + disable_plugins => [qw{recentchanges openid}], rcs => $rcs, gitorigin_branch => '', # don't pull during build } -- cgit v1.2.3 From 405f5f09d0caaa2208a8da311df78911e01455dc Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 23:39:54 -0400 Subject: add news item for ikiwiki 3.20100515 --- doc/news/version_3.20100515.mdwn | 54 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 doc/news/version_3.20100515.mdwn diff --git a/doc/news/version_3.20100515.mdwn b/doc/news/version_3.20100515.mdwn new file mode 100644 index 000000000..de7145c8d --- /dev/null +++ b/doc/news/version_3.20100515.mdwn @@ -0,0 +1,54 @@ +News for ikiwiki 3.20100515: + + There are two significant changes to the page.tmpl template in this version. + If you have a locally modified version of that template, you will need to + update it at least to contain the following in the HTML <head>: + <TMPL\_IF DYNAMIC> + <TMPL\_IF FORCEBASEURL><base href="<TMPL\_VAR FORCEBASEURL>" /><TMPL\_ELSE> + <TMPL\_IF BASEURL><base href="<TMPL\_VAR BASEURL>" /></TMPL\_IF> + </TMPL\_IF> + </TMPL\_IF> + Also, the footer should be wrapped in <TMPL\_UNLESS DYNAMIC> ... </TMPL\_UNLESS> + There is a new "comment()" pagespec, that can be used to match a + comment on a page. It is recommended it be used instead of the old + method of using a pagespec such as "internal(comment\_*)" to match + things that looked like comments. The old pagespec will now also match + comments that are held for moderation; likely not what you want. + There have also been some changes to the style.css in this version, + particularly to support the new openid selector. If you have a modified + version, of style.css, updating it (or moving it to local.css) is + recommended. + +ikiwiki 3.20100515 released with [[!toggle text="these changes"]] +[[!toggleable text=""" + * Removed misc.tmpl. Now to theme ikiwiki, you only need to customise + a single template, page.tmpl. + * If you have a locally customised page.tmpl, it needs to be updated + to set <base> when BASEURL or FORCEBAREURL is set. + * comments: Comments pending moderation are now stored in the srcdir + alongside accepted comments, but with a `.\_comment\_pending` extension. + This allows easier byhand moderation, as the "\_pending" need + only be stripped off and the comment be committed to version control. + * The `comment\_pending()` pagespec can be used to match such unmoderated + comments, which makes it easy to add a feed of them, or a counter + indicating how many there are. + * Belatedly added a `comment()` pagespec. + * Gave comment and page editing forms some CSS and accessability love. + * Renamed postscan hook to indexhtml, to reflect its changed position, + and typical use. + * inline: Call indexhtml when inlining internal pages, so their + text can be indexed for searching. + * Delete hooks are passed deleted internal pages. + * openid: Incorporated a fancy openid-selector signin form. + (Based on http://code.google.com/p/openid-selector/) + * openid: Use "openid\_identifier" as the form field, as required + by OpenID Authentication v2.0 spec. + * Removed the openidsignup option. Instead, my recommendation is to + leave passwordauth enabled and let people who don't have an openid use it. + The openid selector form avoids the UI annoyance of having both openid + and passwordauth on one form. + * calendar: Allow negative month to be specified. -1 is last month, etc. + (And also negative years.) + * calendar: Display year in title of month calendar. + * Use xhtml friendly pubdate setting. + * remove, rename: Add guards against XSRF attacks."""]] \ No newline at end of file -- cgit v1.2.3 From 3d43768b52e0f435333a46fbbe948be9ef0ccd06 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 23:41:59 -0400 Subject: formatting --- doc/news/version_3.20100515.mdwn | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/doc/news/version_3.20100515.mdwn b/doc/news/version_3.20100515.mdwn index de7145c8d..172b45521 100644 --- a/doc/news/version_3.20100515.mdwn +++ b/doc/news/version_3.20100515.mdwn @@ -2,18 +2,22 @@ News for ikiwiki 3.20100515: There are two significant changes to the page.tmpl template in this version. If you have a locally modified version of that template, you will need to - update it at least to contain the following in the HTML <head>: - <TMPL\_IF DYNAMIC> - <TMPL\_IF FORCEBASEURL><base href="<TMPL\_VAR FORCEBASEURL>" /><TMPL\_ELSE> - <TMPL\_IF BASEURL><base href="<TMPL\_VAR BASEURL>" /></TMPL\_IF> - </TMPL\_IF> - </TMPL\_IF> - Also, the footer should be wrapped in <TMPL\_UNLESS DYNAMIC> ... </TMPL\_UNLESS> + update it at least to contain the following in the HTML ``: + + + + + + + + Also, the footer should be wrapped in ` ... + There is a new "comment()" pagespec, that can be used to match a comment on a page. It is recommended it be used instead of the old method of using a pagespec such as "internal(comment\_*)" to match things that looked like comments. The old pagespec will now also match comments that are held for moderation; likely not what you want. + There have also been some changes to the style.css in this version, particularly to support the new openid selector. If you have a modified version, of style.css, updating it (or moving it to local.css) is @@ -51,4 +55,4 @@ ikiwiki 3.20100515 released with [[!toggle text="these changes"]] (And also negative years.) * calendar: Display year in title of month calendar. * Use xhtml friendly pubdate setting. - * remove, rename: Add guards against XSRF attacks."""]] \ No newline at end of file + * remove, rename: Add guards against XSRF attacks."""]] -- cgit v1.2.3 From 1e36ed1fe8cc4dd79a9b1831aec9690769952d92 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 23:43:55 -0400 Subject: formatting --- doc/news/version_3.20100515.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/news/version_3.20100515.mdwn b/doc/news/version_3.20100515.mdwn index 172b45521..0405f0f3d 100644 --- a/doc/news/version_3.20100515.mdwn +++ b/doc/news/version_3.20100515.mdwn @@ -10,7 +10,7 @@ News for ikiwiki 3.20100515: - Also, the footer should be wrapped in ` ... + Also, the footer should be wrapped in ` ... ` There is a new "comment()" pagespec, that can be used to match a comment on a page. It is recommended it be used instead of the old -- cgit v1.2.3 From cf7c47dea3c97c4e674087f890754339163f7792 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 23:44:54 -0400 Subject: formatting --- doc/news/version_3.20100515.mdwn | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/news/version_3.20100515.mdwn b/doc/news/version_3.20100515.mdwn index 0405f0f3d..7eafa0be0 100644 --- a/doc/news/version_3.20100515.mdwn +++ b/doc/news/version_3.20100515.mdwn @@ -30,10 +30,10 @@ ikiwiki 3.20100515 released with [[!toggle text="these changes"]] * If you have a locally customised page.tmpl, it needs to be updated to set <base> when BASEURL or FORCEBAREURL is set. * comments: Comments pending moderation are now stored in the srcdir - alongside accepted comments, but with a `.\_comment\_pending` extension. + alongside accepted comments, but with a `._comment_pending` extension. This allows easier byhand moderation, as the "\_pending" need only be stripped off and the comment be committed to version control. - * The `comment\_pending()` pagespec can be used to match such unmoderated + * The `comment_pending()` pagespec can be used to match such unmoderated comments, which makes it easy to add a feed of them, or a counter indicating how many there are. * Belatedly added a `comment()` pagespec. @@ -44,7 +44,7 @@ ikiwiki 3.20100515 released with [[!toggle text="these changes"]] text can be indexed for searching. * Delete hooks are passed deleted internal pages. * openid: Incorporated a fancy openid-selector signin form. - (Based on http://code.google.com/p/openid-selector/) + (Based on ) * openid: Use "openid\_identifier" as the form field, as required by OpenID Authentication v2.0 spec. * Removed the openidsignup option. Instead, my recommendation is to -- cgit v1.2.3 From 595a783e56cc9bbade002baeff95c0e60d6b3572 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 23:47:55 -0400 Subject: fixup pagespecs to work relative too --- doc/examples/blog/comments.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/examples/blog/comments.mdwn b/doc/examples/blog/comments.mdwn index f600ae183..f59b44390 100644 --- a/doc/examples/blog/comments.mdwn +++ b/doc/examples/blog/comments.mdwn @@ -1,8 +1,8 @@ [[!sidebar content=""" -[[!inline pages="comment_pending(/posts/*)" feedfile=pendingmoderation +[[!inline pages="comment_pending(./posts/*)" feedfile=pendingmoderation description="comments pending moderation" show=-1]] Comments in the moderation queue: -[[!pagecount pages="comment_pending(/posts/*)"]] +[[!pagecount pages="comment_pending(./posts/*)"]] """]] Recent comments on posts in the [[blog|index]]: -- cgit v1.2.3 From 8e77dc1c9cda0777158b12025d6123452e090765 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 15 May 2010 23:54:00 -0400 Subject: fix typo --- IkiWiki/Plugin/sidebar.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/sidebar.pm b/IkiWiki/Plugin/sidebar.pm index 0350f2b71..2d495db2c 100644 --- a/IkiWiki/Plugin/sidebar.pm +++ b/IkiWiki/Plugin/sidebar.pm @@ -22,7 +22,7 @@ sub getsetup () { }, global_sidebars => { type => "boolean", - examples => 1, + example => 1, description => "show sidebar page on all pages?", safe => 1, rebuild => 1, -- cgit v1.2.3 From ffcd2da8274b44663207bb866007ee3bc8d8a15f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 16 May 2010 00:03:35 -0400 Subject: page.tmpl: Accidentially broke po plugin's otherlanguages list styling when modifying for html5; now fixed. --- debian/changelog | 7 +++++++ templates/page.tmpl | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 50b1fddff..918970a3c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +ikiwiki (3.20100516) UNRELEASED; urgency=low + + * page.tmpl: Accidentially broke po plugin's otherlanguages list styling + when modifying for html5; now fixed. + + -- Joey Hess Sun, 16 May 2010 00:03:06 -0400 + ikiwiki (3.20100515) unstable; urgency=low * Removed misc.tmpl. Now to theme ikiwiki, you only need to customise diff --git a/templates/page.tmpl b/templates/page.tmpl index f7944e40e..235b693fe 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -88,7 +88,7 @@ -