summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki.pm2
-rw-r--r--IkiWiki/Plugin/aggregate.pm4
-rw-r--r--IkiWiki/Plugin/attachment.pm20
-rw-r--r--IkiWiki/Plugin/editpage.pm5
-rw-r--r--IkiWiki/Plugin/edittemplate.pm16
-rw-r--r--IkiWiki/Plugin/git.pm5
-rw-r--r--IkiWiki/Plugin/htmlscrubber.pm16
-rw-r--r--IkiWiki/Plugin/openid.pm2
-rw-r--r--IkiWiki/Plugin/progress.pm5
-rw-r--r--IkiWiki/Plugin/recentchanges.pm3
-rw-r--r--IkiWiki/Plugin/remove.pm21
-rw-r--r--IkiWiki/Plugin/rename.pm273
-rw-r--r--IkiWiki/Plugin/skeleton.pm.example2
-rw-r--r--IkiWiki/Plugin/tag.pm25
-rw-r--r--IkiWiki/Render.pm6
-rw-r--r--debian/changelog36
-rw-r--r--doc/bugs/No_progress_in_progress_bar.mdwn6
-rw-r--r--doc/bugs/index.html_is_made_visible_by_various_actions.mdwn10
-rw-r--r--doc/bugs/multiple_pages_with_same_name.mdwn76
-rw-r--r--doc/bugs/syntax_error_in_aggregate.mdwn11
-rw-r--r--doc/bugs/tags_base_dir_not_used_when_creating_new_tags.mdwn3
-rw-r--r--doc/bugs/typo_in_skeleton.pm:_sessionncgi.mdwn5
-rw-r--r--doc/bugs/unicode_encoded_urls_and_recentchanges.mdwn35
-rw-r--r--doc/css_market.mdwn13
-rw-r--r--doc/ikiwiki/directive.mdwn7
-rw-r--r--doc/ikiwiki/directive/edittemplate.mdwn4
-rw-r--r--doc/ikiwiki/formatting.mdwn4
-rw-r--r--doc/ikiwiki/pagespec/attachment.mdwn4
-rw-r--r--doc/ikiwikiusers.mdwn2
-rw-r--r--doc/news/version_2.61.mdwn4
-rw-r--r--doc/news/version_2.65.mdwn25
-rw-r--r--doc/plugins/htmlscrubber.mdwn6
-rw-r--r--doc/plugins/write.mdwn17
-rw-r--r--doc/roadmap.mdwn2
-rw-r--r--doc/sandbox.mdwn4
-rw-r--r--doc/todo/Allow_edittemplate_to_set_file_type.mdwn4
-rw-r--r--doc/todo/Better_bug_tracking_support.mdwn13
-rw-r--r--doc/todo/Feature_parity_with_Trac.mdwn3
-rw-r--r--doc/todo/Location_of_pages_starting_with___36__tagbase_should_be_in__by_default.mdwn2
-rw-r--r--doc/todo/automatic_use_of_syntax_plugin_on_source_code_files/discussion.mdwn159
-rw-r--r--doc/todo/inline:_numerical_ordering_by_title.mdwn178
-rw-r--r--doc/todo/source_link.mdwn101
-rw-r--r--doc/todo/structured_page_data.mdwn83
-rw-r--r--doc/todo/supporting_comments_via_disussion_pages.mdwn31
-rw-r--r--doc/todo/tracking_bugs_with_dependencies.mdwn58
-rw-r--r--doc/todo/turn_edittemplate_verbosity_off_by_default.mdwn4
-rw-r--r--doc/todo/wikitrails.mdwn41
-rw-r--r--doc/todo/wikitrails/discussion.mdwn24
-rw-r--r--doc/users/Will.mdwn5
-rwxr-xr-xikiwiki.in26
-rw-r--r--po/bg.po110
-rw-r--r--po/cs.po110
-rw-r--r--po/da.po110
-rw-r--r--po/de.po110
-rw-r--r--po/es.po110
-rw-r--r--po/fr.po110
-rw-r--r--po/gu.po110
-rw-r--r--po/ikiwiki.pot98
-rw-r--r--po/pl.po110
-rw-r--r--po/sv.po110
-rw-r--r--po/vi.po110
-rwxr-xr-xt/pagename.t2
-rw-r--r--templates/renamesummary.tmpl9
63 files changed, 1939 insertions, 681 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 4e4da11c5..c0f5deab6 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -618,7 +618,7 @@ sub pagename ($) { #{{{
my $type=pagetype($file);
my $page=$file;
- $page=~s/\Q.$type\E*$// if defined $type;
+ $page=~s/\Q.$type\E*$// if defined $type && !$hooks{htmlize}{$type}{keepextension};
return $page;
} #}}}
diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm
index 2b40625db..8044f1ed4 100644
--- a/IkiWiki/Plugin/aggregate.pm
+++ b/IkiWiki/Plugin/aggregate.pm
@@ -420,11 +420,11 @@ sub expire () { #{{{
next unless $feed->{expireage} || $feed->{expirecount};
my $count=0;
my %seen;
- foreach my $item (sort { $IkiWiki::pagectime{$b->{page}} <=> $IkiWiki::pagectime{$a->{page}} }
+ foreach my $item (sort { ($IkiWiki::pagectime{$b->{page}} || 0) <=> ($IkiWiki::pagectime{$a->{page}} || 0) }
grep { exists $_->{page} && $_->{feed} eq $feed->{name} }
values %guids) {
if ($feed->{expireage}) {
- my $days_old = (time - $IkiWiki::pagectime{$item->{page}}) / 60 / 60 / 24;
+ my $days_old = (time - ($IkiWiki::pagectime{$item->{page}} || 0)) / 60 / 60 / 24;
if ($days_old > $feed->{expireage}) {
debug(sprintf(gettext("expiring %s (%s days old)"),
$item->{page}, int($days_old)));
diff --git a/IkiWiki/Plugin/attachment.pm b/IkiWiki/Plugin/attachment.pm
index 999fa4a86..f1a9b1939 100644
--- a/IkiWiki/Plugin/attachment.pm
+++ b/IkiWiki/Plugin/attachment.pm
@@ -311,6 +311,26 @@ sub match_user ($$;@) { #{{{
}
} #}}}
+sub match_admin ($$;@) { #{{{
+ shift;
+ shift;
+ my %params=@_;
+
+ if (! exists $params{user}) {
+ return IkiWiki::FailReason->new("no user specified");
+ }
+
+ if (defined $params{user} && IkiWiki::is_admin($params{user})) {
+ return IkiWiki::SuccessReason->new("user is an admin");
+ }
+ elsif (! defined $params{user}) {
+ return IkiWiki::FailReason->new("not logged in");
+ }
+ else {
+ return IkiWiki::FailReason->new("user is not an admin");
+ }
+} #}}}
+
sub match_ip ($$;@) { #{{{
shift;
my $ip=shift;
diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm
index e07052497..687ebf51e 100644
--- a/IkiWiki/Plugin/editpage.pm
+++ b/IkiWiki/Plugin/editpage.pm
@@ -85,8 +85,9 @@ sub cgi_editpage ($$) { #{{{
});
decode_form_utf8($form);
- # This untaint is safe because we check file_pruned.
- my $page=$form->field('page');
+ # This untaint is safe because we check file_pruned and
+ # wiki_file_regexp.
+ my ($page)=$form->field('page')=~/$config{wiki_file_regexp}/;
$page=possibly_foolish_untaint($page);
my $absolute=($page =~ s#^/+##);
if (! defined $page || ! length $page ||
diff --git a/IkiWiki/Plugin/edittemplate.pm b/IkiWiki/Plugin/edittemplate.pm
index 98308de13..84c28a9d0 100644
--- a/IkiWiki/Plugin/edittemplate.pm
+++ b/IkiWiki/Plugin/edittemplate.pm
@@ -54,10 +54,14 @@ sub preprocess (@) { #{{{
error gettext("match not specified")
}
- $pagestate{$params{page}}{edittemplate}{$params{match}}=$params{template};
+ my $link=IkiWiki::linkpage($params{template});
+ $pagestate{$params{page}}{edittemplate}{$params{match}}=$link;
+ return "" if ($params{silent} && IkiWiki::yesno($params{silent}));
+ add_depends($params{page}, $link);
return sprintf(gettext("edittemplate %s registered for %s"),
- $params{template}, $params{match});
+ htmllink($params{page}, $params{destpage}, $link),
+ $params{match});
} # }}}
sub formbuilder (@) { #{{{
@@ -65,7 +69,7 @@ sub formbuilder (@) { #{{{
my $form=$params{form};
return if $form->field("do") ne "create" ||
- length $form->field("editcontent");
+ (defined $form->field("editcontent") && length $form->field("editcontent"));
my $page=$form->field("page");
@@ -87,8 +91,12 @@ sub formbuilder (@) { #{{{
if (exists $pagestate{$registering_page}{edittemplate}) {
foreach my $pagespec (sort keys %{$pagestate{$registering_page}{edittemplate}}) {
if (pagespec_match($p, $pagespec, location => $registering_page)) {
+ my $template=$pagestate{$registering_page}{edittemplate}{$pagespec};
$form->field(name => "editcontent",
- value => filltemplate($pagestate{$registering_page}{edittemplate}{$pagespec}, $page));
+ value => filltemplate($template, $page));
+ $form->field(name => "type",
+ value => pagetype($pagesources{$template}))
+ if $pagesources{$template};
return;
}
}
diff --git a/IkiWiki/Plugin/git.pm b/IkiWiki/Plugin/git.pm
index 08ee4cb63..14b0ab285 100644
--- a/IkiWiki/Plugin/git.pm
+++ b/IkiWiki/Plugin/git.pm
@@ -308,13 +308,16 @@ sub parse_diff_tree ($@) { #{{{
my $sha1_to = shift(@tmp);
my $status = shift(@tmp);
+ # git does not output utf-8 filenames, but instead
+ # double-quotes them with the utf-8 characters
+ # escaped as \nnn\nnn.
if ($file =~ m/^"(.*)"$/) {
($file=$1) =~ s/\\([0-7]{1,3})/chr(oct($1))/eg;
}
$file =~ s/^\Q$prefix\E//;
if (length $file) {
push @{ $ci{'details'} }, {
- 'file' => decode_utf8($file),
+ 'file' => decode("utf8", $file),
'sha1_from' => $sha1_from[0],
'sha1_to' => $sha1_to,
};
diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm
index 923907b04..7398c8478 100644
--- a/IkiWiki/Plugin/htmlscrubber.pm
+++ b/IkiWiki/Plugin/htmlscrubber.pm
@@ -41,10 +41,26 @@ sub getsetup () { #{{{
safe => 1,
rebuild => undef,
},
+ htmlscrubber_skip => {
+ type => "pagespec",
+ example => "!*/Discussion",
+ description => "PageSpec specifying pages not to scrub",
+ link => "ikiwiki/PageSpec",
+ safe => 1,
+ rebuild => undef,
+ },
} #}}}
sub sanitize (@) { #{{{
my %params=@_;
+
+ if (exists $config{htmlscrubber_skip} &&
+ length $config{htmlscrubber_skip} &&
+ exists $params{destpage} &&
+ pagespec_match($params{destpage}, $config{htmlscrubber_skip})) {
+ return $params{content};
+ }
+
return scrubber()->scrub($params{content});
} # }}}
diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm
index 1818f5283..f12cbdaa3 100644
--- a/IkiWiki/Plugin/openid.pm
+++ b/IkiWiki/Plugin/openid.pm
@@ -48,7 +48,7 @@ sub formbuilder_setup (@) { #{{{
# needing to depend on it.
eval q{use Net::OpenID::Consumer};
if ($@) {
- debug("unable to load Net::OpenID::Consumer, not enabling OpenID login");
+ debug("unable to load Net::OpenID::Consumer, not enabling OpenID login ($@)");
return;
}
diff --git a/IkiWiki/Plugin/progress.pm b/IkiWiki/Plugin/progress.pm
index 2c015284e..e536f4e23 100644
--- a/IkiWiki/Plugin/progress.pm
+++ b/IkiWiki/Plugin/progress.pm
@@ -29,12 +29,11 @@ sub preprocess (@) { #{{{
if (defined $params{percent}) {
$fill = $params{percent};
($fill) = $fill =~ m/($percentage_pattern)/; # fill is untainted now
+ $fill=~s/%$//;
if (! defined $fill || ! length $fill || $fill > 100 || $fill < 0) {
error(sprintf(gettext("illegal percent value %s"), $params{percent}));
}
- elsif ($fill !~ /%$/) {
- $fill.="%";
- }
+ $fill.="%";
}
elsif (defined $params{totalpages} and defined $params{donepages}) {
add_depends($params{page}, $params{totalpages});
diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm
index dbb9065d4..bef0e7085 100644
--- a/IkiWiki/Plugin/recentchanges.pm
+++ b/IkiWiki/Plugin/recentchanges.pm
@@ -4,6 +4,7 @@ package IkiWiki::Plugin::recentchanges;
use warnings;
use strict;
use IkiWiki 2.00;
+use Encode;
sub import { #{{{
hook(type => "getsetup", id => "recentchanges", call => \&getsetup);
@@ -86,7 +87,7 @@ sub cgi ($) { #{{{
# 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");
+ my $page=decode_utf8($cgi->param("page"));
if (!defined $page) {
error("missing page parameter");
}
diff --git a/IkiWiki/Plugin/remove.pm b/IkiWiki/Plugin/remove.pm
index b1cb6233d..772be07b5 100644
--- a/IkiWiki/Plugin/remove.pm
+++ b/IkiWiki/Plugin/remove.pm
@@ -21,11 +21,10 @@ sub getsetup () { #{{{
},
} #}}}
-sub check_canremove ($$$$) { #{{{
+sub check_canremove ($$$) { #{{{
my $page=shift;
my $q=shift;
my $session=shift;
- my $attachment=shift;
# Must be a known source file.
if (! exists $pagesources{$page}) {
@@ -45,11 +44,15 @@ sub check_canremove ($$$$) { #{{{
# Must be editiable.
IkiWiki::check_canedit($page, $q, $session);
- # This is sorta overkill, but better safe
- # than sorry. If a user can't upload an
- # attachment, don't let them delete it.
- if ($attachment) {
- IkiWiki::Plugin::attachment::check_canattach($session, $page, $file);
+ # If a user can't upload an attachment, don't let them delete it.
+ # This is sorta overkill, but better safe than sorry.
+ if (! defined IkiWiki::pagetype($pagesources{$page})) {
+ if (IkiWiki::Plugin::attachment->can("check_canattach")) {
+ IkiWiki::Plugin::attachment::check_canattach($session, $page, $file);
+ }
+ else {
+ error("renaming of attachments is not allowed");
+ }
}
} #}}}
@@ -94,7 +97,7 @@ sub removal_confirm ($$@) { #{{{
my $attachment=shift;
my @pages=@_;
- check_canremove($_, $q, $session, $attachment) foreach @pages;
+ check_canremove($_, $q, $session) foreach @pages;
# Save current form state to allow returning to it later
# without losing any edits.
@@ -167,7 +170,7 @@ sub sessioncgi ($$) { #{{{
# and that the user is allowed to edit(/remove) it.
my @files;
foreach my $page (@pages) {
- check_canremove($page, $q, $session, $q->param("attachment"));
+ check_canremove($page, $q, $session);
# This untaint is safe because of the
# checks performed above, which verify the
diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm
index 77aed9556..4ee377b86 100644
--- a/IkiWiki/Plugin/rename.pm
+++ b/IkiWiki/Plugin/rename.pm
@@ -21,14 +21,15 @@ sub getsetup () { #{{{
},
} #}}}
-sub check_canrename ($$$$$$$) { #{{{
+sub check_canrename ($$$$$$) { #{{{
my $src=shift;
my $srcfile=shift;
my $dest=shift;
my $destfile=shift;
my $q=shift;
my $session=shift;
- my $attachment=shift;
+
+ my $attachment=! defined IkiWiki::pagetype($pagesources{$src});
# Must be a known source file.
if (! exists $pagesources{$src}) {
@@ -47,7 +48,12 @@ sub check_canrename ($$$$$$$) { #{{{
# Must be editable.
IkiWiki::check_canedit($src, $q, $session);
if ($attachment) {
- IkiWiki::Plugin::attachment::check_canattach($session, $src, $srcfile);
+ if (IkiWiki::Plugin::attachment->can("check_canattach")) {
+ IkiWiki::Plugin::attachment::check_canattach($session, $src, $srcfile);
+ }
+ else {
+ error("renaming of attachments is not allowed");
+ }
}
# Dest checks can be omitted by passing undef.
@@ -123,6 +129,18 @@ sub rename_form ($$$) { #{{{
$f->field(name => "type", type => 'select',
options => \@page_types,
value => $ext, force => 1);
+
+ foreach my $p (keys %pagesources) {
+ if ($pagesources{$p}=~m/^\Q$page\E\//) {
+ $f->field(name => "subpages",
+ label => "",
+ type => "checkbox",
+ options => [ [ 1 => gettext("Also rename SubPages and attachments") ] ],
+ value => 1,
+ force => 1);
+ last;
+ }
+ }
}
$f->field(name => "attachment", type => "hidden");
@@ -136,7 +154,7 @@ sub rename_start ($$$$) { #{{{
my $page=shift;
check_canrename($page, $pagesources{$page}, undef, undef,
- $q, $session, $attachment);
+ $q, $session);
# Save current form state to allow returning to it later
# without losing any edits.
@@ -147,11 +165,10 @@ sub rename_start ($$$$) { #{{{
$session->param(postrename => scalar $q->Vars);
IkiWiki::cgi_savesession($session);
- my ($f, $buttons)=rename_form($q, $session, $page);
if (defined $attachment) {
- $f->field(name => "attachment", value => $attachment, force => 1);
+ $q->param(-name => "attachment", -value => $attachment);
}
-
+ my ($f, $buttons)=rename_form($q, $session, $page);
IkiWiki::showform($f, $buttons, $session, $q);
exit 0;
} #}}}
@@ -243,76 +260,97 @@ sub sessioncgi ($$) { #{{{
postrename($session);
}
elsif ($form->submitted eq 'Rename' && $form->validate) {
+ # Queue of rename actions to perfom.
+ my @torename;
+
# These untaints are safe because of the checks
- # performed in check_canrename below.
+ # performed in check_canrename later.
my $src=$q->param("page");
my $srcfile=IkiWiki::possibly_foolish_untaint($pagesources{$src});
my $dest=IkiWiki::possibly_foolish_untaint(IkiWiki::titlepage($q->param("new_name")));
-
my $destfile=$dest;
if (! $q->param("attachment")) {
my $type=$q->param('type');
if (defined $type && length $type && $IkiWiki::hooks{htmlize}{$type}) {
$type=IkiWiki::possibly_foolish_untaint($type);
- } else {
+ }
+ else {
my ($ext)=$srcfile=~/\.([^.]+)$/;
$type=$ext;
}
$destfile.=".".$type;
}
-
- check_canrename($src, $srcfile, $dest, $destfile,
- $q, $session, $q->param("attachment"));
-
- # Ensures that the dest directory exists and is ok.
- IkiWiki::prep_writefile($destfile, $config{srcdir});
-
- # Do rename, update other pages, and refresh site.
- IkiWiki::disable_commit_hook() if $config{rcs};
- require IkiWiki::Render;
- if ($config{rcs}) {
- IkiWiki::rcs_rename($srcfile, $destfile);
- IkiWiki::rcs_commit_staged(
- sprintf(gettext("rename %s to %s"), $srcfile, $destfile),
- $session->param("name"), $ENV{REMOTE_ADDR});
+ push @torename, {
+ src => $src,
+ srcfile => $srcfile,
+ dest => $dest,
+ destfile => $destfile,
+ required => 1,
+ };
+
+ # See if any subpages need to be renamed.
+ if ($q->param("subpages") && $src ne $dest) {
+ foreach my $p (keys %pagesources) {
+ if ($pagesources{$p}=~m/^\Q$src\E\//) {
+ my $d=$pagesources{$p};
+ $d=~s/^\Q$src\E\//$dest\//;
+ push @torename, {
+ src => $p,
+ srcfile => $pagesources{$p},
+ dest => pagename($d),
+ destfile => $d,
+ required => 0,
+ };
+ }
+ }
}
- else {
- if (! rename("$config{srcdir}/$srcfile", "$config{srcdir}/$destfile")) {
- error("rename: $!");
+
+ require IkiWiki::Render;
+ IkiWiki::disable_commit_hook() if $config{rcs};
+ my %origpagesources=%pagesources;
+
+ # First file renaming.
+ foreach my $rename (@torename) {
+ if ($rename->{required}) {
+ do_rename($rename, $q, $session);
+ }
+ else {
+ eval {do_rename($rename, $q, $session)};
+ if ($@) {
+ $rename->{error}=$@;
+ next;
+ }
}
+
+ # Temporarily tweak pagesources to point to
+ # the renamed file, in case fixlinks needs
+ # to edit it.
+ $pagesources{$rename->{src}}=$rename->{destfile};
}
- my @fixedlinks;
- if ($src ne $dest) {
- foreach my $page (keys %links) {
- my $needfix=0;
- foreach my $link (@{$links{$page}}) {
- my $bestlink=bestlink($page, $link);
- if ($bestlink eq $src) {
- $needfix=1;
+ IkiWiki::rcs_commit_staged(
+ sprintf(gettext("rename %s to %s"), $srcfile, $destfile),
+ $session->param("name"), $ENV{REMOTE_ADDR}) if $config{rcs};
+
+ # Then link fixups.
+ foreach my $rename (@torename) {
+ next if $rename->{src} eq $rename->{dest};
+ next if $rename->{error};
+ foreach my $p (fixlinks($rename, $session)) {
+ # map old page names to new
+ foreach my $r (@torename) {
+ next if $rename->{error};
+ if ($r->{src} eq $p) {
+ $p=$r->{dest};
last;
}
}
- if ($needfix) {
- my $file=$pagesources{$page};
- my $oldcontent=readfile($config{srcdir}."/".$file);
- my $content=renamepage_hook($page, $src, $dest, $oldcontent);
- if ($oldcontent ne $content) {
- my $token=IkiWiki::rcs_prepedit($file);
- eval { writefile($file, $config{srcdir}, $content) };
- next if $@;
- my $conflict=IkiWiki::rcs_commit(
- $file,
- sprintf(gettext("update for rename of %s to %s"), $srcfile, $destfile),
- $token,
- $session->param("name"),
- $ENV{REMOTE_ADDR}
- );
- push @fixedlinks, $page if ! defined $conflict;
- }
- }
+ push @{$rename->{fixedlinks}}, $p;
}
}
+
+ # Then refresh.
+ %pagesources=%origpagesources;
if ($config{rcs}) {
IkiWiki::enable_commit_hook();
IkiWiki::rcs_update();
@@ -320,47 +358,51 @@ sub sessioncgi ($$) { #{{{
IkiWiki::refresh();
IkiWiki::saveindex();
- # Scan for any remaining broken links to $src.
- my @brokenlinks;
- if ($src ne $dest) {
+ # Find pages with remaining, broken links.
+ foreach my $rename (@torename) {
+ next if $rename->{src} eq $rename->{dest};
+
foreach my $page (keys %links) {
my $broken=0;
foreach my $link (@{$links{$page}}) {
my $bestlink=bestlink($page, $link);
- if ($bestlink eq $src) {
- $broken=1;
+ if ($bestlink eq $rename->{src}) {
+ push @{$rename->{brokenlinks}}, $page;
last;
}
}
- push @brokenlinks, $page if $broken;
}
}
- # Generate a rename summary, that will be shown at the top
+ # Generate a summary, that will be shown at the top
# of the edit template.
- my $template=template("renamesummary.tmpl");
- $template->param(src => $srcfile);
- $template->param(dest => $destfile);
- if ($src ne $dest) {
- $template->param(brokenlinks_checked => 1);
- $template->param(brokenlinks => [
- map {
- {
- page => htmllink($dest, $dest, $_,
- noimageinline => 1)
- }
- } @brokenlinks
- ]);
- $template->param(fixedlinks => [
- map {
- {
- page => htmllink($dest, $dest, $_,
- noimageinline => 1)
- }
- } @fixedlinks
- ]);
+ $renamesummary="";
+ foreach my $rename (@torename) {
+ my $template=template("renamesummary.tmpl");
+ $template->param(src => $rename->{srcfile});
+ $template->param(dest => $rename->{destfile});
+ $template->param(error => $rename->{error});
+ if ($rename->{src} ne $rename->{dest}) {
+ $template->param(brokenlinks_checked => 1);
+ $template->param(brokenlinks => [
+ map {
+ {
+ page => htmllink($rename->{dest}, $rename->{dest}, $_,
+ noimageinline => 1)
+ }
+ } @{$rename->{brokenlinks}}
+ ]);
+ $template->param(fixedlinks => [
+ map {
+ {
+ page => htmllink($rename->{dest}, $rename->{dest}, $_,
+ noimageinline => 1)
+ }
+ } @{$rename->{fixedlinks}}
+ ]);
+ }
+ $renamesummary.=$template->output;
}
- $renamesummary=$template->output;
postrename($session, $src, $dest, $q->param("attachment"));
}
@@ -386,5 +428,70 @@ sub renamepage_hook ($$$$) { #{{{
return $content;
}# }}}
+
+sub do_rename ($$$) { #{{{
+ my $rename=shift;
+ my $q=shift;
+ my $session=shift;
+
+ # First, check if this rename is allowed.
+ check_canrename($rename->{src},
+ $rename->{srcfile},
+ $rename->{dest},
+ $rename->{destfile},
+ $q, $session);
+
+ # Ensure that the dest directory exists and is ok.
+ IkiWiki::prep_writefile($rename->{destfile}, $config{srcdir});
+
+ if ($config{rcs}) {
+ IkiWiki::rcs_rename($rename->{srcfile}, $rename->{destfile});
+ }
+ else {
+ if (! rename($config{srcdir}."/".$rename->{srcfile},
+ $config{srcdir}."/".$rename->{destfile})) {
+ error("rename: $!");
+ }
+ }
+
+} # }}}
+
+sub fixlinks ($$$) { #{{{
+ my $rename=shift;
+ my $session=shift;
+
+ my @fixedlinks;
+
+ foreach my $page (keys %links) {
+ my $needfix=0;
+ foreach my $link (@{$links{$page}}) {
+ my $bestlink=bestlink($page, $link);
+ if ($bestlink eq $rename->{src}) {
+ $needfix=1;
+ last;
+ }
+ }
+ if ($needfix) {
+ my $file=$pagesources{$page};
+ my $oldcontent=readfile($config{srcdir}."/".$file);
+ my $content=renamepage_hook($page, $rename->{src}, $rename->{dest}, $oldcontent);
+ if ($oldcontent ne $content) {
+ my $token=IkiWiki::rcs_prepedit($file);
+ eval { writefile($file, $config{srcdir}, $content) };
+ next if $@;
+ my $conflict=IkiWiki::rcs_commit(
+ $file,
+ sprintf(gettext("update for rename of %s to %s"), $rename->{srcfile}, $rename->{destfile}),
+ $token,
+ $session->param("name"),
+ $ENV{REMOTE_ADDR}
+ );
+ push @fixedlinks, $page if ! defined $conflict;
+ }
+ }
+ }
+
+ return @fixedlinks;
+} #}}}
1
diff --git a/IkiWiki/Plugin/skeleton.pm.example b/IkiWiki/Plugin/skeleton.pm.example
index 7878d7c2b..f844ddb91 100644
--- a/IkiWiki/Plugin/skeleton.pm.example
+++ b/IkiWiki/Plugin/skeleton.pm.example
@@ -165,7 +165,7 @@ sub auth ($$) { #{{{
debug("skeleton plugin running in auth");
} #}}}
-sub sessionncgi ($$) { #{{{
+sub sessioncgi ($$) { #{{{
my $cgi=shift;
my $session=shift;
diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm
index 74d187cd2..bf53209fc 100644
--- a/IkiWiki/Plugin/tag.pm
+++ b/IkiWiki/Plugin/tag.pm
@@ -42,7 +42,6 @@ sub tagpage ($) { #{{{
my $tag=shift;
if ($tag !~ m{^\.?/} &&
- exists $config{tagbase} &&
defined $config{tagbase}) {
$tag=$config{tagbase}."/".$tag;
}
@@ -50,6 +49,21 @@ sub tagpage ($) { #{{{
return $tag;
} #}}}
+sub taglink ($$$;@) { #{{{
+ my $page=shift;
+ my $destpage=shift;
+ my $tag=shift;
+ my %opts=@_;
+
+ my $link=tagpage($tag);
+
+ # Force tag creation links to create the tag under /tagbase,
+ # if there is a tagbase and this tag used it.
+ $link="/".$link if $tag ne $link;
+
+ return htmllink($page, $destpage, $link, %opts);
+} #}}}
+
sub preprocess_tag (@) { #{{{
if (! @_) {
return "";
@@ -80,16 +94,14 @@ sub preprocess_taglink (@) { #{{{
my $tag=IkiWiki::linkpage($2);
$tags{$params{page}}{$tag}=1;
push @{$links{$params{page}}}, tagpage($tag);
- return htmllink($params{page}, $params{destpage},
- tagpage($tag),
+ return taglink($params{page}, $params{destpage}, $tag,
linktext => IkiWiki::pagetitle($1));
}
else {
my $tag=IkiWiki::linkpage($_);
$tags{$params{page}}{$tag}=1;
push @{$links{$params{page}}}, tagpage($tag);
- return htmllink($params{page}, $params{destpage},
- tagpage($tag));
+ return taglink($params{page}, $params{destpage}, $tag);
}
}
grep {
@@ -105,8 +117,7 @@ sub pagetemplate (@) { #{{{
$template->param(tags => [
map {
- link => htmllink($page, $destpage, tagpage($_),
- rel => "tag")
+ link => taglink($page, $destpage, $_, rel => "tag")
}, sort keys %{$tags{$page}}
]) if exists $tags{$page} && %{$tags{$page}} && $template->query(name => "tags");
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index 752d17643..ceb7c842c 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -279,7 +279,11 @@ sub refresh () { #{{{
else {
$f=~s/^\Q$config{srcdir}\E\/?//;
push @files, $f;
- $exists{pagename($f)}=1;
+ my $pagename = pagename($f);
+ if ($exists{$pagename}) {
+ debug(sprintf(gettext("%s has multiple possible source pages"), $pagename));
+ }
+ $exists{$pagename}=1;
}
}
},
diff --git a/debian/changelog b/debian/changelog
index ffa266137..2b7dd33c2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,20 @@
-ikiwiki (2.65) UNRELEASED; urgency=low
+ikiwiki (2.66) UNRELEASED; urgency=low
+
+ * recentchanges: Fix redirects to non-page files.
+ * aggregate: Avoid uninitialized value warnings for pages with no recorded
+ ctime.
+ * attachment: Add admin() pagespec to test if the uploading user is a wiki
+ admin.
+ * git: Fix handling of utf-8 filenames in recentchanges.
+ * tag: Make edit link for new tags ensure that the tags are created
+ inside tagbase, when it's set.
+ * htmlscrubber: Add a config setting that can be used to disable the
+ scrubber acting on a set of pages.
+ * Expand usage message and add --help. Closes: #500344
+
+ -- Joey Hess <joeyh@debian.org> Thu, 25 Sep 2008 13:45:55 -0400
+
+ikiwiki (2.65) unstable; urgency=low
* aggregate: Expire excess or old items on the same pass that adds them,
not only on subsequent passes.
@@ -7,8 +23,24 @@ ikiwiki (2.65) UNRELEASED; urgency=low
elements.
* progress: Display an error if the progress cannot be parsed, and allow
the percent parameter to only optionally end with "%".
+ * Fix reversion in use of ikiwiki -verbose -setup with a setup file that
+ enables syslog. Setup output is once again output to stdout in this
+ case.
+ * edittemplate: Default new page file type to the same type as the template.
+ (willu)
+ * edittemplate: Add "silent" parameter. (Willu)
+ * edittemplate: Link to template, to allow creating it. (Willu)
+ * editpage: Add a missing check that the page name contains only legal
+ characters, in addition to the existing check for pruned filenames.
+ * Print a debug message if a page has multiple source files.
+ * Add keepextension parameter to htmlize hook. (Willu)
+ * rename, remove: Don't rely on a form parameter to tell whether the page
+ should be treated as an attachment.
+ * rename: Add support for moving SubPages of a page when renaming it.
+ (Sponsored by The TOVA Company.)
+ * rename: Hide type field from rename form when renaming attachments.
- -- Joey Hess <joeyh@debian.org> Wed, 17 Sep 2008 14:26:56 -0400
+ -- Joey Hess <joeyh@debian.org> Wed, 24 Sep 2008 17:55:14 -0400
ikiwiki (2.64) unstable; urgency=low
diff --git a/doc/bugs/No_progress_in_progress_bar.mdwn b/doc/bugs/No_progress_in_progress_bar.mdwn
index 0b36b9e49..d67c55c8e 100644
--- a/doc/bugs/No_progress_in_progress_bar.mdwn
+++ b/doc/bugs/No_progress_in_progress_bar.mdwn
@@ -35,3 +35,9 @@ Anyone can confirm the bug? --[[Paweł|ptecza]]
>>>> You need the `div.progress` and `div.progress-done` from ikiwiki's
>>>> default `style.css`. --[[Joey]]
+
+>>>>> Thank you for the fix, Joey!
+
+>>>>> I had `div.progress*` in the `style.css` file, but my Epiphany didn't want
+>>>>> to display the progress bar... Now it's OK and I can see beautiful progress,
+>>>>> though I've not changed anything. --[[Paweł|ptecza]]
diff --git a/doc/bugs/index.html_is_made_visible_by_various_actions.mdwn b/doc/bugs/index.html_is_made_visible_by_various_actions.mdwn
new file mode 100644
index 000000000..580df9eb5
--- /dev/null
+++ b/doc/bugs/index.html_is_made_visible_by_various_actions.mdwn
@@ -0,0 +1,10 @@
+When you do various CGI actions, "index.html" is visible in the redirection URL. It's desirable that this is avoided, so there is only one visible URL for each page (search engines don't think that /foo/index.html is equivalent to /foo/, since this is not necessarily true for all servers and configurations).
+
+[The beautify branch in my repository](http://git.debian.org/?p=users/smcv/ikiwiki.git;a=shortlog;h=refs/heads/beautify) contains [[patches|patch]] for all the cases I found by grepping for "htmlpage", which are:
+
+* [[plugins/editpage]] redirects you to the page under various circumstances, most visibly after you finish editing it
+* [[plugins/poll]] redirects you to the poll after voting
+* [[plugins/recentchanges]] redirects you to the relevant page when you click a link
+* [[plugins/remove]] redirects you to the parent of the removed page
+
+I think the coding standard in future should be: use htmlpage when you want a local file, or urlto if you want a URL.
diff --git a/doc/bugs/multiple_pages_with_same_name.mdwn b/doc/bugs/multiple_pages_with_same_name.mdwn
new file mode 100644
index 000000000..5ddfb1f6b
--- /dev/null
+++ b/doc/bugs/multiple_pages_with_same_name.mdwn
@@ -0,0 +1,76 @@
+I'm just working on an updated solution to [[todo/automatic_use_of_syntax_plugin_on_source_code_files]] (see also [[plugins/contrib/highlightcode]] or [[plugins/contrib/sourcehighlight]]).
+
+I realised that this is going to have problems when you ask it to process `.c` and `.h` files with the same base name. e.g. `hello.c` and `hello.h`.
+
+I tested it briefly with `test.java` and `test.mdwn` just to see what would happen. Things got quite strange. The source-highlighting plugin was called (probably for the java file), but then when it calls `pagetype($pagesources{$page})` to figure out the file type, that function returns `mdwn`, which confuses things somewhat.
+
+> This is a known possible point of confusion. If there are multiple source
+> files, it will render them both, in an arbitrary sequence, so one "wins".
+> --[[Joey]]
+
+Anyway, I'm thinking about possible solutions. The best option I've come up with so far is: when registering an htmlize hook, add a new optional paramter 'keep_extension'. This would make a source file of `hello.c` generate a page with name `hello.c` rather than the current `hello`. This would keep the pages unique (until someone makes `hello.c.mdwn`...).
+
+Suggestions welcome.
+
+-- [[Will]]
+
+> Ok, this turned out not to be a hard change. [[patch]] is below. With this patch you can tell IkiWiki not to drop the suffix when you register a hook: `hook(type => "htmlize", id => $lang, call => \&htmlize, leavesuffix => 1);`
+
+>> I think that's a good solution to the problem that most syntax plugins
+>> have struggled with. It makes sense. It doesn't solve the case where
+>> you have source files without any extension (eg `Makefile`), but at
+>> least it covers the common cases.
+>>
+>> I'm going to be annoying and call it "keepextension", otherwise, applied
+>> as-is. --[[Joey]] [[done]]
+
+ diff --git a/IkiWiki.pm b/IkiWiki.pm
+ index 4e4da11..853f905 100644
+ --- a/IkiWiki.pm
+ +++ b/IkiWiki.pm
+ @@ -618,7 +618,7 @@ sub pagename ($) { #{{{
+
+ my $type=pagetype($file);
+ my $page=$file;
+ - $page=~s/\Q.$type\E*$// if defined $type;
+ + $page=~s/\Q.$type\E*$// if defined $type && !$hooks{htmlize}{$type}{leavesuffix};
+ return $page;
+ } #}}}
+
+ diff --git a/t/pagename.t b/t/pagename.t
+ index 96e6a87..58811b9 100755
+ --- a/t/pagename.t
+ +++ b/t/pagename.t
+ @@ -6,7 +6,7 @@ use Test::More tests => 5;
+ BEGIN { use_ok("IkiWiki"); }
+
+ # Used internally.
+ -$IkiWiki::hooks{htmlize}{mdwn}=1;
+ +$IkiWiki::hooks{htmlize}{mdwn}{call}=1;
+
+ is(pagename("foo.mdwn"), "foo");
+ is(pagename("foo/bar.mdwn"), "foo/bar");
+
+----
+
+I wonder if this patch will also be useful:
+
+> Reasonable, applied.
+
+ diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
+ index 752d176..3f1b67b 100644
+ --- a/IkiWiki/Render.pm
+ +++ b/IkiWiki/Render.pm
+ @@ -279,7 +279,11 @@ sub refresh () { #{{{
+ else {
+ $f=~s/^\Q$config{srcdir}\E\/?//;
+ push @files, $f;
+ - $exists{pagename($f)}=1;
+ + my $pagename = pagename($f);
+ + if ($exists{$pagename}) {
+ + warn(sprintf(gettext("Page %s has multiple possible source pages"), $pagename)."\n");
+ + }
+ + $exists{$pagename}=1;
+ }
+ }
+ },
diff --git a/doc/bugs/syntax_error_in_aggregate.mdwn b/doc/bugs/syntax_error_in_aggregate.mdwn
new file mode 100644
index 000000000..1e69e7fab
--- /dev/null
+++ b/doc/bugs/syntax_error_in_aggregate.mdwn
@@ -0,0 +1,11 @@
+Current git :
+
+ $ perl -c IkiWiki/Plugin/aggregate.pm
+ syntax error at IkiWiki/Plugin/aggregate.pm line 427, near "24;"
+ IkiWiki/Plugin/aggregate.pm had compilation errors.
+
+This prevents a Debian package build (due to `t/syntax.t`).
+
+Not knowing the units being used, I don't know where to add the missing parenthesis.
+
+[[done]]
diff --git a/doc/bugs/tags_base_dir_not_used_when_creating_new_tags.mdwn b/doc/bugs/tags_base_dir_not_used_when_creating_new_tags.mdwn
index 9c6189b08..f2243ab2d 100644
--- a/doc/bugs/tags_base_dir_not_used_when_creating_new_tags.mdwn
+++ b/doc/bugs/tags_base_dir_not_used_when_creating_new_tags.mdwn
@@ -38,3 +38,6 @@ tags located in tags/ and tags located in whatever/tags/.
> from the list when creating a new page..
>
> --[[Joey]]
+
+> And, this is [[done]], creating tags with tagbase will put them under the
+> tagbase, unless the tag name starts with "/". --[[Joey]]
diff --git a/doc/bugs/typo_in_skeleton.pm:_sessionncgi.mdwn b/doc/bugs/typo_in_skeleton.pm:_sessionncgi.mdwn
new file mode 100644
index 000000000..4772aceee
--- /dev/null
+++ b/doc/bugs/typo_in_skeleton.pm:_sessionncgi.mdwn
@@ -0,0 +1,5 @@
+skeleton.pm.example contains the typo "sessionncgi" when defining a sub, which means the skeleton plugin won't work as a session CGI action as-is. [My repository has a patch on the 'trivia' branch](http://git.debian.org/?p=users/smcv/ikiwiki.git;a=commitdiff;h=72ffc85d). --[[smcv]]
+
+[[!tag patch]]
+
+[[done]]
diff --git a/doc/bugs/unicode_encoded_urls_and_recentchanges.mdwn b/doc/bugs/unicode_encoded_urls_and_recentchanges.mdwn
new file mode 100644
index 000000000..d8696cb4c
--- /dev/null
+++ b/doc/bugs/unicode_encoded_urls_and_recentchanges.mdwn
@@ -0,0 +1,35 @@
+it appears that unicode characters in the title that are unicode letters are spared the __ filename encoding but instead saved in their utf8 encoding. (correct me if i'm wrong; didn't find the code that does this.) -- see below for examples.
+
+> Filenames can have any alphanumerics in them without the __ escaping.
+> Your locale determines whether various unicode characters are considered
+> alphanumeric. In other words, it just looks at the [[:alpha:]] character
+> class, whatever your locale defines it to be. --[[Joey]]
+
+this is not a problem per se, but (at least with git backend) the recent changes missinterpret the file name character set (it seems to read the filenames as latin1) and both display wrong titles and create broken links.
+
+the problem can be shown with an auto-setup'd ikiwiki without cgi when manually creating utf8 encoded filenames and running ikiwiki with LANG=en_GB.UTF-8 .
+
+> Encoding issue, I figured out a fix. [[done]] --[[Joey]]
+
+>> the link text works now, but the link goes to
+>> `ikiwiki.cgi?page=uml%C3%A4ute&do=recentchanges_link`, which fails with
+>> "missing page". it seems that bestlink can't handle utf8 encoded texts. (the
+>> same happens, by the way, when using meta-redir to a page with high bytes in
+>> the name.)
+>>
+>>> The problem is that all cgi inputs have to be explicitly decoded to
+>>> utf-8, which I've now done for `recentchange_link`.
+>>>
+>>> I cannot, however, reproduce a problem with meta redir. Here it
+>>> generated the following html, which redirected the browser ok:
+>>> <meta http-equiv="refresh" content="0; URL=./../â/" />
+>>
+>> update: i've had a look at the git options; you could run git with '-z' (NUL
+>> termination) in the `git_commit_info` function; this would require some
+>> changes in `parse_diff_tree`, but otherwise completely eliminate the
+>> problems with git escaping.
+>>
+>>> If you would like to develop a patch to that effect, I'd be glad to
+>>> drop the current nasty code.
+>>
+>> --[[chrysn]]
diff --git a/doc/css_market.mdwn b/doc/css_market.mdwn
index 776ab0a45..26720196f 100644
--- a/doc/css_market.mdwn
+++ b/doc/css_market.mdwn
@@ -47,7 +47,20 @@ files..)
templates.
[[!meta stylesheet="bma"]]
+* **[blankoblues.css][1]**, contributed by [[Blanko]]. Can be seen on [Blankoblues Demo][2]. Local.css and templates available [here][3].
+
+* **[contraste.css][4]**, contributed by [[Blanko]]. Can be seen on [Contraste Demo][5]. Local.css and templates available [here][6].
+
If your web browser allows selecting between multiple stylesheets, this
page can be viewed using many of the stylesheets above. For example, if
using Epiphany with the Select Stylesheet extension enabled, use View ->
Style. In Firefox or Iceweasel, use View -> Page Style.
+
+<!-- Page links -->
+
+ [1]: http://blankoworld.homelinux.com/demo/ikiwiki/blankoblues/src/local.css (Download Blankoblues CSS)
+ [2]: http://blankoworld.homelinux.com/demo/ikiwiki/blankoblues/htdocs/ (Take a tour on Blankoblues Demo)
+ [3]: http://blankoworld.homelinux.com/demo/ikiwiki/blankoblues/blankoblues.tar.gz (Download local.css and templates for Blankoblues theme)
+ [4]: http://blankoworld.homelinux.com/demo/ikiwiki/contraste/src/local.css (Download Contraste CSS)
+ [5]: http://blankoworld.homelinux.com/demo/ikiwiki/contraste/htdocs/ (Take a tour on Contraste Demo)
+ [6]: http://blankoworld.homelinux.com/demo/ikiwiki/contraste/contraste.tar.gz (Download local.css and templates for Contraste theme)
diff --git a/doc/ikiwiki/directive.mdwn b/doc/ikiwiki/directive.mdwn
index 8789849ad..c4342dee8 100644
--- a/doc/ikiwiki/directive.mdwn
+++ b/doc/ikiwiki/directive.mdwn
@@ -43,10 +43,3 @@ Here is a list of currently available directives in this wiki:
[[!listdirectives ]]
"""]]
-
-[[!if test="!enabled(listdirectives)" then="""
-Here is a list of all directives documented in this wiki. Not all of them may be enabled:
-
-[[!inline pages="ikiwiki/directive/* and !*/Discussion" archive="yes" sort=title
-rootpage="ikiwiki/directive/contrib" postformtext="Add a new directive named:" show=0]]
-"""]]
diff --git a/doc/ikiwiki/directive/edittemplate.mdwn b/doc/ikiwiki/directive/edittemplate.mdwn
index 779c3fa3c..d731bdb47 100644
--- a/doc/ikiwiki/directive/edittemplate.mdwn
+++ b/doc/ikiwiki/directive/edittemplate.mdwn
@@ -7,7 +7,9 @@ template, insert a [[ikiwiki/directive/template]] directive on some other page.
\[[!edittemplate template="bugtemplate" match="bugs/*"]]
In the above example, the page named "bugtemplate" is registered as a
-template to be used when any page named "bugs/*" is created.
+template to be used when any page named "bugs/*" is created. To avoid
+the directive displaying a note about the template being registered, add
+"silent=yes".
Often the template page contains a simple skeleton for a particular type of
page. For the bug report pages in the above example, it might look
diff --git a/doc/ikiwiki/formatting.mdwn b/doc/ikiwiki/formatting.mdwn
index 8b74cd73d..a8e0c58f8 100644
--- a/doc/ikiwiki/formatting.mdwn
+++ b/doc/ikiwiki/formatting.mdwn
@@ -77,7 +77,7 @@ you use the following additional features:
* Insert various [[directives|directive]] onto a page to perform useful
actions.
-[[!if test="enabled(toc) or enabled(meta) or (enabled(inline) and blog)" then="""
+[[!if test="enabled(toc) or enabled(meta) or (enabled(inline))" then="""
For example, you can:
"""]]
@@ -94,7 +94,7 @@ you use the following additional features:
\[[!meta title="full page title"]]
"""]]
-[[!if test="enabled(inline) and blog" then="""
+[[!if test="enabled(inline)" then="""
* Create a blog by inlining a set of pages:
\[[!inline pages="blog/*"]]
diff --git a/doc/ikiwiki/pagespec/attachment.mdwn b/doc/ikiwiki/pagespec/attachment.mdwn
index 6b86c510b..234fcdf02 100644
--- a/doc/ikiwiki/pagespec/attachment.mdwn
+++ b/doc/ikiwiki/pagespec/attachment.mdwn
@@ -41,6 +41,10 @@ additional tests:
Tests whether the attachment is being uploaded by a user with the
specified username. If openid is enabled, an openid can also be put here.
+* adminuser()
+
+ Tests whether the attachment is being uploded by one of the wiki admins.
+
* ip(address)
Tests whether the attacment is being uploaded from the specified IP
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index e4f13b155..6e234ceed 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -38,6 +38,7 @@ Projects
* [dist-bugs](http://dist-bugs.kitenet.net/)
* [Chaos Computer Club Düsseldorf](https://www.chaosdorf.de)
* [monkeysphere](http://web.monkeysphere.info/)
+* [The Walden Effect](http://www.waldeneffect.org/)
Personal sites and blogs
========================
@@ -98,6 +99,7 @@ Personal sites and blogs
* [madduck's (new) homepage](http://madduck.net)
* [Olivier Berger's professional homepage](http://www-public.it-sudparis.eu/~berger_o/)
* [Andrey Tarantsov's homepage](http://www.tarantsov.com/)
+* [Don Marti's blog](http://zgp.org/~dmarti/)
Please feel free to add your own ikiwiki site!
diff --git a/doc/news/version_2.61.mdwn b/doc/news/version_2.61.mdwn
deleted file mode 100644
index 24ab4ae08..000000000
--- a/doc/news/version_2.61.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-ikiwiki 2.61 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
- * poll: Fix typo that broke plugin.
- * graphviz: Fix breakage of the name of the preprocessor directive."""]] \ No newline at end of file
diff --git a/doc/news/version_2.65.mdwn b/doc/news/version_2.65.mdwn
new file mode 100644
index 000000000..db6afd988
--- /dev/null
+++ b/doc/news/version_2.65.mdwn
@@ -0,0 +1,25 @@
+ikiwiki 2.65 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+ * aggregate: Expire excess or old items on the same pass that adds them,
+ not only on subsequent passes.
+ * editdiff: Broken since 2.62 due to wrong syntax, now fixed.
+ * aggregate: Support atom feeds with only a summary element, and no content
+ elements.
+ * progress: Display an error if the progress cannot be parsed, and allow
+ the percent parameter to only optionally end with "%".
+ * Fix reversion in use of ikiwiki -verbose -setup with a setup file that
+ enables syslog. Setup output is once again output to stdout in this
+ case.
+ * edittemplate: Default new page file type to the same type as the template.
+ (willu)
+ * edittemplate: Add "silent" parameter. (Willu)
+ * edittemplate: Link to template, to allow creating it. (Willu)
+ * editpage: Add a missing check that the page name contains only legal
+ characters, in addition to the existing check for pruned filenames.
+ * Print a debug message if a page has multiple source files.
+ * Add keepextension parameter to htmlize hook. (Willu)
+ * rename, remove: Don't rely on a form parameter to tell whether the page
+ should be treated as an attachment.
+ * rename: Add support for moving SubPages of a page when renaming it.
+ (Sponsored by The TOVA Company.)
+ * rename: Hide type field from rename form when renaming attachments."""]] \ No newline at end of file
diff --git a/doc/plugins/htmlscrubber.mdwn b/doc/plugins/htmlscrubber.mdwn
index b651ffc99..7db372e1b 100644
--- a/doc/plugins/htmlscrubber.mdwn
+++ b/doc/plugins/htmlscrubber.mdwn
@@ -31,6 +31,12 @@ Note that enabling or disabling the htmlscrubber plugin also affects some
other HTML-related functionality, such as whether [[meta]] allows
potentially unsafe HTML tags.
+The `htmlscrubber_skip` configuration setting can be used to skip scrubbing
+of some pages. Set it to a [[PageSpec]], such as "!*/Discussion", and pages
+matching that can have all the evil CSS, JavsScript, and unsafe html
+elements you like. One safe way to use this is to use [[lockedit]] to lock
+those pages, so only admins can edit them.
+
----
Some examples of embedded javascript that won't be let through when this
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index 920fb8797..1cdea6a77 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -188,6 +188,10 @@ languages to ikiwiki.
The function is passed named parameters: "page" and "content" and should
return the htmlized content.
+If `hook` is passed an optional "keepextension" parameter, set to a true
+value, then this extension will not be stripped from the source filename when
+generating the page.
+
### pagetemplate
hook(type => "pagetemplate", id => "foo", call => \&pagetemplate);
@@ -518,6 +522,9 @@ parameters are passed to `HTML::Template->new`.
Passed a page name, returns the base name that will be used for a the html
page created from it. (Ie, it appends ".html".)
+Use this when constructing the filename of a html file. Use `urlto` when
+generating a link to a page.
+
#### `add_depends($$)`
Makes the specified page depend on the specified [[ikiwiki/PageSpec]].
@@ -719,8 +726,8 @@ Changes can be staged by calls to `rcs_add, `rcs_remove`, and
Adds the passed file to the archive. The filename is relative to the root
of the srcdir.
-Note that this should not check the new file in, it should only
-prepare for it to be checked in when rcs_commit (or `rcs_commit_staged`) is
+Note that this should not commit the new file, it should only
+prepare for it to be committed when rcs_commit (or `rcs_commit_staged`) is
called. Note that the file may be in a new subdir that is not yet in
to version control; the subdir can be added if so.
@@ -728,9 +735,9 @@ to version control; the subdir can be added if so.
Remove a file. The filename is relative to the root of the srcdir.
-Note that this should not check the removal in, it should only prepare for it
-to be checked in when `rcs_commit` (or `rcs_commit_staged`) is called. Note
-that the new file may be in a new subdir that is not yet inversion
+Note that this should not commit the removal, it should only prepare for it
+to be committed when `rcs_commit` (or `rcs_commit_staged`) is called. Note
+that the new file may be in a new subdir that is not yet in version
control; the subdir can be added if so.
#### `rcs_rename($$)`
diff --git a/doc/roadmap.mdwn b/doc/roadmap.mdwn
index 2de058b2d..6e5b257a6 100644
--- a/doc/roadmap.mdwn
+++ b/doc/roadmap.mdwn
@@ -46,6 +46,8 @@ Version 3.0 will be an opportunity to make significant transitions.
* Default to using `aggregateinternal`.
* Remove deprecated prefs form settings for `allowed_attachments` and
`locked_pages`.
+* Finalise a new version of the plugin API, exporting additional commonly
+ used functions from IkiWiki.pm
It will include a vast number of new features, bugfixes, and other
improvements, far too many to list here.
diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index 424bf46bb..9e709172a 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -2,7 +2,7 @@ This is the SandBox, a page anyone can edit to try out ikiwiki.
----
-Here's a paragraph.
+Here's a paragraph. สวัสดี
The following code block is pre-formatted:
@@ -76,6 +76,8 @@ The haiku will change after every save, mind you.
* [[foo]]
* WikiLink
+Test
+
-----
This SandBox is also a [[blog]]!
diff --git a/doc/todo/Allow_edittemplate_to_set_file_type.mdwn b/doc/todo/Allow_edittemplate_to_set_file_type.mdwn
index 9981c530b..b49968c18 100644
--- a/doc/todo/Allow_edittemplate_to_set_file_type.mdwn
+++ b/doc/todo/Allow_edittemplate_to_set_file_type.mdwn
@@ -5,6 +5,9 @@ Below is a [[patch]] to [[plugins/edittemplate]] that does a few things:
* It makes the description of what was registered link to the template page (which gives feedback for typos or allows template creation)
* It adds a colon to the standard string correcting the syntax.
+[[done]] except for the colon change; it's referring to the template as an
+edittemplate there. --[[Joey]]
+
----
diff --git a/IkiWiki/Plugin/edittemplate.pm b/IkiWiki/Plugin/edittemplate.pm
@@ -38,3 +41,4 @@ Below is a [[patch]] to [[plugins/edittemplate]] that does a few things:
return;
}
}
+
diff --git a/doc/todo/Better_bug_tracking_support.mdwn b/doc/todo/Better_bug_tracking_support.mdwn
index 628a67fc8..1a810ad55 100644
--- a/doc/todo/Better_bug_tracking_support.mdwn
+++ b/doc/todo/Better_bug_tracking_support.mdwn
@@ -44,7 +44,18 @@ be embedded to the source code repository commit messages.
>> look like a wikipage anymore, but rather something like the Debian
>> BTS web-interface, but it would still benefit from wikilinks to the
>> documentation in the wiki etc.
->>
+
+>>> I think it is useful to look at these things separately:
+>>>
+>>> * Bug numbers: See above.
+>>> * Automatic timestamps on comments: this already exists with the inline directive.
+>>> * Email interface: You can certainly get an rss feed of what changes in the wiki.
+>>> * You didn't mention [[todo/structured_page_data]] but that is, I think, part
+>>> of what you seem to be saying.
+>>> * [[todo/tracking_bugs_with_dependencies]] is also important.
+>>>
+>>> -- [[Will]]
+
>> About the commit message interface: I was thinking about a project
>> architecture where the code is kept in a separate revision control
>> system branch than the metadata (blog, wiki, BTS). This would IMHO
diff --git a/doc/todo/Feature_parity_with_Trac.mdwn b/doc/todo/Feature_parity_with_Trac.mdwn
index dab151d81..8693da5e3 100644
--- a/doc/todo/Feature_parity_with_Trac.mdwn
+++ b/doc/todo/Feature_parity_with_Trac.mdwn
@@ -7,6 +7,9 @@ Features needed:
* Source code viewing: This can be handled quite well with a [[shortcut|shortcuts]] to an external source viewer, or by putting
the source in the wiki itself (see the [[todo/automatic_use_of_syntax_plugin_on_source_code_files]] wishlist item) and using the
[[plugins/contrib/highlightcode]] or [[plugins/contrib/sourcehighlight]] plugins.
+ * This could be improved with [[todo/source_link]].
+ * Currently the source highlighting is a little problematic, as there can be two source files with the same wikiname.
+ e.g. a `hello-world.c` and `hello-world.h`. See [[bugs/multiple_pages_with_same_name]]
* Trac 'Timeline' feature: view history of the RCS - the `recentchanges` button.
* Trac 'Roadmap' feature: Which TODOs/bugs are needed for which milestones. Use the [[plugins/progress]] directive to show percentage complete for each milestone.
* Bug tracking: see [[tips/integrated_issue_tracking_with_ikiwiki]] and [[todo/Updated_bug_tracking_example]].
diff --git a/doc/todo/Location_of_pages_starting_with___36__tagbase_should_be_in__by_default.mdwn b/doc/todo/Location_of_pages_starting_with___36__tagbase_should_be_in__by_default.mdwn
index d264bd209..98a92dddc 100644
--- a/doc/todo/Location_of_pages_starting_with___36__tagbase_should_be_in__by_default.mdwn
+++ b/doc/todo/Location_of_pages_starting_with___36__tagbase_should_be_in__by_default.mdwn
@@ -11,3 +11,5 @@ subpage: `<current>/$tagbase/<tagname>`.
See also: [[bugs/tags_base_dir_not_used_when_creating_new_tags]]
[[!tag wishlist]]
+
+[[done]]
diff --git a/doc/todo/automatic_use_of_syntax_plugin_on_source_code_files/discussion.mdwn b/doc/todo/automatic_use_of_syntax_plugin_on_source_code_files/discussion.mdwn
new file mode 100644
index 000000000..2fad9f19a
--- /dev/null
+++ b/doc/todo/automatic_use_of_syntax_plugin_on_source_code_files/discussion.mdwn
@@ -0,0 +1,159 @@
+Here is another [[patch]] for this. It is more up to date than either of the patches linked on the previous page. It is most similar to [[plugins/contrib/sourcehighlight]].
+
+Note that if this is being used with `c` or `c++` then you'll probably want to wait until [[bugs/multiple_pages_with_same_name]] is fixed.
+
+-- [[Will]]
+
+----
+
+ #!/usr/bin/perl
+ # markup source files
+ package IkiWiki::Plugin::sourcecode;
+
+ use warnings;
+ use strict;
+ use IkiWiki 2.00;
+ use open qw{:utf8 :std};
+
+ my %metaheaders;
+
+ sub import { #{{{
+ hook(type => "getsetup", id => "sourcecode", call => \&getsetup);
+ hook(type => "checkconfig", id => "sourcecode", call => \&checkconfig);
+ hook(type => "pagetemplate", id => "sourcecode", call => \&pagetemplate);
+ } # }}}
+
+ sub getsetup () { #{{{
+ return
+ plugin => {
+ safe => 1,
+ rebuild => 1, # format plugin
+ },
+ sourcecode_command => {
+ type => "string",
+ example => "/usr/bin/source-highlight",
+ description => "The command to execute to run source-highlight",
+ safe => 0,
+ rebuild => 1,
+ },
+ sourcecode_lang => {
+ type => "string",
+ example => "c,cpp,h,java",
+ description => "Comma separated list of suffixes to recognise as source code",
+ safe => 1,
+ rebuild => 1,
+ },
+ sourcecode_linenumbers => {
+ type => "boolean",
+ example => 1,
+ description => "Should we add line numbers to the source code",
+ safe => 1,
+ rebuild => 1,
+ },
+ sourcecode_css => {
+ type => "string",
+ example => "sourcecode_style",
+ description => "page to use as css file for source",
+ safe => 1,
+ rebuild => 1,
+ },
+ } #}}}
+
+ sub checkconfig () { #{{{
+ if (! $config{sourcecode_lang}) {
+ error("The sourcecode plugin requires a list of suffixes in the 'sourcecode_lang' config option");
+ }
+
+ if (! $config{sourcecode_command}) {
+ $config{sourcecode_command} = "source-highlight";
+ }
+
+ if (! length `which $config{sourcecode_command} 2>/dev/null`) {
+ error("The sourcecode plugin is unable to find the $config{sourcecode_command} command");
+ }
+
+ if (! $config{sourcecode_css}) {
+ $config{sourcecode_css} = "sourcecode_style";
+ }
+
+ if (! defined $config{sourcecode_linenumbers}) {
+ $config{sourcecode_linenumbers} = 1;
+ }
+
+ my %langs = ();
+
+ open(LANGS, "$config{sourcecode_command} --lang-list|");
+ while (<LANGS>) {
+ if ($_ =~ /(\w+) = .+\.lang/) {
+ $langs{$1} = 1;
+ }
+ }
+ close(LANGS);
+
+ foreach my $lang (split(/[, ]+/, $config{sourcecode_lang})) {
+ if ($langs{$lang}) {
+ hook(type => "htmlize", id => $lang, call => \&htmlize);
+ } else {
+ error("Your installation of source-highlight cannot handle sourcecode language $lang!");
+ }
+ }
+ } #}}}
+
+ sub htmlize (@) { #{{{
+ my %params=@_;
+
+ my $page = $params{page};
+
+ eval q{use FileHandle};
+ error($@) if $@;
+ eval q{use IPC::Open2};
+ error($@) if $@;
+
+ local(*SPS_IN, *SPS_OUT); # Create local handles
+
+ my @args;
+
+ if ($config{sourcecode_linenumbers}) {
+ push @args, '--line-number= ';
+ }
+
+ my $pid = open2(*SPS_IN, *SPS_OUT, $config{sourcecode_command},
+ '-s', IkiWiki::pagetype($pagesources{$page}),
+ '-c', $config{sourcecode_css}, '--no-doc',
+ '-f', 'xhtml',
+ @args);
+
+ error("Unable to open $config{sourcecode_command}") unless $pid;
+
+ print SPS_OUT $params{content};
+ close SPS_OUT;
+
+ my @html = <SPS_IN>;
+ close SPS_IN;
+
+ waitpid $pid, 0;
+
+ my $stylesheet=bestlink($page, $config{sourcecode_css}.".css");
+ if (length $stylesheet) {
+ push @{$metaheaders{$page}}, '<link href="'.urlto($stylesheet, $page).'"'.
+ ' rel="stylesheet"'.
+ ' type="text/css" />';
+ }
+
+ return '<div id="sourcecode">'."\r\n".join("\r\n",@html)."\r\n</div>\n";
+ } # }}}
+
+ sub pagetemplate (@) { #{{{
+ my %params=@_;
+
+ my $page=$params{page};
+ my $template=$params{template};
+
+ if (exists $metaheaders{$page} && $template->query(name => "meta")) {
+ # avoid duplicate meta lines
+ my %seen;
+ $template->param(meta => join("\n", grep { (! $seen{$_}) && ($seen{$_}=1) } @{$metaheaders{$page}}));
+ }
+ } # }}}
+
+ 1
diff --git a/doc/todo/inline:_numerical_ordering_by_title.mdwn b/doc/todo/inline:_numerical_ordering_by_title.mdwn
index ecad4f9db..95511d998 100644
--- a/doc/todo/inline:_numerical_ordering_by_title.mdwn
+++ b/doc/todo/inline:_numerical_ordering_by_title.mdwn
@@ -20,6 +20,13 @@ anymore.
Do you have any idea how to workaround that issue? --[[Paweł|ptecza]]
+> Delete all files. Add files back one at a time, committing after adding
+> each file. Sort by date. --[[Joey]]
+
+>> The simplest solutions are the best :D Thanks for the hint! I didn't
+>> want to do it before, because I was affaid that my Subversion keeps
+>> old date of creation of file. --[[Paweł|ptecza]]
+
> Maybe you can rename `9.mdwn` to `09.mdwn`? See `rename(1)`, it renames multiple files
> in one go. --[[buo]]
@@ -30,6 +37,17 @@ Do you have any idea how to workaround that issue? --[[Paweł|ptecza]]
>> I don't want to rename all previous files to add `0` prefix. --[[Paweł|ptecza]]
+>>> Rather than adding 0's or or a 'sorttype' parameter, I'd just fix the sort order.
+>>> Both MacOS and Windows use a smarter sort order than just lexical in their
+>>> file browsers (e.g. <http://support.microsoft.com/default.aspx?kbid=319827>,
+>>> <http://docs.info.apple.com/article.html?artnum=300989>).
+>>>
+>>> The [Unicode Collation algorithm](http://en.wikipedia.org/wiki/Unicode_collation_algorithm)
+>>> would seem to be a reasonable sort order. (See also <http://www.unicode.org/unicode/reports/tr10/>.)
+>>> Unfortunately the standard perl implementation, [Unicode::Collate](http://perldoc.perl.org/Unicode/Collate.html)
+>>> doesn't handle the optional [numbers](http://www.unicode.org/unicode/reports/tr10/#Customization)
+>>> extension which is what you want. --[[Will]]
+
---
Below is my simple patch. Feel free to use it or comment!
@@ -38,10 +56,18 @@ I have also 2 considerations for inline sorting:
1. Maybe changing name of `sort` parameter to `sortby` or `sortkey` will
be good idea?
+
+ > No, that would break existing wikis. --[[Joey]]
+ >> It's no problem. You just have `ikiwiki-transition` utility :D --[[Paweł|ptecza]]
+
1. Maybe you should use `title` sort key for title from meta plugin and `name`,
`filename`, `page` or `pagename` for page names? In the future you can also
sort by meta author, license or another key.
+ > There are many places in ikiwiki that do not use meta title info and
+ > could. I'd prefer to deal with that issue as a whole, not here,
+ > --[[Joey]]
+
--[[Paweł|ptecza]]
--- inline.pm-orig 2008-09-02 09:53:20.000000000 +0200
@@ -72,3 +98,155 @@ I have also 2 considerations for inline sorting:
}
if (yesno($params{reverse})) {
+
+> To users, "sort" already determines the type of sort. It can be by title,
+> or by date, etc. Adding a separate "sorttype" value is thus fairly
+> confusing. --[[Joey]]
+
+>> OK. I will be more careful when I play with inline plugin :) --[[Paweł|ptecza]]
+
+---
+
+Joey, have you forgotten about that request? ;) --[[Paweł|ptecza]]
+
+> Okie. Here is a different [[patch]] based on my comment above. It doesn't introduce
+> a new key, but rather changes the title sorting order. Two caveats:
+
+ * I've only tested this in `inline`, not the other places I changed the sort order.
+ * I'm unsure if the regexp used in the split should be `/(-?\d+)/` instead of `/(\d+)/`.
+ As written, '-' is interpreted as a hyphen rather than a minus sign.
+
+> --[[Will]]
+
+>> I"m not comfortable with tossing out perl's default collator and trying
+>> to maintain some other one going forward. Especially not for such an
+>> edge case. --[[Joey]]
+
+>> Hi Will! Your idea looks interesting for me, but I'm affraid that it's too big
+>> change in Ikiwiki... Maybe I'm wrong? ;) What do you think, Joey? --[[Paweł|ptecza]]
+
+>>> It isn't that big a change. It is just supplying a sort order to the sort. The
+>>> patch is a little larger because I then went through and made that sort
+>>> order available in other places where it makes sense. (Looking at the
+>>> patch again briefly, I should have also used it in the `map` plugin.)
+>>>
+>>> If you wanted a simple patch, you could just move the `titlecmp` function
+>>> into the inline plugin and only use it there. The problem with that is that
+>>> it only fixes the inline plugin. -- [[Will]]
+
+>>>> Will, I agree with you that it's improved way of sort order. But on the other
+>>>> hand I prefer to be careful when I change something in a several places,
+>>>> because I don't want to break any working things when I fix one thing.
+>>>> I hope that Joey agree with us too and all Ikiwiki users will be happy
+>>>> after applying your patch ;) --[[Paweł|ptecza]]
+
+----
+
+ diff --git a/IkiWiki.pm b/IkiWiki.pm
+ index c0f5dea..d001f8d 100644
+ --- a/IkiWiki.pm
+ +++ b/IkiWiki.pm
+ @@ -20,7 +20,7 @@ use Exporter q{import};
+ our @EXPORT = qw(hook debug error template htmlpage add_depends pagespec_match
+ bestlink htmllink readfile writefile pagetype srcfile pagename
+ displaytime will_render gettext urlto targetpage
+ - add_underlay
+ + add_underlay titlecmp
+ %config %links %pagestate %renderedfiles
+ %pagesources %destsources);
+ our $VERSION = 2.00; # plugin interface version, next is ikiwiki version
+ @@ -835,6 +835,42 @@ sub titlepage ($) { #{{{
+ return $title;
+ } #}}}
+
+ +sub titlecmp ($$) { #{{{
+ + my $titleA=shift;
+ + my $titleB=shift;
+ +
+ + my @listA=split(/(\d+)/,$titleA);
+ + my @listB=split(/(\d+)/,$titleB);
+ +
+ + while (@listA && @listB) {
+ + # compare bits of text
+ + my $a = shift @listA;
+ + my $b = shift @listB;
+ + my $c = ($a cmp $b);
+ + return $c if ($c);
+ +
+ + if (@listA && @listB) {
+ + # compare numbers
+ + $a = shift @listA;
+ + $b = shift @listB;
+ + $c = $a <=> $b;
+ + return $c if ($c);
+ +
+ + # 01 is different to 1
+ + $c = (length($a) <=> length($b));
+ + return $c if ($c);
+ +
+ + $c = ($a cmp $b);
+ + return $c if ($c);
+ + }
+ + }
+ +
+ + return 1 if (@listA);
+ + return -1 if (@listB);
+ +
+ + return 0;
+ +} #}}}
+ +
+ sub linkpage ($) { #{{{
+ my $link=shift;
+ my $chars = defined $config{wiki_file_chars} ? $config{wiki_file_chars} : "-[:alnum:]+/.:_";
+ diff --git a/IkiWiki/Plugin/brokenlinks.pm b/IkiWiki/Plugin/brokenlinks.pm
+ index 37752dd..ccaa399 100644
+ --- a/IkiWiki/Plugin/brokenlinks.pm
+ +++ b/IkiWiki/Plugin/brokenlinks.pm
+ @@ -59,7 +59,7 @@ sub preprocess (@) { #{{{
+ map {
+ "<li>$_</li>"
+ }
+ - sort @broken)
+ + sort titlecmp @broken)
+ ."</ul>\n";
+ } # }}}
+
+ diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm
+ index 8efef3f..263e7a6 100644
+ --- a/IkiWiki/Plugin/inline.pm
+ +++ b/IkiWiki/Plugin/inline.pm
+ @@ -192,7 +192,7 @@ sub preprocess_inline (@) { #{{{
+ }
+
+ if (exists $params{sort} && $params{sort} eq 'title') {
+ - @list=sort { pagetitle(basename($a)) cmp pagetitle(basename($b)) } @list;
+ + @list=sort { titlecmp(pagetitle(basename($a)),pagetitle(basename($b))) } @list;
+ }
+ elsif (exists $params{sort} && $params{sort} eq 'mtime') {
+ @list=sort { $pagemtime{$b} <=> $pagemtime{$a} } @list;
+ diff --git a/IkiWiki/Plugin/orphans.pm b/IkiWiki/Plugin/orphans.pm
+ index b910758..10a1d87 100644
+ --- a/IkiWiki/Plugin/orphans.pm
+ +++ b/IkiWiki/Plugin/orphans.pm
+ @@ -56,7 +56,7 @@ sub preprocess (@) { #{{{
+ htmllink($params{page}, $params{destpage}, $_,
+ noimageinline => 1).
+ "</li>"
+ - } sort @orphans).
+ + } sort titlecmp @orphans).
+ "</ul>\n";
+ } # }}}
+
+ diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
+ index ceb7c84..00798e1 100644
+ --- a/IkiWiki/Render.pm
+ +++ b/IkiWiki/Render.pm
+ @@ -89,7 +89,7 @@ sub genpage ($$) { #{{{
+ $template->param(have_actions => 1);
+ }
+
+ - my @backlinks=sort { $a->{page} cmp $b->{page} } backlinks($page);
+ + my @backlinks=sort { titlecmp($a->{page}, $b->{page}) } backlinks($page);
+ my ($backlinks, $more_backlinks);
+ if (@backlinks <= $config{numbacklinks} || ! $config{numbacklinks}) {
+ $backlinks=\@backlinks;
diff --git a/doc/todo/source_link.mdwn b/doc/todo/source_link.mdwn
index 40886be55..93791c81a 100644
--- a/doc/todo/source_link.mdwn
+++ b/doc/todo/source_link.mdwn
@@ -1,3 +1,104 @@
How about a direct link from the page header to the source of the latest version, to avoid the need to either use edit or navigate to the current version via the history link?
I'd like this too (and might try to implement it). -- [[jondowland]]
+
+I just implemented this. There is one [[patch]] to the default page template, and a new plugin. -- [[Will]]
+
+----
+
+ diff --git a/templates/page.tmpl b/templates/page.tmpl
+ index f2f9c34..3176bed 100644
+ --- a/templates/page.tmpl
+ +++ b/templates/page.tmpl
+ @@ -46,6 +46,9 @@
+ <TMPL_IF NAME="HISTORYURL">
+ <li><a href="<TMPL_VAR HISTORYURL>">History</a></li>
+ </TMPL_IF>
+ +<TMPL_IF NAME="GETSOURCEURL">
+ +<li><a href="<TMPL_VAR GETSOURCEURL>">Get Source</a></li>
+ +</TMPL_IF>
+ <TMPL_IF NAME="PREFSURL">
+ <li><a href="<TMPL_VAR PREFSURL>">Preferences</a></li>
+ </TMPL_IF>
+
+----
+
+ #!/usr/bin/perl
+ package IkiWiki::Plugin::getsource;
+
+ use warnings;
+ use strict;
+ use IkiWiki;
+ use open qw{:utf8 :std};
+
+ sub import { #{{{
+ hook(type => "getsetup", id => "getsource", call => \&getsetup);
+ hook(type => "pagetemplate", id => "getsource", call => \&pagetemplate);
+ hook(type => "sessioncgi", id => "getsource", call => \&cgi_getsource);
+ } # }}}
+
+ sub getsetup () { #{{{
+ return
+ plugin => {
+ safe => 1,
+ rebuild => 1,
+ },
+ getsource_mimetype => {
+ type => "string",
+ example => "application/octet-stream",
+ description => "Mime type for returned source.",
+ safe => 1,
+ rebuild => 0,
+ },
+ } #}}}
+
+ sub pagetemplate (@) { #{{{
+ my %params=@_;
+
+ my $page=$params{page};
+ my $template=$params{template};
+
+ if (length $config{cgiurl}) {
+ $template->param(getsourceurl => IkiWiki::cgiurl(do => "getsource", page => $page));
+ $template->param(have_actions => 1);
+ }
+ } # }}}
+
+ sub cgi_getsource ($$) { #{{{
+ my $cgi=shift;
+ my $session=shift;
+
+ # Note: we use sessioncgi rather than just cgi
+ # because we need $IkiWiki::pagesources{} to be
+ # populated.
+
+ return unless (defined $cgi->param('do') &&
+ $cgi->param("do") eq "getsource");
+
+ IkiWiki::decode_cgi_utf8($cgi);
+
+ my $page=$cgi->param('page');
+
+ if ($IkiWiki::pagesources{$page}) {
+
+ my $data = IkiWiki::readfile(IkiWiki::srcfile($IkiWiki::pagesources{$page}));
+
+ if (! $config{getsource_mimetype}) {
+ $config{getsource_mimetype} = "text/plain";
+ }
+
+ print "Content-Type: $config{getsource_mimetype}\r\n";
+
+ print ("\r\n");
+
+ print $data;
+
+ exit 0;
+ }
+
+ error("Unable to find page source for page: $page");
+
+ exit 0;
+ }
+
+ 1
diff --git a/doc/todo/structured_page_data.mdwn b/doc/todo/structured_page_data.mdwn
index 62d5f04d6..2a196ed23 100644
--- a/doc/todo/structured_page_data.mdwn
+++ b/doc/todo/structured_page_data.mdwn
@@ -165,6 +165,89 @@ See also:
>>>> I've just updated the second of the two patches below. The two patches are not mutually
>>>> exclusive, but I'm leaning towards the second as more useful (for the things I'm doing). -- [[Will]]
+I think it's awesome that you're writing this code to explore the problem
+space, [[Will]] -- and these plugins are good stabs at at least part of it.
+Let me respond to a few of your comments.. --[[Joey]]
+
+On use cases, one use case is a user posting a bug report with structured
+data in it. A template is one way, but then the user has to deal with the
+format used to store the structured data. This is where a edit-time form
+becomes essential.
+
+> This was the idea with the 'form' plugin. With the 'data' plugin I was exploring
+> a different approach: try to keep the markup simple enough that the user can edit
+> the markup directly, and still have that be ok. I admit it is a stretch, but I thought
+> it worth exploring.
+
+Another use case is, after many such bugs have been filed,
+wanting to add a new field to each bug report. To avoid needing to edit
+every bug report it would be good if the fields in a bug report were
+defined somewhere else, so that just that one place can be edited to add
+the new field, and it will show up in each bug report (and in each bug
+report's edit page, as a new form field).
+
+> If I was going to do that, I'd use a perl script on a checked out
+> workspace. I think you're describing a rare operation and
+> so I'd be happy not having a web interface for it. Having said that,
+> if you just wanted to change the form for *new* pages, then you
+> can just edit the template used to create new pages.
+
+Re the form plugin, I'm uncomfortable with tying things into
+[[!cpan CGI::FormBuilder]] quite so tightly as you have.
+
+> Yeah :). But I wanted to explore the space and that was the
+> easiest way to start.
+
+CGI::FormBuilder
+could easily change in a way that broke whole wikis full of pages. Also,
+needing to sanitize FormBuilder fields with security implications is asking
+for trouble, since new FormBuilder features could add new fields, or
+add new features to existing fields (FormBuilder is very DWIM) that open
+new security holes.
+
+> There is a list of allowed fields. I only interpret those.
+
+I think that having a type system, that allows defining specific types,
+like "email address", by writing code (that in turn can use FormBuilder),
+is a better approach, since it should avoid becoming a security problem.
+
+> That would be possible. I think an extension to the 'data' plugin might
+> work here.
+
+One specific security hole, BTW, is that if you allow the `validate` field,
+FormBuilder will happily treat it as a regexp, and we don't want to expose
+arbitrary perl regexps, since they can at least DOS a system, and can
+probably be used to run arbitrary perl code.
+
+> I validate the validate field :). It only allows validate fields that match
+> `/^[\w\s]+$/`. This means you can really only use the pre-defined
+> validation types in FormBuilder.
+
+The data plugin only deals with a fairly small corner of the problem space,
+but I think does a nice job at what it does. And could probably be useful
+in a large number of other cases.
+
+> I think the data plugin is more likely to be useful than the form plugin.
+> I was thinking of extending the data directive by allowing an 'id' parameter.
+> When you have an id parameter, then you can display a small form for that
+> data element. The submission handler would look through the page source
+> for the data directive with the right id parameter and edit it. This would
+> make the data directive more like the current 'form' plugin.
+
+> That is making things significantly more complex for less significant gain though. --[[Will]]
+
+> Oh, one quick other note. The data plugin below was designed to handle multiple
+> data elements in a single directive. e.g.
+
+ \[[!data key="Depends on" link="bugs/bugA" link="bugs/bugB" value=6]]
+
+> would match `data_eq(Depends on,6)`, `data_link(Depends on,bugs/bugA)`, `data_link(Depends on,bugs/bugB)`
+> or, if you applied the patch in [[todo/tracking_bugs_with_dependencies]] then you can use 'defined pagespecs'
+> such as `data_link(Depends on,~openBugs)`. The ability to label links like this allows separation of
+> dependencies between bugs from arbitrary links.
+
+----
+
#!/usr/bin/perl
# Interpret YAML data to make a web form
package IkiWiki::Plugin::form;
diff --git a/doc/todo/supporting_comments_via_disussion_pages.mdwn b/doc/todo/supporting_comments_via_disussion_pages.mdwn
index 80b375db3..e0495c8c2 100644
--- a/doc/todo/supporting_comments_via_disussion_pages.mdwn
+++ b/doc/todo/supporting_comments_via_disussion_pages.mdwn
@@ -182,3 +182,34 @@ My approach is:
I've also updated Marcelo's code (above) to current ikiwiki, and moved it to a "marceloblogcomment" namespace - it's in the "marcelocomments" branch of my repository (see <http://git.debian.org/?p=users/smcv/ikiwiki.git;a=log;h=refs/heads/marcelocomments>). I had to reconstitute the .tmpl file, which Marcelo didn't post here.
--[[smcv]]
+
+OK, the postcomment branch in my repository contains an implementation. What
+do you think so far? Known issues include:
+
+* The combination of RSS/Atom links and the "post new comment..." button is
+ ugly - I need a way to integrate the "new comment" button into the feed links
+ somehow, like the way inline embeds its own "new blog post..." feature
+ (I don't think the current way really scales, though)
+
+* There are some tweakables (whether to commit comments into the VCS, whether
+ wikilinks are allowed, whether directives are allowed) that are theoretically
+ configurable, but are currently hard-coded
+
+* The wikilink/directive disarming doesn't work unless you have
+ prefixdirectives set (which I just realised)
+
+* \[[!smcvpostcomment]] now displays the comments too, by invoking \[[!inline]]
+ with suitable parameters - but it does so in a very ugly way
+
+* Start-tags in a comment with no corresponding end-tag break page formatting
+ (unless htmltidy is enabled - inline and aggregate have the same problem)
+
+* There is no access control, so anonymous users can always comment, and so
+ can all logged-in users. Perhaps we need to extend canedit() to support
+ different types of edit? Or perhaps I should ignore canedit() and make the
+ access control configurable via a parameter to \[[!smcvpostcomment]]?
+ I'd like to be able to let anonymous (or at least non-admin) users comment
+ on existing pages, but not edit or create pages (but perhaps I'm being too
+ un-wikiish).
+
+--[[smcv]]
diff --git a/doc/todo/tracking_bugs_with_dependencies.mdwn b/doc/todo/tracking_bugs_with_dependencies.mdwn
index 8435e9f58..3af0458bd 100644
--- a/doc/todo/tracking_bugs_with_dependencies.mdwn
+++ b/doc/todo/tracking_bugs_with_dependencies.mdwn
@@ -191,7 +191,7 @@ account all comments above (which doesn't mean it is above reproach :) ). --[[W
----
diff --git a/IkiWiki.pm b/IkiWiki.pm
- index 4e4da11..2cc5f09 100644
+ index 4e4da11..8b3cdfe 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -1550,7 +1550,16 @@ sub globlist_to_pagespec ($) { #{{{
@@ -208,7 +208,7 @@ account all comments above (which doesn't mean it is above reproach :) ). --[[W
+ \))?\s*$
+ ) |
+ (\s and \s) | (\s or \s) # or we find 'and' or 'or' somewhere
- + /x);
+ + /xs);
} #}}}
sub safequote ($) { #{{{
@@ -221,7 +221,7 @@ account all comments above (which doesn't mean it is above reproach :) ). --[[W
my $spec=shift;
# Support for old-style GlobLists.
- @@ -1650,7 +1659,9 @@ sub pagespec_translate ($) { #{{{
+ @@ -1650,12 +1659,14 @@ sub pagespec_translate ($) { #{{{
|
\) # )
|
@@ -232,18 +232,25 @@ account all comments above (which doesn't mean it is above reproach :) ). --[[W
|
[^\s()]+ # any other text
)
+ \s* # ignore whitespace
+ - }igx) {
+ + }igxs) {
+ my $word=$1;
+ if (lc $word eq 'and') {
+ $code.=' &&';
@@ -1666,16 +1677,23 @@ sub pagespec_translate ($) { #{{{
elsif ($word eq "(" || $word eq ")" || $word eq "!") {
$code.=' '.$word;
}
- + elsif ($word =~ /^define\(\s*~(\w+)\s*,(.*)\)$/) {
+ - elsif ($word =~ /^(\w+)\((.*)\)$/) {
+ + elsif ($word =~ /^define\(\s*~(\w+)\s*,(.*)\)$/s) {
+ $code .= " (\$params{specFuncs}->{$1}="; # (exists \$params{specFuncs}) &&
+ $code .= "memoize(";
+ $code .= &pagespec_makeperl($2);
+ $code .= ")";
+ $code .= ") ";
+ }
- elsif ($word =~ /^(\w+)\((.*)\)$/) {
+ + elsif ($word =~ /^(\w+)\((.*)\)$/s) {
if (exists $IkiWiki::PageSpec::{"match_$1"}) {
- $code.="IkiWiki::PageSpec::match_$1(\$page, ".safequote($2).", \@_)";
+ $code.="IkiWiki::PageSpec::match_$1(\$page, ".safequote($2).", \%params)";
@@ -258,7 +265,7 @@ account all comments above (which doesn't mean it is above reproach :) ). --[[W
}
}
- @@ -1683,23 +1701,36 @@ sub pagespec_translate ($) { #{{{
+ @@ -1683,8 +1701,18 @@ sub pagespec_translate ($) { #{{{
$code=0;
}
@@ -278,27 +285,16 @@ account all comments above (which doesn't mean it is above reproach :) ). --[[W
} #}}}
sub pagespec_match ($$;@) { #{{{
- my $page=shift;
- my $spec=shift;
- my @params=@_;
- + my %params=@_;
+ @@ -1699,7 +1727,7 @@ sub pagespec_match ($$;@) { #{{{
- # Backwards compatability with old calling convention.
- if (@params == 1) {
- - unshift @params, 'location';
- + %params = { location => $params[1] };
- }
-
- + $params{specFuncs} = {} unless defined $params{specFuncs};
- +
my $sub=pagespec_translate($spec);
return IkiWiki::FailReason->new("syntax error in pagespec \"$spec\"") if $@;
- return $sub->($page, @params);
- + return $sub->($page, %params);
+ + return $sub->($page, @params, specFuncs => {});
} #}}}
sub pagespec_valid ($) { #{{{
- @@ -1748,11 +1779,78 @@ sub new { #{{{
+ @@ -1748,11 +1776,78 @@ sub new { #{{{
package IkiWiki::PageSpec;
@@ -377,7 +373,7 @@ account all comments above (which doesn't mean it is above reproach :) ). --[[W
my $from=exists $params{location} ? $params{location} : '';
# relative matching
- @@ -1782,11 +1880,16 @@ sub match_internal ($$;@) { #{{{
+ @@ -1782,11 +1877,12 @@ sub match_internal ($$;@) { #{{{
sub match_link ($$;@) { #{{{
my $page=shift;
@@ -386,17 +382,21 @@ account all comments above (which doesn't mean it is above reproach :) ). --[[W
my %params=@_;
+ my $link=lc($fulllink);
- - my $from=exists $params{location} ? $params{location} : '';
- + if (substr($fulllink, 0, 1) eq '~') {
- + return check_named_spec_existential($page, $fulllink, \&match_link, %params);
- + }
-
- + my $from=exists $params{location} ? $params{location} : '';
+ my $from=exists $params{location} ? $params{location} : '';
+ -
+
# relative matching
if ($link =~ m!^\.! && defined $from) {
$from=~s#/?[^/]+$##;
- @@ -1811,12 +1914,25 @@ sub match_link ($$;@) { #{{{
+ @@ -1804,19 +1900,32 @@ sub match_link ($$;@) { #{{{
+ }
+ else {
+ return IkiWiki::SuccessReason->new("$page links to page $p matching $link")
+ - if match_glob($p, $link, %params);
+ + if match_glob($p, $fulllink, %params);
+ }
+ }
+ return IkiWiki::FailReason->new("$page does not link to $link");
} #}}}
sub match_backlink ($$;@) { #{{{
@@ -423,7 +423,7 @@ account all comments above (which doesn't mean it is above reproach :) ). --[[W
if (exists $IkiWiki::pagectime{$testpage}) {
if ($IkiWiki::pagectime{$page} < $IkiWiki::pagectime{$testpage}) {
- @@ -1834,6 +1950,11 @@ sub match_created_before ($$;@) { #{{{
+ @@ -1834,6 +1943,11 @@ sub match_created_before ($$;@) { #{{{
sub match_created_after ($$;@) { #{{{
my $page=shift;
my $testpage=shift;
diff --git a/doc/todo/turn_edittemplate_verbosity_off_by_default.mdwn b/doc/todo/turn_edittemplate_verbosity_off_by_default.mdwn
index 4c703b940..87e55685c 100644
--- a/doc/todo/turn_edittemplate_verbosity_off_by_default.mdwn
+++ b/doc/todo/turn_edittemplate_verbosity_off_by_default.mdwn
@@ -28,3 +28,7 @@ I think this (untested) patch might just do the trick:
--[[madduck]]
[[!tags wishlist patch]]
+
+[[done]], though the patch I eventually applied uses "silent" as the
+parameter name. Sorry for forgetting about this patch until someone else
+implemented it too. --[[Joey]]
diff --git a/doc/todo/wikitrails.mdwn b/doc/todo/wikitrails.mdwn
new file mode 100644
index 000000000..ca97c9404
--- /dev/null
+++ b/doc/todo/wikitrails.mdwn
@@ -0,0 +1,41 @@
+## summary
+at times it is useful to have a guided tour or trail through a subset of the pages of a wiki; in pmwiki, this is implemented as [wikitrails](http://www.pmwiki.org/wiki/PmWiki/WikiTrails).
+
+i'm working on a python xmlrpc plugin for ikiwiki to support wikitrails, both as a navigation feature (have "forward" and "back" links based on a sequence) and a modified inline that includes all pages in the trail with appropriate modifications (suitable for printing if necessary).
+
+the current status is published on `git://github.com/github076986099/ikiwiki-plugins.git`; as of now, i don't have a public demo of it.
+
+feedback on both the concept and the code is very much appreciated by [[discussion]] or [email](mailto:chrysn@fsfe.org).
+
+## usage
+
+two preprocessor commands are provided:
+
+### \[[!trail index="my_indexpage"]]
+
+embeds a navigation object with forward and back links as well as an indicator of the current position in the trail.
+
+if index is not specified, a suitable page up the path is used.
+
+this works very well together with the [[sidebar|plugins/sidebar]] plugin if the pages in a directory are roughly the same as the pages in the trail and the `index` is directory index page; just put the \[[!trail]] in the sidebar.
+
+### \[[!trailinclude index="my_indexpage"]]
+
+all pages linked from the index page are included in the same way as \[[!inline]] does, but in the proper sequence, with headings according to the indent in the source page and adoptions for the headings inside the page (a level 2 heading in a page that is a sub-sub-chapter in the whole trail will become a level 5 heading when trailincluded).
+
+## the index page
+
+the index page is parsed as markdown; numbered lists and "`*`" bulleted lists are discovered.
+
+## current issues
+
+ * rebuilding --- currently, there is no propper rebuilding of pages (will use `will_render` and `add_depends`). care has to be taken of how not yet created pages play into this.
+ * inline recursion --- there is simply no guard yet
+ * navigation layout --- has to be both flexible and usable-by-default
+ * heading shifting
+ * currently only works for markdown
+ * can break the limit of html's six heading levels
+ * search for index page is currently next to hardcoded
+ * reading the index --- markdown syntax parsing is currently on a it-can-use-what-i-produce level; maybe integrate with existing mdwn parser
+ * uses undocumented titlepage command
+ > Don't worry about that, titlepage isn't going anywhere, and will probably before a formal part of the api next time I consider api changes. --[[Joey]]
diff --git a/doc/todo/wikitrails/discussion.mdwn b/doc/todo/wikitrails/discussion.mdwn
new file mode 100644
index 000000000..327e61491
--- /dev/null
+++ b/doc/todo/wikitrails/discussion.mdwn
@@ -0,0 +1,24 @@
+This sounds like a more general version of what I want for
+one-photo-per-page galleries, where each page has previous|up|next links
+(like this plugin) and the index page has a list or grid of thumbnails
+(\[[!inline]] with a specially modified template perhaps). I'll watch this
+with interest! --[[smcv]]
+
+This is a nice idea, I do have my gripes about the imeplementation.
+
+Assuming that the index's list is in mdwn format is not ideal. I guess the
+other way to do it would be to make the index be a directive, something
+like: \[[!trail pages="foo bar baz"]]. Assuming that a flat trail structure
+is enough, otherwise you'd have to get more fancy.
+
+The trailinclude seems a bit redundant with inline, and wanting to inline
+together all pages in a trail for printing or whatever seems like an
+unusual use case anyway?
+
+The !trail directive could be simplified to just \[[!trail my_indexpage]].
+But I wonder if needing to add this directive to every page is the best
+approach. Alternate approach would be to make the trail index cause
+breadcrums to be automatically inserted at the top of every page on the
+trail. (You'd have to use a directive to define the index for that to work.)
+
+--[[Joey]]
diff --git a/doc/users/Will.mdwn b/doc/users/Will.mdwn
index efa0a1cc6..b20418e47 100644
--- a/doc/users/Will.mdwn
+++ b/doc/users/Will.mdwn
@@ -15,6 +15,11 @@ I generally use my [[ikiwiki/openid]] login when editing here: <http://www.cse.u
>> Is it only working because you have old files in your output directory that aren't
>> backed by source files any more? -- [[Will]]
+>>> This wiki's source is ikiwiki's doc/ directory, which contains all the
+>>> files that are installed into the underlay, including the directive
+>>> documentation. But, it's special that way.
+>>> I've now enabled listdirectives on this wiki, BTW. --[[Joey]]
+
### Open Bugs:
[[!inline pages="link(users/Will) and bugs/* and !bugs/done and !bugs/discussion and !link(patch) and !link(bugs/done) and !bugs/*/*" archive="yes" feeds="no" ]]
diff --git a/ikiwiki.in b/ikiwiki.in
index 878d35065..f96daab0b 100755
--- a/ikiwiki.in
+++ b/ikiwiki.in
@@ -10,7 +10,8 @@ use lib '.'; # For use in nonstandard directory, munged by Makefile.
use IkiWiki;
sub usage () { #{{{
- die gettext("usage: ikiwiki [options] source dest"), "\n";
+ die gettext("usage: ikiwiki [options] source dest"), "\n",
+ gettext(" ikiwiki --setup configfile"), "\n";
} #}}}
sub getconfig () { #{{{
@@ -21,7 +22,13 @@ sub getconfig () { #{{{
GetOptions(
"setup|s=s" => sub {
require IkiWiki::Setup;
+ my $verbose=$config{verbose};
+ my $syslog=$config{syslog};
IkiWiki::Setup::load($_[1]);
+ $config{setupverbose}=$config{verbose};
+ $config{setupsyslog}=$config{syslog};
+ $config{verbose}=$verbose || $config{setupverbose};
+ $config{syslog}=$syslog;
$config{setup}=1;
},
"dumpsetup|s=s" => \$config{dumpsetup},
@@ -88,6 +95,7 @@ sub getconfig () { #{{{
print "ikiwiki version $IkiWiki::version\n";
exit;
},
+ "help|h" => sub { $SIG{__WARN__}=sub {}; die },
) || usage();
if (! $config{setup} && ! $config{render}) {
@@ -129,15 +137,13 @@ sub main () { #{{{
debug(gettext("generating wrappers.."));
require IkiWiki::Wrapper;
my %origconfig=(%config);
- my @wrappers=@{$config{wrappers}};
- delete $config{wrappers};
- delete $config{genwrappers};
- foreach my $wrapper (@wrappers) {
- %config=(%origconfig,
- rebuild => 0,
- verbose => undef,
- %{$wrapper},
- );
+ foreach my $wrapper (@{$config{wrappers}}) {
+ %config=(%origconfig, %{$wrapper});
+ $config{verbose}=$config{setupverbose}
+ if exists $config{setupverbose};
+ $config{syslog}=$config{setupsyslog}
+ if exists $config{setupsyslog};
+ delete @config{qw(setupsyslog setupverbose wrappers genwrappers rebuild)};
checkconfig();
if (! $config{cgi} && ! $config{post_commit}) {
$config{post_commit}=1;
diff --git a/po/bg.po b/po/bg.po
index d0ee3fc98..c26e1364c 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-09-11 18:52-0400\n"
+"POT-Creation-Date: 2008-09-24 17:55-0400\n"
"PO-Revision-Date: 2007-01-12 01:19+0200\n"
"Last-Translator: Damyan Ivanov <dam@modsodtsys.com>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
@@ -24,7 +24,7 @@ msgstr "Първо Ñ‚Ñ€Ñбва да влезете."
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
-#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:310
+#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:311
msgid "Your login session has expired."
msgstr ""
@@ -122,7 +122,7 @@ msgstr ""
msgid "feed crashed XML::Feed!"
msgstr "данните от източника предизвикаха грешка в модула XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:584
+#: ../IkiWiki/Plugin/aggregate.pm:590
#, perl-format
msgid "creating new page %s"
msgstr "Ñъздаване на нова Ñтраницa „%sâ€"
@@ -131,7 +131,7 @@ msgstr "Ñъздаване на нова Ñтраницa „%sâ€"
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:193
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:197
msgid "done"
msgstr "готово"
@@ -175,8 +175,8 @@ msgstr ""
msgid "automatic index generation"
msgstr ""
-#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:221
-#: ../IkiWiki/Plugin/inline.pm:317 ../IkiWiki/Plugin/opendiscussion.pm:26
+#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:222
+#: ../IkiWiki/Plugin/inline.pm:323 ../IkiWiki/Plugin/opendiscussion.pm:26
#: ../IkiWiki/Plugin/orphans.pm:37 ../IkiWiki/Render.pm:79
#: ../IkiWiki/Render.pm:149
msgid "discussion"
@@ -207,19 +207,19 @@ msgstr ""
msgid "no text was copied in this page with id %s"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:110
+#: ../IkiWiki/Plugin/editpage.pm:111
#, perl-format
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:277
+#: ../IkiWiki/Plugin/editpage.pm:278
#, perl-format
msgid "creating %s"
msgstr "Ñъздаване на %s"
-#: ../IkiWiki/Plugin/editpage.pm:295 ../IkiWiki/Plugin/editpage.pm:323
-#: ../IkiWiki/Plugin/editpage.pm:333 ../IkiWiki/Plugin/editpage.pm:368
-#: ../IkiWiki/Plugin/editpage.pm:413
+#: ../IkiWiki/Plugin/editpage.pm:296 ../IkiWiki/Plugin/editpage.pm:324
+#: ../IkiWiki/Plugin/editpage.pm:334 ../IkiWiki/Plugin/editpage.pm:369
+#: ../IkiWiki/Plugin/editpage.pm:414
#, perl-format
msgid "editing %s"
msgstr "промÑна на %s"
@@ -234,12 +234,12 @@ msgstr "шаблонът „%s†не е намерен"
msgid "match not specified"
msgstr "не е указан файл на обвивката"
-#: ../IkiWiki/Plugin/edittemplate.pm:59
+#: ../IkiWiki/Plugin/edittemplate.pm:62
#, perl-format
msgid "edittemplate %s registered for %s"
msgstr ""
-#: ../IkiWiki/Plugin/edittemplate.pm:125
+#: ../IkiWiki/Plugin/edittemplate.pm:133
#, fuzzy
msgid "failed to process"
msgstr "грешка при обработване на шаблона"
@@ -309,20 +309,20 @@ msgstr "липÑващ параметър „id†на шаблона"
msgid "unknown sort type %s"
msgstr "непознат вид Ñортиране „%sâ€"
-#: ../IkiWiki/Plugin/inline.pm:276
+#: ../IkiWiki/Plugin/inline.pm:282
msgid "Add a new post titled:"
msgstr ""
-#: ../IkiWiki/Plugin/inline.pm:292
+#: ../IkiWiki/Plugin/inline.pm:298
#, perl-format
msgid "nonexistant template %s"
msgstr ""
-#: ../IkiWiki/Plugin/inline.pm:325 ../IkiWiki/Render.pm:83
+#: ../IkiWiki/Plugin/inline.pm:331 ../IkiWiki/Render.pm:83
msgid "Discussion"
msgstr "ДиÑкуÑиÑ"
-#: ../IkiWiki/Plugin/inline.pm:562
+#: ../IkiWiki/Plugin/inline.pm:568
msgid "RPC::XML::Client not found, not pinging"
msgstr "модулът „RPC::XML::Client†не е намерен; източникът не е проверен"
@@ -535,6 +535,15 @@ msgstr ""
msgid "at noon on %A"
msgstr ""
+#: ../IkiWiki/Plugin/progress.pm:34
+#, perl-format
+msgid "illegal percent value %s"
+msgstr ""
+
+#: ../IkiWiki/Plugin/progress.pm:59
+msgid "need either `percent` or `totalpages` and `donepages` parameters"
+msgstr ""
+
#: ../IkiWiki/Plugin/recentchanges.pm:99
#, fuzzy
msgid "missing page"
@@ -549,79 +558,83 @@ msgstr ""
msgid "(Diff truncated)"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:35
+#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36
#, perl-format
msgid "%s does not exist"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:39
+#: ../IkiWiki/Plugin/remove.pm:38
#, fuzzy, perl-format
msgid "%s is not in the srcdir, so it cannot be deleted"
msgstr ""
"Страницата „%s†е заключена от Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ â€ž%s†и не може да бъде променÑна"
-#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:44
+#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45
#, perl-format
msgid "%s is not a file"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:109
+#: ../IkiWiki/Plugin/remove.pm:112
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:145
+#: ../IkiWiki/Plugin/remove.pm:148
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:185
+#: ../IkiWiki/Plugin/remove.pm:188
msgid "removed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:41
+#: ../IkiWiki/Plugin/rename.pm:42
#, perl-format
msgid "%s is not in the srcdir, so it cannot be renamed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:56
+#: ../IkiWiki/Plugin/rename.pm:62
#, fuzzy
msgid "no change to the file name was specified"
msgstr "не е указан файл на обвивката"
-#: ../IkiWiki/Plugin/rename.pm:62
+#: ../IkiWiki/Plugin/rename.pm:68
#, perl-format
msgid "illegal name"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:67
+#: ../IkiWiki/Plugin/rename.pm:73
#, perl-format
msgid "%s already exists"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:73
+#: ../IkiWiki/Plugin/rename.pm:79
#, perl-format
msgid "%s already exists on disk"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:95
+#: ../IkiWiki/Plugin/rename.pm:101
#, fuzzy, perl-format
msgid "rename %s"
msgstr "обновÑване на Ñтраницата „%sâ€"
-#: ../IkiWiki/Plugin/rename.pm:206
+#: ../IkiWiki/Plugin/rename.pm:138
+msgid "Also rename SubPages and attachments"
+msgstr ""
+
+#: ../IkiWiki/Plugin/rename.pm:223
msgid "Only one attachment can be renamed at a time."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:209
+#: ../IkiWiki/Plugin/rename.pm:226
msgid "Please select the attachment to rename."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:277
+#: ../IkiWiki/Plugin/rename.pm:332
#, perl-format
msgid "rename %s to %s"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:306
+#: ../IkiWiki/Plugin/rename.pm:484
#, fuzzy, perl-format
msgid "update for rename of %s to %s"
msgstr "обновÑване на Ñтраниците от уики „%sâ€: %s от потребител „%sâ€"
@@ -789,47 +802,52 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr ""
-#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:298
+#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:302
#, perl-format
msgid "skipping bad filename %s"
msgstr "пропуÑкане на невалидното име на файл „%sâ€"
-#: ../IkiWiki/Render.pm:356
+#: ../IkiWiki/Render.pm:284
+#, perl-format
+msgid "%s has multiple possible source pages"
+msgstr ""
+
+#: ../IkiWiki/Render.pm:360
#, perl-format
msgid "removing old page %s"
msgstr "премахване на Ñтарата Ñтраница „%sâ€"
-#: ../IkiWiki/Render.pm:396
+#: ../IkiWiki/Render.pm:400
#, perl-format
msgid "scanning %s"
msgstr "Ñканиране на „%sâ€"
-#: ../IkiWiki/Render.pm:401
+#: ../IkiWiki/Render.pm:405
#, perl-format
msgid "rendering %s"
msgstr "обновÑване на Ñтраницата „%sâ€"
-#: ../IkiWiki/Render.pm:422
+#: ../IkiWiki/Render.pm:426
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "обновÑване на Ñтраницата „%sâ€, Ñъдържаща препратки към „%sâ€"
-#: ../IkiWiki/Render.pm:443
+#: ../IkiWiki/Render.pm:447
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "обновÑване на Ñтраницата „%sâ€, завиÑеща от „%sâ€"
-#: ../IkiWiki/Render.pm:482
+#: ../IkiWiki/Render.pm:486
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr "обновÑване на „%s†и оÑъвременÑване на обратните връзки"
-#: ../IkiWiki/Render.pm:494
+#: ../IkiWiki/Render.pm:498
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr "премахване на „%s†понеже не Ñе генерира от „%sâ€"
-#: ../IkiWiki/Render.pm:518
+#: ../IkiWiki/Render.pm:522
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki: неуÑпех при обновÑване на Ñтраницата „%sâ€"
@@ -890,19 +908,19 @@ msgstr "уÑпешно генериране на %s"
msgid "usage: ikiwiki [options] source dest"
msgstr "формат: ikiwiki [опции] източник меÑтоназначение"
-#: ../ikiwiki.in:83
+#: ../ikiwiki.in:89
msgid "usage: --set var=value"
msgstr ""
-#: ../ikiwiki.in:129
+#: ../ikiwiki.in:135
msgid "generating wrappers.."
msgstr "генериране на обвивки..."
-#: ../ikiwiki.in:182
+#: ../ikiwiki.in:186
msgid "rebuilding wiki.."
msgstr "обновÑване на уики..."
-#: ../ikiwiki.in:185
+#: ../ikiwiki.in:189
msgid "refreshing wiki.."
msgstr "оÑъвременÑване на уики..."
diff --git a/po/cs.po b/po/cs.po
index 9af34ee0e..145c62e4f 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-09-11 18:52-0400\n"
+"POT-Creation-Date: 2008-09-24 17:55-0400\n"
"PO-Revision-Date: 2007-05-09 21:21+0200\n"
"Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
@@ -23,7 +23,7 @@ msgstr "Nejprve se musíte přihlásit."
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:163 ../IkiWiki/Plugin/editpage.pm:310
+#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:311
msgid "Your login session has expired."
msgstr ""
@@ -119,7 +119,7 @@ msgstr ""
msgid "feed crashed XML::Feed!"
msgstr "zdroj shodil XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:584
+#: ../IkiWiki/Plugin/aggregate.pm:590
#, perl-format
msgid "creating new page %s"
msgstr "vytvářím novou stránku %s"
@@ -128,7 +128,7 @@ msgstr "vytvářím novou stránku %s"
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:193
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:197
msgid "done"
msgstr "hotovo"
@@ -172,8 +172,8 @@ msgstr ""
msgid "automatic index generation"
msgstr ""
-#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:221
-#: ../IkiWiki/Plugin/inline.pm:317 ../IkiWiki/Plugin/opendiscussion.pm:26
+#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:222
+#: ../IkiWiki/Plugin/inline.pm:323 ../IkiWiki/Plugin/opendiscussion.pm:26
#: ../IkiWiki/Plugin/orphans.pm:37 ../IkiWiki/Render.pm:79
#: ../IkiWiki/Render.pm:149
msgid "discussion"
@@ -204,19 +204,19 @@ msgstr ""
msgid "no text was copied in this page with id %s"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:110
+#: ../IkiWiki/Plugin/editpage.pm:111
#, perl-format
msgid "%s is not an editable page"
msgstr "%s není editovatelná stránka"
-#: ../IkiWiki/Plugin/editpage.pm:277
+#: ../IkiWiki/Plugin/editpage.pm:278
#, perl-format
msgid "creating %s"
msgstr "vytvářím %s"
-#: ../IkiWiki/Plugin/editpage.pm:295 ../IkiWiki/Plugin/editpage.pm:323
-#: ../IkiWiki/Plugin/editpage.pm:333 ../IkiWiki/Plugin/editpage.pm:368
-#: ../IkiWiki/Plugin/editpage.pm:413
+#: ../IkiWiki/Plugin/editpage.pm:296 ../IkiWiki/Plugin/editpage.pm:324
+#: ../IkiWiki/Plugin/editpage.pm:334 ../IkiWiki/Plugin/editpage.pm:369
+#: ../IkiWiki/Plugin/editpage.pm:414
#, perl-format
msgid "editing %s"
msgstr "upravuji %s"
@@ -231,12 +231,12 @@ msgstr "Å¡ablona %s nebyla nalezena"
msgid "match not specified"
msgstr "jméno souboru s obalem nebylo zadáno"
-#: ../IkiWiki/Plugin/edittemplate.pm:59
+#: ../IkiWiki/Plugin/edittemplate.pm:62
#, perl-format
msgid "edittemplate %s registered for %s"
msgstr ""
-#: ../IkiWiki/Plugin/edittemplate.pm:125
+#: ../IkiWiki/Plugin/edittemplate.pm:133
#, fuzzy
msgid "failed to process"
msgstr "nepodařilo se zpracovat:"
@@ -302,20 +302,20 @@ msgstr "chybí parametr %s"
msgid "unknown sort type %s"
msgstr "neznámý typ řazení %s"
-#: ../IkiWiki/Plugin/inline.pm:276
+#: ../IkiWiki/Plugin/inline.pm:282
msgid "Add a new post titled:"
msgstr "Přidat nový příspěvek nazvaný:"
-#: ../IkiWiki/Plugin/inline.pm:292
+#: ../IkiWiki/Plugin/inline.pm:298
#, perl-format
msgid "nonexistant template %s"
msgstr "neexistující šablona %s"
-#: ../IkiWiki/Plugin/inline.pm:325 ../IkiWiki/Render.pm:83
+#: ../IkiWiki/Plugin/inline.pm:331 ../IkiWiki/Render.pm:83
msgid "Discussion"
msgstr "Diskuse"
-#: ../IkiWiki/Plugin/inline.pm:562
+#: ../IkiWiki/Plugin/inline.pm:568
msgid "RPC::XML::Client not found, not pinging"
msgstr "RPC::XML::Client nebyl nalezen, nepinkám"
@@ -524,6 +524,15 @@ msgstr "o půlnoci"
msgid "at noon on %A"
msgstr "%A o poledni"
+#: ../IkiWiki/Plugin/progress.pm:34
+#, perl-format
+msgid "illegal percent value %s"
+msgstr ""
+
+#: ../IkiWiki/Plugin/progress.pm:59
+msgid "need either `percent` or `totalpages` and `donepages` parameters"
+msgstr ""
+
#: ../IkiWiki/Plugin/recentchanges.pm:99
#, fuzzy
msgid "missing page"
@@ -538,78 +547,82 @@ msgstr ""
msgid "(Diff truncated)"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:35
+#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36
#, perl-format
msgid "%s does not exist"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:39
+#: ../IkiWiki/Plugin/remove.pm:38
#, fuzzy, perl-format
msgid "%s is not in the srcdir, so it cannot be deleted"
msgstr "Stránka %s je zamknutá uživatelem %s a nelze ji měnit"
-#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:44
+#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45
#, fuzzy, perl-format
msgid "%s is not a file"
msgstr "%s není editovatelná stránka"
-#: ../IkiWiki/Plugin/remove.pm:109
+#: ../IkiWiki/Plugin/remove.pm:112
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:145
+#: ../IkiWiki/Plugin/remove.pm:148
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:185
+#: ../IkiWiki/Plugin/remove.pm:188
msgid "removed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:41
+#: ../IkiWiki/Plugin/rename.pm:42
#, perl-format
msgid "%s is not in the srcdir, so it cannot be renamed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:56
+#: ../IkiWiki/Plugin/rename.pm:62
#, fuzzy
msgid "no change to the file name was specified"
msgstr "jméno souboru s obalem nebylo zadáno"
-#: ../IkiWiki/Plugin/rename.pm:62
+#: ../IkiWiki/Plugin/rename.pm:68
#, perl-format
msgid "illegal name"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:67
+#: ../IkiWiki/Plugin/rename.pm:73
#, perl-format
msgid "%s already exists"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:73
+#: ../IkiWiki/Plugin/rename.pm:79
#, perl-format
msgid "%s already exists on disk"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:95
+#: ../IkiWiki/Plugin/rename.pm:101
#, fuzzy, perl-format
msgid "rename %s"
msgstr "zpracovávám %s"
-#: ../IkiWiki/Plugin/rename.pm:206
+#: ../IkiWiki/Plugin/rename.pm:138
+msgid "Also rename SubPages and attachments"
+msgstr ""
+
+#: ../IkiWiki/Plugin/rename.pm:223
msgid "Only one attachment can be renamed at a time."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:209
+#: ../IkiWiki/Plugin/rename.pm:226
msgid "Please select the attachment to rename."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:277
+#: ../IkiWiki/Plugin/rename.pm:332
#, perl-format
msgid "rename %s to %s"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:306
+#: ../IkiWiki/Plugin/rename.pm:484
#, fuzzy, perl-format
msgid "update for rename of %s to %s"
msgstr "aktualizace %s (%s) uživatelem %s"
@@ -770,47 +783,52 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr ""
-#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:298
+#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:302
#, perl-format
msgid "skipping bad filename %s"
msgstr "přeskakuji chybné jméno souboru %s"
-#: ../IkiWiki/Render.pm:356
+#: ../IkiWiki/Render.pm:284
+#, perl-format
+msgid "%s has multiple possible source pages"
+msgstr ""
+
+#: ../IkiWiki/Render.pm:360
#, perl-format
msgid "removing old page %s"
msgstr "odstraňuji starou stránku %s"
-#: ../IkiWiki/Render.pm:396
+#: ../IkiWiki/Render.pm:400
#, perl-format
msgid "scanning %s"
msgstr "prohledávám %s"
-#: ../IkiWiki/Render.pm:401
+#: ../IkiWiki/Render.pm:405
#, perl-format
msgid "rendering %s"
msgstr "zpracovávám %s"
-#: ../IkiWiki/Render.pm:422
+#: ../IkiWiki/Render.pm:426
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "zpracovávám %s, která odkazuje na %s"
-#: ../IkiWiki/Render.pm:443
+#: ../IkiWiki/Render.pm:447
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "zpracovávám %s, která závisí na %s"
-#: ../IkiWiki/Render.pm:482
+#: ../IkiWiki/Render.pm:486
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr "zpracovávám %s, aby se aktualizovaly zpětné odkazy"
-#: ../IkiWiki/Render.pm:494
+#: ../IkiWiki/Render.pm:498
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr "odstraňuji %s, již není zpracovávána %s"
-#: ../IkiWiki/Render.pm:518
+#: ../IkiWiki/Render.pm:522
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki: nelze zpracovat %s"
@@ -871,19 +889,19 @@ 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:89
msgid "usage: --set var=value"
msgstr ""
-#: ../ikiwiki.in:129
+#: ../ikiwiki.in:135
msgid "generating wrappers.."
msgstr "generuji obaly..."
-#: ../ikiwiki.in:182
+#: ../ikiwiki.in:186
msgid "rebuilding wiki.."
msgstr "znovu vytvářím wiki..."
-#: ../ikiwiki.in:185
+#: ../ikiwiki.in:189
msgid "refreshing wiki.."
msgstr "obnovuji wiki..."
diff --git a/po/da.po b/po/da.po
index c7b03621c..c5bfc30c9 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-09-11 18:52-0400\n"
+"POT-Creation-Date: 2008-09-24 17:55-0400\n"
"PO-Revision-Date: 2008-08-11 01:04+0200\n"
"Last-Translator: Jonas Smedegaard <dr@jones.dk>\n"
"Language-Team: None\n"
@@ -27,7 +27,7 @@ msgstr "Du skal først logge på."
msgid "login failed, perhaps you need to turn on cookies?"
msgstr "Pålogning mislykkedes, måske skal du tillade infokager (cookies)?"
-#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:310
+#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:311
msgid "Your login session has expired."
msgstr "Din kørsel (login session) er udløbet"
@@ -123,7 +123,7 @@ msgstr "(fødningselementer omgået (escaped))"
msgid "feed crashed XML::Feed!"
msgstr "fødning fik XML::Feed til at bryde sammen!"
-#: ../IkiWiki/Plugin/aggregate.pm:584
+#: ../IkiWiki/Plugin/aggregate.pm:590
#, perl-format
msgid "creating new page %s"
msgstr "opretter ny side %s"
@@ -132,7 +132,7 @@ msgstr "opretter ny side %s"
msgid "deleting bucket.."
msgstr "sletter bundt.."
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:193
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:197
msgid "done"
msgstr "færdig"
@@ -174,8 +174,8 @@ msgstr "vedhæftningsoplægning"
msgid "automatic index generation"
msgstr "automatisk indeks-dannelse"
-#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:221
-#: ../IkiWiki/Plugin/inline.pm:317 ../IkiWiki/Plugin/opendiscussion.pm:26
+#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:222
+#: ../IkiWiki/Plugin/inline.pm:323 ../IkiWiki/Plugin/opendiscussion.pm:26
#: ../IkiWiki/Plugin/orphans.pm:37 ../IkiWiki/Render.pm:79
#: ../IkiWiki/Render.pm:149
msgid "discussion"
@@ -206,19 +206,19 @@ msgstr "ingen tekst blev kopieret i denne side"
msgid "no text was copied in this page with id %s"
msgstr "ingen tekst blev kopieret i denne side med id %s"
-#: ../IkiWiki/Plugin/editpage.pm:110
+#: ../IkiWiki/Plugin/editpage.pm:111
#, perl-format
msgid "%s is not an editable page"
msgstr "%s er ikke en redigérbar side"
-#: ../IkiWiki/Plugin/editpage.pm:277
+#: ../IkiWiki/Plugin/editpage.pm:278
#, perl-format
msgid "creating %s"
msgstr "opretter %s"
-#: ../IkiWiki/Plugin/editpage.pm:295 ../IkiWiki/Plugin/editpage.pm:323
-#: ../IkiWiki/Plugin/editpage.pm:333 ../IkiWiki/Plugin/editpage.pm:368
-#: ../IkiWiki/Plugin/editpage.pm:413
+#: ../IkiWiki/Plugin/editpage.pm:296 ../IkiWiki/Plugin/editpage.pm:324
+#: ../IkiWiki/Plugin/editpage.pm:334 ../IkiWiki/Plugin/editpage.pm:369
+#: ../IkiWiki/Plugin/editpage.pm:414
#, perl-format
msgid "editing %s"
msgstr "redigerer %s"
@@ -231,12 +231,12 @@ msgstr "skabelon %s ikke angivet"
msgid "match not specified"
msgstr "sammenligning ikke angivet"
-#: ../IkiWiki/Plugin/edittemplate.pm:59
+#: ../IkiWiki/Plugin/edittemplate.pm:62
#, perl-format
msgid "edittemplate %s registered for %s"
msgstr "redigeringsskabelon %s registreret for %s"
-#: ../IkiWiki/Plugin/edittemplate.pm:125
+#: ../IkiWiki/Plugin/edittemplate.pm:133
msgid "failed to process"
msgstr "dannelsen mislykkedes"
@@ -299,20 +299,20 @@ msgstr "mangler pages-parametren"
msgid "unknown sort type %s"
msgstr "ukendt sorteringsform %s"
-#: ../IkiWiki/Plugin/inline.pm:276
+#: ../IkiWiki/Plugin/inline.pm:282
msgid "Add a new post titled:"
msgstr "Tilføj nyt indlæg med følgende titel:"
-#: ../IkiWiki/Plugin/inline.pm:292
+#: ../IkiWiki/Plugin/inline.pm:298
#, perl-format
msgid "nonexistant template %s"
msgstr "ikke-eksisterende skabelon: %s"
-#: ../IkiWiki/Plugin/inline.pm:325 ../IkiWiki/Render.pm:83
+#: ../IkiWiki/Plugin/inline.pm:331 ../IkiWiki/Render.pm:83
msgid "Discussion"
msgstr "Diskussion"
-#: ../IkiWiki/Plugin/inline.pm:562
+#: ../IkiWiki/Plugin/inline.pm:568
msgid "RPC::XML::Client not found, not pinging"
msgstr "RPC::XML::Client ikke fundet, pinger ikke"
@@ -520,6 +520,15 @@ msgstr "ved midnat"
msgid "at noon on %A"
msgstr "midt på dagen %A"
+#: ../IkiWiki/Plugin/progress.pm:34
+#, fuzzy, perl-format
+msgid "illegal percent value %s"
+msgstr "ugyldigt navn"
+
+#: ../IkiWiki/Plugin/progress.pm:59
+msgid "need either `percent` or `totalpages` and `donepages` parameters"
+msgstr ""
+
#: ../IkiWiki/Plugin/recentchanges.pm:99
msgid "missing page"
msgstr "manglende side"
@@ -533,77 +542,81 @@ msgstr "Siden %s eksisterer ikke."
msgid "(Diff truncated)"
msgstr "(Diff trunkeret)"
-#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:35
+#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36
#, perl-format
msgid "%s does not exist"
msgstr "%s eksisterer ikke"
-#: ../IkiWiki/Plugin/remove.pm:39
+#: ../IkiWiki/Plugin/remove.pm:38
#, perl-format
msgid "%s is not in the srcdir, so it cannot be deleted"
msgstr "%s er ikke i srcdir, så kan ikke blive slettet"
-#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:44
+#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45
#, perl-format
msgid "%s is not a file"
msgstr "%s er ikke en fil"
-#: ../IkiWiki/Plugin/remove.pm:109
+#: ../IkiWiki/Plugin/remove.pm:112
#, perl-format
msgid "confirm removal of %s"
msgstr "bekræft at %s bliver fjernet"
-#: ../IkiWiki/Plugin/remove.pm:145
+#: ../IkiWiki/Plugin/remove.pm:148
msgid "Please select the attachments to remove."
msgstr "Vælg vedhæftning der skal slettes."
-#: ../IkiWiki/Plugin/remove.pm:185
+#: ../IkiWiki/Plugin/remove.pm:188
msgid "removed"
msgstr "fjernet"
-#: ../IkiWiki/Plugin/rename.pm:41
+#: ../IkiWiki/Plugin/rename.pm:42
#, perl-format
msgid "%s is not in the srcdir, so it cannot be renamed"
msgstr "%s er ikke i srcdir, så kan ikke blive omdøbt"
-#: ../IkiWiki/Plugin/rename.pm:56
+#: ../IkiWiki/Plugin/rename.pm:62
msgid "no change to the file name was specified"
msgstr "ingen ændring til filnavnet blev angivet"
-#: ../IkiWiki/Plugin/rename.pm:62
+#: ../IkiWiki/Plugin/rename.pm:68
#, perl-format
msgid "illegal name"
msgstr "ugyldigt navn"
-#: ../IkiWiki/Plugin/rename.pm:67
+#: ../IkiWiki/Plugin/rename.pm:73
#, perl-format
msgid "%s already exists"
msgstr "%s eksisterer allerede"
-#: ../IkiWiki/Plugin/rename.pm:73
+#: ../IkiWiki/Plugin/rename.pm:79
#, perl-format
msgid "%s already exists on disk"
msgstr "%s eksisterer allerede på disken"
-#: ../IkiWiki/Plugin/rename.pm:95
+#: ../IkiWiki/Plugin/rename.pm:101
#, perl-format
msgid "rename %s"
msgstr "omdøb %s"
-#: ../IkiWiki/Plugin/rename.pm:206
+#: ../IkiWiki/Plugin/rename.pm:138
+msgid "Also rename SubPages and attachments"
+msgstr ""
+
+#: ../IkiWiki/Plugin/rename.pm:223
msgid "Only one attachment can be renamed at a time."
msgstr "Kun en vedhæftning kan blive omdøbt ad gangen."
-#: ../IkiWiki/Plugin/rename.pm:209
+#: ../IkiWiki/Plugin/rename.pm:226
msgid "Please select the attachment to rename."
msgstr "Vælg vedhæftningen som skal omdøbes."
-#: ../IkiWiki/Plugin/rename.pm:277
+#: ../IkiWiki/Plugin/rename.pm:332
#, perl-format
msgid "rename %s to %s"
msgstr "omdøb %s til %s"
-#: ../IkiWiki/Plugin/rename.pm:306
+#: ../IkiWiki/Plugin/rename.pm:484
#, perl-format
msgid "update for rename of %s to %s"
msgstr "opdatering til omdøbning af %s til %s"
@@ -762,47 +775,52 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr ""
-#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:298
+#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:302
#, perl-format
msgid "skipping bad filename %s"
msgstr "udelader forkert filnavn %s"
-#: ../IkiWiki/Render.pm:356
+#: ../IkiWiki/Render.pm:284
+#, perl-format
+msgid "%s has multiple possible source pages"
+msgstr ""
+
+#: ../IkiWiki/Render.pm:360
#, perl-format
msgid "removing old page %s"
msgstr "fjerner gammel side %s"
-#: ../IkiWiki/Render.pm:396
+#: ../IkiWiki/Render.pm:400
#, perl-format
msgid "scanning %s"
msgstr "gennemlæser %s"
-#: ../IkiWiki/Render.pm:401
+#: ../IkiWiki/Render.pm:405
#, perl-format
msgid "rendering %s"
msgstr "danner %s"
-#: ../IkiWiki/Render.pm:422
+#: ../IkiWiki/Render.pm:426
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "danner %s, som henviser til %s"
-#: ../IkiWiki/Render.pm:443
+#: ../IkiWiki/Render.pm:447
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "danner %s, som afhænger af %s"
-#: ../IkiWiki/Render.pm:482
+#: ../IkiWiki/Render.pm:486
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr "danner %s, for at opdatere dens krydshenvisninger (backlinks)"
-#: ../IkiWiki/Render.pm:494
+#: ../IkiWiki/Render.pm:498
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr "fjerner %s, ikke længere dannet af %s"
-#: ../IkiWiki/Render.pm:518
+#: ../IkiWiki/Render.pm:522
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki: kan ikke danne %s"
@@ -863,19 +881,19 @@ msgstr "Korrekt bygget %s"
msgid "usage: ikiwiki [options] source dest"
msgstr "brug: ikiwiki [valg] kilde mål"
-#: ../ikiwiki.in:83
+#: ../ikiwiki.in:89
msgid "usage: --set var=value"
msgstr "brug: --set var=værdi"
-#: ../ikiwiki.in:129
+#: ../ikiwiki.in:135
msgid "generating wrappers.."
msgstr "bygger wrappers.."
-#: ../ikiwiki.in:182
+#: ../ikiwiki.in:186
msgid "rebuilding wiki.."
msgstr "genopbygger wiki..."
-#: ../ikiwiki.in:185
+#: ../ikiwiki.in:189
msgid "refreshing wiki.."
msgstr "genopfrisker wiki..."
diff --git a/po/de.po b/po/de.po
index 88025f01d..e0ffffa37 100644
--- a/po/de.po
+++ b/po/de.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 2.40\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-09-11 18:52-0400\n"
+"POT-Creation-Date: 2008-09-24 17:55-0400\n"
"PO-Revision-Date: 2008-03-03 21:22+0100\n"
"Last-Translator: Kai Wasserbäch <debian@carbon-project.org>\n"
"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
@@ -23,7 +23,7 @@ msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
"Anmeldung fehlgeschlagen, möglicherweise müssen Sie zuvor Cookies aktivieren?"
-#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:310
+#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:311
msgid "Your login session has expired."
msgstr ""
@@ -119,7 +119,7 @@ msgstr "(Feedentitäten maskiert)"
msgid "feed crashed XML::Feed!"
msgstr "Feed führte zum Absturz von XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:584
+#: ../IkiWiki/Plugin/aggregate.pm:590
#, perl-format
msgid "creating new page %s"
msgstr "erstelle neue Seite %s"
@@ -128,7 +128,7 @@ msgstr "erstelle neue Seite %s"
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:193
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:197
msgid "done"
msgstr "fertig"
@@ -172,8 +172,8 @@ msgstr ""
msgid "automatic index generation"
msgstr ""
-#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:221
-#: ../IkiWiki/Plugin/inline.pm:317 ../IkiWiki/Plugin/opendiscussion.pm:26
+#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:222
+#: ../IkiWiki/Plugin/inline.pm:323 ../IkiWiki/Plugin/opendiscussion.pm:26
#: ../IkiWiki/Plugin/orphans.pm:37 ../IkiWiki/Render.pm:79
#: ../IkiWiki/Render.pm:149
msgid "discussion"
@@ -204,19 +204,19 @@ msgstr ""
msgid "no text was copied in this page with id %s"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:110
+#: ../IkiWiki/Plugin/editpage.pm:111
#, perl-format
msgid "%s is not an editable page"
msgstr "%s ist keine bearbeitbare Seite"
-#: ../IkiWiki/Plugin/editpage.pm:277
+#: ../IkiWiki/Plugin/editpage.pm:278
#, perl-format
msgid "creating %s"
msgstr "erstelle %s"
-#: ../IkiWiki/Plugin/editpage.pm:295 ../IkiWiki/Plugin/editpage.pm:323
-#: ../IkiWiki/Plugin/editpage.pm:333 ../IkiWiki/Plugin/editpage.pm:368
-#: ../IkiWiki/Plugin/editpage.pm:413
+#: ../IkiWiki/Plugin/editpage.pm:296 ../IkiWiki/Plugin/editpage.pm:324
+#: ../IkiWiki/Plugin/editpage.pm:334 ../IkiWiki/Plugin/editpage.pm:369
+#: ../IkiWiki/Plugin/editpage.pm:414
#, perl-format
msgid "editing %s"
msgstr "bearbeite %s"
@@ -229,12 +229,12 @@ msgstr "Vorlage nicht angegeben"
msgid "match not specified"
msgstr "Ãœbereinstimmung nicht angegeben"
-#: ../IkiWiki/Plugin/edittemplate.pm:59
+#: ../IkiWiki/Plugin/edittemplate.pm:62
#, perl-format
msgid "edittemplate %s registered for %s"
msgstr "»edittemplate« %s registriert für %s"
-#: ../IkiWiki/Plugin/edittemplate.pm:125
+#: ../IkiWiki/Plugin/edittemplate.pm:133
msgid "failed to process"
msgstr "Bearbeitung fehlgeschlagen"
@@ -301,20 +301,20 @@ msgstr "Parameter %s fehlt"
msgid "unknown sort type %s"
msgstr "Unbekannter Sortierungstyp %s"
-#: ../IkiWiki/Plugin/inline.pm:276
+#: ../IkiWiki/Plugin/inline.pm:282
msgid "Add a new post titled:"
msgstr "Füge einen neuen Beitrag hinzu. Titel:"
-#: ../IkiWiki/Plugin/inline.pm:292
+#: ../IkiWiki/Plugin/inline.pm:298
#, perl-format
msgid "nonexistant template %s"
msgstr "nicht-vorhandene Vorlage %s"
-#: ../IkiWiki/Plugin/inline.pm:325 ../IkiWiki/Render.pm:83
+#: ../IkiWiki/Plugin/inline.pm:331 ../IkiWiki/Render.pm:83
msgid "Discussion"
msgstr "Diskussion"
-#: ../IkiWiki/Plugin/inline.pm:562
+#: ../IkiWiki/Plugin/inline.pm:568
msgid "RPC::XML::Client not found, not pinging"
msgstr "RPC::XML::Client nicht gefunden, pinge nicht"
@@ -522,6 +522,15 @@ msgstr "um Mitternacht"
msgid "at noon on %A"
msgstr "am Nachmittag des %A"
+#: ../IkiWiki/Plugin/progress.pm:34
+#, perl-format
+msgid "illegal percent value %s"
+msgstr ""
+
+#: ../IkiWiki/Plugin/progress.pm:59
+msgid "need either `percent` or `totalpages` and `donepages` parameters"
+msgstr ""
+
#: ../IkiWiki/Plugin/recentchanges.pm:99
msgid "missing page"
msgstr "fehlende Seite"
@@ -535,78 +544,82 @@ msgstr "Die Seite %s exisitiert nicht."
msgid "(Diff truncated)"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:35
+#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36
#, fuzzy, perl-format
msgid "%s does not exist"
msgstr "Die Seite %s exisitiert nicht."
-#: ../IkiWiki/Plugin/remove.pm:39
+#: ../IkiWiki/Plugin/remove.pm:38
#, fuzzy, perl-format
msgid "%s is not in the srcdir, so it cannot be deleted"
msgstr "%s wurde von %s gesperrt und kann nicht bearbeitet werden"
-#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:44
+#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45
#, fuzzy, perl-format
msgid "%s is not a file"
msgstr "%s ist keine bearbeitbare Seite"
-#: ../IkiWiki/Plugin/remove.pm:109
+#: ../IkiWiki/Plugin/remove.pm:112
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:145
+#: ../IkiWiki/Plugin/remove.pm:148
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:185
+#: ../IkiWiki/Plugin/remove.pm:188
msgid "removed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:41
+#: ../IkiWiki/Plugin/rename.pm:42
#, perl-format
msgid "%s is not in the srcdir, so it cannot be renamed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:56
+#: ../IkiWiki/Plugin/rename.pm:62
#, fuzzy
msgid "no change to the file name was specified"
msgstr "Dateiname des Wrappers nicht angegeben"
-#: ../IkiWiki/Plugin/rename.pm:62
+#: ../IkiWiki/Plugin/rename.pm:68
#, perl-format
msgid "illegal name"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:67
+#: ../IkiWiki/Plugin/rename.pm:73
#, perl-format
msgid "%s already exists"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:73
+#: ../IkiWiki/Plugin/rename.pm:79
#, perl-format
msgid "%s already exists on disk"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:95
+#: ../IkiWiki/Plugin/rename.pm:101
#, fuzzy, perl-format
msgid "rename %s"
msgstr "erzeuge %s"
-#: ../IkiWiki/Plugin/rename.pm:206
+#: ../IkiWiki/Plugin/rename.pm:138
+msgid "Also rename SubPages and attachments"
+msgstr ""
+
+#: ../IkiWiki/Plugin/rename.pm:223
msgid "Only one attachment can be renamed at a time."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:209
+#: ../IkiWiki/Plugin/rename.pm:226
msgid "Please select the attachment to rename."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:277
+#: ../IkiWiki/Plugin/rename.pm:332
#, perl-format
msgid "rename %s to %s"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:306
+#: ../IkiWiki/Plugin/rename.pm:484
#, perl-format
msgid "update for rename of %s to %s"
msgstr ""
@@ -765,47 +778,52 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr ""
-#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:298
+#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:302
#, perl-format
msgid "skipping bad filename %s"
msgstr "überspringe fehlerhaften Dateinamen %s"
-#: ../IkiWiki/Render.pm:356
+#: ../IkiWiki/Render.pm:284
+#, perl-format
+msgid "%s has multiple possible source pages"
+msgstr ""
+
+#: ../IkiWiki/Render.pm:360
#, perl-format
msgid "removing old page %s"
msgstr "entferne alte Seite %s"
-#: ../IkiWiki/Render.pm:396
+#: ../IkiWiki/Render.pm:400
#, perl-format
msgid "scanning %s"
msgstr "durchsuche %s"
-#: ../IkiWiki/Render.pm:401
+#: ../IkiWiki/Render.pm:405
#, perl-format
msgid "rendering %s"
msgstr "erzeuge %s"
-#: ../IkiWiki/Render.pm:422
+#: ../IkiWiki/Render.pm:426
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "erzeuge %s, was auf %s verweist"
-#: ../IkiWiki/Render.pm:443
+#: ../IkiWiki/Render.pm:447
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "erzeuge %s, das von %s abhängt"
-#: ../IkiWiki/Render.pm:482
+#: ../IkiWiki/Render.pm:486
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr "erzeuge %s, um dessen Rücklinks zu aktualisieren"
-#: ../IkiWiki/Render.pm:494
+#: ../IkiWiki/Render.pm:498
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr "entferne %s, wird nicht länger von %s erzeugt"
-#: ../IkiWiki/Render.pm:518
+#: ../IkiWiki/Render.pm:522
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki: kann %s nicht erzeugen"
@@ -866,19 +884,19 @@ msgstr "%s wurde erfolgreich erstellt"
msgid "usage: ikiwiki [options] source dest"
msgstr "Benutzung: ikiwiki [Optionen] Quelle Ziel"
-#: ../ikiwiki.in:83
+#: ../ikiwiki.in:89
msgid "usage: --set var=value"
msgstr "Benutzung: --set Variable=Wert"
-#: ../ikiwiki.in:129
+#: ../ikiwiki.in:135
msgid "generating wrappers.."
msgstr "erzeuge Wrapper.."
-#: ../ikiwiki.in:182
+#: ../ikiwiki.in:186
msgid "rebuilding wiki.."
msgstr "erzeuge Wiki neu.."
-#: ../ikiwiki.in:185
+#: ../ikiwiki.in:189
msgid "refreshing wiki.."
msgstr "aktualisiere Wiki.."
diff --git a/po/es.po b/po/es.po
index bcc83033a..4033a5ee9 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-09-11 18:52-0400\n"
+"POT-Creation-Date: 2008-09-24 17:55-0400\n"
"PO-Revision-Date: 2008-03-06 11:07+0100\n"
"Last-Translator: Víctor Moral <victor@taquiones.net>\n"
"Language-Team: Spanish <es@li.org>\n"
@@ -24,7 +24,7 @@ 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:163 ../IkiWiki/Plugin/editpage.pm:310
+#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:311
msgid "Your login session has expired."
msgstr ""
@@ -120,7 +120,7 @@ msgstr "(los caracteres especiales de la fuente de datos están exceptuados)"
msgid "feed crashed XML::Feed!"
msgstr "¡ la fuente de datos ha provocado un error fatal en XML::Feed !"
-#: ../IkiWiki/Plugin/aggregate.pm:584
+#: ../IkiWiki/Plugin/aggregate.pm:590
#, perl-format
msgid "creating new page %s"
msgstr "creando nueva página %s"
@@ -129,7 +129,7 @@ msgstr "creando nueva página %s"
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:193
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:197
msgid "done"
msgstr "completado"
@@ -173,8 +173,8 @@ msgstr ""
msgid "automatic index generation"
msgstr ""
-#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:221
-#: ../IkiWiki/Plugin/inline.pm:317 ../IkiWiki/Plugin/opendiscussion.pm:26
+#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:222
+#: ../IkiWiki/Plugin/inline.pm:323 ../IkiWiki/Plugin/opendiscussion.pm:26
#: ../IkiWiki/Plugin/orphans.pm:37 ../IkiWiki/Render.pm:79
#: ../IkiWiki/Render.pm:149
msgid "discussion"
@@ -205,19 +205,19 @@ msgstr ""
msgid "no text was copied in this page with id %s"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:110
+#: ../IkiWiki/Plugin/editpage.pm:111
#, perl-format
msgid "%s is not an editable page"
msgstr "la página %s no es modificable"
-#: ../IkiWiki/Plugin/editpage.pm:277
+#: ../IkiWiki/Plugin/editpage.pm:278
#, perl-format
msgid "creating %s"
msgstr "creando página %s"
-#: ../IkiWiki/Plugin/editpage.pm:295 ../IkiWiki/Plugin/editpage.pm:323
-#: ../IkiWiki/Plugin/editpage.pm:333 ../IkiWiki/Plugin/editpage.pm:368
-#: ../IkiWiki/Plugin/editpage.pm:413
+#: ../IkiWiki/Plugin/editpage.pm:296 ../IkiWiki/Plugin/editpage.pm:324
+#: ../IkiWiki/Plugin/editpage.pm:334 ../IkiWiki/Plugin/editpage.pm:369
+#: ../IkiWiki/Plugin/editpage.pm:414
#, perl-format
msgid "editing %s"
msgstr "modificando página %s"
@@ -230,12 +230,12 @@ msgstr "falta indicar la plantilla (template)"
msgid "match not specified"
msgstr "falta indicar la coincidencia de páginas (match)"
-#: ../IkiWiki/Plugin/edittemplate.pm:59
+#: ../IkiWiki/Plugin/edittemplate.pm:62
#, perl-format
msgid "edittemplate %s registered for %s"
msgstr "plantilla de edición %s registrada para %s"
-#: ../IkiWiki/Plugin/edittemplate.pm:125
+#: ../IkiWiki/Plugin/edittemplate.pm:133
msgid "failed to process"
msgstr "fallo en el proceso"
@@ -303,20 +303,20 @@ msgstr "falta el parámetro %s"
msgid "unknown sort type %s"
msgstr "no conozco este tipo de ordenación %s"
-#: ../IkiWiki/Plugin/inline.pm:276
+#: ../IkiWiki/Plugin/inline.pm:282
msgid "Add a new post titled:"
msgstr "Añadir una entrada nueva titulada:"
-#: ../IkiWiki/Plugin/inline.pm:292
+#: ../IkiWiki/Plugin/inline.pm:298
#, perl-format
msgid "nonexistant template %s"
msgstr "la plantilla %s no existe "
-#: ../IkiWiki/Plugin/inline.pm:325 ../IkiWiki/Render.pm:83
+#: ../IkiWiki/Plugin/inline.pm:331 ../IkiWiki/Render.pm:83
msgid "Discussion"
msgstr "Comentarios"
-#: ../IkiWiki/Plugin/inline.pm:562
+#: ../IkiWiki/Plugin/inline.pm:568
msgid "RPC::XML::Client not found, not pinging"
msgstr "No he encontrado el componente RPC::XML::Client, no envío señal alguna"
@@ -524,6 +524,15 @@ msgstr "a medianoche"
msgid "at noon on %A"
msgstr "el %A a media tarde"
+#: ../IkiWiki/Plugin/progress.pm:34
+#, perl-format
+msgid "illegal percent value %s"
+msgstr ""
+
+#: ../IkiWiki/Plugin/progress.pm:59
+msgid "need either `percent` or `totalpages` and `donepages` parameters"
+msgstr ""
+
#: ../IkiWiki/Plugin/recentchanges.pm:99
msgid "missing page"
msgstr "página no encontrada"
@@ -537,78 +546,82 @@ msgstr "No existe la página %s."
msgid "(Diff truncated)"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:35
+#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36
#, fuzzy, perl-format
msgid "%s does not exist"
msgstr "No existe la página %s."
-#: ../IkiWiki/Plugin/remove.pm:39
+#: ../IkiWiki/Plugin/remove.pm:38
#, fuzzy, perl-format
msgid "%s is not in the srcdir, so it cannot be deleted"
msgstr "La página %s está bloqueada por %s y no puede modificarse"
-#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:44
+#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45
#, fuzzy, perl-format
msgid "%s is not a file"
msgstr "la página %s no es modificable"
-#: ../IkiWiki/Plugin/remove.pm:109
+#: ../IkiWiki/Plugin/remove.pm:112
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:145
+#: ../IkiWiki/Plugin/remove.pm:148
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:185
+#: ../IkiWiki/Plugin/remove.pm:188
msgid "removed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:41
+#: ../IkiWiki/Plugin/rename.pm:42
#, perl-format
msgid "%s is not in the srcdir, so it cannot be renamed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:56
+#: ../IkiWiki/Plugin/rename.pm:62
#, fuzzy
msgid "no change to the file name was specified"
msgstr "el programa envoltorio no ha sido especificado"
-#: ../IkiWiki/Plugin/rename.pm:62
+#: ../IkiWiki/Plugin/rename.pm:68
#, perl-format
msgid "illegal name"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:67
+#: ../IkiWiki/Plugin/rename.pm:73
#, perl-format
msgid "%s already exists"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:73
+#: ../IkiWiki/Plugin/rename.pm:79
#, perl-format
msgid "%s already exists on disk"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:95
+#: ../IkiWiki/Plugin/rename.pm:101
#, fuzzy, perl-format
msgid "rename %s"
msgstr "convirtiendo %s"
-#: ../IkiWiki/Plugin/rename.pm:206
+#: ../IkiWiki/Plugin/rename.pm:138
+msgid "Also rename SubPages and attachments"
+msgstr ""
+
+#: ../IkiWiki/Plugin/rename.pm:223
msgid "Only one attachment can be renamed at a time."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:209
+#: ../IkiWiki/Plugin/rename.pm:226
msgid "Please select the attachment to rename."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:277
+#: ../IkiWiki/Plugin/rename.pm:332
#, perl-format
msgid "rename %s to %s"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:306
+#: ../IkiWiki/Plugin/rename.pm:484
#, fuzzy, perl-format
msgid "update for rename of %s to %s"
msgstr "actualizado el wiki %s y la página %s por el usuario %s"
@@ -767,49 +780,54 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr ""
-#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:298
+#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:302
#, perl-format
msgid "skipping bad filename %s"
msgstr "ignorando el archivo %s porque su nombre no es correcto"
-#: ../IkiWiki/Render.pm:356
+#: ../IkiWiki/Render.pm:284
+#, perl-format
+msgid "%s has multiple possible source pages"
+msgstr ""
+
+#: ../IkiWiki/Render.pm:360
#, perl-format
msgid "removing old page %s"
msgstr "eliminando la antigua página %s"
-#: ../IkiWiki/Render.pm:396
+#: ../IkiWiki/Render.pm:400
#, perl-format
msgid "scanning %s"
msgstr "explorando %s"
-#: ../IkiWiki/Render.pm:401
+#: ../IkiWiki/Render.pm:405
#, perl-format
msgid "rendering %s"
msgstr "convirtiendo %s"
-#: ../IkiWiki/Render.pm:422
+#: ../IkiWiki/Render.pm:426
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "convirtiendo la página %s, la cual referencia a %s"
-#: ../IkiWiki/Render.pm:443
+#: ../IkiWiki/Render.pm:447
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "convirtiendo la página %s, la cual depende de %s"
-#: ../IkiWiki/Render.pm:482
+#: ../IkiWiki/Render.pm:486
#, 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:494
+#: ../IkiWiki/Render.pm:498
#, 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:518
+#: ../IkiWiki/Render.pm:522
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikwiki: no puedo convertir la página %s"
@@ -871,19 +889,19 @@ 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:89
msgid "usage: --set var=value"
msgstr "uso: --set variable=valor"
-#: ../ikiwiki.in:129
+#: ../ikiwiki.in:135
msgid "generating wrappers.."
msgstr "generando programas auxiliares.."
-#: ../ikiwiki.in:182
+#: ../ikiwiki.in:186
msgid "rebuilding wiki.."
msgstr "reconstruyendo el wiki.."
-#: ../ikiwiki.in:185
+#: ../ikiwiki.in:189
msgid "refreshing wiki.."
msgstr "actualizando el wiki.."
diff --git a/po/fr.po b/po/fr.po
index 5189728fd..8a79cd8d1 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-09-11 18:52-0400\n"
+"POT-Creation-Date: 2008-09-24 17:55-0400\n"
"PO-Revision-Date: 2008-04-29 17:46+0200\n"
"Last-Translator: Christian Perrier <bubulle@debian.org>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
@@ -27,7 +27,7 @@ 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:163 ../IkiWiki/Plugin/editpage.pm:310
+#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:311
msgid "Your login session has expired."
msgstr "Session d'authentification expirée."
@@ -123,7 +123,7 @@ msgstr "(échappement des entités de flux)"
msgid "feed crashed XML::Feed!"
msgstr "Plantage du flux XML::Feed !"
-#: ../IkiWiki/Plugin/aggregate.pm:584
+#: ../IkiWiki/Plugin/aggregate.pm:590
#, perl-format
msgid "creating new page %s"
msgstr "Création de la nouvelle page %s"
@@ -132,7 +132,7 @@ msgstr "Création de la nouvelle page %s"
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:193
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:197
msgid "done"
msgstr "Terminé"
@@ -176,8 +176,8 @@ msgstr ""
msgid "automatic index generation"
msgstr ""
-#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:221
-#: ../IkiWiki/Plugin/inline.pm:317 ../IkiWiki/Plugin/opendiscussion.pm:26
+#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:222
+#: ../IkiWiki/Plugin/inline.pm:323 ../IkiWiki/Plugin/opendiscussion.pm:26
#: ../IkiWiki/Plugin/orphans.pm:37 ../IkiWiki/Render.pm:79
#: ../IkiWiki/Render.pm:149
msgid "discussion"
@@ -208,19 +208,19 @@ msgstr ""
msgid "no text was copied in this page with id %s"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:110
+#: ../IkiWiki/Plugin/editpage.pm:111
#, perl-format
msgid "%s is not an editable page"
msgstr "%s n'est pas une page éditable"
-#: ../IkiWiki/Plugin/editpage.pm:277
+#: ../IkiWiki/Plugin/editpage.pm:278
#, perl-format
msgid "creating %s"
msgstr "Création de %s"
-#: ../IkiWiki/Plugin/editpage.pm:295 ../IkiWiki/Plugin/editpage.pm:323
-#: ../IkiWiki/Plugin/editpage.pm:333 ../IkiWiki/Plugin/editpage.pm:368
-#: ../IkiWiki/Plugin/editpage.pm:413
+#: ../IkiWiki/Plugin/editpage.pm:296 ../IkiWiki/Plugin/editpage.pm:324
+#: ../IkiWiki/Plugin/editpage.pm:334 ../IkiWiki/Plugin/editpage.pm:369
+#: ../IkiWiki/Plugin/editpage.pm:414
#, perl-format
msgid "editing %s"
msgstr "Édition de %s"
@@ -233,12 +233,12 @@ msgstr "modèle (« template ») non indiqué"
msgid "match not specified"
msgstr "correspondance non indiquée"
-#: ../IkiWiki/Plugin/edittemplate.pm:59
+#: ../IkiWiki/Plugin/edittemplate.pm:62
#, perl-format
msgid "edittemplate %s registered for %s"
msgstr "edittemplate %s enregistré pour %s"
-#: ../IkiWiki/Plugin/edittemplate.pm:125
+#: ../IkiWiki/Plugin/edittemplate.pm:133
msgid "failed to process"
msgstr "Échec du traitement"
@@ -305,20 +305,20 @@ msgstr "Paramètre %s manquant"
msgid "unknown sort type %s"
msgstr "Type de tri %s inconnu"
-#: ../IkiWiki/Plugin/inline.pm:276
+#: ../IkiWiki/Plugin/inline.pm:282
msgid "Add a new post titled:"
msgstr "Ajouter un nouvel article dont le titre est :"
-#: ../IkiWiki/Plugin/inline.pm:292
+#: ../IkiWiki/Plugin/inline.pm:298
#, perl-format
msgid "nonexistant template %s"
msgstr "Le modèle (« template ») %s n'existe pas"
-#: ../IkiWiki/Plugin/inline.pm:325 ../IkiWiki/Render.pm:83
+#: ../IkiWiki/Plugin/inline.pm:331 ../IkiWiki/Render.pm:83
msgid "Discussion"
msgstr "Discussion"
-#: ../IkiWiki/Plugin/inline.pm:562
+#: ../IkiWiki/Plugin/inline.pm:568
msgid "RPC::XML::Client not found, not pinging"
msgstr "RPC::XML::Client introuvable, pas de réponse au ping"
@@ -526,6 +526,15 @@ msgstr "à minuit"
msgid "at noon on %A"
msgstr "%A, à midi"
+#: ../IkiWiki/Plugin/progress.pm:34
+#, perl-format
+msgid "illegal percent value %s"
+msgstr ""
+
+#: ../IkiWiki/Plugin/progress.pm:59
+msgid "need either `percent` or `totalpages` and `donepages` parameters"
+msgstr ""
+
#: ../IkiWiki/Plugin/recentchanges.pm:99
msgid "missing page"
msgstr "Page manquante"
@@ -539,78 +548,82 @@ msgstr "La page %s n'existe pas."
msgid "(Diff truncated)"
msgstr "(fichier de différences tronqué)"
-#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:35
+#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36
#, fuzzy, perl-format
msgid "%s does not exist"
msgstr "La page %s n'existe pas."
-#: ../IkiWiki/Plugin/remove.pm:39
+#: ../IkiWiki/Plugin/remove.pm:38
#, fuzzy, perl-format
msgid "%s is not in the srcdir, so it cannot be deleted"
msgstr "%s est verrouillé par %s et ne peut être édité"
-#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:44
+#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45
#, fuzzy, perl-format
msgid "%s is not a file"
msgstr "%s n'est pas une page éditable"
-#: ../IkiWiki/Plugin/remove.pm:109
+#: ../IkiWiki/Plugin/remove.pm:112
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:145
+#: ../IkiWiki/Plugin/remove.pm:148
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:185
+#: ../IkiWiki/Plugin/remove.pm:188
msgid "removed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:41
+#: ../IkiWiki/Plugin/rename.pm:42
#, perl-format
msgid "%s is not in the srcdir, so it cannot be renamed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:56
+#: ../IkiWiki/Plugin/rename.pm:62
#, fuzzy
msgid "no change to the file name was specified"
msgstr "Le nom de fichier de l'enrobage n'a pas été indiqué"
-#: ../IkiWiki/Plugin/rename.pm:62
+#: ../IkiWiki/Plugin/rename.pm:68
#, perl-format
msgid "illegal name"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:67
+#: ../IkiWiki/Plugin/rename.pm:73
#, perl-format
msgid "%s already exists"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:73
+#: ../IkiWiki/Plugin/rename.pm:79
#, perl-format
msgid "%s already exists on disk"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:95
+#: ../IkiWiki/Plugin/rename.pm:101
#, fuzzy, perl-format
msgid "rename %s"
msgstr "Affichage de %s"
-#: ../IkiWiki/Plugin/rename.pm:206
+#: ../IkiWiki/Plugin/rename.pm:138
+msgid "Also rename SubPages and attachments"
+msgstr ""
+
+#: ../IkiWiki/Plugin/rename.pm:223
msgid "Only one attachment can be renamed at a time."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:209
+#: ../IkiWiki/Plugin/rename.pm:226
msgid "Please select the attachment to rename."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:277
+#: ../IkiWiki/Plugin/rename.pm:332
#, perl-format
msgid "rename %s to %s"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:306
+#: ../IkiWiki/Plugin/rename.pm:484
#, perl-format
msgid "update for rename of %s to %s"
msgstr ""
@@ -770,47 +783,52 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr ""
-#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:298
+#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:302
#, perl-format
msgid "skipping bad filename %s"
msgstr "Omission du fichier au nom incorrect %s"
-#: ../IkiWiki/Render.pm:356
+#: ../IkiWiki/Render.pm:284
+#, perl-format
+msgid "%s has multiple possible source pages"
+msgstr ""
+
+#: ../IkiWiki/Render.pm:360
#, perl-format
msgid "removing old page %s"
msgstr "Suppression de l'ancienne page %s"
-#: ../IkiWiki/Render.pm:396
+#: ../IkiWiki/Render.pm:400
#, perl-format
msgid "scanning %s"
msgstr "Parcours de %s"
-#: ../IkiWiki/Render.pm:401
+#: ../IkiWiki/Render.pm:405
#, perl-format
msgid "rendering %s"
msgstr "Affichage de %s"
-#: ../IkiWiki/Render.pm:422
+#: ../IkiWiki/Render.pm:426
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "Affichage de %s, qui est lié à %s"
-#: ../IkiWiki/Render.pm:443
+#: ../IkiWiki/Render.pm:447
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "Affichage de %s, qui dépend de %s"
-#: ../IkiWiki/Render.pm:482
+#: ../IkiWiki/Render.pm:486
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr "Affichage de %s, afin de mettre à jour ses rétroliens"
-#: ../IkiWiki/Render.pm:494
+#: ../IkiWiki/Render.pm:498
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr "Suppression de %s, qui n'est plus affiché par %s"
-#: ../IkiWiki/Render.pm:518
+#: ../IkiWiki/Render.pm:522
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki : impossible d'afficher %s"
@@ -872,19 +890,19 @@ 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:89
msgid "usage: --set var=value"
msgstr "Syntaxe : -- set var=valeur"
-#: ../ikiwiki.in:129
+#: ../ikiwiki.in:135
msgid "generating wrappers.."
msgstr "Création des fichiers CGI..."
-#: ../ikiwiki.in:182
+#: ../ikiwiki.in:186
msgid "rebuilding wiki.."
msgstr "Reconstruction du wiki..."
-#: ../ikiwiki.in:185
+#: ../ikiwiki.in:189
msgid "refreshing wiki.."
msgstr "Rafraîchissement du wiki..."
diff --git a/po/gu.po b/po/gu.po
index f5e2e89e3..d31bd7cd3 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-09-11 18:52-0400\n"
+"POT-Creation-Date: 2008-09-24 17:55-0400\n"
"PO-Revision-Date: 2007-01-11 16:05+0530\n"
"Last-Translator: Kartik Mistry <kartik.mistry@gmail.com>\n"
"Language-Team: Gujarati <team@utkarsh.org>\n"
@@ -23,7 +23,7 @@ msgstr "તમારે પà«àª°àª¥àª® લોગ ઇન થવà«àª‚ પડશà
msgid "login failed, perhaps you need to turn on cookies?"
msgstr "પà«àª°àªµà«‡àª¶ નિષà«àª«àª³, કદાચ તમારી કà«àª•à«€àª“ સકà«àª°àª¿àª¯ બનાવવી પડશે?"
-#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:310
+#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:311
msgid "Your login session has expired."
msgstr ""
@@ -120,7 +120,7 @@ msgstr ""
msgid "feed crashed XML::Feed!"
msgstr "ફીડ ભાંગી ગયà«àª‚ XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:584
+#: ../IkiWiki/Plugin/aggregate.pm:590
#, perl-format
msgid "creating new page %s"
msgstr "નવà«àª‚ પાનà«àª‚ %s બનાવે છે"
@@ -129,7 +129,7 @@ msgstr "નવà«àª‚ પાનà«àª‚ %s બનાવે છે"
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:193
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:197
msgid "done"
msgstr "સંપૂરà«àª£"
@@ -173,8 +173,8 @@ msgstr ""
msgid "automatic index generation"
msgstr ""
-#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:221
-#: ../IkiWiki/Plugin/inline.pm:317 ../IkiWiki/Plugin/opendiscussion.pm:26
+#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:222
+#: ../IkiWiki/Plugin/inline.pm:323 ../IkiWiki/Plugin/opendiscussion.pm:26
#: ../IkiWiki/Plugin/orphans.pm:37 ../IkiWiki/Render.pm:79
#: ../IkiWiki/Render.pm:149
msgid "discussion"
@@ -205,19 +205,19 @@ msgstr ""
msgid "no text was copied in this page with id %s"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:110
+#: ../IkiWiki/Plugin/editpage.pm:111
#, perl-format
msgid "%s is not an editable page"
msgstr "%s ઠસà«àª§àª¾àª°à«€ શકાય તેવà«àª‚ પાનà«àª‚ નથી"
-#: ../IkiWiki/Plugin/editpage.pm:277
+#: ../IkiWiki/Plugin/editpage.pm:278
#, perl-format
msgid "creating %s"
msgstr "%s બનાવે છે"
-#: ../IkiWiki/Plugin/editpage.pm:295 ../IkiWiki/Plugin/editpage.pm:323
-#: ../IkiWiki/Plugin/editpage.pm:333 ../IkiWiki/Plugin/editpage.pm:368
-#: ../IkiWiki/Plugin/editpage.pm:413
+#: ../IkiWiki/Plugin/editpage.pm:296 ../IkiWiki/Plugin/editpage.pm:324
+#: ../IkiWiki/Plugin/editpage.pm:334 ../IkiWiki/Plugin/editpage.pm:369
+#: ../IkiWiki/Plugin/editpage.pm:414
#, perl-format
msgid "editing %s"
msgstr "%s સà«àª§àª¾àª°à«‡ છે"
@@ -232,12 +232,12 @@ msgstr "ટેમà«àªªàª²à«‡àªŸ %s મળà«àª¯à«àª‚ નહી"
msgid "match not specified"
msgstr "આવરણ ફાઇલનામ સà«àªªàª·à«àªŸ કરેલ નથી"
-#: ../IkiWiki/Plugin/edittemplate.pm:59
+#: ../IkiWiki/Plugin/edittemplate.pm:62
#, perl-format
msgid "edittemplate %s registered for %s"
msgstr ""
-#: ../IkiWiki/Plugin/edittemplate.pm:125
+#: ../IkiWiki/Plugin/edittemplate.pm:133
#, fuzzy
msgid "failed to process"
msgstr "કà«àª°àª¿àª¯àª¾ કરવામાં નિષà«àª«àª³:"
@@ -303,20 +303,20 @@ msgstr "ખોવાયેલ %s વિકલà«àªª"
msgid "unknown sort type %s"
msgstr "અજાણà«àª¯à«‹ ગોઠવણી પà«àª°àª•àª¾àª° %s"
-#: ../IkiWiki/Plugin/inline.pm:276
+#: ../IkiWiki/Plugin/inline.pm:282
msgid "Add a new post titled:"
msgstr "આ શિરà«àª·àª•àª¥à«€ નવà«àª‚ પોસà«àªŸ ઉમેરો:"
-#: ../IkiWiki/Plugin/inline.pm:292
+#: ../IkiWiki/Plugin/inline.pm:298
#, perl-format
msgid "nonexistant template %s"
msgstr "અસà«àª¤àª¿àª¤à«àªµàª®àª¾àª‚ ન હોય તેવà«àª‚ ટેમà«àªªàª²à«‡àªŸ %s"
-#: ../IkiWiki/Plugin/inline.pm:325 ../IkiWiki/Render.pm:83
+#: ../IkiWiki/Plugin/inline.pm:331 ../IkiWiki/Render.pm:83
msgid "Discussion"
msgstr "ચરà«àªšàª¾"
-#: ../IkiWiki/Plugin/inline.pm:562
+#: ../IkiWiki/Plugin/inline.pm:568
msgid "RPC::XML::Client not found, not pinging"
msgstr "RPC::XML::Client મળà«àª¯à«àª‚ નહી, પિંગ કરવામાં આવતà«àª‚ નથી"
@@ -525,6 +525,15 @@ msgstr "મધà«àª¯àª°àª¾àª¤à«àª°à«‡"
msgid "at noon on %A"
msgstr "બપોરે %A પર"
+#: ../IkiWiki/Plugin/progress.pm:34
+#, perl-format
+msgid "illegal percent value %s"
+msgstr ""
+
+#: ../IkiWiki/Plugin/progress.pm:59
+msgid "need either `percent` or `totalpages` and `donepages` parameters"
+msgstr ""
+
#: ../IkiWiki/Plugin/recentchanges.pm:99
#, fuzzy
msgid "missing page"
@@ -539,78 +548,82 @@ msgstr ""
msgid "(Diff truncated)"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:35
+#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36
#, perl-format
msgid "%s does not exist"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:39
+#: ../IkiWiki/Plugin/remove.pm:38
#, fuzzy, perl-format
msgid "%s is not in the srcdir, so it cannot be deleted"
msgstr "%s ઠ%s દà«àªµàª¾àª°àª¾ તાળà«àª‚ મરાયેલ છે અને તેમાં સà«àª§àª¾àª°à«‹ કરી શકાશે નહી"
-#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:44
+#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45
#, fuzzy, perl-format
msgid "%s is not a file"
msgstr "%s ઠસà«àª§àª¾àª°à«€ શકાય તેવà«àª‚ પાનà«àª‚ નથી"
-#: ../IkiWiki/Plugin/remove.pm:109
+#: ../IkiWiki/Plugin/remove.pm:112
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:145
+#: ../IkiWiki/Plugin/remove.pm:148
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:185
+#: ../IkiWiki/Plugin/remove.pm:188
msgid "removed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:41
+#: ../IkiWiki/Plugin/rename.pm:42
#, perl-format
msgid "%s is not in the srcdir, so it cannot be renamed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:56
+#: ../IkiWiki/Plugin/rename.pm:62
#, fuzzy
msgid "no change to the file name was specified"
msgstr "આવરણ ફાઇલનામ સà«àªªàª·à«àªŸ કરેલ નથી"
-#: ../IkiWiki/Plugin/rename.pm:62
+#: ../IkiWiki/Plugin/rename.pm:68
#, perl-format
msgid "illegal name"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:67
+#: ../IkiWiki/Plugin/rename.pm:73
#, perl-format
msgid "%s already exists"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:73
+#: ../IkiWiki/Plugin/rename.pm:79
#, perl-format
msgid "%s already exists on disk"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:95
+#: ../IkiWiki/Plugin/rename.pm:101
#, fuzzy, perl-format
msgid "rename %s"
msgstr "રેનà«àª¡àª° કરે છે %s"
-#: ../IkiWiki/Plugin/rename.pm:206
+#: ../IkiWiki/Plugin/rename.pm:138
+msgid "Also rename SubPages and attachments"
+msgstr ""
+
+#: ../IkiWiki/Plugin/rename.pm:223
msgid "Only one attachment can be renamed at a time."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:209
+#: ../IkiWiki/Plugin/rename.pm:226
msgid "Please select the attachment to rename."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:277
+#: ../IkiWiki/Plugin/rename.pm:332
#, perl-format
msgid "rename %s to %s"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:306
+#: ../IkiWiki/Plugin/rename.pm:484
#, fuzzy, perl-format
msgid "update for rename of %s to %s"
msgstr "%s નો સà«àª§àª¾àª°à«‹ %s નાં %s વડે"
@@ -770,47 +783,52 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr ""
-#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:298
+#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:302
#, perl-format
msgid "skipping bad filename %s"
msgstr "ખરાબ ફાઇલ નામ છોડી દે છે %s"
-#: ../IkiWiki/Render.pm:356
+#: ../IkiWiki/Render.pm:284
+#, perl-format
+msgid "%s has multiple possible source pages"
+msgstr ""
+
+#: ../IkiWiki/Render.pm:360
#, perl-format
msgid "removing old page %s"
msgstr "જà«àª¨àª¾àª‚ પાનાં દૂર કરે છે %s"
-#: ../IkiWiki/Render.pm:396
+#: ../IkiWiki/Render.pm:400
#, perl-format
msgid "scanning %s"
msgstr "%s શોધે છે"
-#: ../IkiWiki/Render.pm:401
+#: ../IkiWiki/Render.pm:405
#, perl-format
msgid "rendering %s"
msgstr "રેનà«àª¡àª° કરે છે %s"
-#: ../IkiWiki/Render.pm:422
+#: ../IkiWiki/Render.pm:426
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "રેનà«àª¡àª° કરે છે %s, જે %s સાથે જોડાણ ધરાવે છે"
-#: ../IkiWiki/Render.pm:443
+#: ../IkiWiki/Render.pm:447
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "રેનà«àª¡àª° કરે છે %s, જે %s પર આધારિત છે"
-#: ../IkiWiki/Render.pm:482
+#: ../IkiWiki/Render.pm:486
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr "રેનà«àª¡àª° કરે છે %s, તેનાં પાછળનાં જોડાણો સà«àª§àª¾àª°àªµàª¾ માટે"
-#: ../IkiWiki/Render.pm:494
+#: ../IkiWiki/Render.pm:498
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr "દૂર કરે છે %s, હવે %s વડે રેનà«àª¡àª° કરાતà«àª‚ નથી"
-#: ../IkiWiki/Render.pm:518
+#: ../IkiWiki/Render.pm:522
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki: %s રેનà«àª¡àª° કરી શકાતà«àª‚ નથી"
@@ -871,19 +889,19 @@ msgstr "સફળતાપૂરà«àªµàª• પેદા કરેલ છે %s"
msgid "usage: ikiwiki [options] source dest"
msgstr "ઉપયોગ: ikiwiki [વિકલà«àªªà«‹] source dest"
-#: ../ikiwiki.in:83
+#: ../ikiwiki.in:89
msgid "usage: --set var=value"
msgstr ""
-#: ../ikiwiki.in:129
+#: ../ikiwiki.in:135
msgid "generating wrappers.."
msgstr "આવરણ બનાવે છે.."
-#: ../ikiwiki.in:182
+#: ../ikiwiki.in:186
msgid "rebuilding wiki.."
msgstr "વીકી ફરીથી બનાવે છે.."
-#: ../ikiwiki.in:185
+#: ../ikiwiki.in:189
msgid "refreshing wiki.."
msgstr "વીકીને તાજી કરે છે.."
diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot
index 635344b58..4fbe4ce1d 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-09-19 12:57-0400\n"
+"POT-Creation-Date: 2008-09-24 17:55-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -24,7 +24,7 @@ msgstr ""
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
-#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:310
+#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:311
msgid "Your login session has expired."
msgstr ""
@@ -129,7 +129,7 @@ msgstr ""
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:193
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:197
msgid "done"
msgstr ""
@@ -171,7 +171,7 @@ msgstr ""
msgid "automatic index generation"
msgstr ""
-#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:221
+#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:222
#: ../IkiWiki/Plugin/inline.pm:323 ../IkiWiki/Plugin/opendiscussion.pm:26
#: ../IkiWiki/Plugin/orphans.pm:37 ../IkiWiki/Render.pm:79
#: ../IkiWiki/Render.pm:149
@@ -203,19 +203,19 @@ msgstr ""
msgid "no text was copied in this page with id %s"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:110
+#: ../IkiWiki/Plugin/editpage.pm:111
#, perl-format
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:277
+#: ../IkiWiki/Plugin/editpage.pm:278
#, perl-format
msgid "creating %s"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:295 ../IkiWiki/Plugin/editpage.pm:323
-#: ../IkiWiki/Plugin/editpage.pm:333 ../IkiWiki/Plugin/editpage.pm:368
-#: ../IkiWiki/Plugin/editpage.pm:413
+#: ../IkiWiki/Plugin/editpage.pm:296 ../IkiWiki/Plugin/editpage.pm:324
+#: ../IkiWiki/Plugin/editpage.pm:334 ../IkiWiki/Plugin/editpage.pm:369
+#: ../IkiWiki/Plugin/editpage.pm:414
#, perl-format
msgid "editing %s"
msgstr ""
@@ -228,12 +228,12 @@ msgstr ""
msgid "match not specified"
msgstr ""
-#: ../IkiWiki/Plugin/edittemplate.pm:59
+#: ../IkiWiki/Plugin/edittemplate.pm:62
#, perl-format
msgid "edittemplate %s registered for %s"
msgstr ""
-#: ../IkiWiki/Plugin/edittemplate.pm:125
+#: ../IkiWiki/Plugin/edittemplate.pm:133
msgid "failed to process"
msgstr ""
@@ -512,6 +512,15 @@ msgstr ""
msgid "at noon on %A"
msgstr ""
+#: ../IkiWiki/Plugin/progress.pm:34
+#, perl-format
+msgid "illegal percent value %s"
+msgstr ""
+
+#: ../IkiWiki/Plugin/progress.pm:59
+msgid "need either `percent` or `totalpages` and `donepages` parameters"
+msgstr ""
+
#: ../IkiWiki/Plugin/recentchanges.pm:99
msgid "missing page"
msgstr ""
@@ -525,77 +534,81 @@ msgstr ""
msgid "(Diff truncated)"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:35
+#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36
#, perl-format
msgid "%s does not exist"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:39
+#: ../IkiWiki/Plugin/remove.pm:38
#, perl-format
msgid "%s is not in the srcdir, so it cannot be deleted"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:44
+#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45
#, perl-format
msgid "%s is not a file"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:109
+#: ../IkiWiki/Plugin/remove.pm:112
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:145
+#: ../IkiWiki/Plugin/remove.pm:148
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:185
+#: ../IkiWiki/Plugin/remove.pm:188
msgid "removed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:41
+#: ../IkiWiki/Plugin/rename.pm:42
#, perl-format
msgid "%s is not in the srcdir, so it cannot be renamed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:56
+#: ../IkiWiki/Plugin/rename.pm:62
msgid "no change to the file name was specified"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:62
+#: ../IkiWiki/Plugin/rename.pm:68
#, perl-format
msgid "illegal name"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:67
+#: ../IkiWiki/Plugin/rename.pm:73
#, perl-format
msgid "%s already exists"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:73
+#: ../IkiWiki/Plugin/rename.pm:79
#, perl-format
msgid "%s already exists on disk"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:95
+#: ../IkiWiki/Plugin/rename.pm:101
#, perl-format
msgid "rename %s"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:206
+#: ../IkiWiki/Plugin/rename.pm:138
+msgid "Also rename SubPages and attachments"
+msgstr ""
+
+#: ../IkiWiki/Plugin/rename.pm:223
msgid "Only one attachment can be renamed at a time."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:209
+#: ../IkiWiki/Plugin/rename.pm:226
msgid "Please select the attachment to rename."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:277
+#: ../IkiWiki/Plugin/rename.pm:332
#, perl-format
msgid "rename %s to %s"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:306
+#: ../IkiWiki/Plugin/rename.pm:484
#, perl-format
msgid "update for rename of %s to %s"
msgstr ""
@@ -753,47 +766,52 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr ""
-#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:298
+#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:302
#, perl-format
msgid "skipping bad filename %s"
msgstr ""
-#: ../IkiWiki/Render.pm:356
+#: ../IkiWiki/Render.pm:284
+#, perl-format
+msgid "%s has multiple possible source pages"
+msgstr ""
+
+#: ../IkiWiki/Render.pm:360
#, perl-format
msgid "removing old page %s"
msgstr ""
-#: ../IkiWiki/Render.pm:396
+#: ../IkiWiki/Render.pm:400
#, perl-format
msgid "scanning %s"
msgstr ""
-#: ../IkiWiki/Render.pm:401
+#: ../IkiWiki/Render.pm:405
#, perl-format
msgid "rendering %s"
msgstr ""
-#: ../IkiWiki/Render.pm:422
+#: ../IkiWiki/Render.pm:426
#, perl-format
msgid "rendering %s, which links to %s"
msgstr ""
-#: ../IkiWiki/Render.pm:443
+#: ../IkiWiki/Render.pm:447
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr ""
-#: ../IkiWiki/Render.pm:482
+#: ../IkiWiki/Render.pm:486
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr ""
-#: ../IkiWiki/Render.pm:494
+#: ../IkiWiki/Render.pm:498
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr ""
-#: ../IkiWiki/Render.pm:518
+#: ../IkiWiki/Render.pm:522
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr ""
@@ -854,19 +872,19 @@ msgstr ""
msgid "usage: ikiwiki [options] source dest"
msgstr ""
-#: ../ikiwiki.in:83
+#: ../ikiwiki.in:89
msgid "usage: --set var=value"
msgstr ""
-#: ../ikiwiki.in:129
+#: ../ikiwiki.in:135
msgid "generating wrappers.."
msgstr ""
-#: ../ikiwiki.in:182
+#: ../ikiwiki.in:186
msgid "rebuilding wiki.."
msgstr ""
-#: ../ikiwiki.in:185
+#: ../ikiwiki.in:189
msgid "refreshing wiki.."
msgstr ""
diff --git a/po/pl.po b/po/pl.po
index 4c2c00fca..4d9255f6b 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-09-11 18:52-0400\n"
+"POT-Creation-Date: 2008-09-24 17:55-0400\n"
"PO-Revision-Date: 2007-04-27 22:05+0200\n"
"Last-Translator: Pawel Tecza <ptecza@net.icm.edu.pl>\n"
"Language-Team: Debian L10n Polish <debian-l10n-polish@lists.debian.org>\n"
@@ -26,7 +26,7 @@ msgstr ""
"Nieudane logowanie. Proszę sprawdzić czy w przeglądarce włączone są "
"ciasteczka (ang. cookies)"
-#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:310
+#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:311
msgid "Your login session has expired."
msgstr ""
@@ -124,7 +124,7 @@ msgstr ""
msgid "feed crashed XML::Feed!"
msgstr "awaria kanału RSS w module XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:584
+#: ../IkiWiki/Plugin/aggregate.pm:590
#, perl-format
msgid "creating new page %s"
msgstr "tworzenie nowej strony %s"
@@ -133,7 +133,7 @@ msgstr "tworzenie nowej strony %s"
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:193
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:197
msgid "done"
msgstr "gotowe"
@@ -177,8 +177,8 @@ msgstr ""
msgid "automatic index generation"
msgstr ""
-#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:221
-#: ../IkiWiki/Plugin/inline.pm:317 ../IkiWiki/Plugin/opendiscussion.pm:26
+#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:222
+#: ../IkiWiki/Plugin/inline.pm:323 ../IkiWiki/Plugin/opendiscussion.pm:26
#: ../IkiWiki/Plugin/orphans.pm:37 ../IkiWiki/Render.pm:79
#: ../IkiWiki/Render.pm:149
msgid "discussion"
@@ -209,19 +209,19 @@ msgstr ""
msgid "no text was copied in this page with id %s"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:110
+#: ../IkiWiki/Plugin/editpage.pm:111
#, perl-format
msgid "%s is not an editable page"
msgstr "Strona %s nie może być edytowana"
-#: ../IkiWiki/Plugin/editpage.pm:277
+#: ../IkiWiki/Plugin/editpage.pm:278
#, perl-format
msgid "creating %s"
msgstr "tworzenie %s"
-#: ../IkiWiki/Plugin/editpage.pm:295 ../IkiWiki/Plugin/editpage.pm:323
-#: ../IkiWiki/Plugin/editpage.pm:333 ../IkiWiki/Plugin/editpage.pm:368
-#: ../IkiWiki/Plugin/editpage.pm:413
+#: ../IkiWiki/Plugin/editpage.pm:296 ../IkiWiki/Plugin/editpage.pm:324
+#: ../IkiWiki/Plugin/editpage.pm:334 ../IkiWiki/Plugin/editpage.pm:369
+#: ../IkiWiki/Plugin/editpage.pm:414
#, perl-format
msgid "editing %s"
msgstr "edycja %s"
@@ -236,12 +236,12 @@ msgstr "nieznaleziony szablon %s"
msgid "match not specified"
msgstr "nieokreślona nazwa pliku osłony"
-#: ../IkiWiki/Plugin/edittemplate.pm:59
+#: ../IkiWiki/Plugin/edittemplate.pm:62
#, perl-format
msgid "edittemplate %s registered for %s"
msgstr ""
-#: ../IkiWiki/Plugin/edittemplate.pm:125
+#: ../IkiWiki/Plugin/edittemplate.pm:133
#, fuzzy
msgid "failed to process"
msgstr "awaria w trakcie przetwarzania:"
@@ -311,20 +311,20 @@ msgstr "brakujÄ…cy parametr %s"
msgid "unknown sort type %s"
msgstr "nieznany sposób sortowania %s"
-#: ../IkiWiki/Plugin/inline.pm:276
+#: ../IkiWiki/Plugin/inline.pm:282
msgid "Add a new post titled:"
msgstr "Tytuł nowego wpisu"
-#: ../IkiWiki/Plugin/inline.pm:292
+#: ../IkiWiki/Plugin/inline.pm:298
#, perl-format
msgid "nonexistant template %s"
msgstr "brakujÄ…cy szablon %s"
-#: ../IkiWiki/Plugin/inline.pm:325 ../IkiWiki/Render.pm:83
+#: ../IkiWiki/Plugin/inline.pm:331 ../IkiWiki/Render.pm:83
msgid "Discussion"
msgstr "Dyskusja"
-#: ../IkiWiki/Plugin/inline.pm:562
+#: ../IkiWiki/Plugin/inline.pm:568
msgid "RPC::XML::Client not found, not pinging"
msgstr "Nieznaleziony moduł RPC::XML::Client, brak możliwości pingowania"
@@ -539,6 +539,15 @@ msgstr "o północy"
msgid "at noon on %A"
msgstr "w południe w %A"
+#: ../IkiWiki/Plugin/progress.pm:34
+#, perl-format
+msgid "illegal percent value %s"
+msgstr ""
+
+#: ../IkiWiki/Plugin/progress.pm:59
+msgid "need either `percent` or `totalpages` and `donepages` parameters"
+msgstr ""
+
#: ../IkiWiki/Plugin/recentchanges.pm:99
#, fuzzy
msgid "missing page"
@@ -553,80 +562,84 @@ msgstr ""
msgid "(Diff truncated)"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:35
+#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36
#, perl-format
msgid "%s does not exist"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:39
+#: ../IkiWiki/Plugin/remove.pm:38
#, fuzzy, perl-format
msgid "%s is not in the srcdir, so it cannot be deleted"
msgstr ""
"strona %s jest tymczasowo zablokowana przez użytkownika %s i nie może być "
"teraz edytowana"
-#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:44
+#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45
#, fuzzy, perl-format
msgid "%s is not a file"
msgstr "Strona %s nie może być edytowana"
-#: ../IkiWiki/Plugin/remove.pm:109
+#: ../IkiWiki/Plugin/remove.pm:112
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:145
+#: ../IkiWiki/Plugin/remove.pm:148
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:185
+#: ../IkiWiki/Plugin/remove.pm:188
msgid "removed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:41
+#: ../IkiWiki/Plugin/rename.pm:42
#, perl-format
msgid "%s is not in the srcdir, so it cannot be renamed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:56
+#: ../IkiWiki/Plugin/rename.pm:62
#, fuzzy
msgid "no change to the file name was specified"
msgstr "nieokreślona nazwa pliku osłony"
-#: ../IkiWiki/Plugin/rename.pm:62
+#: ../IkiWiki/Plugin/rename.pm:68
#, perl-format
msgid "illegal name"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:67
+#: ../IkiWiki/Plugin/rename.pm:73
#, perl-format
msgid "%s already exists"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:73
+#: ../IkiWiki/Plugin/rename.pm:79
#, perl-format
msgid "%s already exists on disk"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:95
+#: ../IkiWiki/Plugin/rename.pm:101
#, fuzzy, perl-format
msgid "rename %s"
msgstr "renderowanie %s"
-#: ../IkiWiki/Plugin/rename.pm:206
+#: ../IkiWiki/Plugin/rename.pm:138
+msgid "Also rename SubPages and attachments"
+msgstr ""
+
+#: ../IkiWiki/Plugin/rename.pm:223
msgid "Only one attachment can be renamed at a time."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:209
+#: ../IkiWiki/Plugin/rename.pm:226
msgid "Please select the attachment to rename."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:277
+#: ../IkiWiki/Plugin/rename.pm:332
#, perl-format
msgid "rename %s to %s"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:306
+#: ../IkiWiki/Plugin/rename.pm:484
#, fuzzy, perl-format
msgid "update for rename of %s to %s"
msgstr "aktualizacja stron wiki %s: %s przez użytkownika %s"
@@ -795,47 +808,52 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr ""
-#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:298
+#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:302
#, perl-format
msgid "skipping bad filename %s"
msgstr "pomijanie nieprawidłowej nazwy pliku %s"
-#: ../IkiWiki/Render.pm:356
+#: ../IkiWiki/Render.pm:284
+#, perl-format
+msgid "%s has multiple possible source pages"
+msgstr ""
+
+#: ../IkiWiki/Render.pm:360
#, perl-format
msgid "removing old page %s"
msgstr "usuwanie starej strony %s"
-#: ../IkiWiki/Render.pm:396
+#: ../IkiWiki/Render.pm:400
#, perl-format
msgid "scanning %s"
msgstr "skanowanie %s"
-#: ../IkiWiki/Render.pm:401
+#: ../IkiWiki/Render.pm:405
#, perl-format
msgid "rendering %s"
msgstr "renderowanie %s"
-#: ../IkiWiki/Render.pm:422
+#: ../IkiWiki/Render.pm:426
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "renderowanie %s z odnośnikiem do %s"
-#: ../IkiWiki/Render.pm:443
+#: ../IkiWiki/Render.pm:447
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "renderowanie %s zależącego od %s"
-#: ../IkiWiki/Render.pm:482
+#: ../IkiWiki/Render.pm:486
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr "renderowanie %s w celu aktualizacji powrotnych odnośników"
-#: ../IkiWiki/Render.pm:494
+#: ../IkiWiki/Render.pm:498
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr "usuwanie %s nie tworzonego już przez %s"
-#: ../IkiWiki/Render.pm:518
+#: ../IkiWiki/Render.pm:522
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki: awaria w trakcie tworzenia %s"
@@ -896,19 +914,19 @@ 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:89
msgid "usage: --set var=value"
msgstr ""
-#: ../ikiwiki.in:129
+#: ../ikiwiki.in:135
msgid "generating wrappers.."
msgstr "tworzenie osłon..."
-#: ../ikiwiki.in:182
+#: ../ikiwiki.in:186
msgid "rebuilding wiki.."
msgstr "przebudowywanie wiki..."
-#: ../ikiwiki.in:185
+#: ../ikiwiki.in:189
msgid "refreshing wiki.."
msgstr "odświeżanie wiki..."
diff --git a/po/sv.po b/po/sv.po
index 92d65a0d2..f956934ec 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-09-11 18:52-0400\n"
+"POT-Creation-Date: 2008-09-24 17:55-0400\n"
"PO-Revision-Date: 2007-01-10 23:47+0100\n"
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -23,7 +23,7 @@ msgstr "Du måste logga in först."
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
-#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:310
+#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:311
msgid "Your login session has expired."
msgstr ""
@@ -121,7 +121,7 @@ msgstr ""
msgid "feed crashed XML::Feed!"
msgstr "kanalen kraschade XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:584
+#: ../IkiWiki/Plugin/aggregate.pm:590
#, perl-format
msgid "creating new page %s"
msgstr "skapar nya sidan %s"
@@ -130,7 +130,7 @@ msgstr "skapar nya sidan %s"
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:193
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:197
msgid "done"
msgstr "klar"
@@ -174,8 +174,8 @@ msgstr ""
msgid "automatic index generation"
msgstr ""
-#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:221
-#: ../IkiWiki/Plugin/inline.pm:317 ../IkiWiki/Plugin/opendiscussion.pm:26
+#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:222
+#: ../IkiWiki/Plugin/inline.pm:323 ../IkiWiki/Plugin/opendiscussion.pm:26
#: ../IkiWiki/Plugin/orphans.pm:37 ../IkiWiki/Render.pm:79
#: ../IkiWiki/Render.pm:149
msgid "discussion"
@@ -206,19 +206,19 @@ msgstr ""
msgid "no text was copied in this page with id %s"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:110
+#: ../IkiWiki/Plugin/editpage.pm:111
#, perl-format
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:277
+#: ../IkiWiki/Plugin/editpage.pm:278
#, perl-format
msgid "creating %s"
msgstr "skapar %s"
-#: ../IkiWiki/Plugin/editpage.pm:295 ../IkiWiki/Plugin/editpage.pm:323
-#: ../IkiWiki/Plugin/editpage.pm:333 ../IkiWiki/Plugin/editpage.pm:368
-#: ../IkiWiki/Plugin/editpage.pm:413
+#: ../IkiWiki/Plugin/editpage.pm:296 ../IkiWiki/Plugin/editpage.pm:324
+#: ../IkiWiki/Plugin/editpage.pm:334 ../IkiWiki/Plugin/editpage.pm:369
+#: ../IkiWiki/Plugin/editpage.pm:414
#, perl-format
msgid "editing %s"
msgstr "redigerar %s"
@@ -233,12 +233,12 @@ msgstr "mallen %s hittades inte"
msgid "match not specified"
msgstr "filnamn för wrapper har inte angivits"
-#: ../IkiWiki/Plugin/edittemplate.pm:59
+#: ../IkiWiki/Plugin/edittemplate.pm:62
#, perl-format
msgid "edittemplate %s registered for %s"
msgstr ""
-#: ../IkiWiki/Plugin/edittemplate.pm:125
+#: ../IkiWiki/Plugin/edittemplate.pm:133
#, fuzzy
msgid "failed to process"
msgstr "misslyckades med att behandla mall:"
@@ -306,20 +306,20 @@ msgstr "mall saknar id-parameter"
msgid "unknown sort type %s"
msgstr "okänd sorteringstyp %s"
-#: ../IkiWiki/Plugin/inline.pm:276
+#: ../IkiWiki/Plugin/inline.pm:282
msgid "Add a new post titled:"
msgstr ""
-#: ../IkiWiki/Plugin/inline.pm:292
+#: ../IkiWiki/Plugin/inline.pm:298
#, perl-format
msgid "nonexistant template %s"
msgstr ""
-#: ../IkiWiki/Plugin/inline.pm:325 ../IkiWiki/Render.pm:83
+#: ../IkiWiki/Plugin/inline.pm:331 ../IkiWiki/Render.pm:83
msgid "Discussion"
msgstr "Diskussion"
-#: ../IkiWiki/Plugin/inline.pm:562
+#: ../IkiWiki/Plugin/inline.pm:568
msgid "RPC::XML::Client not found, not pinging"
msgstr "RPC::XML::Client hittades inte, pingar inte"
@@ -531,6 +531,15 @@ msgstr ""
msgid "at noon on %A"
msgstr ""
+#: ../IkiWiki/Plugin/progress.pm:34
+#, perl-format
+msgid "illegal percent value %s"
+msgstr ""
+
+#: ../IkiWiki/Plugin/progress.pm:59
+msgid "need either `percent` or `totalpages` and `donepages` parameters"
+msgstr ""
+
#: ../IkiWiki/Plugin/recentchanges.pm:99
#, fuzzy
msgid "missing page"
@@ -545,78 +554,82 @@ msgstr ""
msgid "(Diff truncated)"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:35
+#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36
#, perl-format
msgid "%s does not exist"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:39
+#: ../IkiWiki/Plugin/remove.pm:38
#, fuzzy, perl-format
msgid "%s is not in the srcdir, so it cannot be deleted"
msgstr "%s är låst av %s och kan inte redigeras"
-#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:44
+#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45
#, perl-format
msgid "%s is not a file"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:109
+#: ../IkiWiki/Plugin/remove.pm:112
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:145
+#: ../IkiWiki/Plugin/remove.pm:148
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:185
+#: ../IkiWiki/Plugin/remove.pm:188
msgid "removed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:41
+#: ../IkiWiki/Plugin/rename.pm:42
#, perl-format
msgid "%s is not in the srcdir, so it cannot be renamed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:56
+#: ../IkiWiki/Plugin/rename.pm:62
#, fuzzy
msgid "no change to the file name was specified"
msgstr "filnamn för wrapper har inte angivits"
-#: ../IkiWiki/Plugin/rename.pm:62
+#: ../IkiWiki/Plugin/rename.pm:68
#, perl-format
msgid "illegal name"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:67
+#: ../IkiWiki/Plugin/rename.pm:73
#, perl-format
msgid "%s already exists"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:73
+#: ../IkiWiki/Plugin/rename.pm:79
#, perl-format
msgid "%s already exists on disk"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:95
+#: ../IkiWiki/Plugin/rename.pm:101
#, fuzzy, perl-format
msgid "rename %s"
msgstr "ritar upp %s"
-#: ../IkiWiki/Plugin/rename.pm:206
+#: ../IkiWiki/Plugin/rename.pm:138
+msgid "Also rename SubPages and attachments"
+msgstr ""
+
+#: ../IkiWiki/Plugin/rename.pm:223
msgid "Only one attachment can be renamed at a time."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:209
+#: ../IkiWiki/Plugin/rename.pm:226
msgid "Please select the attachment to rename."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:277
+#: ../IkiWiki/Plugin/rename.pm:332
#, perl-format
msgid "rename %s to %s"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:306
+#: ../IkiWiki/Plugin/rename.pm:484
#, fuzzy, perl-format
msgid "update for rename of %s to %s"
msgstr "uppdatering av %s, %s av %s"
@@ -784,47 +797,52 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr ""
-#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:298
+#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:302
#, perl-format
msgid "skipping bad filename %s"
msgstr "hoppar över felaktigt filnamn %s"
-#: ../IkiWiki/Render.pm:356
+#: ../IkiWiki/Render.pm:284
+#, perl-format
+msgid "%s has multiple possible source pages"
+msgstr ""
+
+#: ../IkiWiki/Render.pm:360
#, perl-format
msgid "removing old page %s"
msgstr "tar bort gammal sida %s"
-#: ../IkiWiki/Render.pm:396
+#: ../IkiWiki/Render.pm:400
#, perl-format
msgid "scanning %s"
msgstr "söker av %s"
-#: ../IkiWiki/Render.pm:401
+#: ../IkiWiki/Render.pm:405
#, perl-format
msgid "rendering %s"
msgstr "ritar upp %s"
-#: ../IkiWiki/Render.pm:422
+#: ../IkiWiki/Render.pm:426
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "ritar upp %s, vilken länkar till %s"
-#: ../IkiWiki/Render.pm:443
+#: ../IkiWiki/Render.pm:447
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "ritar upp %s, vilken är beroende av %s"
-#: ../IkiWiki/Render.pm:482
+#: ../IkiWiki/Render.pm:486
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr "ritar upp %s, för att uppdatera dess bakåtlänkar"
-#: ../IkiWiki/Render.pm:494
+#: ../IkiWiki/Render.pm:498
#, 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:518
+#: ../IkiWiki/Render.pm:522
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki: kan inte rita upp %s"
@@ -885,19 +903,19 @@ 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:89
msgid "usage: --set var=value"
msgstr ""
-#: ../ikiwiki.in:129
+#: ../ikiwiki.in:135
msgid "generating wrappers.."
msgstr "genererar wrappers.."
-#: ../ikiwiki.in:182
+#: ../ikiwiki.in:186
msgid "rebuilding wiki.."
msgstr "bygger om wiki.."
-#: ../ikiwiki.in:185
+#: ../ikiwiki.in:189
msgid "refreshing wiki.."
msgstr "uppdaterar wiki.."
diff --git a/po/vi.po b/po/vi.po
index ed76319b6..da07d535b 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-09-11 18:52-0400\n"
+"POT-Creation-Date: 2008-09-24 17:55-0400\n"
"PO-Revision-Date: 2007-01-13 15:31+1030\n"
"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
@@ -24,7 +24,7 @@ msgstr "Trước tiên bạn cần phải đăng nhập."
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
-#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:310
+#: ../IkiWiki/CGI.pm:163 ../IkiWiki/Plugin/editpage.pm:311
msgid "Your login session has expired."
msgstr ""
@@ -122,7 +122,7 @@ msgstr ""
msgid "feed crashed XML::Feed!"
msgstr "nguồn tin đã gây ra XML::Feed sụp đổ."
-#: ../IkiWiki/Plugin/aggregate.pm:584
+#: ../IkiWiki/Plugin/aggregate.pm:590
#, perl-format
msgid "creating new page %s"
msgstr "đang tạo trang mới %s"
@@ -131,7 +131,7 @@ msgstr "đang tạo trang mới %s"
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:193
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:197
msgid "done"
msgstr "xong"
@@ -175,8 +175,8 @@ msgstr ""
msgid "automatic index generation"
msgstr ""
-#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:221
-#: ../IkiWiki/Plugin/inline.pm:317 ../IkiWiki/Plugin/opendiscussion.pm:26
+#: ../IkiWiki/Plugin/brokenlinks.pm:33 ../IkiWiki/Plugin/editpage.pm:222
+#: ../IkiWiki/Plugin/inline.pm:323 ../IkiWiki/Plugin/opendiscussion.pm:26
#: ../IkiWiki/Plugin/orphans.pm:37 ../IkiWiki/Render.pm:79
#: ../IkiWiki/Render.pm:149
msgid "discussion"
@@ -207,19 +207,19 @@ msgstr ""
msgid "no text was copied in this page with id %s"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:110
+#: ../IkiWiki/Plugin/editpage.pm:111
#, perl-format
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:277
+#: ../IkiWiki/Plugin/editpage.pm:278
#, perl-format
msgid "creating %s"
msgstr "đang tạo %s"
-#: ../IkiWiki/Plugin/editpage.pm:295 ../IkiWiki/Plugin/editpage.pm:323
-#: ../IkiWiki/Plugin/editpage.pm:333 ../IkiWiki/Plugin/editpage.pm:368
-#: ../IkiWiki/Plugin/editpage.pm:413
+#: ../IkiWiki/Plugin/editpage.pm:296 ../IkiWiki/Plugin/editpage.pm:324
+#: ../IkiWiki/Plugin/editpage.pm:334 ../IkiWiki/Plugin/editpage.pm:369
+#: ../IkiWiki/Plugin/editpage.pm:414
#, perl-format
msgid "editing %s"
msgstr "Ä‘ang sá»­a %s"
@@ -234,12 +234,12 @@ msgstr "không tìm thấy mẫu %s"
msgid "match not specified"
msgstr "chÆ°a xác định tên tập tin bá»™ bao bá»c"
-#: ../IkiWiki/Plugin/edittemplate.pm:59
+#: ../IkiWiki/Plugin/edittemplate.pm:62
#, perl-format
msgid "edittemplate %s registered for %s"
msgstr ""
-#: ../IkiWiki/Plugin/edittemplate.pm:125
+#: ../IkiWiki/Plugin/edittemplate.pm:133
#, fuzzy
msgid "failed to process"
msgstr "mẫu không xử lý được:"
@@ -309,20 +309,20 @@ msgstr "mẫu thiếu tham số id"
msgid "unknown sort type %s"
msgstr "kiểu sắp xếp không rõ %s"
-#: ../IkiWiki/Plugin/inline.pm:276
+#: ../IkiWiki/Plugin/inline.pm:282
msgid "Add a new post titled:"
msgstr ""
-#: ../IkiWiki/Plugin/inline.pm:292
+#: ../IkiWiki/Plugin/inline.pm:298
#, perl-format
msgid "nonexistant template %s"
msgstr ""
-#: ../IkiWiki/Plugin/inline.pm:325 ../IkiWiki/Render.pm:83
+#: ../IkiWiki/Plugin/inline.pm:331 ../IkiWiki/Render.pm:83
msgid "Discussion"
msgstr "Thảo luận"
-#: ../IkiWiki/Plugin/inline.pm:562
+#: ../IkiWiki/Plugin/inline.pm:568
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"
@@ -532,6 +532,15 @@ msgstr ""
msgid "at noon on %A"
msgstr ""
+#: ../IkiWiki/Plugin/progress.pm:34
+#, perl-format
+msgid "illegal percent value %s"
+msgstr ""
+
+#: ../IkiWiki/Plugin/progress.pm:59
+msgid "need either `percent` or `totalpages` and `donepages` parameters"
+msgstr ""
+
#: ../IkiWiki/Plugin/recentchanges.pm:99
#, fuzzy
msgid "missing page"
@@ -546,78 +555,82 @@ msgstr ""
msgid "(Diff truncated)"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:32 ../IkiWiki/Plugin/rename.pm:35
+#: ../IkiWiki/Plugin/remove.pm:31 ../IkiWiki/Plugin/rename.pm:36
#, perl-format
msgid "%s does not exist"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:39
+#: ../IkiWiki/Plugin/remove.pm:38
#, fuzzy, perl-format
msgid "%s is not in the srcdir, so it cannot be deleted"
msgstr "%s bị %s khoá nên không thể sửa được"
-#: ../IkiWiki/Plugin/remove.pm:42 ../IkiWiki/Plugin/rename.pm:44
+#: ../IkiWiki/Plugin/remove.pm:41 ../IkiWiki/Plugin/rename.pm:45
#, perl-format
msgid "%s is not a file"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:109
+#: ../IkiWiki/Plugin/remove.pm:112
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:145
+#: ../IkiWiki/Plugin/remove.pm:148
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:185
+#: ../IkiWiki/Plugin/remove.pm:188
msgid "removed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:41
+#: ../IkiWiki/Plugin/rename.pm:42
#, perl-format
msgid "%s is not in the srcdir, so it cannot be renamed"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:56
+#: ../IkiWiki/Plugin/rename.pm:62
#, fuzzy
msgid "no change to the file name was specified"
msgstr "chÆ°a xác định tên tập tin bá»™ bao bá»c"
-#: ../IkiWiki/Plugin/rename.pm:62
+#: ../IkiWiki/Plugin/rename.pm:68
#, perl-format
msgid "illegal name"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:67
+#: ../IkiWiki/Plugin/rename.pm:73
#, perl-format
msgid "%s already exists"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:73
+#: ../IkiWiki/Plugin/rename.pm:79
#, perl-format
msgid "%s already exists on disk"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:95
+#: ../IkiWiki/Plugin/rename.pm:101
#, fuzzy, perl-format
msgid "rename %s"
msgstr "đang vẽ %s"
-#: ../IkiWiki/Plugin/rename.pm:206
+#: ../IkiWiki/Plugin/rename.pm:138
+msgid "Also rename SubPages and attachments"
+msgstr ""
+
+#: ../IkiWiki/Plugin/rename.pm:223
msgid "Only one attachment can be renamed at a time."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:209
+#: ../IkiWiki/Plugin/rename.pm:226
msgid "Please select the attachment to rename."
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:277
+#: ../IkiWiki/Plugin/rename.pm:332
#, perl-format
msgid "rename %s to %s"
msgstr ""
-#: ../IkiWiki/Plugin/rename.pm:306
+#: ../IkiWiki/Plugin/rename.pm:484
#, fuzzy, perl-format
msgid "update for rename of %s to %s"
msgstr "cập nhật %2$s của %1$s bởi %3$s"
@@ -785,47 +798,52 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr ""
-#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:298
+#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:302
#, perl-format
msgid "skipping bad filename %s"
msgstr "đang bỠqua tên tập tin sai %s"
-#: ../IkiWiki/Render.pm:356
+#: ../IkiWiki/Render.pm:284
+#, perl-format
+msgid "%s has multiple possible source pages"
+msgstr ""
+
+#: ../IkiWiki/Render.pm:360
#, perl-format
msgid "removing old page %s"
msgstr "đang gỡ bỠtrang cũ %s"
-#: ../IkiWiki/Render.pm:396
+#: ../IkiWiki/Render.pm:400
#, perl-format
msgid "scanning %s"
msgstr "đang quét %s"
-#: ../IkiWiki/Render.pm:401
+#: ../IkiWiki/Render.pm:405
#, perl-format
msgid "rendering %s"
msgstr "đang vẽ %s"
-#: ../IkiWiki/Render.pm:422
+#: ../IkiWiki/Render.pm:426
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "đang vẽ %s mà liên kết tới %s"
-#: ../IkiWiki/Render.pm:443
+#: ../IkiWiki/Render.pm:447
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "đang vẽ %s mà phụ thuộc vào %s"
-#: ../IkiWiki/Render.pm:482
+#: ../IkiWiki/Render.pm:486
#, 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:494
+#: ../IkiWiki/Render.pm:498
#, 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:518
+#: ../IkiWiki/Render.pm:522
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki: không thể vẽ %s"
@@ -886,19 +904,19 @@ 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:89
msgid "usage: --set var=value"
msgstr ""
-#: ../ikiwiki.in:129
+#: ../ikiwiki.in:135
msgid "generating wrappers.."
msgstr "Ä‘ang tạo ra các bá»™ bao bá»c.."
-#: ../ikiwiki.in:182
+#: ../ikiwiki.in:186
msgid "rebuilding wiki.."
msgstr "đang xây dựng lại wiki.."
-#: ../ikiwiki.in:185
+#: ../ikiwiki.in:189
msgid "refreshing wiki.."
msgstr "đang làm tươi wiki.."
diff --git a/t/pagename.t b/t/pagename.t
index 96e6a87f1..c7f1ce180 100755
--- a/t/pagename.t
+++ b/t/pagename.t
@@ -6,7 +6,7 @@ use Test::More tests => 5;
BEGIN { use_ok("IkiWiki"); }
# Used internally.
-$IkiWiki::hooks{htmlize}{mdwn}=1;
+$IkiWiki::hooks{htmlize}{mdwn}{call}=sub {};
is(pagename("foo.mdwn"), "foo");
is(pagename("foo/bar.mdwn"), "foo/bar");
diff --git a/templates/renamesummary.tmpl b/templates/renamesummary.tmpl
index e165e81b3..60f81b35b 100644
--- a/templates/renamesummary.tmpl
+++ b/templates/renamesummary.tmpl
@@ -1,3 +1,9 @@
+<TMPL_IF ERROR>
+<p>
+<b>Failed to rename <TMPL_VAR SRC> to <TMPL_VAR DEST>: </b>
+<TMPL_VAR ERROR>
+</p>
+<TMPL_ELSE>
<p>
<b>Successfully renamed <TMPL_VAR SRC> to <TMPL_VAR DEST>.</b>
</p>
@@ -14,8 +20,7 @@ The following pages still link to <TMPL_VAR SRC>:
<ul>
<TMPL_LOOP NAME=BROKENLINKS><li><TMPL_VAR PAGE></li></TMPL_LOOP>
</ul>
-<TMPL_ELSE>
-No pages have broken links to <TMPL_VAR SRC>.
</TMPL_IF>
</TMPL_IF>
</p>
+</TMPL_IF>