From 0be7aad67df45beb6b2fbbe82d52a05c8f2a925e Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 28 Jan 2008 06:16:56 +0100 Subject: Initial work adding support for Bazaar. --- IkiWiki/Rcs/bazaar.pm | 178 ++++++++++++++++++++++++++++++++++++++++++++++++++ t/bazaar.t | 62 ++++++++++++++++++ 2 files changed, 240 insertions(+) create mode 100644 IkiWiki/Rcs/bazaar.pm create mode 100755 t/bazaar.t diff --git a/IkiWiki/Rcs/bazaar.pm b/IkiWiki/Rcs/bazaar.pm new file mode 100644 index 000000000..21821586b --- /dev/null +++ b/IkiWiki/Rcs/bazaar.pm @@ -0,0 +1,178 @@ +#!/usr/bin/perl + +use warnings; +use strict; +use IkiWiki; +use Encode; +use open qw{:utf8 :std}; + +package IkiWiki; + +sub bazaar_log($) { + my $out = shift; + my @infos; + + while (<$out>) { + my $line = $_; + my ($key, $value); + + if (/^description:/) { + $key = "description"; + $value = ""; + + # slurp everything as the description text + # until the next changeset + while (<$out>) { + if (/^changeset: /) { + $line = $_; + last; + } + + $value .= $_; + } + + local $/ = ""; + chomp $value; + $infos[$#infos]{$key} = $value; + } + + chomp $line; + ($key, $value) = split /: +/, $line, 2; + + if ($key eq "changeset") { + push @infos, {}; + + # remove the revision index, which is strictly + # local to the repository + $value =~ s/^\d+://; + } + + $infos[$#infos]{$key} = $value; + } + close $out; + + return @infos; +} + +sub rcs_update () { #{{{ + my @cmdline = ("bzr", "$config{srcdir}", "update"); + if (system(@cmdline) != 0) { + warn "'@cmdline' failed: $!"; + } +} #}}} + +sub rcs_prepedit ($) { #{{{ + return ""; +} #}}} + +sub rcs_commit ($$$;$$) { #{{{ + my ($file, $message, $rcstoken, $user, $ipaddr) = @_; + + if (defined $user) { + $user = possibly_foolish_untaint($user); + } + elsif (defined $ipaddr) { + $user = "Anonymous from ".possibly_foolish_untaint($ipaddr); + } + else { + $user = "Anonymous"; + } + + $message = possibly_foolish_untaint($message); + if (! length $message) { + $message = "no message given"; + } + + my @cmdline = ("bzr", "commit", + "-m", $message, "--author", $user, $config{srcdir}); + if (system(@cmdline) != 0) { + warn "'@cmdline' failed: $!"; + } + + return undef; # success +} #}}} + +sub rcs_add ($) { # {{{ + my ($file) = @_; + + my @cmdline = ("bzr", "add", "$config{srcdir}/$file"); + if (system(@cmdline) != 0) { + warn "'@cmdline' failed: $!"; + } +} #}}} + +sub rcs_recentchanges ($) { #{{{ + my ($num) = @_; + + eval q{use CGI 'escapeHTML'}; + error($@) if $@; + + my @cmdline = ("bzr", "log", "-v", "--limit", $num, $config{srcdir}); + open (my $out, "@cmdline |"); + + eval q{use Date::Parse}; + error($@) if $@; + + my @ret; + foreach my $info (bazaar_log($out)) { + my @pages = (); + my @message = (); + + foreach my $msgline (split(/\n/, $info->{description})) { + push @message, { line => $msgline }; + } + + foreach my $file (split / /,$info->{files}) { + my $diffurl = $config{'diffurl'}; + $diffurl =~ s/\[\[file\]\]/$file/go; + $diffurl =~ s/\[\[r2\]\]/$info->{changeset}/go; + + push @pages, { + page => pagename($file), + diffurl => $diffurl, + }; + } + + my $user = $info->{"user"}; + $user =~ s/\s*<.*>\s*$//; + $user =~ s/^\s*//; + + push @ret, { + rev => $info->{"changeset"}, + user => $user, + committype => "bazaar", + when => time - str2time($info->{"date"}), + message => [@message], + pages => [@pages], + }; + } + + return @ret; +} #}}} + +sub rcs_notify () { #{{{ + # TODO +} #}}} + +sub rcs_getctime ($) { #{{{ + my ($file) = @_; + + # XXX filename passes through the shell here, should try to avoid + # that just in case + my @cmdline = ("bzr", "log", "-v", "--limit", '1', "$config{srcdir}/$file"); + open (my $out, "@cmdline |"); + + my @log = bazaar_log($out); + + if (length @log < 1) { + return 0; + } + + eval q{use Date::Parse}; + error($@) if $@; + + my $ctime = str2time($log[0]->{"date"}); + return $ctime; +} #}}} + +1 diff --git a/t/bazaar.t b/t/bazaar.t new file mode 100755 index 000000000..67a15875f --- /dev/null +++ b/t/bazaar.t @@ -0,0 +1,62 @@ +#!/usr/bin/perl +use warnings; +use strict; +my $dir; +BEGIN { + $dir = "/tmp/ikiwiki-test-bzr.$$"; + my $bzr=`which bzr`; + chomp $bzr; + if (! -x $bzr || ! mkdir($dir)) { + eval q{ + use Test::More skip_all => "bzr not available or could not make test dir" + } + } +} +use Test::More tests => 11; + +BEGIN { use_ok("IkiWiki"); } + +%config=IkiWiki::defaultconfig(); +$config{rcs} = "bazaar"; +$config{srcdir} = "$dir/repo"; +IkiWiki::checkconfig(); + +system "bzr init $config{srcdir}"; + +# Web commit +my $test1 = readfile("t/test1.mdwn"); +writefile('test1.mdwn', $config{srcdir}, $test1); +IkiWiki::rcs_add("test1.mdwn"); +IkiWiki::rcs_commit("test1.mdwn", "Added the first page", "moo", "Joe User"); + +my @changes; +@changes = IkiWiki::rcs_recentchanges(3); + +is($#changes, 0); +is($changes[0]{message}[0]{"line"}, "Added the first page"); +is($changes[0]{pages}[0]{"page"}, "test1.mdwn"); +is($changes[0]{user}, "Joe User"); + +# Manual commit +my $username = "Foo Bar"; +my $user = "$username "; +my $message = "Added the second page"; + +my $test2 = readfile("t/test2.mdwn"); +writefile('test2.mdwn', $config{srcdir}, $test2); +system "bzr add -R $config{srcdir} $config{srcdir}/test2.mdwn"; +system "bzr commit -R $config{srcdir} -u \"$user\" -m \"$message\" -d \"0 0\""; + +@changes = IkiWiki::rcs_recentchanges(3); + +is($#changes, 1); +is($changes[0]{message}[0]{"line"}, $message); +is($changes[0]{user}, $username); +is($changes[0]{pages}[0]{"page"}, "test2.mdwn"); + +is($changes[1]{pages}[0]{"page"}, "test1.mdwn"); + +my $ctime = IkiWiki::rcs_getctime("test2.mdwn"); +is($ctime, 0); + +system "rm -rf $dir"; -- cgit v1.2.3 From d3f91f37ff3e7d043f06706297f78c8e5bc20693 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 28 Jan 2008 07:30:37 +0100 Subject: Finish bazaar backend and make the remaining test pass. --- IkiWiki/Rcs/bazaar.pm | 69 ++++++++++++++++++++------------------------------- t/bazaar.t | 6 ++--- 2 files changed, 30 insertions(+), 45 deletions(-) diff --git a/IkiWiki/Rcs/bazaar.pm b/IkiWiki/Rcs/bazaar.pm index 21821586b..80aba6a45 100644 --- a/IkiWiki/Rcs/bazaar.pm +++ b/IkiWiki/Rcs/bazaar.pm @@ -10,44 +10,28 @@ package IkiWiki; sub bazaar_log($) { my $out = shift; - my @infos; + my @infos = (); + my $key = undef; while (<$out>) { my $line = $_; - my ($key, $value); - - if (/^description:/) { - $key = "description"; - $value = ""; - - # slurp everything as the description text - # until the next changeset - while (<$out>) { - if (/^changeset: /) { - $line = $_; - last; - } - - $value .= $_; - } - - local $/ = ""; - chomp $value; + my ($value); + if ($line =~ /^message:/) { + $key = "message"; + $infos[$#infos]{$key} = ""; + } elsif ($line =~ /^(modified|added|renamed|renamed and modified|removed):/) { + $key = "files"; + unless (defined($infos[$#infos]{$key})) { $infos[$#infos]{$key} = ""; } + } elsif (defined($key) and $line =~ /^ (.*)/) { + $infos[$#infos]{$key} .= $1; + } elsif ($line eq "------------------------------------------------------------\n") { + $key = undef; + push (@infos, {}); + } else { + chomp $line; + ($key, $value) = split /: +/, $line, 2; $infos[$#infos]{$key} = $value; - } - - chomp $line; - ($key, $value) = split /: +/, $line, 2; - - if ($key eq "changeset") { - push @infos, {}; - - # remove the revision index, which is strictly - # local to the repository - $value =~ s/^\d+://; - } - - $infos[$#infos]{$key} = $value; + } } close $out; @@ -118,14 +102,14 @@ sub rcs_recentchanges ($) { #{{{ my @pages = (); my @message = (); - foreach my $msgline (split(/\n/, $info->{description})) { + foreach my $msgline (split(/\n/, $info->{message})) { push @message, { line => $msgline }; } - foreach my $file (split / /,$info->{files}) { + foreach my $file (split(/\n/, $info->{files})) { my $diffurl = $config{'diffurl'}; $diffurl =~ s/\[\[file\]\]/$file/go; - $diffurl =~ s/\[\[r2\]\]/$info->{changeset}/go; + $diffurl =~ s/\[\[r2\]\]/$info->{revno}/go; push @pages, { page => pagename($file), @@ -133,15 +117,16 @@ sub rcs_recentchanges ($) { #{{{ }; } - my $user = $info->{"user"}; + my $user = $info->{"committer"}; + if (defined($info->{"author"})) { $user = $info->{"author"}; } $user =~ s/\s*<.*>\s*$//; $user =~ s/^\s*//; push @ret, { - rev => $info->{"changeset"}, + rev => $info->{"revno"}, user => $user, committype => "bazaar", - when => time - str2time($info->{"date"}), + when => time - str2time($info->{"timestamp"}), message => [@message], pages => [@pages], }; @@ -159,7 +144,7 @@ sub rcs_getctime ($) { #{{{ # XXX filename passes through the shell here, should try to avoid # that just in case - my @cmdline = ("bzr", "log", "-v", "--limit", '1', "$config{srcdir}/$file"); + my @cmdline = ("bzr", "log", "--limit", '1', "$config{srcdir}/$file"); open (my $out, "@cmdline |"); my @log = bazaar_log($out); @@ -171,7 +156,7 @@ sub rcs_getctime ($) { #{{{ eval q{use Date::Parse}; error($@) if $@; - my $ctime = str2time($log[0]->{"date"}); + my $ctime = str2time($log[0]->{"timestamp"}); return $ctime; } #}}} diff --git a/t/bazaar.t b/t/bazaar.t index 67a15875f..75534682b 100755 --- a/t/bazaar.t +++ b/t/bazaar.t @@ -44,8 +44,8 @@ my $message = "Added the second page"; my $test2 = readfile("t/test2.mdwn"); writefile('test2.mdwn', $config{srcdir}, $test2); -system "bzr add -R $config{srcdir} $config{srcdir}/test2.mdwn"; -system "bzr commit -R $config{srcdir} -u \"$user\" -m \"$message\" -d \"0 0\""; +system "bzr add $config{srcdir}/test2.mdwn"; +system "bzr commit --author \"$user\" -m \"$message\" $config{srcdir}"; @changes = IkiWiki::rcs_recentchanges(3); @@ -57,6 +57,6 @@ is($changes[0]{pages}[0]{"page"}, "test2.mdwn"); is($changes[1]{pages}[0]{"page"}, "test1.mdwn"); my $ctime = IkiWiki::rcs_getctime("test2.mdwn"); -is($ctime, 0); +ok($ctime >= time() - 20); system "rm -rf $dir"; -- cgit v1.2.3 From f2d559df32387ca41b707184ab18e060098fe455 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 28 Jan 2008 07:31:05 +0100 Subject: Add optional dependency on bzr. --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 923488609..01afa608c 100644 --- a/debian/control +++ b/debian/control @@ -13,7 +13,7 @@ Vcs-Browser: http://git.ikiwiki.info/?p=ikiwiki Package: ikiwiki Architecture: all Depends: ${perl:Depends}, markdown, libhtml-template-perl, libhtml-parser-perl, liburi-perl -Recommends: gcc | c-compiler, libc6-dev | libc-dev, subversion | git-core | tla | mercurial, libxml-simple-perl, libnet-openid-consumer-perl, liblwpx-paranoidagent-perl, libtimedate-perl, libhtml-scrubber-perl, libcgi-formbuilder-perl (>= 3.05), libtime-duration-perl, libcgi-session-perl (>= 4.14-1), libmail-sendmail-perl +Recommends: gcc | c-compiler, libc6-dev | libc-dev, subversion | git-core | tla | bzr | mercurial, libxml-simple-perl, libnet-openid-consumer-perl, liblwpx-paranoidagent-perl, libtimedate-perl, libhtml-scrubber-perl, libcgi-formbuilder-perl (>= 3.05), libtime-duration-perl, libcgi-session-perl (>= 4.14-1), libmail-sendmail-perl Suggests: viewvc | gitweb | viewcvs, hyperestraier, librpc-xml-perl, libtext-wikiformat-perl, python, python-docutils, polygen, tidy, libxml-feed-perl, libmailtools-perl, perlmagick, libfile-mimeinfo-perl, libcrypt-ssleay-perl, liblocale-gettext-perl (>= 1.05-1), libtext-typography-perl, libtext-csv-perl, libdigest-sha1-perl, graphviz Conflicts: ikiwiki-plugin-table Replaces: ikiwiki-plugin-table -- cgit v1.2.3 From 05d06e77c68812b034f0910d108ae4f2b580333b Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Mon, 28 Jan 2008 00:30:43 -0800 Subject: Word-wrap post-commit page --- doc/post-commit.mdwn | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/post-commit.mdwn b/doc/post-commit.mdwn index 18eae1735..1c5176d42 100644 --- a/doc/post-commit.mdwn +++ b/doc/post-commit.mdwn @@ -1,7 +1,8 @@ If your wiki is kept in [[revision_control|rcs]], a post-commit hook is run every time you commit a change to your repository. -ikiwiki generates the "post-commit hook" once you've uncommented the relevant section (under wrappers) in the ikiwiki.setup. +ikiwiki generates the "post-commit hook" once you've uncommented the relevant +section (under wrappers) in the ikiwiki.setup. The generated wrapper is a C program that is designed to safely be made suid if necessary. It's hardcoded to run ikiwiki with the settings @@ -14,4 +15,5 @@ your wiki checkout and html directory. If so, you can safely make the wrapper suid to a user who can write there (*not* to root!). You might want to read [[Security]] first. -[[Setup]] explains setting this up from the start and see [[rcs/details]] to know more. +[[Setup]] explains setting this up from the start and see [[rcs/details]] to +know more. -- cgit v1.2.3 From bbf29faf3766be349bb8c3132cb5f65db77c6703 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 10:18:04 -0500 Subject: web commit by jelmer --- doc/todo/bzr.mdwn | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/todo/bzr.mdwn b/doc/todo/bzr.mdwn index dbe35245c..9650b9da8 100644 --- a/doc/todo/bzr.mdwn +++ b/doc/todo/bzr.mdwn @@ -183,4 +183,8 @@ and rcs_getctime and rcs_notify aren't written at all. --[[bma]] >>> It's new (in fact I'm not even sure that it made it in to 0.90, it might be in 0.91 due >>> in a couple of weeks. ->>> I was just noting it for a future enhancement. --[[JamesWestby]] \ No newline at end of file +>>> I was just noting it for a future enhancement. --[[JamesWestby]] + +> I've just posted another patch with support for bzr, including support for +> --author and a testsuite to git://git.samba.org/jelmer/ikiwiki.git. I hadn't +> seen this page earlier. --[[jelmer]] -- cgit v1.2.3 From 52b16186c407188f27d01e86cd5c985168d976b6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 17:33:22 -0500 Subject: update comment This is not only called from post-update in all configurations. Also, the comment was innaccurate about what the post-update hook is passed. --- IkiWiki/Rcs/git.pm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/IkiWiki/Rcs/git.pm b/IkiWiki/Rcs/git.pm index fea1c11eb..b538c524f 100644 --- a/IkiWiki/Rcs/git.pm +++ b/IkiWiki/Rcs/git.pm @@ -424,14 +424,15 @@ sub rcs_recentchanges ($) { #{{{ sub rcs_notify () { #{{{ # Send notification mail to subscribed users. # + # This is typically run as the post-update hook, though some setups + # may run it from the post-commit hook too. + # # In usual Git usage, hooks/update script is presumed to send # notification mails (see git-receive-pack(1)). But we prefer # hooks/post-update to support IkiWiki commits coming from a # cloned repository (through command line) because post-update # is called _after_ each ref in repository is updated (update - # hook is called _before_ the repository is updated). Since - # post-update hook does not accept command line arguments, we - # don't have an $ENV variable in this function. + # hook is called _before_ the repository is updated). # # Here, we rely on a simple fact: we can extract all parts of the # notification content by parsing the "HEAD" commit (which also -- cgit v1.2.3 From df32ad11399852a22e18c76a31d9991f79c42ca2 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 17:36:36 -0500 Subject: really fix comment It doesn't really make sense to do notification from a post-commit hook. --- IkiWiki/Rcs/git.pm | 3 --- 1 file changed, 3 deletions(-) diff --git a/IkiWiki/Rcs/git.pm b/IkiWiki/Rcs/git.pm index b538c524f..f4b8eff58 100644 --- a/IkiWiki/Rcs/git.pm +++ b/IkiWiki/Rcs/git.pm @@ -424,9 +424,6 @@ sub rcs_recentchanges ($) { #{{{ sub rcs_notify () { #{{{ # Send notification mail to subscribed users. # - # This is typically run as the post-update hook, though some setups - # may run it from the post-commit hook too. - # # In usual Git usage, hooks/update script is presumed to send # notification mails (see git-receive-pack(1)). But we prefer # hooks/post-update to support IkiWiki commits coming from a -- cgit v1.2.3 From 84d3856512172b261b06c0220ac405d92655b713 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 17:41:02 -0500 Subject: test1 --- IkiWiki/Rcs/git.pm | 3 +-- doc/sandbox.mdwn | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Rcs/git.pm b/IkiWiki/Rcs/git.pm index f4b8eff58..98c9a5eae 100644 --- a/IkiWiki/Rcs/git.pm +++ b/IkiWiki/Rcs/git.pm @@ -432,8 +432,7 @@ sub rcs_notify () { #{{{ # hook is called _before_ the repository is updated). # # Here, we rely on a simple fact: we can extract all parts of the - # notification content by parsing the "HEAD" commit (which also - # triggers a refresh of IkiWiki pages). + # notification content by parsing the "HEAD" commit. my $ci = git_commit_info('HEAD'); return if !defined $ci; diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 84175d68c..83d3fac77 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -1,5 +1,7 @@ This is the SandBox, a page anyone can edit to try out this fab ikiwiki. +foo + # Table of Contents testhead sandbox -- cgit v1.2.3 From 3705d5d4dc49b5e341ffeb79a26c819a67f85023 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 17:41:06 -0500 Subject: test2 --- doc/sandbox.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 83d3fac77..1881c984d 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -2,6 +2,7 @@ This is the SandBox, a page anyone can edit to try out this fab ikiwiki. foo +bar # Table of Contents testhead sandbox -- cgit v1.2.3 From e98ce82daf0c68f1494f231bd86d0129f86ee3e6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 17:46:49 -0500 Subject: test3 --- doc/sandbox.mdwn | 3 --- 1 file changed, 3 deletions(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 1881c984d..84175d68c 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -1,8 +1,5 @@ This is the SandBox, a page anyone can edit to try out this fab ikiwiki. -foo - -bar # Table of Contents testhead sandbox -- cgit v1.2.3 From 68a9345b5c17fe007373c567666a25e6dc5544fa Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 17:49:18 -0500 Subject: test 4 --- doc/sandbox.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 84175d68c..83d3fac77 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -1,5 +1,7 @@ This is the SandBox, a page anyone can edit to try out this fab ikiwiki. +foo + # Table of Contents testhead sandbox -- cgit v1.2.3 From 2ad1850a5a90b6768f5bc6ab1627d2f2136cd13a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 17:49:30 -0500 Subject: test 5 --- doc/sandbox.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 83d3fac77..e41e00c77 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -2,6 +2,8 @@ This is the SandBox, a page anyone can edit to try out this fab ikiwiki. foo +bar + # Table of Contents testhead sandbox -- cgit v1.2.3 From f7b86d8177efbe90b49acb93ae1f056714dc0851 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 17:55:58 -0500 Subject: pushing two commits in at once leads to a related problem --- doc/bugs/git_mail_notification_race.mdwn | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/bugs/git_mail_notification_race.mdwn b/doc/bugs/git_mail_notification_race.mdwn index ebe158fb9..eddc0181e 100644 --- a/doc/bugs/git_mail_notification_race.mdwn +++ b/doc/bugs/git_mail_notification_race.mdwn @@ -4,7 +4,7 @@ I was suprised to receive two mails from ikiwiki about one web edit: 1 F Oct 30 To joey+ikiwiki update of ikiwiki's plugins/contrib/gallery.mdwn by http://arpitjain11.myopenid.com/ The first of these had the correct diff for the changes made by the web - edit (00259020061577316895370ee04cf00b634db98a). +edit (00259020061577316895370ee04cf00b634db98a). But the second had a diff for modifications I made to ikiwiki code around the same time (2a6e353c205a6c2c8b8e2eaf85fe9c585c1af0cd). @@ -38,3 +38,9 @@ diff for the first commit. Ikiwiki's own locking prevents this from happenning if both commits are web edits. At least one of the two commits has to be a non-web commit. + +---- + +A related problem is that if two commits are made separately but then +pushed in together, the commit code only looks at the HEAD commit, which +is the second one. No notification is sent for the first. -- cgit v1.2.3 From 161947160b60ae6d6e578d712546f7c73d8bdf1c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 18:01:51 -0500 Subject: remove extraneous quoting --- IkiWiki/Rcs/git.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Rcs/git.pm b/IkiWiki/Rcs/git.pm index 98c9a5eae..80ffdced2 100644 --- a/IkiWiki/Rcs/git.pm +++ b/IkiWiki/Rcs/git.pm @@ -441,7 +441,7 @@ sub rcs_notify () { #{{{ my ($user, $message); if (@{ $ci->{'comment'} }[0] =~ m/$config{web_commit_regexp}/) { - $user = defined $2 ? "$2" : "$3"; + $user = defined $2 ? $2 : $3; $message = $4; } else { -- cgit v1.2.3 From ad6d22f237294422bb1d76231f60f069fed8b32e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 18:17:31 -0500 Subject: followup --- doc/bugs/git_mail_notification_race.mdwn | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/bugs/git_mail_notification_race.mdwn b/doc/bugs/git_mail_notification_race.mdwn index eddc0181e..3538b0764 100644 --- a/doc/bugs/git_mail_notification_race.mdwn +++ b/doc/bugs/git_mail_notification_race.mdwn @@ -44,3 +44,12 @@ edits. At least one of the two commits has to be a non-web commit. A related problem is that if two commits are made separately but then pushed in together, the commit code only looks at the HEAD commit, which is the second one. No notification is sent for the first. + +---- + +Based on all of these problems with using the post-update hook, ikiwiki +should be changed to use the post-receive hook, which provides enough +information to avoid the assumuptions that led to these problems. +Transitioning existing wikis to using a new hook will be interesting. Also, +this hook is only present in git >= 1.5.0.7. +--[[Joey]] -- cgit v1.2.3 From 37f3cd195f8ba1ac0b3f7ad5efa348f7493cccaa Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 19:11:48 -0500 Subject: web commit by http://xayk.net/ --- doc/sandbox.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index e41e00c77..79fedefcd 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -4,6 +4,8 @@ foo bar +foobar + # Table of Contents testhead sandbox -- cgit v1.2.3 From b11ddb88e608a6dd5e95f95bff2c506674c4fad8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 20:34:11 -0500 Subject: add an id field to the rcs_recentchanges return structure There was an undocumented field named "rev", I think "id" is a better name, and nothing uses it yet. --- IkiWiki/Rcs/Stub.pm | 1 + IkiWiki/Rcs/git.pm | 2 +- IkiWiki/Rcs/mercurial.pm | 2 +- IkiWiki/Rcs/monotone.pm | 2 +- IkiWiki/Rcs/svn.pm | 3 ++- IkiWiki/Rcs/tla.pm | 3 ++- 6 files changed, 8 insertions(+), 5 deletions(-) diff --git a/IkiWiki/Rcs/Stub.pm b/IkiWiki/Rcs/Stub.pm index 19ecfa88d..a979ce3fe 100644 --- a/IkiWiki/Rcs/Stub.pm +++ b/IkiWiki/Rcs/Stub.pm @@ -37,6 +37,7 @@ sub rcs_recentchanges ($) { # Examine the RCS history and generate a list of recent changes. # The data structure returned for each change is: # { + # id => # the RCSs id for this commit # user => # name of user who made the change, # committype => # either "web" or the name of the rcs, # when => # time when the change was made, diff --git a/IkiWiki/Rcs/git.pm b/IkiWiki/Rcs/git.pm index 80ffdced2..9640acfbe 100644 --- a/IkiWiki/Rcs/git.pm +++ b/IkiWiki/Rcs/git.pm @@ -407,7 +407,7 @@ sub rcs_recentchanges ($) { #{{{ } push @rets, { - rev => $sha1, + id => $sha1, user => $user, committype => $type, when => $when, diff --git a/IkiWiki/Rcs/mercurial.pm b/IkiWiki/Rcs/mercurial.pm index 15edb3245..e5258b111 100644 --- a/IkiWiki/Rcs/mercurial.pm +++ b/IkiWiki/Rcs/mercurial.pm @@ -139,7 +139,7 @@ sub rcs_recentchanges ($) { #{{{ $user =~ s/^\s*//; push @ret, { - rev => $info->{"changeset"}, + id => $info->{"changeset"}, user => $user, committype => "mercurial", when => time - str2time($info->{"date"}), diff --git a/IkiWiki/Rcs/monotone.pm b/IkiWiki/Rcs/monotone.pm index 5717e0043..e0f2e046a 100644 --- a/IkiWiki/Rcs/monotone.pm +++ b/IkiWiki/Rcs/monotone.pm @@ -438,7 +438,7 @@ sub rcs_recentchanges ($) { #{{{ } push @ret, { - rev => $rev, + id => $rev, user => $user, committype => $committype, when => $when, diff --git a/IkiWiki/Rcs/svn.pm b/IkiWiki/Rcs/svn.pm index 987469ba0..a32b0a840 100644 --- a/IkiWiki/Rcs/svn.pm +++ b/IkiWiki/Rcs/svn.pm @@ -203,7 +203,8 @@ sub rcs_recentchanges ($) { #{{{ diffurl => $diffurl, } if length $file; } - push @ret, { rev => $rev, + push @ret, { + id => $rev, user => $user, committype => $committype, when => $when, diff --git a/IkiWiki/Rcs/tla.pm b/IkiWiki/Rcs/tla.pm index 1dbc006c1..5275500c3 100644 --- a/IkiWiki/Rcs/tla.pm +++ b/IkiWiki/Rcs/tla.pm @@ -145,7 +145,8 @@ sub rcs_recentchanges ($) { diffurl => $diffurl, } if length $file; } - push @ret, { rev => $change, + push @ret, { + id => $change, user => $user, committype => $committype, when => $when, -- cgit v1.2.3 From b810552073dce30af9e64821126d254b5b302e4d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 20:51:37 -0500 Subject: redesigning recentchanges --- doc/todo/recentchanges.mdwn | 57 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/doc/todo/recentchanges.mdwn b/doc/todo/recentchanges.mdwn index d46c0d9a8..bdd7948e4 100644 --- a/doc/todo/recentchanges.mdwn +++ b/doc/todo/recentchanges.mdwn @@ -86,3 +86,60 @@ your pages. --Ethan > backend. > > -- CharlesMauch + +---- + +Here's a full design for redoing recentchanges, based on Ethan's ideas: + +* Add a recentchanges plugin that has a preprocessor directive: + \[[recentchanges num=100 pages=* template=recentchanges.tmpl]] + If put on the [[recentchanges]] page, this would result in up to 100 + recentchanges/change_$id.mdwn files being created. +* Which means the plugin has to store state and use a checkconfig hook + or the like to create the requested pages (and delete old ones) when + the wiki is rebuilt and when the post_commit hook is run. +* Then it's a simple matter of using inline on the recentchanges page + to display the changes. (With a special template to display nicely.) +* Rss/atom comes for free.. +* So drop mail notifications. +* If someone wants to subscribe to notifications for only a subset + of pages, they can either filter the recentchanges in their rss + aggregator, or they can set up their own page that uses the recentchanges + directive for only the pages they want. +* The `rcs_notify` functions will be removed. +* `rcs_getchange` is passed a change id (as returned from rcs_recentchanges) + and a partially filled out HTML::Template and fills out the remainer of the + template. So if a template is used that includes diffs, it will need to run + some expensive diffing operation, wikis with less resources can use a + template that doesn't include diffs and avoid that overhead. +* So to update the changes files, just call `rcs_recentchanges`, create + files for each new id, and delete files for each id that is no longer + included. +* The cgi support for recentchanges can be dropped, or moved to a different + plugin. + +I'm unsure how fast this will all be, but by using regular pages, there's +cacheing, at least. The main slowdown might turn out to be the inlining and +not the generation of the changes pages. The current cgi recentchanges +code saves a tenth of a second or so by memoizing htmllink, an optimisation +that won't be available when using the more general inlining code. + +An obvious optimisation, and one implied by this design, is that each change +file is only written once. This assumes that the data in them doesn't ever +change, which actually isn't true (svn commit messages can be changed), but +is probably close enough to true for our purposes. + +Another optimisation would be to htmlize the change files when they're +written out -- avoids re-rendering a given file each time a new change is +made (thus doing 1/100th the work). + +Links in the change files to the changed pages will need special handling. +These links should not generate backlinks. They probably shouldn't be +implemented as wikiliks at all. Instead, they should be raw, absolute +html links to the pages that were changed. + +Only problem with this approach is that the links break if the changed +page later gets deleted. I think that's acceptable. It could link to +`ikiwiki.cgi?do=redir&page=foo`, but that's probably overkill. + +--[[Joey]] -- cgit v1.2.3 From 3436fed08169893953fef6858f7645437f39d1b0 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 21:22:04 -0500 Subject: * inline: The template can check for FIRST and LAST, which will be set for the first and last inlined page. Useful for templates that build tables and the like. --- IkiWiki/Plugin/inline.pm | 2 ++ debian/changelog | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 59eabb606..796cf2cf6 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -231,6 +231,8 @@ sub preprocess_inline (@) { #{{{ $template->param(pageurl => urlto(bestlink($params{page}, $page), $params{destpage})); $template->param(title => pagetitle(basename($page))); $template->param(ctime => displaytime($pagectime{$page}, $params{timeformat})); + $template->param(first => 1) if $page eq $list[0]; + $template->param(last => 1) if $page eq $list[$#list]; if ($actions) { my $file = $pagesources{$page}; diff --git a/debian/changelog b/debian/changelog index 50196b077..6af99590d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -15,6 +15,11 @@ ikiwiki (2.21) UNRELEASED; urgency=low * Add trailing comma to commented-out umask in sample ikiwiki.setup, so that uncommenting it does not break the setup file. + [ Joey Hess ] + * inline: The template can check for FIRST and LAST, which will be + set for the first and last inlined page. Useful for templates that build + tables and the like. + -- Joey Hess Fri, 11 Jan 2008 15:09:37 -0500 ikiwiki (2.20) unstable; urgency=low -- cgit v1.2.3 From e30b96babacb6ac48e571105c9f0627f68cf3bca Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 21:23:56 -0500 Subject: figured out how rev is used.. --- IkiWiki/Rcs/Stub.pm | 2 +- IkiWiki/Rcs/git.pm | 2 +- IkiWiki/Rcs/mercurial.pm | 2 +- IkiWiki/Rcs/monotone.pm | 2 +- IkiWiki/Rcs/svn.pm | 2 +- IkiWiki/Rcs/tla.pm | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/IkiWiki/Rcs/Stub.pm b/IkiWiki/Rcs/Stub.pm index a979ce3fe..ab80a9a47 100644 --- a/IkiWiki/Rcs/Stub.pm +++ b/IkiWiki/Rcs/Stub.pm @@ -37,7 +37,7 @@ sub rcs_recentchanges ($) { # Examine the RCS history and generate a list of recent changes. # The data structure returned for each change is: # { - # id => # the RCSs id for this commit + # rev => # the RCSs id for this commit # user => # name of user who made the change, # committype => # either "web" or the name of the rcs, # when => # time when the change was made, diff --git a/IkiWiki/Rcs/git.pm b/IkiWiki/Rcs/git.pm index 9640acfbe..80ffdced2 100644 --- a/IkiWiki/Rcs/git.pm +++ b/IkiWiki/Rcs/git.pm @@ -407,7 +407,7 @@ sub rcs_recentchanges ($) { #{{{ } push @rets, { - id => $sha1, + rev => $sha1, user => $user, committype => $type, when => $when, diff --git a/IkiWiki/Rcs/mercurial.pm b/IkiWiki/Rcs/mercurial.pm index e5258b111..15edb3245 100644 --- a/IkiWiki/Rcs/mercurial.pm +++ b/IkiWiki/Rcs/mercurial.pm @@ -139,7 +139,7 @@ sub rcs_recentchanges ($) { #{{{ $user =~ s/^\s*//; push @ret, { - id => $info->{"changeset"}, + rev => $info->{"changeset"}, user => $user, committype => "mercurial", when => time - str2time($info->{"date"}), diff --git a/IkiWiki/Rcs/monotone.pm b/IkiWiki/Rcs/monotone.pm index e0f2e046a..5717e0043 100644 --- a/IkiWiki/Rcs/monotone.pm +++ b/IkiWiki/Rcs/monotone.pm @@ -438,7 +438,7 @@ sub rcs_recentchanges ($) { #{{{ } push @ret, { - id => $rev, + rev => $rev, user => $user, committype => $committype, when => $when, diff --git a/IkiWiki/Rcs/svn.pm b/IkiWiki/Rcs/svn.pm index a32b0a840..002527bdd 100644 --- a/IkiWiki/Rcs/svn.pm +++ b/IkiWiki/Rcs/svn.pm @@ -204,7 +204,7 @@ sub rcs_recentchanges ($) { #{{{ } if length $file; } push @ret, { - id => $rev, + rev => $rev, user => $user, committype => $committype, when => $when, diff --git a/IkiWiki/Rcs/tla.pm b/IkiWiki/Rcs/tla.pm index 5275500c3..ffb6ee521 100644 --- a/IkiWiki/Rcs/tla.pm +++ b/IkiWiki/Rcs/tla.pm @@ -146,7 +146,7 @@ sub rcs_recentchanges ($) { } if length $file; } push @ret, { - id => $change, + rev => $change, user => $user, committype => $committype, when => $when, -- cgit v1.2.3 From ad4f7bc075d95f96ceed7d46ef401e93dceddfd7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 22:47:43 -0500 Subject: remove debug message This can legitimately happen when there's a simple merge. --- IkiWiki/Rcs/git.pm | 2 -- 1 file changed, 2 deletions(-) diff --git a/IkiWiki/Rcs/git.pm b/IkiWiki/Rcs/git.pm index 80ffdced2..271104f3e 100644 --- a/IkiWiki/Rcs/git.pm +++ b/IkiWiki/Rcs/git.pm @@ -247,8 +247,6 @@ sub _parse_diff_tree ($@) { #{{{ last; } - debug("No detail in diff-tree output") if !defined $ci{'details'}; - return \%ci; } #}}} -- cgit v1.2.3 From 0f76f8774d67edcd5a31cfe918ef16819a54ee59 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 22:56:25 -0500 Subject: add --- templates/change.tmpl | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 templates/change.tmpl diff --git a/templates/change.tmpl b/templates/change.tmpl new file mode 100644 index 000000000..af257a7ce --- /dev/null +++ b/templates/change.tmpl @@ -0,0 +1,15 @@ +[[meta title=""" +
+"""]] +[[meta author=""]] + + + + "> + diff + + + + + + -- cgit v1.2.3 From 9f25e3436b2b918845acbd8cf2ff2d358e0ea105 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 22:57:22 -0500 Subject: change rcs_recentchanges when to absolute, not relative, time No point in using a relative time value in rcs_recentchanges. Different consumers of the info want different things. --- IkiWiki/CGI.pm | 2 +- IkiWiki/Rcs/git.pm | 2 +- IkiWiki/Rcs/mercurial.pm | 2 +- IkiWiki/Rcs/monotone.pm | 2 +- IkiWiki/Rcs/svn.pm | 2 +- IkiWiki/Rcs/tla.pm | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 65a1d7fa0..03c448923 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -100,7 +100,7 @@ sub cgi_recentchanges ($) { #{{{ my $changelog=[rcs_recentchanges(100)]; foreach my $change (@$changelog) { - $change->{when} = concise(ago($change->{when})); + $change->{when} = concise(ago(time - $change->{when})); $change->{user} = userlink($change->{user}); diff --git a/IkiWiki/Rcs/git.pm b/IkiWiki/Rcs/git.pm index 271104f3e..f70582136 100644 --- a/IkiWiki/Rcs/git.pm +++ b/IkiWiki/Rcs/git.pm @@ -372,7 +372,7 @@ sub rcs_recentchanges ($) { #{{{ my ($sha1, $when) = ( $ci->{'sha1'}, - time - $ci->{'author_epoch'} + $ci->{'author_epoch'} ); my (@pages, @messages); diff --git a/IkiWiki/Rcs/mercurial.pm b/IkiWiki/Rcs/mercurial.pm index 15edb3245..13a88379c 100644 --- a/IkiWiki/Rcs/mercurial.pm +++ b/IkiWiki/Rcs/mercurial.pm @@ -142,7 +142,7 @@ sub rcs_recentchanges ($) { #{{{ rev => $info->{"changeset"}, user => $user, committype => "mercurial", - when => time - str2time($info->{"date"}), + when => str2time($info->{"date"}), message => [@message], pages => [@pages], }; diff --git a/IkiWiki/Rcs/monotone.pm b/IkiWiki/Rcs/monotone.pm index 5717e0043..b48ac92db 100644 --- a/IkiWiki/Rcs/monotone.pm +++ b/IkiWiki/Rcs/monotone.pm @@ -416,7 +416,7 @@ sub rcs_recentchanges ($) { #{{{ $committype = "monotone"; } } elsif ($cert->{name} eq "date") { - $when = time - str2time($cert->{value}, 'UTC'); + $when = str2time($cert->{value}, 'UTC'); } elsif ($cert->{name} eq "changelog") { my $messageText = $cert->{value}; # split the changelog into multiple diff --git a/IkiWiki/Rcs/svn.pm b/IkiWiki/Rcs/svn.pm index 002527bdd..075f8da5a 100644 --- a/IkiWiki/Rcs/svn.pm +++ b/IkiWiki/Rcs/svn.pm @@ -171,7 +171,7 @@ sub rcs_recentchanges ($) { #{{{ my $rev = $logentry->{revision}; my $user = $logentry->{author}; - my $when=time - str2time($logentry->{date}, 'UTC'); + my $when=str2time($logentry->{date}, 'UTC'); foreach my $msgline (split(/\n/, $logentry->{msg})) { push @message, { line => $msgline }; diff --git a/IkiWiki/Rcs/tla.pm b/IkiWiki/Rcs/tla.pm index ffb6ee521..15824ffaf 100644 --- a/IkiWiki/Rcs/tla.pm +++ b/IkiWiki/Rcs/tla.pm @@ -120,7 +120,7 @@ sub rcs_recentchanges ($) { split(/ /, "$newfiles $modfiles .arch-ids/fake.id"); my $sdate = $head->get("Standard-date"); - my $when = time - str2time($sdate, 'UTC'); + my $when = str2time($sdate, 'UTC'); my $committype = "web"; if (defined $summ && $summ =~ /$config{web_commit_regexp}/) { -- cgit v1.2.3 From 29f3082772095030895111f199d6420ef1835250 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 22:58:31 -0500 Subject: move userlink to IkiWiki.pm I have a plugin that needs to use userlink. --- IkiWiki.pm | 28 ++++++++++++++++++++++++++++ IkiWiki/CGI.pm | 28 ---------------------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 46060c1b2..15402211f 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -609,6 +609,34 @@ sub htmllink ($$$;@) { #{{{ return "$linktext"; } #}}} +sub userlink ($) { #{{{ + my $user=shift; + + eval q{use CGI 'escapeHTML'}; + error($@) if $@; + if ($user =~ m!^https?://! && + eval q{use Net::OpenID::VerifiedIdentity; 1} && !$@) { + # Munge user-urls, as used by eg, OpenID. + my $oid=Net::OpenID::VerifiedIdentity->new(identity => $user); + my $display=$oid->display; + # Convert "user.somehost.com" to "user [somehost.com]". + if ($display !~ /\[/) { + $display=~s/^(.*?)\.([^.]+\.[a-z]+)$/$1 [$2]/; + } + # Convert "http://somehost.com/user" to "user [somehost.com]". + if ($display !~ /\[/) { + $display=~s/^https?:\/\/(.+)\/([^\/]+)$/$2 [$1]/; + } + $display=~s!^https?://!!; # make sure this is removed + return "".escapeHTML($display).""; + } + else { + return htmllink("", "", escapeHTML( + length $config{userdir} ? $config{userdir}."/".$user : $user + ), noimageinline => 1); + } +} #}}} + sub htmlize ($$$) { #{{{ my $page=shift; my $type=shift; diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 03c448923..5de90e1a8 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -726,32 +726,4 @@ sub cgi (;$$) { #{{{ } } #}}} -sub userlink ($) { #{{{ - my $user=shift; - - eval q{use CGI 'escapeHTML'}; - error($@) if $@; - if ($user =~ m!^https?://! && - eval q{use Net::OpenID::VerifiedIdentity; 1} && !$@) { - # Munge user-urls, as used by eg, OpenID. - my $oid=Net::OpenID::VerifiedIdentity->new(identity => $user); - my $display=$oid->display; - # Convert "user.somehost.com" to "user [somehost.com]". - if ($display !~ /\[/) { - $display=~s/^(.*?)\.([^.]+\.[a-z]+)$/$1 [$2]/; - } - # Convert "http://somehost.com/user" to "user [somehost.com]". - if ($display !~ /\[/) { - $display=~s/^https?:\/\/(.+)\/([^\/]+)$/$2 [$1]/; - } - $display=~s!^https?://!!; # make sure this is removed - return "".escapeHTML($display).""; - } - else { - return htmllink("", "", escapeHTML( - length $config{userdir} ? $config{userdir}."/".$user : $user - ), noimageinline => 1); - } -} #}}} - 1 -- cgit v1.2.3 From 0d2894711c6aeadcee0d4f2799a0956f7beed499 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 23:08:48 -0500 Subject: support for internal-use page types If a page type starts with an underscore, hide it from the list of page types in the edit form, and don't allow editing pages of that type. This allows for plugins to add page types for internal use. --- IkiWiki/CGI.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 5de90e1a8..5062a448f 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -341,7 +341,7 @@ sub cgi_editpage ($$) { #{{{ if (exists $pagesources{$page} && $form->field("do") ne "create") { $file=$pagesources{$page}; $type=pagetype($file); - if (! defined $type) { + if (! defined $type || $type=~/^_/) { error(sprintf(gettext("%s is not an editable page"), $page)); } if (! $form->submitted) { @@ -470,7 +470,8 @@ sub cgi_editpage ($$) { #{{{ my @page_types; if (exists $hooks{htmlize}) { - @page_types=keys %{$hooks{htmlize}}; + @page_types=grep { !/^_/ } + keys %{$hooks{htmlize}}; } $form->tmpl_param("page_select", 1); -- cgit v1.2.3 From 1b8f1b867c25c5287926ca538c1b04dbfc17f033 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 23:32:36 -0500 Subject: only linkify openids in userlink Can't use htmllink in userlink due to it being called from recentchanges in cases where there is no configured url. It seems easist, at least for now, to not linkify user names in this case. I don't think I've ever clicked on such a link anyway. Might revisit this later. --- IkiWiki.pm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 15402211f..b326dbdb8 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -90,7 +90,7 @@ sub defaultconfig () { #{{{ adminuser => undef, adminemail => undef, plugin => [qw{mdwn inline htmlscrubber passwordauth openid signinedit - lockedit conditional}], + lockedit conditional recentchanges}], libdir => undef, timeformat => '%c', locale => undef, @@ -631,9 +631,7 @@ sub userlink ($) { #{{{ return "".escapeHTML($display).""; } else { - return htmllink("", "", escapeHTML( - length $config{userdir} ? $config{userdir}."/".$user : $user - ), noimageinline => 1); + return $user; } } #}}} -- cgit v1.2.3 From 2d3dc86d07a7ebf5f638084259ae2d9c2c63e6b6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 23:48:27 -0500 Subject: * prettydate,ddate: Don't ignore time formats passed to displaytime function. --- IkiWiki/Plugin/ddate.pm | 6 +++++- IkiWiki/Plugin/prettydate.pm | 5 ++++- debian/changelog | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/ddate.pm b/IkiWiki/Plugin/ddate.pm index 6b67f4202..d081cb509 100644 --- a/IkiWiki/Plugin/ddate.pm +++ b/IkiWiki/Plugin/ddate.pm @@ -18,6 +18,10 @@ sub checkconfig () { #{{{ sub IkiWiki::displaytime ($;$) { #{{{ my $time=shift; + my $format=shift; + if (! defined $format) { + $format=$config{timeformat}; + } eval q{ use DateTime; use DateTime::Calendar::Discordian; @@ -27,7 +31,7 @@ sub IkiWiki::displaytime ($;$) { #{{{ } my $dt = DateTime->from_epoch(epoch => $time); my $dd = DateTime::Calendar::Discordian->from_object(object => $dt); - return $dd->strftime($IkiWiki::config{timeformat}); + return $dd->strftime($format); } #}}} 5 diff --git a/IkiWiki/Plugin/prettydate.pm b/IkiWiki/Plugin/prettydate.pm index b6110e427..745e6a1de 100644 --- a/IkiWiki/Plugin/prettydate.pm +++ b/IkiWiki/Plugin/prettydate.pm @@ -63,6 +63,10 @@ sub checkconfig () { #{{{ sub IkiWiki::displaytime ($;$) { #{{{ my $time=shift; + my $format=shift; + if (! defined $format) { + $format=$config{prettydateformat}; + } eval q{use Date::Format}; error($@) if $@; @@ -93,7 +97,6 @@ sub IkiWiki::displaytime ($;$) { #{{{ $t=~s{\%A-}{my @yest=@t; $yest[6]--; strftime("%A", \@yest)}eg; - my $format=$config{prettydateformat}; $format=~s/\%X/$t/g; return strftime($format, \@t); } #}}} diff --git a/debian/changelog b/debian/changelog index 6af99590d..b098bf966 100644 --- a/debian/changelog +++ b/debian/changelog @@ -19,6 +19,8 @@ ikiwiki (2.21) UNRELEASED; urgency=low * inline: The template can check for FIRST and LAST, which will be set for the first and last inlined page. Useful for templates that build tables and the like. + * prettydate,ddate: Don't ignore time formats passed to displaytime + function. -- Joey Hess Fri, 11 Jan 2008 15:09:37 -0500 -- cgit v1.2.3 From 5921b86fccde90e5a9c77623d808be06f40cbe47 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 28 Jan 2008 23:56:26 -0500 Subject: proof of concept implementation of static recentchanges Currently hardcoded to write to recentchanges/*, and the page format needs to be rethought to be usable for aggregation, but it basically works. --- IkiWiki/Plugin/recentchanges.pm | 92 +++++++++++++++++++++++++++++++++++++++++ doc/plugins/recentchanges.mdwn | 14 +++++++ doc/recentchanges.mdwn | 6 +-- doc/todo/recentchanges.mdwn | 7 +--- doc/wikitemplates.mdwn | 3 +- templates/change.tmpl | 42 ++++++++++++------- templates/recentchanges.tmpl | 65 +++-------------------------- 7 files changed, 145 insertions(+), 84 deletions(-) create mode 100644 IkiWiki/Plugin/recentchanges.pm create mode 100644 doc/plugins/recentchanges.mdwn diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm new file mode 100644 index 000000000..94a2d4c33 --- /dev/null +++ b/IkiWiki/Plugin/recentchanges.pm @@ -0,0 +1,92 @@ +#!/usr/bin/perl +package IkiWiki::Plugin::recentchanges; + +use warnings; +use strict; +use IkiWiki 2.00; + +sub import { #{{{ + hook(type => "checkconfig", id => "recentchanges", + call => \&checkconfig); + hook(type => "needsbuild", id => "recentchanges", + call => \&needsbuild); + hook(type => "preprocess", id => "recentchanges", + call => \&preprocess); + hook(type => "htmlize", id => "_change", + call => \&htmlize); +} #}}} + +sub checkconfig () { #{{{ + updatechanges(); +} #}}} + +sub needsbuild () { #{{{ + # TODO +} #}}} + +sub preprocess (@) { #{{{ + my %params=@_; + + # TODO + + return ""; +} #}}} + +# Pages with extension _change have plain html markup, pass through. +sub htmlize (@) { #{{{ + my %params=@_; + return $params{content}; +} #}}} + +sub store ($$) { #{{{ + my $change=shift; + my $subdir=shift; + + my $page="$subdir/change_".IkiWiki::titlepage($change->{rev}); + + # Optimisation to avoid re-writing pages. Assumes commits never + # change, or that any changes are not important. + return if exists $pagesources{$page} && ! $config{rebuild}; + + # Limit pages to first 10, and add links to the changed pages. + my $is_excess = exists $change->{pages}[10]; + delete @{$change->{pages}}[10 .. @{$change->{pages}}] if $is_excess; + $change->{pages} = [ + map { + if (length $config{url}) { + $_->{link} = "{page},"")."\">". + IkiWiki::pagetitle($_->{page}).""; + } + else { + $_->{link} = IkiWiki::pagetitle($_->{page}); + } + $_; + } @{$change->{pages}} + ]; + push @{$change->{pages}}, { link => '...' } if $is_excess; + + # Fill out a template with the change info. + $change->{user} = IkiWiki::userlink($change->{user}); + my $ctime=$change->{when}; + $change->{when} = IkiWiki::displaytime($change->{when}, "%X %x"); + my $template=template("change.tmpl", blind_cache => 1); + $template->param(%$change); + $template->param(baseurl => "$config{url}/") if length $config{url}; + IkiWiki::run_hooks(pagetemplate => sub { + shift->(page => $page, destpage => $page, template => $template); + }); + + writefile($page."._change", $config{srcdir}, $template->output); + utime $ctime, $ctime, "$config{srcdir}/$page._change"; +} #}}} + +sub updatechanges () { #{{{ + my @changelog=IkiWiki::rcs_recentchanges(100); + foreach my $change (@changelog) { + store($change, "recentchanges"); + } + # TODO: delete old +} #}}} + +1 diff --git a/doc/plugins/recentchanges.mdwn b/doc/plugins/recentchanges.mdwn new file mode 100644 index 000000000..9e0d8dc51 --- /dev/null +++ b/doc/plugins/recentchanges.mdwn @@ -0,0 +1,14 @@ +[[template id=plugin name=recentchanges core=1 author="[[Joey]]"]] + +This plugin examines the [[revision_control_system|rcs]] history and +generates a page describing each recent change made to the wiki. These +pages can be joined together with [[inline]] to generate the +[[RecentChanges]] page. + +Typically only the RecentChanges page will use the plugin, but you can +use it elsewhere too if you like. It's used like this: + + \[[recentchanges pages="*" num=100 template=change]] + +The pages describing recent changes will be created as [[subpages|subpage]] +of the page where the `recentchanges` directive is placed. diff --git a/doc/recentchanges.mdwn b/doc/recentchanges.mdwn index 2e67f02e7..a027bf462 100644 --- a/doc/recentchanges.mdwn +++ b/doc/recentchanges.mdwn @@ -1,3 +1,3 @@ -ikiwiki generates the list of recent changes by examining the history of -the [[revision_control_system|rcs]] that the wiki is configured to use. You -have to have [[CGI]] set up for this feature to be enabled. +[[recentchanges pages="*" num=100 template=change]] +[[inline pages="recentchanges/change_* and !*/Discussion" +template=recentchanges show=0]] diff --git a/doc/todo/recentchanges.mdwn b/doc/todo/recentchanges.mdwn index bdd7948e4..75334659a 100644 --- a/doc/todo/recentchanges.mdwn +++ b/doc/todo/recentchanges.mdwn @@ -107,11 +107,8 @@ Here's a full design for redoing recentchanges, based on Ethan's ideas: aggregator, or they can set up their own page that uses the recentchanges directive for only the pages they want. * The `rcs_notify` functions will be removed. -* `rcs_getchange` is passed a change id (as returned from rcs_recentchanges) - and a partially filled out HTML::Template and fills out the remainer of the - template. So if a template is used that includes diffs, it will need to run - some expensive diffing operation, wikis with less resources can use a - template that doesn't include diffs and avoid that overhead. +* To add diffs, another plugin can add a pagetemplate hook that calls + a `rcs_diff`. (optional) * So to update the changes files, just call `rcs_recentchanges`, create files for each new id, and delete files for each id that is no longer included. diff --git a/doc/wikitemplates.mdwn b/doc/wikitemplates.mdwn index 4588b948e..8a579e183 100644 --- a/doc/wikitemplates.mdwn +++ b/doc/wikitemplates.mdwn @@ -10,11 +10,12 @@ located in /usr/share/ikiwiki/templates by default. * `page.tmpl` - Used for displaying all regular wiki pages. * `misc.tmpl` - Generic template used for any page that doesn't have a custom template. -* `recentchanges.tmpl` - Used for the RecentChanges page. * `editpage.tmpl` - Create/edit page. * `notifymail.tmpl` - Not a html template, this is used to generate change notification mails for users who have subscribed to changes to a page. +* `recentchanges.tmpl` - Used to generate a RecentChanges table with inline. +* `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 the mail with the user's password in it. * `rsspage.tmpl` - Used for generating rss feeds for [blogs|[ikiwiki/blog]]. diff --git a/templates/change.tmpl b/templates/change.tmpl index af257a7ce..9dbc97ec2 100644 --- a/templates/change.tmpl +++ b/templates/change.tmpl @@ -1,15 +1,27 @@ -[[meta title=""" -
-"""]] -[[meta author=""]] - - - - "> - diff - - - - - - + + + + + + + + "> + diff + + + + + + + + + + + + + +
+
+
+ + diff --git a/templates/recentchanges.tmpl b/templates/recentchanges.tmpl index e03482f43..2e33b79f9 100644 --- a/templates/recentchanges.tmpl +++ b/templates/recentchanges.tmpl @@ -1,26 +1,4 @@ - - - - - -<TMPL_VAR TITLE> - - - - - - - - -
- -/ - -
- -
-
+ @@ -30,42 +8,9 @@ - - - - - - - - - - - - + + +
- - - "> - diff - - - - - - -
- - -
-
-
-
-
- - - - - + -- cgit v1.2.3 From 2ff726e87595d7496245f7c01e2bb217004979c0 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 00:07:55 -0500 Subject: don't render internal-use pages, and document them --- IkiWiki/Render.pm | 1 + debian/changelog | 2 ++ doc/plugins/write.mdwn | 5 +++++ 3 files changed, 8 insertions(+) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 4fefadf09..5684f8092 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -193,6 +193,7 @@ sub render ($) { #{{{ my $type=pagetype($file); my $srcfile=srcfile($file); if (defined $type) { + return if $type=~/^_/; my $page=pagename($file); delete $depends{$page}; will_render($page, htmlpage($page), 1); diff --git a/debian/changelog b/debian/changelog index b098bf966..b57ef1178 100644 --- a/debian/changelog +++ b/debian/changelog @@ -21,6 +21,8 @@ ikiwiki (2.21) UNRELEASED; urgency=low tables and the like. * prettydate,ddate: Don't ignore time formats passed to displaytime function. + * Pages with extensions starting with "_" are internal-use, and will + not be rendered or web-edited. -- Joey Hess Fri, 11 Jan 2008 15:09:37 -0500 diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 0da425402..76fa3f0d7 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -143,6 +143,11 @@ specifies the filename extension that a file must have to be htmlized using this plugin. This is how you can add support for new and exciting markup languages to ikiwiki. +Note that if you choose a filename extension that starts with "_", +ikiwiki will not render the page, or allow the page to be edited with the +web interface. This is useful for certian types of internal-use pages, but +should generally be avoided. + The function is passed named parameters: "page" and "content" and should return the htmlized content. -- cgit v1.2.3 From d7fdd04b5a113b6dded40cb79b670b16570c11b3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 00:36:58 -0500 Subject: * Removed support for sending commit notification mails. Along with it went the svnrepo and notify settings, though both will be ignored if left in setup files. --- IkiWiki.pm | 2 - IkiWiki/CGI.pm | 13 +--- IkiWiki/Rcs/Stub.pm | 7 -- IkiWiki/Rcs/git.pm | 41 ---------- IkiWiki/Rcs/mercurial.pm | 4 - IkiWiki/Rcs/monotone.pm | 48 ------------ IkiWiki/Rcs/svn.pm | 38 ---------- IkiWiki/Rcs/tla.pm | 45 ----------- IkiWiki/UserInfo.pm | 87 ---------------------- IkiWiki/Wrapper.pm | 16 ---- debian/changelog | 3 + doc/bugs/git_mail_notification_race.mdwn | 2 + doc/features.mdwn | 7 +- doc/ikiwiki.setup | 3 - doc/index/discussion.mdwn | 3 + doc/rcs/monotone.mdwn | 1 - doc/setup.mdwn | 3 +- ...e_to_this_page__34___checkbox_on_edit_form.mdwn | 6 +- doc/todo/bzr.mdwn | 2 + doc/todo/mercurial.mdwn | 2 +- doc/usage.mdwn | 10 --- doc/wikitemplates.mdwn | 3 - docwiki.setup | 7 +- ikiwiki.in | 8 +- t/svn.t | 9 ++- templates/notifymail.tmpl | 4 - 26 files changed, 33 insertions(+), 341 deletions(-) delete mode 100644 templates/notifymail.tmpl diff --git a/IkiWiki.pm b/IkiWiki.pm index b326dbdb8..2c3ddac23 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -62,7 +62,6 @@ sub defaultconfig () { #{{{ cgi => 0, post_commit => 0, rcs => '', - notify => 0, url => '', cgiurl => '', historyurl => '', @@ -76,7 +75,6 @@ sub defaultconfig () { #{{{ w3mmode => 0, wrapper => undef, wrappermode => undef, - svnrepo => undef, svnpath => "trunk", gitorigin_branch => "origin", gitmaster_branch => "master", diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 5062a448f..55ee5d86a 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -242,9 +242,6 @@ sub cgi_prefs ($$) { #{{{ $form->field(name => "do", type => "hidden"); $form->field(name => "email", size => 50, fieldset => "preferences"); - $form->field(name => "subscriptions", size => 50, - fieldset => "preferences", - comment => "(".htmllink("", "", "ikiwiki/PageSpec", noimageinline => 1).")"); $form->field(name => "banned_users", size => 50, fieldset => "admin"); @@ -256,8 +253,6 @@ sub cgi_prefs ($$) { #{{{ if (! $form->submitted) { $form->field(name => "email", force => 1, value => userinfo_get($user_name, "email")); - $form->field(name => "subscriptions", force => 1, - value => userinfo_get($user_name, "subscriptions")); if (is_admin($user_name)) { $form->field(name => "banned_users", force => 1, value => join(" ", get_banned_users())); @@ -274,11 +269,9 @@ sub cgi_prefs ($$) { #{{{ return; } elsif ($form->submitted eq 'Save Preferences' && $form->validate) { - foreach my $field (qw(email subscriptions)) { - if (defined $form->field($field)) { - userinfo_set($user_name, $field, $form->field($field)) || - error("failed to set $field"); - } + if (defined $form->field('email')) { + userinfo_set($user_name, 'email', $form->field('email')) || + error("failed to set email"); } if (is_admin($user_name)) { set_banned_users(grep { ! is_admin($_) } diff --git a/IkiWiki/Rcs/Stub.pm b/IkiWiki/Rcs/Stub.pm index ab80a9a47..df347f6a9 100644 --- a/IkiWiki/Rcs/Stub.pm +++ b/IkiWiki/Rcs/Stub.pm @@ -57,13 +57,6 @@ sub rcs_recentchanges ($) { # } } -sub rcs_notify () { - # This function is called when a change is committed to the wiki, - # and ikiwiki is running as a post-commit hook from the RCS. - # It should examine the repository to somehow determine what pages - # changed, and then send emails to users subscribed to those pages. -} - sub rcs_getctime ($) { # Optional, used to get the page creation time from the RCS. error gettext("getctime not implemented"); diff --git a/IkiWiki/Rcs/git.pm b/IkiWiki/Rcs/git.pm index f70582136..26a6f4266 100644 --- a/IkiWiki/Rcs/git.pm +++ b/IkiWiki/Rcs/git.pm @@ -419,47 +419,6 @@ sub rcs_recentchanges ($) { #{{{ return @rets; } #}}} -sub rcs_notify () { #{{{ - # Send notification mail to subscribed users. - # - # In usual Git usage, hooks/update script is presumed to send - # notification mails (see git-receive-pack(1)). But we prefer - # hooks/post-update to support IkiWiki commits coming from a - # cloned repository (through command line) because post-update - # is called _after_ each ref in repository is updated (update - # hook is called _before_ the repository is updated). - # - # Here, we rely on a simple fact: we can extract all parts of the - # notification content by parsing the "HEAD" commit. - - my $ci = git_commit_info('HEAD'); - return if !defined $ci; - - my @changed_pages = map { $_->{'file'} } @{ $ci->{'details'} }; - - my ($user, $message); - if (@{ $ci->{'comment'} }[0] =~ m/$config{web_commit_regexp}/) { - $user = defined $2 ? $2 : $3; - $message = $4; - } - else { - $user = $ci->{'author_username'}; - $message = join "\n", @{ $ci->{'comment'} }; - } - - my $sha1 = $ci->{'sha1'}; - - require IkiWiki::UserInfo; - send_commit_mails( - sub { - $message; - }, - sub { - join "\n", run_or_die('git', 'diff', "${sha1}^", $sha1); - }, $user, @changed_pages - ); -} #}}} - sub rcs_getctime ($) { #{{{ my $file=shift; # Remove srcdir prefix diff --git a/IkiWiki/Rcs/mercurial.pm b/IkiWiki/Rcs/mercurial.pm index 13a88379c..db6a396ac 100644 --- a/IkiWiki/Rcs/mercurial.pm +++ b/IkiWiki/Rcs/mercurial.pm @@ -151,10 +151,6 @@ sub rcs_recentchanges ($) { #{{{ return @ret; } #}}} -sub rcs_notify () { #{{{ - # TODO -} #}}} - sub rcs_getctime ($) { #{{{ my ($file) = @_; diff --git a/IkiWiki/Rcs/monotone.pm b/IkiWiki/Rcs/monotone.pm index b48ac92db..0ae2c1a32 100644 --- a/IkiWiki/Rcs/monotone.pm +++ b/IkiWiki/Rcs/monotone.pm @@ -452,54 +452,6 @@ sub rcs_recentchanges ($) { #{{{ return @ret; } #}}} -sub rcs_notify () { #{{{ - debug("The monotone rcs_notify function is currently untested. Use at own risk!"); - - if (! exists $ENV{REV}) { - error(gettext("REV is not set, not running from mtn post-commit hook, cannot send notifications")); - } - if ($ENV{REV} !~ m/($sha1_pattern)/) { # sha1 is untainted now - error(gettext("REV is not a valid revision identifier, cannot send notifications")); - } - my $rev = $1; - - check_config(); - - my $automator = Monotone->new(); - $automator->open(undef, $config{mtnrootdir}); - - my $certs = [read_certs($automator, $rev)]; - my $user; - my $message; - my $when; - - foreach my $cert (@$certs) { - if ($cert->{signature} eq "ok" && $cert->{trust} eq "trusted") { - if ($cert->{name} eq "author") { - $user = $cert->{value}; - } elsif ($cert->{name} eq "date") { - $when = $cert->{value}; - } elsif ($cert->{name} eq "changelog") { - $message = $cert->{value}; - } - } - } - - my @changed_pages = get_changed_files($automator, $rev); - - $automator->close(); - - require IkiWiki::UserInfo; - send_commit_mails( - sub { - return $message; - }, - sub { - `mtn --root=$config{mtnrootdir} au content_diff -r $rev`; - }, - $user, @changed_pages); -} #}}} - sub rcs_getctime ($) { #{{{ my $file=shift; diff --git a/IkiWiki/Rcs/svn.pm b/IkiWiki/Rcs/svn.pm index 075f8da5a..f7d2242f0 100644 --- a/IkiWiki/Rcs/svn.pm +++ b/IkiWiki/Rcs/svn.pm @@ -217,44 +217,6 @@ sub rcs_recentchanges ($) { #{{{ return @ret; } #}}} -sub rcs_notify () { #{{{ - if (! exists $ENV{REV}) { - error(gettext("REV is not set, not running from svn post-commit hook, cannot send notifications")); - } - my $rev=int(possibly_foolish_untaint($ENV{REV})); - - my $user=`svnlook author $config{svnrepo} -r $rev`; - chomp $user; - - my $message=`svnlook log $config{svnrepo} -r $rev`; - if ($message=~/$config{web_commit_regexp}/) { - $user=defined $2 ? "$2" : "$3"; - $message=$4; - } - - my @changed_pages; - foreach my $change (`svnlook changed $config{svnrepo} -r $rev`) { - chomp $change; - if (length $config{svnpath}) { - if ($change =~ /^[A-Z]+\s+\Q$config{svnpath}\E\/(.*)/) { - push @changed_pages, $1; - } - } - else { - push @changed_pages, $change; - } - } - - require IkiWiki::UserInfo; - send_commit_mails( - sub { - return $message; - }, - sub { - `svnlook diff $config{svnrepo} -r $rev --no-diff-deleted`; - }, $user, @changed_pages); -} #}}} - sub rcs_getctime ($) { #{{{ my $file=shift; diff --git a/IkiWiki/Rcs/tla.pm b/IkiWiki/Rcs/tla.pm index 15824ffaf..ecc561bde 100644 --- a/IkiWiki/Rcs/tla.pm +++ b/IkiWiki/Rcs/tla.pm @@ -160,51 +160,6 @@ sub rcs_recentchanges ($) { return @ret; } -sub rcs_notify () { #{{{ - # FIXME: Not set - if (! exists $ENV{ARCH_VERSION}) { - error("ARCH_VERSION is not set, not running from tla post-commit hook, cannot send notifications"); - } - my $rev=int(possibly_foolish_untaint($ENV{REV})); - - eval q{use Mail::Header}; - error($@) if $@; - open(LOG, $ENV{"ARCH_LOG"}); - my $head = Mail::Header->new(\*LOG); - close(LOG); - - my $user = $head->get("Creator"); - - my $newfiles = $head->get("New-files"); - my $modfiles = $head->get("Modified-files"); - my $remfiles = $head->get("Removed-files"); - - my @changed_pages = grep { !/(^.*\/)?\.arch-ids\/.*\.id$/ } - split(/ /, "$newfiles $modfiles $remfiles .arch-ids/fake.id"); - - require IkiWiki::UserInfo; - send_commit_mails( - sub { - my $message = $head->get("Summary"); - if ($message =~ /$config{web_commit_regexp}/) { - $user=defined $2 ? "$2" : "$3"; - $message=$4; - } - }, - sub { - my $logs = `tla logs -d $config{srcdir}`; - my @changesets = reverse split(/\n/, $logs); - my $i; - - for($i=0;$i<$#changesets;$i++) { - last if $changesets[$i] eq $rev; - } - - my $revminusone = $changesets[$i+1]; - `tla diff -d $ENV{ARCH_TREE_ROOT} $revminusone`; - }, $user, @changed_pages); -} #}}} - sub rcs_getctime ($) { #{{{ my $file=shift; eval q{use Date::Parse}; diff --git a/IkiWiki/UserInfo.pm b/IkiWiki/UserInfo.pm index cfc27609d..2ffc51c55 100644 --- a/IkiWiki/UserInfo.pm +++ b/IkiWiki/UserInfo.pm @@ -92,91 +92,4 @@ sub set_banned_users (@) { #{{{ return userinfo_store($userinfo); } #}}} -sub commit_notify_list ($@) { #{{{ - my $committer=shift; - my @pages = map pagename($_), @_; - - my @ret; - my $userinfo=userinfo_retrieve(); - foreach my $user (keys %{$userinfo}) { - next if $user eq $committer; - if (exists $userinfo->{$user}->{subscriptions} && - length $userinfo->{$user}->{subscriptions} && - exists $userinfo->{$user}->{email} && - length $userinfo->{$user}->{email} && - grep { pagespec_match($_, - $userinfo->{$user}->{subscriptions}, - user => $committer) } - map pagename($_), @_) { - push @ret, $userinfo->{$user}->{email}; - } - } - return @ret; -} #}}} - -sub send_commit_mails ($$$@) { #{{{ - my $messagesub=shift; - my $diffsub=shift; - my $user=shift; - my @changed_pages=@_; - - return unless @changed_pages; - - my @email_recipients=commit_notify_list($user, @changed_pages); - if (@email_recipients) { - # TODO: if a commit spans multiple pages, this will send - # subscribers a diff that might contain pages they did not - # sign up for. Should separate the diff per page and - # reassemble into one mail with just the pages subscribed to. - my $diff=$diffsub->(); - my $message=$messagesub->(); - - my $pagelist; - if (@changed_pages > 2) { - $pagelist="$changed_pages[0] $changed_pages[1] ..."; - } - else { - $pagelist.=join(" ", @changed_pages); - } - #translators: The three variables are the name of the wiki, - #translators: A list of one or more pages that were changed, - #translators: And the name of the user making the change. - #translators: This is used as the subject of a commit email. - my $subject=sprintf(gettext("update of %s's %s by %s"), - $config{wikiname}, $pagelist, $user); - - my $template=template("notifymail.tmpl"); - $template->param( - wikiname => $config{wikiname}, - diff => $diff, - user => $user, - message => $message, - ); - - # Daemonize, in case the mail sending takes a while. - defined(my $pid = fork) or error("Can't fork: $!"); - return if $pid; - setsid() or error("Can't start a new session: $!"); - chdir '/'; - open STDIN, '/dev/null'; - open STDOUT, '>/dev/null'; - open STDERR, '>&STDOUT' or error("Can't dup stdout: $!"); - - unlockwiki(); # don't need to keep a lock on the wiki - - eval q{use Mail::Sendmail}; - error($@) if $@; - foreach my $email (@email_recipients) { - sendmail( - To => $email, - From => "$config{wikiname} <$config{adminemail}>", - Subject => $subject, - Message => $template->output, - ); - } - - exit 0; # daemon process done - } -} #}}} - 1 diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm index 2103ea53a..90a4c46c7 100644 --- a/IkiWiki/Wrapper.pm +++ b/IkiWiki/Wrapper.pm @@ -36,22 +36,6 @@ sub gen_wrapper () { #{{{ addenv("$var", s); EOF } - if ($config{rcs} eq "svn" && $config{notify}) { - # Support running directly as hooks/post-commit by passing - # $2 in REV in the environment. - $envsave.=<<"EOF" - if (argc == 3) - addenv("REV", argv[2]); - else if ((s=getenv("REV"))) - addenv("REV", s); -EOF - } - if ($config{rcs} eq "tla" && $config{notify}) { - $envsave.=<<"EOF" - if ((s=getenv("ARCH_VERSION"))) - addenv("ARCH_VERSION", s); -EOF - } $Data::Dumper::Indent=0; # no newlines my $configstring=Data::Dumper->Dump([\%config], ['*config']); diff --git a/debian/changelog b/debian/changelog index b57ef1178..47273ea94 100644 --- a/debian/changelog +++ b/debian/changelog @@ -23,6 +23,9 @@ ikiwiki (2.21) UNRELEASED; urgency=low function. * Pages with extensions starting with "_" are internal-use, and will not be rendered or web-edited. + * Removed support for sending commit notification mails. Along with it went + the svnrepo and notify settings, though both will be ignored if left in + setup files. -- Joey Hess Fri, 11 Jan 2008 15:09:37 -0500 diff --git a/doc/bugs/git_mail_notification_race.mdwn b/doc/bugs/git_mail_notification_race.mdwn index 3538b0764..58bd82325 100644 --- a/doc/bugs/git_mail_notification_race.mdwn +++ b/doc/bugs/git_mail_notification_race.mdwn @@ -1,3 +1,5 @@ +[[done]] (in this branch); fixed removing email notification support! + I was suprised to receive two mails from ikiwiki about one web edit: 1 F Oct 30 To joey+ikiwiki update of ikiwiki's plugins/contrib/gallery.mdwn by http://arpitjain11.myopenid.com/ diff --git a/doc/features.mdwn b/doc/features.mdwn index a7b5c19ab..42eede916 100644 --- a/doc/features.mdwn +++ b/doc/features.mdwn @@ -127,7 +127,7 @@ with that there's no new commit marker syntax to learn. Nearly the definition of a wiki, although perhaps ikiwiki challenges how much of that web gunk a wiki really needs. These features are optional -and can be enabled by enabling [[CGI]]. +and can be enabled by enabling [[CGI]] and a [[Revision_Control_Systems|rcs]]. ### User registration @@ -161,11 +161,6 @@ Well, sorta. Rather than implementing YA history browser, it can link to ikiwiki can use the [[HyperEstraier]] search engine to add powerful full text search capabilities to your wiki. -### Commit mails - -ikiwiki can be configured to send you commit mails with diffs of changes -to selected pages. - ### [[w3mmode]] Can be set up so that w3m can be used to browse a wiki and edit pages diff --git a/doc/ikiwiki.setup b/doc/ikiwiki.setup index 44cb35425..c9616e849 100644 --- a/doc/ikiwiki.setup +++ b/doc/ikiwiki.setup @@ -23,7 +23,6 @@ use IkiWiki::Setup::Standard { #rcs => "svn", #historyurl => "http://svn.example.org/trunk/[[file]]", #diffurl => "http://svn.example.org/trunk/[[file]]?root=wiki&r1=[[r1]]&r2=[[r2]]", - #svnrepo => "/svn/wiki", #svnpath => "trunk", # Git stuff. @@ -72,8 +71,6 @@ use IkiWiki::Setup::Standard { # # what you want. # wrapper => "/svn/wikirepo/hooks/post-commit", # wrappermode => "04755", - # # Enable mail notifications of commits. - # notify => 1, # # Log to syslog since svn post-commit hooks # # hide output and errors. # syslog => 1, diff --git a/doc/index/discussion.mdwn b/doc/index/discussion.mdwn index d5a48f282..4cf38e9cb 100644 --- a/doc/index/discussion.mdwn +++ b/doc/index/discussion.mdwn @@ -405,6 +405,9 @@ I'm playing around with various ways that I can use subversion with ikiwiki. > away without running the post-commit wrapper on commit, and all you lose > is the ability to send commit notification emails. +> (And now that [[recentchanges]] includes rss, you can just subscribe to +> that, no need to worry about commit notification emails anymore.) + * Is it possible / sensible to have ikiwiki share a subversion repository with other data (either completely unrelated files or another ikiwiki instance)? This works in part but again the post-commit hook seems problematic. --[[AdamShand]] diff --git a/doc/rcs/monotone.mdwn b/doc/rcs/monotone.mdwn index d79381571..1d3cd2bc4 100644 --- a/doc/rcs/monotone.mdwn +++ b/doc/rcs/monotone.mdwn @@ -10,7 +10,6 @@ The module is available from the monotone source repository at: Monotone support works, but there are still a few minor missing bits (listed here so they are not forgotten): * At the moment there are no links to display diffs between revisions. It shouldn't be hard to add links to a [ViewMTN](http://grahame.angrygoats.net/moinmoin/ViewMTN) instance, but it hasn't been done yet. -* The [[post-commit]] hook support, so that Ikiwiki sends change notifications when people commit using Monotone rather than the web interface, is partially implemented and untested. * Documentation (this page) could be improved. There is also a mismatch between the way Ikiwiki handles conflicts and the way Monotone handles conflicts. At present, if there is a conflict, then Ikiwiki will commit a revision with conflict markers before presenting it to the user. This is ugly, but there is no clean way to fix it at present. diff --git a/doc/setup.mdwn b/doc/setup.mdwn index af1adc235..9bf7f7c7b 100644 --- a/doc/setup.mdwn +++ b/doc/setup.mdwn @@ -180,8 +180,7 @@ about using the git repositories. Once your wiki is checked in to the revision control system, you should configure ikiwiki to use revision control. Edit your ikiwiki.setup, and uncomment the lines for the revision control system -you chose to use. Be sure to set `svnrepo` to $REPOSITORY, if using -subversion. Uncomment the block for the wrapper for your revision +you chose to use. Uncomment the block for the wrapper for your revision control system, and configure the wrapper path in that block appropriately (for Git, it should be `$REPOSITORY/hooks/post-update`). diff --git a/doc/todo/__34__subscribe_to_this_page__34___checkbox_on_edit_form.mdwn b/doc/todo/__34__subscribe_to_this_page__34___checkbox_on_edit_form.mdwn index 70970c6cc..dc456bbbf 100644 --- a/doc/todo/__34__subscribe_to_this_page__34___checkbox_on_edit_form.mdwn +++ b/doc/todo/__34__subscribe_to_this_page__34___checkbox_on_edit_form.mdwn @@ -3,4 +3,8 @@ user to add a page to their subscribed list while editing. This would prove particularly useful for [[todo]] and [bug](bugs) items, to allow users to receive notifications for activity on their reports. ---[[JoshTriplett]] \ No newline at end of file +--[[JoshTriplett]] + +I went and removed commit notification mails entirely, the idea is that you +subscribe using the [[RecentChanges]] rss feed, and filter it on your end. +Good enough? --[[Joey]] diff --git a/doc/todo/bzr.mdwn b/doc/todo/bzr.mdwn index 9650b9da8..51ae08146 100644 --- a/doc/todo/bzr.mdwn +++ b/doc/todo/bzr.mdwn @@ -4,6 +4,8 @@ rcs_commit was only changed to work around bzr's lack of a switch to set the username). bzr_log could probably be written better by someone better at perl, and rcs_getctime and rcs_notify aren't written at all. --[[bma]] +(rcs_notify is not needed in this branch --[[Joey]]) + #!/usr/bin/perl use warnings; diff --git a/doc/todo/mercurial.mdwn b/doc/todo/mercurial.mdwn index e5de93521..608c7d681 100644 --- a/doc/todo/mercurial.mdwn +++ b/doc/todo/mercurial.mdwn @@ -1,6 +1,6 @@ * Need to get post commit hook working (or an example of how to use it.) * See below. --[[bma]] -* rcs_notify is not implemented +* rcs_notify is not implemented (not needed in this branch --[[Joey]]) * Is the code sufficiently robust? It just warns when mercurial fails. * When rcs_commit is called with a $user that is an openid, it will be passed through to mercurial -u. Will mercurial choke on this? diff --git a/doc/usage.mdwn b/doc/usage.mdwn index 136e969c2..354e266f1 100644 --- a/doc/usage.mdwn +++ b/doc/usage.mdwn @@ -133,11 +133,6 @@ configuration options of their own. access controlled by a group, it makes sense for the ikiwiki wrappers to run setgid to that group. -* --notify, --no-notify - - Enable email notification of commits. This should be used when running - ikiwiki as a [[post-commit]] hook. - * --rcs=svn|git|.., --no-rcs Enable or disable use of a [[revision_control_system|rcs]]. @@ -151,11 +146,6 @@ configuration options of their own. No revision control is enabled by default. -* --svnrepo /svn/wiki - - Specify the location of the svn repository for the wiki. This is required - for using --notify with [[Subversion|rcs/svn]]. - * --svnpath trunk Specify the path inside your svn repository where the wiki is located. diff --git a/doc/wikitemplates.mdwn b/doc/wikitemplates.mdwn index 8a579e183..b8341b637 100644 --- a/doc/wikitemplates.mdwn +++ b/doc/wikitemplates.mdwn @@ -11,9 +11,6 @@ located in /usr/share/ikiwiki/templates by default. * `misc.tmpl` - Generic template used for any page that doesn't have a custom template. * `editpage.tmpl` - Create/edit page. -* `notifymail.tmpl` - Not a html template, this is used to - generate change notification mails for users who have subscribed to - changes to a page. * `recentchanges.tmpl` - Used to generate a RecentChanges table with inline. * `change.tmpl` - Used to create a page describing a change made to the wiki. * `passwordmail.tmpl` - Not a html template, this is used to diff --git a/docwiki.setup b/docwiki.setup index 0a6a86678..5793d87bf 100644 --- a/docwiki.setup +++ b/docwiki.setup @@ -15,5 +15,10 @@ use IkiWiki::Setup::Standard { syslog => 0, userdir => "users", usedirs => 0, - add_plugins => [qw{goodstuff version haiku polygen fortune}], + rcs => 'git', + rss => 1, + cgiurl => "http://ikiwiki.info/ikiwiki.cgi", + url => "http://ikiwiki.info", + add_plugins => [qw{goodstuff version haiku polygen fortune + recentchanges }], } diff --git a/ikiwiki.in b/ikiwiki.in index 2aeaf94ec..9d1f6b520 100755 --- a/ikiwiki.in +++ b/ikiwiki.in @@ -36,12 +36,10 @@ sub getconfig () { #{{{ "cgi!" => \$config{cgi}, "discussion!" => \$config{discussion}, "w3mmode!" => \$config{w3mmode}, - "notify!" => \$config{notify}, "url=s" => \$config{url}, "cgiurl=s" => \$config{cgiurl}, "historyurl=s" => \$config{historyurl}, "diffurl=s" => \$config{diffurl}, - "svnrepo" => \$config{svnrepo}, "svnpath" => \$config{svnpath}, "adminemail=s" => \$config{adminemail}, "timeformat=s" => \$config{timeformat}, @@ -132,10 +130,7 @@ sub main () { #{{{ commandline_render(); } elsif ($config{post_commit} && ! commit_hook_enabled()) { - if ($config{notify}) { - loadindex(); - rcs_notify(); - } + # do nothing } else { lockwiki(); @@ -143,7 +138,6 @@ sub main () { #{{{ require IkiWiki::Render; rcs_update(); refresh(); - rcs_notify() if $config{notify}; saveindex(); } } #}}} diff --git a/t/svn.t b/t/svn.t index a1878a73d..8a8282c73 100755 --- a/t/svn.t +++ b/t/svn.t @@ -21,13 +21,14 @@ BEGIN { use_ok("IkiWiki"); } %config=IkiWiki::defaultconfig(); $config{rcs} = "svn"; $config{srcdir} = "$dir/src"; -$config{svnrepo} = "$dir/repo"; $config{svnpath} = "trunk"; IkiWiki::checkconfig(); -system "svnadmin create $config{svnrepo} >/dev/null"; -system "svn mkdir file://$config{svnrepo}/trunk -m add >/dev/null"; -system "svn co file://$config{svnrepo}/trunk $config{srcdir} >/dev/null"; +my $svnrepo = "$dir/repo"; + +system "svnadmin create $svnrepo >/dev/null"; +system "svn mkdir file://$svnrepo/trunk -m add >/dev/null"; +system "svn co file://$svnrepo/trunk $config{srcdir} >/dev/null"; # Web commit my $test1 = readfile("t/test1.mdwn"); diff --git a/templates/notifymail.tmpl b/templates/notifymail.tmpl deleted file mode 100644 index e3a1dd330..000000000 --- a/templates/notifymail.tmpl +++ /dev/null @@ -1,4 +0,0 @@ -The following change was made by : - - - -- cgit v1.2.3 From d2a369537688d31884a2a90886768dfc90b8d706 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 01:03:15 -0500 Subject: some parameteraisation and generalisation --- IkiWiki/Plugin/recentchanges.pm | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 94a2d4c33..6b36ea4c8 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -17,7 +17,8 @@ sub import { #{{{ } #}}} sub checkconfig () { #{{{ - updatechanges(); + my @changes=IkiWiki::rcs_recentchanges(100); + updatechanges("*", "recentchanges", \@changes); } #}}} sub needsbuild () { #{{{ @@ -45,7 +46,7 @@ sub store ($$) { #{{{ my $page="$subdir/change_".IkiWiki::titlepage($change->{rev}); # Optimisation to avoid re-writing pages. Assumes commits never - # change, or that any changes are not important. + # change (or that any changes are not important). return if exists $pagesources{$page} && ! $config{rebuild}; # Limit pages to first 10, and add links to the changed pages. @@ -67,24 +68,28 @@ sub store ($$) { #{{{ push @{$change->{pages}}, { link => '...' } if $is_excess; # Fill out a template with the change info. - $change->{user} = IkiWiki::userlink($change->{user}); - my $ctime=$change->{when}; - $change->{when} = IkiWiki::displaytime($change->{when}, "%X %x"); my $template=template("change.tmpl", blind_cache => 1); - $template->param(%$change); + $template->param( + user => IkiWiki::userlink($change->{user}), + when => IkiWiki::displaytime($change->{when}, "%X %x"), + pages => $change->{pages}, + message => $change->{message}, + ); $template->param(baseurl => "$config{url}/") if length $config{url}; IkiWiki::run_hooks(pagetemplate => sub { shift->(page => $page, destpage => $page, template => $template); }); writefile($page."._change", $config{srcdir}, $template->output); - utime $ctime, $ctime, "$config{srcdir}/$page._change"; + utime $change->{when}, $change->{when}, "$config{srcdir}/$page._change"; } #}}} -sub updatechanges () { #{{{ - my @changelog=IkiWiki::rcs_recentchanges(100); - foreach my $change (@changelog) { - store($change, "recentchanges"); +sub updatechanges ($$) { #{{{ + my $pagespec=shift; + my $subdir=shift; + my @changes=@{shift()}; + foreach my $change (@changes) { + store($change, $subdir); } # TODO: delete old } #}}} -- cgit v1.2.3 From d72753e100b018dfa82feb06e06fc2ad2c61f4ed Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 01:03:44 -0500 Subject: updates --- debian/changelog | 3 +++ doc/todo/recentchanges.mdwn | 2 ++ underlays/basewiki/recentchanges.mdwn | 1 + 3 files changed, 6 insertions(+) create mode 120000 underlays/basewiki/recentchanges.mdwn diff --git a/debian/changelog b/debian/changelog index 47273ea94..8530bdd7e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -23,6 +23,9 @@ ikiwiki (2.21) UNRELEASED; urgency=low function. * Pages with extensions starting with "_" are internal-use, and will not be rendered or web-edited. + * RecentChanges is now a static html page, that's updated whenever a commit + is made to the wiki. It's built as a blog using inline, so it can have + an rss feed that users can subscribe to. * Removed support for sending commit notification mails. Along with it went the svnrepo and notify settings, though both will be ignored if left in setup files. diff --git a/doc/todo/recentchanges.mdwn b/doc/todo/recentchanges.mdwn index 75334659a..91128a860 100644 --- a/doc/todo/recentchanges.mdwn +++ b/doc/todo/recentchanges.mdwn @@ -140,3 +140,5 @@ page later gets deleted. I think that's acceptable. It could link to `ikiwiki.cgi?do=redir&page=foo`, but that's probably overkill. --[[Joey]] + +[[done]] !! (in this branch at least :-) diff --git a/underlays/basewiki/recentchanges.mdwn b/underlays/basewiki/recentchanges.mdwn new file mode 120000 index 000000000..7bd039623 --- /dev/null +++ b/underlays/basewiki/recentchanges.mdwn @@ -0,0 +1 @@ +../../doc/recentchanges.mdwn \ No newline at end of file -- cgit v1.2.3 From 21f44880cdd8f23264b2416bf39793aadcb87df6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 01:48:55 -0500 Subject: non-tabular recentchanges display Doesn't look as good as the old table, but works as a rss feed. --- IkiWiki.pm | 23 +++++++++++++----- IkiWiki/CGI.pm | 53 ----------------------------------------- IkiWiki/Plugin/recentchanges.pm | 23 +++++++++++++----- doc/recentchanges.mdwn | 3 +-- doc/wikitemplates.mdwn | 1 - templates/change.tmpl | 49 ++++++++++++++++++------------------- templates/recentchanges.tmpl | 16 ------------- 7 files changed, 58 insertions(+), 110 deletions(-) delete mode 100644 templates/recentchanges.tmpl diff --git a/IkiWiki.pm b/IkiWiki.pm index 2c3ddac23..c70307b5f 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -607,14 +607,11 @@ sub htmllink ($$$;@) { #{{{ return "$linktext"; } #}}} -sub userlink ($) { #{{{ +sub openiduser ($) { #{{{ my $user=shift; - eval q{use CGI 'escapeHTML'}; - error($@) if $@; if ($user =~ m!^https?://! && eval q{use Net::OpenID::VerifiedIdentity; 1} && !$@) { - # Munge user-urls, as used by eg, OpenID. my $oid=Net::OpenID::VerifiedIdentity->new(identity => $user); my $display=$oid->display; # Convert "user.somehost.com" to "user [somehost.com]". @@ -626,10 +623,24 @@ sub userlink ($) { #{{{ $display=~s/^https?:\/\/(.+)\/([^\/]+)$/$2 [$1]/; } $display=~s!^https?://!!; # make sure this is removed - return "".escapeHTML($display).""; + eval q{use CGI 'escapeHTML'}; + error($@) if $@; + return escapeHTML($display); + } + return; +} + +sub userlink ($) { #{{{ + my $user=shift; + + my $oiduser=openiduser($user); + if (defined $oiduser) { + return "$oiduser"; } else { - return $user; + return htmllink("", "", escapeHTML( + length $config{userdir} ? $config{userdir}."/".$user : $user + ), noimageinline => 1); } } #}}} diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 55ee5d86a..c8c1b63dd 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -84,53 +84,6 @@ sub decode_cgi_utf8 ($) { #{{{ } } #}}} -sub cgi_recentchanges ($) { #{{{ - my $q=shift; - - # Optimisation: building recentchanges means calculating lots of - # links. Memoizing htmllink speeds it up a lot (can't be memoized - # during page builds as the return values may change, but they - # won't here.) - eval q{use Memoize}; - error($@) if $@; - memoize("htmllink"); - - eval q{use Time::Duration}; - error($@) if $@; - - my $changelog=[rcs_recentchanges(100)]; - foreach my $change (@$changelog) { - $change->{when} = concise(ago(time - $change->{when})); - - $change->{user} = userlink($change->{user}); - - my $is_excess = exists $change->{pages}[10]; # limit pages to first 10 - delete @{$change->{pages}}[10 .. @{$change->{pages}}] if $is_excess; - $change->{pages} = [ - map { - $_->{link} = htmllink("", "", $_->{page}, - noimageinline => 1, - linktext => pagetitle($_->{page})); - $_; - } @{$change->{pages}} - ]; - push @{$change->{pages}}, { link => '...' } if $is_excess; - } - - my $template=template("recentchanges.tmpl"); - $template->param( - title => "RecentChanges", - indexlink => indexlink(), - wikiname => $config{wikiname}, - changelog => $changelog, - baseurl => baseurl(), - ); - run_hooks(pagetemplate => sub { - shift->(page => "", destpage => "", template => $template); - }); - print $q->header(-charset => 'utf-8'), $template->output; -} #}}} - # Check if the user is signed in. If not, redirect to the signin form and # save their place to return to later. sub needsignin ($$) { #{{{ @@ -661,12 +614,6 @@ sub cgi (;$$) { #{{{ } } - # Things that do not need a session. - if ($do eq 'recentchanges') { - cgi_recentchanges($q); - return; - } - # Need to lock the wiki before getting a session. lockwiki(); diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 6b36ea4c8..fb9841ffd 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -67,14 +67,25 @@ sub store ($$) { #{{{ ]; push @{$change->{pages}}, { link => '...' } if $is_excess; + # Take the first line of the commit message as a summary. + my $m=shift @{$change->{message}}; + $change->{summary}=$m->{line}; + + # See if the committer is an openid. + my $oiduser=IkiWiki::openiduser($change->{user}); + if (defined $oiduser) { + $change->{authorurl}=$change->{user}; + $change->{user}=$oiduser; + } + elsif (length $config{url}) { + $change->{authorurl}="$config{url}/". + (length $config{userdir} ? "$config{userdir}/" : ""). + $change->{user}; + } + # Fill out a template with the change info. my $template=template("change.tmpl", blind_cache => 1); - $template->param( - user => IkiWiki::userlink($change->{user}), - when => IkiWiki::displaytime($change->{when}, "%X %x"), - pages => $change->{pages}, - message => $change->{message}, - ); + $template->param(%$change); $template->param(baseurl => "$config{url}/") if length $config{url}; IkiWiki::run_hooks(pagetemplate => sub { shift->(page => $page, destpage => $page, template => $template); diff --git a/doc/recentchanges.mdwn b/doc/recentchanges.mdwn index a027bf462..b2c7f5d07 100644 --- a/doc/recentchanges.mdwn +++ b/doc/recentchanges.mdwn @@ -1,3 +1,2 @@ [[recentchanges pages="*" num=100 template=change]] -[[inline pages="recentchanges/change_* and !*/Discussion" -template=recentchanges show=0]] +[[inline pages="recentchanges/change_* and !*/Discussion" show=0]] diff --git a/doc/wikitemplates.mdwn b/doc/wikitemplates.mdwn index b8341b637..1f6325b4b 100644 --- a/doc/wikitemplates.mdwn +++ b/doc/wikitemplates.mdwn @@ -11,7 +11,6 @@ located in /usr/share/ikiwiki/templates by default. * `misc.tmpl` - Generic template used for any page that doesn't have a custom template. * `editpage.tmpl` - Create/edit page. -* `recentchanges.tmpl` - Used to generate a RecentChanges table with inline. * `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 the mail with the user's password in it. diff --git a/templates/change.tmpl b/templates/change.tmpl index 9dbc97ec2..f02b5eb19 100644 --- a/templates/change.tmpl +++ b/templates/change.tmpl @@ -1,27 +1,24 @@ +[[meta author=""""""]] + +[[meta authorurl=""""""]] + +[[meta title=""""""]] +

+ + +
+
+
+

+

+ + + + "> + diff + + + + +changed via - - - - - - - "> - diff - - - - - - - - - - - - - -
-
-
- - diff --git a/templates/recentchanges.tmpl b/templates/recentchanges.tmpl deleted file mode 100644 index 2e33b79f9..000000000 --- a/templates/recentchanges.tmpl +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - -
usertimechanges
-
-- cgit v1.2.3 From a6a300f675737f2628e8e4e1845a363aad17a656 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 04:22:40 -0500 Subject: fairly good css style for static recentchanges page The customary 2.5 hours of staring at random css turtorials later, here is a pure css latout for the static recentchanges page that, while not as good as the old table layout, it decent. And it works well in lynx. And should generate some pretty nice rss too. --- templates/inlinechange.tmpl | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 templates/inlinechange.tmpl diff --git a/templates/inlinechange.tmpl b/templates/inlinechange.tmpl new file mode 100644 index 000000000..669911184 --- /dev/null +++ b/templates/inlinechange.tmpl @@ -0,0 +1,11 @@ + +

+ + +
Date:
+ + + + +
+ -- cgit v1.2.3 From 38e79f206edf7a6ae80fb2beeb026eadff0a4e0c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 04:44:05 -0500 Subject: more style improvements --- IkiWiki/Plugin/recentchanges.pm | 11 +++++++--- doc/recentchanges.mdwn | 5 ++++- doc/style.css | 48 ++++++++++++++++++++++++++++++----------- templates/change.tmpl | 26 ++++++++++++++++------ templates/inlinechange.tmpl | 6 +----- 5 files changed, 68 insertions(+), 28 deletions(-) diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index fb9841ffd..bdd386c7b 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -68,8 +68,9 @@ sub store ($$) { #{{{ push @{$change->{pages}}, { link => '...' } if $is_excess; # Take the first line of the commit message as a summary. - my $m=shift @{$change->{message}}; - $change->{summary}=$m->{line}; + #my $m=shift @{$change->{message}}; + #$change->{summary}=$m->{line}; + #delete $change->{message} unless @{$change->{message}}; # See if the committer is an openid. my $oiduser=IkiWiki::openiduser($change->{user}); @@ -85,7 +86,11 @@ sub store ($$) { #{{{ # Fill out a template with the change info. my $template=template("change.tmpl", blind_cache => 1); - $template->param(%$change); + $template->param( + %$change, + commitdate => displaytime($change->{when}, "%x %x"), + wikiname => $config{wikiname}, + ); $template->param(baseurl => "$config{url}/") if length $config{url}; IkiWiki::run_hooks(pagetemplate => sub { shift->(page => $page, destpage => $page, template => $template); diff --git a/doc/recentchanges.mdwn b/doc/recentchanges.mdwn index b2c7f5d07..4e9ee91ec 100644 --- a/doc/recentchanges.mdwn +++ b/doc/recentchanges.mdwn @@ -1,2 +1,5 @@ +Recent changes to this wiki: + [[recentchanges pages="*" num=100 template=change]] -[[inline pages="recentchanges/change_* and !*/Discussion" show=0]] +[[inline pages="recentchanges/change_* and !*/Discussion" +template=inlinechange show=0]] diff --git a/doc/style.css b/doc/style.css index 0fa15d2b1..026d2c881 100644 --- a/doc/style.css +++ b/doc/style.css @@ -70,27 +70,49 @@ img { border-style: none; } -/* Stuff for the RecentChanges table. */ -tr.changeheader { +div.recentchanges { + border-style: solid; + border-width: 1px; + overflow: auto; + width: 100%; background: #eee; color: black !important; } -tr.changeinfo { - background: #eee; +.recentchanges .metadata { + padding: 0px 0.5em; +} +.recentchanges .changelog { + font-style: italic; + clear: both; + display: block; + padding: 1px 2px; + background: white !important; color: black !important; } -th.changeheader { - padding: 1px .3em; +.recentchanges .desc { + display: none; +} +.recentchanges .committer { + float: left; + margin: 0; + width: 40%; } -td.changeinfo { - padding: 1px .3em; +.recentchanges .committype { + float: left; + margin: 0; + width: 5%; + font-size: small; } -td.changetime { - white-space: nowrap; - padding: 1px .3em; +.recentchanges .changedate { + float: left; + margin: 0; + width: 35%; + font-size: small; } -td.changelog { - font-style: italic; +.recentchanges .pagelinks { + float: right; + margin: 0; + width: 60%; } /* Used for adding a blog page. */ diff --git a/templates/change.tmpl b/templates/change.tmpl index f02b5eb19..6df365250 100644 --- a/templates/change.tmpl +++ b/templates/change.tmpl @@ -2,16 +2,17 @@ [[meta authorurl=""""""]] -[[meta title=""""""]] -

+[[meta title="""update of 's """]] +


-

-

- +

+ diff --git a/templates/inlinechange.tmpl b/templates/inlinechange.tmpl index 669911184..340a157d1 100644 --- a/templates/inlinechange.tmpl +++ b/templates/inlinechange.tmpl @@ -1,11 +1,7 @@ -
+
-
Date:
- - -
-- cgit v1.2.3 From 85eb1abc6198f16f6f887e811186ea4a7c095e1d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 04:45:54 -0500 Subject: typo --- IkiWiki/Plugin/recentchanges.pm | 2 +- po/bg.po | 168 +++++++++++++++++++--------------------- po/cs.po | 162 +++++++++++++++++++------------------- po/da.po | 160 ++++++++++++++++++-------------------- po/es.po | 162 ++++++++++++++++++-------------------- po/fr.po | 163 ++++++++++++++++++-------------------- po/gu.po | 156 ++++++++++++++++++------------------- po/ikiwiki.pot | 125 ++++++++++++------------------ po/pl.po | 165 +++++++++++++++++++-------------------- po/sv.po | 165 +++++++++++++++++++-------------------- po/vi.po | 159 ++++++++++++++++++------------------- 11 files changed, 746 insertions(+), 841 deletions(-) diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index bdd386c7b..5727f9af1 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -88,7 +88,7 @@ sub store ($$) { #{{{ my $template=template("change.tmpl", blind_cache => 1); $template->param( %$change, - commitdate => displaytime($change->{when}, "%x %x"), + commitdate => displaytime($change->{when}, "%X %x"), wikiname => $config{wikiname}, ); $template->param(baseurl => "$config{url}/") if length $config{url}; diff --git a/po/bg.po b/po/bg.po index 50c2afc46..32132475e 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: 2008-01-09 02:42-0500\n" +"POT-Creation-Date: 2008-01-29 04:45-0500\n" "PO-Revision-Date: 2007-01-12 01:19+0200\n" "Last-Translator: Damyan Ivanov \n" "Language-Team: Bulgarian \n" @@ -16,120 +16,120 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" -#: ../IkiWiki/CGI.pm:172 +#: ../IkiWiki/CGI.pm:125 msgid "You need to log in first." msgstr "Първо трябва да влезете." -#: ../IkiWiki/CGI.pm:202 +#: ../IkiWiki/CGI.pm:155 msgid "login failed, perhaps you need to turn on cookies?" msgstr "" -#: ../IkiWiki/CGI.pm:231 +#: ../IkiWiki/CGI.pm:184 msgid "Login" msgstr "" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:185 #, fuzzy msgid "Preferences" msgstr "Предпочитанията са запазени." -#: ../IkiWiki/CGI.pm:233 +#: ../IkiWiki/CGI.pm:186 msgid "Admin" msgstr "" -#: ../IkiWiki/CGI.pm:289 +#: ../IkiWiki/CGI.pm:235 msgid "Preferences saved." msgstr "Предпочитанията са запазени." -#: ../IkiWiki/CGI.pm:345 +#: ../IkiWiki/CGI.pm:291 #, perl-format msgid "%s is not an editable page" msgstr "" -#: ../IkiWiki/CGI.pm:436 ../IkiWiki/Plugin/brokenlinks.pm:24 -#: ../IkiWiki/Plugin/inline.pm:239 ../IkiWiki/Plugin/opendiscussion.pm:17 +#: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 +#: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 #: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 #: ../IkiWiki/Render.pm:178 msgid "discussion" msgstr "дискусия" -#: ../IkiWiki/CGI.pm:482 +#: ../IkiWiki/CGI.pm:429 #, perl-format msgid "creating %s" msgstr "създаване на %s" -#: ../IkiWiki/CGI.pm:500 ../IkiWiki/CGI.pm:519 ../IkiWiki/CGI.pm:529 -#: ../IkiWiki/CGI.pm:563 ../IkiWiki/CGI.pm:611 +#: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 #, perl-format msgid "editing %s" msgstr "промяна на %s" -#: ../IkiWiki/CGI.pm:705 +#: ../IkiWiki/CGI.pm:646 msgid "You are banned." msgstr "Достъпът ви е забранен." -#: ../IkiWiki/Plugin/aggregate.pm:71 +#: ../IkiWiki/Plugin/aggregate.pm:82 #, fuzzy, perl-format msgid "missing %s parameter" msgstr "липсващ параметър „id” на шаблона" -#: ../IkiWiki/Plugin/aggregate.pm:99 +#: ../IkiWiki/Plugin/aggregate.pm:110 msgid "new feed" msgstr "нов източник" -#: ../IkiWiki/Plugin/aggregate.pm:113 +#: ../IkiWiki/Plugin/aggregate.pm:124 msgid "posts" msgstr "съобщения" -#: ../IkiWiki/Plugin/aggregate.pm:115 +#: ../IkiWiki/Plugin/aggregate.pm:126 msgid "new" msgstr "ново" -#: ../IkiWiki/Plugin/aggregate.pm:231 +#: ../IkiWiki/Plugin/aggregate.pm:236 #, perl-format msgid "expiring %s (%s days old)" msgstr "премахване на „%s” (на %s дни)" -#: ../IkiWiki/Plugin/aggregate.pm:238 +#: ../IkiWiki/Plugin/aggregate.pm:243 #, perl-format msgid "expiring %s" msgstr "премахване на „%s”" -#: ../IkiWiki/Plugin/aggregate.pm:264 +#: ../IkiWiki/Plugin/aggregate.pm:269 #, perl-format msgid "processed ok at %s" msgstr "е обработен нормално от %s" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:274 #, perl-format msgid "checking feed %s ..." msgstr "проверка на източника „%s”" -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:279 #, perl-format msgid "could not find feed at %s" msgstr "не е намерен източник на адрес „%s”" -#: ../IkiWiki/Plugin/aggregate.pm:289 +#: ../IkiWiki/Plugin/aggregate.pm:294 #, fuzzy msgid "feed not found" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/aggregate.pm:300 +#: ../IkiWiki/Plugin/aggregate.pm:305 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:306 +#: ../IkiWiki/Plugin/aggregate.pm:311 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:312 +#: ../IkiWiki/Plugin/aggregate.pm:317 msgid "feed crashed XML::Feed!" msgstr "данните от източника предизвикаха грешка в модула XML::Feed!" -#: ../IkiWiki/Plugin/aggregate.pm:386 +#: ../IkiWiki/Plugin/aggregate.pm:391 #, perl-format msgid "creating new page %s" msgstr "създаване на нова страницa „%s”" @@ -227,11 +227,11 @@ msgstr "" msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:247 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 msgid "Discussion" msgstr "Дискусия" -#: ../IkiWiki/Plugin/inline.pm:461 +#: ../IkiWiki/Plugin/inline.pm:463 msgid "RPC::XML::Client not found, not pinging" msgstr "модулът „RPC::XML::Client” не е намерен; източникът не е проверен" @@ -253,17 +253,17 @@ msgstr "" "грешка при зареждането на perl-модула „Markdown.pm” (%s) или „/usr/bin/" "markdown” (%s)" -#: ../IkiWiki/Plugin/meta.pm:132 +#: ../IkiWiki/Plugin/meta.pm:124 #, fuzzy msgid "stylesheet not found" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/meta.pm:156 +#: ../IkiWiki/Plugin/meta.pm:148 #, fuzzy msgid "redir page not found" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/meta.pm:169 +#: ../IkiWiki/Plugin/meta.pm:161 #, fuzzy msgid "redir cycle is not allowed" msgstr "шаблонът „%s” не е намерен" @@ -388,15 +388,15 @@ msgstr "" msgid "%A night" msgstr "" -#: ../IkiWiki/Plugin/prettydate.pm:74 +#: ../IkiWiki/Plugin/prettydate.pm:78 msgid "at teatime on %A" msgstr "" -#: ../IkiWiki/Plugin/prettydate.pm:78 +#: ../IkiWiki/Plugin/prettydate.pm:82 msgid "at midnight" msgstr "" -#: ../IkiWiki/Plugin/prettydate.pm:81 +#: ../IkiWiki/Plugin/prettydate.pm:85 msgid "at noon on %A" msgstr "" @@ -516,7 +516,7 @@ msgstr "" msgid "code includes disallowed latex commands" msgstr "" -#: ../IkiWiki/Plugin/teximg.pm:97 +#: ../IkiWiki/Plugin/teximg.pm:96 #, fuzzy msgid "failed to generate image from code" msgstr "грешка при запис на файла „%s”: %s" @@ -525,75 +525,51 @@ msgstr "грешка при запис на файла „%s”: %s" msgid "(not toggleable in preview mode)" msgstr "" -#: ../IkiWiki/Rcs/Stub.pm:68 +#: ../IkiWiki/Rcs/Stub.pm:62 msgid "getctime not implemented" msgstr "функцията „getctime” не е реализирана" -#: ../IkiWiki/Rcs/monotone.pm:459 -#, fuzzy -msgid "" -"REV is not set, not running from mtn post-commit hook, cannot send " -"notifications" -msgstr "" -"Променливата от обкръжението „REV” не е указана. Програмата не се изпълнява " -"като „svn post-commit hook”. Няма да бъдат разпратени известявания" - -#: ../IkiWiki/Rcs/monotone.pm:462 -#, fuzzy -msgid "REV is not a valid revision identifier, cannot send notifications" -msgstr "" -"Променливата от обкръжението „REV” не е указана. Програмата не се изпълнява " -"като „svn post-commit hook”. Няма да бъдат разпратени известявания" - -#: ../IkiWiki/Rcs/svn.pm:221 -msgid "" -"REV is not set, not running from svn post-commit hook, cannot send " -"notifications" -msgstr "" -"Променливата от обкръжението „REV” не е указана. Програмата не се изпълнява " -"като „svn post-commit hook”. Няма да бъдат разпратени известявания" - -#: ../IkiWiki/Render.pm:275 ../IkiWiki/Render.pm:296 +#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 #, perl-format msgid "skipping bad filename %s" msgstr "пропускане на невалидното име на файл „%s”" -#: ../IkiWiki/Render.pm:338 +#: ../IkiWiki/Render.pm:339 #, perl-format msgid "removing old page %s" msgstr "премахване на старата страница „%s”" -#: ../IkiWiki/Render.pm:371 +#: ../IkiWiki/Render.pm:372 #, perl-format msgid "scanning %s" msgstr "сканиране на „%s”" -#: ../IkiWiki/Render.pm:376 +#: ../IkiWiki/Render.pm:377 #, perl-format msgid "rendering %s" msgstr "обновяване на страницата „%s”" -#: ../IkiWiki/Render.pm:388 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s, which links to %s" msgstr "обновяване на страницата „%s”, съдържаща препратки към „%s”" -#: ../IkiWiki/Render.pm:405 +#: ../IkiWiki/Render.pm:406 #, perl-format msgid "rendering %s, which depends on %s" msgstr "обновяване на страницата „%s”, зависеща от „%s”" -#: ../IkiWiki/Render.pm:443 +#: ../IkiWiki/Render.pm:444 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "обновяване на „%s” и осъвременяване на обратните връзки" -#: ../IkiWiki/Render.pm:455 +#: ../IkiWiki/Render.pm:456 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "премахване на „%s” понеже не се генерира от „%s”" -#: ../IkiWiki/Render.pm:481 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki: неуспех при обновяване на страницата „%s”" @@ -621,15 +597,6 @@ msgstr "осъвременяване на уики..." msgid "done" msgstr "готово" -#. translators: The three variables are the name of the wiki, -#. translators: A list of one or more pages that were changed, -#. translators: And the name of the user making the change. -#. translators: This is used as the subject of a commit email. -#: ../IkiWiki/UserInfo.pm:145 -#, perl-format -msgid "update of %s's %s by %s" -msgstr "обновяване на страниците от уики „%s”: %s от потребител „%s”" - #: ../IkiWiki/Wrapper.pm:16 #, perl-format msgid "%s doesn't seem to be executable" @@ -645,19 +612,19 @@ msgstr "не е указан файл на обвивката" #. translators: The first parameter is a filename, and the second is #. translators: a (probably not translated) error message. -#: ../IkiWiki/Wrapper.pm:64 +#: ../IkiWiki/Wrapper.pm:48 #, perl-format msgid "failed to write %s: %s" msgstr "грешка при запис на файла „%s”: %s" #. translators: The parameter is a C filename. -#: ../IkiWiki/Wrapper.pm:115 +#: ../IkiWiki/Wrapper.pm:99 #, perl-format msgid "failed to compile %s" msgstr "крешка при компилиране на файла %s" #. translators: The parameter is a filename. -#: ../IkiWiki/Wrapper.pm:135 +#: ../IkiWiki/Wrapper.pm:119 #, perl-format msgid "successfully generated %s" msgstr "успешно генериране на %s" @@ -666,17 +633,17 @@ msgstr "успешно генериране на %s" msgid "usage: ikiwiki [options] source dest" msgstr "формат: ikiwiki [опции] източник местоназначение" -#: ../ikiwiki.in:83 +#: ../ikiwiki.in:81 msgid "usage: --set var=value" msgstr "" -#: ../IkiWiki.pm:129 +#: ../IkiWiki.pm:127 msgid "Must specify url to wiki with --url when using --cgi" msgstr "" "При използване на пареметъра „--cgi” е необходимо да се укаже и " "местоположението на уикито чрез параметъра „--url”" -#: ../IkiWiki.pm:198 ../IkiWiki.pm:199 +#: ../IkiWiki.pm:196 ../IkiWiki.pm:197 msgid "Error" msgstr "Грешка" @@ -684,11 +651,38 @@ msgstr "Грешка" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:722 +#: ../IkiWiki.pm:767 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "открита е циклична завидимост при %s на „%s” на дълбочина %i" +#, fuzzy +#~ msgid "" +#~ "REV is not set, not running from mtn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "Променливата от обкръжението „REV” не е указана. Програмата не се " +#~ "изпълнява като „svn post-commit hook”. Няма да бъдат разпратени " +#~ "известявания" + +#, fuzzy +#~ msgid "REV is not a valid revision identifier, cannot send notifications" +#~ msgstr "" +#~ "Променливата от обкръжението „REV” не е указана. Програмата не се " +#~ "изпълнява като „svn post-commit hook”. Няма да бъдат разпратени " +#~ "известявания" + +#~ msgid "" +#~ "REV is not set, not running from svn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "Променливата от обкръжението „REV” не е указана. Програмата не се " +#~ "изпълнява като „svn post-commit hook”. Няма да бъдат разпратени " +#~ "известявания" + +#~ msgid "update of %s's %s by %s" +#~ msgstr "обновяване на страниците от уики „%s”: %s от потребител „%s”" + #, fuzzy #~ msgid "%s not found" #~ msgstr "шаблонът „%s” не е намерен" diff --git a/po/cs.po b/po/cs.po index 17e27c704..84ece7103 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: 2008-01-09 02:42-0500\n" +"POT-Creation-Date: 2008-01-29 04:45-0500\n" "PO-Revision-Date: 2007-05-09 21:21+0200\n" "Last-Translator: Miroslav Kure \n" "Language-Team: Czech \n" @@ -15,118 +15,118 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../IkiWiki/CGI.pm:172 +#: ../IkiWiki/CGI.pm:125 msgid "You need to log in first." msgstr "Nejprve se musíte přihlásit." -#: ../IkiWiki/CGI.pm:202 +#: ../IkiWiki/CGI.pm:155 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:231 +#: ../IkiWiki/CGI.pm:184 msgid "Login" msgstr "Přihlášení" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:185 msgid "Preferences" msgstr "Předvolby" -#: ../IkiWiki/CGI.pm:233 +#: ../IkiWiki/CGI.pm:186 msgid "Admin" msgstr "Správce" -#: ../IkiWiki/CGI.pm:289 +#: ../IkiWiki/CGI.pm:235 msgid "Preferences saved." msgstr "Nastavení uloženo." -#: ../IkiWiki/CGI.pm:345 +#: ../IkiWiki/CGI.pm:291 #, perl-format msgid "%s is not an editable page" msgstr "%s není editovatelná stránka" -#: ../IkiWiki/CGI.pm:436 ../IkiWiki/Plugin/brokenlinks.pm:24 -#: ../IkiWiki/Plugin/inline.pm:239 ../IkiWiki/Plugin/opendiscussion.pm:17 +#: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 +#: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 #: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 #: ../IkiWiki/Render.pm:178 msgid "discussion" msgstr "diskuse" -#: ../IkiWiki/CGI.pm:482 +#: ../IkiWiki/CGI.pm:429 #, perl-format msgid "creating %s" msgstr "vytvářím %s" -#: ../IkiWiki/CGI.pm:500 ../IkiWiki/CGI.pm:519 ../IkiWiki/CGI.pm:529 -#: ../IkiWiki/CGI.pm:563 ../IkiWiki/CGI.pm:611 +#: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 #, perl-format msgid "editing %s" msgstr "upravuji %s" -#: ../IkiWiki/CGI.pm:705 +#: ../IkiWiki/CGI.pm:646 msgid "You are banned." msgstr "Jste vyhoštěni." -#: ../IkiWiki/Plugin/aggregate.pm:71 +#: ../IkiWiki/Plugin/aggregate.pm:82 #, perl-format msgid "missing %s parameter" msgstr "chybí parametr %s" -#: ../IkiWiki/Plugin/aggregate.pm:99 +#: ../IkiWiki/Plugin/aggregate.pm:110 msgid "new feed" msgstr "nový zdroj" -#: ../IkiWiki/Plugin/aggregate.pm:113 +#: ../IkiWiki/Plugin/aggregate.pm:124 msgid "posts" msgstr "příspěvky" -#: ../IkiWiki/Plugin/aggregate.pm:115 +#: ../IkiWiki/Plugin/aggregate.pm:126 msgid "new" msgstr "nový" -#: ../IkiWiki/Plugin/aggregate.pm:231 +#: ../IkiWiki/Plugin/aggregate.pm:236 #, perl-format msgid "expiring %s (%s days old)" msgstr "expiruji %s (stará %s dnů)" -#: ../IkiWiki/Plugin/aggregate.pm:238 +#: ../IkiWiki/Plugin/aggregate.pm:243 #, perl-format msgid "expiring %s" msgstr "expiruji %s" -#: ../IkiWiki/Plugin/aggregate.pm:264 +#: ../IkiWiki/Plugin/aggregate.pm:269 #, perl-format msgid "processed ok at %s" msgstr "zpracováno ok %s" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:274 #, perl-format msgid "checking feed %s ..." msgstr "kontroluji zdroj %s ..." -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:279 #, perl-format msgid "could not find feed at %s" msgstr "nemohu najít zdroj na %s" -#: ../IkiWiki/Plugin/aggregate.pm:289 +#: ../IkiWiki/Plugin/aggregate.pm:294 msgid "feed not found" msgstr "zdroj nebyl nalezen" -#: ../IkiWiki/Plugin/aggregate.pm:300 +#: ../IkiWiki/Plugin/aggregate.pm:305 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "(neplatné UTF-8 bylo ze zdroje odstraněno)" -#: ../IkiWiki/Plugin/aggregate.pm:306 +#: ../IkiWiki/Plugin/aggregate.pm:311 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:312 +#: ../IkiWiki/Plugin/aggregate.pm:317 msgid "feed crashed XML::Feed!" msgstr "zdroj shodil XML::Feed!" -#: ../IkiWiki/Plugin/aggregate.pm:386 +#: ../IkiWiki/Plugin/aggregate.pm:391 #, perl-format msgid "creating new page %s" msgstr "vytvářím novou stránku %s" @@ -220,11 +220,11 @@ msgstr "Přidat nový příspěvek nazvaný:" msgid "nonexistant template %s" msgstr "neexistující šablona %s" -#: ../IkiWiki/Plugin/inline.pm:247 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 msgid "Discussion" msgstr "Diskuse" -#: ../IkiWiki/Plugin/inline.pm:461 +#: ../IkiWiki/Plugin/inline.pm:463 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client nebyl nalezen, nepinkám" @@ -243,16 +243,16 @@ 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:132 +#: ../IkiWiki/Plugin/meta.pm:124 msgid "stylesheet not found" msgstr "styl nebyl nalezen" -#: ../IkiWiki/Plugin/meta.pm:156 +#: ../IkiWiki/Plugin/meta.pm:148 #, fuzzy msgid "redir page not found" msgstr "zdroj nebyl nalezen" -#: ../IkiWiki/Plugin/meta.pm:169 +#: ../IkiWiki/Plugin/meta.pm:161 #, fuzzy msgid "redir cycle is not allowed" msgstr "zdroj nebyl nalezen" @@ -377,15 +377,15 @@ msgstr "%A pozdě večer" msgid "%A night" msgstr "%A v noci" -#: ../IkiWiki/Plugin/prettydate.pm:74 +#: ../IkiWiki/Plugin/prettydate.pm:78 msgid "at teatime on %A" msgstr "%A během odpoledního čaje" -#: ../IkiWiki/Plugin/prettydate.pm:78 +#: ../IkiWiki/Plugin/prettydate.pm:82 msgid "at midnight" msgstr "o půlnoci" -#: ../IkiWiki/Plugin/prettydate.pm:81 +#: ../IkiWiki/Plugin/prettydate.pm:85 msgid "at noon on %A" msgstr "%A o poledni" @@ -497,7 +497,7 @@ msgstr "chybí hodnoty" msgid "code includes disallowed latex commands" msgstr "" -#: ../IkiWiki/Plugin/teximg.pm:97 +#: ../IkiWiki/Plugin/teximg.pm:96 #, fuzzy msgid "failed to generate image from code" msgstr "nelze změnit velikost: %s" @@ -506,72 +506,51 @@ msgstr "nelze změnit velikost: %s" msgid "(not toggleable in preview mode)" msgstr "" -#: ../IkiWiki/Rcs/Stub.pm:68 +#: ../IkiWiki/Rcs/Stub.pm:62 msgid "getctime not implemented" msgstr "getctime není implementováno" -#: ../IkiWiki/Rcs/monotone.pm:459 -#, fuzzy -msgid "" -"REV is not set, not running from mtn post-commit hook, cannot send " -"notifications" -msgstr "" -"REV není nastavena, není spuštěna ze svn post-commit, nemohu zaslat oznámení" - -#: ../IkiWiki/Rcs/monotone.pm:462 -#, fuzzy -msgid "REV is not a valid revision identifier, cannot send notifications" -msgstr "" -"REV není nastavena, není spuštěna ze svn post-commit, nemohu zaslat oznámení" - -#: ../IkiWiki/Rcs/svn.pm:221 -msgid "" -"REV is not set, not running from svn post-commit hook, cannot send " -"notifications" -msgstr "" -"REV není nastavena, není spuštěna ze svn post-commit, nemohu zaslat oznámení" - -#: ../IkiWiki/Render.pm:275 ../IkiWiki/Render.pm:296 +#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 #, perl-format msgid "skipping bad filename %s" msgstr "přeskakuji chybné jméno souboru %s" -#: ../IkiWiki/Render.pm:338 +#: ../IkiWiki/Render.pm:339 #, perl-format msgid "removing old page %s" msgstr "odstraňuji starou stránku %s" -#: ../IkiWiki/Render.pm:371 +#: ../IkiWiki/Render.pm:372 #, perl-format msgid "scanning %s" msgstr "prohledávám %s" -#: ../IkiWiki/Render.pm:376 +#: ../IkiWiki/Render.pm:377 #, perl-format msgid "rendering %s" msgstr "zpracovávám %s" -#: ../IkiWiki/Render.pm:388 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s, which links to %s" msgstr "zpracovávám %s, která odkazuje na %s" -#: ../IkiWiki/Render.pm:405 +#: ../IkiWiki/Render.pm:406 #, perl-format msgid "rendering %s, which depends on %s" msgstr "zpracovávám %s, která závisí na %s" -#: ../IkiWiki/Render.pm:443 +#: ../IkiWiki/Render.pm:444 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "zpracovávám %s, aby se aktualizovaly zpětné odkazy" -#: ../IkiWiki/Render.pm:455 +#: ../IkiWiki/Render.pm:456 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "odstraňuji %s, již není zpracovávána %s" -#: ../IkiWiki/Render.pm:481 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki: nelze zpracovat %s" @@ -599,15 +578,6 @@ msgstr "obnovuji wiki..." msgid "done" msgstr "hotovo" -#. translators: The three variables are the name of the wiki, -#. translators: A list of one or more pages that were changed, -#. translators: And the name of the user making the change. -#. translators: This is used as the subject of a commit email. -#: ../IkiWiki/UserInfo.pm:145 -#, perl-format -msgid "update of %s's %s by %s" -msgstr "aktualizace %s (%s) uživatelem %s" - #: ../IkiWiki/Wrapper.pm:16 #, perl-format msgid "%s doesn't seem to be executable" @@ -623,19 +593,19 @@ msgstr "jméno souboru s obalem nebylo zadáno" #. translators: The first parameter is a filename, and the second is #. translators: a (probably not translated) error message. -#: ../IkiWiki/Wrapper.pm:64 +#: ../IkiWiki/Wrapper.pm:48 #, perl-format msgid "failed to write %s: %s" msgstr "nelze zapsat %s: %s" #. translators: The parameter is a C filename. -#: ../IkiWiki/Wrapper.pm:115 +#: ../IkiWiki/Wrapper.pm:99 #, perl-format msgid "failed to compile %s" msgstr "nelze zkompilovat %s" #. translators: The parameter is a filename. -#: ../IkiWiki/Wrapper.pm:135 +#: ../IkiWiki/Wrapper.pm:119 #, perl-format msgid "successfully generated %s" msgstr "%s byl úspěšně vytvořen" @@ -644,15 +614,15 @@ msgstr "%s byl úspěšně vytvořen" msgid "usage: ikiwiki [options] source dest" msgstr "použití: ikiwiki [volby] zdroj cíl" -#: ../ikiwiki.in:83 +#: ../ikiwiki.in:81 msgid "usage: --set var=value" msgstr "" -#: ../IkiWiki.pm:129 +#: ../IkiWiki.pm:127 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:198 ../IkiWiki.pm:199 +#: ../IkiWiki.pm:196 ../IkiWiki.pm:197 msgid "Error" msgstr "Chyba" @@ -660,11 +630,35 @@ msgstr "Chyba" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:722 +#: ../IkiWiki.pm:767 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "Byla rozpoznána smyčka direktivy %s na %s v hloubce %i" +#, fuzzy +#~ msgid "" +#~ "REV is not set, not running from mtn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "REV není nastavena, není spuštěna ze svn post-commit, nemohu zaslat " +#~ "oznámení" + +#, fuzzy +#~ msgid "REV is not a valid revision identifier, cannot send notifications" +#~ msgstr "" +#~ "REV není nastavena, není spuštěna ze svn post-commit, nemohu zaslat " +#~ "oznámení" + +#~ msgid "" +#~ "REV is not set, not running from svn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "REV není nastavena, není spuštěna ze svn post-commit, nemohu zaslat " +#~ "oznámení" + +#~ msgid "update of %s's %s by %s" +#~ msgstr "aktualizace %s (%s) uživatelem %s" + #~ msgid "%s not found" #~ msgstr "%s nenalezen" diff --git a/po/da.po b/po/da.po index 256ae21df..8157b963d 100644 --- a/po/da.po +++ b/po/da.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-01-09 02:42-0500\n" +"POT-Creation-Date: 2008-01-29 04:45-0500\n" "PO-Revision-Date: 2007-10-16 23:07+0100\n" "Last-Translator: Jonas Smedegaard \n" "Language-Team: Danish \n" @@ -18,118 +18,118 @@ msgstr "" "X-Poedit-Country: DENMARK\n" "X-Poedit-SourceCharset: utf-8\n" -#: ../IkiWiki/CGI.pm:172 +#: ../IkiWiki/CGI.pm:125 msgid "You need to log in first." msgstr "Du skal først logge på." -#: ../IkiWiki/CGI.pm:202 +#: ../IkiWiki/CGI.pm:155 msgid "login failed, perhaps you need to turn on cookies?" msgstr "Pålogning fejlede, måske skal du tillade infokager (cookies)?" -#: ../IkiWiki/CGI.pm:231 +#: ../IkiWiki/CGI.pm:184 msgid "Login" msgstr "Pålogning" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:185 msgid "Preferences" msgstr "Indstillinger" -#: ../IkiWiki/CGI.pm:233 +#: ../IkiWiki/CGI.pm:186 msgid "Admin" msgstr "Admin" -#: ../IkiWiki/CGI.pm:289 +#: ../IkiWiki/CGI.pm:235 msgid "Preferences saved." msgstr "Indstillinger gemt" -#: ../IkiWiki/CGI.pm:345 +#: ../IkiWiki/CGI.pm:291 #, perl-format msgid "%s is not an editable page" msgstr "%s er ikke en redigérbar side" -#: ../IkiWiki/CGI.pm:436 ../IkiWiki/Plugin/brokenlinks.pm:24 -#: ../IkiWiki/Plugin/inline.pm:239 ../IkiWiki/Plugin/opendiscussion.pm:17 +#: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 +#: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 #: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 #: ../IkiWiki/Render.pm:178 msgid "discussion" msgstr "diskussion" -#: ../IkiWiki/CGI.pm:482 +#: ../IkiWiki/CGI.pm:429 #, perl-format msgid "creating %s" msgstr "opretter %s" -#: ../IkiWiki/CGI.pm:500 ../IkiWiki/CGI.pm:519 ../IkiWiki/CGI.pm:529 -#: ../IkiWiki/CGI.pm:563 ../IkiWiki/CGI.pm:611 +#: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 #, perl-format msgid "editing %s" msgstr "redigerer %s" -#: ../IkiWiki/CGI.pm:705 +#: ../IkiWiki/CGI.pm:646 msgid "You are banned." msgstr "Du er banlyst." -#: ../IkiWiki/Plugin/aggregate.pm:71 +#: ../IkiWiki/Plugin/aggregate.pm:82 #, perl-format msgid "missing %s parameter" msgstr "mangler parametren %s" -#: ../IkiWiki/Plugin/aggregate.pm:99 +#: ../IkiWiki/Plugin/aggregate.pm:110 msgid "new feed" msgstr "ny fødning" -#: ../IkiWiki/Plugin/aggregate.pm:113 +#: ../IkiWiki/Plugin/aggregate.pm:124 msgid "posts" msgstr "indlæg" -#: ../IkiWiki/Plugin/aggregate.pm:115 +#: ../IkiWiki/Plugin/aggregate.pm:126 msgid "new" msgstr "nyt" -#: ../IkiWiki/Plugin/aggregate.pm:231 +#: ../IkiWiki/Plugin/aggregate.pm:236 #, perl-format msgid "expiring %s (%s days old)" msgstr "udløber %s (%s dage gammel)" -#: ../IkiWiki/Plugin/aggregate.pm:238 +#: ../IkiWiki/Plugin/aggregate.pm:243 #, perl-format msgid "expiring %s" msgstr "udløber %s" -#: ../IkiWiki/Plugin/aggregate.pm:264 +#: ../IkiWiki/Plugin/aggregate.pm:269 #, perl-format msgid "processed ok at %s" msgstr "korrekt dannet ved %s" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:274 #, perl-format msgid "checking feed %s ..." msgstr "undersøger fødning %s ..." -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:279 #, perl-format msgid "could not find feed at %s" msgstr "kunne ikke finde fødning ved %s" -#: ../IkiWiki/Plugin/aggregate.pm:289 +#: ../IkiWiki/Plugin/aggregate.pm:294 msgid "feed not found" msgstr "fødning ikke fundet" -#: ../IkiWiki/Plugin/aggregate.pm:300 +#: ../IkiWiki/Plugin/aggregate.pm:305 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "(defekt UTF-8 fjernet fra fødning)" -#: ../IkiWiki/Plugin/aggregate.pm:306 +#: ../IkiWiki/Plugin/aggregate.pm:311 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:312 +#: ../IkiWiki/Plugin/aggregate.pm:317 msgid "feed crashed XML::Feed!" msgstr "fødning fik XML::Feed til at bryde sammen!" -#: ../IkiWiki/Plugin/aggregate.pm:386 +#: ../IkiWiki/Plugin/aggregate.pm:391 #, perl-format msgid "creating new page %s" msgstr "opretter ny side %s" @@ -223,11 +223,11 @@ msgstr "Tilføj nyt indlæg med følgende titel:" msgid "nonexistant template %s" msgstr "ikke-eksisterende skabelon: %s" -#: ../IkiWiki/Plugin/inline.pm:247 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 msgid "Discussion" msgstr "Diskussion" -#: ../IkiWiki/Plugin/inline.pm:461 +#: ../IkiWiki/Plugin/inline.pm:463 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client ikke fundet, pinger ikke" @@ -247,16 +247,16 @@ msgstr "" "Indlæsning af perl-modulet Markdown.pm (%s) eller /usr/bin/markdown (%s) " "mislykkedes" -#: ../IkiWiki/Plugin/meta.pm:132 +#: ../IkiWiki/Plugin/meta.pm:124 msgid "stylesheet not found" msgstr "stilsnit (stylesheet) ikke fundet" -#: ../IkiWiki/Plugin/meta.pm:156 +#: ../IkiWiki/Plugin/meta.pm:148 #, fuzzy msgid "redir page not found" msgstr "fødning ikke fundet" -#: ../IkiWiki/Plugin/meta.pm:169 +#: ../IkiWiki/Plugin/meta.pm:161 #, fuzzy msgid "redir cycle is not allowed" msgstr "fødning ikke fundet" @@ -381,15 +381,15 @@ msgstr "sent %A aften" msgid "%A night" msgstr "%A nat" -#: ../IkiWiki/Plugin/prettydate.pm:74 +#: ../IkiWiki/Plugin/prettydate.pm:78 msgid "at teatime on %A" msgstr "ved tetid %A" -#: ../IkiWiki/Plugin/prettydate.pm:78 +#: ../IkiWiki/Plugin/prettydate.pm:82 msgid "at midnight" msgstr "ved midnat" -#: ../IkiWiki/Plugin/prettydate.pm:81 +#: ../IkiWiki/Plugin/prettydate.pm:85 msgid "at noon on %A" msgstr "midt på dagen %A" @@ -500,7 +500,7 @@ msgstr "manglende tex-kode" msgid "code includes disallowed latex commands" msgstr "kode indeholder ikke-tilladte latec-kommandoer" -#: ../IkiWiki/Plugin/teximg.pm:97 +#: ../IkiWiki/Plugin/teximg.pm:96 msgid "failed to generate image from code" msgstr "billedopbygning fra kode mislykkedes" @@ -508,72 +508,51 @@ msgstr "billedopbygning fra kode mislykkedes" msgid "(not toggleable in preview mode)" msgstr "" -#: ../IkiWiki/Rcs/Stub.pm:68 +#: ../IkiWiki/Rcs/Stub.pm:62 msgid "getctime not implemented" msgstr "getctime ikke implementeret" -#: ../IkiWiki/Rcs/monotone.pm:459 -msgid "" -"REV is not set, not running from mtn post-commit hook, cannot send " -"notifications" -msgstr "" -"REV ikke angivet, afvikles ikke fra mtn post-commit hook, kan ikke sende " -"orienteringer" - -#: ../IkiWiki/Rcs/monotone.pm:462 -msgid "REV is not a valid revision identifier, cannot send notifications" -msgstr "" -"REV er ikke en gyldig revisionsidentifikation, kan ikke sende orienteringer" - -#: ../IkiWiki/Rcs/svn.pm:221 -msgid "" -"REV is not set, not running from svn post-commit hook, cannot send " -"notifications" -msgstr "" -"REV ikke angivet, afvikles ikke fra svn post-commit hook, kan ikke sende " -"orienteringer" - -#: ../IkiWiki/Render.pm:275 ../IkiWiki/Render.pm:296 +#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 #, perl-format msgid "skipping bad filename %s" msgstr "udelader forkert filnavn %s" -#: ../IkiWiki/Render.pm:338 +#: ../IkiWiki/Render.pm:339 #, perl-format msgid "removing old page %s" msgstr "fjerner gammel side %s" -#: ../IkiWiki/Render.pm:371 +#: ../IkiWiki/Render.pm:372 #, perl-format msgid "scanning %s" msgstr "gennemlæser %s" -#: ../IkiWiki/Render.pm:376 +#: ../IkiWiki/Render.pm:377 #, perl-format msgid "rendering %s" msgstr "danner %s" -#: ../IkiWiki/Render.pm:388 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s, which links to %s" msgstr "danner %s, som henviser til %s" -#: ../IkiWiki/Render.pm:405 +#: ../IkiWiki/Render.pm:406 #, perl-format msgid "rendering %s, which depends on %s" msgstr "danner %s, som afhænger af %s" -#: ../IkiWiki/Render.pm:443 +#: ../IkiWiki/Render.pm:444 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "danner %s, for at opdatere dens krydshenvisninger (backlinks)" -#: ../IkiWiki/Render.pm:455 +#: ../IkiWiki/Render.pm:456 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "fjerner %s, ikke længere dannet af %s" -#: ../IkiWiki/Render.pm:481 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki: kan ikke danne %s" @@ -601,15 +580,6 @@ msgstr "genopfrisker wiki..." msgid "done" msgstr "færdig" -#. translators: The three variables are the name of the wiki, -#. translators: A list of one or more pages that were changed, -#. translators: And the name of the user making the change. -#. translators: This is used as the subject of a commit email. -#: ../IkiWiki/UserInfo.pm:145 -#, perl-format -msgid "update of %s's %s by %s" -msgstr "opdatering på %s på %s af %s" - #: ../IkiWiki/Wrapper.pm:16 #, perl-format msgid "%s doesn't seem to be executable" @@ -625,19 +595,19 @@ msgstr "wrapper-navn ikke angivet" #. translators: The first parameter is a filename, and the second is #. translators: a (probably not translated) error message. -#: ../IkiWiki/Wrapper.pm:64 +#: ../IkiWiki/Wrapper.pm:48 #, perl-format msgid "failed to write %s: %s" msgstr "skrivning ad %s mislykkedes: %s" #. translators: The parameter is a C filename. -#: ../IkiWiki/Wrapper.pm:115 +#: ../IkiWiki/Wrapper.pm:99 #, perl-format msgid "failed to compile %s" msgstr "kompilering af %s mislykkedes" #. translators: The parameter is a filename. -#: ../IkiWiki/Wrapper.pm:135 +#: ../IkiWiki/Wrapper.pm:119 #, perl-format msgid "successfully generated %s" msgstr "Korrekt bygget %s" @@ -646,15 +616,15 @@ msgstr "Korrekt bygget %s" msgid "usage: ikiwiki [options] source dest" msgstr "brug: ikiwiki [valg] kilde mål" -#: ../ikiwiki.in:83 +#: ../ikiwiki.in:81 msgid "usage: --set var=value" msgstr "brug: --set var=værdi" -#: ../IkiWiki.pm:129 +#: ../IkiWiki.pm:127 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:198 ../IkiWiki.pm:199 +#: ../IkiWiki.pm:196 ../IkiWiki.pm:197 msgid "Error" msgstr "Fejl" @@ -662,7 +632,29 @@ msgstr "Fejl" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:722 +#: ../IkiWiki.pm:767 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "%s forudberegningssløkke fundet på %s ved dybde %i" + +#~ msgid "" +#~ "REV is not set, not running from mtn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "REV ikke angivet, afvikles ikke fra mtn post-commit hook, kan ikke sende " +#~ "orienteringer" + +#~ msgid "REV is not a valid revision identifier, cannot send notifications" +#~ msgstr "" +#~ "REV er ikke en gyldig revisionsidentifikation, kan ikke sende " +#~ "orienteringer" + +#~ msgid "" +#~ "REV is not set, not running from svn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "REV ikke angivet, afvikles ikke fra svn post-commit hook, kan ikke sende " +#~ "orienteringer" + +#~ msgid "update of %s's %s by %s" +#~ msgstr "opdatering på %s på %s af %s" diff --git a/po/es.po b/po/es.po index effca6032..f93a518a5 100644 --- a/po/es.po +++ b/po/es.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: es\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-01-09 02:42-0500\n" +"POT-Creation-Date: 2008-01-29 04:45-0500\n" "PO-Revision-Date: 2007-12-20 11:25+0100\n" "Last-Translator: Víctor Moral \n" "Language-Team: Spanish \n" @@ -15,119 +15,119 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../IkiWiki/CGI.pm:172 +#: ../IkiWiki/CGI.pm:125 msgid "You need to log in first." msgstr "Antes es necesario identificarse." -#: ../IkiWiki/CGI.pm:202 +#: ../IkiWiki/CGI.pm:155 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:231 +#: ../IkiWiki/CGI.pm:184 msgid "Login" msgstr "Identificación" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:185 msgid "Preferences" msgstr "Preferencias" -#: ../IkiWiki/CGI.pm:233 +#: ../IkiWiki/CGI.pm:186 msgid "Admin" msgstr "Administración" -#: ../IkiWiki/CGI.pm:289 +#: ../IkiWiki/CGI.pm:235 msgid "Preferences saved." msgstr "Las preferencias se han guardado." -#: ../IkiWiki/CGI.pm:345 +#: ../IkiWiki/CGI.pm:291 #, perl-format msgid "%s is not an editable page" msgstr "la página %s no es modificable" -#: ../IkiWiki/CGI.pm:436 ../IkiWiki/Plugin/brokenlinks.pm:24 -#: ../IkiWiki/Plugin/inline.pm:239 ../IkiWiki/Plugin/opendiscussion.pm:17 +#: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 +#: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 #: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 #: ../IkiWiki/Render.pm:178 msgid "discussion" msgstr "comentarios" -#: ../IkiWiki/CGI.pm:482 +#: ../IkiWiki/CGI.pm:429 #, perl-format msgid "creating %s" msgstr "creando página %s" -#: ../IkiWiki/CGI.pm:500 ../IkiWiki/CGI.pm:519 ../IkiWiki/CGI.pm:529 -#: ../IkiWiki/CGI.pm:563 ../IkiWiki/CGI.pm:611 +#: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 #, perl-format msgid "editing %s" msgstr "modificando página %s" -#: ../IkiWiki/CGI.pm:705 +#: ../IkiWiki/CGI.pm:646 msgid "You are banned." msgstr "Ha sido expulsado." -#: ../IkiWiki/Plugin/aggregate.pm:71 +#: ../IkiWiki/Plugin/aggregate.pm:82 #, perl-format msgid "missing %s parameter" msgstr "falta el parámetro %s" -#: ../IkiWiki/Plugin/aggregate.pm:99 +#: ../IkiWiki/Plugin/aggregate.pm:110 msgid "new feed" msgstr "nueva entrada" -#: ../IkiWiki/Plugin/aggregate.pm:113 +#: ../IkiWiki/Plugin/aggregate.pm:124 msgid "posts" msgstr "entradas" -#: ../IkiWiki/Plugin/aggregate.pm:115 +#: ../IkiWiki/Plugin/aggregate.pm:126 msgid "new" msgstr "nuevo" -#: ../IkiWiki/Plugin/aggregate.pm:231 +#: ../IkiWiki/Plugin/aggregate.pm:236 #, perl-format msgid "expiring %s (%s days old)" msgstr "%s caducada (%s días de antigüedad)" -#: ../IkiWiki/Plugin/aggregate.pm:238 +#: ../IkiWiki/Plugin/aggregate.pm:243 #, perl-format msgid "expiring %s" msgstr "%s caducada" -#: ../IkiWiki/Plugin/aggregate.pm:264 +#: ../IkiWiki/Plugin/aggregate.pm:269 #, perl-format msgid "processed ok at %s" msgstr "proceso completado con éxito a %s" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:274 #, perl-format msgid "checking feed %s ..." msgstr "comprobando fuente de datos %s ..." -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:279 #, perl-format msgid "could not find feed at %s" msgstr "no puedo encontrar la fuente de datos en %s" -#: ../IkiWiki/Plugin/aggregate.pm:289 +#: ../IkiWiki/Plugin/aggregate.pm:294 msgid "feed not found" msgstr "fuente de datos no encontrada" -#: ../IkiWiki/Plugin/aggregate.pm:300 +#: ../IkiWiki/Plugin/aggregate.pm:305 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "(una secuencia UTF-8 inválida ha sido eliminada de la fuente de datos)" -#: ../IkiWiki/Plugin/aggregate.pm:306 +#: ../IkiWiki/Plugin/aggregate.pm:311 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:312 +#: ../IkiWiki/Plugin/aggregate.pm:317 msgid "feed crashed XML::Feed!" msgstr "¡ la fuente de datos ha provocado un error fatal en XML::Feed!" -#: ../IkiWiki/Plugin/aggregate.pm:386 +#: ../IkiWiki/Plugin/aggregate.pm:391 #, perl-format msgid "creating new page %s" msgstr "creando nueva página %s" @@ -221,11 +221,11 @@ msgstr "Añadir una entrada nueva titulada:" msgid "nonexistant template %s" msgstr "la plantilla %s no existe " -#: ../IkiWiki/Plugin/inline.pm:247 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 msgid "Discussion" msgstr "Comentarios" -#: ../IkiWiki/Plugin/inline.pm:461 +#: ../IkiWiki/Plugin/inline.pm:463 msgid "RPC::XML::Client not found, not pinging" msgstr "No he encontrado el componente RPC::XML::Client, no envío señal alguna" @@ -245,15 +245,15 @@ 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:132 +#: ../IkiWiki/Plugin/meta.pm:124 msgid "stylesheet not found" msgstr "hoja de estilo no encontrada " -#: ../IkiWiki/Plugin/meta.pm:156 +#: ../IkiWiki/Plugin/meta.pm:148 msgid "redir page not found" msgstr "falta la página a donde redirigir" -#: ../IkiWiki/Plugin/meta.pm:169 +#: ../IkiWiki/Plugin/meta.pm:161 msgid "redir cycle is not allowed" msgstr "ciclo de redirección no permitido" @@ -377,15 +377,15 @@ msgstr "a última hora de la tarde del $A" msgid "%A night" msgstr "la noche del %A" -#: ../IkiWiki/Plugin/prettydate.pm:74 +#: ../IkiWiki/Plugin/prettydate.pm:78 msgid "at teatime on %A" msgstr "el %A a la hora del té" -#: ../IkiWiki/Plugin/prettydate.pm:78 +#: ../IkiWiki/Plugin/prettydate.pm:82 msgid "at midnight" msgstr "a medianoche" -#: ../IkiWiki/Plugin/prettydate.pm:81 +#: ../IkiWiki/Plugin/prettydate.pm:85 msgid "at noon on %A" msgstr "el %A a media tarde" @@ -496,7 +496,7 @@ msgstr "falta el código tex" msgid "code includes disallowed latex commands" msgstr "el código incluye órdenes latex anuladas" -#: ../IkiWiki/Plugin/teximg.pm:97 +#: ../IkiWiki/Plugin/teximg.pm:96 msgid "failed to generate image from code" msgstr "no he podido crear la imagen desde el código" @@ -504,75 +504,53 @@ msgstr "no he podido crear la imagen desde el código" msgid "(not toggleable in preview mode)" msgstr "(no se puede cambiar en el modo de previsualización)" -#: ../IkiWiki/Rcs/Stub.pm:68 +#: ../IkiWiki/Rcs/Stub.pm:62 msgid "getctime not implemented" msgstr "la funcionalidad getctime no está incluida" -#: ../IkiWiki/Rcs/monotone.pm:459 -msgid "" -"REV is not set, not running from mtn post-commit hook, cannot send " -"notifications" -msgstr "" -"La variable de entorno REV no está definida, por lo que no puede funcionar " -"svn post-commit desde monotone; no puedo enviar ninguna notificación" - -#: ../IkiWiki/Rcs/monotone.pm:462 -msgid "REV is not a valid revision identifier, cannot send notifications" -msgstr "" -"REV no es un identificador de revisión válido, por lo que no puedo enviar " -"ninguna notificación" - -#: ../IkiWiki/Rcs/svn.pm:221 -msgid "" -"REV is not set, not running from svn post-commit hook, cannot send " -"notifications" -msgstr "" -"La variable de entorno REV no está definida, por lo que no puede funcionar " -"svn post-commit; no puedo enviar ninguna notificación" - -#: ../IkiWiki/Render.pm:275 ../IkiWiki/Render.pm:296 +#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 #, perl-format msgid "skipping bad filename %s" msgstr "ignorando el archivo %s porque su nombre no es correcto" -#: ../IkiWiki/Render.pm:338 +#: ../IkiWiki/Render.pm:339 #, perl-format msgid "removing old page %s" msgstr "eliminando la antigua página %s" -#: ../IkiWiki/Render.pm:371 +#: ../IkiWiki/Render.pm:372 #, perl-format msgid "scanning %s" msgstr "explorando %s" -#: ../IkiWiki/Render.pm:376 +#: ../IkiWiki/Render.pm:377 #, perl-format msgid "rendering %s" msgstr "convirtiendo %s" -#: ../IkiWiki/Render.pm:388 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s, which links to %s" msgstr "convirtiendo la página %s, la cual referencia a %s" -#: ../IkiWiki/Render.pm:405 +#: ../IkiWiki/Render.pm:406 #, perl-format msgid "rendering %s, which depends on %s" msgstr "convirtiendo la página %s, la cual depende de %s" -#: ../IkiWiki/Render.pm:443 +#: ../IkiWiki/Render.pm:444 #, perl-format msgid "rendering %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:455 +#: ../IkiWiki/Render.pm:456 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "eliminando la página %s puesto que ya no se deriva de %s" -#: ../IkiWiki/Render.pm:481 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikwiki: no puedo convertir la página %s" @@ -600,15 +578,6 @@ msgstr "actualizando el wiki.." msgid "done" msgstr "completado" -#. translators: The three variables are the name of the wiki, -#. translators: A list of one or more pages that were changed, -#. translators: And the name of the user making the change. -#. translators: This is used as the subject of a commit email. -#: ../IkiWiki/UserInfo.pm:145 -#, perl-format -msgid "update of %s's %s by %s" -msgstr "actualizado el wiki %s y la página %s por el usuario %s" - #: ../IkiWiki/Wrapper.pm:16 #, perl-format msgid "%s doesn't seem to be executable" @@ -625,19 +594,19 @@ msgstr "el programa envoltorio no ha sido especificado" #. translators: The first parameter is a filename, and the second is #. translators: a (probably not translated) error message. -#: ../IkiWiki/Wrapper.pm:64 +#: ../IkiWiki/Wrapper.pm:48 #, perl-format msgid "failed to write %s: %s" msgstr "no puedo escribir en %s: %s" #. translators: The parameter is a C filename. -#: ../IkiWiki/Wrapper.pm:115 +#: ../IkiWiki/Wrapper.pm:99 #, 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:135 +#: ../IkiWiki/Wrapper.pm:119 #, perl-format msgid "successfully generated %s" msgstr "creado con éxito el programa envoltorio %s" @@ -646,17 +615,17 @@ msgstr "creado con éxito el programa envoltorio %s" msgid "usage: ikiwiki [options] source dest" msgstr "uso: ikiwiki [opciones] origen destino" -#: ../ikiwiki.in:83 +#: ../ikiwiki.in:81 msgid "usage: --set var=value" msgstr "uso: --set variable=valor" -#: ../IkiWiki.pm:129 +#: ../IkiWiki.pm:127 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:198 ../IkiWiki.pm:199 +#: ../IkiWiki.pm:196 ../IkiWiki.pm:197 msgid "Error" msgstr "Error" @@ -664,13 +633,36 @@ msgstr "Error" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:722 +#: ../IkiWiki.pm:767 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "" "se ha detectado un bucle de preprocesado %s en la página %s en la vuelta " "número %i" +#~ msgid "" +#~ "REV is not set, not running from mtn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "La variable de entorno REV no está definida, por lo que no puede " +#~ "funcionar svn post-commit desde monotone; no puedo enviar ninguna " +#~ "notificación" + +#~ msgid "REV is not a valid revision identifier, cannot send notifications" +#~ msgstr "" +#~ "REV no es un identificador de revisión válido, por lo que no puedo enviar " +#~ "ninguna notificación" + +#~ msgid "" +#~ "REV is not set, not running from svn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "La variable de entorno REV no está definida, por lo que no puede " +#~ "funcionar svn post-commit; no puedo enviar ninguna notificación" + +#~ msgid "update of %s's %s by %s" +#~ msgstr "actualizado el wiki %s y la página %s por el usuario %s" + #~ msgid "link is no longer supported" #~ msgstr "el metadato link ya no puede usarse" diff --git a/po/fr.po b/po/fr.po index aed567f39..b6769a969 100644 --- a/po/fr.po +++ b/po/fr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-01-09 02:42-0500\n" +"POT-Creation-Date: 2008-01-29 04:45-0500\n" "PO-Revision-Date: 2007-08-28 21:05+0200\n" "Last-Translator: Cyril Brulebois \n" "Language-Team: French \n" @@ -17,119 +17,119 @@ msgstr "" "X-Poedit-Language: French\n" "X-Poedit-Country: FRANCE\n" -#: ../IkiWiki/CGI.pm:172 +#: ../IkiWiki/CGI.pm:125 msgid "You need to log in first." msgstr "Vous devez d'abord vous identifier." -#: ../IkiWiki/CGI.pm:202 +#: ../IkiWiki/CGI.pm:155 msgid "login failed, perhaps you need to turn on cookies?" msgstr "" "Échec de l'identification, vous devriez peut-être autoriser les cookies." -#: ../IkiWiki/CGI.pm:231 +#: ../IkiWiki/CGI.pm:184 msgid "Login" msgstr "S’identifier" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:185 msgid "Preferences" msgstr "Préférences" -#: ../IkiWiki/CGI.pm:233 +#: ../IkiWiki/CGI.pm:186 msgid "Admin" msgstr "Administrateur" -#: ../IkiWiki/CGI.pm:289 +#: ../IkiWiki/CGI.pm:235 msgid "Preferences saved." msgstr "Les préférences ont été enregistrées." -#: ../IkiWiki/CGI.pm:345 +#: ../IkiWiki/CGI.pm:291 #, perl-format msgid "%s is not an editable page" msgstr "%s n'est pas une page éditable" -#: ../IkiWiki/CGI.pm:436 ../IkiWiki/Plugin/brokenlinks.pm:24 -#: ../IkiWiki/Plugin/inline.pm:239 ../IkiWiki/Plugin/opendiscussion.pm:17 +#: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 +#: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 #: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 #: ../IkiWiki/Render.pm:178 msgid "discussion" msgstr "Discussion" -#: ../IkiWiki/CGI.pm:482 +#: ../IkiWiki/CGI.pm:429 #, perl-format msgid "creating %s" msgstr "Création de %s" -#: ../IkiWiki/CGI.pm:500 ../IkiWiki/CGI.pm:519 ../IkiWiki/CGI.pm:529 -#: ../IkiWiki/CGI.pm:563 ../IkiWiki/CGI.pm:611 +#: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 #, perl-format msgid "editing %s" msgstr "Édition de %s" -#: ../IkiWiki/CGI.pm:705 +#: ../IkiWiki/CGI.pm:646 msgid "You are banned." msgstr "Vous avez été banni." -#: ../IkiWiki/Plugin/aggregate.pm:71 +#: ../IkiWiki/Plugin/aggregate.pm:82 #, perl-format msgid "missing %s parameter" msgstr "Paramètre %s manquant" -#: ../IkiWiki/Plugin/aggregate.pm:99 +#: ../IkiWiki/Plugin/aggregate.pm:110 msgid "new feed" msgstr "Nouveau flux" -#: ../IkiWiki/Plugin/aggregate.pm:113 +#: ../IkiWiki/Plugin/aggregate.pm:124 msgid "posts" msgstr "Articles" -#: ../IkiWiki/Plugin/aggregate.pm:115 +#: ../IkiWiki/Plugin/aggregate.pm:126 msgid "new" msgstr "Nouveau" -#: ../IkiWiki/Plugin/aggregate.pm:231 +#: ../IkiWiki/Plugin/aggregate.pm:236 #, perl-format msgid "expiring %s (%s days old)" msgstr "Fin de validité de %s (date de %s jours)" -#: ../IkiWiki/Plugin/aggregate.pm:238 +#: ../IkiWiki/Plugin/aggregate.pm:243 #, perl-format msgid "expiring %s" msgstr "Fin de validité de %s" -#: ../IkiWiki/Plugin/aggregate.pm:264 +#: ../IkiWiki/Plugin/aggregate.pm:269 #, perl-format msgid "processed ok at %s" msgstr "A été correctement traité à %s" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:274 #, perl-format msgid "checking feed %s ..." msgstr "Vérification du flux %s..." -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:279 #, perl-format msgid "could not find feed at %s" msgstr "Impossible de trouver de flux à %s" -#: ../IkiWiki/Plugin/aggregate.pm:289 +#: ../IkiWiki/Plugin/aggregate.pm:294 msgid "feed not found" msgstr "Flux introuvable " -#: ../IkiWiki/Plugin/aggregate.pm:300 +#: ../IkiWiki/Plugin/aggregate.pm:305 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "(chaîne UTF-8 non valable supprimée du flux)" -#: ../IkiWiki/Plugin/aggregate.pm:306 +#: ../IkiWiki/Plugin/aggregate.pm:311 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:312 +#: ../IkiWiki/Plugin/aggregate.pm:317 msgid "feed crashed XML::Feed!" msgstr "Plantage du flux XML::Feed !" -#: ../IkiWiki/Plugin/aggregate.pm:386 +#: ../IkiWiki/Plugin/aggregate.pm:391 #, perl-format msgid "creating new page %s" msgstr "Création de la nouvelle page %s" @@ -225,11 +225,11 @@ msgstr "Ajouter un nouvel article dont le titre est :" msgid "nonexistant template %s" msgstr "Le modèle (« template ») %s n'existe pas" -#: ../IkiWiki/Plugin/inline.pm:247 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 msgid "Discussion" msgstr "Discussion" -#: ../IkiWiki/Plugin/inline.pm:461 +#: ../IkiWiki/Plugin/inline.pm:463 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client introuvable, pas de réponse au ping" @@ -249,16 +249,16 @@ msgstr "" "Échec du chargement du module Perl Markdown.pm (%s) ou de /usr/bin/markdown " "(%s)" -#: ../IkiWiki/Plugin/meta.pm:132 +#: ../IkiWiki/Plugin/meta.pm:124 msgid "stylesheet not found" msgstr "Feuille de style introuvable " -#: ../IkiWiki/Plugin/meta.pm:156 +#: ../IkiWiki/Plugin/meta.pm:148 #, fuzzy msgid "redir page not found" msgstr "Flux introuvable " -#: ../IkiWiki/Plugin/meta.pm:169 +#: ../IkiWiki/Plugin/meta.pm:161 #, fuzzy msgid "redir cycle is not allowed" msgstr "Flux introuvable " @@ -383,15 +383,15 @@ msgstr "tard %A soir" msgid "%A night" msgstr "%A, durant la nuit" -#: ../IkiWiki/Plugin/prettydate.pm:74 +#: ../IkiWiki/Plugin/prettydate.pm:78 msgid "at teatime on %A" msgstr "%A, à l'heure du thé" -#: ../IkiWiki/Plugin/prettydate.pm:78 +#: ../IkiWiki/Plugin/prettydate.pm:82 msgid "at midnight" msgstr "à minuit" -#: ../IkiWiki/Plugin/prettydate.pm:81 +#: ../IkiWiki/Plugin/prettydate.pm:85 msgid "at noon on %A" msgstr "%A, à midi" @@ -502,7 +502,7 @@ msgstr "Il manque le code TeX" msgid "code includes disallowed latex commands" msgstr "Le code comporte des commandes LaTeX non permises" -#: ../IkiWiki/Plugin/teximg.pm:97 +#: ../IkiWiki/Plugin/teximg.pm:96 msgid "failed to generate image from code" msgstr "Échec de la création de l'image à partir du code" @@ -510,74 +510,51 @@ msgstr "Échec de la création de l'image à partir du code" msgid "(not toggleable in preview mode)" msgstr "" -#: ../IkiWiki/Rcs/Stub.pm:68 +#: ../IkiWiki/Rcs/Stub.pm:62 msgid "getctime not implemented" msgstr "getctime n'est pas implémenté" -#: ../IkiWiki/Rcs/monotone.pm:459 -msgid "" -"REV is not set, not running from mtn post-commit hook, cannot send " -"notifications" -msgstr "" -"REV n'est pas défini; impossible de lancer le post-commit de mtn etd'envoyer " -"les notifications" - -#: ../IkiWiki/Rcs/monotone.pm:462 -msgid "REV is not a valid revision identifier, cannot send notifications" -msgstr "" -"REV n'est pas un identifiant de révision valable, impossible d'envoyer les " -"notifications" - -#: ../IkiWiki/Rcs/svn.pm:221 -msgid "" -"REV is not set, not running from svn post-commit hook, cannot send " -"notifications" -msgstr "" -"REV n'est pas défini, pas de lancement depuis le système de rapport par mail " -"après un commit sur le SVN (« hook post-commit »), impossible d'envoyer des " -"notifications" - -#: ../IkiWiki/Render.pm:275 ../IkiWiki/Render.pm:296 +#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 #, perl-format msgid "skipping bad filename %s" msgstr "Omission du fichier au nom incorrect %s" -#: ../IkiWiki/Render.pm:338 +#: ../IkiWiki/Render.pm:339 #, perl-format msgid "removing old page %s" msgstr "Suppression de l'ancienne page %s" -#: ../IkiWiki/Render.pm:371 +#: ../IkiWiki/Render.pm:372 #, perl-format msgid "scanning %s" msgstr "Parcours de %s" -#: ../IkiWiki/Render.pm:376 +#: ../IkiWiki/Render.pm:377 #, perl-format msgid "rendering %s" msgstr "Affichage de %s" -#: ../IkiWiki/Render.pm:388 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s, which links to %s" msgstr "Affichage de %s, qui est lié à %s" -#: ../IkiWiki/Render.pm:405 +#: ../IkiWiki/Render.pm:406 #, perl-format msgid "rendering %s, which depends on %s" msgstr "Affichage de %s, qui dépend de %s" -#: ../IkiWiki/Render.pm:443 +#: ../IkiWiki/Render.pm:444 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "Affichage de %s, afin de mettre à jour ses rétroliens" -#: ../IkiWiki/Render.pm:455 +#: ../IkiWiki/Render.pm:456 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "Suppression de %s, qui n'est plus affiché par %s" -#: ../IkiWiki/Render.pm:481 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki : impossible d'afficher %s" @@ -605,15 +582,6 @@ msgstr "Rafraîchissement du wiki..." msgid "done" msgstr "Terminé" -#. translators: The three variables are the name of the wiki, -#. translators: A list of one or more pages that were changed, -#. translators: And the name of the user making the change. -#. translators: This is used as the subject of a commit email. -#: ../IkiWiki/UserInfo.pm:145 -#, perl-format -msgid "update of %s's %s by %s" -msgstr "Wiki %s, les pages %s ont été mises à jour par %s" - #: ../IkiWiki/Wrapper.pm:16 #, perl-format msgid "%s doesn't seem to be executable" @@ -630,19 +598,19 @@ msgstr "Le nom de fichier de l'enrobage n'a pas été indiqué" #. translators: The first parameter is a filename, and the second is #. translators: a (probably not translated) error message. -#: ../IkiWiki/Wrapper.pm:64 +#: ../IkiWiki/Wrapper.pm:48 #, perl-format msgid "failed to write %s: %s" msgstr "Échec de l'écriture de %s : %s" #. translators: The parameter is a C filename. -#: ../IkiWiki/Wrapper.pm:115 +#: ../IkiWiki/Wrapper.pm:99 #, perl-format msgid "failed to compile %s" msgstr "Échec de la compilation de %s" #. translators: The parameter is a filename. -#: ../IkiWiki/Wrapper.pm:135 +#: ../IkiWiki/Wrapper.pm:119 #, perl-format msgid "successfully generated %s" msgstr "%s a été créé avec succès" @@ -651,17 +619,17 @@ msgstr "%s a été créé avec succès" msgid "usage: ikiwiki [options] source dest" msgstr "Syntaxe : ikiwiki [options] source destination" -#: ../ikiwiki.in:83 +#: ../ikiwiki.in:81 msgid "usage: --set var=value" msgstr "Syntaxe : -- set var=valeur" -#: ../IkiWiki.pm:129 +#: ../IkiWiki.pm:127 msgid "Must specify url to wiki with --url when using --cgi" msgstr "" "Vous devez indiquer une URL vers le wiki par --url lors de l'utilisation de " "--cgi" -#: ../IkiWiki.pm:198 ../IkiWiki.pm:199 +#: ../IkiWiki.pm:196 ../IkiWiki.pm:197 msgid "Error" msgstr "Erreur" @@ -669,12 +637,35 @@ msgstr "Erreur" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:722 +#: ../IkiWiki.pm:767 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "" "%s une boucle a été détectée dans le prétraitement de %s, à la profondeur %i" +#~ msgid "" +#~ "REV is not set, not running from mtn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "REV n'est pas défini; impossible de lancer le post-commit de mtn " +#~ "etd'envoyer les notifications" + +#~ msgid "REV is not a valid revision identifier, cannot send notifications" +#~ msgstr "" +#~ "REV n'est pas un identifiant de révision valable, impossible d'envoyer " +#~ "les notifications" + +#~ msgid "" +#~ "REV is not set, not running from svn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "REV n'est pas défini, pas de lancement depuis le système de rapport par " +#~ "mail après un commit sur le SVN (« hook post-commit »), impossible " +#~ "d'envoyer des notifications" + +#~ msgid "update of %s's %s by %s" +#~ msgstr "Wiki %s, les pages %s ont été mises à jour par %s" + #~ msgid "%s not found" #~ msgstr "%s introuvable " diff --git a/po/gu.po b/po/gu.po index 53775705d..b50fd4813 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: 2008-01-09 02:42-0500\n" +"POT-Creation-Date: 2008-01-29 04:45-0500\n" "PO-Revision-Date: 2007-01-11 16:05+0530\n" "Last-Translator: Kartik Mistry \n" "Language-Team: Gujarati \n" @@ -15,119 +15,119 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../IkiWiki/CGI.pm:172 +#: ../IkiWiki/CGI.pm:125 msgid "You need to log in first." msgstr "તમારે પ્રથમ લોગ ઇન થવું પડશે." -#: ../IkiWiki/CGI.pm:202 +#: ../IkiWiki/CGI.pm:155 msgid "login failed, perhaps you need to turn on cookies?" msgstr "પ્રવેશ નિષ્ફળ, કદાચ તમારી કુકીઓ સક્રિય બનાવવી પડશે?" -#: ../IkiWiki/CGI.pm:231 +#: ../IkiWiki/CGI.pm:184 msgid "Login" msgstr "" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:185 #, fuzzy msgid "Preferences" msgstr "પ્રાથમિકતાઓ સંગ્રહાઇ." -#: ../IkiWiki/CGI.pm:233 +#: ../IkiWiki/CGI.pm:186 msgid "Admin" msgstr "" -#: ../IkiWiki/CGI.pm:289 +#: ../IkiWiki/CGI.pm:235 msgid "Preferences saved." msgstr "પ્રાથમિકતાઓ સંગ્રહાઇ." -#: ../IkiWiki/CGI.pm:345 +#: ../IkiWiki/CGI.pm:291 #, perl-format msgid "%s is not an editable page" msgstr "%s એ સુધારી શકાય તેવું પાનું નથી" -#: ../IkiWiki/CGI.pm:436 ../IkiWiki/Plugin/brokenlinks.pm:24 -#: ../IkiWiki/Plugin/inline.pm:239 ../IkiWiki/Plugin/opendiscussion.pm:17 +#: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 +#: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 #: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 #: ../IkiWiki/Render.pm:178 msgid "discussion" msgstr "ચર્ચા" -#: ../IkiWiki/CGI.pm:482 +#: ../IkiWiki/CGI.pm:429 #, perl-format msgid "creating %s" msgstr "%s બનાવે છે" -#: ../IkiWiki/CGI.pm:500 ../IkiWiki/CGI.pm:519 ../IkiWiki/CGI.pm:529 -#: ../IkiWiki/CGI.pm:563 ../IkiWiki/CGI.pm:611 +#: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 #, perl-format msgid "editing %s" msgstr "%s સુધારે છે" -#: ../IkiWiki/CGI.pm:705 +#: ../IkiWiki/CGI.pm:646 msgid "You are banned." msgstr "તમારા પર પ્રતિબંધ છે." -#: ../IkiWiki/Plugin/aggregate.pm:71 +#: ../IkiWiki/Plugin/aggregate.pm:82 #, perl-format msgid "missing %s parameter" msgstr "ખોવાયેલ %s વિકલ્પ" -#: ../IkiWiki/Plugin/aggregate.pm:99 +#: ../IkiWiki/Plugin/aggregate.pm:110 msgid "new feed" msgstr "નવું ફીડ" -#: ../IkiWiki/Plugin/aggregate.pm:113 +#: ../IkiWiki/Plugin/aggregate.pm:124 msgid "posts" msgstr "પોસ્ટ" -#: ../IkiWiki/Plugin/aggregate.pm:115 +#: ../IkiWiki/Plugin/aggregate.pm:126 msgid "new" msgstr "નવું" -#: ../IkiWiki/Plugin/aggregate.pm:231 +#: ../IkiWiki/Plugin/aggregate.pm:236 #, perl-format msgid "expiring %s (%s days old)" msgstr "જુનું કરે છે %s (%s દિવસો જુનું)" -#: ../IkiWiki/Plugin/aggregate.pm:238 +#: ../IkiWiki/Plugin/aggregate.pm:243 #, perl-format msgid "expiring %s" msgstr "જુનું કરે છે %s" -#: ../IkiWiki/Plugin/aggregate.pm:264 +#: ../IkiWiki/Plugin/aggregate.pm:269 #, perl-format msgid "processed ok at %s" msgstr "આના પર બરાબર છે %s" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:274 #, perl-format msgid "checking feed %s ..." msgstr "ફીડ %s ચકાસે છે ..." -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:279 #, perl-format msgid "could not find feed at %s" msgstr "%s પર ફીડ મળી શક્યું નહી" -#: ../IkiWiki/Plugin/aggregate.pm:289 +#: ../IkiWiki/Plugin/aggregate.pm:294 msgid "feed not found" msgstr "ફીડ મળ્યું નહી" -#: ../IkiWiki/Plugin/aggregate.pm:300 +#: ../IkiWiki/Plugin/aggregate.pm:305 #, fuzzy, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "ફીડમાંથી અયોગ્ય રીતે UTF-8 નીકાળેલ છે" -#: ../IkiWiki/Plugin/aggregate.pm:306 +#: ../IkiWiki/Plugin/aggregate.pm:311 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:312 +#: ../IkiWiki/Plugin/aggregate.pm:317 msgid "feed crashed XML::Feed!" msgstr "ફીડ ભાંગી ગયું XML::Feed!" -#: ../IkiWiki/Plugin/aggregate.pm:386 +#: ../IkiWiki/Plugin/aggregate.pm:391 #, perl-format msgid "creating new page %s" msgstr "નવું પાનું %s બનાવે છે" @@ -221,11 +221,11 @@ msgstr "આ શિર્ષકથી નવું પોસ્ટ ઉમેર msgid "nonexistant template %s" msgstr "અસ્તિત્વમાં ન હોય તેવું ટેમ્પલેટ %s" -#: ../IkiWiki/Plugin/inline.pm:247 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 msgid "Discussion" msgstr "ચર્ચા" -#: ../IkiWiki/Plugin/inline.pm:461 +#: ../IkiWiki/Plugin/inline.pm:463 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client મળ્યું નહી, પિંગ કરવામાં આવતું નથી" @@ -243,16 +243,16 @@ msgstr "%s એ %s દ્વારા તાળું મરાયેલ છે 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:132 +#: ../IkiWiki/Plugin/meta.pm:124 msgid "stylesheet not found" msgstr "સ્ટાઇલશીટ મળ્યું નહી" -#: ../IkiWiki/Plugin/meta.pm:156 +#: ../IkiWiki/Plugin/meta.pm:148 #, fuzzy msgid "redir page not found" msgstr "ફીડ મળ્યું નહી" -#: ../IkiWiki/Plugin/meta.pm:169 +#: ../IkiWiki/Plugin/meta.pm:161 #, fuzzy msgid "redir cycle is not allowed" msgstr "ફીડ મળ્યું નહી" @@ -378,15 +378,15 @@ msgstr "મોડા %A સાંજે" msgid "%A night" msgstr "%A રાત્રે" -#: ../IkiWiki/Plugin/prettydate.pm:74 +#: ../IkiWiki/Plugin/prettydate.pm:78 msgid "at teatime on %A" msgstr "ચા ના સમયે %A પર" -#: ../IkiWiki/Plugin/prettydate.pm:78 +#: ../IkiWiki/Plugin/prettydate.pm:82 msgid "at midnight" msgstr "મધ્યરાત્રે" -#: ../IkiWiki/Plugin/prettydate.pm:81 +#: ../IkiWiki/Plugin/prettydate.pm:85 msgid "at noon on %A" msgstr "બપોરે %A પર" @@ -498,7 +498,7 @@ msgstr "ખોવાયેલ કિંમતો" msgid "code includes disallowed latex commands" msgstr "" -#: ../IkiWiki/Plugin/teximg.pm:97 +#: ../IkiWiki/Plugin/teximg.pm:96 #, fuzzy msgid "failed to generate image from code" msgstr "માપ બદલવામાં નિષ્ફળ: %s" @@ -507,69 +507,51 @@ msgstr "માપ બદલવામાં નિષ્ફળ: %s" msgid "(not toggleable in preview mode)" msgstr "" -#: ../IkiWiki/Rcs/Stub.pm:68 +#: ../IkiWiki/Rcs/Stub.pm:62 msgid "getctime not implemented" msgstr "getctime અમલમાં મૂકાયેલ નથી" -#: ../IkiWiki/Rcs/monotone.pm:459 -#, fuzzy -msgid "" -"REV is not set, not running from mtn post-commit hook, cannot send " -"notifications" -msgstr "REV ગોઠવેલ નથી, svn post-commit hook માંથી ચાલતું નથી, નોંધ મોકલી શકાશે નહી" - -#: ../IkiWiki/Rcs/monotone.pm:462 -#, fuzzy -msgid "REV is not a valid revision identifier, cannot send notifications" -msgstr "REV ગોઠવેલ નથી, svn post-commit hook માંથી ચાલતું નથી, નોંધ મોકલી શકાશે નહી" - -#: ../IkiWiki/Rcs/svn.pm:221 -msgid "" -"REV is not set, not running from svn post-commit hook, cannot send " -"notifications" -msgstr "REV ગોઠવેલ નથી, svn post-commit hook માંથી ચાલતું નથી, નોંધ મોકલી શકાશે નહી" - -#: ../IkiWiki/Render.pm:275 ../IkiWiki/Render.pm:296 +#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 #, perl-format msgid "skipping bad filename %s" msgstr "ખરાબ ફાઇલ નામ છોડી દે છે %s" -#: ../IkiWiki/Render.pm:338 +#: ../IkiWiki/Render.pm:339 #, perl-format msgid "removing old page %s" msgstr "જુનાં પાનાં દૂર કરે છે %s" -#: ../IkiWiki/Render.pm:371 +#: ../IkiWiki/Render.pm:372 #, perl-format msgid "scanning %s" msgstr "%s શોધે છે" -#: ../IkiWiki/Render.pm:376 +#: ../IkiWiki/Render.pm:377 #, perl-format msgid "rendering %s" msgstr "રેન્ડર કરે છે %s" -#: ../IkiWiki/Render.pm:388 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s, which links to %s" msgstr "રેન્ડર કરે છે %s, જે %s સાથે જોડાણ ધરાવે છે" -#: ../IkiWiki/Render.pm:405 +#: ../IkiWiki/Render.pm:406 #, perl-format msgid "rendering %s, which depends on %s" msgstr "રેન્ડર કરે છે %s, જે %s પર આધારિત છે" -#: ../IkiWiki/Render.pm:443 +#: ../IkiWiki/Render.pm:444 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "રેન્ડર કરે છે %s, તેનાં પાછળનાં જોડાણો સુધારવા માટે" -#: ../IkiWiki/Render.pm:455 +#: ../IkiWiki/Render.pm:456 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "દૂર કરે છે %s, હવે %s વડે રેન્ડર કરાતું નથી" -#: ../IkiWiki/Render.pm:481 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki: %s રેન્ડર કરી શકાતું નથી" @@ -597,15 +579,6 @@ msgstr "વીકીને તાજી કરે છે.." msgid "done" msgstr "સંપૂર્ણ" -#. translators: The three variables are the name of the wiki, -#. translators: A list of one or more pages that were changed, -#. translators: And the name of the user making the change. -#. translators: This is used as the subject of a commit email. -#: ../IkiWiki/UserInfo.pm:145 -#, perl-format -msgid "update of %s's %s by %s" -msgstr "%s નો સુધારો %s નાં %s વડે" - #: ../IkiWiki/Wrapper.pm:16 #, perl-format msgid "%s doesn't seem to be executable" @@ -621,19 +594,19 @@ msgstr "આવરણ ફાઇલનામ સ્પષ્ટ કરેલ ન #. translators: The first parameter is a filename, and the second is #. translators: a (probably not translated) error message. -#: ../IkiWiki/Wrapper.pm:64 +#: ../IkiWiki/Wrapper.pm:48 #, perl-format msgid "failed to write %s: %s" msgstr "%s લખવામાં નિષ્ફળ: %s" #. translators: The parameter is a C filename. -#: ../IkiWiki/Wrapper.pm:115 +#: ../IkiWiki/Wrapper.pm:99 #, perl-format msgid "failed to compile %s" msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ" #. translators: The parameter is a filename. -#: ../IkiWiki/Wrapper.pm:135 +#: ../IkiWiki/Wrapper.pm:119 #, perl-format msgid "successfully generated %s" msgstr "સફળતાપૂર્વક પેદા કરેલ છે %s" @@ -642,15 +615,15 @@ msgstr "સફળતાપૂર્વક પેદા કરેલ છે %s" msgid "usage: ikiwiki [options] source dest" msgstr "ઉપયોગ: ikiwiki [વિકલ્પો] source dest" -#: ../ikiwiki.in:83 +#: ../ikiwiki.in:81 msgid "usage: --set var=value" msgstr "" -#: ../IkiWiki.pm:129 +#: ../IkiWiki.pm:127 msgid "Must specify url to wiki with --url when using --cgi" msgstr "જ્યારે --cgi ઉપયોગ કરતાં હોય ત્યારે વીકીનું યુઆરએલ સ્પષ્ટ કરવું જ પડશે" -#: ../IkiWiki.pm:198 ../IkiWiki.pm:199 +#: ../IkiWiki.pm:196 ../IkiWiki.pm:197 msgid "Error" msgstr "ક્ષતિ" @@ -658,11 +631,32 @@ msgstr "ક્ષતિ" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:722 +#: ../IkiWiki.pm:767 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "%s પર શોધાયેલ લુપ %s પર ચલાવે છે %i ઉંડાણ પર" +#, fuzzy +#~ msgid "" +#~ "REV is not set, not running from mtn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "REV ગોઠવેલ નથી, svn post-commit hook માંથી ચાલતું નથી, નોંધ મોકલી શકાશે નહી" + +#, fuzzy +#~ msgid "REV is not a valid revision identifier, cannot send notifications" +#~ msgstr "" +#~ "REV ગોઠવેલ નથી, svn post-commit hook માંથી ચાલતું નથી, નોંધ મોકલી શકાશે નહી" + +#~ msgid "" +#~ "REV is not set, not running from svn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "REV ગોઠવેલ નથી, svn post-commit hook માંથી ચાલતું નથી, નોંધ મોકલી શકાશે નહી" + +#~ msgid "update of %s's %s by %s" +#~ msgstr "%s નો સુધારો %s નાં %s વડે" + #~ msgid "%s not found" #~ msgstr "ટેમ્પલેટ %s મળ્યું નહી" diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index 2c08c5aaf..d8d00812b 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: 2008-01-10 14:54-0500\n" +"POT-Creation-Date: 2008-01-29 04:45-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,118 +16,118 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: ../IkiWiki/CGI.pm:172 +#: ../IkiWiki/CGI.pm:125 msgid "You need to log in first." msgstr "" -#: ../IkiWiki/CGI.pm:202 +#: ../IkiWiki/CGI.pm:155 msgid "login failed, perhaps you need to turn on cookies?" msgstr "" -#: ../IkiWiki/CGI.pm:231 +#: ../IkiWiki/CGI.pm:184 msgid "Login" msgstr "" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:185 msgid "Preferences" msgstr "" -#: ../IkiWiki/CGI.pm:233 +#: ../IkiWiki/CGI.pm:186 msgid "Admin" msgstr "" -#: ../IkiWiki/CGI.pm:289 +#: ../IkiWiki/CGI.pm:235 msgid "Preferences saved." msgstr "" -#: ../IkiWiki/CGI.pm:345 +#: ../IkiWiki/CGI.pm:291 #, perl-format msgid "%s is not an editable page" msgstr "" -#: ../IkiWiki/CGI.pm:436 ../IkiWiki/Plugin/brokenlinks.pm:24 -#: ../IkiWiki/Plugin/inline.pm:239 ../IkiWiki/Plugin/opendiscussion.pm:17 +#: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 +#: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 #: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 #: ../IkiWiki/Render.pm:178 msgid "discussion" msgstr "" -#: ../IkiWiki/CGI.pm:482 +#: ../IkiWiki/CGI.pm:429 #, perl-format msgid "creating %s" msgstr "" -#: ../IkiWiki/CGI.pm:500 ../IkiWiki/CGI.pm:519 ../IkiWiki/CGI.pm:529 -#: ../IkiWiki/CGI.pm:563 ../IkiWiki/CGI.pm:611 +#: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 #, perl-format msgid "editing %s" msgstr "" -#: ../IkiWiki/CGI.pm:705 +#: ../IkiWiki/CGI.pm:646 msgid "You are banned." msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:71 +#: ../IkiWiki/Plugin/aggregate.pm:82 #, perl-format msgid "missing %s parameter" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:99 +#: ../IkiWiki/Plugin/aggregate.pm:110 msgid "new feed" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:113 +#: ../IkiWiki/Plugin/aggregate.pm:124 msgid "posts" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:115 +#: ../IkiWiki/Plugin/aggregate.pm:126 msgid "new" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:231 +#: ../IkiWiki/Plugin/aggregate.pm:236 #, perl-format msgid "expiring %s (%s days old)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:238 +#: ../IkiWiki/Plugin/aggregate.pm:243 #, perl-format msgid "expiring %s" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:264 +#: ../IkiWiki/Plugin/aggregate.pm:269 #, perl-format msgid "processed ok at %s" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:274 #, perl-format msgid "checking feed %s ..." msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:279 #, perl-format msgid "could not find feed at %s" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:289 +#: ../IkiWiki/Plugin/aggregate.pm:294 msgid "feed not found" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:300 +#: ../IkiWiki/Plugin/aggregate.pm:305 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:306 +#: ../IkiWiki/Plugin/aggregate.pm:311 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:312 +#: ../IkiWiki/Plugin/aggregate.pm:317 msgid "feed crashed XML::Feed!" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:386 +#: ../IkiWiki/Plugin/aggregate.pm:391 #, perl-format msgid "creating new page %s" msgstr "" @@ -218,11 +218,11 @@ msgstr "" msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:247 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 msgid "Discussion" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:461 +#: ../IkiWiki/Plugin/inline.pm:463 msgid "RPC::XML::Client not found, not pinging" msgstr "" @@ -372,15 +372,15 @@ msgstr "" msgid "%A night" msgstr "" -#: ../IkiWiki/Plugin/prettydate.pm:74 +#: ../IkiWiki/Plugin/prettydate.pm:78 msgid "at teatime on %A" msgstr "" -#: ../IkiWiki/Plugin/prettydate.pm:78 +#: ../IkiWiki/Plugin/prettydate.pm:82 msgid "at midnight" msgstr "" -#: ../IkiWiki/Plugin/prettydate.pm:81 +#: ../IkiWiki/Plugin/prettydate.pm:85 msgid "at noon on %A" msgstr "" @@ -499,67 +499,51 @@ msgstr "" msgid "(not toggleable in preview mode)" msgstr "" -#: ../IkiWiki/Rcs/Stub.pm:68 +#: ../IkiWiki/Rcs/Stub.pm:62 msgid "getctime not implemented" msgstr "" -#: ../IkiWiki/Rcs/monotone.pm:459 -msgid "" -"REV is not set, not running from mtn post-commit hook, cannot send " -"notifications" -msgstr "" - -#: ../IkiWiki/Rcs/monotone.pm:462 -msgid "REV is not a valid revision identifier, cannot send notifications" -msgstr "" - -#: ../IkiWiki/Rcs/svn.pm:221 -msgid "" -"REV is not set, not running from svn post-commit hook, cannot send " -"notifications" -msgstr "" - -#: ../IkiWiki/Render.pm:275 ../IkiWiki/Render.pm:296 +#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 #, perl-format msgid "skipping bad filename %s" msgstr "" -#: ../IkiWiki/Render.pm:338 +#: ../IkiWiki/Render.pm:339 #, perl-format msgid "removing old page %s" msgstr "" -#: ../IkiWiki/Render.pm:371 +#: ../IkiWiki/Render.pm:372 #, perl-format msgid "scanning %s" msgstr "" -#: ../IkiWiki/Render.pm:376 +#: ../IkiWiki/Render.pm:377 #, perl-format msgid "rendering %s" msgstr "" -#: ../IkiWiki/Render.pm:388 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s, which links to %s" msgstr "" -#: ../IkiWiki/Render.pm:405 +#: ../IkiWiki/Render.pm:406 #, perl-format msgid "rendering %s, which depends on %s" msgstr "" -#: ../IkiWiki/Render.pm:443 +#: ../IkiWiki/Render.pm:444 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "" -#: ../IkiWiki/Render.pm:455 +#: ../IkiWiki/Render.pm:456 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "" -#: ../IkiWiki/Render.pm:481 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "" @@ -587,15 +571,6 @@ msgstr "" msgid "done" msgstr "" -#. translators: The three variables are the name of the wiki, -#. translators: A list of one or more pages that were changed, -#. translators: And the name of the user making the change. -#. translators: This is used as the subject of a commit email. -#: ../IkiWiki/UserInfo.pm:145 -#, perl-format -msgid "update of %s's %s by %s" -msgstr "" - #: ../IkiWiki/Wrapper.pm:16 #, perl-format msgid "%s doesn't seem to be executable" @@ -611,19 +586,19 @@ msgstr "" #. translators: The first parameter is a filename, and the second is #. translators: a (probably not translated) error message. -#: ../IkiWiki/Wrapper.pm:64 +#: ../IkiWiki/Wrapper.pm:48 #, perl-format msgid "failed to write %s: %s" msgstr "" #. translators: The parameter is a C filename. -#: ../IkiWiki/Wrapper.pm:115 +#: ../IkiWiki/Wrapper.pm:99 #, perl-format msgid "failed to compile %s" msgstr "" #. translators: The parameter is a filename. -#: ../IkiWiki/Wrapper.pm:135 +#: ../IkiWiki/Wrapper.pm:119 #, perl-format msgid "successfully generated %s" msgstr "" @@ -632,15 +607,15 @@ msgstr "" msgid "usage: ikiwiki [options] source dest" msgstr "" -#: ../ikiwiki.in:83 +#: ../ikiwiki.in:81 msgid "usage: --set var=value" msgstr "" -#: ../IkiWiki.pm:129 +#: ../IkiWiki.pm:127 msgid "Must specify url to wiki with --url when using --cgi" msgstr "" -#: ../IkiWiki.pm:198 ../IkiWiki.pm:199 +#: ../IkiWiki.pm:196 ../IkiWiki.pm:197 msgid "Error" msgstr "" @@ -648,7 +623,7 @@ msgstr "" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:732 +#: ../IkiWiki.pm:767 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "" diff --git a/po/pl.po b/po/pl.po index a6b08a607..c3b9b0c1d 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: 2008-01-09 02:42-0500\n" +"POT-Creation-Date: 2008-01-29 04:45-0500\n" "PO-Revision-Date: 2007-04-27 22:05+0200\n" "Last-Translator: Pawel Tecza \n" "Language-Team: Debian L10n Polish \n" @@ -16,122 +16,122 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../IkiWiki/CGI.pm:172 +#: ../IkiWiki/CGI.pm:125 msgid "You need to log in first." msgstr "Proszę najpierw zalogować się." -#: ../IkiWiki/CGI.pm:202 +#: ../IkiWiki/CGI.pm:155 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:231 +#: ../IkiWiki/CGI.pm:184 msgid "Login" msgstr "" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:185 #, fuzzy msgid "Preferences" msgstr "Preferencje zapisane." -#: ../IkiWiki/CGI.pm:233 +#: ../IkiWiki/CGI.pm:186 msgid "Admin" msgstr "" -#: ../IkiWiki/CGI.pm:289 +#: ../IkiWiki/CGI.pm:235 msgid "Preferences saved." msgstr "Preferencje zapisane." -#: ../IkiWiki/CGI.pm:345 +#: ../IkiWiki/CGI.pm:291 #, perl-format msgid "%s is not an editable page" msgstr "Strona %s nie może być edytowana" -#: ../IkiWiki/CGI.pm:436 ../IkiWiki/Plugin/brokenlinks.pm:24 -#: ../IkiWiki/Plugin/inline.pm:239 ../IkiWiki/Plugin/opendiscussion.pm:17 +#: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 +#: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 #: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 #: ../IkiWiki/Render.pm:178 msgid "discussion" msgstr "dyskusja" -#: ../IkiWiki/CGI.pm:482 +#: ../IkiWiki/CGI.pm:429 #, perl-format msgid "creating %s" msgstr "tworzenie %s" -#: ../IkiWiki/CGI.pm:500 ../IkiWiki/CGI.pm:519 ../IkiWiki/CGI.pm:529 -#: ../IkiWiki/CGI.pm:563 ../IkiWiki/CGI.pm:611 +#: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 #, perl-format msgid "editing %s" msgstr "edycja %s" -#: ../IkiWiki/CGI.pm:705 +#: ../IkiWiki/CGI.pm:646 msgid "You are banned." msgstr "Twój dostęp został zabroniony przez administratora." -#: ../IkiWiki/Plugin/aggregate.pm:71 +#: ../IkiWiki/Plugin/aggregate.pm:82 #, fuzzy, perl-format msgid "missing %s parameter" msgstr "brakujący parametr %s" -#: ../IkiWiki/Plugin/aggregate.pm:99 +#: ../IkiWiki/Plugin/aggregate.pm:110 msgid "new feed" msgstr "nowy kanał RSS" -#: ../IkiWiki/Plugin/aggregate.pm:113 +#: ../IkiWiki/Plugin/aggregate.pm:124 msgid "posts" msgstr "wpisy" -#: ../IkiWiki/Plugin/aggregate.pm:115 +#: ../IkiWiki/Plugin/aggregate.pm:126 msgid "new" msgstr "nowy wpis" -#: ../IkiWiki/Plugin/aggregate.pm:231 +#: ../IkiWiki/Plugin/aggregate.pm:236 #, perl-format msgid "expiring %s (%s days old)" msgstr "wygasający wpis %s (ma już %s dni)" -#: ../IkiWiki/Plugin/aggregate.pm:238 +#: ../IkiWiki/Plugin/aggregate.pm:243 #, perl-format msgid "expiring %s" msgstr "wygasający wpis %s" -#: ../IkiWiki/Plugin/aggregate.pm:264 +#: ../IkiWiki/Plugin/aggregate.pm:269 #, perl-format msgid "processed ok at %s" msgstr "kanał RSS przetworzony w dniu %s" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:274 #, perl-format msgid "checking feed %s ..." msgstr "sprawdzanie kanału RSS %s..." -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:279 #, perl-format msgid "could not find feed at %s" msgstr "nie znaleziono kanału RSS pod adresem %s" -#: ../IkiWiki/Plugin/aggregate.pm:289 +#: ../IkiWiki/Plugin/aggregate.pm:294 #, fuzzy msgid "feed not found" msgstr "nieznaleziony kanał RSS" -#: ../IkiWiki/Plugin/aggregate.pm:300 +#: ../IkiWiki/Plugin/aggregate.pm:305 #, fuzzy, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "Nieprawidłowe kodowanie UTF-8 usunięte z kanału RSS" -#: ../IkiWiki/Plugin/aggregate.pm:306 +#: ../IkiWiki/Plugin/aggregate.pm:311 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:312 +#: ../IkiWiki/Plugin/aggregate.pm:317 msgid "feed crashed XML::Feed!" msgstr "awaria kanału RSS w module XML::Feed!" -#: ../IkiWiki/Plugin/aggregate.pm:386 +#: ../IkiWiki/Plugin/aggregate.pm:391 #, perl-format msgid "creating new page %s" msgstr "tworzenie nowej strony %s" @@ -229,11 +229,11 @@ msgstr "Tytuł nowego wpisu" msgid "nonexistant template %s" msgstr "brakujący szablon %s" -#: ../IkiWiki/Plugin/inline.pm:247 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 msgid "Discussion" msgstr "Dyskusja" -#: ../IkiWiki/Plugin/inline.pm:461 +#: ../IkiWiki/Plugin/inline.pm:463 msgid "RPC::XML::Client not found, not pinging" msgstr "Nieznaleziony moduł RPC::XML::Client, brak możliwości pingowania" @@ -256,17 +256,17 @@ msgstr "" "Awaria w trakcie ładowania perlowego modułu Markdown.pm (%s) lub " "uruchamiania programu /usr/bin/markdown (%s)" -#: ../IkiWiki/Plugin/meta.pm:132 +#: ../IkiWiki/Plugin/meta.pm:124 #, fuzzy msgid "stylesheet not found" msgstr "nieznaleziony szablon ze stylami CSS" -#: ../IkiWiki/Plugin/meta.pm:156 +#: ../IkiWiki/Plugin/meta.pm:148 #, fuzzy msgid "redir page not found" msgstr "nieznaleziony kanał RSS" -#: ../IkiWiki/Plugin/meta.pm:169 +#: ../IkiWiki/Plugin/meta.pm:161 #, fuzzy msgid "redir cycle is not allowed" msgstr "nieznaleziony kanał RSS" @@ -392,15 +392,15 @@ msgstr "późnym wieczorem w %A" msgid "%A night" msgstr "nocą w %A" -#: ../IkiWiki/Plugin/prettydate.pm:74 +#: ../IkiWiki/Plugin/prettydate.pm:78 msgid "at teatime on %A" msgstr "w porze śniadaniowej w %A" -#: ../IkiWiki/Plugin/prettydate.pm:78 +#: ../IkiWiki/Plugin/prettydate.pm:82 msgid "at midnight" msgstr "o północy" -#: ../IkiWiki/Plugin/prettydate.pm:81 +#: ../IkiWiki/Plugin/prettydate.pm:85 msgid "at noon on %A" msgstr "w południe w %A" @@ -521,7 +521,7 @@ msgstr "brakujące wartości" msgid "code includes disallowed latex commands" msgstr "" -#: ../IkiWiki/Plugin/teximg.pm:97 +#: ../IkiWiki/Plugin/teximg.pm:96 #, fuzzy msgid "failed to generate image from code" msgstr "awaria w trakcie zmiany rozmiaru: %s" @@ -530,75 +530,51 @@ msgstr "awaria w trakcie zmiany rozmiaru: %s" msgid "(not toggleable in preview mode)" msgstr "" -#: ../IkiWiki/Rcs/Stub.pm:68 +#: ../IkiWiki/Rcs/Stub.pm:62 msgid "getctime not implemented" msgstr "niedostępna funkcja getctime" -#: ../IkiWiki/Rcs/monotone.pm:459 -#, fuzzy -msgid "" -"REV is not set, not running from mtn post-commit hook, cannot send " -"notifications" -msgstr "" -"Brak możliwości wysłania powiadomień od Subversion przez \"haczyk\" post-" -"commit z powodu nieustawionego parametru REV" - -#: ../IkiWiki/Rcs/monotone.pm:462 -#, fuzzy -msgid "REV is not a valid revision identifier, cannot send notifications" -msgstr "" -"Brak możliwości wysłania powiadomień od Subversion przez \"haczyk\" post-" -"commit z powodu nieustawionego parametru REV" - -#: ../IkiWiki/Rcs/svn.pm:221 -msgid "" -"REV is not set, not running from svn post-commit hook, cannot send " -"notifications" -msgstr "" -"Brak możliwości wysłania powiadomień od Subversion przez \"haczyk\" post-" -"commit z powodu nieustawionego parametru REV" - -#: ../IkiWiki/Render.pm:275 ../IkiWiki/Render.pm:296 +#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 #, perl-format msgid "skipping bad filename %s" msgstr "pomijanie nieprawidłowej nazwy pliku %s" -#: ../IkiWiki/Render.pm:338 +#: ../IkiWiki/Render.pm:339 #, perl-format msgid "removing old page %s" msgstr "usuwanie starej strony %s" -#: ../IkiWiki/Render.pm:371 +#: ../IkiWiki/Render.pm:372 #, perl-format msgid "scanning %s" msgstr "skanowanie %s" -#: ../IkiWiki/Render.pm:376 +#: ../IkiWiki/Render.pm:377 #, perl-format msgid "rendering %s" msgstr "renderowanie %s" -#: ../IkiWiki/Render.pm:388 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s, which links to %s" msgstr "renderowanie %s z odnośnikiem do %s" -#: ../IkiWiki/Render.pm:405 +#: ../IkiWiki/Render.pm:406 #, perl-format msgid "rendering %s, which depends on %s" msgstr "renderowanie %s zależącego od %s" -#: ../IkiWiki/Render.pm:443 +#: ../IkiWiki/Render.pm:444 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "renderowanie %s w celu aktualizacji powrotnych odnośników" -#: ../IkiWiki/Render.pm:455 +#: ../IkiWiki/Render.pm:456 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "usuwanie %s nie tworzonego już przez %s" -#: ../IkiWiki/Render.pm:481 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki: awaria w trakcie tworzenia %s" @@ -626,15 +602,6 @@ msgstr "odświeżanie wiki..." msgid "done" msgstr "gotowe" -#. translators: The three variables are the name of the wiki, -#. translators: A list of one or more pages that were changed, -#. translators: And the name of the user making the change. -#. translators: This is used as the subject of a commit email. -#: ../IkiWiki/UserInfo.pm:145 -#, perl-format -msgid "update of %s's %s by %s" -msgstr "aktualizacja stron wiki %s: %s przez użytkownika %s" - #: ../IkiWiki/Wrapper.pm:16 #, perl-format msgid "%s doesn't seem to be executable" @@ -650,19 +617,19 @@ msgstr "nieokreślona nazwa pliku osłony" #. translators: The first parameter is a filename, and the second is #. translators: a (probably not translated) error message. -#: ../IkiWiki/Wrapper.pm:64 +#: ../IkiWiki/Wrapper.pm:48 #, perl-format msgid "failed to write %s: %s" msgstr "awaria w trakcie zapisu %s: %s" #. translators: The parameter is a C filename. -#: ../IkiWiki/Wrapper.pm:115 +#: ../IkiWiki/Wrapper.pm:99 #, perl-format msgid "failed to compile %s" msgstr "awaria w trakcie kompilowania %s" #. translators: The parameter is a filename. -#: ../IkiWiki/Wrapper.pm:135 +#: ../IkiWiki/Wrapper.pm:119 #, perl-format msgid "successfully generated %s" msgstr "pomyślnie utworzono %s" @@ -671,17 +638,17 @@ msgstr "pomyślnie utworzono %s" msgid "usage: ikiwiki [options] source dest" msgstr "użycie: ikiwiki [parametry] źródło cel" -#: ../ikiwiki.in:83 +#: ../ikiwiki.in:81 msgid "usage: --set var=value" msgstr "" -#: ../IkiWiki.pm:129 +#: ../IkiWiki.pm:127 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:198 ../IkiWiki.pm:199 +#: ../IkiWiki.pm:196 ../IkiWiki.pm:197 msgid "Error" msgstr "Błąd" @@ -689,11 +656,35 @@ msgstr "Błąd" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:722 +#: ../IkiWiki.pm:767 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "polecenie preprocesora %s wykryte w %s na głębokości %i" +#, fuzzy +#~ msgid "" +#~ "REV is not set, not running from mtn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "Brak możliwości wysłania powiadomień od Subversion przez \"haczyk\" post-" +#~ "commit z powodu nieustawionego parametru REV" + +#, fuzzy +#~ msgid "REV is not a valid revision identifier, cannot send notifications" +#~ msgstr "" +#~ "Brak możliwości wysłania powiadomień od Subversion przez \"haczyk\" post-" +#~ "commit z powodu nieustawionego parametru REV" + +#~ msgid "" +#~ "REV is not set, not running from svn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "Brak możliwości wysłania powiadomień od Subversion przez \"haczyk\" post-" +#~ "commit z powodu nieustawionego parametru REV" + +#~ msgid "update of %s's %s by %s" +#~ msgstr "aktualizacja stron wiki %s: %s przez użytkownika %s" + #, fuzzy #~ msgid "%s not found" #~ msgstr "nie znaleziono %s" diff --git a/po/sv.po b/po/sv.po index 5874415ac..3aa8b312b 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: 2008-01-09 02:42-0500\n" +"POT-Creation-Date: 2008-01-29 04:45-0500\n" "PO-Revision-Date: 2007-01-10 23:47+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -15,120 +15,120 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../IkiWiki/CGI.pm:172 +#: ../IkiWiki/CGI.pm:125 msgid "You need to log in first." msgstr "Du måste logga in först." -#: ../IkiWiki/CGI.pm:202 +#: ../IkiWiki/CGI.pm:155 msgid "login failed, perhaps you need to turn on cookies?" msgstr "" -#: ../IkiWiki/CGI.pm:231 +#: ../IkiWiki/CGI.pm:184 msgid "Login" msgstr "" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:185 #, fuzzy msgid "Preferences" msgstr "Inställningar sparades." -#: ../IkiWiki/CGI.pm:233 +#: ../IkiWiki/CGI.pm:186 msgid "Admin" msgstr "" -#: ../IkiWiki/CGI.pm:289 +#: ../IkiWiki/CGI.pm:235 msgid "Preferences saved." msgstr "Inställningar sparades." -#: ../IkiWiki/CGI.pm:345 +#: ../IkiWiki/CGI.pm:291 #, perl-format msgid "%s is not an editable page" msgstr "" -#: ../IkiWiki/CGI.pm:436 ../IkiWiki/Plugin/brokenlinks.pm:24 -#: ../IkiWiki/Plugin/inline.pm:239 ../IkiWiki/Plugin/opendiscussion.pm:17 +#: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 +#: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 #: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 #: ../IkiWiki/Render.pm:178 msgid "discussion" msgstr "diskussion" -#: ../IkiWiki/CGI.pm:482 +#: ../IkiWiki/CGI.pm:429 #, perl-format msgid "creating %s" msgstr "skapar %s" -#: ../IkiWiki/CGI.pm:500 ../IkiWiki/CGI.pm:519 ../IkiWiki/CGI.pm:529 -#: ../IkiWiki/CGI.pm:563 ../IkiWiki/CGI.pm:611 +#: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 #, perl-format msgid "editing %s" msgstr "redigerar %s" -#: ../IkiWiki/CGI.pm:705 +#: ../IkiWiki/CGI.pm:646 msgid "You are banned." msgstr "Du är bannlyst." -#: ../IkiWiki/Plugin/aggregate.pm:71 +#: ../IkiWiki/Plugin/aggregate.pm:82 #, fuzzy, perl-format msgid "missing %s parameter" msgstr "mall saknar id-parameter" -#: ../IkiWiki/Plugin/aggregate.pm:99 +#: ../IkiWiki/Plugin/aggregate.pm:110 msgid "new feed" msgstr "ny kanal" -#: ../IkiWiki/Plugin/aggregate.pm:113 +#: ../IkiWiki/Plugin/aggregate.pm:124 msgid "posts" msgstr "inlägg" -#: ../IkiWiki/Plugin/aggregate.pm:115 +#: ../IkiWiki/Plugin/aggregate.pm:126 msgid "new" msgstr "ny" -#: ../IkiWiki/Plugin/aggregate.pm:231 +#: ../IkiWiki/Plugin/aggregate.pm:236 #, perl-format msgid "expiring %s (%s days old)" msgstr "låter %s gå ut (%s dagar gammal)" -#: ../IkiWiki/Plugin/aggregate.pm:238 +#: ../IkiWiki/Plugin/aggregate.pm:243 #, perl-format msgid "expiring %s" msgstr "låter %s gå ut" -#: ../IkiWiki/Plugin/aggregate.pm:264 +#: ../IkiWiki/Plugin/aggregate.pm:269 #, perl-format msgid "processed ok at %s" msgstr "behandlad ok på %s" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:274 #, perl-format msgid "checking feed %s ..." msgstr "kontrollerar kanalen %s ..." -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:279 #, perl-format msgid "could not find feed at %s" msgstr "kunde inte hitta kanalen på %s" -#: ../IkiWiki/Plugin/aggregate.pm:289 +#: ../IkiWiki/Plugin/aggregate.pm:294 #, fuzzy msgid "feed not found" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/aggregate.pm:300 +#: ../IkiWiki/Plugin/aggregate.pm:305 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:306 +#: ../IkiWiki/Plugin/aggregate.pm:311 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:312 +#: ../IkiWiki/Plugin/aggregate.pm:317 msgid "feed crashed XML::Feed!" msgstr "kanalen kraschade XML::Feed!" -#: ../IkiWiki/Plugin/aggregate.pm:386 +#: ../IkiWiki/Plugin/aggregate.pm:391 #, perl-format msgid "creating new page %s" msgstr "skapar nya sidan %s" @@ -224,11 +224,11 @@ msgstr "" msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:247 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 msgid "Discussion" msgstr "Diskussion" -#: ../IkiWiki/Plugin/inline.pm:461 +#: ../IkiWiki/Plugin/inline.pm:463 msgid "RPC::XML::Client not found, not pinging" msgstr "RPC::XML::Client hittades inte, pingar inte" @@ -249,17 +249,17 @@ msgstr "" "misslyckades med att läsa in Perl-modulen Markdown.pm (%s) eller /usr/bin/" "markdown (%s)" -#: ../IkiWiki/Plugin/meta.pm:132 +#: ../IkiWiki/Plugin/meta.pm:124 #, fuzzy msgid "stylesheet not found" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/meta.pm:156 +#: ../IkiWiki/Plugin/meta.pm:148 #, fuzzy msgid "redir page not found" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/meta.pm:169 +#: ../IkiWiki/Plugin/meta.pm:161 #, fuzzy msgid "redir cycle is not allowed" msgstr "mallen %s hittades inte" @@ -384,15 +384,15 @@ msgstr "" msgid "%A night" msgstr "" -#: ../IkiWiki/Plugin/prettydate.pm:74 +#: ../IkiWiki/Plugin/prettydate.pm:78 msgid "at teatime on %A" msgstr "" -#: ../IkiWiki/Plugin/prettydate.pm:78 +#: ../IkiWiki/Plugin/prettydate.pm:82 msgid "at midnight" msgstr "" -#: ../IkiWiki/Plugin/prettydate.pm:81 +#: ../IkiWiki/Plugin/prettydate.pm:85 msgid "at noon on %A" msgstr "" @@ -512,7 +512,7 @@ msgstr "" msgid "code includes disallowed latex commands" msgstr "" -#: ../IkiWiki/Plugin/teximg.pm:97 +#: ../IkiWiki/Plugin/teximg.pm:96 #, fuzzy msgid "failed to generate image from code" msgstr "misslyckades med att skriva %s: %s" @@ -521,75 +521,51 @@ msgstr "misslyckades med att skriva %s: %s" msgid "(not toggleable in preview mode)" msgstr "" -#: ../IkiWiki/Rcs/Stub.pm:68 +#: ../IkiWiki/Rcs/Stub.pm:62 msgid "getctime not implemented" msgstr "getctime inte implementerad" -#: ../IkiWiki/Rcs/monotone.pm:459 -#, fuzzy -msgid "" -"REV is not set, not running from mtn post-commit hook, cannot send " -"notifications" -msgstr "" -"REV är inte inställt, kör inte från svn post-commit-hook, kan inte skicka " -"notifieringar" - -#: ../IkiWiki/Rcs/monotone.pm:462 -#, fuzzy -msgid "REV is not a valid revision identifier, cannot send notifications" -msgstr "" -"REV är inte inställt, kör inte från svn post-commit-hook, kan inte skicka " -"notifieringar" - -#: ../IkiWiki/Rcs/svn.pm:221 -msgid "" -"REV is not set, not running from svn post-commit hook, cannot send " -"notifications" -msgstr "" -"REV är inte inställt, kör inte från svn post-commit-hook, kan inte skicka " -"notifieringar" - -#: ../IkiWiki/Render.pm:275 ../IkiWiki/Render.pm:296 +#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 #, perl-format msgid "skipping bad filename %s" msgstr "hoppar över felaktigt filnamn %s" -#: ../IkiWiki/Render.pm:338 +#: ../IkiWiki/Render.pm:339 #, perl-format msgid "removing old page %s" msgstr "tar bort gammal sida %s" -#: ../IkiWiki/Render.pm:371 +#: ../IkiWiki/Render.pm:372 #, perl-format msgid "scanning %s" msgstr "söker av %s" -#: ../IkiWiki/Render.pm:376 +#: ../IkiWiki/Render.pm:377 #, perl-format msgid "rendering %s" msgstr "ritar upp %s" -#: ../IkiWiki/Render.pm:388 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s, which links to %s" msgstr "ritar upp %s, vilken länkar till %s" -#: ../IkiWiki/Render.pm:405 +#: ../IkiWiki/Render.pm:406 #, perl-format msgid "rendering %s, which depends on %s" msgstr "ritar upp %s, vilken är beroende av %s" -#: ../IkiWiki/Render.pm:443 +#: ../IkiWiki/Render.pm:444 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "ritar upp %s, för att uppdatera dess bakåtlänkar" -#: ../IkiWiki/Render.pm:455 +#: ../IkiWiki/Render.pm:456 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "tar bort %s, som inte längre ritas upp av %s" -#: ../IkiWiki/Render.pm:481 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki: kan inte rita upp %s" @@ -617,15 +593,6 @@ msgstr "uppdaterar wiki.." msgid "done" msgstr "klar" -#. translators: The three variables are the name of the wiki, -#. translators: A list of one or more pages that were changed, -#. translators: And the name of the user making the change. -#. translators: This is used as the subject of a commit email. -#: ../IkiWiki/UserInfo.pm:145 -#, perl-format -msgid "update of %s's %s by %s" -msgstr "uppdatering av %s, %s av %s" - #: ../IkiWiki/Wrapper.pm:16 #, perl-format msgid "%s doesn't seem to be executable" @@ -641,19 +608,19 @@ msgstr "filnamn för wrapper har inte angivits" #. translators: The first parameter is a filename, and the second is #. translators: a (probably not translated) error message. -#: ../IkiWiki/Wrapper.pm:64 +#: ../IkiWiki/Wrapper.pm:48 #, perl-format msgid "failed to write %s: %s" msgstr "misslyckades med att skriva %s: %s" #. translators: The parameter is a C filename. -#: ../IkiWiki/Wrapper.pm:115 +#: ../IkiWiki/Wrapper.pm:99 #, perl-format msgid "failed to compile %s" msgstr "misslyckades med att kompilera %s" #. translators: The parameter is a filename. -#: ../IkiWiki/Wrapper.pm:135 +#: ../IkiWiki/Wrapper.pm:119 #, perl-format msgid "successfully generated %s" msgstr "generering av %s lyckades" @@ -662,15 +629,15 @@ msgstr "generering av %s lyckades" msgid "usage: ikiwiki [options] source dest" msgstr "användning: ikiwiki [flaggor] källa mål" -#: ../ikiwiki.in:83 +#: ../ikiwiki.in:81 msgid "usage: --set var=value" msgstr "" -#: ../IkiWiki.pm:129 +#: ../IkiWiki.pm:127 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:198 ../IkiWiki.pm:199 +#: ../IkiWiki.pm:196 ../IkiWiki.pm:197 msgid "Error" msgstr "Fel" @@ -678,11 +645,35 @@ msgstr "Fel" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:722 +#: ../IkiWiki.pm:767 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "%s förbehandlingsslinga detekterades på %s, djup %i" +#, fuzzy +#~ msgid "" +#~ "REV is not set, not running from mtn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "REV är inte inställt, kör inte från svn post-commit-hook, kan inte skicka " +#~ "notifieringar" + +#, fuzzy +#~ msgid "REV is not a valid revision identifier, cannot send notifications" +#~ msgstr "" +#~ "REV är inte inställt, kör inte från svn post-commit-hook, kan inte skicka " +#~ "notifieringar" + +#~ msgid "" +#~ "REV is not set, not running from svn post-commit hook, cannot send " +#~ "notifications" +#~ msgstr "" +#~ "REV är inte inställt, kör inte från svn post-commit-hook, kan inte skicka " +#~ "notifieringar" + +#~ msgid "update of %s's %s by %s" +#~ msgstr "uppdatering av %s, %s av %s" + #, fuzzy #~ msgid "%s not found" #~ msgstr "mallen %s hittades inte" diff --git a/po/vi.po b/po/vi.po index 39095259c..248275b08 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: 2008-01-09 02:42-0500\n" +"POT-Creation-Date: 2008-01-29 04:45-0500\n" "PO-Revision-Date: 2007-01-13 15:31+1030\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" @@ -16,120 +16,120 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: LocFactoryEditor 1.6fc1\n" -#: ../IkiWiki/CGI.pm:172 +#: ../IkiWiki/CGI.pm:125 msgid "You need to log in first." msgstr "Trước tiên bạn cần phải đăng nhập." -#: ../IkiWiki/CGI.pm:202 +#: ../IkiWiki/CGI.pm:155 msgid "login failed, perhaps you need to turn on cookies?" msgstr "" -#: ../IkiWiki/CGI.pm:231 +#: ../IkiWiki/CGI.pm:184 msgid "Login" msgstr "" -#: ../IkiWiki/CGI.pm:232 +#: ../IkiWiki/CGI.pm:185 #, fuzzy msgid "Preferences" msgstr "Tùy thích đã được lưu." -#: ../IkiWiki/CGI.pm:233 +#: ../IkiWiki/CGI.pm:186 msgid "Admin" msgstr "" -#: ../IkiWiki/CGI.pm:289 +#: ../IkiWiki/CGI.pm:235 msgid "Preferences saved." msgstr "Tùy thích đã được lưu." -#: ../IkiWiki/CGI.pm:345 +#: ../IkiWiki/CGI.pm:291 #, perl-format msgid "%s is not an editable page" msgstr "" -#: ../IkiWiki/CGI.pm:436 ../IkiWiki/Plugin/brokenlinks.pm:24 -#: ../IkiWiki/Plugin/inline.pm:239 ../IkiWiki/Plugin/opendiscussion.pm:17 +#: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 +#: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 #: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 #: ../IkiWiki/Render.pm:178 msgid "discussion" msgstr "thảo luận" -#: ../IkiWiki/CGI.pm:482 +#: ../IkiWiki/CGI.pm:429 #, perl-format msgid "creating %s" msgstr "đang tạo %s" -#: ../IkiWiki/CGI.pm:500 ../IkiWiki/CGI.pm:519 ../IkiWiki/CGI.pm:529 -#: ../IkiWiki/CGI.pm:563 ../IkiWiki/CGI.pm:611 +#: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 #, perl-format msgid "editing %s" msgstr "đang sửa %s" -#: ../IkiWiki/CGI.pm:705 +#: ../IkiWiki/CGI.pm:646 msgid "You are banned." msgstr "Bạn bị cấm ra." -#: ../IkiWiki/Plugin/aggregate.pm:71 +#: ../IkiWiki/Plugin/aggregate.pm:82 #, fuzzy, perl-format msgid "missing %s parameter" msgstr "mẫu thiếu tham số id" -#: ../IkiWiki/Plugin/aggregate.pm:99 +#: ../IkiWiki/Plugin/aggregate.pm:110 msgid "new feed" msgstr "nguồn tin mới" -#: ../IkiWiki/Plugin/aggregate.pm:113 +#: ../IkiWiki/Plugin/aggregate.pm:124 msgid "posts" msgstr "bài" -#: ../IkiWiki/Plugin/aggregate.pm:115 +#: ../IkiWiki/Plugin/aggregate.pm:126 msgid "new" msgstr "mới" -#: ../IkiWiki/Plugin/aggregate.pm:231 +#: ../IkiWiki/Plugin/aggregate.pm:236 #, perl-format msgid "expiring %s (%s days old)" msgstr "đang mãn hạn %s (cũ %s ngày)" -#: ../IkiWiki/Plugin/aggregate.pm:238 +#: ../IkiWiki/Plugin/aggregate.pm:243 #, perl-format msgid "expiring %s" msgstr "đang mãn hạn %s" -#: ../IkiWiki/Plugin/aggregate.pm:264 +#: ../IkiWiki/Plugin/aggregate.pm:269 #, perl-format msgid "processed ok at %s" msgstr "đã xử lý được ở %s" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:274 #, perl-format msgid "checking feed %s ..." msgstr "đang kiểm tra nguồn tin %s ..." -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:279 #, perl-format msgid "could not find feed at %s" msgstr "không tìm thấy nguồn tin ở %s" -#: ../IkiWiki/Plugin/aggregate.pm:289 +#: ../IkiWiki/Plugin/aggregate.pm:294 #, fuzzy msgid "feed not found" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/aggregate.pm:300 +#: ../IkiWiki/Plugin/aggregate.pm:305 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:306 +#: ../IkiWiki/Plugin/aggregate.pm:311 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:312 +#: ../IkiWiki/Plugin/aggregate.pm:317 msgid "feed crashed XML::Feed!" msgstr "nguồn tin đã gây ra XML::Feed sụp đổ." -#: ../IkiWiki/Plugin/aggregate.pm:386 +#: ../IkiWiki/Plugin/aggregate.pm:391 #, perl-format msgid "creating new page %s" msgstr "đang tạo trang mới %s" @@ -227,11 +227,11 @@ msgstr "" msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:247 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 msgid "Discussion" msgstr "Thảo luận" -#: ../IkiWiki/Plugin/inline.pm:461 +#: ../IkiWiki/Plugin/inline.pm:463 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" @@ -250,17 +250,17 @@ msgstr "%s bị %s khoá nên không thể sửa được" 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:132 +#: ../IkiWiki/Plugin/meta.pm:124 #, fuzzy msgid "stylesheet not found" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/meta.pm:156 +#: ../IkiWiki/Plugin/meta.pm:148 #, fuzzy msgid "redir page not found" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/meta.pm:169 +#: ../IkiWiki/Plugin/meta.pm:161 #, fuzzy msgid "redir cycle is not allowed" msgstr "không tìm thấy mẫu %s" @@ -385,15 +385,15 @@ msgstr "" msgid "%A night" msgstr "" -#: ../IkiWiki/Plugin/prettydate.pm:74 +#: ../IkiWiki/Plugin/prettydate.pm:78 msgid "at teatime on %A" msgstr "" -#: ../IkiWiki/Plugin/prettydate.pm:78 +#: ../IkiWiki/Plugin/prettydate.pm:82 msgid "at midnight" msgstr "" -#: ../IkiWiki/Plugin/prettydate.pm:81 +#: ../IkiWiki/Plugin/prettydate.pm:85 msgid "at noon on %A" msgstr "" @@ -513,7 +513,7 @@ msgstr "" msgid "code includes disallowed latex commands" msgstr "" -#: ../IkiWiki/Plugin/teximg.pm:97 +#: ../IkiWiki/Plugin/teximg.pm:96 #, fuzzy msgid "failed to generate image from code" msgstr "lỗi ghi %s: %s" @@ -522,72 +522,51 @@ msgstr "lỗi ghi %s: %s" msgid "(not toggleable in preview mode)" msgstr "" -#: ../IkiWiki/Rcs/Stub.pm:68 +#: ../IkiWiki/Rcs/Stub.pm:62 msgid "getctime not implemented" msgstr "chưa thực hiện getctime" -#: ../IkiWiki/Rcs/monotone.pm:459 -#, fuzzy -msgid "" -"REV is not set, not running from mtn post-commit hook, cannot send " -"notifications" -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" - -#: ../IkiWiki/Rcs/monotone.pm:462 -#, fuzzy -msgid "REV is not a valid revision identifier, cannot send notifications" -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" - -#: ../IkiWiki/Rcs/svn.pm:221 -msgid "" -"REV is not set, not running from svn post-commit hook, cannot send " -"notifications" -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" - -#: ../IkiWiki/Render.pm:275 ../IkiWiki/Render.pm:296 +#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 #, perl-format msgid "skipping bad filename %s" msgstr "đang bỏ qua tên tập tin sai %s" -#: ../IkiWiki/Render.pm:338 +#: ../IkiWiki/Render.pm:339 #, perl-format msgid "removing old page %s" msgstr "đang gỡ bỏ trang cũ %s" -#: ../IkiWiki/Render.pm:371 +#: ../IkiWiki/Render.pm:372 #, perl-format msgid "scanning %s" msgstr "đang quét %s" -#: ../IkiWiki/Render.pm:376 +#: ../IkiWiki/Render.pm:377 #, perl-format msgid "rendering %s" msgstr "đang vẽ %s" -#: ../IkiWiki/Render.pm:388 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s, which links to %s" msgstr "đang vẽ %s mà liên kết tới %s" -#: ../IkiWiki/Render.pm:405 +#: ../IkiWiki/Render.pm:406 #, perl-format msgid "rendering %s, which depends on %s" msgstr "đang vẽ %s mà phụ thuộc vào %s" -#: ../IkiWiki/Render.pm:443 +#: ../IkiWiki/Render.pm:444 #, perl-format msgid "rendering %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:455 +#: ../IkiWiki/Render.pm:456 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "đang gỡ bỏ %s, không còn được vẽ lại bởi %s" -#: ../IkiWiki/Render.pm:481 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki: không thể vẽ %s" @@ -615,15 +594,6 @@ msgstr "đang làm tươi wiki.." msgid "done" msgstr "xong" -#. translators: The three variables are the name of the wiki, -#. translators: A list of one or more pages that were changed, -#. translators: And the name of the user making the change. -#. translators: This is used as the subject of a commit email. -#: ../IkiWiki/UserInfo.pm:145 -#, perl-format -msgid "update of %s's %s by %s" -msgstr "cập nhật %2$s của %1$s bởi %3$s" - #: ../IkiWiki/Wrapper.pm:16 #, perl-format msgid "%s doesn't seem to be executable" @@ -639,19 +609,19 @@ msgstr "chưa xác định tên tập tin bộ bao bọc" #. translators: The first parameter is a filename, and the second is #. translators: a (probably not translated) error message. -#: ../IkiWiki/Wrapper.pm:64 +#: ../IkiWiki/Wrapper.pm:48 #, perl-format msgid "failed to write %s: %s" msgstr "lỗi ghi %s: %s" #. translators: The parameter is a C filename. -#: ../IkiWiki/Wrapper.pm:115 +#: ../IkiWiki/Wrapper.pm:99 #, perl-format msgid "failed to compile %s" msgstr "lỗi biên dịch %s" #. translators: The parameter is a filename. -#: ../IkiWiki/Wrapper.pm:135 +#: ../IkiWiki/Wrapper.pm:119 #, perl-format msgid "successfully generated %s" msgstr "%s đã được tạo ra" @@ -660,15 +630,15 @@ msgstr "%s đã được tạo ra" msgid "usage: ikiwiki [options] source dest" msgstr "cách sử dụng: ikiwiki [tùy chọn] nguồn đích" -#: ../ikiwiki.in:83 +#: ../ikiwiki.in:81 msgid "usage: --set var=value" msgstr "" -#: ../IkiWiki.pm:129 +#: ../IkiWiki.pm:127 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:198 ../IkiWiki.pm:199 +#: ../IkiWiki.pm:196 ../IkiWiki.pm:197 msgid "Error" msgstr "Lỗi" @@ -676,11 +646,32 @@ msgstr "Lỗi" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:722 +#: ../IkiWiki.pm:767 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "vòng lặp tiền xử lý %s được phát hiện trên %s ở độ sâu %i" +#, fuzzy +#~ msgid "" +#~ "REV is not set, not running from mtn post-commit hook, cannot send " +#~ "notifications" +#~ 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 "REV is not a valid revision identifier, cannot send notifications" +#~ 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" + +#~ msgid "" +#~ "REV is not set, not running from svn post-commit hook, cannot send " +#~ "notifications" +#~ 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" + +#~ msgid "update of %s's %s by %s" +#~ msgstr "cập nhật %2$s của %1$s bởi %3$s" + #, fuzzy #~ msgid "%s not found" #~ msgstr "không tìm thấy mẫu %s" -- cgit v1.2.3 From 6446b6723939c91a5a925d28447d28a6eb15cfe8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 04:53:45 -0500 Subject: move message to end --- templates/change.tmpl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/templates/change.tmpl b/templates/change.tmpl index 6df365250..e25cbf3b8 100644 --- a/templates/change.tmpl +++ b/templates/change.tmpl @@ -3,13 +3,6 @@ [[meta authorurl=""""""]] [[meta title="""update of 's """]] -
- - -
-
-
-
+
+ + +
+
+
+
-- cgit v1.2.3 From e616fdab85d9f72f13c8f72322db2a8364c2803c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 11:39:17 -0500 Subject: missed one notify --- doc/ikiwiki.setup | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/ikiwiki.setup b/doc/ikiwiki.setup index c9616e849..af27f1d7e 100644 --- a/doc/ikiwiki.setup +++ b/doc/ikiwiki.setup @@ -82,8 +82,6 @@ use IkiWiki::Setup::Standard { # # what you want. # wrapper => "/git/wiki.git/hooks/post-update", # wrappermode => "06755", - # # Enable mail notifications of commits. - # notify => 1, #}, ], -- cgit v1.2.3 From 7a4b7b1964f35527571aee78fb7048284e5d5061 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 12:20:17 -0500 Subject: update RecentChanges action to point to page --- IkiWiki/Render.pm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 5684f8092..cfe039916 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -82,9 +82,11 @@ sub genpage ($$) { #{{{ if (length $config{cgiurl}) { $template->param(editurl => cgiurl(do => "edit", page => pagetitle($page, 1))); $template->param(prefsurl => cgiurl(do => "prefs")); - if ($config{rcs}) { - $template->param(recentchangesurl => cgiurl(do => "recentchanges")); - } + $actions++; + } + + if ($config{rcs}) { + $template->param(recentchangesurl => urlto("recentchanges", $page)); $actions++; } -- cgit v1.2.3 From 598d338b11cbcbf5d87517f3b8fcd99e357a31a2 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 12:37:39 -0500 Subject: escape wikilinks and preprocessor directives --- IkiWiki/Plugin/recentchanges.pm | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 5727f9af1..6c9848ba3 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -6,8 +6,6 @@ use strict; use IkiWiki 2.00; sub import { #{{{ - hook(type => "checkconfig", id => "recentchanges", - call => \&checkconfig); hook(type => "needsbuild", id => "recentchanges", call => \&needsbuild); hook(type => "preprocess", id => "recentchanges", @@ -16,15 +14,11 @@ sub import { #{{{ call => \&htmlize); } #}}} -sub checkconfig () { #{{{ +sub needsbuild () { #{{{ my @changes=IkiWiki::rcs_recentchanges(100); updatechanges("*", "recentchanges", \@changes); } #}}} -sub needsbuild () { #{{{ - # TODO -} #}}} - sub preprocess (@) { #{{{ my %params=@_; @@ -96,7 +90,10 @@ sub store ($$) { #{{{ shift->(page => $page, destpage => $page, template => $template); }); - writefile($page."._change", $config{srcdir}, $template->output); + my $html=$template->output; + # escape wikilinks and preprocessor stuff + $html=~s/(?{when}, $change->{when}, "$config{srcdir}/$page._change"; } #}}} -- cgit v1.2.3 From 1d6b4919bc1f633b5e63cd53628adec6bf4a1627 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 12:37:56 -0500 Subject: exclude change pages --- doc/sitemap.mdwn | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/sitemap.mdwn b/doc/sitemap.mdwn index 939f20a74..be7b07a94 100644 --- a/doc/sitemap.mdwn +++ b/doc/sitemap.mdwn @@ -1,5 +1,6 @@ This map excludes discussion pages, as well as subpages that are in feeds. -[[map pages="* and !*/discussion -and !bugs/* and !examples/*/* and !news/* and !tips/* and !plugins/* and !sandbox/* and !todo/* and !users/* +[[map pages="* and !*/discussion and !recentchanges/change_* +and !bugs/* and !examples/*/* and !news/* and !tips/* and !plugins/* +and !sandbox/* and !todo/* and !users/* and !*.css and !*.ico and !*.png and !*.svgz and !*.gif"]] -- cgit v1.2.3 From 152f32547fb6fef046d8c21b218fa2dec96b6061 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 12:39:28 -0500 Subject: indicate that an internal page will be rendered even if skipping it This is important to do because until will_render is called, ikiwiki doesn't know that the page exists. This avoids recentchanges re-writing every change page every run. --- IkiWiki/Render.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index cfe039916..02f6b4b1c 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -195,10 +195,10 @@ sub render ($) { #{{{ my $type=pagetype($file); my $srcfile=srcfile($file); if (defined $type) { - return if $type=~/^_/; my $page=pagename($file); delete $depends{$page}; will_render($page, htmlpage($page), 1); + return if $type=~/^_/; my $content=htmlize($page, $type, linkify($page, $page, -- cgit v1.2.3 From dd809404ec28901acdef2b91a3b23654b19abda3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 12:52:29 -0500 Subject: omit recentchanges from various metadata pages --- doc/plugins/brokenlinks.mdwn | 2 +- doc/plugins/orphans.mdwn | 3 ++- doc/plugins/pagecount.mdwn | 4 ++-- doc/sitemap.mdwn | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/plugins/brokenlinks.mdwn b/doc/plugins/brokenlinks.mdwn index 23fa04d7c..5c906e17b 100644 --- a/doc/plugins/brokenlinks.mdwn +++ b/doc/plugins/brokenlinks.mdwn @@ -10,4 +10,4 @@ pages to search for broken links, default is search them all. If this plugin is turned on, here's a list of broken links on this wiki: -[[brokenlinks ]] +[[brokenlinks pages="* and !recentchanges/change_* and !recentchanges"]] diff --git a/doc/plugins/orphans.mdwn b/doc/plugins/orphans.mdwn index 798a5c8c2..6c6ebd6f9 100644 --- a/doc/plugins/orphans.mdwn +++ b/doc/plugins/orphans.mdwn @@ -15,5 +15,6 @@ orphans. Here's a list of orphaned pages on this wiki: [[orphans pages="* and !news/* and !todo/* and !bugs/* and !users/* and -!examples/* and !tips/* and !sandbox/* and !wikiicons/* and !plugins/*"]] +!recentchanges/change_* and !recentchanges and !examples/* and !tips/* and +!sandbox/* and !wikiicons/* and !plugins/*"]] """]] diff --git a/doc/plugins/pagecount.mdwn b/doc/plugins/pagecount.mdwn index 9a9768277..c4cefd946 100644 --- a/doc/plugins/pagecount.mdwn +++ b/doc/plugins/pagecount.mdwn @@ -10,5 +10,5 @@ pages to count, default is to count them all. This plugin is included in ikiwiki, but is not enabled by default. If it is turned on it can tell us that this wiki includes -[[pagecount ]] pages, of which [[pagecount pages="*/Discussion"]] are -discussion pages. +[[pagecount pages="* and !recentchanges/change_* and !recentchanges"]] +pages, of which [[pagecount pages="*/Discussion"]] are discussion pages. diff --git a/doc/sitemap.mdwn b/doc/sitemap.mdwn index be7b07a94..ce6bdb781 100644 --- a/doc/sitemap.mdwn +++ b/doc/sitemap.mdwn @@ -1,6 +1,6 @@ This map excludes discussion pages, as well as subpages that are in feeds. -[[map pages="* and !*/discussion and !recentchanges/change_* +[[map pages="* and !*/discussion and !recentchanges/change_* and !recentchanges and !bugs/* and !examples/*/* and !news/* and !tips/* and !plugins/* and !sandbox/* and !todo/* and !users/* and !*.css and !*.ico and !*.png and !*.svgz and !*.gif"]] -- cgit v1.2.3 From c3ce3c33817875eb6d2e7369943359b1000c9869 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 12:56:46 -0500 Subject: test commit [[version ]] --- doc/sandbox.mdwn | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 79fedefcd..6dcba0ec0 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -1,25 +1,5 @@ This is the SandBox, a page anyone can edit to try out this fab ikiwiki. -foo - -bar - -foobar - -# Table of Contents -testhead -sandbox - - -

testhead

----- -Do re me fa so la te... git? - -i see. i see. lalala hmmmmmmmm. - -## sandbox -[[sandbox]] does that work? yep. yay! - # テスト。 Test. Korean. 나는 한국인, 백두산,동해 -- cgit v1.2.3 From a5ad70a8dc6d3aee22f29b84509ce945163d43dd Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 12:59:49 -0500 Subject: updates --- IkiWiki/Plugin/recentchanges.pm | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 6c9848ba3..1c52a00f2 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -14,9 +14,10 @@ sub import { #{{{ call => \&htmlize); } #}}} -sub needsbuild () { #{{{ +sub needsbuild ($) { #{{{ + my $needsbuild=shift; my @changes=IkiWiki::rcs_recentchanges(100); - updatechanges("*", "recentchanges", \@changes); + push @$needsbuild, updatechanges("*", "recentchanges", \@changes); } #}}} sub preprocess (@) { #{{{ @@ -61,11 +62,6 @@ sub store ($$) { #{{{ ]; push @{$change->{pages}}, { link => '...' } if $is_excess; - # Take the first line of the commit message as a summary. - #my $m=shift @{$change->{message}}; - #$change->{summary}=$m->{line}; - #delete $change->{message} unless @{$change->{message}}; - # See if the committer is an openid. my $oiduser=IkiWiki::openiduser($change->{user}); if (defined $oiduser) { @@ -78,6 +74,15 @@ sub store ($$) { #{{{ $change->{user}; } + # escape wikilinks and preprocessor stuff in commit messages + if (ref $change->{message}) { + foreach my $field (@{$change->{message}}) { + if (exists $field->{line}) { + $field->{line} =~ s/(? 1); $template->param( @@ -90,21 +95,24 @@ sub store ($$) { #{{{ shift->(page => $page, destpage => $page, template => $template); }); - my $html=$template->output; - # escape wikilinks and preprocessor stuff - $html=~s/(?{when}, $change->{when}, "$config{srcdir}/$page._change"; + my $file=$page."._change"; + writefile($file, $config{srcdir}, $template->output); + utime $change->{when}, $change->{when}, "$config{srcdir}/$file"; + return $file; } #}}} sub updatechanges ($$) { #{{{ my $pagespec=shift; my $subdir=shift; my @changes=@{shift()}; + my @ret; foreach my $change (@changes) { - store($change, $subdir); + my $file=store($change, $subdir); + push @ret, $file if defined $file; } # TODO: delete old + + return @ret; } #}}} 1 -- cgit v1.2.3 From f2b6536591dc18b935eb4fc8fb310980059196f2 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 13:01:22 -0500 Subject: test --- doc/sandbox.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 6dcba0ec0..fe26cea6b 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -1,5 +1,7 @@ This is the SandBox, a page anyone can edit to try out this fab ikiwiki. +foo + # テスト。 Test. Korean. 나는 한국인, 백두산,동해 -- cgit v1.2.3 From 5696b35801e74e84d87643931a3677fba25f4e4a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 13:02:15 -0500 Subject: test 2 --- doc/sandbox.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index fe26cea6b..8043be10e 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 this fab ikiwiki. -foo +foobar # テスト。 -- cgit v1.2.3 From 95c5cbc721a2382104810e3b4f2bd13b8a56558f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 13:07:17 -0500 Subject: document the new refresh hook --- doc/plugins/write.mdwn | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 76fa3f0d7..9e27cc27f 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -82,11 +82,19 @@ configuration. It's called early in the startup process. The function is passed no values. It's ok for the function to call `error()` if something isn't configured right. +### refresh + + hook(type => "refresh", id => "foo", call => \&refresh); + +This hook is called just before ikiwiki scans the wiki for changed files. +It's useful for plugins that need to create or modify a source page. The +function is passed no values. + ### needsbuild hook(type => "needsbuild", id => "foo", call => \&needsbuild); -This allows a plugin the manipulate the list of files that need to be +This allows a plugin to manipulate the list of files that need to be built when the wiki is refreshed. The function is passed a reference to an array of pages that will be rebuilt, and can modify the array, either adding or removing files from it. -- cgit v1.2.3 From e1ce482e4146d1036e1ae512c73e54f69ff52f0d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 13:08:32 -0500 Subject: add refresh hook --- IkiWiki/Render.pm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 02f6b4b1c..aa9b73141 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -259,6 +259,8 @@ sub refresh () { #{{{ $test=dirname($test); } } + + run_hooks(refresh => sub { shift->() }); # find existing pages my %exists; -- cgit v1.2.3 From 35bc35660cafad2e8661077a9196bbf9b6fd3663 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 13:08:48 -0500 Subject: use new refresh hook --- IkiWiki/Plugin/recentchanges.pm | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 1c52a00f2..2525785e7 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -6,18 +6,17 @@ use strict; use IkiWiki 2.00; sub import { #{{{ - hook(type => "needsbuild", id => "recentchanges", - call => \&needsbuild); + hook(type => "refresh", id => "recentchanges", + call => \&refresh); hook(type => "preprocess", id => "recentchanges", call => \&preprocess); hook(type => "htmlize", id => "_change", call => \&htmlize); } #}}} -sub needsbuild ($) { #{{{ - my $needsbuild=shift; +sub refresh ($) { #{{{ my @changes=IkiWiki::rcs_recentchanges(100); - push @$needsbuild, updatechanges("*", "recentchanges", \@changes); + updatechanges("*", "recentchanges", \@changes); } #}}} sub preprocess (@) { #{{{ @@ -98,21 +97,18 @@ sub store ($$) { #{{{ my $file=$page."._change"; writefile($file, $config{srcdir}, $template->output); utime $change->{when}, $change->{when}, "$config{srcdir}/$file"; - return $file; } #}}} sub updatechanges ($$) { #{{{ my $pagespec=shift; my $subdir=shift; my @changes=@{shift()}; - my @ret; + foreach my $change (@changes) { - my $file=store($change, $subdir); - push @ret, $file if defined $file; + store($change, $subdir); } - # TODO: delete old - return @ret; + # TODO: delete old } #}}} 1 -- cgit v1.2.3 From 2bfd2e984132e5c235be066070c4e5b14d79b775 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 13:39:12 -0500 Subject: rename template --- doc/recentchanges.mdwn | 4 ++-- templates/inlinechange.tmpl | 7 ------- templates/recentchanges.tmpl | 7 +++++++ 3 files changed, 9 insertions(+), 9 deletions(-) delete mode 100644 templates/inlinechange.tmpl create mode 100644 templates/recentchanges.tmpl diff --git a/doc/recentchanges.mdwn b/doc/recentchanges.mdwn index 4e9ee91ec..d702b0f34 100644 --- a/doc/recentchanges.mdwn +++ b/doc/recentchanges.mdwn @@ -1,5 +1,5 @@ Recent changes to this wiki: [[recentchanges pages="*" num=100 template=change]] -[[inline pages="recentchanges/change_* and !*/Discussion" -template=inlinechange show=0]] +[[inline pages="internal(recentchanges/change_*) and !*/Discussion" +template=recentchanges show=0]] diff --git a/templates/inlinechange.tmpl b/templates/inlinechange.tmpl deleted file mode 100644 index 340a157d1..000000000 --- a/templates/inlinechange.tmpl +++ /dev/null @@ -1,7 +0,0 @@ - -
- - - -
-
diff --git a/templates/recentchanges.tmpl b/templates/recentchanges.tmpl new file mode 100644 index 000000000..340a157d1 --- /dev/null +++ b/templates/recentchanges.tmpl @@ -0,0 +1,7 @@ + +
+ + + +
+
-- cgit v1.2.3 From 47ee266163202f15fca3b108fad294bec262405a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 15:05:49 -0500 Subject: improve support for internal pages This makes it a lot quicker to deal with lots of recentchanges pages appearing and disappearing. It avoids needing to clutter up pagespecs with exclusions for those pages, by making normal pagespecs not match them. --- IkiWiki.pm | 32 ++++++++++++++-------------- IkiWiki/Render.pm | 47 +++++++++++++++++++++++++++++++++--------- debian/changelog | 6 ++++-- doc/ikiwiki/pagespec.mdwn | 6 ++++-- doc/plugins/brokenlinks.mdwn | 2 +- doc/plugins/orphans.mdwn | 4 ++-- doc/plugins/pagecount.mdwn | 2 +- doc/plugins/recentchanges.mdwn | 2 ++ doc/plugins/write.mdwn | 18 +++++++++++----- 9 files changed, 80 insertions(+), 39 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index c70307b5f..db2605672 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -260,6 +260,12 @@ sub pagetype ($) { #{{{ return; } #}}} +sub isinternal ($) { #{{{ + my $page=shift; + return exists $pagesources{$page} && + $pagesources{$page} =~ /\._([^.]+)$/; +} #}}} + sub pagename ($) { #{{{ my $file=shift; @@ -1287,13 +1293,22 @@ sub match_glob ($$;@) { #{{{ $glob=~s/\\\?/./g; if ($page=~/^$glob$/i) { - return IkiWiki::SuccessReason->new("$glob matches $page"); + if (! IkiWiki::isinternal($page) || $params{internal}) { + return IkiWiki::SuccessReason->new("$glob matches $page"); + } + else { + return IkiWiki::FailReason->new("$glob matches $page, but the page is an internal page"); + } } else { return IkiWiki::FailReason->new("$glob does not match $page"); } } #}}} +sub match_internal ($$;@) { #{{{ + return match_glob($_[0], $_[1], @_, internal => 1) +} #}}} + sub match_link ($$;@) { #{{{ my $page=shift; my $link=lc(shift); @@ -1389,19 +1404,4 @@ sub match_creation_year ($$;@) { #{{{ } } #}}} -sub match_user ($$;@) { #{{{ - shift; - my $user=shift; - my %params=@_; - - return IkiWiki::FailReason->new('cannot match user') - unless exists $params{user}; - if ($user eq $params{user}) { - return IkiWiki::SuccessReason->new("user is $user") - } - else { - return IkiWiki::FailReason->new("user is not $user"); - } -} #}}} - 1 diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index aa9b73141..b5b461499 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -319,15 +319,19 @@ sub refresh () { #{{{ }, $dir); }; - my %rendered; + my (%rendered, @add, @del, @internal); # check for added or removed pages - my @add; foreach my $file (@files) { my $page=pagename($file); $pagesources{$page}=$file; if (! $pagemtime{$page}) { - push @add, $file; + if (isinternal($page)) { + push @internal, $file; + } + else { + push @add, $file; + } $pagecase{lc $page}=$page; if ($config{getctime} && -e "$config{srcdir}/$file") { $pagectime{$page}=rcs_getctime("$config{srcdir}/$file"); @@ -337,11 +341,15 @@ sub refresh () { #{{{ } } } - my @del; foreach my $page (keys %pagemtime) { if (! $exists{$page}) { - debug(sprintf(gettext("removing old page %s"), $page)); - push @del, $pagesources{$page}; + if (isinternal($page)) { + push @internal, $pagesources{$page}; + } + else { + debug(sprintf(gettext("removing old page %s"), $page)); + push @del, $pagesources{$page}; + } $links{$page}=[]; $renderedfiles{$page}=[]; $pagemtime{$page}=0; @@ -366,7 +374,12 @@ sub refresh () { #{{{ $mtime > $pagemtime{$page} || $forcerebuild{$page}) { $pagemtime{$page}=$mtime; - push @needsbuild, $file; + if (isinternal($page)) { + push @internal, $file; + } + else { + push @needsbuild, $file; + } } } run_hooks(needsbuild => sub { shift->(\@needsbuild) }); @@ -382,6 +395,15 @@ sub refresh () { #{{{ render($file); $rendered{$file}=1; } + foreach my $file (@internal) { + # internal pages are not rendered + my $page=pagename($file); + delete $depends{$page}; + foreach my $old (@{$renderedfiles{$page}}) { + delete $destsources{$old}; + } + $renderedfiles{$page}=[]; + } # rebuild pages that link to added or removed pages if (@add || @del) { @@ -397,13 +419,17 @@ sub refresh () { #{{{ } } - if (%rendered || @del) { + if (%rendered || @del || @internal) { + my @changed=(keys %rendered, @del); + # rebuild dependant pages foreach my $f (@files) { next if $rendered{$f}; my $p=pagename($f); if (exists $depends{$p}) { - foreach my $file (keys %rendered, @del) { + # only consider internal files + # if the page explicitly depends on such files + foreach my $file (@changed, $depends{$p}=~/internal\(/ ? @internal : ()) { next if $f eq $file; my $page=pagename($file); if (pagespec_match($page, $depends{$p}, location => $p)) { @@ -419,7 +445,7 @@ sub refresh () { #{{{ # handle backlinks; if a page has added/removed links, # update the pages it links to my %linkchanged; - foreach my $file (keys %rendered, @del) { + foreach my $file (@changed) { my $page=pagename($file); if (exists $links{$page}) { @@ -441,6 +467,7 @@ sub refresh () { #{{{ } } } + foreach my $link (keys %linkchanged) { my $linkfile=$pagesources{$link}; if (defined $linkfile) { diff --git a/debian/changelog b/debian/changelog index 8530bdd7e..c608531e1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -22,13 +22,15 @@ ikiwiki (2.21) UNRELEASED; urgency=low * prettydate,ddate: Don't ignore time formats passed to displaytime function. * Pages with extensions starting with "_" are internal-use, and will - not be rendered or web-edited. + not be rendered or web-edited, or matched by normal pagespecs. + * Add "internal()" pagespec that matches internal-use pages. * RecentChanges is now a static html page, that's updated whenever a commit is made to the wiki. It's built as a blog using inline, so it can have an rss feed that users can subscribe to. * Removed support for sending commit notification mails. Along with it went the svnrepo and notify settings, though both will be ignored if left in - setup files. + setup files. Also gone with it is the "user()" pagespec. + * Add refresh hook. -- Joey Hess Fri, 11 Jan 2008 15:09:37 -0500 diff --git a/doc/ikiwiki/pagespec.mdwn b/doc/ikiwiki/pagespec.mdwn index 5c6433ed3..e1a476202 100644 --- a/doc/ikiwiki/pagespec.mdwn +++ b/doc/ikiwiki/pagespec.mdwn @@ -33,8 +33,10 @@ functions: was created * "`created_before(page)`" - match only pages created before the given page was created -* "`user(name)`" - only available in page subscription preferences, match - only changes made by this user +* "`glob(foo)`" - match pages that match the given glob `foo`. Just writing + the glob by itself is actually a shorthand for this function. +* "`internal(foo)`" - like `glob()`, but matches even internal-use + pages that globs do not usually match. 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/brokenlinks.mdwn b/doc/plugins/brokenlinks.mdwn index 5c906e17b..208d7120b 100644 --- a/doc/plugins/brokenlinks.mdwn +++ b/doc/plugins/brokenlinks.mdwn @@ -10,4 +10,4 @@ pages to search for broken links, default is search them all. If this plugin is turned on, here's a list of broken links on this wiki: -[[brokenlinks pages="* and !recentchanges/change_* and !recentchanges"]] +[[brokenlinks pages="* and !recentchanges"]] diff --git a/doc/plugins/orphans.mdwn b/doc/plugins/orphans.mdwn index 6c6ebd6f9..74f4bae08 100644 --- a/doc/plugins/orphans.mdwn +++ b/doc/plugins/orphans.mdwn @@ -15,6 +15,6 @@ orphans. Here's a list of orphaned pages on this wiki: [[orphans pages="* and !news/* and !todo/* and !bugs/* and !users/* and -!recentchanges/change_* and !recentchanges and !examples/* and !tips/* and -!sandbox/* and !wikiicons/* and !plugins/*"]] +!recentchanges and !examples/* and !tips/* and !sandbox/* and +!wikiicons/* and !plugins/*"]] """]] diff --git a/doc/plugins/pagecount.mdwn b/doc/plugins/pagecount.mdwn index c4cefd946..8f7029df8 100644 --- a/doc/plugins/pagecount.mdwn +++ b/doc/plugins/pagecount.mdwn @@ -10,5 +10,5 @@ pages to count, default is to count them all. This plugin is included in ikiwiki, but is not enabled by default. If it is turned on it can tell us that this wiki includes -[[pagecount pages="* and !recentchanges/change_* and !recentchanges"]] +[[pagecount pages="* and !recentchanges"]] pages, of which [[pagecount pages="*/Discussion"]] are discussion pages. diff --git a/doc/plugins/recentchanges.mdwn b/doc/plugins/recentchanges.mdwn index 9e0d8dc51..69073adf0 100644 --- a/doc/plugins/recentchanges.mdwn +++ b/doc/plugins/recentchanges.mdwn @@ -9,6 +9,8 @@ Typically only the RecentChanges page will use the plugin, but you can use it elsewhere too if you like. It's used like this: \[[recentchanges pages="*" num=100 template=change]] + \[[inline pages="internal(recentchanges/change_*)" + template=recentchanges show=0]] The pages describing recent changes will be created as [[subpages|subpage]] of the page where the `recentchanges` directive is placed. diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 9e27cc27f..4de7e434d 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -151,11 +151,6 @@ specifies the filename extension that a file must have to be htmlized using this plugin. This is how you can add support for new and exciting markup languages to ikiwiki. -Note that if you choose a filename extension that starts with "_", -ikiwiki will not render the page, or allow the page to be edited with the -web interface. This is useful for certian types of internal-use pages, but -should generally be avoided. - The function is passed named parameters: "page" and "content" and should return the htmlized content. @@ -536,6 +531,19 @@ destination file, as registered by `will_render`. Passed a page and an extension, returns the filename that page will be rendered to. +## Internal use pages + +Sometimes it's useful to put pages in the wiki without having them be +rendered to individual html files. Such internal use pages are collected +together to form the RecentChanges page, for example. + +To make an internal use page, register a filename extension that starts +with "_". Internal use pages cannot be edited with the web interface, are +not scanned for wikilinks (though wikilinks and preprocessor directives can +still appear on them, this is rarely a good idea), and are not matched by +regular PageSpecs glob patterns, but instead only by a special `internal()` +[[ikiwiki/PageSpec]]. + ## RCS plugins ikiwiki's support for [[revision_control_systems|rcs]] also uses pluggable -- cgit v1.2.3 From 7e52cc90b21b100571324dad3060259eba66af88 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 15:08:25 -0500 Subject: update --- doc/plugins/write.mdwn | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 4de7e434d..79da6a612 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -540,9 +540,11 @@ together to form the RecentChanges page, for example. To make an internal use page, register a filename extension that starts with "_". Internal use pages cannot be edited with the web interface, are not scanned for wikilinks (though wikilinks and preprocessor directives can -still appear on them, this is rarely a good idea), and are not matched by -regular PageSpecs glob patterns, but instead only by a special `internal()` -[[ikiwiki/PageSpec]]. +appear on them, this is rarely a good idea and should be done with caution), +and are not matched by regular PageSpecs glob patterns, but instead only by a +special `internal()` [[ikiwiki/PageSpec]]. + +Ikiwiki is optimised to handle lots of internal use pages, very quickly. ## RCS plugins -- cgit v1.2.3 From cabd5140c4d6255afdcb527e7f6d7e7815e4aa43 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 15:22:23 -0500 Subject: add code to delete old change pages --- IkiWiki/Plugin/recentchanges.pm | 16 +++++++++++++--- po/ikiwiki.pot | 28 ++++++++++++++-------------- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 2525785e7..8f707afc4 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -41,7 +41,7 @@ sub store ($$) { #{{{ # Optimisation to avoid re-writing pages. Assumes commits never # change (or that any changes are not important). - return if exists $pagesources{$page} && ! $config{rebuild}; + return $page if exists $pagesources{$page} && ! $config{rebuild}; # Limit pages to first 10, and add links to the changed pages. my $is_excess = exists $change->{pages}[10]; @@ -97,18 +97,28 @@ sub store ($$) { #{{{ my $file=$page."._change"; writefile($file, $config{srcdir}, $template->output); utime $change->{when}, $change->{when}, "$config{srcdir}/$file"; + + return $page; } #}}} sub updatechanges ($$) { #{{{ my $pagespec=shift; my $subdir=shift; my @changes=@{shift()}; + + my %seen; + # add new changes foreach my $change (@changes) { - store($change, $subdir); + $seen{store($change, $subdir)}=1; } - # TODO: delete old + # delete old and excess changes + foreach my $page (keys %pagesources) { + if ($page=~/^\Q$subdir\E\/change_/ && ! $seen{$page}) { + unlink($config{srcdir}.'/'.$pagesources{$page}); + } + } } #}}} 1 diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index d8d00812b..98882d535 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: 2008-01-29 04:45-0500\n" +"POT-Creation-Date: 2008-01-29 15:21-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -47,8 +47,8 @@ msgstr "" #: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 #: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 -#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 -#: ../IkiWiki/Render.pm:178 +#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:100 +#: ../IkiWiki/Render.pm:180 msgid "discussion" msgstr "" @@ -218,7 +218,7 @@ msgstr "" msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:104 msgid "Discussion" msgstr "" @@ -503,47 +503,47 @@ msgstr "" msgid "getctime not implemented" msgstr "" -#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 +#: ../IkiWiki/Render.pm:280 ../IkiWiki/Render.pm:301 #, perl-format msgid "skipping bad filename %s" msgstr "" -#: ../IkiWiki/Render.pm:339 +#: ../IkiWiki/Render.pm:350 #, perl-format msgid "removing old page %s" msgstr "" -#: ../IkiWiki/Render.pm:372 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "scanning %s" msgstr "" -#: ../IkiWiki/Render.pm:377 +#: ../IkiWiki/Render.pm:394 #, perl-format msgid "rendering %s" msgstr "" -#: ../IkiWiki/Render.pm:389 +#: ../IkiWiki/Render.pm:415 #, perl-format msgid "rendering %s, which links to %s" msgstr "" -#: ../IkiWiki/Render.pm:406 +#: ../IkiWiki/Render.pm:436 #, perl-format msgid "rendering %s, which depends on %s" msgstr "" -#: ../IkiWiki/Render.pm:444 +#: ../IkiWiki/Render.pm:475 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "" -#: ../IkiWiki/Render.pm:456 +#: ../IkiWiki/Render.pm:487 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "" -#: ../IkiWiki/Render.pm:482 +#: ../IkiWiki/Render.pm:513 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "" @@ -623,7 +623,7 @@ msgstr "" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:767 +#: ../IkiWiki.pm:773 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "" -- cgit v1.2.3 From 8b31c53366bbee51b36501443eafd0f712ee6a4c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 15:51:32 -0500 Subject: added configuration for recentchanges I kept it to a simple global configuration, rather than using the preprocessor directive for recentchanges, because that had chicken and egg problems and seemed overcomplicated. This should work reasonably well, though it would be good to add some more metadata so that more customised recentchanges pages can be made. --- IkiWiki/Plugin/recentchanges.pm | 54 +++++++++++++++++------------------------ IkiWiki/Render.pm | 4 +-- doc/cgi.mdwn | 6 +++-- doc/ikiwiki.setup | 3 +++ doc/plugins/recentchanges.mdwn | 8 ++---- doc/recentchanges.mdwn | 1 - doc/usage.mdwn | 6 ++--- docwiki.setup | 8 ++---- po/ikiwiki.pot | 2 +- t/pagespec_match.t | 3 --- 10 files changed, 38 insertions(+), 57 deletions(-) diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 8f707afc4..f5982604b 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -6,25 +6,30 @@ use strict; use IkiWiki 2.00; sub import { #{{{ - hook(type => "refresh", id => "recentchanges", - call => \&refresh); - hook(type => "preprocess", id => "recentchanges", - call => \&preprocess); - hook(type => "htmlize", id => "_change", - call => \&htmlize); + hook(type => "checkconfig", id => "recentchanges", call => \&checkconfig); + hook(type => "refresh", id => "recentchanges", call => \&refresh); + hook(type => "htmlize", id => "_change", call => \&htmlize); } #}}} -sub refresh ($) { #{{{ - my @changes=IkiWiki::rcs_recentchanges(100); - updatechanges("*", "recentchanges", \@changes); +sub checkconfig () { #{{{ + $config{recentchangespage}='recentchanges' unless defined $config{recentchangespage}; + $config{recentchangesnum}=100 unless defined $config{recentchangesnum}; } #}}} -sub preprocess (@) { #{{{ - my %params=@_; - - # TODO +sub refresh ($) { #{{{ + my %seen; - return ""; + # add new changes + foreach my $change (IkiWiki::rcs_recentchanges($config{recentchangesnum})) { + $seen{store($change, $config{recentchangespage})}=1; + } + + # delete old and excess changes + foreach my $page (keys %pagesources) { + if ($page=~/^\Q$config{recentchangespage}\E\/change_/ && ! $seen{$page}) { + unlink($config{srcdir}.'/'.$pagesources{$page}); + } + } } #}}} # Pages with extension _change have plain html markup, pass through. @@ -33,11 +38,10 @@ sub htmlize (@) { #{{{ return $params{content}; } #}}} -sub store ($$) { #{{{ +sub store ($$$) { #{{{ my $change=shift; - my $subdir=shift; - - my $page="$subdir/change_".IkiWiki::titlepage($change->{rev}); + + my $page="$config{recentchangespage}/change_".IkiWiki::titlepage($change->{rev}); # Optimisation to avoid re-writing pages. Assumes commits never # change (or that any changes are not important). @@ -102,23 +106,9 @@ sub store ($$) { #{{{ } #}}} sub updatechanges ($$) { #{{{ - my $pagespec=shift; my $subdir=shift; my @changes=@{shift()}; - my %seen; - - # add new changes - foreach my $change (@changes) { - $seen{store($change, $subdir)}=1; - } - - # delete old and excess changes - foreach my $page (keys %pagesources) { - if ($page=~/^\Q$subdir\E\/change_/ && ! $seen{$page}) { - unlink($config{srcdir}.'/'.$pagesources{$page}); - } - } } #}}} 1 diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index b5b461499..ed359bdd7 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -85,8 +85,8 @@ sub genpage ($$) { #{{{ $actions++; } - if ($config{rcs}) { - $template->param(recentchangesurl => urlto("recentchanges", $page)); + if ($config{rcs} && exists $config{recentchangespage}) { + $template->param(recentchangesurl => urlto($config{recentchangespage}, $page)); $actions++; } diff --git a/doc/cgi.mdwn b/doc/cgi.mdwn index 22d8c4332..1448fa4d5 100644 --- a/doc/cgi.mdwn +++ b/doc/cgi.mdwn @@ -1,3 +1,5 @@ -While ikiwiki is primarily a wiki compiler, which generates static html pages, it does use CGI for two important wiki features, online page editing and the [[RecentChanges]] display. +While ikiwiki is primarily a wiki compiler, which generates static html +pages, it does use CGI for online page editing. -To enable CGI, you need to create and install an ikiwiki.cgi wrapper. [[Setup]] explains how to do this. \ No newline at end of file +To enable CGI, you need to create and install an ikiwiki.cgi wrapper. +[[Setup]] explains how to do this. diff --git a/doc/ikiwiki.setup b/doc/ikiwiki.setup index af27f1d7e..9bf542981 100644 --- a/doc/ikiwiki.setup +++ b/doc/ikiwiki.setup @@ -115,6 +115,9 @@ use IkiWiki::Setup::Standard { #account_creation_password => "example", # Uncomment to force ikiwiki to run with a particular umask. #umask => 022, + # Default settings for the recentchanges page. + #recentchangespage => "recentchanges", + #recentchangesnum => 100, # To add plugins, list them here. #add_plugins => [qw{goodstuff search wikitext camelcase diff --git a/doc/plugins/recentchanges.mdwn b/doc/plugins/recentchanges.mdwn index 69073adf0..8647985c9 100644 --- a/doc/plugins/recentchanges.mdwn +++ b/doc/plugins/recentchanges.mdwn @@ -5,12 +5,8 @@ generates a page describing each recent change made to the wiki. These pages can be joined together with [[inline]] to generate the [[RecentChanges]] page. -Typically only the RecentChanges page will use the plugin, but you can -use it elsewhere too if you like. It's used like this: +Typically only the RecentChanges page will use the pages generated by this +plugin, but you can use it elsewhere too if you like. It's used like this: - \[[recentchanges pages="*" num=100 template=change]] \[[inline pages="internal(recentchanges/change_*)" template=recentchanges show=0]] - -The pages describing recent changes will be created as [[subpages|subpage]] -of the page where the `recentchanges` directive is placed. diff --git a/doc/recentchanges.mdwn b/doc/recentchanges.mdwn index d702b0f34..2dd218520 100644 --- a/doc/recentchanges.mdwn +++ b/doc/recentchanges.mdwn @@ -1,5 +1,4 @@ Recent changes to this wiki: -[[recentchanges pages="*" num=100 template=change]] [[inline pages="internal(recentchanges/change_*) and !*/Discussion" template=recentchanges show=0]] diff --git a/doc/usage.mdwn b/doc/usage.mdwn index 354e266f1..f34d5bad6 100644 --- a/doc/usage.mdwn +++ b/doc/usage.mdwn @@ -33,8 +33,7 @@ These options control the mode that ikiwiki operates in. * --cgi Enable [[CGI]] mode. In cgi mode ikiwiki runs as a cgi script, and - supports editing pages, signing in, registration, and displaying - [[RecentChanges]]. + supports editing pages, signing in, and registration. To use ikiwiki as a [[CGI]] program you need to use --wrapper or --setup to generate a wrapper. The wrapper will generally need to run suid 6755 to @@ -141,8 +140,7 @@ configuration options of their own. whatever the revision control system you select uses. In [[CGI]] mode, with a revision control system enabled, pages edited via - the web will be committed. Also, the [[RecentChanges]] link will be placed - on pages. + the web will be committed. No revision control is enabled by default. diff --git a/docwiki.setup b/docwiki.setup index 5793d87bf..e8f680a20 100644 --- a/docwiki.setup +++ b/docwiki.setup @@ -15,10 +15,6 @@ use IkiWiki::Setup::Standard { syslog => 0, userdir => "users", usedirs => 0, - rcs => 'git', - rss => 1, - cgiurl => "http://ikiwiki.info/ikiwiki.cgi", - url => "http://ikiwiki.info", - add_plugins => [qw{goodstuff version haiku polygen fortune - recentchanges }], + add_plugins => [qw{goodstuff version haiku polygen fortune}], + disable_plugins => [qw{recentchanges}], } diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index 98882d535..4e43f5da9 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: 2008-01-29 15:21-0500\n" +"POT-Creation-Date: 2008-01-29 15:46-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/t/pagespec_match.t b/t/pagespec_match.t index 3a641c6a8..cb98ab149 100755 --- a/t/pagespec_match.t +++ b/t/pagespec_match.t @@ -67,9 +67,6 @@ ok(! pagespec_match("foo", "creation_day(3)"), "other day"); ok(! pagespec_match("foo", "no_such_function(foo)"), "foo"); -ok(pagespec_match("foo", "foo and user(bar)", user => "bar"), "user"); -ok(! pagespec_match("foo", "foo and user(bar)", user => "baz"), "user fail"); - my $ret=pagespec_match("foo", "(invalid"); ok(! $ret, "syntax error"); ok($ret eq "syntax error", "error message"); -- cgit v1.2.3 From 9875bc10d14d50f543f4aab3ce4e9dae060b8c23 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 15:53:49 -0500 Subject: avoid redundant recentpages action on the recentchanges page itself --- IkiWiki/Render.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index ed359bdd7..4495b9cfd 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -85,7 +85,8 @@ sub genpage ($$) { #{{{ $actions++; } - if ($config{rcs} && exists $config{recentchangespage}) { + if ($config{rcs} && exists $config{recentchangespage} && + $page ne $config{recentchangespage}) { $template->param(recentchangesurl => urlto($config{recentchangespage}, $page)); $actions++; } -- cgit v1.2.3 From bc49e284ac96ca0058bfe4b026d23022d5d3f659 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 16:05:31 -0500 Subject: make the author metadata for changes pages be the un-munged openid --- IkiWiki/Plugin/recentchanges.pm | 1 + 1 file changed, 1 insertion(+) diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index f5982604b..9dad0af5e 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -66,6 +66,7 @@ sub store ($$$) { #{{{ push @{$change->{pages}}, { link => '...' } if $is_excess; # See if the committer is an openid. + $change->{author}=$change->{user}; my $oiduser=IkiWiki::openiduser($change->{user}); if (defined $oiduser) { $change->{authorurl}=$change->{user}; -- cgit v1.2.3 From 3d9468d5e75d9de33f299cbaae5c5862fa48a801 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 16:06:20 -0500 Subject: test --- doc/sandbox.mdwn | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 8043be10e..6dcba0ec0 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -1,7 +1,5 @@ This is the SandBox, a page anyone can edit to try out this fab ikiwiki. -foobar - # テスト。 Test. Korean. 나는 한국인, 백두산,동해 -- cgit v1.2.3 From ce00d70bd8301195ab88baeac3373e28f5fa73d8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 16:07:14 -0500 Subject: test2 --- doc/sandbox.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 6dcba0ec0..c44657fd1 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -69,7 +69,7 @@ Bulleted list * three * four * five - * six + ---- [[template id=note text="this is generated by the [[plugins/haiku]] plugin"]] -- cgit v1.2.3 From f630b6ca370d9c3069b068ff1ed12ce0449cf2e4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 16:07:57 -0500 Subject: really use unmunged author in metadata --- templates/change.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/change.tmpl b/templates/change.tmpl index e25cbf3b8..570d47559 100644 --- a/templates/change.tmpl +++ b/templates/change.tmpl @@ -1,4 +1,4 @@ -[[meta author=""""""]] +[[meta author=""""""]] [[meta authorurl=""""""]] -- cgit v1.2.3 From fbfbda614dfeb01d1f7156f97125d17d99b4f113 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 16:11:47 -0500 Subject: misc recentchanges doc updates --- doc/todo/httpauth_example.mdwn | 3 +++ doc/todo/plugin.mdwn | 16 +--------------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/doc/todo/httpauth_example.mdwn b/doc/todo/httpauth_example.mdwn index f67f67371..0c6268aa1 100644 --- a/doc/todo/httpauth_example.mdwn +++ b/doc/todo/httpauth_example.mdwn @@ -3,3 +3,6 @@ authentication (perhaps as a [[tip|tips]]), showing how to authenticate the user for edits without requiring authentication for the entire wiki. (Ideally, recentchanges should work without authentication as well, even though it goes through the CGI.) --[[JoshTriplett]] + +> (Now that recentchanges is a static page, it auths the same as other wiki +> pages.) --[[Joey]] diff --git a/doc/todo/plugin.mdwn b/doc/todo/plugin.mdwn index 0d702975f..89dbb04a2 100644 --- a/doc/todo/plugin.mdwn +++ b/doc/todo/plugin.mdwn @@ -6,20 +6,6 @@ Suggestions of ideas for plugins: > web-server-specific code to list all users, and openid can't feasibly do so > at all. --[[JoshTriplett]] -* Support [[RecentChanges]] as a regular page containing a plugin that - updates each time there is a change, and statically builds the recent - changes list. (Would this be too expensive/inflexible? There might be - other ways to do it as a plugin, like making all links to RecentChanges - link to the cgi and have the cgi render it on demand.) - - Or using an iframe - to inline the cgi, although firefox seems to render that nastily with - nested scroll bars. :-( -> Or just link to the equivalent in the version control system, if available; -> gitweb's shortlog or summary view would work nicely as a -> RecentChanges. --[[JoshTriplett]] ->>Why not fork the process? We wouldn't have to wait around for a response since we would assume the recent changes page was being generated correctly. - * It would be nice to be able to have a button to show "Differences" (or "Show Diff") when editing a page. Is that an option that can be enabled? Using a plugin? @@ -58,4 +44,4 @@ Suggestions of ideas for plugins: * As I couldn't find another place to ask, I'll try here. I would like to install some contributed plugins, but can not find anywhere to downlod them. - > Not sure what you mean, the [[plugins/contrib]] page lists contributed plugins, and each of their pages tells where to download the plugin from.. --[[Joey]] \ No newline at end of file + > Not sure what you mean, the [[plugins/contrib]] page lists contributed plugins, and each of their pages tells where to download the plugin from.. --[[Joey]] -- cgit v1.2.3 From 64a8c828b8cfa342118dd6e28b9dff43d83c6311 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 17:16:51 -0500 Subject: * meta: Add pagespec functions to match against title, author, authorurl, license, and copyright. This can be used to create custom RecentChanges. * meta: To support the pagespec functions, metadata about pages has to be retained as pagestate. * Fix encoding bug when pagestate values contained spaces. --- IkiWiki.pm | 2 +- IkiWiki/Plugin/meta.pm | 122 +++++++++++++++++++++++++++-------------- IkiWiki/Render.pm | 1 + debian/changelog | 5 ++ doc/ikiwiki/pagespec.mdwn | 7 ++- doc/plugins/recentchanges.mdwn | 14 +++++ doc/plugins/write.mdwn | 18 +++--- docwiki.setup | 4 +- po/ikiwiki.pot | 32 +++++------ templates/change.tmpl | 2 +- 10 files changed, 136 insertions(+), 71 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index db2605672..016c664b5 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -973,7 +973,7 @@ sub saveindex () { #{{{ if (exists $pagestate{$page}) { foreach my $id (@hookids) { foreach my $key (keys %{$pagestate{$page}{$id}}) { - $line.=' '.$id.'_'.encode_entities($key)."=".encode_entities($pagestate{$page}{$id}{$key}); + $line.=' '.$id.'_'.encode_entities($key)."=".encode_entities($pagestate{$page}{$id}{$key}, " \t\n"); } } } diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm index d2c6e7f8b..849a13e37 100644 --- a/IkiWiki/Plugin/meta.pm +++ b/IkiWiki/Plugin/meta.pm @@ -6,13 +6,7 @@ use warnings; use strict; use IkiWiki 2.00; -my %meta; -my %title; -my %permalink; -my %author; -my %authorurl; -my %license; -my %copyright; +my %metaheaders; sub import { #{{{ hook(type => "needsbuild", id => "meta", call => \&needsbuild); @@ -71,16 +65,16 @@ sub preprocess (@) { #{{{ # Metadata collection that needs to happen during the scan pass. if ($key eq 'title') { - $title{$page}=HTML::Entities::encode_numeric($value); + $pagestate{$page}{meta}{title}=HTML::Entities::encode_numeric($value); } elsif ($key eq 'license') { - push @{$meta{$page}}, ''; - $license{$page}=$value; + push @{$metaheaders{$page}}, ''; + $pagestate{$page}{meta}{license}=$value; return ""; } elsif ($key eq 'copyright') { - push @{$meta{$page}}, ''; - $copyright{$page}=$value; + push @{$metaheaders{$page}}, ''; + $pagestate{$page}{meta}{copyright}=$value; return ""; } elsif ($key eq 'link' && ! %params) { @@ -89,11 +83,11 @@ sub preprocess (@) { #{{{ return ""; } elsif ($key eq 'author') { - $author{$page}=$value; + $pagestate{$page}{meta}{author}=$value; # fallthorough } elsif ($key eq 'authorurl') { - $authorurl{$page}=$value; + $pagestate{$page}{meta}{authorurl}=$value; # fallthrough } @@ -111,8 +105,8 @@ sub preprocess (@) { #{{{ } } elsif ($key eq 'permalink') { - $permalink{$page}=$value; - push @{$meta{$page}}, scrub(''); + $pagestate{$page}{meta}{permalink}=$value; + push @{$metaheaders{$page}}, scrub(''); } elsif ($key eq 'stylesheet') { my $rel=exists $params{rel} ? $params{rel} : "alternate stylesheet"; @@ -123,17 +117,17 @@ sub preprocess (@) { #{{{ if (! length $stylesheet) { return "[[meta ".gettext("stylesheet not found")."]]"; } - push @{$meta{$page}}, '"; } elsif ($key eq 'openid') { if (exists $params{server}) { - push @{$meta{$page}}, ''; } - push @{$meta{$page}}, ''; } elsif ($key eq 'redir') { @@ -172,11 +166,11 @@ sub preprocess (@) { #{{{ if (! $safe) { $redir=scrub($redir); } - push @{$meta{$page}}, $redir; + push @{$metaheaders{$page}}, $redir; } elsif ($key eq 'link') { if (%params) { - push @{$meta{$page}}, scrub("'); } @@ -197,32 +191,80 @@ sub pagetemplate (@) { #{{{ my $destpage=$params{destpage}; my $template=$params{template}; - if (exists $meta{$page} && $template->query(name => "meta")) { + if (exists $metaheaders{$page} && $template->query(name => "meta")) { # avoid duplicate meta lines my %seen; - $template->param(meta => join("\n", grep { (! $seen{$_}) && ($seen{$_}=1) } @{$meta{$page}})); + $template->param(meta => join("\n", grep { (! $seen{$_}) && ($seen{$_}=1) } @{$metaheaders{$page}})); } - if (exists $title{$page} && $template->query(name => "title")) { - $template->param(title => $title{$page}); + if (exists $pagestate{$page}{meta}{title} && $template->query(name => "title")) { + $template->param(title => $pagestate{$page}{meta}{title}); $template->param(title_overridden => 1); } - $template->param(permalink => $permalink{$page}) - if exists $permalink{$page} && $template->query(name => "permalink"); - $template->param(author => $author{$page}) - if exists $author{$page} && $template->query(name => "author"); - $template->param(authorurl => $authorurl{$page}) - if exists $authorurl{$page} && $template->query(name => "authorurl"); - if (exists $license{$page} && $template->query(name => "license") && - ($page eq $destpage || ! exists $license{$destpage} || - $license{$page} ne $license{$destpage})) { - $template->param(license => htmlize($page, $destpage, $license{$page})); + foreach my $field (qw{author authorurl permalink}) { + $template->param($field => $pagestate{$page}{meta}{$field}) + if exists $pagestate{$page}{meta}{$field} && $template->query(name => $field); } - if (exists $copyright{$page} && $template->query(name => "copyright") && - ($page eq $destpage || ! exists $copyright{$destpage} || - $copyright{$page} ne $copyright{$destpage})) { - $template->param(copyright => htmlize($page, $destpage, $copyright{$page})); + + foreach my $field (qw{license copyright}) { + if (exists $pagestate{$page}{meta}{$field} && $template->query(name => $field) && + ($page eq $destpage || ! exists $pagestate{$destpage}{meta}{$field} || + $pagestate{$page}{meta}{$field} ne $pagestate{$destpage}{meta}{$field})) { + $template->param($field => htmlize($page, $destpage, $pagestate{$page}{meta}{$field})); + } } } # }}} +sub match { #{{{ + my $field=shift; + my $page=shift; + + # turn glob into a safe regexp + my $re=quotemeta(shift); + $re=~s/\\\*/.*/g; + $re=~s/\\\?/./g; + + my $val; + if (exists $pagestate{$page}{meta}{$field}) { + $val=$pagestate{$page}{meta}{$field}; + } + elsif ($field eq 'title') { + $val=pagetitle($page); + } + + if (defined $val) { + if ($val=~/^$re$/i) { + return IkiWiki::SuccessReason->new("$re matches $field of $page"); + } + else { + return IkiWiki::FailReason->new("$re does not match $field of $page"); + } + } + else { + return IkiWiki::FailReason->new("$page does not have a $field"); + } +} #}}} + +package IkiWiki::PageSpec; + +sub match_title ($$;@) { #{{{ + IkiWiki::Plugin::meta::match("title", @_); +} #}}} + +sub match_author ($$;@) { #{{{ + IkiWiki::Plugin::meta::match("author", @_); +} #}}} + +sub match_authorurl ($$;@) { #{{{ + IkiWiki::Plugin::meta::match("authorurl", @_); +} #}}} + +sub match_license ($$;@) { #{{{ + IkiWiki::Plugin::meta::match("license", @_); +} #}}} + +sub match_copyright ($$;@) { #{{{ + IkiWiki::Plugin::meta::match("copyright", @_); +} #}}} + 1 diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 4495b9cfd..76e8ef1f4 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -377,6 +377,7 @@ sub refresh () { #{{{ $pagemtime{$page}=$mtime; if (isinternal($page)) { push @internal, $file; + scan($file); } else { push @needsbuild, $file; diff --git a/debian/changelog b/debian/changelog index c608531e1..77202ed1f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -31,6 +31,11 @@ ikiwiki (2.21) UNRELEASED; urgency=low the svnrepo and notify settings, though both will be ignored if left in setup files. Also gone with it is the "user()" pagespec. * Add refresh hook. + * meta: Add pagespec functions to match against title, author, authorurl, + license, and copyright. This can be used to create custom RecentChanges. + * meta: To support the pagespec functions, metadata about pages has to be + retained as pagestate. + * Fix encoding bug when pagestate values contained spaces. -- Joey Hess Fri, 11 Jan 2008 15:09:37 -0500 diff --git a/doc/ikiwiki/pagespec.mdwn b/doc/ikiwiki/pagespec.mdwn index e1a476202..3cd6bb9f4 100644 --- a/doc/ikiwiki/pagespec.mdwn +++ b/doc/ikiwiki/pagespec.mdwn @@ -33,10 +33,13 @@ functions: was created * "`created_before(page)`" - match only pages created before the given page was created -* "`glob(foo)`" - match pages that match the given glob `foo`. Just writing +* "`glob(someglob)`" - match pages that match the given glob. Just writing the glob by itself is actually a shorthand for this function. -* "`internal(foo)`" - like `glob()`, but matches even internal-use +* "`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. 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/recentchanges.mdwn b/doc/plugins/recentchanges.mdwn index 8647985c9..b48dcbacf 100644 --- a/doc/plugins/recentchanges.mdwn +++ b/doc/plugins/recentchanges.mdwn @@ -10,3 +10,17 @@ plugin, but you can use it elsewhere too if you like. It's used like this: \[[inline pages="internal(recentchanges/change_*)" template=recentchanges show=0]] + +Here's an example of how to show only changes to "bugs/*". +This matches against the title of the change, which includes a list of +modified pages. + + \[[inline pages="internal(recentchanges/change_*) and title(*bugs/*)" + template=recentchanges show=0]] + +Here's an example of how to show only changes that Joey didn't make. +(Joey commits sometimes as user `joey`, and sometimes via openid.) + + \[[inline pages="internal(recentchanges/change_*) and + !author(joey) and !author(http://joey.kitenet.net*)" + template=recentchanges show=0]] diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 79da6a612..9c3a36b8f 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -533,18 +533,16 @@ rendered to. ## Internal use pages -Sometimes it's useful to put pages in the wiki without having them be -rendered to individual html files. Such internal use pages are collected -together to form the RecentChanges page, for example. +Sometimes it's useful to put pages in the wiki without the overhead of +having them be rendered to individual html files. Such internal use pages +are collected together to form the RecentChanges page, for example. To make an internal use page, register a filename extension that starts -with "_". Internal use pages cannot be edited with the web interface, are -not scanned for wikilinks (though wikilinks and preprocessor directives can -appear on them, this is rarely a good idea and should be done with caution), -and are not matched by regular PageSpecs glob patterns, but instead only by a -special `internal()` [[ikiwiki/PageSpec]]. - -Ikiwiki is optimised to handle lots of internal use pages, very quickly. +with "_". Internal use pages cannot be edited with the web interface, +generally shouldn't contain wikilinks or preprocessor directives (use +either on them with extreme caution), and are not matched by regular +PageSpecs glob patterns, but instead only by a special `internal()` +[[ikiwiki/PageSpec]]. ## RCS plugins diff --git a/docwiki.setup b/docwiki.setup index e8f680a20..ab9696b81 100644 --- a/docwiki.setup +++ b/docwiki.setup @@ -15,6 +15,8 @@ use IkiWiki::Setup::Standard { syslog => 0, userdir => "users", usedirs => 0, + rcs => "git", + rss => 1, + url => "http://ikiwiki.info/", add_plugins => [qw{goodstuff version haiku polygen fortune}], - disable_plugins => [qw{recentchanges}], } diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index 4e43f5da9..027e10e8a 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: 2008-01-29 15:46-0500\n" +"POT-Creation-Date: 2008-01-29 17:15-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -47,8 +47,8 @@ msgstr "" #: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 #: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 -#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:100 -#: ../IkiWiki/Render.pm:180 +#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:101 +#: ../IkiWiki/Render.pm:181 msgid "discussion" msgstr "" @@ -218,7 +218,7 @@ msgstr "" msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:104 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:105 msgid "Discussion" msgstr "" @@ -240,15 +240,15 @@ msgstr "" msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:124 +#: ../IkiWiki/Plugin/meta.pm:118 msgid "stylesheet not found" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:148 +#: ../IkiWiki/Plugin/meta.pm:142 msgid "redir page not found" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:155 msgid "redir cycle is not allowed" msgstr "" @@ -503,47 +503,47 @@ msgstr "" msgid "getctime not implemented" msgstr "" -#: ../IkiWiki/Render.pm:280 ../IkiWiki/Render.pm:301 +#: ../IkiWiki/Render.pm:281 ../IkiWiki/Render.pm:302 #, perl-format msgid "skipping bad filename %s" msgstr "" -#: ../IkiWiki/Render.pm:350 +#: ../IkiWiki/Render.pm:351 #, perl-format msgid "removing old page %s" msgstr "" -#: ../IkiWiki/Render.pm:389 +#: ../IkiWiki/Render.pm:391 #, perl-format msgid "scanning %s" msgstr "" -#: ../IkiWiki/Render.pm:394 +#: ../IkiWiki/Render.pm:396 #, perl-format msgid "rendering %s" msgstr "" -#: ../IkiWiki/Render.pm:415 +#: ../IkiWiki/Render.pm:417 #, perl-format msgid "rendering %s, which links to %s" msgstr "" -#: ../IkiWiki/Render.pm:436 +#: ../IkiWiki/Render.pm:438 #, perl-format msgid "rendering %s, which depends on %s" msgstr "" -#: ../IkiWiki/Render.pm:475 +#: ../IkiWiki/Render.pm:477 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "" -#: ../IkiWiki/Render.pm:487 +#: ../IkiWiki/Render.pm:489 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "" -#: ../IkiWiki/Render.pm:513 +#: ../IkiWiki/Render.pm:515 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "" diff --git a/templates/change.tmpl b/templates/change.tmpl index 570d47559..f9941ae70 100644 --- a/templates/change.tmpl +++ b/templates/change.tmpl @@ -2,7 +2,7 @@ [[meta authorurl=""""""]] -[[meta title="""update of 's """]] +[[meta title="""update of 's """]] - + -- cgit v1.2.3 From 7125c7269afca4a76dc24d5475d20986e8b99722 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 18:06:36 -0500 Subject: don't scan internal pages scan() does too much. All that is needed is to preprocess the internal page in scan-only mode. --- IkiWiki/Render.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 76e8ef1f4..a42cdc422 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -377,7 +377,9 @@ sub refresh () { #{{{ $pagemtime{$page}=$mtime; if (isinternal($page)) { push @internal, $file; - scan($file); + # Preprocess internal page in scan-only mode. + my $content=readfile(srcfile($file)); + preprocess($page, $page, $content, 1); } else { push @needsbuild, $file; -- cgit v1.2.3 From 9e15bd27eaae39c2bbfa4aa4c00e1a7b043c70b9 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 18:07:20 -0500 Subject: avoid temp var --- IkiWiki/Render.pm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index a42cdc422..be5af84ba 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -378,8 +378,7 @@ sub refresh () { #{{{ if (isinternal($page)) { push @internal, $file; # Preprocess internal page in scan-only mode. - my $content=readfile(srcfile($file)); - preprocess($page, $page, $content, 1); + preprocess($page, $page, readfile(srcfile($file)), 1); } else { push @needsbuild, $file; -- cgit v1.2.3 From f584abec0cacc46cd8defd2d6fd7a6f889eea59c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 18:19:47 -0500 Subject: really fix the baseurl problem the issue is that HTML::Template doesn't expand top-level variables when inside a loop --- 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 9dad0af5e..5ac0a30ef 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -60,6 +60,8 @@ sub store ($$$) { #{{{ else { $_->{link} = IkiWiki::pagetitle($_->{page}); } + $_->{baseurl}="$config{url}/" if length $config{url}; + $_; } @{$change->{pages}} ]; @@ -94,7 +96,6 @@ sub store ($$$) { #{{{ commitdate => displaytime($change->{when}, "%X %x"), wikiname => $config{wikiname}, ); - $template->param(baseurl => "$config{url}/") if length $config{url}; IkiWiki::run_hooks(pagetemplate => sub { shift->(page => $page, destpage => $page, template => $template); }); -- cgit v1.2.3 From e40a9b05111f83af2dc24be76a131b490d6f6956 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 18:25:13 -0500 Subject: more HTML::Template fun fix whitespace that led to bad wrapping and display --- templates/change.tmpl | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/templates/change.tmpl b/templates/change.tmpl index 1d1a17516..845677cce 100644 --- a/templates/change.tmpl +++ b/templates/change.tmpl @@ -7,12 +7,13 @@
Changed pages:
- - - diff - - - + + +diff + + + +
Changed by:
@@ -30,9 +31,9 @@
- -
-
+ +
+
-- cgit v1.2.3 From 7da5b9948eccdc8ca9e348a295a8cc516701b043 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 18:27:41 -0500 Subject: more whitespace nonsense --- templates/change.tmpl | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/templates/change.tmpl b/templates/change.tmpl index 845677cce..16ef08a85 100644 --- a/templates/change.tmpl +++ b/templates/change.tmpl @@ -7,10 +7,7 @@
Changed pages:
- - -diff - +diff -- cgit v1.2.3 From 6a95401bbad9baeb47f0b6e527b30b27870733d6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 18:39:00 -0500 Subject: web commit by http://joey.kitenet.net/: test! --- doc/sandbox.mdwn | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index c44657fd1..ec884b470 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -1,33 +1,17 @@ This is the SandBox, a page anyone can edit to try out this fab ikiwiki. -# テスト。 - -Test. Korean. 나는 한국인, 백두산,동해 - -Test. Chinese. 我是中国人,泰山、黄河。 - -testing openid ... ignore. - -Test. Проверка. Тэстенг. テスト ığüşöçİ ทดสอบ éphémère - Testing right-to-left text: (שרה) should be spelled shin (ש) resh (ר) heh (ה) from right to left. -Testing it in a comment... - Here's a paragraph. Here's another one with *emphasised* text. do ë characters work? Sure. -OpenID test. It works!! - Hupple hupple hupple hupple snork. Exactly my point! -Test.. - A [[nonexistingpage]] There are Polish diacritical characters: ą, ć, ę, ł, ń, ó, ś, ż, ź. -- cgit v1.2.3 From f7f89f71921648aae2c67b71287d3a8af1a13ef0 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 18:40:56 -0500 Subject: web commit by http://joey.kitenet.net/: test 2 --- doc/sandbox.mdwn | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index ec884b470..f8bcd60b5 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -12,8 +12,6 @@ Hupple hupple hupple hupple snork. Exactly my point! -A [[nonexistingpage]] - There are Polish diacritical characters: ą, ć, ę, ł, ń, ó, ś, ż, ź. # Header -- cgit v1.2.3 From b3290c64ca10be1b29bc99c39ce144e326e8be47 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 18:48:01 -0500 Subject: announce no more mail notifications on this wiki --- doc/news/no_more_email_notifications.mdwn | 14 ++++++++++++++ po/ikiwiki.pot | 16 ++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 doc/news/no_more_email_notifications.mdwn diff --git a/doc/news/no_more_email_notifications.mdwn b/doc/news/no_more_email_notifications.mdwn new file mode 100644 index 000000000..685a0d340 --- /dev/null +++ b/doc/news/no_more_email_notifications.mdwn @@ -0,0 +1,14 @@ +ikiwiki.info has upgraded to the not yet released ikiwiki 2.30. This +version of ikiwiki drops support for subscribing to commit mail +notifications for pages. The idea is that you can subscribe to the new +[[RecentChanges]] feed instead. (Or create your own custom feed of only the +changes you're interested in, and subscribe to that.) + +So if you were subscribed to mail notifications on here, you'll need to +change how you keep track of changes. Please let me know if there are any +missing features in the [[RecentChanges]] feeds. + +Statically building the RecentChanges also has performance implications, +I'll keep an eye on [[server_speed]].. + +--[[Joey]] diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index cb25d0475..49c5c7b0c 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: 2008-01-29 17:42-0500\n" +"POT-Creation-Date: 2008-01-29 18:30-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -513,37 +513,37 @@ msgstr "" msgid "removing old page %s" msgstr "" -#: ../IkiWiki/Render.pm:391 +#: ../IkiWiki/Render.pm:392 #, perl-format msgid "scanning %s" msgstr "" -#: ../IkiWiki/Render.pm:396 +#: ../IkiWiki/Render.pm:397 #, perl-format msgid "rendering %s" msgstr "" -#: ../IkiWiki/Render.pm:417 +#: ../IkiWiki/Render.pm:418 #, perl-format msgid "rendering %s, which links to %s" msgstr "" -#: ../IkiWiki/Render.pm:438 +#: ../IkiWiki/Render.pm:439 #, perl-format msgid "rendering %s, which depends on %s" msgstr "" -#: ../IkiWiki/Render.pm:477 +#: ../IkiWiki/Render.pm:478 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "" -#: ../IkiWiki/Render.pm:489 +#: ../IkiWiki/Render.pm:490 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "" -#: ../IkiWiki/Render.pm:515 +#: ../IkiWiki/Render.pm:516 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "" -- cgit v1.2.3 From f1dcb90b60aced859d882d9bd0f9b685753ed2db Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 19:21:00 -0500 Subject: test --- doc/sandbox.mdwn | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index f8bcd60b5..17f5fde76 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -10,8 +10,6 @@ do ë characters work? Sure. Hupple hupple hupple hupple snork. -Exactly my point! - There are Polish diacritical characters: ą, ć, ę, ł, ń, ó, ś, ż, ź. # Header -- cgit v1.2.3 From df864f08c10fa7dbd52ef5eaf1847511189130f5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 19:27:37 -0500 Subject: typo --- doc/features.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/features.mdwn b/doc/features.mdwn index 42eede916..1d762bed4 100644 --- a/doc/features.mdwn +++ b/doc/features.mdwn @@ -127,7 +127,7 @@ with that there's no new commit marker syntax to learn. Nearly the definition of a wiki, although perhaps ikiwiki challenges how much of that web gunk a wiki really needs. These features are optional -and can be enabled by enabling [[CGI]] and a [[Revision_Control_Systems|rcs]]. +and can be enabled by enabling [[CGI]] and a [[Revision_Control_System|rcs]]. ### User registration -- cgit v1.2.3 From 274fb900263bdd460797629ebdc960dc09ef42c0 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 19:36:35 -0500 Subject: stylistic changes Remarkably few. Also, I removed the stub for the obsolete rcs_notify function. --- IkiWiki/Rcs/bazaar.pm | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/IkiWiki/Rcs/bazaar.pm b/IkiWiki/Rcs/bazaar.pm index 80aba6a45..8ca4ec07a 100644 --- a/IkiWiki/Rcs/bazaar.pm +++ b/IkiWiki/Rcs/bazaar.pm @@ -8,7 +8,7 @@ use open qw{:utf8 :std}; package IkiWiki; -sub bazaar_log($) { +sub bazaar_log ($) { #{{{ my $out = shift; my @infos = (); my $key = undef; @@ -19,15 +19,19 @@ sub bazaar_log($) { if ($line =~ /^message:/) { $key = "message"; $infos[$#infos]{$key} = ""; - } elsif ($line =~ /^(modified|added|renamed|renamed and modified|removed):/) { + } + elsif ($line =~ /^(modified|added|renamed|renamed and modified|removed):/) { $key = "files"; unless (defined($infos[$#infos]{$key})) { $infos[$#infos]{$key} = ""; } - } elsif (defined($key) and $line =~ /^ (.*)/) { + } + elsif (defined($key) and $line =~ /^ (.*)/) { $infos[$#infos]{$key} .= $1; - } elsif ($line eq "------------------------------------------------------------\n") { + } + elsif ($line eq "------------------------------------------------------------\n") { $key = undef; push (@infos, {}); - } else { + } + else { chomp $line; ($key, $value) = split /: +/, $line, 2; $infos[$#infos]{$key} = $value; @@ -36,10 +40,10 @@ sub bazaar_log($) { close $out; return @infos; -} +} #}}} sub rcs_update () { #{{{ - my @cmdline = ("bzr", "$config{srcdir}", "update"); + my @cmdline = ("bzr", $config{srcdir}, "update"); if (system(@cmdline) != 0) { warn "'@cmdline' failed: $!"; } @@ -135,10 +139,6 @@ sub rcs_recentchanges ($) { #{{{ return @ret; } #}}} -sub rcs_notify () { #{{{ - # TODO -} #}}} - sub rcs_getctime ($) { #{{{ my ($file) = @_; -- cgit v1.2.3 From f6b8eccbe4459c0dab0f5f04babfac45f1993459 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 19:40:20 -0500 Subject: version bzr dep, 0.90 is needed for --author --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 01afa608c..8f41aa03b 100644 --- a/debian/control +++ b/debian/control @@ -13,7 +13,7 @@ Vcs-Browser: http://git.ikiwiki.info/?p=ikiwiki Package: ikiwiki Architecture: all Depends: ${perl:Depends}, markdown, libhtml-template-perl, libhtml-parser-perl, liburi-perl -Recommends: gcc | c-compiler, libc6-dev | libc-dev, subversion | git-core | tla | bzr | mercurial, libxml-simple-perl, libnet-openid-consumer-perl, liblwpx-paranoidagent-perl, libtimedate-perl, libhtml-scrubber-perl, libcgi-formbuilder-perl (>= 3.05), libtime-duration-perl, libcgi-session-perl (>= 4.14-1), libmail-sendmail-perl +Recommends: gcc | c-compiler, libc6-dev | libc-dev, subversion | git-core | tla | bzr (>= 0.90) | mercurial, libxml-simple-perl, libnet-openid-consumer-perl, liblwpx-paranoidagent-perl, libtimedate-perl, libhtml-scrubber-perl, libcgi-formbuilder-perl (>= 3.05), libtime-duration-perl, libcgi-session-perl (>= 4.14-1), libmail-sendmail-perl Suggests: viewvc | gitweb | viewcvs, hyperestraier, librpc-xml-perl, libtext-wikiformat-perl, python, python-docutils, polygen, tidy, libxml-feed-perl, libmailtools-perl, perlmagick, libfile-mimeinfo-perl, libcrypt-ssleay-perl, liblocale-gettext-perl (>= 1.05-1), libtext-typography-perl, libtext-csv-perl, libdigest-sha1-perl, graphviz Conflicts: ikiwiki-plugin-table Replaces: ikiwiki-plugin-table -- cgit v1.2.3 From 70f61689d675881cb65425cd25bf13db62fc06ba Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 19:42:11 -0500 Subject: improve versioning, not that it really matters --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 8f41aa03b..d63adbc1c 100644 --- a/debian/control +++ b/debian/control @@ -13,7 +13,7 @@ Vcs-Browser: http://git.ikiwiki.info/?p=ikiwiki Package: ikiwiki Architecture: all Depends: ${perl:Depends}, markdown, libhtml-template-perl, libhtml-parser-perl, liburi-perl -Recommends: gcc | c-compiler, libc6-dev | libc-dev, subversion | git-core | tla | bzr (>= 0.90) | mercurial, libxml-simple-perl, libnet-openid-consumer-perl, liblwpx-paranoidagent-perl, libtimedate-perl, libhtml-scrubber-perl, libcgi-formbuilder-perl (>= 3.05), libtime-duration-perl, libcgi-session-perl (>= 4.14-1), libmail-sendmail-perl +Recommends: gcc | c-compiler, libc6-dev | libc-dev, subversion | git-core | tla | bzr (>= 0.91) | mercurial, libxml-simple-perl, libnet-openid-consumer-perl, liblwpx-paranoidagent-perl, libtimedate-perl, libhtml-scrubber-perl, libcgi-formbuilder-perl (>= 3.05), libtime-duration-perl, libcgi-session-perl (>= 4.14-1), libmail-sendmail-perl Suggests: viewvc | gitweb | viewcvs, hyperestraier, librpc-xml-perl, libtext-wikiformat-perl, python, python-docutils, polygen, tidy, libxml-feed-perl, libmailtools-perl, perlmagick, libfile-mimeinfo-perl, libcrypt-ssleay-perl, liblocale-gettext-perl (>= 1.05-1), libtext-typography-perl, libtext-csv-perl, libdigest-sha1-perl, graphviz Conflicts: ikiwiki-plugin-table Replaces: ikiwiki-plugin-table -- cgit v1.2.3 From 336a27644667fecbb515aeb382dbd3407600f6b8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 19:42:19 -0500 Subject: changelog --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index ec8f7f1b1..f29831f1a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -36,6 +36,8 @@ ikiwiki (2.30) UNRELEASED; urgency=low * meta: To support the pagespec functions, metadata about pages has to be retained as pagestate. * Fix encoding bug when pagestate values contained spaces. + * Add support for the bazaar revision control system. Patch from Jelmer + Vernooij. Thanks also to bma for his independent work on bzr support. -- Joey Hess Fri, 11 Jan 2008 15:09:37 -0500 -- cgit v1.2.3 From 381ac0f667f428bc571e89beda6660a3c3a650ab Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 19:44:26 -0500 Subject: commit only the changed file --- IkiWiki/Rcs/bazaar.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Rcs/bazaar.pm b/IkiWiki/Rcs/bazaar.pm index 8ca4ec07a..528767099 100644 --- a/IkiWiki/Rcs/bazaar.pm +++ b/IkiWiki/Rcs/bazaar.pm @@ -71,8 +71,8 @@ sub rcs_commit ($$$;$$) { #{{{ $message = "no message given"; } - my @cmdline = ("bzr", "commit", - "-m", $message, "--author", $user, $config{srcdir}); + my @cmdline = ("bzr", "commit", "-m", $message, "--author", $user, + $config{srcdir}."/".$file); if (system(@cmdline) != 0) { warn "'@cmdline' failed: $!"; } -- cgit v1.2.3 From 4284719464cf2ed24546e87e8b4dfb4f36d8be4c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 19:48:30 -0500 Subject: rename bazaar -> bzr after discussion with jelmer --- IkiWiki/Rcs/bazaar.pm | 163 -------------------------------------------------- IkiWiki/Rcs/bzr.pm | 163 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 163 insertions(+), 163 deletions(-) delete mode 100644 IkiWiki/Rcs/bazaar.pm create mode 100644 IkiWiki/Rcs/bzr.pm diff --git a/IkiWiki/Rcs/bazaar.pm b/IkiWiki/Rcs/bazaar.pm deleted file mode 100644 index 528767099..000000000 --- a/IkiWiki/Rcs/bazaar.pm +++ /dev/null @@ -1,163 +0,0 @@ -#!/usr/bin/perl - -use warnings; -use strict; -use IkiWiki; -use Encode; -use open qw{:utf8 :std}; - -package IkiWiki; - -sub bazaar_log ($) { #{{{ - my $out = shift; - my @infos = (); - my $key = undef; - - while (<$out>) { - my $line = $_; - my ($value); - if ($line =~ /^message:/) { - $key = "message"; - $infos[$#infos]{$key} = ""; - } - elsif ($line =~ /^(modified|added|renamed|renamed and modified|removed):/) { - $key = "files"; - unless (defined($infos[$#infos]{$key})) { $infos[$#infos]{$key} = ""; } - } - elsif (defined($key) and $line =~ /^ (.*)/) { - $infos[$#infos]{$key} .= $1; - } - elsif ($line eq "------------------------------------------------------------\n") { - $key = undef; - push (@infos, {}); - } - else { - chomp $line; - ($key, $value) = split /: +/, $line, 2; - $infos[$#infos]{$key} = $value; - } - } - close $out; - - return @infos; -} #}}} - -sub rcs_update () { #{{{ - my @cmdline = ("bzr", $config{srcdir}, "update"); - if (system(@cmdline) != 0) { - warn "'@cmdline' failed: $!"; - } -} #}}} - -sub rcs_prepedit ($) { #{{{ - return ""; -} #}}} - -sub rcs_commit ($$$;$$) { #{{{ - my ($file, $message, $rcstoken, $user, $ipaddr) = @_; - - if (defined $user) { - $user = possibly_foolish_untaint($user); - } - elsif (defined $ipaddr) { - $user = "Anonymous from ".possibly_foolish_untaint($ipaddr); - } - else { - $user = "Anonymous"; - } - - $message = possibly_foolish_untaint($message); - if (! length $message) { - $message = "no message given"; - } - - my @cmdline = ("bzr", "commit", "-m", $message, "--author", $user, - $config{srcdir}."/".$file); - if (system(@cmdline) != 0) { - warn "'@cmdline' failed: $!"; - } - - return undef; # success -} #}}} - -sub rcs_add ($) { # {{{ - my ($file) = @_; - - my @cmdline = ("bzr", "add", "$config{srcdir}/$file"); - if (system(@cmdline) != 0) { - warn "'@cmdline' failed: $!"; - } -} #}}} - -sub rcs_recentchanges ($) { #{{{ - my ($num) = @_; - - eval q{use CGI 'escapeHTML'}; - error($@) if $@; - - my @cmdline = ("bzr", "log", "-v", "--limit", $num, $config{srcdir}); - open (my $out, "@cmdline |"); - - eval q{use Date::Parse}; - error($@) if $@; - - my @ret; - foreach my $info (bazaar_log($out)) { - my @pages = (); - my @message = (); - - foreach my $msgline (split(/\n/, $info->{message})) { - push @message, { line => $msgline }; - } - - foreach my $file (split(/\n/, $info->{files})) { - my $diffurl = $config{'diffurl'}; - $diffurl =~ s/\[\[file\]\]/$file/go; - $diffurl =~ s/\[\[r2\]\]/$info->{revno}/go; - - push @pages, { - page => pagename($file), - diffurl => $diffurl, - }; - } - - my $user = $info->{"committer"}; - if (defined($info->{"author"})) { $user = $info->{"author"}; } - $user =~ s/\s*<.*>\s*$//; - $user =~ s/^\s*//; - - push @ret, { - rev => $info->{"revno"}, - user => $user, - committype => "bazaar", - when => time - str2time($info->{"timestamp"}), - message => [@message], - pages => [@pages], - }; - } - - return @ret; -} #}}} - -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 |"); - - my @log = bazaar_log($out); - - if (length @log < 1) { - return 0; - } - - eval q{use Date::Parse}; - error($@) if $@; - - my $ctime = str2time($log[0]->{"timestamp"}); - return $ctime; -} #}}} - -1 diff --git a/IkiWiki/Rcs/bzr.pm b/IkiWiki/Rcs/bzr.pm new file mode 100644 index 000000000..43822fe8f --- /dev/null +++ b/IkiWiki/Rcs/bzr.pm @@ -0,0 +1,163 @@ +#!/usr/bin/perl + +use warnings; +use strict; +use IkiWiki; +use Encode; +use open qw{:utf8 :std}; + +package IkiWiki; + +sub bzr_log ($) { #{{{ + my $out = shift; + my @infos = (); + my $key = undef; + + while (<$out>) { + my $line = $_; + my ($value); + if ($line =~ /^message:/) { + $key = "message"; + $infos[$#infos]{$key} = ""; + } + elsif ($line =~ /^(modified|added|renamed|renamed and modified|removed):/) { + $key = "files"; + unless (defined($infos[$#infos]{$key})) { $infos[$#infos]{$key} = ""; } + } + elsif (defined($key) and $line =~ /^ (.*)/) { + $infos[$#infos]{$key} .= $1; + } + elsif ($line eq "------------------------------------------------------------\n") { + $key = undef; + push (@infos, {}); + } + else { + chomp $line; + ($key, $value) = split /: +/, $line, 2; + $infos[$#infos]{$key} = $value; + } + } + close $out; + + return @infos; +} #}}} + +sub rcs_update () { #{{{ + my @cmdline = ("bzr", $config{srcdir}, "update"); + if (system(@cmdline) != 0) { + warn "'@cmdline' failed: $!"; + } +} #}}} + +sub rcs_prepedit ($) { #{{{ + return ""; +} #}}} + +sub rcs_commit ($$$;$$) { #{{{ + my ($file, $message, $rcstoken, $user, $ipaddr) = @_; + + if (defined $user) { + $user = possibly_foolish_untaint($user); + } + elsif (defined $ipaddr) { + $user = "Anonymous from ".possibly_foolish_untaint($ipaddr); + } + else { + $user = "Anonymous"; + } + + $message = possibly_foolish_untaint($message); + if (! length $message) { + $message = "no message given"; + } + + my @cmdline = ("bzr", "commit", "-m", $message, "--author", $user, + $config{srcdir}."/".$file); + if (system(@cmdline) != 0) { + warn "'@cmdline' failed: $!"; + } + + return undef; # success +} #}}} + +sub rcs_add ($) { # {{{ + my ($file) = @_; + + my @cmdline = ("bzr", "add", "$config{srcdir}/$file"); + if (system(@cmdline) != 0) { + warn "'@cmdline' failed: $!"; + } +} #}}} + +sub rcs_recentchanges ($) { #{{{ + my ($num) = @_; + + eval q{use CGI 'escapeHTML'}; + error($@) if $@; + + my @cmdline = ("bzr", "log", "-v", "--limit", $num, $config{srcdir}); + open (my $out, "@cmdline |"); + + eval q{use Date::Parse}; + error($@) if $@; + + my @ret; + foreach my $info (bzr_log($out)) { + my @pages = (); + my @message = (); + + foreach my $msgline (split(/\n/, $info->{message})) { + push @message, { line => $msgline }; + } + + foreach my $file (split(/\n/, $info->{files})) { + my $diffurl = $config{'diffurl'}; + $diffurl =~ s/\[\[file\]\]/$file/go; + $diffurl =~ s/\[\[r2\]\]/$info->{revno}/go; + + push @pages, { + page => pagename($file), + diffurl => $diffurl, + }; + } + + my $user = $info->{"committer"}; + if (defined($info->{"author"})) { $user = $info->{"author"}; } + $user =~ s/\s*<.*>\s*$//; + $user =~ s/^\s*//; + + push @ret, { + rev => $info->{"revno"}, + user => $user, + committype => "bzr", + when => time - str2time($info->{"timestamp"}), + message => [@message], + pages => [@pages], + }; + } + + return @ret; +} #}}} + +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 |"); + + my @log = bzr_log($out); + + if (length @log < 1) { + return 0; + } + + eval q{use Date::Parse}; + error($@) if $@; + + my $ctime = str2time($log[0]->{"timestamp"}); + return $ctime; +} #}}} + +1 -- cgit v1.2.3 From e050f35261fe453b70294b58bc6c87bfe57cf231 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 19:56:19 -0500 Subject: doc updates for bzr --- doc/ikiwiki.setup | 5 +++++ doc/rcs/bzr.mdwn | 8 ++++++++ doc/rcs/details.mdwn | 2 ++ doc/setup.mdwn | 7 +++++++ doc/todo/bzr.mdwn | 2 ++ 5 files changed, 24 insertions(+) create mode 100644 doc/rcs/bzr.mdwn diff --git a/doc/ikiwiki.setup b/doc/ikiwiki.setup index 9bf542981..e2974cfd5 100644 --- a/doc/ikiwiki.setup +++ b/doc/ikiwiki.setup @@ -42,6 +42,11 @@ use IkiWiki::Setup::Standard { #historyurl => "http://localhost:8000/log/tip/[[file]]", # hg serve'd local repository #diffurl => "http://localhost:8000/?fd=[[r2]];file=[[file]]", + # Bazaar stuff. + #rcs => "bzr", + #historyurl => ??, + #diffurl => ??, + # Monotone stuff #rcs => "monotone", #mtnkey => "web\@machine.company.com", diff --git a/doc/rcs/bzr.mdwn b/doc/rcs/bzr.mdwn new file mode 100644 index 000000000..19a7ae395 --- /dev/null +++ b/doc/rcs/bzr.mdwn @@ -0,0 +1,8 @@ +[Bazaar](http://bazaar-vcs.org/) is a distributed revison control +system developed by Canonical Ltd. Ikiwiki supports storing a wiki in a +bzr repository. + +Ikiwiki can run as a post-update hook to update a wiki whenever commits +come in. When running as a [[cgi]] with bzr, ikiwiki automatically +commits edited pages, and uses the bzr history to generate the +[[RecentChanges]] page. diff --git a/doc/rcs/details.mdwn b/doc/rcs/details.mdwn index 6b9ffb91f..449e129bd 100644 --- a/doc/rcs/details.mdwn +++ b/doc/rcs/details.mdwn @@ -352,3 +352,5 @@ merge again with a merger that inserts conflict markers. It commits this new revision with conflict markers to the repository. It then returns the text to the user for cleanup. This is less neat than it could be, in that a conflict marked revision gets committed to the repository. + +## [[bzr]] diff --git a/doc/setup.mdwn b/doc/setup.mdwn index 9bf7f7c7b..857a9dbae 100644 --- a/doc/setup.mdwn +++ b/doc/setup.mdwn @@ -135,6 +135,13 @@ about using the git repositories. ikiwiki-makerepo mercurial $SRCDIR """]] +[[toggle id=mercurial text="Bazaar"]] +[[toggleable id=bazaar text=""" + REPOSITORY=$SRCDIR + # FIXME: doesn't work yet with bzr + ikiwiki-makerepo bzr $SRCDIR +"""]] + [[toggle id=tla text="TLA"]] [[toggleable id=tla text=""" REPOSITORY=~/wikirepo diff --git a/doc/todo/bzr.mdwn b/doc/todo/bzr.mdwn index 51ae08146..179ea2f24 100644 --- a/doc/todo/bzr.mdwn +++ b/doc/todo/bzr.mdwn @@ -190,3 +190,5 @@ and rcs_getctime and rcs_notify aren't written at all. --[[bma]] > I've just posted another patch with support for bzr, including support for > --author and a testsuite to git://git.samba.org/jelmer/ikiwiki.git. I hadn't > seen this page earlier. --[[jelmer]] + +> I used jelmer's patch --[[done]]! --[[Joey]] -- cgit v1.2.3 From 8427187a398d5aee84320f44d65073a33966625f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 19:56:53 -0500 Subject: update --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index f29831f1a..492ac4caf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -36,8 +36,8 @@ ikiwiki (2.30) UNRELEASED; urgency=low * meta: To support the pagespec functions, metadata about pages has to be retained as pagestate. * Fix encoding bug when pagestate values contained spaces. - * Add support for the bazaar revision control system. Patch from Jelmer - Vernooij. Thanks also to bma for his independent work on bzr support. + * Add support for bzr, written by Jelmer Vernooij. Thanks also to bma for + his independent work on bzr support. -- Joey Hess Fri, 11 Jan 2008 15:09:37 -0500 -- cgit v1.2.3 From a5907a0b0d47d82fd4fccd13e9a7f5ec877cb66e Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 30 Jan 2008 02:02:25 +0100 Subject: Support creating bzr branches in ikiwiki-makerepo. --- ikiwiki-makerepo | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ikiwiki-makerepo b/ikiwiki-makerepo index 423c4d93b..dd23b4638 100755 --- a/ikiwiki-makerepo +++ b/ikiwiki-makerepo @@ -7,7 +7,7 @@ repository="$3" usage () { echo "usage: ikiwiki-makerepo svn|git srcdir repository" >&2 - echo " ikiwiki-makerepo mercurial srcdir" >&2 + echo " ikiwiki-makerepo bzr|mercurial srcdir" >&2 exit 1 } @@ -20,7 +20,7 @@ if [ ! -d "$srcdir" ]; then exit 1 fi -if [ "$rcs" != mercurial ]; then +if [ "$rcs" != mercurial ] && [ "$rcs" != bzr ]; then if [ -e "$repository" ]; then echo "repository $repository already exists, aborting" >&2 exit 1 @@ -73,6 +73,14 @@ mercurial) hg commit -m "initial import" echo "Directory $srcdir is now set up as a mercurial repository" ;; +bzr) + bzr init "$srcdir" + cd "$srcdir" + echo .ikiwiki > .bzrignore + bzr add * .bzrignore + bzr commit -m "initial import" + echo "Directory $srcdir is now set up as a bzr repository" +;; *) echo "Unsupported revision control system $rcs" >&2 usage -- cgit v1.2.3 From ab414bc56c1ad2620a48902ad6bca1cf3ba11611 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 20:04:42 -0500 Subject: remove todo --- doc/setup.mdwn | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/setup.mdwn b/doc/setup.mdwn index 857a9dbae..9d7aecabd 100644 --- a/doc/setup.mdwn +++ b/doc/setup.mdwn @@ -138,7 +138,6 @@ about using the git repositories. [[toggle id=mercurial text="Bazaar"]] [[toggleable id=bazaar text=""" REPOSITORY=$SRCDIR - # FIXME: doesn't work yet with bzr ikiwiki-makerepo bzr $SRCDIR """]] -- cgit v1.2.3 From 246e93a300f81d67f5e6339e77cd533b815da9e9 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 30 Jan 2008 02:29:28 +0100 Subject: Expand file-id in diffurl in the bzr backend. --- IkiWiki/Rcs/bzr.pm | 9 ++++++--- t/bazaar.t | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/IkiWiki/Rcs/bzr.pm b/IkiWiki/Rcs/bzr.pm index 43822fe8f..a04bfe1cb 100644 --- a/IkiWiki/Rcs/bzr.pm +++ b/IkiWiki/Rcs/bzr.pm @@ -95,7 +95,8 @@ sub rcs_recentchanges ($) { #{{{ eval q{use CGI 'escapeHTML'}; error($@) if $@; - my @cmdline = ("bzr", "log", "-v", "--limit", $num, $config{srcdir}); + my @cmdline = ("bzr", "log", "-v", "--show-ids", "--limit", $num, + $config{srcdir}); open (my $out, "@cmdline |"); eval q{use Date::Parse}; @@ -111,12 +112,14 @@ sub rcs_recentchanges ($) { #{{{ } foreach my $file (split(/\n/, $info->{files})) { + my ($filename, $fileid) = split(/[ \t]+/, $file); my $diffurl = $config{'diffurl'}; - $diffurl =~ s/\[\[file\]\]/$file/go; + $diffurl =~ s/\[\[file\]\]/$filename/go; + $diffurl =~ s/\[\[file-id\]\]/$fileid/go; $diffurl =~ s/\[\[r2\]\]/$info->{revno}/go; push @pages, { - page => pagename($file), + page => pagename($filename), diffurl => $diffurl, }; } diff --git a/t/bazaar.t b/t/bazaar.t index 75534682b..f064814fe 100755 --- a/t/bazaar.t +++ b/t/bazaar.t @@ -17,7 +17,7 @@ use Test::More tests => 11; BEGIN { use_ok("IkiWiki"); } %config=IkiWiki::defaultconfig(); -$config{rcs} = "bazaar"; +$config{rcs} = "bzr"; $config{srcdir} = "$dir/repo"; IkiWiki::checkconfig(); -- cgit v1.2.3 From cb670988ea416d5aa99d95ea9f4cbbd1ee956ee1 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 30 Jan 2008 02:32:19 +0100 Subject: Add example diffurl for bzr. --- doc/ikiwiki.setup | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/ikiwiki.setup b/doc/ikiwiki.setup index e2974cfd5..f808be2c2 100644 --- a/doc/ikiwiki.setup +++ b/doc/ikiwiki.setup @@ -44,8 +44,8 @@ use IkiWiki::Setup::Standard { # Bazaar stuff. #rcs => "bzr", - #historyurl => ??, - #diffurl => ??, + #historyurl => "", + #diffurl => "http://example.com/revision?start_revid=[[r2]]#[[file]]-s", # using loggerhead # Monotone stuff #rcs => "monotone", -- cgit v1.2.3 From 002cf74f182dbf70ea3d85f8e8e4117ecdc38621 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 20:42:32 -0500 Subject: * Copyright file updates. --- debian/changelog | 1 + debian/copyright | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 492ac4caf..48415fa67 100644 --- a/debian/changelog +++ b/debian/changelog @@ -38,6 +38,7 @@ ikiwiki (2.30) UNRELEASED; urgency=low * Fix encoding bug when pagestate values contained spaces. * Add support for bzr, written by Jelmer Vernooij. Thanks also to bma for his independent work on bzr support. + * Copyright file updates. -- Joey Hess Fri, 11 Jan 2008 15:09:37 -0500 diff --git a/debian/copyright b/debian/copyright index e6e164aca..78b155f6c 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,15 +1,21 @@ Files: * -Copyright: © 2006-2007 Joey Hess +Copyright: © 2006-2008 Joey Hess 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/*, ikiwiki.setup -Copyright: © 2006-2007 Joey Hess +Copyright: © 2006-2008 Joey Hess License: other Redistribution and use in source and compiled forms, with or without modification, are permitted under any circumstances. No warranty. +Files: bzr.pm +Copyright: + © 2008 Jelmer Vernooij + © 2006 Emanuele Aina +License: GPL-2+ + Files: git.pm Copyright: © 2006-2007 Recai Oktaş License: GPL-2+ -- cgit v1.2.3 From d758d326042ee3f2b44d899dc78158c99f901c3f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 21:57:50 -0500 Subject: web commit by http://subvert.org.uk/~bma/ --- doc/todo/multiple_output_formats.mdwn | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/todo/multiple_output_formats.mdwn b/doc/todo/multiple_output_formats.mdwn index 76fd39303..00623be39 100644 --- a/doc/todo/multiple_output_formats.mdwn +++ b/doc/todo/multiple_output_formats.mdwn @@ -5,4 +5,13 @@ This would provide true "printable versions" of the wiki pages supporting it. --[[JeremieKoenig]] +Could this be done by making the output format a plugin, similar to the way +pyblosxom works? Atom and RSS could then possibly be moved into plugins. + +Presumably they'd have to work by converting HTML into some other format, as +trying to force all input languages to generate more than one output language +would be impractical to say the least. + +--[[bma]] + [[tag wishlist]] -- cgit v1.2.3 From 4d1a794c3fd2116b2755877f73d6874db6c03083 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 30 Jan 2008 01:38:33 -0500 Subject: typography --- doc/rcs/git.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/rcs/git.mdwn b/doc/rcs/git.mdwn index 0353d1535..38a418a5b 100644 --- a/doc/rcs/git.mdwn +++ b/doc/rcs/git.mdwn @@ -39,7 +39,7 @@ should go to the bare repository, which has a `post-update` hook that uses ikiwiki to pull the changes to the srcdir. One setup that will work is to put all committers in a group (say, -ikiwiki), and use permissions to allow that group to commit to the bare git +"ikiwiki"), and use permissions to allow that group to commit to the bare git repository. Make both the post-update hook and ikiwiki.cgi be setgid to the group, as well as suid to the user who admins the wiki. The `wrappergroup` [[setup_file_option|usage]] can be used to make the wrappers -- cgit v1.2.3 From 55e16be44a2aa1da578ef896ebac40095f606e15 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 30 Jan 2008 02:29:12 -0500 Subject: move recentchanges link enabling into a pagetemplate hook --- IkiWiki/Plugin/recentchanges.pm | 13 +++++++++++++ IkiWiki/Render.pm | 6 ------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 5ac0a30ef..8ceb2dfbf 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -9,6 +9,7 @@ sub import { #{{{ hook(type => "checkconfig", id => "recentchanges", call => \&checkconfig); hook(type => "refresh", id => "recentchanges", call => \&refresh); hook(type => "htmlize", id => "_change", call => \&htmlize); + hook(type => "pagetemplate", id => "recentchanges", call => \&pagetemplate); } #}}} sub checkconfig () { #{{{ @@ -32,6 +33,18 @@ sub refresh ($) { #{{{ } } #}}} +# Enable the recentchanges link on wiki pages. +sub pagetemplate (@) { #{{{ + my %params=@_; + my $template=$params{template}; + my $page=$params{page}; + if ($config{rcs} && $page ne $config{recentchangespage} && + $template->query(name => "recentchangesurl")) { + $template->param(recentchangesurl => urlto($config{recentchangespage}, $page)); + $template->param(have_actions => 1); + } +} #}}} + # Pages with extension _change have plain html markup, pass through. sub htmlize (@) { #{{{ my %params=@_; diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index be5af84ba..6dc70beb5 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -85,12 +85,6 @@ sub genpage ($$) { #{{{ $actions++; } - if ($config{rcs} && exists $config{recentchangespage} && - $page ne $config{recentchangespage}) { - $template->param(recentchangesurl => urlto($config{recentchangespage}, $page)); - $actions++; - } - if (length $config{historyurl}) { my $u=$config{historyurl}; $u=~s/\[\[file\]\]/$pagesources{$page}/g; -- cgit v1.2.3 From 870adf3bbf459e3f234fb06322b750582ab47912 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 30 Jan 2008 02:39:17 -0500 Subject: move openiduser function to the openid plugin --- IkiWiki.pm | 25 +------------------------ IkiWiki/Plugin/openid.pm | 27 +++++++++++++++++++++++++++ IkiWiki/Plugin/recentchanges.pm | 2 +- 3 files changed, 29 insertions(+), 25 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 016c664b5..050d4e5b2 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -613,33 +613,10 @@ sub htmllink ($$$;@) { #{{{ return "$linktext"; } #}}} -sub openiduser ($) { #{{{ - my $user=shift; - - if ($user =~ m!^https?://! && - eval q{use Net::OpenID::VerifiedIdentity; 1} && !$@) { - my $oid=Net::OpenID::VerifiedIdentity->new(identity => $user); - my $display=$oid->display; - # Convert "user.somehost.com" to "user [somehost.com]". - if ($display !~ /\[/) { - $display=~s/^(.*?)\.([^.]+\.[a-z]+)$/$1 [$2]/; - } - # Convert "http://somehost.com/user" to "user [somehost.com]". - if ($display !~ /\[/) { - $display=~s/^https?:\/\/(.+)\/([^\/]+)$/$2 [$1]/; - } - $display=~s!^https?://!!; # make sure this is removed - eval q{use CGI 'escapeHTML'}; - error($@) if $@; - return escapeHTML($display); - } - return; -} - sub userlink ($) { #{{{ my $user=shift; - my $oiduser=openiduser($user); + my $oiduser=eval { openiduser($user) }; if (defined $oiduser) { return "$oiduser"; } diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index e8dbe964f..de31f38ee 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -164,4 +164,31 @@ sub getobj ($$) { #{{{ ); } #}}} +package IkiWiki; + +# This is not used by this plugin, but this seems the best place to put it. +# Used elsewhere to pretty-display the name of an openid user. +sub openiduser ($) { #{{{ + my $user=shift; + + if ($user =~ m!^https?://! && + eval q{use Net::OpenID::VerifiedIdentity; 1} && !$@) { + my $oid=Net::OpenID::VerifiedIdentity->new(identity => $user); + my $display=$oid->display; + # Convert "user.somehost.com" to "user [somehost.com]". + if ($display !~ /\[/) { + $display=~s/^(.*?)\.([^.]+\.[a-z]+)$/$1 [$2]/; + } + # Convert "http://somehost.com/user" to "user [somehost.com]". + if ($display !~ /\[/) { + $display=~s/^https?:\/\/(.+)\/([^\/]+)$/$2 [$1]/; + } + $display=~s!^https?://!!; # make sure this is removed + eval q{use CGI 'escapeHTML'}; + error($@) if $@; + return escapeHTML($display); + } + return; +} + 1 diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 8ceb2dfbf..337fb7ac5 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -82,7 +82,7 @@ sub store ($$$) { #{{{ # See if the committer is an openid. $change->{author}=$change->{user}; - my $oiduser=IkiWiki::openiduser($change->{user}); + my $oiduser=eval { IkiWiki::openiduser($change->{user}) }; if (defined $oiduser) { $change->{authorurl}=$change->{user}; $change->{user}=$oiduser; -- cgit v1.2.3 From 2275a3ab4e1bce25eb645b32466a20395011150e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 30 Jan 2008 15:37:12 -0500 Subject: possible implementation --- .../Inline_plugin_option_to_show_full_page_path.mdwn | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/doc/todo/Inline_plugin_option_to_show_full_page_path.mdwn b/doc/todo/Inline_plugin_option_to_show_full_page_path.mdwn index 4eb1f8a05..ab9cd61e4 100644 --- a/doc/todo/Inline_plugin_option_to_show_full_page_path.mdwn +++ b/doc/todo/Inline_plugin_option_to_show_full_page_path.mdwn @@ -10,3 +10,19 @@ The only other way I can think of making this work would be to set the title of Cheers, [[AdamShand]] + +> One way to approach it would be to add a field to the template +> that contains the full page name. Then you just use a modified +> `inlinepage.tmpl`, that uses that instead of the title. --[[Joey]] + +diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm +index 59eabb6..82913ba 100644 +--- a/IkiWiki/Plugin/inline.pm ++++ b/IkiWiki/Plugin/inline.pm +@@ -229,6 +229,7 @@ sub preprocess_inline (@) { #{{{ + $template->param(content => $content); + } + $template->param(pageurl => urlto(bestlink($params{page}, $page), $params{destpage})); ++ $template->param(page => $page); + $template->param(title => pagetitle(basename($page))); + $template->param(ctime => displaytime($pagectime{$page}, $params{timeformat})); -- cgit v1.2.3 From d40b2751151397344ed1a55a3e97ecdc0cecd56d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 30 Jan 2008 15:33:13 -0500 Subject: comment --- doc/todo/fortune:_select_options_via_environment.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/todo/fortune:_select_options_via_environment.mdwn b/doc/todo/fortune:_select_options_via_environment.mdwn index 75b48cd9c..f906312fe 100644 --- a/doc/todo/fortune:_select_options_via_environment.mdwn +++ b/doc/todo/fortune:_select_options_via_environment.mdwn @@ -29,3 +29,6 @@ if ($?) { return "[[".gettext("fortune failed")."]]"; + +> An environment variable is not the right approach. Ikiwiki has a setup +> file, and plugins can use configuration from there. --[[Joey]] -- cgit v1.2.3 From 2952288db44d5cdea9e19fd2254ab2fdff1c6352 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 30 Jan 2008 15:31:07 -0500 Subject: move suggestion to a todo item --- doc/plugins/toggle/discussion.mdwn | 4 ---- doc/todo/toggle_initial_state.mdwn | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 doc/todo/toggle_initial_state.mdwn diff --git a/doc/plugins/toggle/discussion.mdwn b/doc/plugins/toggle/discussion.mdwn index 08ccddea8..22a09685d 100644 --- a/doc/plugins/toggle/discussion.mdwn +++ b/doc/plugins/toggle/discussion.mdwn @@ -15,7 +15,3 @@ but no success. How can I do it? # [[bugs/Bug_when_toggling_in_a_preview_page]] - -# Initial State - -It would be nice if one could set the initial state of the toggleable area. diff --git a/doc/todo/toggle_initial_state.mdwn b/doc/todo/toggle_initial_state.mdwn new file mode 100644 index 000000000..f54d33c04 --- /dev/null +++ b/doc/todo/toggle_initial_state.mdwn @@ -0,0 +1,4 @@ +It would be nice if one could set the initial state of the toggleable area. +--[[[rdennis]] + +[[tag plugins/toggle]] -- cgit v1.2.3 From 35af86096bfba6c2c11a4213824b80e76a95eef1 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 30 Jan 2008 15:24:39 -0500 Subject: copying an intersting bit from an email I'm writing --- doc/security/discussion.mdwn | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 doc/security/discussion.mdwn diff --git a/doc/security/discussion.mdwn b/doc/security/discussion.mdwn new file mode 100644 index 000000000..ddf61c5f8 --- /dev/null +++ b/doc/security/discussion.mdwn @@ -0,0 +1,33 @@ +Copied from an email I sent --[[Joey]] + +> Apart from restricting escape characters and characters with special +> meanings to the filesystem (such as '/') or the version control system +> (which may not cope with \n), why limit filenames at all? + +Suppose that git-add and git-commit a shell scripts: + + #!/bin/sh + /opt/git/git commit $1 + + #!/bin/sh + /opt/git/git add $1 + +Ok, that's crappy code, but git add and commit are only run by a trusted +user at the command line, so it's hardly a security hole. (And frankly, +I'm not all too impressed with the real shell code I've seen in git-* +..) + +But there's no security problem until ikiwiki calls it on a filename +that a web user made up. Now, suppose that ikiwiki decided to allow +spaces in filenames. Nothing else new, just spaces. Of course, the above +bad code will fail to add and commit such files. + +But it won't just fail, it can even expose private data. Suppose that $1 +is "foo.mdwn .ikiwiki/userdb foo.mdwn". Then the userdb, with its +passwords and emails is committed, along with foo.mdwn. + +Moral: ikiwiki interfaces with code that was not necessarily written for the +security context that ikiwiki runs in. Even the most innocuous filenames can do +very unexpected things if you let the shell get ahold of them. Ikiwiki needs to +sanitize the hell out of user inputted data before letting it anywhere near the +shell. -- cgit v1.2.3 From 3f8858445ca8eafb36ab5079f2c941e8d719de91 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 31 Jan 2008 08:29:03 -0500 Subject: web commit from 134.2.66.50: poll vote (It's fast enough) --- doc/news/server_speed.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/news/server_speed.mdwn b/doc/news/server_speed.mdwn index 512685438..fefffa433 100644 --- a/doc/news/server_speed.mdwn +++ b/doc/news/server_speed.mdwn @@ -1,7 +1,7 @@ Quick poll: Do you feel that ikiwiki is fast enough on this server, or should I move it to my much beefier auxillary server? -[[poll 38 "It's fast enough" 4 "It's too slow!" 4 "No opinion"]] +[[poll 39 "It's fast enough" 4 "It's too slow!" 4 "No opinion"]] If you have specifics on performance issues, you might mention them on the [[discussion]] page. -- cgit v1.2.3 From 6e639dccd146da329ff7f40c1b3de8f2d4a4b144 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 31 Jan 2008 17:04:45 -0500 Subject: web commit by http://users.itk.ppke.hu/~cstamas/: add unaccent todo and link to patch --- doc/todo/unaccent_url_instead_of_encoding.mdwn | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 doc/todo/unaccent_url_instead_of_encoding.mdwn diff --git a/doc/todo/unaccent_url_instead_of_encoding.mdwn b/doc/todo/unaccent_url_instead_of_encoding.mdwn new file mode 100644 index 000000000..04163fa9c --- /dev/null +++ b/doc/todo/unaccent_url_instead_of_encoding.mdwn @@ -0,0 +1,9 @@ +If one puts localized chars in wikilinks ikiwiki will escape it. +This works right from a technical point of view, but the URLs will become ugly. + +So I made a patch which unaccent chars: +This is a one liner change, but requires a bit of reordering in the code. + +[[cstamas]] + +[[tag whishlist patch]] -- cgit v1.2.3 From a9da9fcd251e7b86212d6cc9cceafa76372f0dcc Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 31 Jan 2008 17:05:29 -0500 Subject: web commit by http://users.itk.ppke.hu/~cstamas/: typo --- doc/todo/unaccent_url_instead_of_encoding.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/todo/unaccent_url_instead_of_encoding.mdwn b/doc/todo/unaccent_url_instead_of_encoding.mdwn index 04163fa9c..fbba893c5 100644 --- a/doc/todo/unaccent_url_instead_of_encoding.mdwn +++ b/doc/todo/unaccent_url_instead_of_encoding.mdwn @@ -6,4 +6,4 @@ This is a one liner change, but requires a bit of reordering in the code. [[cstamas]] -[[tag whishlist patch]] +[[tag wishlist patch]] -- cgit v1.2.3 From bc119adc11e2ae871d238f807691717d40010a25 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 1 Feb 2008 18:42:06 -0500 Subject: web commit by http://willu.myopenid.com/: doxygen support wishlist entry --- doc/todo/doxygen_support.mdwn | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 doc/todo/doxygen_support.mdwn diff --git a/doc/todo/doxygen_support.mdwn b/doc/todo/doxygen_support.mdwn new file mode 100644 index 000000000..ae31c1603 --- /dev/null +++ b/doc/todo/doxygen_support.mdwn @@ -0,0 +1,7 @@ +[[tag wishlist]] + +Given that ikiwiki has a suggested use as a tool for developers, I was thinking it might be cool if ikiwiki had [Doxygen](http://www.doxygen.org/) support. I'm not exactly sure how the integration would work. Something along the lines of a plugin to support .dox files would be my first thought. I'd leave generating the documentation from any source files for a separate run of Doxygen - it'd be easier and you probably don't want the source being edited over the web. + +#### Background #### + +I have been involved with one project that uses Doxygen to generate their web pages and user docs, as well as their 'in code' documentation: . This makes the whole system somewhat like ikiwiki, but without the cgi for public editing. I was thinking of trying to convince that project to move to ikiwiki, but they're not going to want to re-write all their documentation. -- cgit v1.2.3 From 7f17dad399b7525a3b1abc550656e08d61a2094a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 06:54:06 -0500 Subject: web commit by http://perolofsson.myopenid.com/ --- doc/users/perolofsson.mdwn | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 doc/users/perolofsson.mdwn diff --git a/doc/users/perolofsson.mdwn b/doc/users/perolofsson.mdwn new file mode 100644 index 000000000..7602140be --- /dev/null +++ b/doc/users/perolofsson.mdwn @@ -0,0 +1,5 @@ +Per Olofsson + +* +* +* . -- cgit v1.2.3 From c6d223bdd049a86d4dd886b097710d7325986610 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 06:55:26 -0500 Subject: web commit by http://perolofsson.myopenid.com/: add title --- doc/users/perolofsson.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/users/perolofsson.mdwn b/doc/users/perolofsson.mdwn index 7602140be..e03cadbb5 100644 --- a/doc/users/perolofsson.mdwn +++ b/doc/users/perolofsson.mdwn @@ -1,3 +1,5 @@ +[[meta title="Per Olofsson"]] + Per Olofsson * -- cgit v1.2.3 From 965efbb4410883e4b841e352919e26be3e7f9373 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 06:59:00 -0500 Subject: web commit by http://perolofsson.myopenid.com/ --- doc/bugs/discussion_of_what__63__.mdwn | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 doc/bugs/discussion_of_what__63__.mdwn diff --git a/doc/bugs/discussion_of_what__63__.mdwn b/doc/bugs/discussion_of_what__63__.mdwn new file mode 100644 index 000000000..2f469fed9 --- /dev/null +++ b/doc/bugs/discussion_of_what__63__.mdwn @@ -0,0 +1,3 @@ +When searching in ikiwiki, sometimes discussion pages turn up. However, they are only titled "discussion". +In order to know what topic they are discussing, you have to look at the URL. Shouldn't they be titled +"foo/discussion" or "discussion of foo" or something? Thanks, --[[perolofsson]] -- cgit v1.2.3 From 374b8c413f3895a0303734be3689b1a7009aaec5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 09:38:27 -0500 Subject: web commit by http://edward.myopenid.com/: correct spelling mistakes and vote --- doc/news/server_speed.mdwn | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/news/server_speed.mdwn b/doc/news/server_speed.mdwn index fefffa433..9ff0e9824 100644 --- a/doc/news/server_speed.mdwn +++ b/doc/news/server_speed.mdwn @@ -1,15 +1,15 @@ Quick poll: Do you feel that ikiwiki is fast enough on this server, or -should I move it to my much beefier auxillary server? +should I move it to my much beefier auxiliary server? -[[poll 39 "It's fast enough" 4 "It's too slow!" 4 "No opinion"]] +[[poll 40 "It's fast enough" 4 "It's too slow!" 4 "No opinion"]] If you have specifics on performance issues, you might mention them on the [[discussion]] page. The current server is a single processor 2.8 ghz Sepron machine shared -amoung 4 other xen instances, and often +among 4 other xen instances, and often [heavily loaded](http://bluebird.kitenet.net/munin/kitenet.net/wren.kitenet.net-load.html) -by extraneous stuff like spamassassin and compiles. The auxillary server is +by extraneous stuff like spamassassin and compiles. The auxiliary server is a dual processor, dual core 2 ghz Opteron shared with other xen instances (exact number not available from provider), but with [little other load](http://bluebird.kitenet.net/munin/kitenet.net/bluebird.kitenet.net-load.html). -- cgit v1.2.3 From e32772dd1b9082fa360f437377039e02bf3757d2 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 12:42:10 -0500 Subject: web commit by AdamMeyars --- doc/ikiwikiusers.mdwn | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index bf2ade883..4f5510e39 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -55,6 +55,10 @@ Personal sites and blogs * [Keith Packard's homepage and blog](http://keithp.com/). * [Christian Mock's homepage](http://www.tahina.priv.at/). * [Choffee](http://choffee.co.uk/). +* [Generic viagra](http://www.pharmalinerx.com/). +* [Buy cialis](http://www.divadrugs.com/). +* [Buy Viagra](http://sunpillrx.com/). +* [Buy Cialis online](http://dionpills.org/). * [Tales from the Gryphon](http://www.golden-gryphon.com/blog/manoj/), Manoj Srivastava's free software blog. * [Proper Treatment 正當作法](http://conway.rutgers.edu/~ccshan/wiki/) * [lost scraps](http://web.mornfall.net), pages/blog of Petr Ročkai aka mornfall @@ -70,6 +74,9 @@ Personal sites and blogs * [Effective Programming](http://effectiveprogramming.com/) * [Embedded Moose](http://embeddedmoose.com), Andrew Greenberg's personal and consulting page. * [Chez Fred](http://fred.ccheznous.org) +* [Cialis Online](http://www.loskhealth.com/) +* [Mp3 Download](http://www.atakamus.com/) +* [Mp3 songs Download](http://www.ihotmusic.net/) * [Cameron Dale](http://www.camrdale.org/) * [[KarlMW]]'s [homepage](http://mowson.org/karl/), generated with an ikiwiki [asciidoc plugin](http://mowson.org/karl/colophon/). -- cgit v1.2.3 From 4e72736fe07254b65ff0a2a02e072853abefa49d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 17:31:44 -0500 Subject: Revert "web commit by AdamMeyars" This reverts commit e32772dd1b9082fa360f437377039e02bf3757d2. Spam. Welcome the the banlist, "AdamMeyars". --- doc/ikiwikiusers.mdwn | 7 ------- 1 file changed, 7 deletions(-) diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 4f5510e39..bf2ade883 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -55,10 +55,6 @@ Personal sites and blogs * [Keith Packard's homepage and blog](http://keithp.com/). * [Christian Mock's homepage](http://www.tahina.priv.at/). * [Choffee](http://choffee.co.uk/). -* [Generic viagra](http://www.pharmalinerx.com/). -* [Buy cialis](http://www.divadrugs.com/). -* [Buy Viagra](http://sunpillrx.com/). -* [Buy Cialis online](http://dionpills.org/). * [Tales from the Gryphon](http://www.golden-gryphon.com/blog/manoj/), Manoj Srivastava's free software blog. * [Proper Treatment 正當作法](http://conway.rutgers.edu/~ccshan/wiki/) * [lost scraps](http://web.mornfall.net), pages/blog of Petr Ročkai aka mornfall @@ -74,9 +70,6 @@ Personal sites and blogs * [Effective Programming](http://effectiveprogramming.com/) * [Embedded Moose](http://embeddedmoose.com), Andrew Greenberg's personal and consulting page. * [Chez Fred](http://fred.ccheznous.org) -* [Cialis Online](http://www.loskhealth.com/) -* [Mp3 Download](http://www.atakamus.com/) -* [Mp3 songs Download](http://www.ihotmusic.net/) * [Cameron Dale](http://www.camrdale.org/) * [[KarlMW]]'s [homepage](http://mowson.org/karl/), generated with an ikiwiki [asciidoc plugin](http://mowson.org/karl/colophon/). -- cgit v1.2.3 From 07abbabd6a134924927fa2425d58b1fc9528afa6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 17:40:05 -0500 Subject: remove mention of commit mails --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index d63adbc1c..e2804b413 100644 --- a/debian/control +++ b/debian/control @@ -27,7 +27,7 @@ Description: a wiki compiler 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, page locking, and commit emails. + resolution, and page locking. . ikiwiki also supports generating news feeds (RSS and Atom) and blogging. ikiwiki provides a plugin system which allows many other features to be -- cgit v1.2.3 From 3e085d938aa35cc62a910493ad5ec44455883eec Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 17:49:05 -0500 Subject: web commit by http://joey.kitenet.net/ --- doc/sandbox.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 17f5fde76..a5c44f109 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -65,7 +65,7 @@ Bulleted list * [GNU](http://www.gnu.org/) * [Email](mailto:noone@invalid) * [![ikiwiki logo](http://ikiwiki.info/logo/ikiwiki.png)](http://ikiwiki.info) -* plain old html link ----- This sandbox is also a [[ikiwiki/blog]]! -- cgit v1.2.3 From e3c21fd5e887c8eb21e33bddbf7c7c5b1a0e6f10 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 17:51:04 -0500 Subject: releasing version 2.30 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 48415fa67..46fcf37dd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -ikiwiki (2.30) UNRELEASED; urgency=low +ikiwiki (2.30) unstable; urgency=low [ Joey Hess ] * Old versions of git-init don't support --git-dir or GIT_DIR with @@ -40,7 +40,7 @@ ikiwiki (2.30) UNRELEASED; urgency=low his independent work on bzr support. * Copyright file updates. - -- Joey Hess Fri, 11 Jan 2008 15:09:37 -0500 + -- Joey Hess Sat, 02 Feb 2008 17:41:57 -0500 ikiwiki (2.20) unstable; urgency=low -- cgit v1.2.3 From dcee0110582a93c0fe404b8fd4d9efdda263d42b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 17:52:29 -0500 Subject: add news item for ikiwiki 2.30 --- doc/news/version_2.10.mdwn | 26 --------------- doc/news/version_2.11.mdwn | 23 ------------- doc/news/version_2.12.mdwn | 31 ------------------ doc/news/version_2.13.mdwn | 26 --------------- doc/news/version_2.14.mdwn | 20 ------------ doc/news/version_2.15.mdwn | 13 -------- doc/news/version_2.16.mdwn | 80 ---------------------------------------------- doc/news/version_2.17.mdwn | 16 ---------- doc/news/version_2.18.mdwn | 17 ---------- doc/news/version_2.19.mdwn | 17 ---------- doc/news/version_2.30.mdwn | 57 +++++++++++++++++++++++++++++++++ 11 files changed, 57 insertions(+), 269 deletions(-) delete mode 100644 doc/news/version_2.10.mdwn delete mode 100644 doc/news/version_2.11.mdwn delete mode 100644 doc/news/version_2.12.mdwn delete mode 100644 doc/news/version_2.13.mdwn delete mode 100644 doc/news/version_2.14.mdwn delete mode 100644 doc/news/version_2.15.mdwn delete mode 100644 doc/news/version_2.16.mdwn delete mode 100644 doc/news/version_2.17.mdwn delete mode 100644 doc/news/version_2.18.mdwn delete mode 100644 doc/news/version_2.19.mdwn create mode 100644 doc/news/version_2.30.mdwn diff --git a/doc/news/version_2.10.mdwn b/doc/news/version_2.10.mdwn deleted file mode 100644 index f4e7e11e7..000000000 --- a/doc/news/version_2.10.mdwn +++ /dev/null @@ -1,26 +0,0 @@ -ikiwiki 2.10 released with [[toggle text="these changes"]] -[[toggleable text=""" - * Tidy ctime debug output for git. - * French translation update. Closes: #[445923](http://bugs.debian.org/445923) - * Fix --get-ctime with git, needed to remove srcdir from filename. - * In the cgi edit path, reload the index file before rendering. A bug - showed up where a web edit that added a page caused a near-concurrent - web edit to fail in will\_render. While it would be hard to reproduce this, - my analysis is that the failing cgi started first, loaded the index file - (prior to locking) then the other cgi created the new page and rendered - it, and then the failing cgi choked on the new file when \_it\_ tried to - render it. Ensuring that the index file is loaded after taking the lock - will avoid this bug. - * Fix strange stderr-hiding code in the git module, allow error messages - to be passed on to stderr. Also fixes a potential bug, since git error - meesages were treated as if they came from git stdout. - * Add a "createlink" class attribute to the span for wikilinks pointing - to not-yet-existing pages. I don't have a useful style defined for that - though. - * Rewritten rst plugin by madduck is a python program that communicates with - ikiwiki via XML RPC. This should be much faster than the old plugin that - had to fork python for every rst page render. Note that if you use - the rst plugin, you now need to have the RPC::XML perl module installed. - * Danish translation from Jonas Smedegaard. Closes: #[446952](http://bugs.debian.org/446952) - * Support git authors of the form "joey <joey>", which is common when - importing from a svn repo."""]] \ No newline at end of file diff --git a/doc/news/version_2.11.mdwn b/doc/news/version_2.11.mdwn deleted file mode 100644 index 0126f9ff7..000000000 --- a/doc/news/version_2.11.mdwn +++ /dev/null @@ -1,23 +0,0 @@ -ikiwiki 2.11 released with [[toggle text="these changes"]] -[[toggleable text=""" - * Correct a pair of logic errors that triggered if svnpath was empty. - * If gitorigin\_branch is set to the empty string, don't push or pull. - Useful for laptop clones of remote wikis. - * Add a calendar plugin, contributed by Manoj Srivastava. - * Reformat calendar plugin to ikiwiki conventions. - * The calendar plugin made *every* page depend on every other page, - which seemed a wee tiny little bit overkill. Fixed the dependency - calculations (I hope.) - * Removed manual ctime statting code, and just have the calendar plugin use - %pagectime. - * Ikiwiki has moved into a git repository. - * postsparkline: Avoid a confusing error message if no pages match - and instead show an empty graph. - * Add handling of feeds for nested inlines, as well as support for a - single page containing two different feeds. - * Also fixed some places in inline that failed to use destpage correctly. - * ikiwiki-mass-rebuild: Patch from HenrikBrixAndersen to fix order - of permissions dropping code to work on FreeBSD. - * ikiwiki-mass-rebuild: Don't clear PATH from the environment. - * Run git-commit -q (though it doesn't do much good due to its stderr - abuse)."""]] \ No newline at end of file diff --git a/doc/news/version_2.12.mdwn b/doc/news/version_2.12.mdwn deleted file mode 100644 index 9c15298f8..000000000 --- a/doc/news/version_2.12.mdwn +++ /dev/null @@ -1,31 +0,0 @@ -ikiwiki 2.12 released with [[toggle text="these changes"]] -[[toggleable text=""" - * [ Joey Hess ] - * Fix some issues with toggles in preview mode. - * Fix an aggregate plugin expiry bug. Over time, it's possible for the same - page name to be expired and reused for several distinct guids. When this - happened, the expiry code counted each past guid that had used that page - name as a currently existing page, and thus expired too many pages. - * Avoid a race in the git rcs\_commit function, by not assuming HEAD will - stay the same for the duration of the function. - * Avoid using commands like git-diff and instead use "git diff". - In some configurations, only the main git command is in the path. - * Improve the RecentChanges display for git merges, by passing -c instead - of -m to git-log, and by skipping display of commits that change no - pages. - * Don't truncate git commit messages to the first line in RecentChanges, - show the full message. - * map: Recent changes caused unnecessary ul's to be inserted for items - that were all at the same level, fix. Closes: #[449285](http://bugs.debian.org/449285) - * [ Josh Triplett ] - * Fix table plugin to not generate an unbalanced tbody tag with header=no - * Add xmlns attribute on html element in templates; pages can now - validate. - * [ Joey Hess ] - * In the example setup file, use mode 6755 for the git post-update hook. - It needs to be setgid if the master repo is a shared repository, so - that pushes into the working copy repository happen as the same group, - avoiding permissions problems. - * The first git commit legitimately has no parents. Avoid recentchanges - spewing uninitialised value warnings and debug messages about it. - Dummying up a parent of 0000000 allows gitweb to work too."""]] \ No newline at end of file diff --git a/doc/news/version_2.13.mdwn b/doc/news/version_2.13.mdwn deleted file mode 100644 index 902f8a813..000000000 --- a/doc/news/version_2.13.mdwn +++ /dev/null @@ -1,26 +0,0 @@ -ikiwiki 2.13 released with [[toggle text="these changes"]] -[[toggleable text=""" - * Add liblwpx-paranoidagent-perl to recommends of Debian package, - this is needed to do OpenID really securely. - * ikiwiki.setup is licensed same as the basewiki, not GPLed. - * inline: Add timeformat parameter to control how the ctime of - inlined pages is displayed. Closes: #[451019](http://bugs.debian.org/451019) - * Add wrappergroup config option, which can be used to cause wrappers - to be created owned by some group other than the default. Useful - then there's a shared repository with access controlled by a group, - to let ikiwiki run setgid to that group. - * ikiwiki-mass-rebuild: Run build with the user in all their groups. - * Correct markdown in example index page in setup. Closes: #[451469](http://bugs.debian.org/451469) - * Better error message when a setup file has a syntax error. - Closes: #[451666](http://bugs.debian.org/451666) - * Fix mercurial historyurl in example setup file. - * More compact output for the brokenlinks plugin. - * Allow trailing slashes after page names in wikilinks. - * Don't consider links to anchors on the same page to be self links. - Patch by Daniel Burrows. Closes: #[451729](http://bugs.debian.org/451729) - * When usedirs is disabled, link direct to index.html files, not to - directories, to improve browsing of file:// urls. - Patch by Daniel Burrows. Closes: #[451728](http://bugs.debian.org/451728) - * Allow html5 video and audio tags and their attributes in the htmlscrubber. - * toc: Handle html elements embedded inside a header, rather than - stopping collecting the header text at the first element."""]] diff --git a/doc/news/version_2.14.mdwn b/doc/news/version_2.14.mdwn deleted file mode 100644 index aa3218581..000000000 --- a/doc/news/version_2.14.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -This is a security fix release, upgrade is recommended. - -News for ikiwiki 2.14: - - This version of ikiwiki is more picky about symlinks in the path leading - to the srcdir, and will refuse to use a srcdir specified by such a path. - This was necessary to avoid some potential exploits, but could potentially - break (semi-)working wikis. If your wiki has a srcdir path containing a - symlink, you should change it to use a path that does not. - -ikiwiki 2.14 released with [[toggle text="these changes"]] -[[toggleable text=""" - * Let CC be used to control what compiler is used to build wrappers. - * Use 'cc' instead of gcc as the default compiler. - * Security fix: Ensure that there are no symlinks anywhere in the path - to the top of the srcdir. In certian unusual configurations, an attacker - who could commit to one of the parent directories of the srcdir could - use a symlink attack to cause ikiwiki to publish files elsewhere in the - filesystem. More details [[here|security#index29h2]] -"""]] diff --git a/doc/news/version_2.15.mdwn b/doc/news/version_2.15.mdwn deleted file mode 100644 index dd448e85e..000000000 --- a/doc/news/version_2.15.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -ikiwiki 2.15 released with [[toggle text="these changes"]] -[[toggleable text=""" - * Add a new ikiwiki-makerepo program, that automates setting up a repo - and importing existing content for svn, git, and mercurial. This makes - the setup process much simpler. - * Reorganised git documentation. - * Actually install the ikiwiki-update-wikilist program. - * Improve workaround for perl bug #376329. Rather than double-encoding, - which has been reported to cause encoding problems (though I haven't - reproduced them), just catch a failure of markdown, and retry. - (The crazy perl bug magically disappears on the retry.) - Closes: #[449379](http://bugs.debian.org/449379) - * Add umask configuration option. Closes: #[443329](http://bugs.debian.org/443329)"""]] \ No newline at end of file diff --git a/doc/news/version_2.16.mdwn b/doc/news/version_2.16.mdwn deleted file mode 100644 index 135a1ab5b..000000000 --- a/doc/news/version_2.16.mdwn +++ /dev/null @@ -1,80 +0,0 @@ -News for ikiwiki 2.16: - - Many of the pages in ikiwiki's basewiki have been moved and renamed in this - release, to avoid the basewiki including pages with names like "blog". - Redirection pages have been left behind for these moved pages temporarily, - and will be removed later. - - The meta plugin no longer supports setting internal or external links - with "meta link". Instead, use "meta openid" for openid links, and use tags - for in-wiki invisible links between pages. - - If you use the calendar plugin, ikiwiki is now smarter and your nightly - cron job to update the wiki doesn't need to rebuild everything. Just pass - --refresh to ikiwiki in the cron job and it will update only pages that - contain out of date calendars. - -ikiwiki 2.16 released with [[toggle text="these changes"]] -[[toggleable text=""" - * Major basewiki reorganisation. Most pages moved into ikiwiki/ subdirectory - to avoid polluting the main namespace, and some were further renamed. - * meta: Add redir support, based on a patch by Thomas Schwinge. - * Redirs added for moved basewiki pages. These will be removed in a future - release. - * Remove .otl file from sandbox to avoid build ugliness. Closes: #[454181](http://bugs.debian.org/454181) - * Finally implemented a simple per-page data storage mechanism for plugins, - via the %pagestate hash. - * Use pagestate in meta to detect potential redir loops. - * Added a version plugin that saves state about what's using it, to force - pages to rebuild when ikiwiki's version changes. - * The calendar plugin stores state about when it needs to be updated, - and forces rebuilds of the pages that contain calendars. So - running ikiwiki --refresh at midnight is now enough, no need for a full - wiki rebuild each midnight. - * calendar: Work around block html parsing bug in markdown 1.0.1 by - enclosing the calendar in an extra div. - * Fix file pruning code to work if ikiwiki is run with "." as the srcdir. - * Add an edittemplate plugin, allowing registering template pages, that - provide default content for new pages created using the web frontend. - * Change formbuilder hook to not be responsible for displaying a form, - so that more than one plugin can use this hook. - I believe this is a safe change, since only passwordauth uses this hook. - (If some other plugin already used it, it would have broken passwordauth!) - * Ensure that web edited pages always end in a newline. - * Avoid unnecessary stat calls to get mtime when rendering pages, use - cached value. - * Preserve input file modification times in output files. - * Allow dashes in preprocessor directive commands, and shortcuts. - * Htmlize parameters passed to the template preprocessor directive before - inserting them into the html template. This ensures that markdown - acts on them, even if the value is expanded inside a block-level html - element in the html template. Closes: #[454058](http://bugs.debian.org/454058) - * Use a div in the note template rather than a span. - * shortcut: Expand %S to the raw input text, not url-encoded. - * Don't increment feed numbers when an inline has no feeds. (Nis Martensen) - * Allow editing a page and deleting all content, while still disallowing - creating a new page that's entirely empty. - * meta: Drop support for "meta link", since supporting this for internal - links required meta to be run during scan, which complicated its data - storage, since it had to clear data stored during the scan pass to avoid - duplicating it during the normal preprocessing pass. - * If you used "meta link", you should switch to either "meta openid" (for - openid delegations), or tags (for internal, invisible links). I assume - that nobody really used "meta link" for external, non-openid links, since - the htmlscrubber ate those. (Tell me differently and I'll consider bringing - back that support.) - * meta: Improved data storage. - * meta: Drop the hackish filter hook that was used to clear - stored data before preprocessing, this hack was ugly, and broken (cf: - liw's disappearing openids). - * aggregate: Convert filter hook to a needsbuild hook. - * map: Don't inline images. - * brokenlinks: Don't list the same link multiple times. (%links might - contain multiple copies of the same link) - * git: Correct display of multiline commit messages in recentchanges. - * Re-organise dependencies and recommends now that recommends are installed - by default. - * Don't refuse to render files with ".." in their name. (Anchor the regexp.) - * Work around perl taint checking bug #411786, where perl sometimes randomly - sets the taint flag on untainted variables, by disabling taint checking - in the deb. This sucks."""]] diff --git a/doc/news/version_2.17.mdwn b/doc/news/version_2.17.mdwn deleted file mode 100644 index f3993c72e..000000000 --- a/doc/news/version_2.17.mdwn +++ /dev/null @@ -1,16 +0,0 @@ -ikiwiki 2.17 released with [[toggle text="these changes"]] -[[toggleable text=""" - * Improved parentlinks special case for index pages. - * redir: Support for specifying anchors. - * img: Avoid nesting images when linking to another image. Closes: #[457780](http://bugs.debian.org/457780) - * img: Allow the link parameter to point to an exterior url. - * conditional: Improve regexp testing for simple uses of pagespecs - that match only the page using the directive, adding 'included()' - and supporting negated pagespecs and added whitespace. - * map: Fix handling of common prefix to handle the case where it's - in a subdirectory. Patch by Larry Clapp. - * aggregate: Fix stupid mistake introduced when converting it to use - the needsbuild hook. This resulted in feeds not being removed when pages - were updated, and feeds sometimes being forgotten about. - * aggregate: Avoid uninitialised value warning when removing a feed that - has an expired guid."""]] \ No newline at end of file diff --git a/doc/news/version_2.18.mdwn b/doc/news/version_2.18.mdwn deleted file mode 100644 index 4eee0bfff..000000000 --- a/doc/news/version_2.18.mdwn +++ /dev/null @@ -1,17 +0,0 @@ -ikiwiki 2.18 released with [[toggle text="these changes"]] -[[toggleable text=""" - * Split error messages for failures to drop real uid and gid. - * Retry dropping uid and gid, possibly this will help with the "Resource - temporarily unavailable" failures I've experienced under xen. - * Stop testing Encode::is\_utf8 in decode\_form\_utf8: That doesn't work. - * decode\_form\_utf8 only fixed the utf-8 encoding for fields that were - registered at the time it was called, which was before the - formbuilder\_setup hook. Fields added by the hook didn't get decoded. - But it can't be put after the hook either, since plugins using the hook - need to be able to use form values. To fix this dilemma, it's been changed - to a decode\_cgi\_utf8, which is called on the cgi query object, before the - form is set up, and decodes *all* cgi parameters. - * aggregate: Only save state if it was already loaded. This didn't used to - matter, but after recent changes, state is not always loaded, and saving - would kill it. - * table: Fix dependency tracking for external data files. Closes: #[458387](http://bugs.debian.org/458387)"""]] \ No newline at end of file diff --git a/doc/news/version_2.19.mdwn b/doc/news/version_2.19.mdwn deleted file mode 100644 index 005f1a379..000000000 --- a/doc/news/version_2.19.mdwn +++ /dev/null @@ -1,17 +0,0 @@ -ikiwiki 2.19 released with [[toggle text="these changes"]] -[[toggleable text=""" - * Only try postsignin if no other action matched. Fixes a bug where the - user goes back from the signin screen and does something else. - * Improve behavior when trying to sign in with no cookies. - * Improved the canedit hook interface, allowing a callback function to be - returned (and not run in some cases) rather than the plugins directly - forcing a user to log in. - * opendiscussion: allow editing of the toplevel discussion page, - and, indirectly, allow creating new discussion pages. - * Add a prereq on Data::Dumper 2.11 or better, needed to dump q// objects. - * htmlscrubber: Further work around #365971 by adding tags for 'br/', 'hr/' - and 'p/'. - * aggregate: Include copyright statements from rss feed as meta copyright - directives. - * aggregate: Yet another state saving fix (sigh). - * aggregate: Add hack to support feeds with invalidly escaped html entities."""]] \ No newline at end of file diff --git a/doc/news/version_2.30.mdwn b/doc/news/version_2.30.mdwn new file mode 100644 index 000000000..9f054a244 --- /dev/null +++ b/doc/news/version_2.30.mdwn @@ -0,0 +1,57 @@ +News for ikiwiki 2.30: + + Ever feel that ikiwiki's handling of RecentChanges wasn't truely in the + spirit of a wiki compiler? Well, that's changed. The RecentChanges page is + now a static page, not a CGI. Users can subscribe to its rss/atom feeds. + Custom RecentChanges pages can be easily set up that display only changes + to a subset of pages, or only changes by a subset of users. + 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. + With this excellent new RecentChanges support, the mail notification system + is showing its age (and known to be variously buggy and underimplemented for + various VCSes), and so ikiwiki's support for sending commit mails is REMOVED + from this version. If you were subscribed to commit mails, you should be + able to accomplish the same thing by subscribing to a RecentChanges feed. + The "svnrepo" and "notify" fields in setup files are no longer used, and + silently ignored. You may want to remove them from your setup file. + +ikiwiki 2.30 released with [[toggle text="these changes"]] +[[toggleable text=""" + * [ Joey Hess ] + * Old versions of git-init don't support --git-dir or GIT\_DIR with + --bare. Change ikiwiki-makerepo to use a method that should work with + those older versions too. + * aggregate: Don't let feeds set creation times for pages in the future. + * Add full parser for git diff-tree output (Brian Downing) + * aggregate: Fork a child process to handle the aggregation. This simplifies + the code, since that process can change internal state as needed, and + it will automatically be cleaned up for the parent process, which proceeds + to render the changes. + * [ Josh Triplett ] + * Add trailing comma to commented-out umask in sample ikiwiki.setup, so + that uncommenting it does not break the setup file. + * [ Joey Hess ] + * inline: The template can check for FIRST and LAST, which will be + set for the first and last inlined page. Useful for templates that build + tables and the like. + * prettydate,ddate: Don't ignore time formats passed to displaytime + function. + * Pages with extensions starting with "\_" are internal-use, and will + not be rendered or web-edited, or matched by normal pagespecs. + * Add "internal()" pagespec that matches internal-use pages. + * RecentChanges is now a static html page, that's updated whenever a commit + is made to the wiki. It's built as a blog using inline, so it can have + an rss feed that users can subscribe to. + * Removed support for sending commit notification mails. Along with it went + the svnrepo and notify settings, though both will be ignored if left in + setup files. Also gone with it is the "user()" pagespec. + * Add refresh hook. + * meta: Add pagespec functions to match against title, author, authorurl, + license, and copyright. This can be used to create custom RecentChanges. + * meta: To support the pagespec functions, metadata about pages has to be + retained as pagestate. + * Fix encoding bug when pagestate values contained spaces. + * Add support for bzr, written by Jelmer Vernooij. Thanks also to bma for + his independent work on bzr support. + * Copyright file updates."""]] \ No newline at end of file -- cgit v1.2.3 From 4820dfe4e0460ce9ad1216cd27cbf28104ac78e4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 17:54:42 -0500 Subject: cleanups --- doc/news/discussion.mdwn | 20 +++++++++++++++++++ doc/news/version_2.14/discussion.mdwn | 20 ------------------- doc/news/version_2.8.mdwn | 14 ------------- doc/news/version_2.9.mdwn | 37 ----------------------------------- 4 files changed, 20 insertions(+), 71 deletions(-) create mode 100644 doc/news/discussion.mdwn delete mode 100644 doc/news/version_2.14/discussion.mdwn delete mode 100644 doc/news/version_2.8.mdwn delete mode 100644 doc/news/version_2.9.mdwn diff --git a/doc/news/discussion.mdwn b/doc/news/discussion.mdwn new file mode 100644 index 000000000..c3674a92d --- /dev/null +++ b/doc/news/discussion.mdwn @@ -0,0 +1,20 @@ +Hi Joey! Where can I find the source package for ikiwiki 2.14? I rather prefer +`wget` than `git` to download it :) I've just checked +[Debian page of ikiwiki source package](http://packages.debian.org/unstable/source/ikiwiki) +and it seems that it still contains older version 2.13. I didn't found +the latest version at too. --[[Paweł|ptecza]] + +> 2.14 is at the url you cited now. --[[Joey]] + +>> Thanks! I can confirm it :) I'm curious what a reason of "delay" is? +>> The sources were accepted in unstable 2 days ago... Please forgive me +>> if it's a stupid question, but I don't know how exactly it works in +>> Debian project. --[[Paweł|ptecza]] + +>>> After I upload, ikiwiki is not pushed out to the mirrors until the +>>> twice-daily mirror sync. After that, packages.debian.org has to run its +>>> update. I'm not sure what the timing of that is, it seems to be +>>> somewhat slower than the mirror sync, and also more subject to breaking +>>> from time to time. --[[Joey]] + +>>>> Thank you for the explanation! :) --[[Paweł|ptecza]] diff --git a/doc/news/version_2.14/discussion.mdwn b/doc/news/version_2.14/discussion.mdwn deleted file mode 100644 index c3674a92d..000000000 --- a/doc/news/version_2.14/discussion.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -Hi Joey! Where can I find the source package for ikiwiki 2.14? I rather prefer -`wget` than `git` to download it :) I've just checked -[Debian page of ikiwiki source package](http://packages.debian.org/unstable/source/ikiwiki) -and it seems that it still contains older version 2.13. I didn't found -the latest version at too. --[[Paweł|ptecza]] - -> 2.14 is at the url you cited now. --[[Joey]] - ->> Thanks! I can confirm it :) I'm curious what a reason of "delay" is? ->> The sources were accepted in unstable 2 days ago... Please forgive me ->> if it's a stupid question, but I don't know how exactly it works in ->> Debian project. --[[Paweł|ptecza]] - ->>> After I upload, ikiwiki is not pushed out to the mirrors until the ->>> twice-daily mirror sync. After that, packages.debian.org has to run its ->>> update. I'm not sure what the timing of that is, it seems to be ->>> somewhat slower than the mirror sync, and also more subject to breaking ->>> from time to time. --[[Joey]] - ->>>> Thank you for the explanation! :) --[[Paweł|ptecza]] diff --git a/doc/news/version_2.8.mdwn b/doc/news/version_2.8.mdwn deleted file mode 100644 index 783ddf3f4..000000000 --- a/doc/news/version_2.8.mdwn +++ /dev/null @@ -1,14 +0,0 @@ -ikiwiki 2.8 released with [[toggle text="these changes"]] -[[toggleable text=""" - * Redid the debian/copyright file, using the proposed new copyright file - format. Included many details not previously listed in the old file. - * inline: add feedonly option, set feedonly=yes to get only the feed button - but not inline the pages. - * meta: Support license and copyright information. The information will - be shown in the page footer. HTML will also be inserted that should - support the rel=license microformat as well as the HTML spec's - rel=copyright. - * table plugin: Actually specify the delimiter when parsing CSV. - * table plugin: The previous version broke WikiLinks inside quoted values. - Fix this by linkifying CSV data after parsing it, while DSV data is still - linkified before parsing."""]] \ No newline at end of file diff --git a/doc/news/version_2.9.mdwn b/doc/news/version_2.9.mdwn deleted file mode 100644 index 225128a5b..000000000 --- a/doc/news/version_2.9.mdwn +++ /dev/null @@ -1,37 +0,0 @@ -News for ikiwiki 2.9: - - Since ikiwiki 2.0 was released, some limitiations have been added to what - ikiwiki considers a WikiLink. In short, if there are any spaces in between - the brackets, ikiwiki no longer considers it to be a WikiLink. If your wiki - contains things meant to be WikiLinks that contain spaces, you will need to - fix them, by replacing the spaces with underscores. - WikiLink have always been documented to not contain spaces, but bugs in - ikiwiki made it treat some text with spaces as WikiLinks. Most of these - bugs were fixed in version 2.2, and a final bug was fixed in this 2.9 - release. These fixes are necessary to avoid ambiguity between - WikiLinks and PreProcessorDirectives. Apologies for any inconvenience - these bugs (and their fixes) may have caused. - -ikiwiki 2.9 released with [[toggle text="these changes"]] -[[toggleable text=""" - * Fix copyright and licence styling. - * tag: Add taglink preprocessor directive, supporting visible tag links. - Closes: #[443344](http://bugs.debian.org/443344) - * map: Fully specify paths to links to avoid issues when the bestlink - didn't point to the correct page. - * map: Render pages on the way to subpages whose parent pages - are not included in the map. Include special styling for such pages. - * map: Remove common prefixes and don't over-indent. - * Add class option to htmllink(). - * img: Allow link=somepage to cause the image to link to a given page. - Slight overriding of link, as link=no is still used to disable the linking - entirely. Unless you have a page named "no".. - * Save index after previewing page edit, since even previewing can create - files in some situations, and this is appropriate in some cases, such as - the teximg plugin's error log file. - Such files will be automatically cleaned up at an appopriate later time. - * Don't allow whitespace in link text in a wikilink. This was still - allowed by the regexp in one case though not documented to work, and - was ambiguous with preprocessor directives. - * camelcase: Tighten regexp to avoid false positives. WikiWords are only - linkified now if they are preceeded by whitespace."""]] \ No newline at end of file -- cgit v1.2.3 From c575df1657101decd4f427d6215d3a43a8137824 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 17:55:21 -0500 Subject: formatting --- doc/news/version_2.30.mdwn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/news/version_2.30.mdwn b/doc/news/version_2.30.mdwn index 9f054a244..4651d981d 100644 --- a/doc/news/version_2.30.mdwn +++ b/doc/news/version_2.30.mdwn @@ -5,6 +5,7 @@ News for ikiwiki 2.30: now a static page, not a CGI. Users can subscribe to its rss/atom feeds. Custom RecentChanges pages can be easily set up that display only changes to a subset of pages, or only changes by a subset of users. + 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. @@ -13,6 +14,7 @@ News for ikiwiki 2.30: various VCSes), and so ikiwiki's support for sending commit mails is REMOVED from this version. If you were subscribed to commit mails, you should be able to accomplish the same thing by subscribing to a RecentChanges feed. + The "svnrepo" and "notify" fields in setup files are no longer used, and silently ignored. You may want to remove them from your setup file. @@ -54,4 +56,4 @@ ikiwiki 2.30 released with [[toggle text="these changes"]] * Fix encoding bug when pagestate values contained spaces. * Add support for bzr, written by Jelmer Vernooij. Thanks also to bma for his independent work on bzr support. - * Copyright file updates."""]] \ No newline at end of file + * Copyright file updates."""]] -- cgit v1.2.3 From e61cf0b7dcb76cddb441850a0a7241d330541457 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 17:56:55 -0500 Subject: more formatting --- doc/news/version_2.30.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/news/version_2.30.mdwn b/doc/news/version_2.30.mdwn index 4651d981d..315a214d6 100644 --- a/doc/news/version_2.30.mdwn +++ b/doc/news/version_2.30.mdwn @@ -9,6 +9,7 @@ News for ikiwiki 2.30: 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. + With this excellent new RecentChanges support, the mail notification system is showing its age (and known to be variously buggy and underimplemented for various VCSes), and so ikiwiki's support for sending commit mails is REMOVED -- cgit v1.2.3 From 4569ae8ec0a6daf592ba6c49f39d7c46c4020a6e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 21:27:12 -0500 Subject: web commit by cva --- doc/sandbox.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index a5c44f109..e08c8ecf2 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -71,3 +71,7 @@ Bulleted list This sandbox is also a [[ikiwiki/blog]]! [[inline pages="sandbox/* and !*/Discussion" rootpage="sandbox" show="4" archive="yes"]] + +----- + +This is a test of the emergency broadcast system... -- cgit v1.2.3 From 09e7c15ed64239f3354bff890e751b4dd570c23a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 21:33:31 -0500 Subject: web commit by cva: test page creation --- doc/sandbox/testsubpage.mdwn | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 doc/sandbox/testsubpage.mdwn diff --git a/doc/sandbox/testsubpage.mdwn b/doc/sandbox/testsubpage.mdwn new file mode 100644 index 000000000..3db7aaaab --- /dev/null +++ b/doc/sandbox/testsubpage.mdwn @@ -0,0 +1,3 @@ +# Test subpage + +This is a test subpage. Isn't that special? -- cgit v1.2.3 From 23068244e796f2cc0108b18affaa4272d718400a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 21:51:01 -0500 Subject: web commit by http://pung96.myid.net/ --- doc/sandbox.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index e08c8ecf2..bb9b2fc53 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -12,6 +12,8 @@ Hupple hupple hupple hupple snork. There are Polish diacritical characters: ą, ć, ę, ł, ń, ó, ś, ż, ź. +Korean characters test : 한글테스트입니다. + # Header ## Subheader -- cgit v1.2.3 From 6a7c3d1209ab15094c390fe56da0e5d56220c555 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 23:40:57 -0500 Subject: * Revert preservation of input file modification times in output files, since this leads to too many problems with web caching, especially with inlined pages. Properly solving this would involve tracking every page that contributes to a page's content and using the youngest of them all, as well as special cases for things like the version plugin, and it's just too complex to do. --- IkiWiki/Render.pm | 2 -- debian/changelog | 11 +++++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 6dc70beb5..17b60ee94 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -203,7 +203,6 @@ sub render ($) { #{{{ my $output=htmlpage($page); writefile($output, $config{destdir}, genpage($page, $content)); - utime($pagemtime{$page}, $pagemtime{$page}, $config{destdir}."/".$output); } else { my $srcfd=readfile($srcfile, 1, 1); @@ -229,7 +228,6 @@ sub render ($) { #{{{ } } }); - utime($pagemtime{$file}, $pagemtime{$file}, $config{destdir}."/".$file); } } #}}} diff --git a/debian/changelog b/debian/changelog index 46fcf37dd..b7096aec4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +ikiwiki (2.31) UNRELEASED; urgency=low + + * Revert preservation of input file modification times in output files, + since this leads to too many problems with web caching, especially with + inlined pages. Properly solving this would involve tracking every page + that contributes to a page's content and using the youngest of them all, + as well as special cases for things like the version plugin, and it's just + too complex to do. + + -- Joey Hess Sat, 02 Feb 2008 23:36:31 -0500 + ikiwiki (2.30) unstable; urgency=low [ Joey Hess ] -- cgit v1.2.3 From 077901368358f2c0f6958f44a783c50074fe7405 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Feb 2008 23:56:13 -0500 Subject: * aggregate: Forking a child broke the one state that mattered: Forcing the aggregating page to be rebuilt. Fix this. --- IkiWiki/Plugin/aggregate.pm | 29 ++++++++++++++++++----------- debian/changelog | 2 ++ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm index 2a4d10411..736b0e0d5 100644 --- a/IkiWiki/Plugin/aggregate.pm +++ b/IkiWiki/Plugin/aggregate.pm @@ -37,16 +37,19 @@ sub checkconfig () { #{{{ debug("wiki is locked by another process, not aggregating"); exit 1; } - + + loadstate(); + my @feeds=needsaggregate(); + return unless @feeds; + # Fork a child process to handle the aggregation. - # The parent process will then handle building the result. - # This avoids messy code to clear state accumulated while - # aggregating. + # The parent process will then handle building the + # result. This avoids messy code to clear state + # accumulated while aggregating. defined(my $pid = fork) or error("Can't fork: $!"); if (! $pid) { - loadstate(); IkiWiki::loadindex(); - aggregate(); + aggregate(@feeds); expire(); savestate(); exit 0; @@ -55,6 +58,8 @@ sub checkconfig () { #{{{ if ($?) { error "aggregation failed with code $?"; } + $IkiWiki::forcerebuild{$_->{sourcepage}}=1 + foreach @feeds; IkiWiki::unlockwiki(); } @@ -254,7 +259,12 @@ sub expire () { #{{{ } } #}}} -sub aggregate () { #{{{ +sub needsaggregate () { #{{{ + return values %feeds if $config{rebuild}; + return grep { time - $_->{lastupdate} >= $_->{updateinterval} } values %feeds; +} #}}} + +sub aggregate (@) { #{{{ eval q{use XML::Feed}; error($@) if $@; eval q{use URI::Fetch}; @@ -262,15 +272,12 @@ sub aggregate () { #{{{ eval q{use HTML::Entities}; error($@) if $@; - foreach my $feed (values %feeds) { - next unless $config{rebuild} || - time - $feed->{lastupdate} >= $feed->{updateinterval}; + foreach my $feed (@_) { $feed->{lastupdate}=time; $feed->{newposts}=0; $feed->{message}=sprintf(gettext("processed ok at %s"), displaytime($feed->{lastupdate})); $feed->{error}=0; - $IkiWiki::forcerebuild{$feed->{sourcepage}}=1; debug(sprintf(gettext("checking feed %s ..."), $feed->{name})); diff --git a/debian/changelog b/debian/changelog index b7096aec4..df7b8b424 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,8 @@ ikiwiki (2.31) UNRELEASED; urgency=low that contributes to a page's content and using the youngest of them all, as well as special cases for things like the version plugin, and it's just too complex to do. + * aggregate: Forking a child broke the one state that mattered: Forcing + the aggregating page to be rebuilt. Fix this. -- Joey Hess Sat, 02 Feb 2008 23:36:31 -0500 -- cgit v1.2.3 From 1ef7d6de125a6e49af3f2493a29d11a63b7b2164 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 00:02:49 -0500 Subject: thoughts on mtime setting --- doc/todo/mtime.mdwn | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 doc/todo/mtime.mdwn diff --git a/doc/todo/mtime.mdwn b/doc/todo/mtime.mdwn new file mode 100644 index 000000000..92cbe84ff --- /dev/null +++ b/doc/todo/mtime.mdwn @@ -0,0 +1,14 @@ +It'd be nice if the mtime of the files ikiwiki renders matched the mtime of +the source files. + +However, this turns out to be more complex than just calling utime() a few +times. If a page inlines other, younger pages, then having an older mtime +means that an old version of it will be kept in web caches, forcing +annoying shift-reloads to see the changed content (for example). + +And it's not just inline. The template plugin means that a change to a +template can result in changes to how a page gets rendered. The version +plugin changes page content without any younger page being involved. And +editing one of the html templates and rebuilding the wiki can change every +page. All of these need to be reflected in the file mtime to avoid caching +problems. -- cgit v1.2.3 From 8f18699fe25934159a941accdb448eeeb43ed14c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 00:07:00 -0500 Subject: web commit by http://joey.kitenet.net/ --- doc/sandbox.mdwn | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index bb9b2fc53..f9ba45ca1 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -67,7 +67,8 @@ Bulleted list * [GNU](http://www.gnu.org/) * [Email](mailto:noone@invalid) * [![ikiwiki logo](http://ikiwiki.info/logo/ikiwiki.png)](http://ikiwiki.info) -* plain old html link + ----- This sandbox is also a [[ikiwiki/blog]]! -- cgit v1.2.3 From 293b5558cbcdcf762335cca85917df8df741367f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 00:07:24 -0500 Subject: web commit by http://joey.kitenet.net/ --- doc/sandbox/test2.mdwn | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/sandbox/test2.mdwn diff --git a/doc/sandbox/test2.mdwn b/doc/sandbox/test2.mdwn new file mode 100644 index 000000000..9daeafb98 --- /dev/null +++ b/doc/sandbox/test2.mdwn @@ -0,0 +1 @@ +test -- cgit v1.2.3 From 7a7794c72ef6dad934a97d394a104bbe06a70e88 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 00:08:30 -0500 Subject: test3 --- doc/sandbox.mdwn | 4 ---- 1 file changed, 4 deletions(-) diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index f9ba45ca1..69d7a217b 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -74,7 +74,3 @@ Bulleted list This sandbox is also a [[ikiwiki/blog]]! [[inline pages="sandbox/* and !*/Discussion" rootpage="sandbox" show="4" archive="yes"]] - ------ - -This is a test of the emergency broadcast system... -- cgit v1.2.3 From 77fc69f4eec7fc92f040a4ce235ce599d665fcec Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 00:10:28 -0500 Subject: web commit by http://joey.kitenet.net/ --- doc/sandbox/test2.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sandbox/test2.mdwn b/doc/sandbox/test2.mdwn index 9daeafb98..421e666a5 100644 --- a/doc/sandbox/test2.mdwn +++ b/doc/sandbox/test2.mdwn @@ -1 +1 @@ -test +testing... -- cgit v1.2.3 From 80915c830a03cf67c6770ef5e62d5178824b101e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 00:23:04 -0500 Subject: * cgi hooks are now run before ikiwiki state is loaded. * This allows locking the wiki before loading state, which avoids some tricky locking code when saving a web edit. --- IkiWiki/CGI.pm | 5 +---- debian/changelog | 3 +++ doc/plugins/write.mdwn | 7 +++++-- ikiwiki.in | 1 - 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index c8c1b63dd..3f588e427 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -539,10 +539,6 @@ sub cgi_editpage ($$) { #{{{ # may have been committed while the post-commit hook was # disabled. require IkiWiki::Render; - # Reload index, since the first time it's loaded is before - # the wiki is locked, and things may have changed in the - # meantime. - loadindex(); refresh(); saveindex(); @@ -616,6 +612,7 @@ sub cgi (;$$) { #{{{ # Need to lock the wiki before getting a session. lockwiki(); + loadindex(); if (! $session) { $session=cgi_getsession($q); diff --git a/debian/changelog b/debian/changelog index df7b8b424..ceaf3cf71 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,9 @@ ikiwiki (2.31) UNRELEASED; urgency=low too complex to do. * aggregate: Forking a child broke the one state that mattered: Forcing the aggregating page to be rebuilt. Fix this. + * cgi hooks are now run before ikiwiki state is loaded. + * This allows locking the wiki before loading state, which avoids some + tricky locking code when saving a web edit. -- Joey Hess Sat, 02 Feb 2008 23:36:31 -0500 diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 9c3a36b8f..216cfa51c 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -222,8 +222,11 @@ source files that were rendered. Use this to hook into ikiwiki's cgi script. Each registered cgi hook is called in turn, and passed a CGI object. The hook should examine the -parameters, and if it will handle this CGI request, output a page (including the http headers) and -terminate the program. +parameters, and if it will handle this CGI request, output a page +(including the http headers) and terminate the program. + +Note that cgi hooks are called as early as possible, before any ikiwiki +state is loaded, and with no session information. ### auth diff --git a/ikiwiki.in b/ikiwiki.in index 9d1f6b520..1ce7e1688 100755 --- a/ikiwiki.in +++ b/ikiwiki.in @@ -121,7 +121,6 @@ sub main () { #{{{ gen_wrapper(); } elsif ($config{cgi}) { - loadindex(); require IkiWiki::CGI; cgi(); } -- cgit v1.2.3 From 9f602728316096f235b3b28e7daacc7ece69bbd4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 00:26:00 -0500 Subject: * poll: This plugin turns out to have edited pages w/o doing any locking. Oops. Convert it from a cgi to a sessioncgi hook, which will work much better. --- IkiWiki/Plugin/poll.pm | 6 +++--- debian/changelog | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/IkiWiki/Plugin/poll.pm b/IkiWiki/Plugin/poll.pm index 63c93c62d..a5727fc8e 100644 --- a/IkiWiki/Plugin/poll.pm +++ b/IkiWiki/Plugin/poll.pm @@ -7,7 +7,7 @@ use IkiWiki 2.00; sub import { #{{{ hook(type => "preprocess", id => "poll", call => \&preprocess); - hook(type => "cgi", id => "poll", call => \&cgi); + hook(type => "sessioncgi", id => "poll", call => \&sessioncgi); } # }}} sub yesno ($) { #{{{ @@ -74,8 +74,9 @@ sub preprocess (@) { #{{{ return "
$ret
"; } # }}} -sub cgi ($) { #{{{ +sub sessioncgi ($) { #{{{ my $cgi=shift; + my $session=shift; if (defined $cgi->param('do') && $cgi->param('do') eq "poll") { my $choice=$cgi->param('choice'); if (! defined $choice) { @@ -92,7 +93,6 @@ sub cgi ($) { #{{{ # Did they vote before? If so, let them change their vote, # and check for dups. - my $session=IkiWiki::cgi_getsession(); my $choice_param="poll_choice_${page}_$num"; my $oldchoice=$session->param($choice_param); if (defined $oldchoice && $oldchoice eq $choice) { diff --git a/debian/changelog b/debian/changelog index ceaf3cf71..b4ff54d9f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,6 +11,9 @@ ikiwiki (2.31) UNRELEASED; urgency=low * cgi hooks are now run before ikiwiki state is loaded. * This allows locking the wiki before loading state, which avoids some tricky locking code when saving a web edit. + * poll: This plugin turns out to have edited pages w/o doing any locking. + Oops. Convert it from a cgi to a sessioncgi hook, which will work + much better. -- Joey Hess Sat, 02 Feb 2008 23:36:31 -0500 -- cgit v1.2.3 From 0dd4fb5d365f64f05c18c887efbfb554848ead91 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 00:29:17 -0500 Subject: web commit by http://joey.kitenet.net/ --- doc/sandbox/test2.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sandbox/test2.mdwn b/doc/sandbox/test2.mdwn index 421e666a5..5dd1d4caf 100644 --- a/doc/sandbox/test2.mdwn +++ b/doc/sandbox/test2.mdwn @@ -1 +1 @@ -testing... +testing.. -- cgit v1.2.3 From 1992d87153ac942e6b12bb828288cf8af80b7f8a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 00:30:06 -0500 Subject: web commit by http://joey.kitenet.net/: poll vote (No opinion) --- doc/news/server_speed.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/news/server_speed.mdwn b/doc/news/server_speed.mdwn index 9ff0e9824..fbc4fd36d 100644 --- a/doc/news/server_speed.mdwn +++ b/doc/news/server_speed.mdwn @@ -1,7 +1,7 @@ Quick poll: Do you feel that ikiwiki is fast enough on this server, or should I move it to my much beefier auxiliary server? -[[poll 40 "It's fast enough" 4 "It's too slow!" 4 "No opinion"]] +[[poll 40 "It's fast enough" 4 "It's too slow!" 5 "No opinion"]] If you have specifics on performance issues, you might mention them on the [[discussion]] page. -- cgit v1.2.3 From f77de93291700a4618a49988066c9b8be43f2c7e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 00:30:38 -0500 Subject: web commit by http://joey.kitenet.net/: poll vote (It's too slow!) --- doc/news/server_speed.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/news/server_speed.mdwn b/doc/news/server_speed.mdwn index fbc4fd36d..cbb9513a9 100644 --- a/doc/news/server_speed.mdwn +++ b/doc/news/server_speed.mdwn @@ -1,7 +1,7 @@ Quick poll: Do you feel that ikiwiki is fast enough on this server, or should I move it to my much beefier auxiliary server? -[[poll 40 "It's fast enough" 4 "It's too slow!" 5 "No opinion"]] +[[poll 40 "It's fast enough" 5 "It's too slow!" 4 "No opinion"]] If you have specifics on performance issues, you might mention them on the [[discussion]] page. -- cgit v1.2.3 From 72bbc415205fed81dfa028d3575873ea84003a8f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 00:32:38 -0500 Subject: rm --- doc/sandbox/test2.mdwn | 1 - 1 file changed, 1 deletion(-) delete mode 100644 doc/sandbox/test2.mdwn diff --git a/doc/sandbox/test2.mdwn b/doc/sandbox/test2.mdwn deleted file mode 100644 index 5dd1d4caf..000000000 --- a/doc/sandbox/test2.mdwn +++ /dev/null @@ -1 +0,0 @@ -testing.. -- cgit v1.2.3 From 1f6591f0a61415777a662d979c5c142c7f4ad7cd Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 03:04:19 -0500 Subject: * aggregate: Revert use of forking to not save state, that was not the right approach. --- IkiWiki/Plugin/aggregate.pm | 52 +++++++++++++++++---------------------------- debian/changelog | 4 ++-- 2 files changed, 22 insertions(+), 34 deletions(-) diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm index 736b0e0d5..0f50fab06 100644 --- a/IkiWiki/Plugin/aggregate.pm +++ b/IkiWiki/Plugin/aggregate.pm @@ -37,30 +37,14 @@ sub checkconfig () { #{{{ debug("wiki is locked by another process, not aggregating"); exit 1; } - + loadstate(); - my @feeds=needsaggregate(); - return unless @feeds; - - # Fork a child process to handle the aggregation. - # The parent process will then handle building the - # result. This avoids messy code to clear state - # accumulated while aggregating. - defined(my $pid = fork) or error("Can't fork: $!"); - if (! $pid) { - IkiWiki::loadindex(); - aggregate(@feeds); - expire(); - savestate(); - exit 0; - } - waitpid($pid,0); - if ($?) { - error "aggregation failed with code $?"; - } - $IkiWiki::forcerebuild{$_->{sourcepage}}=1 - foreach @feeds; - + IkiWiki::loadindex(); + aggregate(); + expire(); + savestate(); + clearstate(); + IkiWiki::unlockwiki(); } } #}}} @@ -148,7 +132,7 @@ sub loadstate () { #{{{ return if $state_loaded; $state_loaded=1; if (-e "$config{wikistatedir}/aggregate") { - open(IN, "$config{wikistatedir}/aggregate") || + open(IN, "<", "$config{wikistatedir}/aggregate") || die "$config{wikistatedir}/aggregate: $!"; while () { $_=IkiWiki::possibly_foolish_untaint($_); @@ -186,7 +170,7 @@ sub savestate () { #{{{ error($@) if $@; my $newfile="$config{wikistatedir}/aggregate.new"; my $cleanup = sub { unlink($newfile) }; - open (OUT, ">$newfile") || error("open $newfile: $!", $cleanup); + open (OUT, ">", $newfile) || error("open $newfile: $!", $cleanup); foreach my $data (values %feeds, values %guids) { if ($data->{remove}) { if ($data->{name}) { @@ -228,6 +212,12 @@ sub savestate () { #{{{ error("rename $newfile: $!", $cleanup); } #}}} +sub clearstate () { #{{{ + %feeds=(); + %guids=(); + $state_loaded=0; +} #}}} + sub expire () { #{{{ foreach my $feed (values %feeds) { next unless $feed->{expireage} || $feed->{expirecount}; @@ -259,12 +249,7 @@ sub expire () { #{{{ } } #}}} -sub needsaggregate () { #{{{ - return values %feeds if $config{rebuild}; - return grep { time - $_->{lastupdate} >= $_->{updateinterval} } values %feeds; -} #}}} - -sub aggregate (@) { #{{{ +sub aggregate () { #{{{ eval q{use XML::Feed}; error($@) if $@; eval q{use URI::Fetch}; @@ -272,12 +257,15 @@ sub aggregate (@) { #{{{ eval q{use HTML::Entities}; error($@) if $@; - foreach my $feed (@_) { + foreach my $feed (values %feeds) { + next unless $config{rebuild} || + time - $feed->{lastupdate} >= $feed->{updateinterval}; $feed->{lastupdate}=time; $feed->{newposts}=0; $feed->{message}=sprintf(gettext("processed ok at %s"), displaytime($feed->{lastupdate})); $feed->{error}=0; + $IkiWiki::forcerebuild{$feed->{sourcepage}}=1; debug(sprintf(gettext("checking feed %s ..."), $feed->{name})); diff --git a/debian/changelog b/debian/changelog index b4ff54d9f..590c1a84e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,14 +6,14 @@ ikiwiki (2.31) UNRELEASED; urgency=low that contributes to a page's content and using the youngest of them all, as well as special cases for things like the version plugin, and it's just too complex to do. - * aggregate: Forking a child broke the one state that mattered: Forcing - the aggregating page to be rebuilt. Fix this. * cgi hooks are now run before ikiwiki state is loaded. * This allows locking the wiki before loading state, which avoids some tricky locking code when saving a web edit. * poll: This plugin turns out to have edited pages w/o doing any locking. Oops. Convert it from a cgi to a sessioncgi hook, which will work much better. + * aggregate: Revert use of forking to not save state, that was not the right + approach. -- Joey Hess Sat, 02 Feb 2008 23:36:31 -0500 -- cgit v1.2.3 From 09187f83bc8e022df24de534861e4f6a6026b3f9 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 03:25:47 -0500 Subject: clear %pagestate in loadindex This is to handle the case where loadindex is called multiple times in one run, as when aggregating. --- IkiWiki.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 050d4e5b2..8172552cb 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -884,7 +884,7 @@ sub loadindex () { #{{{ %oldrenderedfiles=%pagectime=(); if (! $config{rebuild}) { %pagesources=%pagemtime=%oldlinks=%links=%depends= - %destsources=%renderedfiles=%pagecase=(); + %destsources=%renderedfiles=%pagecase=%pagestate=(); } open (my $in, "<", "$config{wikistatedir}/index") || return; while (<$in>) { -- cgit v1.2.3 From 97dfdf8c64673912c09b079da4c612506e036677 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 04:28:37 -0500 Subject: web commit by http://edward.myopenid.com/: fix broken link to http://git.or.cz/gitwiki/GitFaq --- doc/rcs/git.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/rcs/git.mdwn b/doc/rcs/git.mdwn index 38a418a5b..f97131742 100644 --- a/doc/rcs/git.mdwn +++ b/doc/rcs/git.mdwn @@ -22,7 +22,7 @@ but it works the best for typical ikiwiki use. and git. It is **paramount** that you **never** push to the non-bare repository -([this FAQ entry explains why](http://git.or.cz/gitwiki/GitFaq#head-b6a3d85f677763313159eb39f7dbf4579d4ee28b)). +([this FAQ entry explains why](http://git.or.cz/gitwiki/GitFaq#head-b96f48bc9c925074be9f95c0fce69bcece5f6e73)). Instead, if you want to work on the wiki from a remote machine, clone the bare repository, using either the `git` transport (if available), or `ssh`. -- cgit v1.2.3 From 58ef55c79893190021a441b2ba618178fce13bc5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 12:16:06 -0500 Subject: web commit by tschwinge: Thanks!, and a bug report. --- doc/plugins/recentchanges/discussion.mdwn | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 doc/plugins/recentchanges/discussion.mdwn diff --git a/doc/plugins/recentchanges/discussion.mdwn b/doc/plugins/recentchanges/discussion.mdwn new file mode 100644 index 000000000..b563a8d9d --- /dev/null +++ b/doc/plugins/recentchanges/discussion.mdwn @@ -0,0 +1,8 @@ +Thanks for that one, again, it's great! + +One minor thing I noticed, seen on : +The links to user pages of e.g. *MichaelBanck* or *GianlucaGuida* don't work, as they're +being linked to , whereas it should be +. + +--[[tschwinge]] -- cgit v1.2.3 From 6c1cb3f985a0f1d8568ff386cc40e35405bad4f7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 12:18:26 -0500 Subject: web commit by tschwinge: Another minor bug. --- doc/plugins/recentchanges/discussion.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/plugins/recentchanges/discussion.mdwn b/doc/plugins/recentchanges/discussion.mdwn index b563a8d9d..69145435e 100644 --- a/doc/plugins/recentchanges/discussion.mdwn +++ b/doc/plugins/recentchanges/discussion.mdwn @@ -5,4 +5,8 @@ The links to user pages of e.g. *MichaelBanck* or *GianlucaGuida* don't work, as being linked to , whereas it should be . +Another one. If you change the *recentchangespage* configuration option, (it seems to me) +that the pages from the old hierarchy will not be removed from the disk. But then, changing +this should be a rather uncommon thing. + --[[tschwinge]] -- cgit v1.2.3 From 6afbd9939ac8cd171e7cf8376f0d0c0a4bf3d516 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 13:56:10 -0500 Subject: late night thoughts on fixing aggregation locking (still seem to make sense this morning) --- doc/todo/aggregate_locking.mdwn | 66 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 doc/todo/aggregate_locking.mdwn diff --git a/doc/todo/aggregate_locking.mdwn b/doc/todo/aggregate_locking.mdwn new file mode 100644 index 000000000..91df662a7 --- /dev/null +++ b/doc/todo/aggregate_locking.mdwn @@ -0,0 +1,66 @@ +The [[plugin/aggregate]] plugin's locking is a suboptimal. + +There should be no need to lock the wiki while aggregating -- it's annoying +that long aggregate runs can block edits from happening. However, not +locking would present problems. One is, if an aggregate run is happening, +and the feed is removed, it could continue adding pages for that feed. +Those pages would then become orphaned, and stick around, since the feed +that had created them is gone, and thus there's no indication that they +should be removed. + +To fix that, garbage collect any pages that were created by +aggregation once their feed is gone. + +Are there other things that could happen while it's aggregating that it +should check for? + +Well, things like the feed url etc could change, and it +would have to merge in such changes before saving the aggregation state. +New feeds could also be added, feeds could be moved from one source page to +another. + +Merging that feed info seems doable, just re-load the aggregation state +from disk, and set the `message`, `lastupdate`, `numposts`, and `error` +fields to their new values if the feed still exists. + +---- + +Another part of the mess is that it needs to avoid stacking multiple +aggregate processes up if aggregation is very slow. Currently this is done +by taking the lock in nonblocking mode, and not aggregating if it's locked. +This has various problems, for example a page edit at the right time can +prevent aggregation from happening. + +Adding another lock just for aggregation could solve this. Check that lock +(in checkconfig) and exit if another aggregator holds it. + +---- + +The other part of the mess is that it currently does aggregation in +checkconfig, locking the wiki for that, and loading state, and then +dropping the lock, unloading state, and letting the render happen. Which +reloads state. That state reloading is tricky to do just right. + +A simple fix: Move the aggregation to the new 'render' hook. Then state +would be loaded, and there would be no reason to worry about aggregating. + +Or aggregation could be kept in checkconfig, like so: + +* lock wiki +* load aggregation state +* unlock wiki +* get list of feeds needing aggregation +* exit if none +* attempt to take aggregation lock, exit if another aggregation is happening +* fork a child process to do the aggregation + * lock wiki + * load wiki state (needed for aggregation to run) + * unlock wiki + * aggregate + * lock wiki + * reload aggregation state + * merge in aggregation state changes + * unlock wiki +* drop aggregation lock +* force rebuild of sourcepages of feeds that were aggregated +* exit checkconfig and continue with usual refresh process -- cgit v1.2.3 From 42e5b8dfdc7f4268c3cc8a1eafd994790a79d821 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 14:22:25 -0500 Subject: prototype fix --- IkiWiki/Plugin/poll.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/poll.pm b/IkiWiki/Plugin/poll.pm index a5727fc8e..41ebd74a0 100644 --- a/IkiWiki/Plugin/poll.pm +++ b/IkiWiki/Plugin/poll.pm @@ -74,7 +74,7 @@ sub preprocess (@) { #{{{ return "
$ret
"; } # }}} -sub sessioncgi ($) { #{{{ +sub sessioncgi ($$) { #{{{ my $cgi=shift; my $session=shift; if (defined $cgi->param('do') && $cgi->param('do') eq "poll") { -- cgit v1.2.3 From 340fe9707c61064774658e6ec2aec3b07b33c120 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 14:48:20 -0500 Subject: * recentchanges: Improve handling of links on the very static changes pages by thunking to the CGI, which can redirect to the page, or allow it to be created if it doesn't exist. --- IkiWiki/Plugin/recentchanges.pm | 58 ++++++++++++++++++++++++++----- debian/changelog | 3 ++ doc/plugins/recentchanges/discussion.mdwn | 2 ++ 3 files changed, 54 insertions(+), 9 deletions(-) diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 337fb7ac5..e23ee491f 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -8,8 +8,9 @@ use IkiWiki 2.00; sub import { #{{{ hook(type => "checkconfig", id => "recentchanges", call => \&checkconfig); hook(type => "refresh", id => "recentchanges", call => \&refresh); - hook(type => "htmlize", id => "_change", call => \&htmlize); hook(type => "pagetemplate", id => "recentchanges", call => \&pagetemplate); + hook(type => "htmlize", id => "_change", call => \&htmlize); + hook(type => "cgi", id => "recentchanges", call => \&cgi); } #}}} sub checkconfig () { #{{{ @@ -51,6 +52,39 @@ sub htmlize (@) { #{{{ return $params{content}; } #}}} +sub cgi ($) { #{{{ + my $cgi=shift; + if (defined $cgi->param('do') && $cgi->param('do') eq "recentchanges_link") { + # This is a link from a change page to some + # other page. Since the change pages are only generated + # once, statically, links on them won't be updated if the + # page they link to is deleted, or newly created, or + # changes for whatever reason. So this CGI handles that + # dynamic linking stuff. + my $page=$cgi->param("page"); + if (!defined $page) { + error("missing page parameter"); + } + + IkiWiki::loadindex(); + + my $link=bestlink("", $page); + if (! length $link) { + print "Content-type: text/html\n\n"; + print IkiWiki::misctemplate(gettext(gettext("missing page")), + "

". + sprintf(gettext("The page %s does not exist."), + htmllink("", "", $page)). + "

"); + } + else { + IkiWiki::redirect($cgi, $config{url}."/".htmlpage($link)); + } + + exit; + } +} + sub store ($$$) { #{{{ my $change=shift; @@ -65,10 +99,15 @@ sub store ($$$) { #{{{ delete @{$change->{pages}}[10 .. @{$change->{pages}}] if $is_excess; $change->{pages} = [ map { - if (length $config{url}) { - $_->{link} = "{page},"")."\">". - IkiWiki::pagetitle($_->{page}).""; + if (length $config{cgiurl}) { + $_->{link} = " "recentchanges_link", + page => $_->{page} + ). + "\">". + IkiWiki::pagetitle($_->{page}). + "" } else { $_->{link} = IkiWiki::pagetitle($_->{page}); @@ -87,10 +126,11 @@ sub store ($$$) { #{{{ $change->{authorurl}=$change->{user}; $change->{user}=$oiduser; } - elsif (length $config{url}) { - $change->{authorurl}="$config{url}/". - (length $config{userdir} ? "$config{userdir}/" : ""). - $change->{user}; + elsif (length $config{cgiurl}) { + $change->{authorurl} = IkiWiki::cgiurl( + do => "recentchanges_link", + page => (length $config{userdir} ? "$config{userdir}/" : "").$change->{author}, + ); } # escape wikilinks and preprocessor stuff in commit messages diff --git a/debian/changelog b/debian/changelog index 590c1a84e..e736e7631 100644 --- a/debian/changelog +++ b/debian/changelog @@ -14,6 +14,9 @@ ikiwiki (2.31) UNRELEASED; urgency=low much better. * aggregate: Revert use of forking to not save state, that was not the right approach. + * recentchanges: Improve handling of links on the very static changes pages + by thunking to the CGI, which can redirect to the page, or allow it to be + created if it doesn't exist. -- Joey Hess Sat, 02 Feb 2008 23:36:31 -0500 diff --git a/doc/plugins/recentchanges/discussion.mdwn b/doc/plugins/recentchanges/discussion.mdwn index 69145435e..922493fe8 100644 --- a/doc/plugins/recentchanges/discussion.mdwn +++ b/doc/plugins/recentchanges/discussion.mdwn @@ -5,6 +5,8 @@ The links to user pages of e.g. *MichaelBanck* or *GianlucaGuida* don't work, as being linked to , whereas it should be . +> I've fixed this.. --[[Joey]] + Another one. If you change the *recentchangespage* configuration option, (it seems to me) that the pages from the old hierarchy will not be removed from the disk. But then, changing this should be a rather uncommon thing. -- cgit v1.2.3 From e57749b702137b925064b60120ea22a98965c7d5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 14:51:03 -0500 Subject: * recentchanges: Exipre all *._change pages, even if the directory they're in has changed. --- IkiWiki/Plugin/recentchanges.pm | 2 +- debian/changelog | 2 ++ doc/plugins/recentchanges/discussion.mdwn | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index e23ee491f..22f934f2e 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -28,7 +28,7 @@ sub refresh ($) { #{{{ # delete old and excess changes foreach my $page (keys %pagesources) { - if ($page=~/^\Q$config{recentchangespage}\E\/change_/ && ! $seen{$page}) { + if ($page =~ /\._change$/ && ! $seen{$page}) { unlink($config{srcdir}.'/'.$pagesources{$page}); } } diff --git a/debian/changelog b/debian/changelog index e736e7631..99ee5cdc2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -17,6 +17,8 @@ ikiwiki (2.31) UNRELEASED; urgency=low * recentchanges: Improve handling of links on the very static changes pages by thunking to the CGI, which can redirect to the page, or allow it to be created if it doesn't exist. + * recentchanges: Exipre all *._change pages, even if the directory + they're in has changed. -- Joey Hess Sat, 02 Feb 2008 23:36:31 -0500 diff --git a/doc/plugins/recentchanges/discussion.mdwn b/doc/plugins/recentchanges/discussion.mdwn index 922493fe8..a16cb5217 100644 --- a/doc/plugins/recentchanges/discussion.mdwn +++ b/doc/plugins/recentchanges/discussion.mdwn @@ -12,3 +12,6 @@ that the pages from the old hierarchy will not be removed from the disk. But th this should be a rather uncommon thing. --[[tschwinge]] + +> And fixed this, by making it look at all *._change pages, not just +> those in a specific directory, when deciding which to expire. --[[Joey]] -- cgit v1.2.3 From ac58aa804efba42c81a6489210af217a2f437f18 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 15:02:34 -0500 Subject: update po files --- po/bg.po | 84 ++++++++++++++++++++++++++++++++-------------------------- po/cs.po | 84 ++++++++++++++++++++++++++++++++-------------------------- po/da.po | 84 ++++++++++++++++++++++++++++++++-------------------------- po/es.po | 84 ++++++++++++++++++++++++++++++++-------------------------- po/fr.po | 84 ++++++++++++++++++++++++++++++++-------------------------- po/gu.po | 84 ++++++++++++++++++++++++++++++++-------------------------- po/ikiwiki.pot | 69 ++++++++++++++++++++++++++--------------------- po/pl.po | 84 ++++++++++++++++++++++++++++++++-------------------------- po/sv.po | 84 ++++++++++++++++++++++++++++++++-------------------------- po/vi.po | 84 ++++++++++++++++++++++++++++++++-------------------------- 10 files changed, 462 insertions(+), 363 deletions(-) diff --git a/po/bg.po b/po/bg.po index 32132475e..75dfb7823 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: 2008-01-29 04:45-0500\n" +"POT-Creation-Date: 2008-02-03 14:52-0500\n" "PO-Revision-Date: 2007-01-12 01:19+0200\n" "Last-Translator: Damyan Ivanov \n" "Language-Team: Bulgarian \n" @@ -48,8 +48,8 @@ msgstr "" #: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 #: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 -#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 -#: ../IkiWiki/Render.pm:178 +#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:95 +#: ../IkiWiki/Render.pm:175 msgid "discussion" msgstr "дискусия" @@ -59,77 +59,77 @@ msgid "creating %s" msgstr "създаване на %s" #: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 -#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:554 #, perl-format msgid "editing %s" msgstr "промяна на %s" -#: ../IkiWiki/CGI.pm:646 +#: ../IkiWiki/CGI.pm:643 msgid "You are banned." msgstr "Достъпът ви е забранен." -#: ../IkiWiki/Plugin/aggregate.pm:82 +#: ../IkiWiki/Plugin/aggregate.pm:72 #, fuzzy, perl-format msgid "missing %s parameter" msgstr "липсващ параметър „id” на шаблона" -#: ../IkiWiki/Plugin/aggregate.pm:110 +#: ../IkiWiki/Plugin/aggregate.pm:100 msgid "new feed" msgstr "нов източник" -#: ../IkiWiki/Plugin/aggregate.pm:124 +#: ../IkiWiki/Plugin/aggregate.pm:114 msgid "posts" msgstr "съобщения" -#: ../IkiWiki/Plugin/aggregate.pm:126 +#: ../IkiWiki/Plugin/aggregate.pm:116 msgid "new" msgstr "ново" -#: ../IkiWiki/Plugin/aggregate.pm:236 +#: ../IkiWiki/Plugin/aggregate.pm:232 #, perl-format msgid "expiring %s (%s days old)" msgstr "премахване на „%s” (на %s дни)" -#: ../IkiWiki/Plugin/aggregate.pm:243 +#: ../IkiWiki/Plugin/aggregate.pm:239 #, perl-format msgid "expiring %s" msgstr "премахване на „%s”" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:265 #, perl-format msgid "processed ok at %s" msgstr "е обработен нормално от %s" -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:270 #, perl-format msgid "checking feed %s ..." msgstr "проверка на източника „%s”" -#: ../IkiWiki/Plugin/aggregate.pm:279 +#: ../IkiWiki/Plugin/aggregate.pm:275 #, perl-format msgid "could not find feed at %s" msgstr "не е намерен източник на адрес „%s”" -#: ../IkiWiki/Plugin/aggregate.pm:294 +#: ../IkiWiki/Plugin/aggregate.pm:290 #, fuzzy msgid "feed not found" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/aggregate.pm:305 +#: ../IkiWiki/Plugin/aggregate.pm:301 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:311 +#: ../IkiWiki/Plugin/aggregate.pm:307 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:317 +#: ../IkiWiki/Plugin/aggregate.pm:313 msgid "feed crashed XML::Feed!" msgstr "данните от източника предизвикаха грешка в модула XML::Feed!" -#: ../IkiWiki/Plugin/aggregate.pm:391 +#: ../IkiWiki/Plugin/aggregate.pm:387 #, perl-format msgid "creating new page %s" msgstr "създаване на нова страницa „%s”" @@ -148,22 +148,22 @@ msgstr "Няма „счупени” връзки!" msgid "%s parameter is required" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:40 +#: ../IkiWiki/Plugin/edittemplate.pm:41 #, fuzzy msgid "template not specified" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/edittemplate.pm:43 +#: ../IkiWiki/Plugin/edittemplate.pm:44 #, fuzzy msgid "match not specified" msgstr "не е указан файл на обвивката" -#: ../IkiWiki/Plugin/edittemplate.pm:48 +#: ../IkiWiki/Plugin/edittemplate.pm:49 #, perl-format msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:110 +#: ../IkiWiki/Plugin/edittemplate.pm:111 #, fuzzy msgid "failed to process" msgstr "грешка при обработване на шаблона" @@ -227,7 +227,7 @@ msgstr "" msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:99 msgid "Discussion" msgstr "Дискусия" @@ -253,17 +253,17 @@ msgstr "" "грешка при зареждането на perl-модула „Markdown.pm” (%s) или „/usr/bin/" "markdown” (%s)" -#: ../IkiWiki/Plugin/meta.pm:124 +#: ../IkiWiki/Plugin/meta.pm:119 #, fuzzy msgid "stylesheet not found" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/meta.pm:148 +#: ../IkiWiki/Plugin/meta.pm:143 #, fuzzy msgid "redir page not found" msgstr "шаблонът „%s” не е намерен" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:156 #, fuzzy msgid "redir cycle is not allowed" msgstr "шаблонът „%s” не е намерен" @@ -400,6 +400,16 @@ msgstr "" msgid "at noon on %A" msgstr "" +#: ../IkiWiki/Plugin/recentchanges.pm:74 +#, fuzzy +msgid "missing page" +msgstr "липсващ параметър „id” на шаблона" + +#: ../IkiWiki/Plugin/recentchanges.pm:76 +#, perl-format +msgid "The page %s does not exist." +msgstr "" + #: ../IkiWiki/Plugin/search.pm:34 #, perl-format msgid "Must specify %s when using the search plugin" @@ -529,47 +539,47 @@ msgstr "" msgid "getctime not implemented" msgstr "функцията „getctime” не е реализирана" -#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 +#: ../IkiWiki/Render.pm:273 ../IkiWiki/Render.pm:294 #, perl-format msgid "skipping bad filename %s" msgstr "пропускане на невалидното име на файл „%s”" -#: ../IkiWiki/Render.pm:339 +#: ../IkiWiki/Render.pm:343 #, perl-format msgid "removing old page %s" msgstr "премахване на старата страница „%s”" -#: ../IkiWiki/Render.pm:372 +#: ../IkiWiki/Render.pm:384 #, perl-format msgid "scanning %s" msgstr "сканиране на „%s”" -#: ../IkiWiki/Render.pm:377 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s" msgstr "обновяване на страницата „%s”" -#: ../IkiWiki/Render.pm:389 +#: ../IkiWiki/Render.pm:410 #, perl-format msgid "rendering %s, which links to %s" msgstr "обновяване на страницата „%s”, съдържаща препратки към „%s”" -#: ../IkiWiki/Render.pm:406 +#: ../IkiWiki/Render.pm:431 #, perl-format msgid "rendering %s, which depends on %s" msgstr "обновяване на страницата „%s”, зависеща от „%s”" -#: ../IkiWiki/Render.pm:444 +#: ../IkiWiki/Render.pm:470 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "обновяване на „%s” и осъвременяване на обратните връзки" -#: ../IkiWiki/Render.pm:456 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "премахване на „%s” понеже не се генерира от „%s”" -#: ../IkiWiki/Render.pm:482 +#: ../IkiWiki/Render.pm:508 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki: неуспех при обновяване на страницата „%s”" @@ -651,7 +661,7 @@ msgstr "Грешка" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:767 +#: ../IkiWiki.pm:750 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "открита е циклична завидимост при %s на „%s” на дълбочина %i" diff --git a/po/cs.po b/po/cs.po index 84ece7103..d93a3edba 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: 2008-01-29 04:45-0500\n" +"POT-Creation-Date: 2008-02-03 14:52-0500\n" "PO-Revision-Date: 2007-05-09 21:21+0200\n" "Last-Translator: Miroslav Kure \n" "Language-Team: Czech \n" @@ -46,8 +46,8 @@ msgstr "%s není editovatelná stránka" #: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 #: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 -#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 -#: ../IkiWiki/Render.pm:178 +#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:95 +#: ../IkiWiki/Render.pm:175 msgid "discussion" msgstr "diskuse" @@ -57,76 +57,76 @@ msgid "creating %s" msgstr "vytvářím %s" #: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 -#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:554 #, perl-format msgid "editing %s" msgstr "upravuji %s" -#: ../IkiWiki/CGI.pm:646 +#: ../IkiWiki/CGI.pm:643 msgid "You are banned." msgstr "Jste vyhoštěni." -#: ../IkiWiki/Plugin/aggregate.pm:82 +#: ../IkiWiki/Plugin/aggregate.pm:72 #, perl-format msgid "missing %s parameter" msgstr "chybí parametr %s" -#: ../IkiWiki/Plugin/aggregate.pm:110 +#: ../IkiWiki/Plugin/aggregate.pm:100 msgid "new feed" msgstr "nový zdroj" -#: ../IkiWiki/Plugin/aggregate.pm:124 +#: ../IkiWiki/Plugin/aggregate.pm:114 msgid "posts" msgstr "příspěvky" -#: ../IkiWiki/Plugin/aggregate.pm:126 +#: ../IkiWiki/Plugin/aggregate.pm:116 msgid "new" msgstr "nový" -#: ../IkiWiki/Plugin/aggregate.pm:236 +#: ../IkiWiki/Plugin/aggregate.pm:232 #, perl-format msgid "expiring %s (%s days old)" msgstr "expiruji %s (stará %s dnů)" -#: ../IkiWiki/Plugin/aggregate.pm:243 +#: ../IkiWiki/Plugin/aggregate.pm:239 #, perl-format msgid "expiring %s" msgstr "expiruji %s" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:265 #, perl-format msgid "processed ok at %s" msgstr "zpracováno ok %s" -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:270 #, perl-format msgid "checking feed %s ..." msgstr "kontroluji zdroj %s ..." -#: ../IkiWiki/Plugin/aggregate.pm:279 +#: ../IkiWiki/Plugin/aggregate.pm:275 #, perl-format msgid "could not find feed at %s" msgstr "nemohu najít zdroj na %s" -#: ../IkiWiki/Plugin/aggregate.pm:294 +#: ../IkiWiki/Plugin/aggregate.pm:290 msgid "feed not found" msgstr "zdroj nebyl nalezen" -#: ../IkiWiki/Plugin/aggregate.pm:305 +#: ../IkiWiki/Plugin/aggregate.pm:301 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "(neplatné UTF-8 bylo ze zdroje odstraněno)" -#: ../IkiWiki/Plugin/aggregate.pm:311 +#: ../IkiWiki/Plugin/aggregate.pm:307 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:317 +#: ../IkiWiki/Plugin/aggregate.pm:313 msgid "feed crashed XML::Feed!" msgstr "zdroj shodil XML::Feed!" -#: ../IkiWiki/Plugin/aggregate.pm:391 +#: ../IkiWiki/Plugin/aggregate.pm:387 #, perl-format msgid "creating new page %s" msgstr "vytvářím novou stránku %s" @@ -145,22 +145,22 @@ msgstr "Žádné porušené odkazy!" msgid "%s parameter is required" msgstr "parametr %s je vyžadován" -#: ../IkiWiki/Plugin/edittemplate.pm:40 +#: ../IkiWiki/Plugin/edittemplate.pm:41 #, fuzzy msgid "template not specified" msgstr "šablona %s nebyla nalezena" -#: ../IkiWiki/Plugin/edittemplate.pm:43 +#: ../IkiWiki/Plugin/edittemplate.pm:44 #, fuzzy msgid "match not specified" msgstr "jméno souboru s obalem nebylo zadáno" -#: ../IkiWiki/Plugin/edittemplate.pm:48 +#: ../IkiWiki/Plugin/edittemplate.pm:49 #, perl-format msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:110 +#: ../IkiWiki/Plugin/edittemplate.pm:111 #, fuzzy msgid "failed to process" msgstr "nepodařilo se zpracovat:" @@ -220,7 +220,7 @@ msgstr "Přidat nový příspěvek nazvaný:" msgid "nonexistant template %s" msgstr "neexistující šablona %s" -#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:99 msgid "Discussion" msgstr "Diskuse" @@ -243,16 +243,16 @@ 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:124 +#: ../IkiWiki/Plugin/meta.pm:119 msgid "stylesheet not found" msgstr "styl nebyl nalezen" -#: ../IkiWiki/Plugin/meta.pm:148 +#: ../IkiWiki/Plugin/meta.pm:143 #, fuzzy msgid "redir page not found" msgstr "zdroj nebyl nalezen" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:156 #, fuzzy msgid "redir cycle is not allowed" msgstr "zdroj nebyl nalezen" @@ -389,6 +389,16 @@ msgstr "o půlnoci" msgid "at noon on %A" msgstr "%A o poledni" +#: ../IkiWiki/Plugin/recentchanges.pm:74 +#, fuzzy +msgid "missing page" +msgstr "chybí hodnoty" + +#: ../IkiWiki/Plugin/recentchanges.pm:76 +#, perl-format +msgid "The page %s does not exist." +msgstr "" + #: ../IkiWiki/Plugin/search.pm:34 #, perl-format msgid "Must specify %s when using the search plugin" @@ -510,47 +520,47 @@ msgstr "" msgid "getctime not implemented" msgstr "getctime není implementováno" -#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 +#: ../IkiWiki/Render.pm:273 ../IkiWiki/Render.pm:294 #, perl-format msgid "skipping bad filename %s" msgstr "přeskakuji chybné jméno souboru %s" -#: ../IkiWiki/Render.pm:339 +#: ../IkiWiki/Render.pm:343 #, perl-format msgid "removing old page %s" msgstr "odstraňuji starou stránku %s" -#: ../IkiWiki/Render.pm:372 +#: ../IkiWiki/Render.pm:384 #, perl-format msgid "scanning %s" msgstr "prohledávám %s" -#: ../IkiWiki/Render.pm:377 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s" msgstr "zpracovávám %s" -#: ../IkiWiki/Render.pm:389 +#: ../IkiWiki/Render.pm:410 #, perl-format msgid "rendering %s, which links to %s" msgstr "zpracovávám %s, která odkazuje na %s" -#: ../IkiWiki/Render.pm:406 +#: ../IkiWiki/Render.pm:431 #, perl-format msgid "rendering %s, which depends on %s" msgstr "zpracovávám %s, která závisí na %s" -#: ../IkiWiki/Render.pm:444 +#: ../IkiWiki/Render.pm:470 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "zpracovávám %s, aby se aktualizovaly zpětné odkazy" -#: ../IkiWiki/Render.pm:456 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "odstraňuji %s, již není zpracovávána %s" -#: ../IkiWiki/Render.pm:482 +#: ../IkiWiki/Render.pm:508 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki: nelze zpracovat %s" @@ -630,7 +640,7 @@ msgstr "Chyba" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:767 +#: ../IkiWiki.pm:750 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "Byla rozpoznána smyčka direktivy %s na %s v hloubce %i" diff --git a/po/da.po b/po/da.po index 8157b963d..33a754022 100644 --- a/po/da.po +++ b/po/da.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-01-29 04:45-0500\n" +"POT-Creation-Date: 2008-02-03 14:52-0500\n" "PO-Revision-Date: 2007-10-16 23:07+0100\n" "Last-Translator: Jonas Smedegaard \n" "Language-Team: Danish \n" @@ -49,8 +49,8 @@ msgstr "%s er ikke en redigérbar side" #: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 #: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 -#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 -#: ../IkiWiki/Render.pm:178 +#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:95 +#: ../IkiWiki/Render.pm:175 msgid "discussion" msgstr "diskussion" @@ -60,76 +60,76 @@ msgid "creating %s" msgstr "opretter %s" #: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 -#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:554 #, perl-format msgid "editing %s" msgstr "redigerer %s" -#: ../IkiWiki/CGI.pm:646 +#: ../IkiWiki/CGI.pm:643 msgid "You are banned." msgstr "Du er banlyst." -#: ../IkiWiki/Plugin/aggregate.pm:82 +#: ../IkiWiki/Plugin/aggregate.pm:72 #, perl-format msgid "missing %s parameter" msgstr "mangler parametren %s" -#: ../IkiWiki/Plugin/aggregate.pm:110 +#: ../IkiWiki/Plugin/aggregate.pm:100 msgid "new feed" msgstr "ny fødning" -#: ../IkiWiki/Plugin/aggregate.pm:124 +#: ../IkiWiki/Plugin/aggregate.pm:114 msgid "posts" msgstr "indlæg" -#: ../IkiWiki/Plugin/aggregate.pm:126 +#: ../IkiWiki/Plugin/aggregate.pm:116 msgid "new" msgstr "nyt" -#: ../IkiWiki/Plugin/aggregate.pm:236 +#: ../IkiWiki/Plugin/aggregate.pm:232 #, perl-format msgid "expiring %s (%s days old)" msgstr "udløber %s (%s dage gammel)" -#: ../IkiWiki/Plugin/aggregate.pm:243 +#: ../IkiWiki/Plugin/aggregate.pm:239 #, perl-format msgid "expiring %s" msgstr "udløber %s" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:265 #, perl-format msgid "processed ok at %s" msgstr "korrekt dannet ved %s" -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:270 #, perl-format msgid "checking feed %s ..." msgstr "undersøger fødning %s ..." -#: ../IkiWiki/Plugin/aggregate.pm:279 +#: ../IkiWiki/Plugin/aggregate.pm:275 #, perl-format msgid "could not find feed at %s" msgstr "kunne ikke finde fødning ved %s" -#: ../IkiWiki/Plugin/aggregate.pm:294 +#: ../IkiWiki/Plugin/aggregate.pm:290 msgid "feed not found" msgstr "fødning ikke fundet" -#: ../IkiWiki/Plugin/aggregate.pm:305 +#: ../IkiWiki/Plugin/aggregate.pm:301 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "(defekt UTF-8 fjernet fra fødning)" -#: ../IkiWiki/Plugin/aggregate.pm:311 +#: ../IkiWiki/Plugin/aggregate.pm:307 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:317 +#: ../IkiWiki/Plugin/aggregate.pm:313 msgid "feed crashed XML::Feed!" msgstr "fødning fik XML::Feed til at bryde sammen!" -#: ../IkiWiki/Plugin/aggregate.pm:391 +#: ../IkiWiki/Plugin/aggregate.pm:387 #, perl-format msgid "creating new page %s" msgstr "opretter ny side %s" @@ -148,22 +148,22 @@ msgstr "Ingen henvisninger der ikker fungerer!" msgid "%s parameter is required" msgstr "parametren %s er krævet" -#: ../IkiWiki/Plugin/edittemplate.pm:40 +#: ../IkiWiki/Plugin/edittemplate.pm:41 #, fuzzy msgid "template not specified" msgstr "skabelon %s ikke fundet" -#: ../IkiWiki/Plugin/edittemplate.pm:43 +#: ../IkiWiki/Plugin/edittemplate.pm:44 #, fuzzy msgid "match not specified" msgstr "wrapper-navn ikke angivet" -#: ../IkiWiki/Plugin/edittemplate.pm:48 +#: ../IkiWiki/Plugin/edittemplate.pm:49 #, perl-format msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:110 +#: ../IkiWiki/Plugin/edittemplate.pm:111 #, fuzzy msgid "failed to process" msgstr "dannelsen mislykkedes:" @@ -223,7 +223,7 @@ msgstr "Tilføj nyt indlæg med følgende titel:" msgid "nonexistant template %s" msgstr "ikke-eksisterende skabelon: %s" -#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:99 msgid "Discussion" msgstr "Diskussion" @@ -247,16 +247,16 @@ msgstr "" "Indlæsning af perl-modulet Markdown.pm (%s) eller /usr/bin/markdown (%s) " "mislykkedes" -#: ../IkiWiki/Plugin/meta.pm:124 +#: ../IkiWiki/Plugin/meta.pm:119 msgid "stylesheet not found" msgstr "stilsnit (stylesheet) ikke fundet" -#: ../IkiWiki/Plugin/meta.pm:148 +#: ../IkiWiki/Plugin/meta.pm:143 #, fuzzy msgid "redir page not found" msgstr "fødning ikke fundet" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:156 #, fuzzy msgid "redir cycle is not allowed" msgstr "fødning ikke fundet" @@ -393,6 +393,16 @@ msgstr "ved midnat" msgid "at noon on %A" msgstr "midt på dagen %A" +#: ../IkiWiki/Plugin/recentchanges.pm:74 +#, fuzzy +msgid "missing page" +msgstr "manglende værdier" + +#: ../IkiWiki/Plugin/recentchanges.pm:76 +#, perl-format +msgid "The page %s does not exist." +msgstr "" + #: ../IkiWiki/Plugin/search.pm:34 #, perl-format msgid "Must specify %s when using the search plugin" @@ -512,47 +522,47 @@ msgstr "" msgid "getctime not implemented" msgstr "getctime ikke implementeret" -#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 +#: ../IkiWiki/Render.pm:273 ../IkiWiki/Render.pm:294 #, perl-format msgid "skipping bad filename %s" msgstr "udelader forkert filnavn %s" -#: ../IkiWiki/Render.pm:339 +#: ../IkiWiki/Render.pm:343 #, perl-format msgid "removing old page %s" msgstr "fjerner gammel side %s" -#: ../IkiWiki/Render.pm:372 +#: ../IkiWiki/Render.pm:384 #, perl-format msgid "scanning %s" msgstr "gennemlæser %s" -#: ../IkiWiki/Render.pm:377 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s" msgstr "danner %s" -#: ../IkiWiki/Render.pm:389 +#: ../IkiWiki/Render.pm:410 #, perl-format msgid "rendering %s, which links to %s" msgstr "danner %s, som henviser til %s" -#: ../IkiWiki/Render.pm:406 +#: ../IkiWiki/Render.pm:431 #, perl-format msgid "rendering %s, which depends on %s" msgstr "danner %s, som afhænger af %s" -#: ../IkiWiki/Render.pm:444 +#: ../IkiWiki/Render.pm:470 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "danner %s, for at opdatere dens krydshenvisninger (backlinks)" -#: ../IkiWiki/Render.pm:456 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "fjerner %s, ikke længere dannet af %s" -#: ../IkiWiki/Render.pm:482 +#: ../IkiWiki/Render.pm:508 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki: kan ikke danne %s" @@ -632,7 +642,7 @@ msgstr "Fejl" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:767 +#: ../IkiWiki.pm:750 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "%s forudberegningssløkke fundet på %s ved dybde %i" diff --git a/po/es.po b/po/es.po index f93a518a5..15e5acaca 100644 --- a/po/es.po +++ b/po/es.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: es\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-01-29 04:45-0500\n" +"POT-Creation-Date: 2008-02-03 14:52-0500\n" "PO-Revision-Date: 2007-12-20 11:25+0100\n" "Last-Translator: Víctor Moral \n" "Language-Team: Spanish \n" @@ -47,8 +47,8 @@ msgstr "la página %s no es modificable" #: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 #: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 -#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 -#: ../IkiWiki/Render.pm:178 +#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:95 +#: ../IkiWiki/Render.pm:175 msgid "discussion" msgstr "comentarios" @@ -58,76 +58,76 @@ msgid "creating %s" msgstr "creando página %s" #: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 -#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:554 #, perl-format msgid "editing %s" msgstr "modificando página %s" -#: ../IkiWiki/CGI.pm:646 +#: ../IkiWiki/CGI.pm:643 msgid "You are banned." msgstr "Ha sido expulsado." -#: ../IkiWiki/Plugin/aggregate.pm:82 +#: ../IkiWiki/Plugin/aggregate.pm:72 #, perl-format msgid "missing %s parameter" msgstr "falta el parámetro %s" -#: ../IkiWiki/Plugin/aggregate.pm:110 +#: ../IkiWiki/Plugin/aggregate.pm:100 msgid "new feed" msgstr "nueva entrada" -#: ../IkiWiki/Plugin/aggregate.pm:124 +#: ../IkiWiki/Plugin/aggregate.pm:114 msgid "posts" msgstr "entradas" -#: ../IkiWiki/Plugin/aggregate.pm:126 +#: ../IkiWiki/Plugin/aggregate.pm:116 msgid "new" msgstr "nuevo" -#: ../IkiWiki/Plugin/aggregate.pm:236 +#: ../IkiWiki/Plugin/aggregate.pm:232 #, perl-format msgid "expiring %s (%s days old)" msgstr "%s caducada (%s días de antigüedad)" -#: ../IkiWiki/Plugin/aggregate.pm:243 +#: ../IkiWiki/Plugin/aggregate.pm:239 #, perl-format msgid "expiring %s" msgstr "%s caducada" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:265 #, perl-format msgid "processed ok at %s" msgstr "proceso completado con éxito a %s" -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:270 #, perl-format msgid "checking feed %s ..." msgstr "comprobando fuente de datos %s ..." -#: ../IkiWiki/Plugin/aggregate.pm:279 +#: ../IkiWiki/Plugin/aggregate.pm:275 #, perl-format msgid "could not find feed at %s" msgstr "no puedo encontrar la fuente de datos en %s" -#: ../IkiWiki/Plugin/aggregate.pm:294 +#: ../IkiWiki/Plugin/aggregate.pm:290 msgid "feed not found" msgstr "fuente de datos no encontrada" -#: ../IkiWiki/Plugin/aggregate.pm:305 +#: ../IkiWiki/Plugin/aggregate.pm:301 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "(una secuencia UTF-8 inválida ha sido eliminada de la fuente de datos)" -#: ../IkiWiki/Plugin/aggregate.pm:311 +#: ../IkiWiki/Plugin/aggregate.pm:307 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:317 +#: ../IkiWiki/Plugin/aggregate.pm:313 msgid "feed crashed XML::Feed!" msgstr "¡ la fuente de datos ha provocado un error fatal en XML::Feed!" -#: ../IkiWiki/Plugin/aggregate.pm:391 +#: ../IkiWiki/Plugin/aggregate.pm:387 #, perl-format msgid "creating new page %s" msgstr "creando nueva página %s" @@ -146,20 +146,20 @@ msgstr "¡ No hay enlaces rotos !" msgid "%s parameter is required" msgstr "el parámetro %s es obligatorio" -#: ../IkiWiki/Plugin/edittemplate.pm:40 +#: ../IkiWiki/Plugin/edittemplate.pm:41 msgid "template not specified" msgstr "falta indicar la plantilla (template)" -#: ../IkiWiki/Plugin/edittemplate.pm:43 +#: ../IkiWiki/Plugin/edittemplate.pm:44 msgid "match not specified" msgstr "falta indicar la coincidencia de páginas (match)" -#: ../IkiWiki/Plugin/edittemplate.pm:48 +#: ../IkiWiki/Plugin/edittemplate.pm:49 #, perl-format msgid "edittemplate %s registered for %s" msgstr "plantilla de edición %s registrada para %s" -#: ../IkiWiki/Plugin/edittemplate.pm:110 +#: ../IkiWiki/Plugin/edittemplate.pm:111 msgid "failed to process" msgstr "fallo en el proceso" @@ -221,7 +221,7 @@ msgstr "Añadir una entrada nueva titulada:" msgid "nonexistant template %s" msgstr "la plantilla %s no existe " -#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:99 msgid "Discussion" msgstr "Comentarios" @@ -245,15 +245,15 @@ 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:124 +#: ../IkiWiki/Plugin/meta.pm:119 msgid "stylesheet not found" msgstr "hoja de estilo no encontrada " -#: ../IkiWiki/Plugin/meta.pm:148 +#: ../IkiWiki/Plugin/meta.pm:143 msgid "redir page not found" msgstr "falta la página a donde redirigir" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:156 msgid "redir cycle is not allowed" msgstr "ciclo de redirección no permitido" @@ -389,6 +389,16 @@ msgstr "a medianoche" msgid "at noon on %A" msgstr "el %A a media tarde" +#: ../IkiWiki/Plugin/recentchanges.pm:74 +#, fuzzy +msgid "missing page" +msgstr "faltan valores" + +#: ../IkiWiki/Plugin/recentchanges.pm:76 +#, perl-format +msgid "The page %s does not exist." +msgstr "" + #: ../IkiWiki/Plugin/search.pm:34 #, perl-format msgid "Must specify %s when using the search plugin" @@ -508,49 +518,49 @@ msgstr "(no se puede cambiar en el modo de previsualización)" msgid "getctime not implemented" msgstr "la funcionalidad getctime no está incluida" -#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 +#: ../IkiWiki/Render.pm:273 ../IkiWiki/Render.pm:294 #, perl-format msgid "skipping bad filename %s" msgstr "ignorando el archivo %s porque su nombre no es correcto" -#: ../IkiWiki/Render.pm:339 +#: ../IkiWiki/Render.pm:343 #, perl-format msgid "removing old page %s" msgstr "eliminando la antigua página %s" -#: ../IkiWiki/Render.pm:372 +#: ../IkiWiki/Render.pm:384 #, perl-format msgid "scanning %s" msgstr "explorando %s" -#: ../IkiWiki/Render.pm:377 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s" msgstr "convirtiendo %s" -#: ../IkiWiki/Render.pm:389 +#: ../IkiWiki/Render.pm:410 #, perl-format msgid "rendering %s, which links to %s" msgstr "convirtiendo la página %s, la cual referencia a %s" -#: ../IkiWiki/Render.pm:406 +#: ../IkiWiki/Render.pm:431 #, perl-format msgid "rendering %s, which depends on %s" msgstr "convirtiendo la página %s, la cual depende de %s" -#: ../IkiWiki/Render.pm:444 +#: ../IkiWiki/Render.pm:470 #, perl-format msgid "rendering %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:456 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "eliminando la página %s puesto que ya no se deriva de %s" -#: ../IkiWiki/Render.pm:482 +#: ../IkiWiki/Render.pm:508 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikwiki: no puedo convertir la página %s" @@ -633,7 +643,7 @@ msgstr "Error" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:767 +#: ../IkiWiki.pm:750 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "" diff --git a/po/fr.po b/po/fr.po index b6769a969..477b45d2b 100644 --- a/po/fr.po +++ b/po/fr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ikiwiki\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-01-29 04:45-0500\n" +"POT-Creation-Date: 2008-02-03 14:52-0500\n" "PO-Revision-Date: 2007-08-28 21:05+0200\n" "Last-Translator: Cyril Brulebois \n" "Language-Team: French \n" @@ -49,8 +49,8 @@ msgstr "%s n'est pas une page éditable" #: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 #: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 -#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 -#: ../IkiWiki/Render.pm:178 +#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:95 +#: ../IkiWiki/Render.pm:175 msgid "discussion" msgstr "Discussion" @@ -60,76 +60,76 @@ msgid "creating %s" msgstr "Création de %s" #: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 -#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:554 #, perl-format msgid "editing %s" msgstr "Édition de %s" -#: ../IkiWiki/CGI.pm:646 +#: ../IkiWiki/CGI.pm:643 msgid "You are banned." msgstr "Vous avez été banni." -#: ../IkiWiki/Plugin/aggregate.pm:82 +#: ../IkiWiki/Plugin/aggregate.pm:72 #, perl-format msgid "missing %s parameter" msgstr "Paramètre %s manquant" -#: ../IkiWiki/Plugin/aggregate.pm:110 +#: ../IkiWiki/Plugin/aggregate.pm:100 msgid "new feed" msgstr "Nouveau flux" -#: ../IkiWiki/Plugin/aggregate.pm:124 +#: ../IkiWiki/Plugin/aggregate.pm:114 msgid "posts" msgstr "Articles" -#: ../IkiWiki/Plugin/aggregate.pm:126 +#: ../IkiWiki/Plugin/aggregate.pm:116 msgid "new" msgstr "Nouveau" -#: ../IkiWiki/Plugin/aggregate.pm:236 +#: ../IkiWiki/Plugin/aggregate.pm:232 #, perl-format msgid "expiring %s (%s days old)" msgstr "Fin de validité de %s (date de %s jours)" -#: ../IkiWiki/Plugin/aggregate.pm:243 +#: ../IkiWiki/Plugin/aggregate.pm:239 #, perl-format msgid "expiring %s" msgstr "Fin de validité de %s" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:265 #, perl-format msgid "processed ok at %s" msgstr "A été correctement traité à %s" -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:270 #, perl-format msgid "checking feed %s ..." msgstr "Vérification du flux %s..." -#: ../IkiWiki/Plugin/aggregate.pm:279 +#: ../IkiWiki/Plugin/aggregate.pm:275 #, perl-format msgid "could not find feed at %s" msgstr "Impossible de trouver de flux à %s" -#: ../IkiWiki/Plugin/aggregate.pm:294 +#: ../IkiWiki/Plugin/aggregate.pm:290 msgid "feed not found" msgstr "Flux introuvable " -#: ../IkiWiki/Plugin/aggregate.pm:305 +#: ../IkiWiki/Plugin/aggregate.pm:301 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "(chaîne UTF-8 non valable supprimée du flux)" -#: ../IkiWiki/Plugin/aggregate.pm:311 +#: ../IkiWiki/Plugin/aggregate.pm:307 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:317 +#: ../IkiWiki/Plugin/aggregate.pm:313 msgid "feed crashed XML::Feed!" msgstr "Plantage du flux XML::Feed !" -#: ../IkiWiki/Plugin/aggregate.pm:391 +#: ../IkiWiki/Plugin/aggregate.pm:387 #, perl-format msgid "creating new page %s" msgstr "Création de la nouvelle page %s" @@ -148,22 +148,22 @@ msgstr "Il n'y a pas de lien cassé !" msgid "%s parameter is required" msgstr "le paramètre %s est obligatoire" -#: ../IkiWiki/Plugin/edittemplate.pm:40 +#: ../IkiWiki/Plugin/edittemplate.pm:41 #, fuzzy msgid "template not specified" msgstr "Modèle (« template ») %s introuvable " -#: ../IkiWiki/Plugin/edittemplate.pm:43 +#: ../IkiWiki/Plugin/edittemplate.pm:44 #, fuzzy msgid "match not specified" msgstr "Le nom de fichier de l'enrobage n'a pas été indiqué" -#: ../IkiWiki/Plugin/edittemplate.pm:48 +#: ../IkiWiki/Plugin/edittemplate.pm:49 #, perl-format msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:110 +#: ../IkiWiki/Plugin/edittemplate.pm:111 #, fuzzy msgid "failed to process" msgstr "Échec du traitement :" @@ -225,7 +225,7 @@ msgstr "Ajouter un nouvel article dont le titre est :" msgid "nonexistant template %s" msgstr "Le modèle (« template ») %s n'existe pas" -#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:99 msgid "Discussion" msgstr "Discussion" @@ -249,16 +249,16 @@ msgstr "" "Échec du chargement du module Perl Markdown.pm (%s) ou de /usr/bin/markdown " "(%s)" -#: ../IkiWiki/Plugin/meta.pm:124 +#: ../IkiWiki/Plugin/meta.pm:119 msgid "stylesheet not found" msgstr "Feuille de style introuvable " -#: ../IkiWiki/Plugin/meta.pm:148 +#: ../IkiWiki/Plugin/meta.pm:143 #, fuzzy msgid "redir page not found" msgstr "Flux introuvable " -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:156 #, fuzzy msgid "redir cycle is not allowed" msgstr "Flux introuvable " @@ -395,6 +395,16 @@ msgstr "à minuit" msgid "at noon on %A" msgstr "%A, à midi" +#: ../IkiWiki/Plugin/recentchanges.pm:74 +#, fuzzy +msgid "missing page" +msgstr "Il manque des valeurs" + +#: ../IkiWiki/Plugin/recentchanges.pm:76 +#, perl-format +msgid "The page %s does not exist." +msgstr "" + #: ../IkiWiki/Plugin/search.pm:34 #, perl-format msgid "Must specify %s when using the search plugin" @@ -514,47 +524,47 @@ msgstr "" msgid "getctime not implemented" msgstr "getctime n'est pas implémenté" -#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 +#: ../IkiWiki/Render.pm:273 ../IkiWiki/Render.pm:294 #, perl-format msgid "skipping bad filename %s" msgstr "Omission du fichier au nom incorrect %s" -#: ../IkiWiki/Render.pm:339 +#: ../IkiWiki/Render.pm:343 #, perl-format msgid "removing old page %s" msgstr "Suppression de l'ancienne page %s" -#: ../IkiWiki/Render.pm:372 +#: ../IkiWiki/Render.pm:384 #, perl-format msgid "scanning %s" msgstr "Parcours de %s" -#: ../IkiWiki/Render.pm:377 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s" msgstr "Affichage de %s" -#: ../IkiWiki/Render.pm:389 +#: ../IkiWiki/Render.pm:410 #, perl-format msgid "rendering %s, which links to %s" msgstr "Affichage de %s, qui est lié à %s" -#: ../IkiWiki/Render.pm:406 +#: ../IkiWiki/Render.pm:431 #, perl-format msgid "rendering %s, which depends on %s" msgstr "Affichage de %s, qui dépend de %s" -#: ../IkiWiki/Render.pm:444 +#: ../IkiWiki/Render.pm:470 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "Affichage de %s, afin de mettre à jour ses rétroliens" -#: ../IkiWiki/Render.pm:456 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "Suppression de %s, qui n'est plus affiché par %s" -#: ../IkiWiki/Render.pm:482 +#: ../IkiWiki/Render.pm:508 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki : impossible d'afficher %s" @@ -637,7 +647,7 @@ msgstr "Erreur" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:767 +#: ../IkiWiki.pm:750 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "" diff --git a/po/gu.po b/po/gu.po index b50fd4813..0efa3c038 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: 2008-01-29 04:45-0500\n" +"POT-Creation-Date: 2008-02-03 14:52-0500\n" "PO-Revision-Date: 2007-01-11 16:05+0530\n" "Last-Translator: Kartik Mistry \n" "Language-Team: Gujarati \n" @@ -47,8 +47,8 @@ msgstr "%s એ સુધારી શકાય તેવું પાનું #: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 #: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 -#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 -#: ../IkiWiki/Render.pm:178 +#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:95 +#: ../IkiWiki/Render.pm:175 msgid "discussion" msgstr "ચર્ચા" @@ -58,76 +58,76 @@ msgid "creating %s" msgstr "%s બનાવે છે" #: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 -#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:554 #, perl-format msgid "editing %s" msgstr "%s સુધારે છે" -#: ../IkiWiki/CGI.pm:646 +#: ../IkiWiki/CGI.pm:643 msgid "You are banned." msgstr "તમારા પર પ્રતિબંધ છે." -#: ../IkiWiki/Plugin/aggregate.pm:82 +#: ../IkiWiki/Plugin/aggregate.pm:72 #, perl-format msgid "missing %s parameter" msgstr "ખોવાયેલ %s વિકલ્પ" -#: ../IkiWiki/Plugin/aggregate.pm:110 +#: ../IkiWiki/Plugin/aggregate.pm:100 msgid "new feed" msgstr "નવું ફીડ" -#: ../IkiWiki/Plugin/aggregate.pm:124 +#: ../IkiWiki/Plugin/aggregate.pm:114 msgid "posts" msgstr "પોસ્ટ" -#: ../IkiWiki/Plugin/aggregate.pm:126 +#: ../IkiWiki/Plugin/aggregate.pm:116 msgid "new" msgstr "નવું" -#: ../IkiWiki/Plugin/aggregate.pm:236 +#: ../IkiWiki/Plugin/aggregate.pm:232 #, perl-format msgid "expiring %s (%s days old)" msgstr "જુનું કરે છે %s (%s દિવસો જુનું)" -#: ../IkiWiki/Plugin/aggregate.pm:243 +#: ../IkiWiki/Plugin/aggregate.pm:239 #, perl-format msgid "expiring %s" msgstr "જુનું કરે છે %s" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:265 #, perl-format msgid "processed ok at %s" msgstr "આના પર બરાબર છે %s" -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:270 #, perl-format msgid "checking feed %s ..." msgstr "ફીડ %s ચકાસે છે ..." -#: ../IkiWiki/Plugin/aggregate.pm:279 +#: ../IkiWiki/Plugin/aggregate.pm:275 #, perl-format msgid "could not find feed at %s" msgstr "%s પર ફીડ મળી શક્યું નહી" -#: ../IkiWiki/Plugin/aggregate.pm:294 +#: ../IkiWiki/Plugin/aggregate.pm:290 msgid "feed not found" msgstr "ફીડ મળ્યું નહી" -#: ../IkiWiki/Plugin/aggregate.pm:305 +#: ../IkiWiki/Plugin/aggregate.pm:301 #, fuzzy, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "ફીડમાંથી અયોગ્ય રીતે UTF-8 નીકાળેલ છે" -#: ../IkiWiki/Plugin/aggregate.pm:311 +#: ../IkiWiki/Plugin/aggregate.pm:307 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:317 +#: ../IkiWiki/Plugin/aggregate.pm:313 msgid "feed crashed XML::Feed!" msgstr "ફીડ ભાંગી ગયું XML::Feed!" -#: ../IkiWiki/Plugin/aggregate.pm:391 +#: ../IkiWiki/Plugin/aggregate.pm:387 #, perl-format msgid "creating new page %s" msgstr "નવું પાનું %s બનાવે છે" @@ -146,22 +146,22 @@ msgstr "અહીં કોઇ તૂટેલ કડી નથી!" msgid "%s parameter is required" msgstr "\"test\" અને \"then\" વિકલ્પો જરૂરી છે" -#: ../IkiWiki/Plugin/edittemplate.pm:40 +#: ../IkiWiki/Plugin/edittemplate.pm:41 #, fuzzy msgid "template not specified" msgstr "ટેમ્પલેટ %s મળ્યું નહી" -#: ../IkiWiki/Plugin/edittemplate.pm:43 +#: ../IkiWiki/Plugin/edittemplate.pm:44 #, fuzzy msgid "match not specified" msgstr "આવરણ ફાઇલનામ સ્પષ્ટ કરેલ નથી" -#: ../IkiWiki/Plugin/edittemplate.pm:48 +#: ../IkiWiki/Plugin/edittemplate.pm:49 #, perl-format msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:110 +#: ../IkiWiki/Plugin/edittemplate.pm:111 #, fuzzy msgid "failed to process" msgstr "ક્રિયા કરવામાં નિષ્ફળ:" @@ -221,7 +221,7 @@ msgstr "આ શિર્ષકથી નવું પોસ્ટ ઉમેર msgid "nonexistant template %s" msgstr "અસ્તિત્વમાં ન હોય તેવું ટેમ્પલેટ %s" -#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:99 msgid "Discussion" msgstr "ચર્ચા" @@ -243,16 +243,16 @@ msgstr "%s એ %s દ્વારા તાળું મરાયેલ છે 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:124 +#: ../IkiWiki/Plugin/meta.pm:119 msgid "stylesheet not found" msgstr "સ્ટાઇલશીટ મળ્યું નહી" -#: ../IkiWiki/Plugin/meta.pm:148 +#: ../IkiWiki/Plugin/meta.pm:143 #, fuzzy msgid "redir page not found" msgstr "ફીડ મળ્યું નહી" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:156 #, fuzzy msgid "redir cycle is not allowed" msgstr "ફીડ મળ્યું નહી" @@ -390,6 +390,16 @@ msgstr "મધ્યરાત્રે" msgid "at noon on %A" msgstr "બપોરે %A પર" +#: ../IkiWiki/Plugin/recentchanges.pm:74 +#, fuzzy +msgid "missing page" +msgstr "ખોવાયેલ કિંમતો" + +#: ../IkiWiki/Plugin/recentchanges.pm:76 +#, perl-format +msgid "The page %s does not exist." +msgstr "" + #: ../IkiWiki/Plugin/search.pm:34 #, perl-format msgid "Must specify %s when using the search plugin" @@ -511,47 +521,47 @@ msgstr "" msgid "getctime not implemented" msgstr "getctime અમલમાં મૂકાયેલ નથી" -#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 +#: ../IkiWiki/Render.pm:273 ../IkiWiki/Render.pm:294 #, perl-format msgid "skipping bad filename %s" msgstr "ખરાબ ફાઇલ નામ છોડી દે છે %s" -#: ../IkiWiki/Render.pm:339 +#: ../IkiWiki/Render.pm:343 #, perl-format msgid "removing old page %s" msgstr "જુનાં પાનાં દૂર કરે છે %s" -#: ../IkiWiki/Render.pm:372 +#: ../IkiWiki/Render.pm:384 #, perl-format msgid "scanning %s" msgstr "%s શોધે છે" -#: ../IkiWiki/Render.pm:377 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s" msgstr "રેન્ડર કરે છે %s" -#: ../IkiWiki/Render.pm:389 +#: ../IkiWiki/Render.pm:410 #, perl-format msgid "rendering %s, which links to %s" msgstr "રેન્ડર કરે છે %s, જે %s સાથે જોડાણ ધરાવે છે" -#: ../IkiWiki/Render.pm:406 +#: ../IkiWiki/Render.pm:431 #, perl-format msgid "rendering %s, which depends on %s" msgstr "રેન્ડર કરે છે %s, જે %s પર આધારિત છે" -#: ../IkiWiki/Render.pm:444 +#: ../IkiWiki/Render.pm:470 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "રેન્ડર કરે છે %s, તેનાં પાછળનાં જોડાણો સુધારવા માટે" -#: ../IkiWiki/Render.pm:456 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "દૂર કરે છે %s, હવે %s વડે રેન્ડર કરાતું નથી" -#: ../IkiWiki/Render.pm:482 +#: ../IkiWiki/Render.pm:508 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki: %s રેન્ડર કરી શકાતું નથી" @@ -631,7 +641,7 @@ msgstr "ક્ષતિ" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:767 +#: ../IkiWiki.pm:750 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "%s પર શોધાયેલ લુપ %s પર ચલાવે છે %i ઉંડાણ પર" diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index 49c5c7b0c..69e231ada 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: 2008-01-29 18:30-0500\n" +"POT-Creation-Date: 2008-02-03 14:52-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -47,8 +47,8 @@ msgstr "" #: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 #: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 -#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:101 -#: ../IkiWiki/Render.pm:181 +#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:95 +#: ../IkiWiki/Render.pm:175 msgid "discussion" msgstr "" @@ -58,76 +58,76 @@ msgid "creating %s" msgstr "" #: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 -#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:554 #, perl-format msgid "editing %s" msgstr "" -#: ../IkiWiki/CGI.pm:646 +#: ../IkiWiki/CGI.pm:643 msgid "You are banned." msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:83 +#: ../IkiWiki/Plugin/aggregate.pm:72 #, perl-format msgid "missing %s parameter" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:111 +#: ../IkiWiki/Plugin/aggregate.pm:100 msgid "new feed" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:125 +#: ../IkiWiki/Plugin/aggregate.pm:114 msgid "posts" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:127 +#: ../IkiWiki/Plugin/aggregate.pm:116 msgid "new" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:237 +#: ../IkiWiki/Plugin/aggregate.pm:232 #, perl-format msgid "expiring %s (%s days old)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:244 +#: ../IkiWiki/Plugin/aggregate.pm:239 #, perl-format msgid "expiring %s" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:270 +#: ../IkiWiki/Plugin/aggregate.pm:265 #, perl-format msgid "processed ok at %s" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:275 +#: ../IkiWiki/Plugin/aggregate.pm:270 #, perl-format msgid "checking feed %s ..." msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:280 +#: ../IkiWiki/Plugin/aggregate.pm:275 #, perl-format msgid "could not find feed at %s" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:295 +#: ../IkiWiki/Plugin/aggregate.pm:290 msgid "feed not found" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:306 +#: ../IkiWiki/Plugin/aggregate.pm:301 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:312 +#: ../IkiWiki/Plugin/aggregate.pm:307 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:318 +#: ../IkiWiki/Plugin/aggregate.pm:313 msgid "feed crashed XML::Feed!" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:392 +#: ../IkiWiki/Plugin/aggregate.pm:387 #, perl-format msgid "creating new page %s" msgstr "" @@ -218,7 +218,7 @@ msgstr "" msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:105 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:99 msgid "Discussion" msgstr "" @@ -384,6 +384,15 @@ msgstr "" msgid "at noon on %A" msgstr "" +#: ../IkiWiki/Plugin/recentchanges.pm:74 +msgid "missing page" +msgstr "" + +#: ../IkiWiki/Plugin/recentchanges.pm:76 +#, perl-format +msgid "The page %s does not exist." +msgstr "" + #: ../IkiWiki/Plugin/search.pm:34 #, perl-format msgid "Must specify %s when using the search plugin" @@ -503,47 +512,47 @@ msgstr "" msgid "getctime not implemented" msgstr "" -#: ../IkiWiki/Render.pm:281 ../IkiWiki/Render.pm:302 +#: ../IkiWiki/Render.pm:273 ../IkiWiki/Render.pm:294 #, perl-format msgid "skipping bad filename %s" msgstr "" -#: ../IkiWiki/Render.pm:351 +#: ../IkiWiki/Render.pm:343 #, perl-format msgid "removing old page %s" msgstr "" -#: ../IkiWiki/Render.pm:392 +#: ../IkiWiki/Render.pm:384 #, perl-format msgid "scanning %s" msgstr "" -#: ../IkiWiki/Render.pm:397 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s" msgstr "" -#: ../IkiWiki/Render.pm:418 +#: ../IkiWiki/Render.pm:410 #, perl-format msgid "rendering %s, which links to %s" msgstr "" -#: ../IkiWiki/Render.pm:439 +#: ../IkiWiki/Render.pm:431 #, perl-format msgid "rendering %s, which depends on %s" msgstr "" -#: ../IkiWiki/Render.pm:478 +#: ../IkiWiki/Render.pm:470 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "" -#: ../IkiWiki/Render.pm:490 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "" -#: ../IkiWiki/Render.pm:516 +#: ../IkiWiki/Render.pm:508 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "" @@ -623,7 +632,7 @@ msgstr "" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:773 +#: ../IkiWiki.pm:750 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "" diff --git a/po/pl.po b/po/pl.po index c3b9b0c1d..934881b89 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: 2008-01-29 04:45-0500\n" +"POT-Creation-Date: 2008-02-03 14:52-0500\n" "PO-Revision-Date: 2007-04-27 22:05+0200\n" "Last-Translator: Pawel Tecza \n" "Language-Team: Debian L10n Polish \n" @@ -50,8 +50,8 @@ msgstr "Strona %s nie może być edytowana" #: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 #: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 -#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 -#: ../IkiWiki/Render.pm:178 +#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:95 +#: ../IkiWiki/Render.pm:175 msgid "discussion" msgstr "dyskusja" @@ -61,77 +61,77 @@ msgid "creating %s" msgstr "tworzenie %s" #: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 -#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:554 #, perl-format msgid "editing %s" msgstr "edycja %s" -#: ../IkiWiki/CGI.pm:646 +#: ../IkiWiki/CGI.pm:643 msgid "You are banned." msgstr "Twój dostęp został zabroniony przez administratora." -#: ../IkiWiki/Plugin/aggregate.pm:82 +#: ../IkiWiki/Plugin/aggregate.pm:72 #, fuzzy, perl-format msgid "missing %s parameter" msgstr "brakujący parametr %s" -#: ../IkiWiki/Plugin/aggregate.pm:110 +#: ../IkiWiki/Plugin/aggregate.pm:100 msgid "new feed" msgstr "nowy kanał RSS" -#: ../IkiWiki/Plugin/aggregate.pm:124 +#: ../IkiWiki/Plugin/aggregate.pm:114 msgid "posts" msgstr "wpisy" -#: ../IkiWiki/Plugin/aggregate.pm:126 +#: ../IkiWiki/Plugin/aggregate.pm:116 msgid "new" msgstr "nowy wpis" -#: ../IkiWiki/Plugin/aggregate.pm:236 +#: ../IkiWiki/Plugin/aggregate.pm:232 #, perl-format msgid "expiring %s (%s days old)" msgstr "wygasający wpis %s (ma już %s dni)" -#: ../IkiWiki/Plugin/aggregate.pm:243 +#: ../IkiWiki/Plugin/aggregate.pm:239 #, perl-format msgid "expiring %s" msgstr "wygasający wpis %s" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:265 #, perl-format msgid "processed ok at %s" msgstr "kanał RSS przetworzony w dniu %s" -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:270 #, perl-format msgid "checking feed %s ..." msgstr "sprawdzanie kanału RSS %s..." -#: ../IkiWiki/Plugin/aggregate.pm:279 +#: ../IkiWiki/Plugin/aggregate.pm:275 #, perl-format msgid "could not find feed at %s" msgstr "nie znaleziono kanału RSS pod adresem %s" -#: ../IkiWiki/Plugin/aggregate.pm:294 +#: ../IkiWiki/Plugin/aggregate.pm:290 #, fuzzy msgid "feed not found" msgstr "nieznaleziony kanał RSS" -#: ../IkiWiki/Plugin/aggregate.pm:305 +#: ../IkiWiki/Plugin/aggregate.pm:301 #, fuzzy, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "Nieprawidłowe kodowanie UTF-8 usunięte z kanału RSS" -#: ../IkiWiki/Plugin/aggregate.pm:311 +#: ../IkiWiki/Plugin/aggregate.pm:307 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:317 +#: ../IkiWiki/Plugin/aggregate.pm:313 msgid "feed crashed XML::Feed!" msgstr "awaria kanału RSS w module XML::Feed!" -#: ../IkiWiki/Plugin/aggregate.pm:391 +#: ../IkiWiki/Plugin/aggregate.pm:387 #, perl-format msgid "creating new page %s" msgstr "tworzenie nowej strony %s" @@ -150,22 +150,22 @@ msgstr "Wszystkie odnośniki są aktualne!" msgid "%s parameter is required" msgstr "Parametry \"test\" i \"then\" są wymagane" -#: ../IkiWiki/Plugin/edittemplate.pm:40 +#: ../IkiWiki/Plugin/edittemplate.pm:41 #, fuzzy msgid "template not specified" msgstr "nieznaleziony szablon %s" -#: ../IkiWiki/Plugin/edittemplate.pm:43 +#: ../IkiWiki/Plugin/edittemplate.pm:44 #, fuzzy msgid "match not specified" msgstr "nieokreślona nazwa pliku osłony" -#: ../IkiWiki/Plugin/edittemplate.pm:48 +#: ../IkiWiki/Plugin/edittemplate.pm:49 #, perl-format msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:110 +#: ../IkiWiki/Plugin/edittemplate.pm:111 #, fuzzy msgid "failed to process" msgstr "awaria w trakcie przetwarzania:" @@ -229,7 +229,7 @@ msgstr "Tytuł nowego wpisu" msgid "nonexistant template %s" msgstr "brakujący szablon %s" -#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:99 msgid "Discussion" msgstr "Dyskusja" @@ -256,17 +256,17 @@ msgstr "" "Awaria w trakcie ładowania perlowego modułu Markdown.pm (%s) lub " "uruchamiania programu /usr/bin/markdown (%s)" -#: ../IkiWiki/Plugin/meta.pm:124 +#: ../IkiWiki/Plugin/meta.pm:119 #, fuzzy msgid "stylesheet not found" msgstr "nieznaleziony szablon ze stylami CSS" -#: ../IkiWiki/Plugin/meta.pm:148 +#: ../IkiWiki/Plugin/meta.pm:143 #, fuzzy msgid "redir page not found" msgstr "nieznaleziony kanał RSS" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:156 #, fuzzy msgid "redir cycle is not allowed" msgstr "nieznaleziony kanał RSS" @@ -404,6 +404,16 @@ msgstr "o północy" msgid "at noon on %A" msgstr "w południe w %A" +#: ../IkiWiki/Plugin/recentchanges.pm:74 +#, fuzzy +msgid "missing page" +msgstr "brakujące wartości" + +#: ../IkiWiki/Plugin/recentchanges.pm:76 +#, perl-format +msgid "The page %s does not exist." +msgstr "" + #: ../IkiWiki/Plugin/search.pm:34 #, perl-format msgid "Must specify %s when using the search plugin" @@ -534,47 +544,47 @@ msgstr "" msgid "getctime not implemented" msgstr "niedostępna funkcja getctime" -#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 +#: ../IkiWiki/Render.pm:273 ../IkiWiki/Render.pm:294 #, perl-format msgid "skipping bad filename %s" msgstr "pomijanie nieprawidłowej nazwy pliku %s" -#: ../IkiWiki/Render.pm:339 +#: ../IkiWiki/Render.pm:343 #, perl-format msgid "removing old page %s" msgstr "usuwanie starej strony %s" -#: ../IkiWiki/Render.pm:372 +#: ../IkiWiki/Render.pm:384 #, perl-format msgid "scanning %s" msgstr "skanowanie %s" -#: ../IkiWiki/Render.pm:377 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s" msgstr "renderowanie %s" -#: ../IkiWiki/Render.pm:389 +#: ../IkiWiki/Render.pm:410 #, perl-format msgid "rendering %s, which links to %s" msgstr "renderowanie %s z odnośnikiem do %s" -#: ../IkiWiki/Render.pm:406 +#: ../IkiWiki/Render.pm:431 #, perl-format msgid "rendering %s, which depends on %s" msgstr "renderowanie %s zależącego od %s" -#: ../IkiWiki/Render.pm:444 +#: ../IkiWiki/Render.pm:470 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "renderowanie %s w celu aktualizacji powrotnych odnośników" -#: ../IkiWiki/Render.pm:456 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "usuwanie %s nie tworzonego już przez %s" -#: ../IkiWiki/Render.pm:482 +#: ../IkiWiki/Render.pm:508 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki: awaria w trakcie tworzenia %s" @@ -656,7 +666,7 @@ msgstr "Błąd" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:767 +#: ../IkiWiki.pm:750 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "polecenie preprocesora %s wykryte w %s na głębokości %i" diff --git a/po/sv.po b/po/sv.po index 3aa8b312b..7990184dd 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: 2008-01-29 04:45-0500\n" +"POT-Creation-Date: 2008-02-03 14:52-0500\n" "PO-Revision-Date: 2007-01-10 23:47+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -47,8 +47,8 @@ msgstr "" #: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 #: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 -#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 -#: ../IkiWiki/Render.pm:178 +#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:95 +#: ../IkiWiki/Render.pm:175 msgid "discussion" msgstr "diskussion" @@ -58,77 +58,77 @@ msgid "creating %s" msgstr "skapar %s" #: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 -#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:554 #, perl-format msgid "editing %s" msgstr "redigerar %s" -#: ../IkiWiki/CGI.pm:646 +#: ../IkiWiki/CGI.pm:643 msgid "You are banned." msgstr "Du är bannlyst." -#: ../IkiWiki/Plugin/aggregate.pm:82 +#: ../IkiWiki/Plugin/aggregate.pm:72 #, fuzzy, perl-format msgid "missing %s parameter" msgstr "mall saknar id-parameter" -#: ../IkiWiki/Plugin/aggregate.pm:110 +#: ../IkiWiki/Plugin/aggregate.pm:100 msgid "new feed" msgstr "ny kanal" -#: ../IkiWiki/Plugin/aggregate.pm:124 +#: ../IkiWiki/Plugin/aggregate.pm:114 msgid "posts" msgstr "inlägg" -#: ../IkiWiki/Plugin/aggregate.pm:126 +#: ../IkiWiki/Plugin/aggregate.pm:116 msgid "new" msgstr "ny" -#: ../IkiWiki/Plugin/aggregate.pm:236 +#: ../IkiWiki/Plugin/aggregate.pm:232 #, perl-format msgid "expiring %s (%s days old)" msgstr "låter %s gå ut (%s dagar gammal)" -#: ../IkiWiki/Plugin/aggregate.pm:243 +#: ../IkiWiki/Plugin/aggregate.pm:239 #, perl-format msgid "expiring %s" msgstr "låter %s gå ut" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:265 #, perl-format msgid "processed ok at %s" msgstr "behandlad ok på %s" -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:270 #, perl-format msgid "checking feed %s ..." msgstr "kontrollerar kanalen %s ..." -#: ../IkiWiki/Plugin/aggregate.pm:279 +#: ../IkiWiki/Plugin/aggregate.pm:275 #, perl-format msgid "could not find feed at %s" msgstr "kunde inte hitta kanalen på %s" -#: ../IkiWiki/Plugin/aggregate.pm:294 +#: ../IkiWiki/Plugin/aggregate.pm:290 #, fuzzy msgid "feed not found" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/aggregate.pm:305 +#: ../IkiWiki/Plugin/aggregate.pm:301 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:311 +#: ../IkiWiki/Plugin/aggregate.pm:307 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:317 +#: ../IkiWiki/Plugin/aggregate.pm:313 msgid "feed crashed XML::Feed!" msgstr "kanalen kraschade XML::Feed!" -#: ../IkiWiki/Plugin/aggregate.pm:391 +#: ../IkiWiki/Plugin/aggregate.pm:387 #, perl-format msgid "creating new page %s" msgstr "skapar nya sidan %s" @@ -147,22 +147,22 @@ msgstr "Det finns inga trasiga länkar!" msgid "%s parameter is required" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:40 +#: ../IkiWiki/Plugin/edittemplate.pm:41 #, fuzzy msgid "template not specified" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/edittemplate.pm:43 +#: ../IkiWiki/Plugin/edittemplate.pm:44 #, fuzzy msgid "match not specified" msgstr "filnamn för wrapper har inte angivits" -#: ../IkiWiki/Plugin/edittemplate.pm:48 +#: ../IkiWiki/Plugin/edittemplate.pm:49 #, perl-format msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:110 +#: ../IkiWiki/Plugin/edittemplate.pm:111 #, fuzzy msgid "failed to process" msgstr "misslyckades med att behandla mall:" @@ -224,7 +224,7 @@ msgstr "" msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:99 msgid "Discussion" msgstr "Diskussion" @@ -249,17 +249,17 @@ msgstr "" "misslyckades med att läsa in Perl-modulen Markdown.pm (%s) eller /usr/bin/" "markdown (%s)" -#: ../IkiWiki/Plugin/meta.pm:124 +#: ../IkiWiki/Plugin/meta.pm:119 #, fuzzy msgid "stylesheet not found" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/meta.pm:148 +#: ../IkiWiki/Plugin/meta.pm:143 #, fuzzy msgid "redir page not found" msgstr "mallen %s hittades inte" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:156 #, fuzzy msgid "redir cycle is not allowed" msgstr "mallen %s hittades inte" @@ -396,6 +396,16 @@ msgstr "" msgid "at noon on %A" msgstr "" +#: ../IkiWiki/Plugin/recentchanges.pm:74 +#, fuzzy +msgid "missing page" +msgstr "mall saknar id-parameter" + +#: ../IkiWiki/Plugin/recentchanges.pm:76 +#, perl-format +msgid "The page %s does not exist." +msgstr "" + #: ../IkiWiki/Plugin/search.pm:34 #, perl-format msgid "Must specify %s when using the search plugin" @@ -525,47 +535,47 @@ msgstr "" msgid "getctime not implemented" msgstr "getctime inte implementerad" -#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 +#: ../IkiWiki/Render.pm:273 ../IkiWiki/Render.pm:294 #, perl-format msgid "skipping bad filename %s" msgstr "hoppar över felaktigt filnamn %s" -#: ../IkiWiki/Render.pm:339 +#: ../IkiWiki/Render.pm:343 #, perl-format msgid "removing old page %s" msgstr "tar bort gammal sida %s" -#: ../IkiWiki/Render.pm:372 +#: ../IkiWiki/Render.pm:384 #, perl-format msgid "scanning %s" msgstr "söker av %s" -#: ../IkiWiki/Render.pm:377 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s" msgstr "ritar upp %s" -#: ../IkiWiki/Render.pm:389 +#: ../IkiWiki/Render.pm:410 #, perl-format msgid "rendering %s, which links to %s" msgstr "ritar upp %s, vilken länkar till %s" -#: ../IkiWiki/Render.pm:406 +#: ../IkiWiki/Render.pm:431 #, perl-format msgid "rendering %s, which depends on %s" msgstr "ritar upp %s, vilken är beroende av %s" -#: ../IkiWiki/Render.pm:444 +#: ../IkiWiki/Render.pm:470 #, perl-format msgid "rendering %s, to update its backlinks" msgstr "ritar upp %s, för att uppdatera dess bakåtlänkar" -#: ../IkiWiki/Render.pm:456 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "tar bort %s, som inte längre ritas upp av %s" -#: ../IkiWiki/Render.pm:482 +#: ../IkiWiki/Render.pm:508 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki: kan inte rita upp %s" @@ -645,7 +655,7 @@ msgstr "Fel" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:767 +#: ../IkiWiki.pm:750 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "%s förbehandlingsslinga detekterades på %s, djup %i" diff --git a/po/vi.po b/po/vi.po index 248275b08..51e85bd41 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: 2008-01-29 04:45-0500\n" +"POT-Creation-Date: 2008-02-03 14:52-0500\n" "PO-Revision-Date: 2007-01-13 15:31+1030\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" @@ -48,8 +48,8 @@ msgstr "" #: ../IkiWiki/CGI.pm:382 ../IkiWiki/Plugin/brokenlinks.pm:24 #: ../IkiWiki/Plugin/inline.pm:241 ../IkiWiki/Plugin/opendiscussion.pm:17 -#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:98 -#: ../IkiWiki/Render.pm:178 +#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:95 +#: ../IkiWiki/Render.pm:175 msgid "discussion" msgstr "thảo luận" @@ -59,77 +59,77 @@ msgid "creating %s" msgstr "đang tạo %s" #: ../IkiWiki/CGI.pm:447 ../IkiWiki/CGI.pm:466 ../IkiWiki/CGI.pm:476 -#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:558 +#: ../IkiWiki/CGI.pm:510 ../IkiWiki/CGI.pm:554 #, perl-format msgid "editing %s" msgstr "đang sửa %s" -#: ../IkiWiki/CGI.pm:646 +#: ../IkiWiki/CGI.pm:643 msgid "You are banned." msgstr "Bạn bị cấm ra." -#: ../IkiWiki/Plugin/aggregate.pm:82 +#: ../IkiWiki/Plugin/aggregate.pm:72 #, fuzzy, perl-format msgid "missing %s parameter" msgstr "mẫu thiếu tham số id" -#: ../IkiWiki/Plugin/aggregate.pm:110 +#: ../IkiWiki/Plugin/aggregate.pm:100 msgid "new feed" msgstr "nguồn tin mới" -#: ../IkiWiki/Plugin/aggregate.pm:124 +#: ../IkiWiki/Plugin/aggregate.pm:114 msgid "posts" msgstr "bài" -#: ../IkiWiki/Plugin/aggregate.pm:126 +#: ../IkiWiki/Plugin/aggregate.pm:116 msgid "new" msgstr "mới" -#: ../IkiWiki/Plugin/aggregate.pm:236 +#: ../IkiWiki/Plugin/aggregate.pm:232 #, perl-format msgid "expiring %s (%s days old)" msgstr "đang mãn hạn %s (cũ %s ngày)" -#: ../IkiWiki/Plugin/aggregate.pm:243 +#: ../IkiWiki/Plugin/aggregate.pm:239 #, perl-format msgid "expiring %s" msgstr "đang mãn hạn %s" -#: ../IkiWiki/Plugin/aggregate.pm:269 +#: ../IkiWiki/Plugin/aggregate.pm:265 #, perl-format msgid "processed ok at %s" msgstr "đã xử lý được ở %s" -#: ../IkiWiki/Plugin/aggregate.pm:274 +#: ../IkiWiki/Plugin/aggregate.pm:270 #, perl-format msgid "checking feed %s ..." msgstr "đang kiểm tra nguồn tin %s ..." -#: ../IkiWiki/Plugin/aggregate.pm:279 +#: ../IkiWiki/Plugin/aggregate.pm:275 #, perl-format msgid "could not find feed at %s" msgstr "không tìm thấy nguồn tin ở %s" -#: ../IkiWiki/Plugin/aggregate.pm:294 +#: ../IkiWiki/Plugin/aggregate.pm:290 #, fuzzy msgid "feed not found" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/aggregate.pm:305 +#: ../IkiWiki/Plugin/aggregate.pm:301 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:311 +#: ../IkiWiki/Plugin/aggregate.pm:307 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:317 +#: ../IkiWiki/Plugin/aggregate.pm:313 msgid "feed crashed XML::Feed!" msgstr "nguồn tin đã gây ra XML::Feed sụp đổ." -#: ../IkiWiki/Plugin/aggregate.pm:391 +#: ../IkiWiki/Plugin/aggregate.pm:387 #, perl-format msgid "creating new page %s" msgstr "đang tạo trang mới %s" @@ -148,22 +148,22 @@ msgstr "Không có liên kết bị ngắt nào." msgid "%s parameter is required" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:40 +#: ../IkiWiki/Plugin/edittemplate.pm:41 #, fuzzy msgid "template not specified" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/edittemplate.pm:43 +#: ../IkiWiki/Plugin/edittemplate.pm:44 #, fuzzy msgid "match not specified" msgstr "chưa xác định tên tập tin bộ bao bọc" -#: ../IkiWiki/Plugin/edittemplate.pm:48 +#: ../IkiWiki/Plugin/edittemplate.pm:49 #, perl-format msgid "edittemplate %s registered for %s" msgstr "" -#: ../IkiWiki/Plugin/edittemplate.pm:110 +#: ../IkiWiki/Plugin/edittemplate.pm:111 #, fuzzy msgid "failed to process" msgstr "mẫu không xử lý được:" @@ -227,7 +227,7 @@ msgstr "" msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:102 +#: ../IkiWiki/Plugin/inline.pm:249 ../IkiWiki/Render.pm:99 msgid "Discussion" msgstr "Thảo luận" @@ -250,17 +250,17 @@ msgstr "%s bị %s khoá nên không thể sửa được" 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:124 +#: ../IkiWiki/Plugin/meta.pm:119 #, fuzzy msgid "stylesheet not found" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/meta.pm:148 +#: ../IkiWiki/Plugin/meta.pm:143 #, fuzzy msgid "redir page not found" msgstr "không tìm thấy mẫu %s" -#: ../IkiWiki/Plugin/meta.pm:161 +#: ../IkiWiki/Plugin/meta.pm:156 #, fuzzy msgid "redir cycle is not allowed" msgstr "không tìm thấy mẫu %s" @@ -397,6 +397,16 @@ msgstr "" msgid "at noon on %A" msgstr "" +#: ../IkiWiki/Plugin/recentchanges.pm:74 +#, fuzzy +msgid "missing page" +msgstr "mẫu thiếu tham số id" + +#: ../IkiWiki/Plugin/recentchanges.pm:76 +#, perl-format +msgid "The page %s does not exist." +msgstr "" + #: ../IkiWiki/Plugin/search.pm:34 #, perl-format msgid "Must specify %s when using the search plugin" @@ -526,47 +536,47 @@ msgstr "" msgid "getctime not implemented" msgstr "chưa thực hiện getctime" -#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297 +#: ../IkiWiki/Render.pm:273 ../IkiWiki/Render.pm:294 #, perl-format msgid "skipping bad filename %s" msgstr "đang bỏ qua tên tập tin sai %s" -#: ../IkiWiki/Render.pm:339 +#: ../IkiWiki/Render.pm:343 #, perl-format msgid "removing old page %s" msgstr "đang gỡ bỏ trang cũ %s" -#: ../IkiWiki/Render.pm:372 +#: ../IkiWiki/Render.pm:384 #, perl-format msgid "scanning %s" msgstr "đang quét %s" -#: ../IkiWiki/Render.pm:377 +#: ../IkiWiki/Render.pm:389 #, perl-format msgid "rendering %s" msgstr "đang vẽ %s" -#: ../IkiWiki/Render.pm:389 +#: ../IkiWiki/Render.pm:410 #, perl-format msgid "rendering %s, which links to %s" msgstr "đang vẽ %s mà liên kết tới %s" -#: ../IkiWiki/Render.pm:406 +#: ../IkiWiki/Render.pm:431 #, perl-format msgid "rendering %s, which depends on %s" msgstr "đang vẽ %s mà phụ thuộc vào %s" -#: ../IkiWiki/Render.pm:444 +#: ../IkiWiki/Render.pm:470 #, perl-format msgid "rendering %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:456 +#: ../IkiWiki/Render.pm:482 #, perl-format msgid "removing %s, no longer rendered by %s" msgstr "đang gỡ bỏ %s, không còn được vẽ lại bởi %s" -#: ../IkiWiki/Render.pm:482 +#: ../IkiWiki/Render.pm:508 #, perl-format msgid "ikiwiki: cannot render %s" msgstr "ikiwiki: không thể vẽ %s" @@ -646,7 +656,7 @@ msgstr "Lỗi" #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:767 +#: ../IkiWiki.pm:750 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "vòng lặp tiền xử lý %s được phát hiện trên %s ở độ sâu %i" -- cgit v1.2.3 From d8d2b316928e04d95f3abd4c392ba44403837837 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 15:05:31 -0500 Subject: fix broken link --- doc/bugs/taint_issue_with_regular_expressions.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/bugs/taint_issue_with_regular_expressions.mdwn b/doc/bugs/taint_issue_with_regular_expressions.mdwn index 6544c8aae..8fe411e5f 100644 --- a/doc/bugs/taint_issue_with_regular_expressions.mdwn +++ b/doc/bugs/taint_issue_with_regular_expressions.mdwn @@ -12,7 +12,7 @@ which is exactly the same regular expression drawn out as a constant. It appear > hole. It seems more likely that perl containes to have taint flag bugs > even in 5.8. See also: [[prune_causing_taint_mode_failures]], > [[Insecure_dependency_in_mkdir]], -> [[Insecure_dependency_in_eval_while_running_with_-T_switch.mdwn]], +> [[Insecure_dependency_in_eval_while_running_with_-T_switch]], > and especially [[debbug 411786]] > > The last of those was the last straw for me, and I disabled taint -- cgit v1.2.3 From 38affb0c1c4e2b89beb63d6f8dc3f172eee7bd02 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 15:17:15 -0500 Subject: add aggregate locking functions --- IkiWiki/Plugin/aggregate.pm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm index 0f50fab06..cfc4ec955 100644 --- a/IkiWiki/Plugin/aggregate.pm +++ b/IkiWiki/Plugin/aggregate.pm @@ -495,4 +495,26 @@ sub htmlfn ($) { #{{{ return shift().".".$config{htmlext}; } #}}} +my $aggregatelock; + +sub lockaggregate () { #{{{ + # Take an exclusive lock to prevent multiple concurrent aggregators. + # Returns true if the lock was aquired. + if (! -d $config{wikistatedir}) { + mkdir($config{wikistatedir}); + } + open($aggregatelock, '>', "$config{wikistatedir}/aggregatelock") || + error ("cannot open to $config{wikistatedir}/aggregatelock: $!"); + if (! flock($aggregatelock, 2 | 4)) { # LOCK_EX | LOCK_NB + close($aggregatelock) || error("failed closing aggregatelock: $!"); + return 0; + } + return 1; +} #}}} + +sub unlockaggregate () { #{{{ + return close($aggregatelock) if $aggregatelock; + return; +} #}}} + 1 -- cgit v1.2.3 From 9d54cc4659248f9820f47a021b694405d75404a8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 16:48:26 -0500 Subject: implement aggregate_locking design Now aggregation will not lock the wiki. Any changes made during aggregaton are merged in with the changed state accumulated while aggregating. A separate lock file prevents multiple concurrent aggregators. Garbage collection of orphaned guids is much improved. loadstate() is only called once per process, so tricky support for reloading wiki state is not needed. (Tested fairly thuroughly.) --- IkiWiki/Plugin/aggregate.pm | 181 +++++++++++++++++++++++++++------------- debian/changelog | 7 +- doc/todo/aggregate_locking.mdwn | 6 +- po/ikiwiki.pot | 30 +++---- 4 files changed, 146 insertions(+), 78 deletions(-) diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm index cfc4ec955..ba40ee6bc 100644 --- a/IkiWiki/Plugin/aggregate.pm +++ b/IkiWiki/Plugin/aggregate.pm @@ -33,33 +33,62 @@ sub getopt () { #{{{ sub checkconfig () { #{{{ if ($config{aggregate} && ! ($config{post_commit} && IkiWiki::commit_hook_enabled())) { - if (! IkiWiki::lockwiki(0)) { - debug("wiki is locked by another process, not aggregating"); - exit 1; - } - + # See if any feeds need aggregation. loadstate(); - IkiWiki::loadindex(); - aggregate(); - expire(); - savestate(); - clearstate(); + my @feeds=needsaggregate(); + return unless @feeds; + if (! lockaggregate()) { + debug("an aggregation process is already running"); + return; + } + # force a later rebuild of source pages + $IkiWiki::forcerebuild{$_->{sourcepage}}=1 + foreach @feeds; + + # Fork a child process to handle the aggregation. + # The parent process will then handle building the + # result. This avoids messy code to clear state + # accumulated while aggregating. + defined(my $pid = fork) or error("Can't fork: $!"); + if (! $pid) { + IkiWiki::loadindex(); + + # Aggregation happens without the main wiki lock + # being held. This allows editing pages etc while + # aggregation is running. + aggregate(@feeds); + + IkiWiki::lockwiki; + # Merge changes, since aggregation state may have + # changed on disk while the aggregation was happening. + mergestate(); + expire(); + savestate(); + IkiWiki::unlockwiki; + exit 0; + } + waitpid($pid,0); + if ($?) { + error "aggregation failed with code $?"; + } - IkiWiki::unlockwiki(); + clearstate(); + unlockaggregate(); } } #}}} sub needsbuild (@) { #{{{ my $needsbuild=shift; - loadstate(); # if not already loaded + loadstate(); foreach my $feed (values %feeds) { if (exists $pagesources{$feed->{sourcepage}} && grep { $_ eq $pagesources{$feed->{sourcepage}} } @$needsbuild) { - # Mark all feeds originating on this page as removable; - # preprocess will unmark those that still exist. - remove_feeds($feed->{sourcepage}); + # Mark all feeds originating on this page as + # not yet seen; preprocess will unmark those that + # still exist. + markunseen($feed->{sourcepage}); } } } # }}} @@ -92,8 +121,7 @@ sub preprocess (@) { #{{{ $feed->{updateinterval}=defined $params{updateinterval} ? $params{updateinterval} * 60 : 15 * 60; $feed->{expireage}=defined $params{expireage} ? $params{expireage} : 0; $feed->{expirecount}=defined $params{expirecount} ? $params{expirecount} : 0; - delete $feed->{remove}; - delete $feed->{expired}; + delete $feed->{unseen}; $feed->{lastupdate}=0 unless defined $feed->{lastupdate}; $feed->{numposts}=0 unless defined $feed->{numposts}; $feed->{newposts}=0 unless defined $feed->{newposts}; @@ -123,16 +151,27 @@ sub delete (@) { #{{{ # Remove feed data for removed pages. foreach my $file (@files) { my $page=pagename($file); - remove_feeds($page); + markunseen($page); + } +} #}}} + +sub markunseen ($) { #{{{ + my $page=shift; + + foreach my $id (keys %feeds) { + if ($feeds{$id}->{sourcepage} eq $page) { + $feeds{$id}->{unseen}=1; + } } } #}}} my $state_loaded=0; + sub loadstate () { #{{{ return if $state_loaded; $state_loaded=1; if (-e "$config{wikistatedir}/aggregate") { - open(IN, "<", "$config{wikistatedir}/aggregate") || + open(IN, "$config{wikistatedir}/aggregate") || die "$config{wikistatedir}/aggregate: $!"; while () { $_=IkiWiki::possibly_foolish_untaint($_); @@ -166,32 +205,13 @@ sub loadstate () { #{{{ sub savestate () { #{{{ return unless $state_loaded; + garbage_collect(); eval q{use HTML::Entities}; error($@) if $@; my $newfile="$config{wikistatedir}/aggregate.new"; my $cleanup = sub { unlink($newfile) }; - open (OUT, ">", $newfile) || error("open $newfile: $!", $cleanup); + open (OUT, ">$newfile") || error("open $newfile: $!", $cleanup); foreach my $data (values %feeds, values %guids) { - if ($data->{remove}) { - if ($data->{name}) { - foreach my $guid (values %guids) { - if ($guid->{feed} eq $data->{name}) { - $guid->{remove}=1; - } - } - } - else { - unlink pagefile($data->{page}) - if exists $data->{page}; - } - next; - } - elsif ($data->{expired} && exists $data->{page}) { - unlink pagefile($data->{page}); - delete $data->{page}; - delete $data->{md5}; - } - my @line; foreach my $field (keys %$data) { if ($field eq "name" || $field eq "feed" || @@ -212,6 +232,63 @@ sub savestate () { #{{{ error("rename $newfile: $!", $cleanup); } #}}} +sub garbage_collect () { #{{{ + foreach my $name (keys %feeds) { + # remove any feeds that were not seen while building the pages + # that used to contain them + if ($feeds{$name}->{unseen}) { + delete $feeds{$name}; + } + } + + foreach my $guid (values %guids) { + # any guid whose feed is gone should be removed + if (! exists $feeds{$guid->{feed}}) { + unlink pagefile($guid->{page}) + if exists $guid->{page}; + delete $guids{$guid->{guid}}; + } + # handle expired guids + elsif ($guid->{expired} && exists $guid->{page}) { + unlink pagefile($guid->{page}); + delete $guid->{page}; + delete $guid->{md5}; + } + } +} #}}} + +sub mergestate () { #{{{ + # Load the current state in from disk, and merge into it + # values from the state in memory that might have changed + # during aggregation. + my %myfeeds=%feeds; + my %myguids=%guids; + clearstate(); + loadstate(); + + # All that can change in feed state during aggregation is a few + # fields. + foreach my $name (keys %myfeeds) { + if (exists $feeds{$name}) { + foreach my $field (qw{message lastupdate numposts + newposts error}) { + $feeds{$name}->{$field}=$myfeeds{$name}->{$field}; + } + } + } + + # New guids can be created during aggregation. + # It's also possible that guids were removed from the on-disk state + # while the aggregation was in process. That would only happen if + # their feed was also removed, so any removed guids added back here + # will be garbage collected later. + foreach my $guid (keys %myguids) { + if (! exists $guids{$guid}) { + $guids{$guid}=$myguids{$guid}; + } + } +} #}}} + sub clearstate () { #{{{ %feeds=(); %guids=(); @@ -249,7 +326,12 @@ sub expire () { #{{{ } } #}}} -sub aggregate () { #{{{ +sub needsaggregate () { #{{{ + return values %feeds if $config{rebuild}; + return grep { time - $_->{lastupdate} >= $_->{updateinterval} } values %feeds; +} #}}} + +sub aggregate (@) { #{{{ eval q{use XML::Feed}; error($@) if $@; eval q{use URI::Fetch}; @@ -257,15 +339,12 @@ sub aggregate () { #{{{ eval q{use HTML::Entities}; error($@) if $@; - foreach my $feed (values %feeds) { - next unless $config{rebuild} || - time - $feed->{lastupdate} >= $feed->{updateinterval}; + foreach my $feed (@_) { $feed->{lastupdate}=time; $feed->{newposts}=0; $feed->{message}=sprintf(gettext("processed ok at %s"), displaytime($feed->{lastupdate})); $feed->{error}=0; - $IkiWiki::forcerebuild{$feed->{sourcepage}}=1; debug(sprintf(gettext("checking feed %s ..."), $feed->{name})); @@ -473,18 +552,6 @@ sub htmlabs ($$) { #{{{ return $ret; } #}}} -sub remove_feeds () { #{{{ - my $page=shift; - - my %removed; - foreach my $id (keys %feeds) { - if ($feeds{$id}->{sourcepage} eq $page) { - $feeds{$id}->{remove}=1; - $removed{$id}=1; - } - } -} #}}} - sub pagefile ($) { #{{{ my $page=shift; diff --git a/debian/changelog b/debian/changelog index 99ee5cdc2..1266666e3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,19 +6,22 @@ ikiwiki (2.31) UNRELEASED; urgency=low that contributes to a page's content and using the youngest of them all, as well as special cases for things like the version plugin, and it's just too complex to do. + * aggregate: Forking a child broke the one state that mattered: Forcing + the aggregating page to be rebuilt. Fix this. * cgi hooks are now run before ikiwiki state is loaded. * This allows locking the wiki before loading state, which avoids some tricky locking code when saving a web edit. * poll: This plugin turns out to have edited pages w/o doing any locking. Oops. Convert it from a cgi to a sessioncgi hook, which will work much better. - * aggregate: Revert use of forking to not save state, that was not the right - approach. * recentchanges: Improve handling of links on the very static changes pages by thunking to the CGI, which can redirect to the page, or allow it to be created if it doesn't exist. * recentchanges: Exipre all *._change pages, even if the directory they're in has changed. + * aggregate: Lots of changes; aggregation can now run without locking the + wiki, and there is a separate aggregatelock to prevent multiple concurrent + aggregation runs. -- Joey Hess Sat, 02 Feb 2008 23:36:31 -0500 diff --git a/doc/todo/aggregate_locking.mdwn b/doc/todo/aggregate_locking.mdwn index 91df662a7..b6c82e923 100644 --- a/doc/todo/aggregate_locking.mdwn +++ b/doc/todo/aggregate_locking.mdwn @@ -46,16 +46,12 @@ would be loaded, and there would be no reason to worry about aggregating. Or aggregation could be kept in checkconfig, like so: -* lock wiki * load aggregation state -* unlock wiki * get list of feeds needing aggregation * exit if none * attempt to take aggregation lock, exit if another aggregation is happening * fork a child process to do the aggregation - * lock wiki * load wiki state (needed for aggregation to run) - * unlock wiki * aggregate * lock wiki * reload aggregation state @@ -64,3 +60,5 @@ Or aggregation could be kept in checkconfig, like so: * drop aggregation lock * force rebuild of sourcepages of feeds that were aggregated * exit checkconfig and continue with usual refresh process + +[[done]] diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index 69e231ada..62810a687 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: 2008-02-03 14:52-0500\n" +"POT-Creation-Date: 2008-02-03 16:05-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -67,67 +67,67 @@ msgstr "" msgid "You are banned." msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:72 +#: ../IkiWiki/Plugin/aggregate.pm:100 #, perl-format msgid "missing %s parameter" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:100 +#: ../IkiWiki/Plugin/aggregate.pm:127 msgid "new feed" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:114 +#: ../IkiWiki/Plugin/aggregate.pm:141 msgid "posts" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:116 +#: ../IkiWiki/Plugin/aggregate.pm:143 msgid "new" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:232 +#: ../IkiWiki/Plugin/aggregate.pm:307 #, perl-format msgid "expiring %s (%s days old)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:239 +#: ../IkiWiki/Plugin/aggregate.pm:314 #, perl-format msgid "expiring %s" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:265 +#: ../IkiWiki/Plugin/aggregate.pm:343 #, perl-format msgid "processed ok at %s" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:270 +#: ../IkiWiki/Plugin/aggregate.pm:347 #, perl-format msgid "checking feed %s ..." msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:275 +#: ../IkiWiki/Plugin/aggregate.pm:352 #, perl-format msgid "could not find feed at %s" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:290 +#: ../IkiWiki/Plugin/aggregate.pm:367 msgid "feed not found" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:301 +#: ../IkiWiki/Plugin/aggregate.pm:378 #, perl-format msgid "(invalid UTF-8 stripped from feed)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:307 +#: ../IkiWiki/Plugin/aggregate.pm:384 #, perl-format msgid "(feed entities escaped)" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:313 +#: ../IkiWiki/Plugin/aggregate.pm:390 msgid "feed crashed XML::Feed!" msgstr "" -#: ../IkiWiki/Plugin/aggregate.pm:387 +#: ../IkiWiki/Plugin/aggregate.pm:464 #, perl-format msgid "creating new page %s" msgstr "" -- cgit v1.2.3 From 855f28e105ad6f552847891790400f0760d9a631 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 17:48:30 -0500 Subject: removing old patch that was also sent by mail --- doc/bugs/Monotone_rcs_support.mdwn | 182 +------------------------------------ 1 file changed, 1 insertion(+), 181 deletions(-) diff --git a/doc/bugs/Monotone_rcs_support.mdwn b/doc/bugs/Monotone_rcs_support.mdwn index 8eaea11af..866805348 100644 --- a/doc/bugs/Monotone_rcs_support.mdwn +++ b/doc/bugs/Monotone_rcs_support.mdwn @@ -75,184 +75,4 @@ change emails at all (cgi or otherwise), so I tested by adding warn() calls. Th few things that needed to be fixed. Support is much closer now (including a simple default monotone lua hook). -When I stick this diff inline into the page, I have to indent it by four spaces, and that's fine. -But markdown seems to still be interpreting parts of it (e.g. the diff url) in strange ways. I -think it is the square brackets. - - Index: IkiWiki/Rcs/monotone.pm - =================================================================== - --- IkiWiki/Rcs/monotone.pm (revision 4252) - +++ IkiWiki/Rcs/monotone.pm (working copy) - @@ -186,8 +186,9 @@ - check_config(); - - if (defined($config{mtnsync}) && $config{mtnsync}) { - + check_mergerc(); - if (system("mtn", "--root=$config{mtnrootdir}", "sync", - - "--quiet", "--ticker=none", - + "--quiet", "--ticker=none", "--rcfile", $config{mtnmergerc}, - "--key", $config{mtnkey}) != 0) { - debug("monotone sync failed before update"); - } - @@ -342,10 +343,10 @@ - return $conflict; - } - if (defined($config{mtnsync}) && $config{mtnsync}) { - - if (system("mtn", "--root=$config{mtnrootdir}", "sync", - + if (system("mtn", "--root=$config{mtnrootdir}", "push", - "--quiet", "--ticker=none", "--key", - $config{mtnkey}) != 0) { - - debug("monotone sync failed"); - + debug("monotone push failed"); - } - } - - @@ -431,10 +432,28 @@ - my @changed_files = get_changed_files($automator, $rev); - my $file; - - + my ($out, $err) = $automator->call("parents", $rev); - + my @parents = ($out =~ m/^($sha1_pattern)$/); - + my $parent = $parents[0]; - + - foreach $file (@changed_files) { - - push @pages, { - - page => pagename($file), - - } if length $file; - + if (length($file)) { - + if (defined $config{diffurl} and (@parents == 1)) { - + my $diffurl=$config{diffurl}; - + $diffurl=~s/\[\[r1\]\]/$parent/g; - + $diffurl=~s/\[\[r2\]\]/$rev/g; - + $diffurl=~s/\[\[file\]\]/$file/g; - + push @pages, { - + page => pagename($file), - + diffurl => $diffurl, - + }; - + } - + else { - + push @pages, { - + page => pagename($file), - + }; - + } - + } - } - - push @ret, { - @@ -487,6 +506,18 @@ - - my @changed_pages = get_changed_files($automator, $rev); - - + my ($out, $err) = $automator->call("parents", $rev); - + my @parents = ($out =~ m/^($sha1_pattern)$/); - + my $parent = $parents[0]; - + - + my $diff; - + - + if (@parents == 1) { - + $automator->setOpts("r", $parent, "r", $rev); - + ($out, $err) = $automator->call("content_diff"); - + $diff = $out; - + } - + - $automator->close(); - - require IkiWiki::UserInfo; - @@ -495,7 +526,7 @@ - return $message; - }, - sub { - - `mtn --root=$config{mtnrootdir} au content_diff -r $rev`; - + return $diff; - }, - $user, @changed_pages); - } #}}} - @@ -604,4 +635,9 @@ - return true - end - } - + function note_netsync_revision_received(new_id, revision, certs, session_id) - + if (program_exists_in_path("ikiwiki-netsync-hook")) then - + execute("ikiwiki-netsync-hook", new_id) - + end - + end - EOF - Index: IkiWiki/Wrapper.pm - =================================================================== - --- IkiWiki/Wrapper.pm (revision 4252) - +++ IkiWiki/Wrapper.pm (working copy) - @@ -46,6 +46,16 @@ - addenv("REV", s); - EOF - } - + if ($config{rcs} eq "monotone" && $config{notify}) { - + # Support running directly as hooks/post-commit by passing - + # $1 in REV in the environment. - + $envsave.=<<"EOF" - + if (argc == 2) - + addenv("REV", argv[1]); - + else if ((s=getenv("REV"))) - + addenv("REV", s); - +EOF - + } - if ($config{rcs} eq "tla" && $config{notify}) { - $envsave.=<<"EOF" - if ((s=getenv("ARCH_VERSION"))) - Index: doc/rcs/monotone.mdwn - =================================================================== - --- doc/rcs/monotone.mdwn (revision 4252) - +++ doc/rcs/monotone.mdwn (working copy) - @@ -1,16 +1,13 @@ - -[monotone](http://monotone.ca/) is a distributed revision control system. - -Ikiwiki supports storing a wiki in Monotone and editing it using the [[cgi]] interface. - +[Monotone](http://monotone.ca/) is a distributed revision control system. - +Ikiwiki supports storing a wiki in a Monotone repository and editing it using the [[cgi]] interface. - It will use the Monotone logs to generate the [[RecentChanges]] page. - - -The monotone support requires the Monotone perl module (from the contrib/ directory - -in the monotone source) to be installed. In particular, it needs version 0.03 or higher of that module. - +The monotone support in Ikiwiki requires the Monotone perl module to be installed - +(available from the contrib/ directory in the monotone source). - +In particular, it needs version 0.03 or higher of that module. - The module is available from the monotone source repository at: - - - -Monotone support works, but there are still a few minor missing bits (listed here so they are not forgotten): - +At present the [[post-commit]] hook support is implemented but only partially tested. - - -* At the moment there are no links to display diffs between revisions. It shouldn't be hard to add links to a [ViewMTN](http://grahame.angrygoats.net/moinmoin/ViewMTN) instance, but it hasn't been done yet. - -* The [[post-commit]] hook support, so that Ikiwiki sends change notifications when people commit using Monotone rather than the web interface, is partially implemented and untested. - -* Documentation (this page) could be improved. - - - There is also a mismatch between the way Ikiwiki handles conflicts and the way Monotone handles conflicts. At present, if there is a conflict, then Ikiwiki will commit a revision with conflict markers before presenting it to the user. This is ugly, but there is no clean way to fix it at present. - Index: doc/ikiwiki.setup - =================================================================== - --- doc/ikiwiki.setup (revision 4252) - +++ doc/ikiwiki.setup (working copy) - @@ -46,6 +46,8 @@ - # Monotone stuff - #rcs => "monotone", - #mtnkey => "web\@machine.company.com", - + #historyurl => "http://viewmtn.company.com/", - + #diffurl => "http://viewmtn.company.com/revision/diff/[[r1]]/with/[[r2]]/[[file]]", - # Set if you want the wiki to sync on update and commit. - #mtnsync => 0, - # The path to your workspace (defaults to the srcdir itself) - @@ -88,6 +90,16 @@ - # # Enable mail notifications of commits. - # notify => 1, - #}, - + #{ - + # # The monotone netsync revision received wrapper. - + # # Note that you also need to install a lua - + # # hook into monotone to make this work - + # # see: http://ikiwiki.info/rcs/monotone/ - + # wrapper => "/usr/local/bin/ikiwiki-netsync-hook", - + # wrappermode => "04755", - + # # Enable mail notifications of commits. - + # notify => 1, - + #}, - ], - - # Generate rss feeds for blogs? - +> We handled this patchset by mail, I applied the still-relevant parts. --[[Joey]] -- cgit v1.2.3 From 749c1e36d90998043c1988a49894d9ee23e60ec4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 18:14:39 -0500 Subject: * monotone changes by Brian May: - On commits, replace "mtn sync" bidirectional with "mtn push" single direction. No need to pull changes when doing a commit. mtn sync is still called in rcs_update. - Support for viewing differences via patches using viewmtn. --- IkiWiki/Rcs/monotone.pm | 28 ++++++-- debian/changelog | 5 ++ doc/bugs/Monotone_rcs_support.mdwn | 134 ++++++++++++++++--------------------- doc/ikiwiki.setup | 2 + doc/rcs/monotone.mdwn | 19 ++++-- 5 files changed, 98 insertions(+), 90 deletions(-) diff --git a/IkiWiki/Rcs/monotone.pm b/IkiWiki/Rcs/monotone.pm index 0ae2c1a32..a6c850f0d 100644 --- a/IkiWiki/Rcs/monotone.pm +++ b/IkiWiki/Rcs/monotone.pm @@ -342,10 +342,10 @@ sub rcs_commit ($$$;$$) { #{{{ return $conflict; } if (defined($config{mtnsync}) && $config{mtnsync}) { - if (system("mtn", "--root=$config{mtnrootdir}", "sync", + if (system("mtn", "--root=$config{mtnrootdir}", "push", "--quiet", "--ticker=none", "--key", $config{mtnkey}) != 0) { - debug("monotone sync failed"); + debug("monotone push failed"); } } @@ -431,10 +431,28 @@ sub rcs_recentchanges ($) { #{{{ my @changed_files = get_changed_files($automator, $rev); my $file; + my ($out, $err) = $automator->call("parents", $rev); + my @parents = ($out =~ m/^($sha1_pattern)$/); + my $parent = $parents[0]; + foreach $file (@changed_files) { - push @pages, { - page => pagename($file), - } if length $file; + next unless length $file; + + if (defined $config{diffurl} and (@parents == 1)) { + my $diffurl=$config{diffurl}; + $diffurl=~s/\[\[r1\]\]/$parent/g; + $diffurl=~s/\[\[r2\]\]/$rev/g; + $diffurl=~s/\[\[file\]\]/$file/g; + push @pages, { + page => pagename($file), + diffurl => $diffurl, + }; + } + else { + push @pages, { + page => pagename($file), + } + } } push @ret, { diff --git a/debian/changelog b/debian/changelog index 1266666e3..a1100500f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -22,6 +22,11 @@ ikiwiki (2.31) UNRELEASED; urgency=low * aggregate: Lots of changes; aggregation can now run without locking the wiki, and there is a separate aggregatelock to prevent multiple concurrent aggregation runs. + * monotone changes by Brian May: + - On commits, replace "mtn sync" bidirectional with "mtn push" single + direction. No need to pull changes when doing a commit. mtn sync + is still called in rcs_update. + - Support for viewing differences via patches using viewmtn. -- Joey Hess Sat, 02 Feb 2008 23:36:31 -0500 diff --git a/doc/bugs/Monotone_rcs_support.mdwn b/doc/bugs/Monotone_rcs_support.mdwn index 866805348..d5cc37c27 100644 --- a/doc/bugs/Monotone_rcs_support.mdwn +++ b/doc/bugs/Monotone_rcs_support.mdwn @@ -1,78 +1,56 @@ -#Ikiwiki plugin for the Monotone revision control system. - -I've just made a patch to the ikiwiki code that allows it to use the [[rcs/Monotone]] revision control system. It is available at: - - - -At the moment it is basically complete. At present rcs_notify() is implemeted but untested, the rest is implemented and tested. - -The current version of the patch handles conflicts through the web interface. It is still not perfect as it will break if there is a rename that conflicts with a web change (but so will the other Rcs plugins I think). It also commits a revision with conflict markers if there is a conflict requiring such markers... ick. - -Note: This patch requires a rather recent Monotone perl module (18 August 2007 or later). It is available from the monotone repository here: . - -> The setup instructions to add 40 lines of code to monotonerc is pretty frightning stuff. -> Is there some way this can be automated? --[[Joey]] - ->> I've committed a bunch of this to monotone so that in future it could be removed. ->> I've also just fixed this so it is in a separate, automagically generated, rc file. - ->>> Fair enough. Didn't realize you were a monotone committer. :-) - ->>>> I am, but still a little newish. Feedback is good. In particular, this is my first major bit of PERL. - -> Having rcs_commit return a warning message when there's an unresolved conflict -> isn't right; that message will populate the page edit box. You might want -> to use the error() function here? - ->> It should never reach that case, so I have changed that to error. - -> There'an incomplete comment ending with "note, this relies on the fact that" - ->> erg... sorry, fixed. - -[[tag patch]] - ->> I've [[accepted|done]] this patch, thank you! - ->>> Thanks for committing it. I hate keeping my own diffs. :) - ->> I did make a few changes. Please review, and make sure it still works ->> (a test case like we have for some of the other RCSes would be nice..) - ->>> Tested. It still works at least as well as it did. I'll try to get to a test case soon. ->>> In checking the source I noticed a few bogus comments I left in when editing, ->>> and a bug in page adding. ->>> Here is a small patch for them: - ->>>> applied - -Here is another patch. It fixes a FIXME you added. I was using $file within backticks because -I was getting an error trying to do it right. I've figured out the error, and now do it right. This -should also speed things up (very slightly) - -> applied - ->> BTW, will all the monotone output parsing work if LANG != C? - ->>> It should (he says crossing fingers). ->>> In the places where I do any complex parsing I'm using a special ->>> version of the mtn commands designed for scripting. They have a ->>> stable, easy to parse, output that doesn't get translated (I think). - ->> Do monotone post-commit hooks actually use REV? - ->>> Monotone post-commit hooks are written in Lua and can do ->>> what they please. Setting the REV environment var before ->>> calling Ikiwiki seems reasonable, but I've not written the ->>> Lua hook. - ->>>> So the rcs_notify support is not just untested, but can't work ->>>> at all w/o further development. - -I've just done this further development... The following patch adds support for diffurls. -I've also partially tested the commit message support. I was unable to get Ikiwiki to send -change emails at all (cgi or otherwise), so I tested by adding warn() calls. There were a -few things that needed to be fixed. Support is much closer now (including a simple default -monotone lua hook). - -> We handled this patchset by mail, I applied the still-relevant parts. --[[Joey]] +The Monotone module still lacks support for setting up a post-commit hook, +so commits made via monotone will not automatically update the wiki. + +Here for future reference is the most recent version of support for +that I've been sent. It's not yet working; there are path issues. --[[Joey]] + +
+diff --git a/IkiWiki/Rcs/monotone.pm b/IkiWiki/Rcs/monotone.pm
+index cde6029..34f8f96 100644
+--- a/IkiWiki/Rcs/monotone.pm
++++ b/IkiWiki/Rcs/monotone.pm
+@@ -186,8 +186,9 @@ sub rcs_update () { #{{{
+ 	check_config();
+ 
+ 	if (defined($config{mtnsync}) && $config{mtnsync}) {
++		check_mergerc();
+ 		if (system("mtn", "--root=$config{mtnrootdir}", "sync",
+-		           "--quiet", "--ticker=none", 
++		           "--quiet", "--ticker=none", "--rcfile", $config{mtnmergerc},
+ 		           "--key", $config{mtnkey}) != 0) {
+ 			debug("monotone sync failed before update");
+ 		}
+@@ -604,4 +605,9 @@ __DATA__
+ 	           return true
+ 	      end
+ 	}
++	function note_netsync_revision_received(new_id, revision, certs, session_id)
++	    if (program_exists_in_path("ikiwiki-netsync-hook")) then
++	        execute("ikiwiki-netsync-hook", new_id)
++	    end
++	end
+ EOF
+diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm
+index 2103ea5..cff718c 100644
+diff --git a/doc/ikiwiki.setup b/doc/ikiwiki.setup
+index 1377315..0cbe27e 100644
+--- a/doc/ikiwiki.setup
++++ b/doc/ikiwiki.setup
+@@ -88,6 +88,16 @@ use IkiWiki::Setup::Standard {
+ 		#	# Enable mail notifications of commits.
+ 		#	notify => 1,
+ 		#},
++		#{
++		#	# The monotone netsync revision received wrapper.
++		#	# Note that you also need to install a lua
++		#	# hook into monotone to make this work
++		#	# see: http://ikiwiki.info/rcs/monotone/
++		#	wrapper => "/usr/local/bin/ikiwiki-netsync-hook",
++		#	wrappermode => "04755",
++		#	# Enable mail notifications of commits.
++		#	notify => 1,
++		#},
+ 	],
+ 
+ 	# Generate rss feeds for blogs?
+
diff --git a/doc/ikiwiki.setup b/doc/ikiwiki.setup index f808be2c2..059485d38 100644 --- a/doc/ikiwiki.setup +++ b/doc/ikiwiki.setup @@ -50,6 +50,8 @@ use IkiWiki::Setup::Standard { # Monotone stuff #rcs => "monotone", #mtnkey => "web\@machine.company.com", + #historyurl => "http://viewmtn.example.com/", + #diffurl => "http://viewmtn.example.com/revision/diff/[[r1]]/with/[[r2]]/[[file]]", # Set if you want the wiki to sync on update and commit. #mtnsync => 0, # The path to your workspace (defaults to the srcdir itself) diff --git a/doc/rcs/monotone.mdwn b/doc/rcs/monotone.mdwn index 1d3cd2bc4..f9f474291 100644 --- a/doc/rcs/monotone.mdwn +++ b/doc/rcs/monotone.mdwn @@ -1,15 +1,20 @@ -[monotone](http://monotone.ca/) is a distributed revision control system. -Ikiwiki supports storing a wiki in Monotone and editing it using the [[cgi]] interface. -It will use the Monotone logs to generate the [[RecentChanges]] page. +[Monotone](http://monotone.ca/) is a distributed revision control system. +Ikiwiki supports storing a wiki in a Monotone repository and editing it +using the [[cgi]] interface. It will use the Monotone logs to generate the +[[RecentChanges]] page. -The monotone support requires the Monotone perl module (from the contrib/ directory -in the monotone source) to be installed. In particular, it needs version 0.03 or higher of that module. +The monotone support in ikiwiki requires the Monotone perl module to be +installed. (It's available from the contrib/ directory in the monotone +source.) In particular, it needs version 0.03 or higher of that module. The module is available from the monotone source repository at: Monotone support works, but there are still a few minor missing bits (listed here so they are not forgotten): -* At the moment there are no links to display diffs between revisions. It shouldn't be hard to add links to a [ViewMTN](http://grahame.angrygoats.net/moinmoin/ViewMTN) instance, but it hasn't been done yet. +* The [[post-commit]] hook support is not yet completly implemented. * Documentation (this page) could be improved. -There is also a mismatch between the way Ikiwiki handles conflicts and the way Monotone handles conflicts. At present, if there is a conflict, then Ikiwiki will commit a revision with conflict markers before presenting it to the user. This is ugly, but there is no clean way to fix it at present. +There is also a mismatch between the way Ikiwiki handles conflicts and the +way Monotone handles conflicts. At present, if there is a conflict, then +Ikiwiki will commit a revision with conflict markers before presenting it +to the user. This is ugly, but there is no clean way to fix it at present. -- cgit v1.2.3 From 27d5f91a185a819d8a42215105cc4cd8d92c49b0 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 18:16:19 -0500 Subject: remove spurious EOF --- IkiWiki/Rcs/monotone.pm | 1 - 1 file changed, 1 deletion(-) diff --git a/IkiWiki/Rcs/monotone.pm b/IkiWiki/Rcs/monotone.pm index a6c850f0d..c4a6d9864 100644 --- a/IkiWiki/Rcs/monotone.pm +++ b/IkiWiki/Rcs/monotone.pm @@ -574,4 +574,3 @@ __DATA__ return true end } -EOF -- cgit v1.2.3 From 1c605106001de2e88dca455e45ed9a1d36a837ba Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 18:23:31 -0500 Subject: add monotone to list --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index e2804b413..2702c2936 100644 --- a/debian/control +++ b/debian/control @@ -13,7 +13,7 @@ Vcs-Browser: http://git.ikiwiki.info/?p=ikiwiki Package: ikiwiki Architecture: all Depends: ${perl:Depends}, markdown, libhtml-template-perl, libhtml-parser-perl, liburi-perl -Recommends: gcc | c-compiler, libc6-dev | libc-dev, subversion | git-core | tla | bzr (>= 0.91) | mercurial, libxml-simple-perl, libnet-openid-consumer-perl, liblwpx-paranoidagent-perl, libtimedate-perl, libhtml-scrubber-perl, libcgi-formbuilder-perl (>= 3.05), libtime-duration-perl, libcgi-session-perl (>= 4.14-1), libmail-sendmail-perl +Recommends: gcc | c-compiler, libc6-dev | libc-dev, subversion | git-core | tla | bzr (>= 0.91) | mercurial | monotone, libxml-simple-perl, libnet-openid-consumer-perl, liblwpx-paranoidagent-perl, libtimedate-perl, libhtml-scrubber-perl, libcgi-formbuilder-perl (>= 3.05), libtime-duration-perl, libcgi-session-perl (>= 4.14-1), libmail-sendmail-perl Suggests: viewvc | gitweb | viewcvs, hyperestraier, librpc-xml-perl, libtext-wikiformat-perl, python, python-docutils, polygen, tidy, libxml-feed-perl, libmailtools-perl, perlmagick, libfile-mimeinfo-perl, libcrypt-ssleay-perl, liblocale-gettext-perl (>= 1.05-1), libtext-typography-perl, libtext-csv-perl, libdigest-sha1-perl, graphviz Conflicts: ikiwiki-plugin-table Replaces: ikiwiki-plugin-table -- cgit v1.2.3 From 408419ca3e76aa629222af81694042c2fb02d8ec Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 19:47:01 -0500 Subject: remove another commit mail mention --- IkiWiki/CGI.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 3f588e427..1ec23df68 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -526,7 +526,7 @@ sub cgi_editpage ($$) { #{{{ # Prevent deadlock with post-commit hook by # signaling to it that it should not try to - # do anything (except send commit mails). + # do anything. disable_commit_hook(); $conflict=rcs_commit($file, $message, $form->field("rcsinfo"), -- cgit v1.2.3 From a3f224cb6cf82b89cf0cbadbd661fd5d71ebf8ae Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 19:51:00 -0500 Subject: move saveindex call into preview block This call is only present to handle the case where previewing a page actually causes files to be rendered. --- IkiWiki/CGI.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 1ec23df68..4d4464c28 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -357,6 +357,8 @@ sub cgi_editpage ($$) { #{{{ linkify($page, "", preprocess($page, $page, filter($page, $page, $content), 0, 1)))); + # previewing may have created files on disk + saveindex(); } elsif ($form->submitted eq "Save Page") { $form->tmpl_param("page_preview", ""); @@ -448,7 +450,6 @@ sub cgi_editpage ($$) { #{{{ } showform($form, \@buttons, $session, $q); - saveindex(); } else { # save page -- cgit v1.2.3 From 4f75dccb71e64e3b5ca0cd4cb04c601adc7360aa Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 06:11:50 -0500 Subject: web commit by http://edward.myopenid.com/: prefix diff with a tab on each line so markdown treats it as code --- ...nline_plugin_option_to_show_full_page_path.mdwn | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/doc/todo/Inline_plugin_option_to_show_full_page_path.mdwn b/doc/todo/Inline_plugin_option_to_show_full_page_path.mdwn index ab9cd61e4..30490e9d3 100644 --- a/doc/todo/Inline_plugin_option_to_show_full_page_path.mdwn +++ b/doc/todo/Inline_plugin_option_to_show_full_page_path.mdwn @@ -15,14 +15,14 @@ Cheers, > that contains the full page name. Then you just use a modified > `inlinepage.tmpl`, that uses that instead of the title. --[[Joey]] -diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm -index 59eabb6..82913ba 100644 ---- a/IkiWiki/Plugin/inline.pm -+++ b/IkiWiki/Plugin/inline.pm -@@ -229,6 +229,7 @@ sub preprocess_inline (@) { #{{{ - $template->param(content => $content); - } - $template->param(pageurl => urlto(bestlink($params{page}, $page), $params{destpage})); -+ $template->param(page => $page); - $template->param(title => pagetitle(basename($page))); - $template->param(ctime => displaytime($pagectime{$page}, $params{timeformat})); + diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm + index 59eabb6..82913ba 100644 + --- a/IkiWiki/Plugin/inline.pm + +++ b/IkiWiki/Plugin/inline.pm + @@ -229,6 +229,7 @@ sub preprocess_inline (@) { #{{{ + $template->param(content => $content); + } + $template->param(pageurl => urlto(bestlink($params{page}, $page), $params{destpage})); + + $template->param(page => $page); + $template->param(title => pagetitle(basename($page))); + $template->param(ctime => displaytime($pagectime{$page}, $params{timeformat})); -- cgit v1.2.3 From 46b22b2508804f6d039c5709e14cbebe902b5986 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 16:43:49 -0500 Subject: web commit by http://edward.myopenid.com/: create a watchlist --- doc/users/Edward__95__Betts.mdwn | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 doc/users/Edward__95__Betts.mdwn diff --git a/doc/users/Edward__95__Betts.mdwn b/doc/users/Edward__95__Betts.mdwn new file mode 100644 index 000000000..038c00eb7 --- /dev/null +++ b/doc/users/Edward__95__Betts.mdwn @@ -0,0 +1,3 @@ +My watchlist: + +[[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive=yes]] -- cgit v1.2.3 From b150b1f499fd81defa0712f7a581e46856ac68a3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 16:46:11 -0500 Subject: web commit by http://edward.myopenid.com/: use space instead of underscore --- doc/users/Edward_Betts.mdwn | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 doc/users/Edward_Betts.mdwn diff --git a/doc/users/Edward_Betts.mdwn b/doc/users/Edward_Betts.mdwn new file mode 100644 index 000000000..038c00eb7 --- /dev/null +++ b/doc/users/Edward_Betts.mdwn @@ -0,0 +1,3 @@ +My watchlist: + +[[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive=yes]] -- cgit v1.2.3 From b265861f2d82b9295a9af460feb21b3eb9dcde99 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 16:48:04 -0500 Subject: web commit by http://edward.myopenid.com/: turn on atom --- doc/users/Edward_Betts.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/users/Edward_Betts.mdwn b/doc/users/Edward_Betts.mdwn index 038c00eb7..4eba218a5 100644 --- a/doc/users/Edward_Betts.mdwn +++ b/doc/users/Edward_Betts.mdwn @@ -1,3 +1,3 @@ My watchlist: -[[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive=yes]] +[[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive="yes" atom="yes"]] -- cgit v1.2.3 From cf03646c4dc58b4f290c6adeeb01cc36f0982d7a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 16:50:36 -0500 Subject: web commit by http://edward.myopenid.com/: sort="mtime" --- doc/users/Edward_Betts.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/users/Edward_Betts.mdwn b/doc/users/Edward_Betts.mdwn index 4eba218a5..3beec42f5 100644 --- a/doc/users/Edward_Betts.mdwn +++ b/doc/users/Edward_Betts.mdwn @@ -1,3 +1,3 @@ My watchlist: -[[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive="yes" atom="yes"]] +[[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive="yes" sort="mtime" atom="yes"]] -- cgit v1.2.3 From 147106d755cbae0201e360e7d3e7403e87b9a87c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 17:28:24 -0500 Subject: web commit by http://edward.myopenid.com/: feeds="yes" --- doc/users/Edward_Betts.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/users/Edward_Betts.mdwn b/doc/users/Edward_Betts.mdwn index 3beec42f5..b7ab8102a 100644 --- a/doc/users/Edward_Betts.mdwn +++ b/doc/users/Edward_Betts.mdwn @@ -1,3 +1,3 @@ My watchlist: -[[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive="yes" sort="mtime" atom="yes"]] +[[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive="yes" feeds="yes" sort="mtime" atom="yes"]] -- cgit v1.2.3 From d1f88400f253942bb1cda76022d06055386e3112 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 17:38:49 -0500 Subject: web commit by http://joey.kitenet.net/: test commit, only whitespace changes --- doc/users/Edward_Betts.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/users/Edward_Betts.mdwn b/doc/users/Edward_Betts.mdwn index b7ab8102a..099498a9b 100644 --- a/doc/users/Edward_Betts.mdwn +++ b/doc/users/Edward_Betts.mdwn @@ -1,3 +1,4 @@ My watchlist: [[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive="yes" feeds="yes" sort="mtime" atom="yes"]] + -- cgit v1.2.3 From 6ab06ed7fabc7c0bb5a856e198213b11aad41fbc Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 17:40:10 -0500 Subject: web commit by http://edward.myopenid.com/: do i get an error? --- doc/users/Edward_Betts.mdwn | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/users/Edward_Betts.mdwn b/doc/users/Edward_Betts.mdwn index 099498a9b..b7ab8102a 100644 --- a/doc/users/Edward_Betts.mdwn +++ b/doc/users/Edward_Betts.mdwn @@ -1,4 +1,3 @@ My watchlist: [[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive="yes" feeds="yes" sort="mtime" atom="yes"]] - -- cgit v1.2.3 From a17ac6abc2ece95eadf94b8a0c7dee72fa95fe58 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 17:46:05 -0500 Subject: web commit by http://joey.kitenet.net/: another test commit --- doc/users/Edward_Betts.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/users/Edward_Betts.mdwn b/doc/users/Edward_Betts.mdwn index b7ab8102a..099498a9b 100644 --- a/doc/users/Edward_Betts.mdwn +++ b/doc/users/Edward_Betts.mdwn @@ -1,3 +1,4 @@ My watchlist: [[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive="yes" feeds="yes" sort="mtime" atom="yes"]] + -- cgit v1.2.3 From 2eba6f2138ded82d18af5aca4b290159a72b2c39 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 17:46:39 -0500 Subject: web commit by http://joey.kitenet.net/: and again.. --- doc/users/Edward_Betts.mdwn | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/users/Edward_Betts.mdwn b/doc/users/Edward_Betts.mdwn index 099498a9b..b7ab8102a 100644 --- a/doc/users/Edward_Betts.mdwn +++ b/doc/users/Edward_Betts.mdwn @@ -1,4 +1,3 @@ My watchlist: [[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive="yes" feeds="yes" sort="mtime" atom="yes"]] - -- cgit v1.2.3 From d1c4899a22c99febfd46d6f2e28803ecf5d7288f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 17:58:23 -0500 Subject: * inline: When previewing, still call will_render on rss/atom files, just avoid actually writing the files. This is necessary because ikiwiki saves state after a preview (in case it actually *did* write files), and if will_render isn't called its security checks will get upset when the page is saved. Thanks to Edward Betts for his help tracking this tricky bug down. --- IkiWiki/Plugin/inline.pm | 5 ++--- debian/changelog | 6 ++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 796cf2cf6..ae3f8f409 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -95,7 +95,6 @@ sub preprocess_inline (@) { #{{{ my $atom=($config{atom} && exists $params{atom}) ? yesno($params{atom}) : $config{atom}; my $quick=exists $params{quick} ? yesno($params{quick}) : 0; my $feeds=exists $params{feeds} ? yesno($params{feeds}) : !$quick; - $feeds=0 if $params{preview}; my $feedonly=yesno($params{feedonly}); if (! exists $params{show} && ! $archive) { $params{show}=10; @@ -285,7 +284,7 @@ sub preprocess_inline (@) { #{{{ @list=grep { pagespec_match($_, $params{feedpages}, location => $params{page}) } @list; } - if ($rss) { + if ($rss && ! $params{preview}) { my $rssp=rsspage($params{destpage}).$feednum; will_render($params{destpage}, $rssp); writefile($rssp, $config{destdir}, @@ -293,7 +292,7 @@ sub preprocess_inline (@) { #{{{ $toping{$params{destpage}}=1 unless $config{rebuild}; $feedlinks{$params{destpage}}=qq{}; } - if ($atom) { + if ($atom && ! $params{preview}) { my $atomp=atompage($params{destpage}).$feednum; will_render($params{destpage}, $atomp); writefile($atomp, $config{destdir}, diff --git a/debian/changelog b/debian/changelog index a1100500f..8220e162b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -27,6 +27,12 @@ ikiwiki (2.31) UNRELEASED; urgency=low direction. No need to pull changes when doing a commit. mtn sync is still called in rcs_update. - Support for viewing differences via patches using viewmtn. + * inline: When previewing, still call will_render on rss/atom files, + just avoid actually writing the files. This is necessary because ikiwiki + saves state after a preview (in case it actually *did* write files), + and if will_render isn't called its security checks will get upset + when the page is saved. Thanks to Edward Betts for his help tracking this + tricky bug down. -- Joey Hess Sat, 02 Feb 2008 23:36:31 -0500 -- cgit v1.2.3 From 6fba45bb563aad612c48d90f1f744f91f5b79dd3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 18:03:15 -0500 Subject: further comments --- doc/todo/allow_wiki_syntax_in_commit_messages.mdwn | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/doc/todo/allow_wiki_syntax_in_commit_messages.mdwn b/doc/todo/allow_wiki_syntax_in_commit_messages.mdwn index 01c5d397b..97691bdc3 100644 --- a/doc/todo/allow_wiki_syntax_in_commit_messages.mdwn +++ b/doc/todo/allow_wiki_syntax_in_commit_messages.mdwn @@ -9,4 +9,13 @@ a whole page into RecentChanges. Of course, it could only use _one_ of the available markups, ie the default markdown. --[[Joey]] To go along with this, the preview should show the formatted commit message. ---[[JoshTriplett]] \ No newline at end of file +--[[JoshTriplett]] + +This is really easy to do now, but it would have to be limited to applying +markdown formatting (or whatever formatter is default I suppose) to the +content, and *not* to expanding any WikiLinks or preprocessor directives. +Especially with the new static RecentChanges, expanding even wikilinks +would be pretty tricky to do. Applying markdown formatting seems like a +reasonable thing; it would make commit messages that have the form of a +bulletted list be marked up nicely, and would also handle _emphasised_ +words etc, and even http links. --[[Joey]] -- cgit v1.2.3 From 85de2f7bc4d00a4a4711cd91224553beae411532 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 18:05:40 -0500 Subject: the old code worked, suprisingly, but I prefer this form --- IkiWiki/Plugin/teximg.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/teximg.pm b/IkiWiki/Plugin/teximg.pm index 5f9589fdd..5dff5feef 100644 --- a/IkiWiki/Plugin/teximg.pm +++ b/IkiWiki/Plugin/teximg.pm @@ -82,8 +82,8 @@ sub create ($$$) { #{{{ $logurl = urlto($imglog, $params->{destpage}); } else { - $imgurl="$params->{page}/$digest.png"; - $logurl="$params->{page}/$digest.log"; + $imgurl=$params->{page}."/$digest.png"; + $logurl=$params->{page}."/$digest.log"; } if (-e "$config{destdir}/$imglink" || -- cgit v1.2.3 From 346fc8f1a55e6e5337dcaee02329874b7798af17 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 18:09:01 -0500 Subject: rm old page --- doc/users/Edward__95__Betts.mdwn | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 doc/users/Edward__95__Betts.mdwn diff --git a/doc/users/Edward__95__Betts.mdwn b/doc/users/Edward__95__Betts.mdwn deleted file mode 100644 index 038c00eb7..000000000 --- a/doc/users/Edward__95__Betts.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -My watchlist: - -[[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive=yes]] -- cgit v1.2.3 From 57567f41680b80799037cc47c60a09c9a9e0e724 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 18:34:47 -0500 Subject: note about will_render and preview --- doc/plugins/write.mdwn | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 216cfa51c..e1e057c00 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -481,8 +481,13 @@ If the destination directory doesn't exist, it will first be created. Given a page name and a destination file name (not including the base destination directory), register that the page will result in that file -being rendered. It's important to call this before writing to any file in -the destination directory. +being rendered. + +It's important to call this before writing to any file in the destination +directory, and it's important to call it consistently every time, even if +the file isn't really written this time -- unless you delete any old +version of the file. In particular, in preview mode, this should still be +called even if the file isn't going to be written to during the preview. Ikiwiki uses this information to automatically clean up rendered files when the page that rendered them goes away or is changes to no longer render -- cgit v1.2.3 From 9f9bc5607edd1d9be81459c4a384a53c4ac45df6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 18:35:54 -0500 Subject: web commit by http://joey.kitenet.net/: turning on non-default atom feed should work now --- doc/users/Edward_Betts.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/users/Edward_Betts.mdwn b/doc/users/Edward_Betts.mdwn index b7ab8102a..7dd7c4f51 100644 --- a/doc/users/Edward_Betts.mdwn +++ b/doc/users/Edward_Betts.mdwn @@ -1,3 +1,3 @@ My watchlist: -[[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive="yes" feeds="yes" sort="mtime" atom="yes"]] +[[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive="yes" atom="yes" sort="mtime" atom="yes"]] -- cgit v1.2.3 From bf522a347f9749522a4f575cb48000123b79978a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 18:36:50 -0500 Subject: * inline: Add new `allowrss` and `allowatom` config options. These can be used if you want a wiki that doesn't default to generating rss or atom feeds, but that does allow them to be turned on for specific blogs. --- IkiWiki.pm | 2 ++ IkiWiki/Plugin/inline.pm | 6 ++++-- debian/changelog | 3 +++ doc/ikiwiki.setup | 11 +++++++---- doc/ikiwiki/blog.mdwn | 10 ++++++---- doc/usage.mdwn | 20 ++++++++++++++++---- 6 files changed, 38 insertions(+), 14 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index 8172552cb..0c05bb0d3 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -68,6 +68,8 @@ sub defaultconfig () { #{{{ diffurl => '', rss => 0, atom => 0, + allowrss => 0, + allowatom => 0, discussion => 1, rebuild => 0, refresh => 0, diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index ae3f8f409..e2be5640e 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -34,6 +34,8 @@ sub getopt () { #{{{ GetOptions( "rss!" => \$config{rss}, "atom!" => \$config{atom}, + "allowrss!" => \$config{allowrss}, + "allowatom!" => \$config{allowatom}, ); } @@ -91,8 +93,8 @@ sub preprocess_inline (@) { #{{{ } my $raw=yesno($params{raw}); my $archive=yesno($params{archive}); - my $rss=($config{rss} && exists $params{rss}) ? yesno($params{rss}) : $config{rss}; - my $atom=($config{atom} && exists $params{atom}) ? yesno($params{atom}) : $config{atom}; + 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=exists $params{feeds} ? yesno($params{feeds}) : !$quick; my $feedonly=yesno($params{feedonly}); diff --git a/debian/changelog b/debian/changelog index 8220e162b..b32c7ad51 100644 --- a/debian/changelog +++ b/debian/changelog @@ -33,6 +33,9 @@ ikiwiki (2.31) UNRELEASED; urgency=low and if will_render isn't called its security checks will get upset when the page is saved. Thanks to Edward Betts for his help tracking this tricky bug down. + * inline: Add new `allowrss` and `allowatom` config options. These can be + used if you want a wiki that doesn't default to generating rss or atom + feeds, but that does allow them to be turned on for specific blogs. -- Joey Hess Sat, 02 Feb 2008 23:36:31 -0500 diff --git a/doc/ikiwiki.setup b/doc/ikiwiki.setup index 059485d38..c96a45f78 100644 --- a/doc/ikiwiki.setup +++ b/doc/ikiwiki.setup @@ -92,10 +92,13 @@ use IkiWiki::Setup::Standard { #}, ], - # Generate rss feeds for blogs? - rss => 1, - # Generate atom feeds for blogs? - atom => 1, + # Default to generating rss feeds for blogs? + #rss => 1, + # Default to generating atom feeds for blogs? + #atom => 1, + # Allow generating feeds even if not generated by default? + #allowrss => 1, + #allowatom => 1, # Urls to ping with XML-RPC when rss feeds are updated #pingurl => [qw{http://rpc.technorati.com/rpc/ping}], # Include discussion links on all pages? diff --git a/doc/ikiwiki/blog.mdwn b/doc/ikiwiki/blog.mdwn index 6e5eec4aa..80a3d20b3 100644 --- a/doc/ikiwiki/blog.mdwn +++ b/doc/ikiwiki/blog.mdwn @@ -52,10 +52,12 @@ directive: Set to 0 to show all matching pages. * `skip` - Specify a number of pages to skip displaying. Can be useful to produce a feed that only shows archived pages. -* `rss` - controls generation of an rss feed. On by default if the wiki is - configured to use rss feeds, set to "no" to disable. -* `atom` - controls generation of an atom feed. On by default if the wiki is - configured to use atom feeds, set to "no" to disable. +* `rss` - controls generation of an rss feed. If the wiki is configured to + generate tss feeds by default, set to "no" to disable. If the wiki is + configured to `allowrss`, set to "yes" to enable. +* `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. * `feeds` - controls generation of all types of feeds. Set to "no" to disable generating any feeds. * `postform` - Set to "yes" to enables a form to post new pages to a [[blog]]. diff --git a/doc/usage.mdwn b/doc/usage.mdwn index f34d5bad6..cd8f0542c 100644 --- a/doc/usage.mdwn +++ b/doc/usage.mdwn @@ -153,13 +153,25 @@ configuration options of their own. * --rss, --norss - If rss is set, ikiwiki will generate RSS feeds for pages that inline - a [[ikiwiki/blog]]. + If rss is set, ikiwiki will default to generating RSS feeds for pages + that inline a [[ikiwiki/blog]]. + +* --allowrss + + If allowrss is set, and rss is not set, ikiwiki will not default to + generating RSS feeds, but setting `rss=yes` in the blog can override + this default and generate a feed. * --atom, --noatom - If atom is set, ikiwiki will generate Atom feeds for pages that inline - a [[ikiwiki/blog]]. + If atom is set, ikiwiki will default to generating Atom feeds for pages + that inline a [[ikiwiki/blog]]. + +* --allowatom + + If allowatom is set, and rss is not set, ikiwiki will not default to + generating Atom feeds, but setting `atom=yes` in the blog can override + this default and generate a feed. * --pingurl URL -- cgit v1.2.3 From a637ab58196752d6484854a7655558a8fcc092c3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 18:39:18 -0500 Subject: web commit by http://edward.myopenid.com/: had a 'atom' parameter twice --- doc/users/Edward_Betts.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/users/Edward_Betts.mdwn b/doc/users/Edward_Betts.mdwn index 7dd7c4f51..3beec42f5 100644 --- a/doc/users/Edward_Betts.mdwn +++ b/doc/users/Edward_Betts.mdwn @@ -1,3 +1,3 @@ My watchlist: -[[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive="yes" atom="yes" sort="mtime" atom="yes"]] +[[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive="yes" sort="mtime" atom="yes"]] -- cgit v1.2.3 From b37dc9c9261a030faaf00d6ce5e84aa6c9fb64b4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 18:44:54 -0500 Subject: preview shouldn't show the feed buttons or post form --- 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 e2be5640e..d58c655c5 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -183,7 +183,7 @@ sub preprocess_inline (@) { #{{{ my $atomurl=basename(atompage($params{destpage}).$feednum) if $feeds && $atom; my $ret=""; - if ($config{cgiurl} && (exists $params{rootpage} || + if ($config{cgiurl} && ! $params{preview} && (exists $params{rootpage} || (exists $params{postform} && yesno($params{postform})))) { # Add a blog post form, with feed buttons. my $formtemplate=template("blogpost.tmpl", blind_cache => 1); @@ -202,7 +202,7 @@ sub preprocess_inline (@) { #{{{ } $ret.=$formtemplate->output; } - elsif ($feeds) { + elsif ($feeds && !$params{preview}) { # Add feed buttons. my $linktemplate=template("feedlink.tmpl", blind_cache => 1); $linktemplate->param(rssurl => $rssurl) if $rss; -- cgit v1.2.3 From f64ef7deb643f9bc4bb911cd858db96c2f528f87 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 18:46:34 -0500 Subject: proper fix for the preview/will_render issue --- IkiWiki/Plugin/inline.pm | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index d58c655c5..b40303078 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -286,21 +286,25 @@ sub preprocess_inline (@) { #{{{ @list=grep { pagespec_match($_, $params{feedpages}, location => $params{page}) } @list; } - if ($rss && ! $params{preview}) { + if ($rss) { my $rssp=rsspage($params{destpage}).$feednum; will_render($params{destpage}, $rssp); - writefile($rssp, $config{destdir}, - genfeed("rss", $rssurl, $desc, $params{destpage}, @list)); - $toping{$params{destpage}}=1 unless $config{rebuild}; - $feedlinks{$params{destpage}}=qq{}; + if (! $params{preview}) { + writefile($rssp, $config{destdir}, + genfeed("rss", $rssurl, $desc, $params{destpage}, @list)); + $toping{$params{destpage}}=1 unless $config{rebuild}; + $feedlinks{$params{destpage}}=qq{}; + } } - if ($atom && ! $params{preview}) { + if ($atom) { my $atomp=atompage($params{destpage}).$feednum; will_render($params{destpage}, $atomp); - writefile($atomp, $config{destdir}, - genfeed("atom", $atomurl, $desc, $params{destpage}, @list)); - $toping{$params{destpage}}=1 unless $config{rebuild}; - $feedlinks{$params{destpage}}=qq{}; + if (! $params{preview}) { + writefile($atomp, $config{destdir}, + genfeed("atom", $atomurl, $desc, $params{destpage}, @list)); + $toping{$params{destpage}}=1 unless $config{rebuild}; + $feedlinks{$params{destpage}}=qq{}; + } } } -- cgit v1.2.3 From ba3bf607a10ad6d5cd01955e963023b442f24427 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 18:48:36 -0500 Subject: web commit by http://joey.kitenet.net/: commit after preview, one last test --- doc/users/Edward_Betts.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/users/Edward_Betts.mdwn b/doc/users/Edward_Betts.mdwn index 3beec42f5..8653c33c2 100644 --- a/doc/users/Edward_Betts.mdwn +++ b/doc/users/Edward_Betts.mdwn @@ -1,3 +1,4 @@ My watchlist: [[inline pages="todo/allow_wiki_syntax_in_commit_messages" archive="yes" sort="mtime" atom="yes"]] + -- cgit v1.2.3 From 3414a01e4769c52c9193b17e09eff64ea6d2187a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Feb 2008 19:12:38 -0500 Subject: web commit by http://edward.myopenid.com/: It would be nice if blog post pages could include the ctime. --- doc/todo/ctime_on_blog_post_pages_.mdwn | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 doc/todo/ctime_on_blog_post_pages_.mdwn diff --git a/doc/todo/ctime_on_blog_post_pages_.mdwn b/doc/todo/ctime_on_blog_post_pages_.mdwn new file mode 100644 index 000000000..4fd099d9d --- /dev/null +++ b/doc/todo/ctime_on_blog_post_pages_.mdwn @@ -0,0 +1,5 @@ +[[Blog|ikiwiki/blog]] feeds and index pages show the posted time (ctime), the actual blog entry pages only show the modified time. + +The user has to look at the history link to find when a blog item was posted. + +It would be nice if blog entry post pages could include the ctime. -- [[Edward_Betts]] -- cgit v1.2.3 From a1d75dc54c45a033821c1a0b2daf8c94a51d64e7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 5 Feb 2008 03:48:24 -0500 Subject: web commit by http://edward.myopenid.com/: fix link --- doc/wikitemplates.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/wikitemplates.mdwn b/doc/wikitemplates.mdwn index 1f6325b4b..389bdbfe9 100644 --- a/doc/wikitemplates.mdwn +++ b/doc/wikitemplates.mdwn @@ -14,7 +14,7 @@ located in /usr/share/ikiwiki/templates by default. * `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 the mail with the user's password in it. -* `rsspage.tmpl` - Used for generating rss feeds for [blogs|[ikiwiki/blog]]. +* `rsspage.tmpl` - Used for generating rss feeds for [[blogs|ikiwiki/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. -- cgit v1.2.3 From 5464285c04a41964cd21e80847107a77ad3f5fc0 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 5 Feb 2008 03:54:23 -0500 Subject: web commit by http://edward.myopenid.com/: add links --- doc/todo/multiple_templates.mdwn | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/todo/multiple_templates.mdwn b/doc/todo/multiple_templates.mdwn index 361270bb9..1d6180a77 100644 --- a/doc/todo/multiple_templates.mdwn +++ b/doc/todo/multiple_templates.mdwn @@ -1,11 +1,11 @@ -> Another useful feature might be to be able to choose a different template -> file for some pages; blog pages would use a template different from the +> Another useful feature might be to be able to choose a different [[template|wikitemplates]] +> file for some pages; [[blog|ikiwiki/blog]] pages would use a template different from the > home page, even if both are managed in the same repository, etc. -Well, that would probably be fairly easy to add if it used pagespecs to +Well, that would probably be fairly easy to add if it used [[pagespec]]s to specify which pages use the non-default template. -Hmm, I think the pagetemplate hook should allow one to get close enough to +Hmm, I think the [[pagetemplate|plugins/pagetemplate]] hook should allow one to get close enough to this in a plugin now. See also: [[Allow_per-page_template_selection]] -- same thing, really. -- cgit v1.2.3 From c73c11f81393b87d7e5cb063107cb5a2ff4da158 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 5 Feb 2008 03:55:24 -0500 Subject: web commit by http://edward.myopenid.com/: fix pagespec link --- doc/todo/multiple_templates.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/todo/multiple_templates.mdwn b/doc/todo/multiple_templates.mdwn index 1d6180a77..d165eebaf 100644 --- a/doc/todo/multiple_templates.mdwn +++ b/doc/todo/multiple_templates.mdwn @@ -2,7 +2,7 @@ > file for some pages; [[blog|ikiwiki/blog]] pages would use a template different from the > home page, even if both are managed in the same repository, etc. -Well, that would probably be fairly easy to add if it used [[pagespec]]s to +Well, that would probably be fairly easy to add if it used [[pagespecs|ikiwiki/pagespec]] to specify which pages use the non-default template. Hmm, I think the [[pagetemplate|plugins/pagetemplate]] hook should allow one to get close enough to -- cgit v1.2.3 From 4e3329699bbacfd5f41699590333b0f3e06750d5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 5 Feb 2008 13:49:25 -0500 Subject: add a page describing ikiwiki's git repo, including branches --- doc/download.mdwn | 18 +----------------- doc/git.mdwn | 33 +++++++++++++++++++++++++++++++++ doc/index.mdwn | 3 ++- doc/patch.mdwn | 3 +++ 4 files changed, 39 insertions(+), 18 deletions(-) create mode 100644 doc/git.mdwn diff --git a/doc/download.mdwn b/doc/download.mdwn index 609d074b5..16728f019 100644 --- a/doc/download.mdwn +++ b/doc/download.mdwn @@ -32,20 +32,4 @@ Also. FreeBSD has ikiwiki in its ## revision control -### git - -Ikiwiki is developed in a git repository and can be checked out by -either of these commands: - - git clone git://git.ikiwiki.info/ - git clone http://git.ikiwiki.info/ikiwiki.git/ - -The gitweb is [here](http://git.ikiwiki.info/?p=ikiwiki). - -Commits to this git repository are fed into [CIA](http://cia.vc), and can -be browsed, subscribed to etc on its -[project page](http://cia.vc/stats/project/ikiwiki). - -### subversion - -Ikiwiki's subversion repository is no longer available, use git instead. +Ikiwiki is developed in a [[git_repository|git]]. diff --git a/doc/git.mdwn b/doc/git.mdwn new file mode 100644 index 000000000..0979e9bf1 --- /dev/null +++ b/doc/git.mdwn @@ -0,0 +1,33 @@ +Ikiwiki is developed in a git_repository and can be checked out +like this: + + git clone git://git.ikiwiki.info/ + +Or like this if your firewall only passes http traffic (slow): + + git clone http://git.ikiwiki.info/ikiwiki.git/ + +The gitweb is [here](http://git.ikiwiki.info/?p=ikiwiki). + +Commits to this git repository are fed into [CIA](http://cia.vc), and can +be browsed, subscribed to etc on its +[project page](http://cia.vc/stats/project/ikiwiki). + +## branches + +You are of course free to set up your own ikiwiki git repository with your +own [[patches|patch]]. + +Some of the branches included in the main repository include: + +* `gallery` contains the [[todo/Gallery]] plugin. It's not yet merged + die to license issues. +* `html` is an unfinished attempt at making ikiwiki output HTML 4.01 + instead of xhtml. +* `prefix-directives` changes the preprocessor directive syntax. It + is approxiamtly one failing test case away from merging. +* `wikiwyg` adds [[todo/wikiwyg]] support. It is unmerged pending some + changes. +* `pristine-tar` contains deltas that + [pristine-tar](http://kitenet.net/~joey/code/pristine-tar) + can use to recreate released tarballs of ikiwiki diff --git a/doc/index.mdwn b/doc/index.mdwn index bfbe46724..1a416d798 100644 --- a/doc/index.mdwn +++ b/doc/index.mdwn @@ -14,7 +14,8 @@ 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 ]]. +This site generally runs the latest release of ikiwiki; currently, it runs +ikiwiki [[version ]]. ## developer resources diff --git a/doc/patch.mdwn b/doc/patch.mdwn index 05476a408..ca1620225 100644 --- a/doc/patch.mdwn +++ b/doc/patch.mdwn @@ -4,5 +4,8 @@ to duplicate work without coordination, here's a queue of suggested patches. If you post a patch to the [[todo]] or [[bugs]] list, or elsewhere, once it's ready to be applied, add a 'patch' tag so it will show up here. +If your patch is non-trivial and might need several iterations to get +right, please consider publishing a [[git]] branch. + [[inline pages="(todo/* or bugs/*) and link(patch) and !link(bugs/done) and !link(todo/done) and !*/Discussion" rootpage="todo" archive="yes"]] -- cgit v1.2.3 From 11f4942d68f3276bfdc4688e4091e559f9481874 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 5 Feb 2008 13:54:31 -0500 Subject: typos --- doc/git.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/git.mdwn b/doc/git.mdwn index 0979e9bf1..90f030ab4 100644 --- a/doc/git.mdwn +++ b/doc/git.mdwn @@ -1,4 +1,4 @@ -Ikiwiki is developed in a git_repository and can be checked out +Ikiwiki is developed in a git repository and can be checked out like this: git clone git://git.ikiwiki.info/ @@ -25,7 +25,7 @@ Some of the branches included in the main repository include: * `html` is an unfinished attempt at making ikiwiki output HTML 4.01 instead of xhtml. * `prefix-directives` changes the preprocessor directive syntax. It - is approxiamtly one failing test case away from merging. + is approximately one failing test case away from merging. * `wikiwyg` adds [[todo/wikiwyg]] support. It is unmerged pending some changes. * `pristine-tar` contains deltas that -- cgit v1.2.3