Merge branch 'prv/po' into pub/po

master
intrigeri 2008-11-02 20:15:21 +01:00
commit 7b28deb171
103 changed files with 2284 additions and 441 deletions

View File

@ -21,6 +21,7 @@ our @EXPORT = qw(hook debug error template htmlpage add_depends pagespec_match
bestlink htmllink readfile writefile pagetype srcfile pagename bestlink htmllink readfile writefile pagetype srcfile pagename
displaytime will_render gettext urlto targetpage displaytime will_render gettext urlto targetpage
add_underlay pagetitle titlepage linkpage newpagefile add_underlay pagetitle titlepage linkpage newpagefile
inject
%config %links %pagestate %wikistate %renderedfiles %config %links %pagestate %wikistate %renderedfiles
%pagesources %destsources); %pagesources %destsources);
our $VERSION = 2.00; # plugin interface version, next is ikiwiki version our $VERSION = 2.00; # plugin interface version, next is ikiwiki version
@ -381,6 +382,13 @@ sub getsetup () { #{{{
safe => 0, safe => 0,
rebuild => 0, rebuild => 0,
}, },
test_receive => {
type => "internal",
default => 0,
description => "running in receive test mode",
safe => 0,
rebuild => 0,
},
getctime => { getctime => {
type => "internal", type => "internal",
default => 0, default => 0,
@ -403,7 +411,7 @@ sub getsetup () { #{{{
rebuild => 0, rebuild => 0,
}, },
allow_symlinks_before_srcdir => { allow_symlinks_before_srcdir => {
type => "string", type => "boolean",
default => 0, default => 0,
description => "allow symlinks in the path leading to the srcdir (potentially insecure)", description => "allow symlinks in the path leading to the srcdir (potentially insecure)",
safe => 0, safe => 0,
@ -647,19 +655,8 @@ sub newpagefile ($$) { #{{{
sub targetpage ($$) { #{{{ sub targetpage ($$) { #{{{
my $page=shift; my $page=shift;
my $ext=shift; my $ext=shift;
my $targetpage=''; if (! $config{usedirs} || $page eq 'index') {
run_hooks(targetpage => sub {
$targetpage=shift->(
page => $page,
ext => $ext,
);
});
if (defined $targetpage && (length($targetpage) > 0)) {
return $targetpage;
}
elsif (! $config{usedirs} || $page eq 'index') {
return $page.".".$ext; return $page.".".$ext;
} }
else { else {
@ -807,7 +804,6 @@ sub will_render ($$;$) { #{{{
sub bestlink ($$) { #{{{ sub bestlink ($$) { #{{{
my $page=shift; my $page=shift;
my $link=shift; my $link=shift;
my $res=undef;
my $cwd=$page; my $cwd=$page;
if ($link=~s/^\/+//) { if ($link=~s/^\/+//) {
@ -822,35 +818,25 @@ sub bestlink ($$) { #{{{
$l.=$link; $l.=$link;
if (exists $links{$l}) { if (exists $links{$l}) {
$res=$l; return $l;
} }
elsif (exists $pagecase{lc $l}) { elsif (exists $pagecase{lc $l}) {
$res=$pagecase{lc $l}; return $pagecase{lc $l};
} }
} while ($cwd=~s{/?[^/]+$}{} && ! defined $res); } while $cwd=~s{/?[^/]+$}{};
if (! defined $res && length $config{userdir}) { if (length $config{userdir}) {
my $l = "$config{userdir}/".lc($link); my $l = "$config{userdir}/".lc($link);
if (exists $links{$l}) { if (exists $links{$l}) {
$res=$l; return $l;
} }
elsif (exists $pagecase{lc $l}) { elsif (exists $pagecase{lc $l}) {
$res=$pagecase{lc $l}; return $pagecase{lc $l};
} }
} }
if (defined $res) { #print STDERR "warning: page $page, broken link: $link\n";
run_hooks(tweakbestlink => sub { return "";
$res=shift->(
page => $page,
link => $res);
});
return $res;
}
else {
#print STDERR "warning: page $page, broken link: $link\n";
return "";
}
} #}}} } #}}}
sub isinlinableimage ($) { #{{{ sub isinlinableimage ($) { #{{{
@ -920,23 +906,13 @@ sub abs2rel ($$) { #{{{
} #}}} } #}}}
sub displaytime ($;$) { #{{{ sub displaytime ($;$) { #{{{
my $time=shift; # Plugins can override this function to mark up the time to
my $format=shift; # display.
if (exists $hooks{displaytime}) { return '<span class="date">'.formattime(@_).'</span>';
my $ret;
run_hooks(displaytime => sub {
$ret=shift->($time, $format)
});
return $ret;
}
else {
return formattime($time, $format);
}
} #}}} } #}}}
sub formattime ($;$) { #{{{ sub formattime ($;$) { #{{{
# Plugins can override this function to mark up the time for # Plugins can override this function to format the time.
# display.
my $time=shift; my $time=shift;
my $format=shift; my $format=shift;
if (! defined $format) { if (! defined $format) {
@ -955,10 +931,6 @@ sub beautify_urlpath ($) { #{{{
$url =~ s!/index.$config{htmlext}$!/!; $url =~ s!/index.$config{htmlext}$!/!;
} }
run_hooks(tweakurlpath => sub {
$url=shift->(url => $url);
});
# Ensure url is not an empty link, and # Ensure url is not an empty link, and
# if it's relative, make that explicit to avoid colon confusion. # if it's relative, make that explicit to avoid colon confusion.
if ($url !~ /^\//) { if ($url !~ /^\//) {
@ -1610,6 +1582,10 @@ sub rcs_getctime ($) { #{{{
$hooks{rcs}{rcs_getctime}{call}->(@_); $hooks{rcs}{rcs_getctime}{call}->(@_);
} #}}} } #}}}
sub rcs_receive () { #{{{
$hooks{rcs}{rcs_receive}{call}->();
} #}}}
sub globlist_to_pagespec ($) { #{{{ sub globlist_to_pagespec ($) { #{{{
my @globlist=split(' ', shift); my @globlist=split(' ', shift);
@ -1702,6 +1678,31 @@ sub yesno ($) { #{{{
return (defined $val && lc($val) eq gettext("yes")); return (defined $val && lc($val) eq gettext("yes"));
} #}}} } #}}}
sub inject { #{{{
# Injects a new function into the symbol table to replace an
# exported function.
my %params=@_;
# This is deep ugly perl foo, beware.
no strict;
no warnings;
if (! defined $params{parent}) {
$params{parent}='::';
$params{old}=\&{$params{name}};
$params{name}=~s/.*:://;
}
my $parent=$params{parent};
foreach my $ns (grep /^\w+::/, keys %{$parent}) {
$ns = $params{parent} . $ns;
inject(%params, parent => $ns) unless $ns eq '::main::';
*{$ns . $params{name}} = $params{call}
if exists ${$ns}{$params{name}} &&
\&{${$ns}{$params{name}}} == $params{old};
}
use strict;
use warnings;
} #}}}
sub pagespec_merge ($$) { #{{{ sub pagespec_merge ($$) { #{{{
my $a=shift; my $a=shift;
my $b=shift; my $b=shift;
@ -1796,7 +1797,7 @@ sub pagespec_valid ($) { #{{{
my $sub=pagespec_translate($spec); my $sub=pagespec_translate($spec);
return ! $@; return ! $@;
} #}}} } #}}}
sub glob2re ($) { #{{{ sub glob2re ($) { #{{{
my $re=quotemeta(shift); my $re=quotemeta(shift);
$re=~s/\\\*/.*/g; $re=~s/\\\*/.*/g;

View File

@ -122,7 +122,7 @@ sub cgi_editpage ($$) { #{{{
my $absolute=($page =~ s#^/+##); my $absolute=($page =~ s#^/+##);
if (! defined $page || ! length $page || if (! defined $page || ! length $page ||
file_pruned($page, $config{srcdir})) { file_pruned($page, $config{srcdir})) {
error("bad page name"); error(gettext("bad page name"));
} }
my $baseurl = urlto($page, undef, 1); my $baseurl = urlto($page, undef, 1);

View File

@ -202,8 +202,16 @@ sub inject ($@) { #{{{
my $sub = sub { my $sub = sub {
IkiWiki::Plugin::external::rpc_call($plugin, $params{call}, @_) IkiWiki::Plugin::external::rpc_call($plugin, $params{call}, @_)
}; };
$sub=memoize($sub) if $params{memoize};
# This will add it to the symbol table even if not present.
no warnings;
eval qq{*$params{name}=\$sub}; eval qq{*$params{name}=\$sub};
memoize($params{name}) if $params{memoize}; use warnings;
# This will ensure that everywhere it was exported to sees
# the injected version.
IkiWiki::inject(name => $params{name}, call => $sub);
return 1; return 1;
} #}}} } #}}}

View File

@ -0,0 +1,29 @@
#!/usr/bin/perl
package IkiWiki::Plugin::format;
use warnings;
use strict;
use IkiWiki 2.00;
sub import { #{{{
hook(type => "preprocess", id => "format", call => \&preprocess);
} #}}}
sub preprocess (@) { #{{{
my $format=$_[0];
shift; shift;
my $text=$_[0];
shift; shift;
my %params=@_;
if (! defined $format || ! defined $text) {
error(gettext("must specify format and text"));
}
elsif (! exists $IkiWiki::hooks{htmlize}{$format}) {
error(sprintf(gettext("unsupported page format %s"), $format));
}
return IkiWiki::htmlize($params{page}, $params{destpage}, $format, $text);
} #}}}
1

View File

@ -9,6 +9,7 @@ use open qw{:utf8 :std};
my $sha1_pattern = qr/[0-9a-fA-F]{40}/; # pattern to validate Git sha1sums my $sha1_pattern = qr/[0-9a-fA-F]{40}/; # pattern to validate Git sha1sums
my $dummy_commit_msg = 'dummy commit'; # message to skip in recent changes my $dummy_commit_msg = 'dummy commit'; # message to skip in recent changes
my $no_chdir=0;
sub import { #{{{ sub import { #{{{
hook(type => "checkconfig", id => "git", call => \&checkconfig); hook(type => "checkconfig", id => "git", call => \&checkconfig);
@ -23,6 +24,7 @@ sub import { #{{{
hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges); hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges);
hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff); hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff);
hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime); hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime);
hook(type => "rcs", id => "rcs_receive", call => \&rcs_receive);
} #}}} } #}}}
sub checkconfig () { #{{{ sub checkconfig () { #{{{
@ -32,12 +34,21 @@ sub checkconfig () { #{{{
if (! defined $config{gitmaster_branch}) { if (! defined $config{gitmaster_branch}) {
$config{gitmaster_branch}="master"; $config{gitmaster_branch}="master";
} }
if (defined $config{git_wrapper} && length $config{git_wrapper}) { if (defined $config{git_wrapper} &&
length $config{git_wrapper}) {
push @{$config{wrappers}}, { push @{$config{wrappers}}, {
wrapper => $config{git_wrapper}, wrapper => $config{git_wrapper},
wrappermode => (defined $config{git_wrappermode} ? $config{git_wrappermode} : "06755"), wrappermode => (defined $config{git_wrappermode} ? $config{git_wrappermode} : "06755"),
}; };
} }
if (defined $config{git_test_receive_wrapper} &&
length $config{git_test_receive_wrapper}) {
push @{$config{wrappers}}, {
test_receive => 1,
wrapper => $config{git_test_receive_wrapper},
wrappermode => (defined $config{git_wrappermode} ? $config{git_wrappermode} : "06755"),
};
}
} #}}} } #}}}
sub getsetup () { #{{{ sub getsetup () { #{{{
@ -60,6 +71,20 @@ sub getsetup () { #{{{
safe => 0, safe => 0,
rebuild => 0, rebuild => 0,
}, },
git_test_receive_wrapper => {
type => "string",
example => "/git/wiki.git/hooks/pre-receive",
description => "git pre-receive hook to generate",
safe => 0, # file
rebuild => 0,
},
untrusted_committers => {
type => "string",
example => [],
description => "unix users whose commits should be checked by the pre-receive hook",
safe => 0,
rebuild => 0,
},
historyurl => { historyurl => {
type => "string", type => "string",
example => "http://git.example.com/gitweb.cgi?p=wiki.git;a=history;f=[[file]]", example => "http://git.example.com/gitweb.cgi?p=wiki.git;a=history;f=[[file]]",
@ -70,7 +95,7 @@ sub getsetup () { #{{{
diffurl => { diffurl => {
type => "string", type => "string",
example => "http://git.example.com/gitweb.cgi?p=wiki.git;a=blobdiff;h=[[sha1_to]];hp=[[sha1_from]];hb=[[sha1_parent]];f=[[file]]", example => "http://git.example.com/gitweb.cgi?p=wiki.git;a=blobdiff;h=[[sha1_to]];hp=[[sha1_from]];hb=[[sha1_parent]];f=[[file]]",
description => "gitweb url to show a diff ([[sha1_to]], [[sha1_from]], [[sha1_parent]], and [[file]] substituted)", description => "gitweb url to show a diff ([[sha1_to]], [[sha1_from]], [[sha1_parent]], [[sha1_commit]] and [[file]] substituted)",
safe => 1, safe => 1,
rebuild => 1, rebuild => 1,
}, },
@ -103,8 +128,10 @@ sub safe_git (&@) { #{{{
if (!$pid) { if (!$pid) {
# In child. # In child.
# Git commands want to be in wc. # Git commands want to be in wc.
chdir $config{srcdir} if (! $no_chdir) {
or error("Cannot chdir to $config{srcdir}: $!"); chdir $config{srcdir}
or error("Cannot chdir to $config{srcdir}: $!");
}
exec @cmdline or error("Cannot exec '@cmdline': $!"); exec @cmdline or error("Cannot exec '@cmdline': $!");
} }
# In parent. # In parent.
@ -320,6 +347,9 @@ sub parse_diff_tree ($@) { #{{{
'file' => decode("utf8", $file), 'file' => decode("utf8", $file),
'sha1_from' => $sha1_from[0], 'sha1_from' => $sha1_from[0],
'sha1_to' => $sha1_to, 'sha1_to' => $sha1_to,
'mode_from' => $mode_from[0],
'mode_to' => $mode_to,
'status' => $status,
}; };
} }
next; next;
@ -331,14 +361,14 @@ sub parse_diff_tree ($@) { #{{{
} #}}} } #}}}
sub git_commit_info ($;$) { #{{{ sub git_commit_info ($;$) { #{{{
# Return an array of commit info hashes of num commits (default: 1) # Return an array of commit info hashes of num commits
# starting from the given sha1sum. # starting from the given sha1sum.
my ($sha1, $num) = @_; my ($sha1, $num) = @_;
$num ||= 1; my @opts;
push @opts, "--max-count=$num" if defined $num;
my @raw_lines = run_or_die('git', 'log', "--max-count=$num", my @raw_lines = run_or_die('git', 'log', @opts,
'--pretty=raw', '--raw', '--abbrev=40', '--always', '-c', '--pretty=raw', '--raw', '--abbrev=40', '--always', '-c',
'-r', $sha1, '--', '.'); '-r', $sha1, '--', '.');
my ($prefix) = run_or_die('git', 'rev-parse', '--show-prefix'); my ($prefix) = run_or_die('git', 'rev-parse', '--show-prefix');
@ -355,7 +385,6 @@ sub git_commit_info ($;$) { #{{{
sub git_sha1 (;$) { #{{{ sub git_sha1 (;$) { #{{{
# Return head sha1sum (of given file). # Return head sha1sum (of given file).
my $file = shift || q{--}; my $file = shift || q{--};
# Ignore error since a non-existing file might be given. # Ignore error since a non-existing file might be given.
@ -378,7 +407,6 @@ sub rcs_update () { #{{{
sub rcs_prepedit ($) { #{{{ sub rcs_prepedit ($) { #{{{
# Return the commit sha1sum of the file when editing begins. # Return the commit sha1sum of the file when editing begins.
# This will be later used in rcs_commit if a merge is required. # This will be later used in rcs_commit if a merge is required.
my ($file) = @_; my ($file) = @_;
return git_sha1($file); return git_sha1($file);
@ -475,7 +503,7 @@ sub rcs_recentchanges ($) { #{{{
error($@) if $@; error($@) if $@;
my @rets; my @rets;
foreach my $ci (git_commit_info('HEAD', $num)) { foreach my $ci (git_commit_info('HEAD', $num || 1)) {
# Skip redundant commits. # Skip redundant commits.
next if ($ci->{'comment'} && @{$ci->{'comment'}}[0] eq $dummy_commit_msg); next if ($ci->{'comment'} && @{$ci->{'comment'}}[0] eq $dummy_commit_msg);
@ -493,6 +521,7 @@ sub rcs_recentchanges ($) { #{{{
$diffurl =~ s/\[\[sha1_parent\]\]/$ci->{'parent'}/go; $diffurl =~ s/\[\[sha1_parent\]\]/$ci->{'parent'}/go;
$diffurl =~ s/\[\[sha1_from\]\]/$detail->{'sha1_from'}/go; $diffurl =~ s/\[\[sha1_from\]\]/$detail->{'sha1_from'}/go;
$diffurl =~ s/\[\[sha1_to\]\]/$detail->{'sha1_to'}/go; $diffurl =~ s/\[\[sha1_to\]\]/$detail->{'sha1_to'}/go;
$diffurl =~ s/\[\[sha1_commit\]\]/$sha1/go;
push @pages, { push @pages, {
page => pagename($file), page => pagename($file),
@ -558,11 +587,104 @@ sub rcs_getctime ($) { #{{{
$file =~ s/^\Q$config{srcdir}\E\/?//; $file =~ s/^\Q$config{srcdir}\E\/?//;
my $sha1 = git_sha1($file); my $sha1 = git_sha1($file);
my $ci = git_commit_info($sha1); my $ci = git_commit_info($sha1, 1);
my $ctime = $ci->{'author_epoch'}; my $ctime = $ci->{'author_epoch'};
debug("ctime for '$file': ". localtime($ctime)); debug("ctime for '$file': ". localtime($ctime));
return $ctime; return $ctime;
} #}}} } #}}}
sub rcs_receive () { #{{{
# The wiki may not be the only thing in the git repo.
# Determine if it is in a subdirectory by examining the srcdir,
# and its parents, looking for the .git directory.
my $subdir="";
my $dir=$config{srcdir};
while (! -d "$dir/.git") {
$subdir=IkiWiki::basename($dir)."/".$subdir;
$dir=IkiWiki::dirname($dir);
if (! length $dir) {
error("cannot determine root of git repo");
}
}
my @rets;
while (<>) {
chomp;
my ($oldrev, $newrev, $refname) = split(' ', $_, 3);
# only allow changes to gitmaster_branch
if ($refname !~ /^refs\/heads\/\Q$config{gitmaster_branch}\E$/) {
error sprintf(gettext("you are not allowed to change %s"), $refname);
}
# Avoid chdir when running git here, because the changes
# are in the master git repo, not the srcdir repo.
# The pre-recieve hook already puts us in the right place.
$no_chdir=1;
my @changes=git_commit_info($oldrev."..".$newrev);
$no_chdir=0;
foreach my $ci (@changes) {
foreach my $detail (@{ $ci->{'details'} }) {
my $file = $detail->{'file'};
# check that all changed files are in the
# subdir
if (length $subdir &&
! ($file =~ s/^\Q$subdir\E//)) {
error sprintf(gettext("you are not allowed to change %s"), $file);
}
my ($action, $mode, $path);
if ($detail->{'status'} =~ /^[M]+\d*$/) {
$action="change";
$mode=$detail->{'mode_to'};
}
elsif ($detail->{'status'} =~ /^[AM]+\d*$/) {
$action="add";
$mode=$detail->{'mode_to'};
}
elsif ($detail->{'status'} =~ /^[DAM]+\d*/) {
$action="remove";
$mode=$detail->{'mode_from'};
}
else {
error "unknown status ".$detail->{'status'};
}
# test that the file mode is ok
if ($mode !~ /^100[64][64][64]$/) {
error sprintf(gettext("you cannot act on a file with mode %s"), $mode);
}
if ($action eq "change") {
if ($detail->{'mode_from'} ne $detail->{'mode_to'}) {
error gettext("you are not allowed to change file modes");
}
}
# extract attachment to temp file
if (($action eq 'add' || $action eq 'change') &&
! pagetype($file)) {
eval q{use File::Temp};
die $@ if $@;
my $fh;
($fh, $path)=File::Temp::tempfile("XXXXXXXXXX", UNLINK => 1);
if (system("git show ".$detail->{sha1_to}." > '$path'") != 0) {
error("failed writing temp file");
}
}
push @rets, {
file => $file,
action => $action,
path => $path,
};
}
}
}
return reverse @rets;
} #}}}
1 1

View File

@ -376,7 +376,7 @@ sub preprocess_inline (@) { #{{{
genfeed("rss", genfeed("rss",
$config{url}."/".$rssp, $desc, $params{guid}, $params{destpage}, @feedlist)); $config{url}."/".$rssp, $desc, $params{guid}, $params{destpage}, @feedlist));
$toping{$params{destpage}}=1 unless $config{rebuild}; $toping{$params{destpage}}=1 unless $config{rebuild};
$feedlinks{$params{destpage}}=qq{<link rel="alternate" type="application/rss+xml" title="$desc (RSS)" href="$rssurl" />}; $feedlinks{$params{destpage}}.=qq{<link rel="alternate" type="application/rss+xml" title="$desc (RSS)" href="$rssurl" />};
} }
} }
if ($atom) { if ($atom) {
@ -386,7 +386,7 @@ sub preprocess_inline (@) { #{{{
writefile($atomp, $config{destdir}, writefile($atomp, $config{destdir},
genfeed("atom", $config{url}."/".$atomp, $desc, $params{guid}, $params{destpage}, @feedlist)); genfeed("atom", $config{url}."/".$atomp, $desc, $params{guid}, $params{destpage}, @feedlist));
$toping{$params{destpage}}=1 unless $config{rebuild}; $toping{$params{destpage}}=1 unless $config{rebuild};
$feedlinks{$params{destpage}}=qq{<link rel="alternate" type="application/atom+xml" title="$desc (Atom)" href="$atomurl" />}; $feedlinks{$params{destpage}}.=qq{<link rel="alternate" type="application/atom+xml" title="$desc (Atom)" href="$atomurl" />};
} }
} }
} }

View File

@ -30,7 +30,7 @@ sub getsetup () { #{{{
} #}}} } #}}}
my @fulllist; my @fulllist;
my @earlylist; my @shortlist;
my $pluginstring; my $pluginstring;
sub checkconfig () { #{{{ sub checkconfig () { #{{{
@ -40,15 +40,14 @@ sub checkconfig () { #{{{
else { else {
$config{directive_description_dir} =~ s/\/+$//; $config{directive_description_dir} =~ s/\/+$//;
} }
@earlylist = sort keys %{$IkiWiki::hooks{preprocess}};
} #}}} } #}}}
sub needsbuild (@) { #{{{ sub needsbuild (@) { #{{{
my $needsbuild=shift; my $needsbuild=shift;
@fulllist = sort keys %{$IkiWiki::hooks{preprocess}}; @fulllist = sort keys %{$IkiWiki::hooks{preprocess}};
$pluginstring = join(' ', @earlylist) . " : " . join(' ', @fulllist); @shortlist = grep { ! $IkiWiki::hooks{preprocess}{$_}{shortcut} } @fulllist;
$pluginstring = join(' ', @shortlist) . " : " . join(' ', @fulllist);
foreach my $page (keys %pagestate) { foreach my $page (keys %pagestate) {
if (exists $pagestate{$page}{listdirectives}{shown}) { if (exists $pagestate{$page}{listdirectives}{shown}) {
@ -77,7 +76,7 @@ sub preprocess (@) { #{{{
@pluginlist = @fulllist; @pluginlist = @fulllist;
} }
else { else {
@pluginlist = @earlylist; @pluginlist = @shortlist;
} }
my $result = '<ul class="listdirectives">'; my $result = '<ul class="listdirectives">';

View File

@ -18,20 +18,29 @@ use Memoize;
my %translations; my %translations;
our %filtered; our %filtered;
memoize("istranslatable");
## FIXME: makes some test cases cry once every two tries; this may be
## related to the artificial way the testsuite is run, or not.
# memoize("istranslatable");
memoize("_istranslation"); memoize("_istranslation");
memoize("percenttranslated"); memoize("percenttranslated");
# backup references to subs that will be overriden
my %origsubs;
$origsubs{'bestlink'}=\&IkiWiki::bestlink;
$origsubs{'beautify_urlpath'}=\&IkiWiki::beautify_urlpath;
$origsubs{'targetpage'}=\&IkiWiki::targetpage;
sub import { sub import {
hook(type => "getsetup", id => "po", call => \&getsetup); hook(type => "getsetup", id => "po", call => \&getsetup);
hook(type => "checkconfig", id => "po", call => \&checkconfig); hook(type => "checkconfig", id => "po", call => \&checkconfig);
hook(type => "needsbuild", id => "po", call => \&needsbuild); hook(type => "needsbuild", id => "po", call => \&needsbuild);
hook(type => "targetpage", id => "po", call => \&targetpage);
hook(type => "tweakurlpath", id => "po", call => \&tweakurlpath);
hook(type => "tweakbestlink", id => "po", call => \&tweakbestlink);
hook(type => "filter", id => "po", call => \&filter); hook(type => "filter", id => "po", call => \&filter);
hook(type => "htmlize", id => "po", call => \&htmlize); hook(type => "htmlize", id => "po", call => \&htmlize);
hook(type => "pagetemplate", id => "po", call => \&pagetemplate); hook(type => "pagetemplate", id => "po", call => \&pagetemplate);
inject(name => "IkiWiki::bestlink", call => \&mybestlink);
inject(name => "IkiWiki::beautify_urlpath", call => \&mybeautify_urlpath);
inject(name => "IkiWiki::targetpage", call => \&mytargetpage);
} }
sub getsetup () { #{{{ sub getsetup () { #{{{
@ -210,14 +219,13 @@ sub needsbuild () { #{{{
} }
} #}}} } #}}}
sub targetpage (@) { #{{{ sub mytargetpage ($$) { #{{{
my %params = @_; my $page=shift;
my $page=$params{page}; my $ext=shift;
my $ext=$params{ext};
if (istranslation($page)) { if (istranslation($page)) {
my ($masterpage, $lang) = ($page =~ /(.*)[.]([a-z]{2})$/); my ($masterpage, $lang) = ($page =~ /(.*)[.]([a-z]{2})$/);
if (! $config{usedirs} || $page eq 'index') { if (! $config{usedirs} || $masterpage eq 'index') {
return $masterpage . "." . $lang . "." . $ext; return $masterpage . "." . $lang . "." . $ext;
} }
else { else {
@ -232,29 +240,45 @@ sub targetpage (@) { #{{{
return $page . "/index." . $config{po_master_language}{code} . "." . $ext; return $page . "/index." . $config{po_master_language}{code} . "." . $ext;
} }
} }
return; return $origsubs{'targetpage'}->($page, $ext);
} #}}} } #}}}
sub tweakurlpath ($) { #{{{ sub mybeautify_urlpath ($) { #{{{
my %params = @_; my $url=shift;
my $url=$params{url}; my $res=$origsubs{'beautify_urlpath'}->($url);
if ($config{po_link_to} eq "negotiated") { if ($config{po_link_to} eq "negotiated") {
$url =~ s!/index.$config{po_master_language}{code}.$config{htmlext}$!/!; $res =~ s!/index.$config{po_master_language}{code}.$config{htmlext}$!/!;
} }
return $url; return $res;
} #}}} } #}}}
sub tweakbestlink ($$) { #{{{ sub urlto_with_orig_beautiful_urlpath($$) { #{{{
my %params = @_; my $to=shift;
my $page=$params{page}; my $from=shift;
my $link=$params{link};
if ($config{po_link_to} eq "current" inject(name => "IkiWiki::beautify_urlpath", call => $origsubs{'beautify_urlpath'});
&& istranslatable($link) my $res=urlto($to, $from);
&& istranslation($page)) { inject(name => "IkiWiki::beautify_urlpath", call => \&mybeautify_urlpath);
my ($masterpage, $curlang) = ($page =~ /(.*)[.]([a-z]{2})$/);
return $link . "." . $curlang; return $res;
} #}}}
sub mybestlink ($$) { #{{{
my $page=shift;
my $link=shift;
my $res=$origsubs{'bestlink'}->($page, $link);
if (length $res) {
if ($config{po_link_to} eq "current"
&& istranslatable($res)
&& istranslation($page)) {
my ($masterpage, $curlang) = ($page =~ /(.*)[.]([a-z]{2})$/);
return $res . "." . $curlang;
}
else {
return $res;
}
} }
return $link; return "";
} #}}} } #}}}
# We use filter to convert PO to the master page's type, # We use filter to convert PO to the master page's type,
@ -346,7 +370,7 @@ sub otherlanguages ($) { #{{{
elsif (istranslation($page)) { elsif (istranslation($page)) {
my ($masterpage, $curlang) = ($page =~ /(.*)[.]([a-z]{2})$/); my ($masterpage, $curlang) = ($page =~ /(.*)[.]([a-z]{2})$/);
push @ret, { push @ret, {
url => urlto($masterpage, $page), url => urlto_with_orig_beautiful_urlpath($masterpage, $page),
code => $config{po_master_language}{code}, code => $config{po_master_language}{code},
language => $config{po_master_language}{name}, language => $config{po_master_language}{name},
master => 1, master => 1,

View File

@ -12,7 +12,7 @@ sub import { #{{{
add_underlay("javascript"); add_underlay("javascript");
hook(type => "getsetup", id => "relativedate", call => \&getsetup); hook(type => "getsetup", id => "relativedate", call => \&getsetup);
hook(type => "format", id => "relativedate", call => \&format); hook(type => "format", id => "relativedate", call => \&format);
hook(type => "displaytime", id => "relativedate", call => \&display); inject(name => "IkiWiki::displaytime", call => \&mydisplaytime);
} # }}} } # }}}
sub getsetup () { #{{{ sub getsetup () { #{{{
@ -43,7 +43,7 @@ sub include_javascript ($;$) { #{{{
'" type="text/javascript" charset="utf-8"></script>'; '" type="text/javascript" charset="utf-8"></script>';
} #}}} } #}}}
sub display ($;$) { #{{{ sub mydisplaytime ($;$) { #{{{
my $time=shift; my $time=shift;
my $format=shift; my $format=shift;
@ -53,7 +53,7 @@ sub display ($;$) { #{{{
my $gmtime=decode_utf8(POSIX::strftime("%a, %d %b %Y %H:%M:%S %z", my $gmtime=decode_utf8(POSIX::strftime("%a, %d %b %Y %H:%M:%S %z",
localtime($time))); localtime($time)));
return '<span class="date" title="'.$gmtime.'">'. return '<span class="relativedate" title="'.$gmtime.'">'.
IkiWiki::formattime($time, $format).'</span>'; IkiWiki::formattime($time, $format).'</span>';
} #}}} } #}}}

View File

@ -41,7 +41,7 @@ sub check_canremove ($$$) { #{{{
error(sprintf(gettext("%s is not a file"), $file)); error(sprintf(gettext("%s is not a file"), $file));
} }
# Must be editiable. # Must be editable.
IkiWiki::check_canedit($page, $q, $session); IkiWiki::check_canedit($page, $q, $session);
# If a user can't upload an attachment, don't let them delete it. # If a user can't upload an attachment, don't let them delete it.

View File

@ -7,7 +7,7 @@ use IkiWiki 2.00;
sub import { #{{{ sub import { #{{{
hook(type => "getsetup", id => "shortcut", call => \&getsetup); hook(type => "getsetup", id => "shortcut", call => \&getsetup);
hook(type => "refresh", id => "shortcut", call => \&refresh); hook(type => "checkconfig", id => "shortcut", call => \&checkconfig);
hook(type => "preprocess", id => "shortcut", call => \&preprocess_shortcut); hook(type => "preprocess", id => "shortcut", call => \&preprocess_shortcut);
} #}}} } #}}}
@ -19,14 +19,16 @@ sub getsetup () { #{{{
}, },
} #}}} } #}}}
sub refresh () { #{{{ sub checkconfig () { #{{{
# Preprocess the shortcuts page to get all the available shortcuts if (defined $config{srcdir}) {
# defined before other pages are rendered. # Preprocess the shortcuts page to get all the available shortcuts
my $srcfile=srcfile("shortcuts.mdwn", 1); # defined before other pages are rendered.
if (! defined $srcfile) { my $srcfile=srcfile("shortcuts.mdwn", 1);
error(gettext("shortcut plugin will not work without a shortcuts.mdwn")); if (! defined $srcfile) {
error(gettext("shortcut plugin will not work without a shortcuts.mdwn"));
}
IkiWiki::preprocess("shortcuts", "shortcuts", readfile($srcfile));
} }
IkiWiki::preprocess("shortcuts", "shortcuts", readfile($srcfile));
} # }}} } # }}}
sub preprocess_shortcut (@) { #{{{ sub preprocess_shortcut (@) { #{{{
@ -37,6 +39,7 @@ sub preprocess_shortcut (@) { #{{{
} }
hook(type => "preprocess", no_override => 1, id => $params{name}, hook(type => "preprocess", no_override => 1, id => $params{name},
shortcut => 1,
call => sub { shortcut_expand($params{url}, $params{desc}, @_) }); call => sub { shortcut_expand($params{url}, $params{desc}, @_) });
#translators: This is used to display what shortcuts are defined. #translators: This is used to display what shortcuts are defined.

View File

@ -34,8 +34,6 @@ sub import { #{{{
hook(type => "formbuilder_setup", id => "skeleton", call => \&formbuilder_setup); hook(type => "formbuilder_setup", id => "skeleton", call => \&formbuilder_setup);
hook(type => "formbuilder", id => "skeleton", call => \&formbuilder); hook(type => "formbuilder", id => "skeleton", call => \&formbuilder);
hook(type => "savestate", id => "skeleton", call => \&savestate); hook(type => "savestate", id => "skeleton", call => \&savestate);
hook(type => "targetpage", id => "skeleton", call => \&targetpage);
hook(type => "urlpath", id => "skeleton", call => \&urlpath);
} # }}} } # }}}
sub getopt () { #{{{ sub getopt () { #{{{
@ -206,12 +204,4 @@ sub savestate () { #{{{
debug("skeleton plugin running in savestate"); debug("skeleton plugin running in savestate");
} #}}} } #}}}
sub targetpage () { #{{{
debug("skeleton plugin running in targetpage");
} #}}}
sub urlpath () { #{{{
debug("skeleton plugin running in urlpath");
} #}}}
1 1

View File

@ -43,7 +43,7 @@ sub tagpage ($) { #{{{
if ($tag !~ m{^\.?/} && if ($tag !~ m{^\.?/} &&
defined $config{tagbase}) { defined $config{tagbase}) {
$tag=$config{tagbase}."/".$tag; $tag="/".$config{tagbase}."/".$tag;
} }
return $tag; return $tag;

135
IkiWiki/Receive.pm 100644
View File

@ -0,0 +1,135 @@
#!/usr/bin/perl
package IkiWiki::Receive;
use warnings;
use strict;
use IkiWiki;
sub getuser () { #{{{
my $user=(getpwuid(exists $ENV{CALLER_UID} ? $ENV{CALLER_UID} : $<))[0];
if (! defined $user) {
error("cannot determine username for $<");
}
return $user;
} #}}}
sub trusted () { #{{{
my $user=getuser();
return ! ref $config{untrusted_committers} ||
! grep { $_ eq $user } @{$config{untrusted_committers}};
} #}}}
sub gen_wrapper () { #{{{
# Test for commits from untrusted committers in the wrapper, to
# avoid loading ikiwiki at all for trusted commits.
my $ret=<<"EOF";
{
int u=getuid();
EOF
$ret.="\t\tif ( ".
join("&&", map {
my $uid=getpwnam($_);
if (! defined $uid) {
error(sprintf(gettext("cannot determine id of untrusted committer %s"), $_));
}
"u != $uid";
} @{$config{untrusted_committers}}).
") exit(0);\n";
$ret.=<<"EOF";
asprintf(&s, "CALLER_UID=%i", u);
newenviron[i++]=s;
}
EOF
return $ret;
} #}}}
sub test () { #{{{
exit 0 if trusted();
IkiWiki::lockwiki();
IkiWiki::loadindex();
# Dummy up a cgi environment to use when calling check_canedit
# and friends.
eval q{use CGI};
error($@) if $@;
my $cgi=CGI->new;
$ENV{REMOTE_ADDR}='unknown' unless exists $ENV{REMOTE_ADDR};
# And dummy up a session object.
require IkiWiki::CGI;
my $session=IkiWiki::cgi_getsession($cgi);
$session->param("name", getuser());
# Make sure whatever user was authed is in the
# userinfo db.
require IkiWiki::UserInfo;
if (! IkiWiki::userinfo_get($session->param("name"), "regdate")) {
IkiWiki::userinfo_setall($session->param("name"), {
email => "",
password => "",
regdate => time,
}) || error("failed adding user");
}
my %newfiles;
foreach my $change (IkiWiki::rcs_receive()) {
# This untaint is safe because we check file_pruned and
# wiki_file_regexp.
my ($file)=$change->{file}=~/$config{wiki_file_regexp}/;
$file=IkiWiki::possibly_foolish_untaint($file);
if (! defined $file || ! length $file ||
IkiWiki::file_pruned($file, $config{srcdir})) {
error(gettext("bad file name %s"), $file);
}
my $type=pagetype($file);
my $page=pagename($file) if defined $type;
if ($change->{action} eq 'add') {
$newfiles{$file}=1;
}
if ($change->{action} eq 'change' ||
$change->{action} eq 'add') {
if (defined $page) {
if (IkiWiki->can("check_canedit")) {
IkiWiki::check_canedit($page, $cgi, $session);
next;
}
}
else {
if (IkiWiki::Plugin::attachment->can("check_canattach")) {
IkiWiki::Plugin::attachment::check_canattach($session, $file, $change->{path});
next;
}
}
}
elsif ($change->{action} eq 'remove') {
# check_canremove tests to see if the file is present
# on disk. This will fail is a single commit adds a
# file and then removes it again. Avoid the problem
# by not testing the removal in such pairs of changes.
# (The add is still tested, just to make sure that
# no data is added to the repo that a web edit
# could add.)
next if $newfiles{$file};
if (IkiWiki::Plugin::remove->can("check_canremove")) {
IkiWiki::Plugin::remove::check_canremove(defined $page ? $page : $file, $cgi, $session);
next;
}
}
else {
error "unknown action ".$change->{action};
}
error sprintf(gettext("you are not allowed to change %s"), $file);
}
exit 0;
} #}}}
1

View File

@ -250,7 +250,7 @@ sub refresh () { #{{{
my $test=$config{srcdir}; my $test=$config{srcdir};
while (length $test) { while (length $test) {
if (-l $test && ! $config{allow_symlinks_before_srcdir}) { if (-l $test && ! $config{allow_symlinks_before_srcdir}) {
error(sprintf(gettext("symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to allow this")), $test); error(sprintf(gettext("symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to allow this"), $test));
} }
unless ($test=~s/\/+$//) { unless ($test=~s/\/+$//) {
$test=dirname($test); $test=dirname($test);
@ -528,6 +528,7 @@ sub commandline_render () { #{{{
$content=linkify($page, $page, $content); $content=linkify($page, $page, $content);
$content=htmlize($page, $page, $type, $content); $content=htmlize($page, $page, $type, $content);
$pagemtime{$page}=(stat($srcfile))[9]; $pagemtime{$page}=(stat($srcfile))[9];
$pagectime{$page}=$pagemtime{$page} if ! exists $pagectime{$page};
print genpage($page, $content); print genpage($page, $content);
exit 0; exit 0;

View File

@ -31,12 +31,43 @@ sub gen_wrapper () { #{{{
HTTP_COOKIE REMOTE_USER HTTPS} if $config{cgi}; HTTP_COOKIE REMOTE_USER HTTPS} if $config{cgi};
my $envsave=""; my $envsave="";
foreach my $var (@envsave) { foreach my $var (@envsave) {
$envsave.=<<"EOF" $envsave.=<<"EOF";
if ((s=getenv("$var"))) if ((s=getenv("$var")))
addenv("$var", s); addenv("$var", s);
EOF EOF
} }
my $test_receive="";
if ($config{test_receive}) {
require IkiWiki::Receive;
$test_receive=IkiWiki::Receive::gen_wrapper();
}
my $check_commit_hook="";
if ($config{post_commit}) {
# Optimise checking !commit_hook_enabled() ,
# so that ikiwiki does not have to be started if the
# hook is disabled.
#
# Note that perl's flock may be implemented using fcntl
# or lockf on some systems. If so, and if there is no
# interop between the locking systems, the true C flock will
# always succeed, and this optimisation won't work.
# The perl code will later correctly check the lock,
# so the right thing will still happen, though without
# the benefit of this optimisation.
$check_commit_hook=<<"EOF";
{
int fd=open("$config{wikistatedir}/commitlock", O_CREAT | O_RDWR);
if (fd != -1) {
if (flock(fd, LOCK_SH | LOCK_NB) != 0)
exit(0);
close(fd);
}
}
EOF
}
$Data::Dumper::Indent=0; # no newlines $Data::Dumper::Indent=0; # no newlines
my $configstring=Data::Dumper->Dump([\%config], ['*config']); my $configstring=Data::Dumper->Dump([\%config], ['*config']);
$configstring=~s/\\/\\\\/g; $configstring=~s/\\/\\\\/g;
@ -50,12 +81,15 @@ EOF
/* A wrapper for ikiwiki, can be safely made suid. */ /* A wrapper for ikiwiki, can be safely made suid. */
#include <stdio.h> #include <stdio.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h> #include <unistd.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <sys/file.h>
extern char **environ; extern char **environ;
char *newenviron[$#envsave+5]; char *newenviron[$#envsave+6];
int i=0; int i=0;
addenv(char *var, char *val) { addenv(char *var, char *val) {
@ -67,8 +101,10 @@ addenv(char *var, char *val) {
} }
int main (int argc, char **argv) { int main (int argc, char **argv) {
/* Sanitize environment. */
char *s; char *s;
$check_commit_hook
$test_receive
$envsave $envsave
newenviron[i++]="HOME=$ENV{HOME}"; newenviron[i++]="HOME=$ENV{HOME}";
newenviron[i++]="WRAPPED_OPTIONS=$configstring"; newenviron[i++]="WRAPPED_OPTIONS=$configstring";

37
debian/changelog vendored
View File

@ -1,22 +1,47 @@
ikiwiki (2.68) UNRELEASED; urgency=low ikiwiki (2.68) UNRELEASED; urgency=low
* Add support for checking pushes from untrusted git committers. This can be
used to set up anonymous git pushes, and other similar things.
* format: New plugin, allows embedding differently formatted text inside a
page (ie, otl inside a mdwn page, or syntax highlighted code inside a
page).
* relativedate: New javascript-alicious plugin that makes all dates display
relative, in a very nice way, if I say so myself.
* Optimise the no-op post-commit hook, to speed up web edits by a fraction
of a second.
* git: Allow [[sha1_commit]] to be used in the diffurl, to support cgit.
* shortcut: Fix display of shortcuts while previewing.
* Plugins that used to override displaytime should instead override
formattime. displaytime will call that, and may wrap markup around the
formatted time.
* Add an underlay for javascript, and add ikiwiki.js containing some utility * Add an underlay for javascript, and add ikiwiki.js containing some utility
code. code.
* toggle: Stop embedding the full toggle code on each page using it, and * toggle: Stop embedding the full toggle code on each page using it, and
move it to toggle.js in the javascript underlay. move it to toggle.js in the javascript underlay.
* relativedate: New javascript-alicious plugin that makes all dates display
relative, in a very nice way, if I say so myself.
* recentchanges: Make feed links point back to anchors on the recentchanges * recentchanges: Make feed links point back to anchors on the recentchanges
page. (JasonBlevins) page. (JasonBlevins)
* Updated French translation. Closes: #502694
* Plugins that used to override displaytime should instead override
formattime. displaytime will call that, and may wrap markup around the
formatted time.
* Fix issue with utf-8 in wikiname breaking session cookies, by * Fix issue with utf-8 in wikiname breaking session cookies, by
entity-encoding the wikiname in the session cookie. entity-encoding the wikiname in the session cookie.
* Use the pure perl Data::Dumper when generating setup files to ensure that * Use the pure perl Data::Dumper when generating setup files to ensure that
utf-8 characters are written out as such, and not as the encoded perl utf-8 characters are written out as such, and not as the encoded perl
strings the C Data::Dumper produces. strings the C Data::Dumper produces.
* inline: Only the last feed link was put on the page, fix this to include
all feed links. So rss will be included along with atom, and pages with
multiple feeds will get links added for all feeds.
* tag: When tagpage is set, force the links created by tagging to point at
the toplevel tagpage, and not closer subpages. The html links already went
there, but internally the links were not recorded as absolute, which could
cause confusing backlinks etc.
* Add an inject function, that can be used by plugins that want to
replace one of ikiwiki's functions with their own version.
(This is a scary thing that grubs through the symbol table, and replaces
all exported occurances of a function with the injected version.)
* external: RPC functions can be injected to replace exported functions.
* Updated French translation. Closes: #502694
* Updated Spanish translation from the ever vigilant Victor Moral.
* Updated Danish translation from Jonas Smedegaard. Closes: #503117
* Preserve syslog setting when doing `ikiwiki -setup foo -dumpsetup bar`
* Several fixes to --render mode.
-- Joey Hess <joeyh@debian.org> Fri, 17 Oct 2008 20:11:02 -0400 -- Joey Hess <joeyh@debian.org> Fri, 17 Oct 2008 20:11:02 -0400

View File

@ -0,0 +1,29 @@
In ikiwiki 2.66, SVG images are not recognized as images. In ikiwiki.pm,
the hardcoded list of image file extensions does not include ".svg", which
it probably should unless there's some other issue about rendering SVGs?
The 'img' plugin also seems to not support SVGs.
> SVG images can only be included via an `<object>`, `<embed>`, or
> `<iframe>` tag. Or, perhaps as [inline SVG](http://wiki.svg.org/Inline_SVG).
> The [[plugins/htmlscrubber]] strips all three tags since they can easily
> be used maliciously. If doing inline SVG, I'd worry that the svg file
> could be malformed and mess up the html, or even inject javascript. So,
> the only options seem to be only supporting svgs on wikis that do not
> sanitize their html, or assuming that svgs are trusted content and
> embedding them inline. None of which seem particularly palatable.
>
> I suppose the other option would be converting the svg file to a static
> image (png). The img plugin could probably do that fairly simply.
> --[[Joey]]
>> I'm working on inline SVG and MathML support in ikiwiki and I've
>> modified my htmlscrubber to sanitize SVG and MathML using the
>> whitelists from html5lib. Here's a [patch][]. I've also made some
>> notes about this here: [[todo/svg]].
>>
>> I suspect that this bug may have caught the eye of anyone interested
>> in this sort of thing. I'll elaborate a bit on my user page to avoid
>> getting off-topic here. --[[JasonBlevins]], October 21, 2008
[patch]: http://xbeta.org/gitweb/?p=xbeta/ikiwiki.git;a=blobdiff;f=IkiWiki/Plugin/htmlscrubber.pm;h=3c0ddc8f25bd8cb863634a9d54b40e299e60f7df;hp=3bdaccea119ec0e1b289a0da2f6d90e2219b8d66;hb=fe333c8e5b4a5f374a059596ee698dacd755182d;hpb=be0b4f603f918444b906e42825908ddac78b7073

View File

@ -0,0 +1,17 @@
Shortcuts such as \[[!google foo]] do not work when previewing pages.
--[[JasonBlevins]]
> Broken during the setup dumping changes, now fixed. --[[Joey]] [[done]]
>> Just a quick note that this fix interacts with the way the `listdirectives`
>> directive gets its list of non-shortcut directives. At the moment it
>> still works, but it relies on the fact that the `listdirectives` `checkconfig`
>> hook is called before the `shortcut` `checkconfig` hook.
>> -- [[Will]]
>> The order plugins are loaded is effectively random. (`keys %hooks`).
>> So I've made shortcuts pass a 'shortcut' parameter when registering
>> them, which listdirectives can grep out of the full list of directives.
>> That may not be the best name to give it, especially if other plugins
>> generate directives too. Seemed better than forcing shortcut's
>> checkconfig hook to run last tho. --[[Joey]]

View File

@ -28,3 +28,5 @@ auto-generated index is insufficient.
> tagged, I think you have larger problems than tags and backlinks being > tagged, I think you have larger problems than tags and backlinks being
> the same. Like keeping that list of links up to date as tags are added > the same. Like keeping that list of links up to date as tags are added
> and changed. --[[Joey]] > and changed. --[[Joey]]
I see your point, Joey. I need to maintain that list manually, though, because the automatically generated list is too brief. \[[!map ...]] generates just a list of titles or descriptions. I need a list that contains both. See [[this_posting|ikiwiki/directive/map/discussion]] for more details. Until \[[!map]] can do that, I'm stuck with a manually maintained list. Which means that every link shows up in the backlinks.

View File

@ -6,10 +6,42 @@ I have found if I add:
newenviron[i++]="HTTPS_PROXY=http://host.domain.com:3128"; newenviron[i++]="HTTPS_PROXY=http://host.domain.com:3128";
to IkiWiki/Wrapper.pm it solves the problem for https requests, however it obviously would be preferred if the proxy name is not configured. to IkiWiki/Wrapper.pm it solves the problem for https requests, however it obviously would be preferred if the proxy name is not hard coded.
Also, the ability to set HTTPS\_CA\_FILE and HTTPS\_CA\_DIR might benefit some people. Then again, it I can't see any evidence that the SSL certificate of the server is being checked. See the [[bug_report|ssl_certificates_not_checked_with_openid]] I filed on this separate issue. Also, the ability to set HTTPS\_CA\_FILE and HTTPS\_CA\_DIR might benefit some people. Then again, it I can't see any evidence that the SSL certificate of the server is being checked. See the [[bug_report|ssl_certificates_not_checked_with_openid]] I filed on this separate issue.
Unfortunately, HTTP\_PROXY doesn't work for http requests, it looks like that library is different. Unfortunately, HTTP\_PROXY doesn't work for http requests, it looks like that library is different.
---
Update 2008-10-26:
Better solution, one that works for both http and https, and uses config options. It appears to work...
Note that using $ua->proxy(['https'], ...); won't work, you get a "Not Implemented" error, see <http://community.activestate.com/forum-topic/lwp-https-requests-proxy>. Also see [[!debbug 129528]].
Also note that the proxy won't work with liblwpx-paranoidagent-perl, I had to remove liblwpx-paranoidagent-perl first.
Please get the patch from the *.mdwn source.
louie:/usr/share/perl5/IkiWiki/Plugin# diff -u openid.pm.old openid.pm
--- openid.pm.old 2008-10-26 12:18:58.094489360 +1100
+++ openid.pm 2008-10-26 12:40:05.763429880 +1100
@@ -165,6 +165,14 @@
$ua=LWP::UserAgent->new;
}
+ if (defined($config{"http_proxy"})) {
+ $ua->proxy(['http'], $config{"http_proxy"});
+ }
+
+ if (defined($config{"https_proxy"})) {
+ $ENV{HTTPS_PROXY} = $config{"https_proxy"};
+ }
+
# Store the secret in the session.
my $secret=$session->param("openid_secret");
if (! defined $secret) {
Brian May Brian May

View File

@ -27,3 +27,17 @@ Does the Perl version of this plugin still exist? There appears to be no "rst.p
> No, only the python version exists. It does have `raw_enabled` set. > No, only the python version exists. It does have `raw_enabled` set.
> --[[Joey]] > --[[Joey]]
I am sorry, but I am confused. Does this mean that I can use Ikiwiki
features that translate to HTML in rst files? For example, when I use a
\[[pagename]]-style link in a rst file, the page generated by Ikiwiki's rst
plugin says &lt;a href="./../pagename/">pagename&lt;/a> as text. The link
is expanded correctly, but the result isn't interpreted as HTML. Is that
what is supposed to happen? --Peter
> `raw_enabled` allows you to use the
> [raw directive](http://docutils.sourceforge.net/docs/ref/rst/directives.html),
> but this is not used by ikiwiki for wikilinks or anything else.
> That's why the [[plugin_page|plugins/rst]] has its note about
> issues with wikilinks and directives. You'd have to put those inside
> raw directives yourself to avoid rst escaping their result. --[[Joey]]

View File

@ -65,4 +65,21 @@ significantly harder than the network based attacks."
With regards to implementation, I am surprised that the libraries don't seem to With regards to implementation, I am surprised that the libraries don't seem to
do this checking, already, and by default. Unfortunately, I am not sure how to test do this checking, already, and by default. Unfortunately, I am not sure how to test
this adequately, see <http://bugs.debian.org/466055>. -- Brian May this adequately, see [[!debbug 466055]]. -- Brian May
---
I think [[!cpan Crypt::SSLeay]] already supports checking the certificate. The trick
is to get [[!cpan LWP::UserAgent]], which is used by [[!cpan LWPx::ParanoidAgent]] to
enable this checking.
I think the trick is to set one of the the following environment variables before retrieving
the data:
$ENV{HTTPS\_CA\_DIR} = "/etc/ssl/certs/";
$ENV{HTTPS\_CA\_FILE} = "/etc/ssl/certs/file.pem";
Unfortunately I get weird results if the certificate verification fails, see [[!debbug 503440]].
It still seems to work though, regardless.
-- Brian May

View File

@ -11,6 +11,10 @@ Replacing "·" with "-" in `wikiname` fixed this login issue.
> issues too.) Seems like I will have to possibly break some sessions and > issues too.) Seems like I will have to possibly break some sessions and
> entity-encode the wikiname in the cookie.. [[done]]. --[[Joey]] > entity-encode the wikiname in the cookie.. [[done]]. --[[Joey]]
>> I confirm it fixes the bug for me. --[[intrigeri]]
(BTW, such a char was replaced by -I don't remember what encoding thingie- in my setup file, when running `ikiwiki-transition setupformat`.) (BTW, such a char was replaced by -I don't remember what encoding thingie- in my setup file, when running `ikiwiki-transition setupformat`.)
> Thanks for the heads up, fixed that too. --[[Joey]] > Thanks for the heads up, fixed that too. --[[Joey]]
>> I confirm it fixes the bug for me. --[[intrigeri]]

7
doc/convert.mdwn 100644
View File

@ -0,0 +1,7 @@
Do you have an existing wiki or blog using other software, and would like
to convert it to ikiwiki? Various tools and techniques have been developed
to handle such conversions.
* [[tips/convert_mediawiki_to_ikiwiki]]
* [[tips/convert_MoinMoin_and_TWiki_to_ikiwiki]]
* [[tips/convert_blogger_blogs_to_ikiwiki]]

View File

@ -24,6 +24,8 @@ Or download the deb from <http://packages.debian.org/unstable/web/ikiwiki>.
There is a backport of a recent version of ikiwiki for Debian 4.0 at There is a backport of a recent version of ikiwiki for Debian 4.0 at
<http://packages.debian.org/etch-backports/ikiwiki>. <http://packages.debian.org/etch-backports/ikiwiki>.
Fedora versions 8 and newer have RPMs of ikiwiki available.
There is also an unofficial backport of ikiwiki for Ubuntu Hardy, provided by There is also an unofficial backport of ikiwiki for Ubuntu Hardy, provided by
[[Paweł_Tęcza|users/ptecza]], [[Paweł_Tęcza|users/ptecza]],
at [http://gpa.net.icm.edu.pl/ubuntu/](http://gpa.net.icm.edu.pl/ubuntu/index-en.html). at [http://gpa.net.icm.edu.pl/ubuntu/](http://gpa.net.icm.edu.pl/ubuntu/index-en.html).

View File

@ -5,4 +5,4 @@ _This is a bold experiment by me, since I have exactly such a question. This ove
## Current topics ## ## Current topics ##
[[!inline pages="forum/* and !forum/discussion and !forum/*/*" [[!inline pages="forum/* and !forum/discussion and !forum/*/*"
actions=yes rootpage="forum" postformtext="Add a new thread titled:" show=0]] archive=yes rootpage="forum" postformtext="Add a new thread titled:" show=0]]

View File

@ -0,0 +1,11 @@
I'm using ikiwiki to manage my personal wiki. One of the things I'm toying with is storing my grocery list in a wiki. The way I typically grocery-shop is to make one huge master list containing all the items I typically buy in a single cycle. Then, on any given trip, I make a subset list containing only the items I need. I'd like to streamline this process by making the master list a series of checkboxes. Before each trip, I load the list page on my phone, check off all the items I already have, then check off individual items as I get them.
I'm not sure if there's a convenient way of adding checkboxes to wiki pages, and after a bit of thought I decided that "( )" would be a good markup for this. Ideally I'd like to still have access to other markdown conventions so I could, say, organize the list with headings and such when it grows large, so I don't want to create an entirely separate format, or a separate copy of the markdown plugin.
Is there an existing means of, say, adding supersets to wiki markup? I suppose I could use an inline directive that inserts a multisellect HTML element, but I really like ( ). :)
Ideal would be some sort of filter infrastructure. Plugins could register with a larger filter plugin that adds an inline directive. I could then invoke the checkbox filter at the top of my grocery list, and all instances of ( ) would be replaced with HTML. Might also make sense for the individual filters to specify whether or not they're invoked before or after the page template, or perhaps just always invoke them after. *shrug*
Does something like this exist? I'd really like to avoid messing around with raw HTML or an inline for each of 40-50 list items. :)
-- [[Nolan]]

View File

@ -0,0 +1,7 @@
I like the idea of this forum heirarchy -- but I think a map would be clearer than inlining the sub-pages. -- [[JonDowland]]
> The easier way to accomplish this is to set archive=yes in the inline.
> Switching to archive view can be useful when there are a lot of long
> posts and people tend to want to scan by title to find interesting ones
> and not necessarily read them all, which probably fits this forum pretty
> well --[[Joey]]

View File

@ -0,0 +1,10 @@
I'd like to have the wiki name appear in page titles as in "WikiName:
Page Title." If I use `<TMPL_VAR WIKINAME>: <TMPL_VAR TITLE>` in the
template this works for all pages except the index page itself which
will have title "WikiName: WikiName" as its title. Does anyone know
of a template-based solution to this or do I need to write a plugin
that provides a `IS_HOMEPAGE` template variable? --[[JasonBlevins]]
> Hmm, one way to work around this is to put a meta title directive on the
> index page. Then TITLE will be that, rather than WIKINAME, and your
> template should work. --[[Joey]]

View File

@ -1,5 +1,12 @@
Ikiwiki is developed in a git repository and can be checked out Ikiwiki, and this documentation wiki, are developed in a git repository and
like this: can be checked out like this:
[[!template id=note text="""
You can push changes back to ikiwiki's git repository over the `git://`
transport, to update this wiki, if you'd like, instead of editing it on the
web. Changes that could not be made via the web will be automatically
rejected.
"""]]
git clone git://git.ikiwiki.info/ git clone git://git.ikiwiki.info/
@ -13,7 +20,8 @@ There is also a mirror [on github](http://github.com/joeyh/ikiwiki/tree/master).
Commits to this git repository are fed into [CIA](http://cia.vc), and can Commits to this git repository are fed into [CIA](http://cia.vc), and can
be browsed, subscribed to etc on its be browsed, subscribed to etc on its
[project page](http://cia.vc/stats/project/ikiwiki). [project page](http://cia.vc/stats/project/ikiwiki). They're also fed into
[twitter](http://twitter.com/ikiwiki).
## branches ## branches

View File

@ -0,0 +1,21 @@
The `format` directive is supplied by the [[!iki plugins/format desc=format]]
plugin.
The directive allows formatting a chunk of text using any available page
format. It takes two parameters. First is the type of format to use,
ie the extension that would be used for a standalone file of this type.
Second is the text to format.
For example, this will embed an otl outline inside a page using mdwn or
some other format:
\[[!format otl """
foo
1
2
bar
3
4
"""]]
[[!meta robots="noindex, follow"]]

View File

@ -51,6 +51,19 @@ simply write [[wikilink]]s like `\[[../bar]]` (or even just `\[[..]]`?), but
this doesn't work, so I had to resort to using `\[[foo/bar]]` instead. this doesn't work, so I had to resort to using `\[[foo/bar]]` instead.
--[[tschwinge]] --[[tschwinge]]
> I believe, that doesn't entirely solve the problem. Just assume, your hierarchy is `/foo/bar/foo/bar`.
> How do you access from the page `/foo/bar/foo/bar` the `/foo/bar` and not `/foo/bar/foo/bar`?
> Do we have a way to implement `\[[../..]]` or `\[[/foo/bar]]`?
> Even worse, trying to link from `/foo/bar` to `/foo/bar/foo/bar` ... this will probably need `\[[./foo/bar]]` --[[Jan|jwalzer]]
>> There is no ".." syntax in wikilinks, but if the link begins with "/" it
>> is rooted at the top of the wiki, as documented in
>> [[subpage/linkingrules]]. Therefore, every example page name you listed
>> above will work unchanged as a wikilink to that page! --[[Joey]]
---- ----
How do I make images clickable? The obvious guess, \[[foo.png|/index]], doesn't work. --[[sabr]] How do I make images clickable? The obvious guess, \[[foo.png|/index]], doesn't work. --[[sabr]]
@ -64,3 +77,5 @@ How do I make images clickable? The obvious guess, \[[foo.png|/index]], doesn't
Is it possible to refer to a page, say \[[foobar]], such that the link text is taken from foobar's title [[directive/meta]] tag? --Peter Is it possible to refer to a page, say \[[foobar]], such that the link text is taken from foobar's title [[directive/meta]] tag? --Peter
> Not yet. :-) Any suggestion for a syntax for it? Maybe something like \[[|foobar]] ? --[[Joey]] > Not yet. :-) Any suggestion for a syntax for it? Maybe something like \[[|foobar]] ? --[[Joey]]
I like your suggestion because it's short and conscise. However, it would be nice to be able to refer to more or less arbitrary meta tags in links, not just "title". To do that, the link needs two parameters: the page name and the tag name, i.e. \[[pagename!metatag]]. Any sufficiently weird separater can be used instead of '!', of course. I like \[[pagename->metatag]], too, because it reminds me of accessing a data member of a structure (which is what referencing a meta tag is, really). --Peter

View File

@ -39,6 +39,7 @@ Projects
* [Chaos Computer Club Düsseldorf](https://www.chaosdorf.de) * [Chaos Computer Club Düsseldorf](https://www.chaosdorf.de)
* [monkeysphere](http://web.monkeysphere.info/) * [monkeysphere](http://web.monkeysphere.info/)
* [The Walden Effect](http://www.waldeneffect.org/) * [The Walden Effect](http://www.waldeneffect.org/)
* The [Fortran Wiki](http://fortranwiki.org/)
Personal sites and blogs Personal sites and blogs
======================== ========================
@ -101,7 +102,8 @@ Personal sites and blogs
* [Andrey Tarantsov's homepage](http://www.tarantsov.com/) * [Andrey Tarantsov's homepage](http://www.tarantsov.com/)
* [Don Marti's blog](http://zgp.org/~dmarti/) * [Don Marti's blog](http://zgp.org/~dmarti/)
* [[JonDowland]]'s [homepage](http://jmtd.net/) * [[JonDowland]]'s [homepage](http://jmtd.net/)
* [[Xavier Maillard]] is using ikiwiki (http://maillard.mobi/~xma/wiki) * [[xma]] is using ikiwiki (<http://maillard.mobi/~xma/>)
* [[JanWalzer|jwalzer]]'s [homepage](http://wa.lzer.net/) -- Work in Progress
Please feel free to add your own ikiwiki site! Please feel free to add your own ikiwiki site!

View File

@ -288,6 +288,10 @@ easily, perl is possible (but I'm not strong in perl).
>>> It appears the scripts were never posted? I recently imported my Mediawiki site into Iki. If it helps, my notes are here: <http://iki.u32.net/Mediawiki_Conversion> --[[sabr]] >>> It appears the scripts were never posted? I recently imported my Mediawiki site into Iki. If it helps, my notes are here: <http://iki.u32.net/Mediawiki_Conversion> --[[sabr]]
>>>>> The scripts have been posted now, see [[joshtriplett]]'s user page,
>>>>> and I've pulled together all ways I can find to [[convert]] other
>>>>> systems into ikiwiki. --[[Joey]]
---- ----
# LaTeX support? # LaTeX support?

View File

@ -176,3 +176,5 @@ I've tried a couple of times and my cpan has never recognised Bundle::IkiWiki. I
> Are you running perl with the environemnt settings specified on the page? > Are you running perl with the environemnt settings specified on the page?
> Can you show how it fails to find the bundle? --[[Joey]] > Can you show how it fails to find the bundle? --[[Joey]]
>> I was not. Next time I build I will have to try that (I'll need to tweak it as I already override PERL5LIB; also I need to specify http proxies). Thanks for your help! -- [[JonDowland]]

View File

@ -0,0 +1,3 @@
Now you can use [[git]] to clone this wiki, and push your changes back,
thanks to ikiwiki's new support for [[tips/untrusted_git_push]]. Enjoy
working on the wiki while offline! --[[Joey]]

View File

@ -0,0 +1,37 @@
Thanks, Joey! This is awesome...I had to try it out :)
--[[JasonBlevins]]
I am really happy to hear of this new feature, that I was (more or less)
secretly dreaming of. But - and that's why I'm still insanely editing
this wiki inside a web browser - I wonder how I'll use it for real: my
own master branch contains a few dozens merge commits, and one is created
every time I `git pull` ikiwiki repository (or another clone of it, living
on one of my other boxes that by chance had Internet access more recently).
I do not want to clutter Joey's repository with these commits, so I guess
I have to learn some more of Git everything-is-possible world (a nice thing
is: I am not limited anymore to "Emacs can do it", and I'm now in a position
to say "Git can do it" or "ikiwiki already does it", depending on the
situation). Well, let's focus. Git wizards amongst us (let's use this wiki
as if it were users@ikiwiki.info, ok?), what would you suggest? I was thinking
of having a new branch in my cloned repository, dedicated to editing this wiki;
I could use `rebase` instead of `fetch+merge` to get the new upstream commits
into this special-purpose branch. I guess it would work nicely if I had only
one offline box with not-yet-pushed changes at the same time, but would break
in awful and various ways when it is not the case. Any alternative idea?
--[[intrigeri]]
> Not that I'm very careful to avoid pushing merge commits (see git log ;-),
> but I sometimes use `git pull --rebase` to pull changes from a repo. That
> will rebase your local changes on top of the changes pulled, avoiding the
> merge commits. I'm sure more involved solutions are possible. --[[Joey]]
> I decided to use my local `master` branch as a copy of `origin/master`
> (kitenet) and move my local modifications to a separate branch. I'm using
> `master` to edit the wiki but there is still the problem of new upstream
> commits since the last pull. I already had this problem as Joey had pushed
> some changes while I was editing locally. Not knowing about
> `pull --rebase`, I took the long way out: branch, roll back HEAD, rebase,
> and merge. That was too much work...It looks like `pull --rebase` is the
> way to go. --[[JasonBlevins]]
Awesome ! --[[xma]]

View File

@ -0,0 +1,7 @@
Would it be possible to add an option to only generate the index files
for the html output and not place the markdown files in the wiki source?
The reason being that I have a lot of directories which need to be autoindexed,
but I would prefer if the index files didn't clutter up my git repository.
even without that feature the plugin is a great help, thanks

View File

@ -1,2 +1,4 @@
It would be nice if the "month" type calendar could collect all of the It would be nice if the "month" type calendar could collect all of the
matching pages on a given date in some inline type way. --[[DavidBremner]] matching pages on a given date in some inline type way. --[[DavidBremner]]
Is it possible to get the calendar to link to pages based not on their timestamp (as I understand that it does now, or have I misunderstood this?) and instead on for example their location in a directory hierarchy. That way the calendar could be used as a planning / timeline device which I think would be great. --[[Alexander]]

View File

@ -27,7 +27,7 @@ Somewhat more detailed usage documentation would be appreciated. I tried to setu
those plugins with a current ikiwiki release, i.e. 2.61, but they appeared to do those plugins with a current ikiwiki release, i.e. 2.61, but they appeared to do
nothing, really. Also, those example pages don't seem to use those plugins, even; nothing, really. Also, those example pages don't seem to use those plugins, even;
they set "copyright" and "license" properties using ordinary [[meta]] tags. Maybe they set "copyright" and "license" properties using ordinary [[meta]] tags. Maybe
I'm missing something terribly obvious? --[[Peter]] I'm missing something terribly obvious? --Peter
> Only obvious if you read the source :-). You need to put a file named "copyright.html" > Only obvious if you read the source :-). You need to put a file named "copyright.html"
>(respectively "license.html") in your wiki. Everything underneath that (in the wikilink sense) will use that >(respectively "license.html") in your wiki. Everything underneath that (in the wikilink sense) will use that
>content for the license or copyright. Saves putting \[[meta license="foo"]] in every page [[DavidBremner]] >content for the license or copyright. Saves putting \[[meta license="foo"]] in every page [[DavidBremner]]

View File

@ -1,3 +1,6 @@
[[!template id=plugin name=highlightcode author="[[sabr]]"]]
[[!tag type/format]]
A small plugin to allow Ikiwiki to display source files complete with syntax highlighting. Files with recognized extensions (i.e. my-file.cpp) are be rendered just like any other Ikiwiki page. You can even edit your source files with Ikiwiki's editor. A small plugin to allow Ikiwiki to display source files complete with syntax highlighting. Files with recognized extensions (i.e. my-file.cpp) are be rendered just like any other Ikiwiki page. You can even edit your source files with Ikiwiki's editor.
It uses the Syntax::Highlight::Engine::Kate Perl module to do the highlighting. It uses the Syntax::Highlight::Engine::Kate Perl module to do the highlighting.

View File

@ -10,7 +10,8 @@ Download: [linguas.pm](http://ettin.org/pub/ikiwiki/linguas.pm) (2006-08-21).
Note that even though it is still available for download, this plugin is no Note that even though it is still available for download, this plugin is no
longer actively maintained. If you are interested in multilingual wiki pages, you longer actively maintained. If you are interested in multilingual wiki pages, you
can also take a look at other approaches such as [[todo/l10n]] or Lars Wirzenius's can also take a look at other approaches such as [[todo/l10n]], [[plugins/contrib/po]],
or Lars Wirzenius's
[Static website, with translations, using IkiWiki](http://liw.iki.fi/liw/log/2007-05.html#20070528b). [Static website, with translations, using IkiWiki](http://liw.iki.fi/liw/log/2007-05.html#20070528b).
Usage Usage

View File

@ -0,0 +1,5 @@
[[!template id=plugin name=mediawiki author="[[sabr]]"]]
[[!tag type/format]]
[The Mediawiki plugin](http://u32.net/Mediawiki_Plugin/) allows ikiwiki to
process pages written using MediaWiki markup.

View File

@ -0,0 +1,11 @@
[[!template id=plugin name=opml author="[[JanWalzer|jwalzer]]"]]
[[!tag type/format]]
The idea of this plugin is to parse in an OPML-File and output a linklist, maybe some customization.
OPML-Files are xml-files that most RSS-Readers write out, to summarize their subscribes feedlist.
I have a "dumb" perlscript running on my website, that tries to do a opml2mdwn transformation, but its quite bad on that.
This Plugin is **NOT Ready** in any way. I'm just putting this page up as a hook, to discuss it.
I intend to work on this, but I'd appreciate any help on this.

View File

@ -0,0 +1,4 @@
If this is the wrong place for the development of the plugin, please mode it on to a more appropriate one.
Currently I'm quite stuck with the perl-stuff itself. I'm trying to become comfortable with the language, but it seems, the language doesn't like me. I'm lost in complex datastructures, when trying to iterate through the output of XML::Simple. --[[Jan|jwalzer]]

View File

@ -0,0 +1,63 @@
I've been working on a plugin called "po", that adds support for multi-lingual wikis,
translated with gettext, using [po4a](http://po4a.alioth.debian.org/).
More information:
* It can be found in [my "po" branch](http://repo.or.cz/w/ikiwiki/intrigeri.git?a=shortlog;h=refs/heads/po): `git clone git://repo.or.cz/ikiwiki/intrigeri.git`
* It involves adding three hooks to ikiwiki core.
* It is documented (including TODO and plans for next work steps) in `doc/plugins/po.mdwn`, which can be found in the same branch.
* No public demo site is available so far, I'm working on this.
My plan is to get this plugin clean enough to be included in ikiwiki.
The current version is a proof-of-concept, mature enough for me to dare submitting it here,
but I'm prepared to hear various helpful remarks, and to rewrite parts of it as needed.
Any thoughts on this?
> Well, I think it's pretty stunning what you've done here. Seems very
> complete and well thought out. I have not read the code in great detail
> yet.
>
> Just using po files is an approach I've never seen tried with a wiki. I
> suspect it will work better for some wikis than others. For wikis that
> just want translations that match the master language as closely as
> possible and don't wander off and diverge, it seems perfect. (But what happens
> if someone edits the Discussion page of a translated page?)
>
> Please keep me posted, when you get closer to having all issues solved
> and ready for merging I can do a review and hopefully help with the
> security items you listed. --[[Joey]]
>> Thanks a lot for your quick review, it's reassuring to hear such nice words
>> from you. I did not want to design and write a full translation system, when
>> tools such as gettext/po4a already have all the needed functionality, for cases
>> where the master/slave languages paradigm fits.
>> Integrating these tools into ikiwiki plugin system was a pleasure.
>>
>> I'll tell you when I'm ready for merging, but in the meantime,
>> I'd like you to review the changes I did to the core (3 added hooks).
>> Can you please do this? If not, I'll go on and hope I'm not going to far in
>> the wrong direction.
>>
>>> Sure.. I'm not completly happy with any of the hooks since they're very
>>> special purpose, and also since `run_hooks` is not the best interface
>>> for a hook that modifies a variable, where only the last hook run will
>>> actually do anything. It might be better to just wrap
>>> `targetpage`, `bestlink`, and `beautify_urlpath`. But, I noticed
>>> the other day that such wrappers around exported functions are only visible by
>>> plugins loaded after the plugin that defines them.
>>>
>>> Update: Take a look at the new "Function overriding" section of
>>> [[plugins/write]]. I think you can just inject wrappers about a few ikiwiki
>>> functions, rather than adding hooks. The `inject` function is pretty
>>> insane^Wlow level, but seems to work great. --[[Joey]]
>>
>>>> Thanks a lot, it seems to be a nice interface for what I was trying to achieve.
>>>> I may be forced to wait two long weeks before I have a chance to confirm
>>>> this. Stay tuned. --[[intrigeri]]
>>
>> The Discussion pages issue is something I am not sure about yet. But I will
>> probably decide that "slave" pages, being only translations, don't deserve
>> a discussion page: the discussion should happen in the language in which the
>> pages are written for real, which is the "master" one. --[[intrigeri]]

View File

@ -20,3 +20,8 @@ This problem with sourcehighlight needs to be fixed before it is very useful.
- Is there a way to configure the colors used by source-highlight (other than editing the globally installed "default.style" file)? It would help if I could pass the command arbitrary command-line arguments; then I could configure which config file it's supposed to use. For instance, I'm not a fan of hard-coding the colors into the HTML output. IMHO, css-style formatting should be preferred. All that can be set via the command line ... --Peter - Is there a way to configure the colors used by source-highlight (other than editing the globally installed "default.style" file)? It would help if I could pass the command arbitrary command-line arguments; then I could configure which config file it's supposed to use. For instance, I'm not a fan of hard-coding the colors into the HTML output. IMHO, css-style formatting should be preferred. All that can be set via the command line ... --Peter
> I don't really have time right now, but it should be easy to add, if you look at how src-lang is handled. Patches are welcome :-) --[[DavidBremner]] > I don't really have time right now, but it should be easy to add, if you look at how src-lang is handled. Patches are welcome :-) --[[DavidBremner]]
Note that [[Will]] wrote a plugin that uses source-highlight also. It's
available
[here|todo/automatic_use_of_syntax_plugin_on_source_code_files/discussion]].
--[[Joey]]

View File

@ -0,0 +1,9 @@
[[!template id=plugin name=format core=0 author="[[Joey]]"]]
[[!tag type/format]]
This plugin allows mixing different page formats together, by embedding
text formatted one way inside a page formatted another way. This is done
using the [[ikiwiki/directive/format]] [[ikiwiki/directive]].
For example, it could be used to embed an [[otl]] outline inside a page
that is formatted as [[mdwn]].

View File

@ -3,7 +3,7 @@
This plugin causes ikiwiki to listen for pings, typically delivered from This plugin causes ikiwiki to listen for pings, typically delivered from
another ikiwiki instance using the [[pinger]] plugin. When a ping is another ikiwiki instance using the [[pinger]] plugin. When a ping is
recieved, ikiwiki will update the wiki, the same as if `ikiwiki --refresh` received, ikiwiki will update the wiki, the same as if `ikiwiki --refresh`
were ran at the command line. were ran at the command line.
An url such as the following is used to trigger a ping: An url such as the following is used to trigger a ping:

View File

@ -221,6 +221,10 @@ Security checks
gettext/po4a rough corners gettext/po4a rough corners
-------------------------- --------------------------
- new translations created in the web interface must get proper charset/encoding
gettext metadata, else the next automatic PO update removes any non-ascii
chars; possible solution: put such metadata into the Pot file, and let it
propagate
- fix the duplicated PO header mysterious bug - fix the duplicated PO header mysterious bug
- fix the "duplicate message definition" error when updating a PO - fix the "duplicate message definition" error when updating a PO
file; do PO files need normalizing? (may be a side effect of file; do PO files need normalizing? (may be a side effect of

View File

@ -10,7 +10,7 @@ show the absolute date instead. Also, this plugin can be used with other
plugins like [[prettydate]] that change how the absolute date is displayed. plugins like [[prettydate]] that change how the absolute date is displayed.
If this plugin is enabled, you may also add relative dates to pages in the If this plugin is enabled, you may also add relative dates to pages in the
wiki, by using html elements in the "date" class. For example, this will wiki, by using html elements in the "relativedate" class. For example, this
display as a relative date: will display as a relative date:
<span class="date">Fri Oct 17 18:36:13 EDT 2008</span> <span class="relativedate">Fri Oct 17 18:36:13 EDT 2008</span>

View File

@ -11,7 +11,7 @@ ikiwiki. Limitations include:
* There are issues with inserting raw html into documents, as ikiwiki * There are issues with inserting raw html into documents, as ikiwiki
does with [[WikiLinks|ikiwiki/WikiLink]] and many does with [[WikiLinks|ikiwiki/WikiLink]] and many
preprocessor [[directives|ikiwiki/directive]]. [[directives|ikiwiki/directive]].
So while you may find this useful for importing old files into your wiki, So while you may find this useful for importing old files into your wiki,
using this as your main markup language in ikiwiki isn't recommended at using this as your main markup language in ikiwiki isn't recommended at

View File

@ -360,13 +360,6 @@ This hook is called whenever ikiwiki normally saves its state, just before
the state is saved. The function can save other state, modify values before the state is saved. The function can save other state, modify values before
they're saved, etc. they're saved, etc.
### displaytime
hook(type => "displaytime", id => "foo", call => \&display);
This hook can be registered to override the regular `displaytime` function.
Only the last displaytime hook will be used.
### renamepage ### renamepage
hook(type => "renamepage", id => "foo", call => \&renamepage); hook(type => "renamepage", id => "foo", call => \&renamepage);
@ -434,36 +427,6 @@ describes the plugin as a whole. For example:
and undef if a rebuild could be needed in some circumstances, but is not and undef if a rebuild could be needed in some circumstances, but is not
strictly required. strictly required.
### targetpage
hook(type => "targetpage", id => "foo", call => \&targetpage);
This hook can be used to override the name of the file a page should
be compiled into.
It should return the target filename.
### tweakurlpath
hook(type => "tweakurlpath", id => "foo", call => \&tweakurlpath);
This hook can be used to modify the internal urls generated by
ikiwiki; it is run just after ikiwiki has removed the trailing
`index.html`, in case `usedirs` is enabled.
It should return the modified url.
### tweakbestlink
hook(type => "tweakbestlink", id => "foo", call => \&tweakbestlink);
This hook can be used to modify the page returned by `bestlink`. It is
passed named parameters `page` and `link`. These are, respectively,
the page where the link will appear and the link ikiwiki would choose
as the best one, if no `tweakbestlink` hook was in effect.
It should return the modified link.
## Plugin interface ## Plugin interface
To import the ikiwiki plugin interface: To import the ikiwiki plugin interface:
@ -857,6 +820,30 @@ it up in the history.
It's ok if this is not implemented, and throws an error. It's ok if this is not implemented, and throws an error.
#### `rcs_receive()`
This is called when ikiwiki is running as a pre-receive hook (or
equivalent), and is testing if changes pushed into the RCS from an
untrusted user should be accepted. This is optional, and doesn't make
sense to implement for all RCSs.
It should examine the incoming changes, and do any sanity
checks that are appropriate for the RCS to limit changes to safe file adds,
removes, and changes. If something bad is found, it should exit
nonzero, to abort the push. Otherwise, it should return a list of
files that were changed, in the form:
{
file => # name of file that was changed
action => # either "add", "change", or "remove"
path => # temp file containing the new file content, only
# needed for "add"/"change", and only if the file
# is an attachment, not a page
}
The list will then be checked to make sure that each change is one that
is allowed to be made via the web interface.
### PageSpec plugins ### PageSpec plugins
It's also possible to write plugins that add new functions to It's also possible to write plugins that add new functions to
@ -884,6 +871,56 @@ By the way, to parse a ikiwiki setup file and populate `%config`, a
program just needs to do something like: program just needs to do something like:
`use IkiWiki::Setup; IkiWiki::Setup::load($filename)` `use IkiWiki::Setup; IkiWiki::Setup::load($filename)`
### Function overriding
Sometimes using ikiwiki's pre-defined hooks is not enough. Your plugin
may need to replace one of ikiwiki's own functions with a modified version,
or wrap one of the functions.
For example, your plugin might want to override `displaytime`, to change
the html markup used when displaying a date. Or it might want to override
`IkiWiki::formattime`, to change how a date is formatted. Or perhaps you
want to override `bestlink` and change how ikiwiki deals with WikiLinks.
By venturing into this territory, your plugin is becoming tightly tied to
ikiwiki's internals. And it might break if those internals change. But
don't let that stop you, if you're brave.
Ikiwiki provides an `inject()` function, that is a powerful way to replace
any function with one of your own. This even allows you to inject a
replacement for an exported function, like `bestlink`. Everything that
imports that function will get your version instead. Pass it the name of
the function to replace, and a new function to call.
For example, here's how to replace `displaytime` with a version using HTML 5
markup:
inject(name => 'IkiWiki::displaytime', call => sub {
return "<time>".formattime(@_)."</time>";
});
Here's how to wrap `bestlink` with a version that tries to handle
plural words:
my $origbestlink=\&bestlink;
inject(name => 'IkiWiki::bestlink', call => \&mybestlink);
sub deplural ($) {
my $word=shift;
$word =~ s/e?s$//; # just an example :-)
return $word;
}
sub mybestlink ($$) {
my $page=shift;
my $link=shift;
my $ret=$origbestlink->($page, $link);
if (! length $ret) {
$ret=$origbestlink->($page, deplural($link));
}
return $ret;
}
### Javascript ### Javascript
Some plugins use javascript to make ikiwiki look a bit more web-2.0-ish. Some plugins use javascript to make ikiwiki look a bit more web-2.0-ish.

View File

@ -40,3 +40,7 @@ distributed wiki.
> >
> OTOH, if something can be added to the documentation that encourages > OTOH, if something can be added to the documentation that encourages
> good behavior, that'd be a good thing ... --[[Joey]] > good behavior, that'd be a good thing ... --[[Joey]]
---
I would find this page clearer split up into sub-pages. Does anyone agree/disagree? -- [[JonDowland]]

View File

@ -96,14 +96,13 @@ the sentinal.
## Function injection ## Function injection
Some parts of ikiwiki are extensible by adding functions. For example, the Some parts of ikiwiki are extensible by adding or overriding functions.
RCS interface relies on plugins providing several IkiWiki::rcs_* functions.
It's actually possible to do this from an external plugin too. It's actually possible to do this from an external plugin too.
To make your external plugin provide an `IkiWiki::rcs_update` function, for To make your external plugin override the `IkiWiki::formattime` function, for
example, make an RPC call to `inject`. Pass it named parameters "name" and example, make an RPC call to `inject`. Pass it named parameters "name" and
"call", where "name" is the name of the function to inject into perl (here "call", where "name" is the name of the function to inject into perl (here
"Ikiwiki::rcs_update" and "call" is the RPC call ikiwiki will make whenever "Ikiwiki::formattime" and "call" is the RPC call ikiwiki will make whenever
that function is run. that function is run.
If the RPC call is memoizable, you can also pass a "memoize" parameter, set If the RPC call is memoizable, you can also pass a "memoize" parameter, set

View File

@ -280,6 +280,9 @@ Here is a how a commit from a remote repository works:
* git-commit in the remote repository * git-commit in the remote repository
* git-push, pushes the commit to the master repo on the server * git-push, pushes the commit to the master repo on the server
* (Optionally, the master repo's pre-receive hook runs, and checks that the
update only modifies files that the pushing user is allowed to update.
If not, it aborts the receive.)
* the master repo's post-update hook notices this update, and runs ikiwiki * the master repo's post-update hook notices this update, and runs ikiwiki
* ikiwiki notices the modifies page source, and compiles it * ikiwiki notices the modifies page source, and compiles it

View File

@ -100,6 +100,33 @@ repository, should only be writable by the wiki's admin, and *not* by the
group. Take care that ikiwiki uses a umask that does not cause files in group. Take care that ikiwiki uses a umask that does not cause files in
the srcdir to become group writable. (umask 022 will work.) the srcdir to become group writable. (umask 022 will work.)
## git repository with untrusted committers
By default, anyone who can commit to the git repository can modify any file
on the wiki however they like. A `pre-receive` hook can be set up to limit
incoming commits from untrusted users. Then the same limits that are placed
on edits via the web will be in effect for commits to git for the users.
They will not be allowed to edit locked pages, they will only be able to
delete pages that the [[plugins/remove]] configuration allows them to
remove, and they will only be allowed to add non-page attachments that the
[[plugins/attachment]] configuration allows.
To enable this, you need to set up the git repository to have multiple
committers. Trusted committers, including the user that ikiwiki runs as,
will not have their commits checked by the `pre-receive` hook. Untrusted
committers will have their commits checked. The configuration settings to
enable are `git_test_receive_wrapper`, which enables generation of a
`pre-receive` hook, and `untrusted_committers`, which is a list of
usernames of the untrusted committers.
Note that when the `pre-receive` hook is checking incoming changes, it
ignores the git authorship information, and uses the username of the unix
user who made the commit. Then tests including the `locked_pages` [[PageSpec]]
are checked to see if that user can edit the pages in the commit.
You can even set up an anonymous user, to allow anyone to push
changes in via git rather than using the web interface.
## Optionally using a local wiki to preview changes ## Optionally using a local wiki to preview changes
When working on the "working clones" to add content to your wiki, When working on the "working clones" to add content to your wiki,

View File

@ -17,3 +17,8 @@ There is also a mismatch between the way Ikiwiki handles conflicts and the
way Monotone handles conflicts. At present, if there is a conflict, then way Monotone handles conflicts. At present, if there is a conflict, then
Ikiwiki will commit a revision with conflict markers before presenting it Ikiwiki will commit a revision with conflict markers before presenting it
to the user. This is ugly, but there is no clean way to fix it at present. to the user. This is ugly, but there is no clean way to fix it at present.
Also note that not all recent ikiwiki features have been implemented in the
monotone plugin. At the moment we're missing:
* [[todo/Untrusted_push_in_Monotone]]

View File

@ -1,5 +1,7 @@
This is the SandBox, a page anyone can edit to try out ikiwiki. This is the SandBox, a page anyone can edit to try out ikiwiki.
testing 1..2..3!!
---- ----
Here's a paragraph. สวัสดี Here's a paragraph. สวัสดี

View File

@ -0,0 +1,3 @@
[[JoshTriplett]] has developed scripts to convert MoinMoin and TWiki wikis
to ikiwikis backed by a git repository, including full history. For
details, see [[his_user_page|JoshTriplett]].

View File

@ -0,0 +1,4 @@
[[sabr]] explains how to [import MediaWiki content into
git](http://u32.net/Mediawiki_Conversion/index.html?updated), including
full edit hostory. The [[plugins/contrib/mediawiki]] plugin can then be
used by ikiwiki to build the wiki.

View File

@ -0,0 +1,122 @@
This tip will describe how to allow anyone on the planet to `git push`
changes into your wiki, without needing a special account. All a user needs
to know is:
git clone git://your.wiki/path
# now modify any of the files the wiki would let you modify on the web
git push
This is a wonderful thing to set up for users, because then they can work
on the wiki while offline, and they don't need to mess around with web
browsers.
## security
But, you might be wondering, how can this possibly be secure. Won't users
upload all sorts of garbage, change pages you don't want them to edit, and so
on.
The key to making it secure is configuring ikiwiki to run as your git
repository's `pre-receive` hook. There it will examine every change that
untrusted users push into the wiki, and reject pushes that contain changes
that cannot be made using the web interface.
So, unless you have the [[plugins/attachment]] plugin turned on,
non-page files cannot be added. And if it's turned on, whatever
`allowed_attachments` checks you have configured will also check files
pushed into git.
And, unless you have the [[plugins/remove]] plugin turned on, no
files can be deleted.
And if you have `locked_pages` configured, then it will also affect what's
pushed into git.
Untrusted committers will also not be able to upload files with strange
modes, or push to any branch except for the configured `gitorigin_branch`,
or manipulate tags.
One thing to keep an eye on is uploading large files. It may be easier to
do this via git push than using the web, and that could be abused.
Also, no checking is done that the authors of commits are right, so people
can make a commit that pretends to be done by someone else.
## user setup
Add a dedicated user who will push in untrusted commits. This user should have
a locked password, and `git-shell` as its shell.
root@bluebird:/home/joey>adduser --shell=/usr/bin/git-shell --disabled-password anon
Adding user `anon' ...
## ikiwiki setup
You should set up ikiwiki before turning on anonymous push in git.
Edit your wiki's setup file, and uncomment the lines for
`git_test_receive_wrapper` and `untrusted_committers`.
# git pre-receive hook to generate
git_test_receive_wrapper => '/srv/git/ikiwiki.info/.git/hooks/pre-receive',
# unix users whose commits should be checked by the pre-receive hook
untrusted_committers => ['anon'],
The `git_test_receive_wrapper` will become the git `pre-receive` hook. The
`untrusted_committers` list is the list of unix users who will be pushing in
untrusted changes. It should *not* include the user that ikiwiki normally runs
as.
Once you're done modifying the setup file, don't forget to run
`ikiwiki -setup --refresh --wrappers` on it.
## git setup
You'll need to arrange the permissions on your bare git repository so that
user anon can write to it. One way to do it is to create a group, and put
both anon and your regular user in that group. Then make make the bare git
repository owned and writable by the group. See [[rcs/git]] for some more
tips on setting up a git repository with multiple committers.
Note that anon should *not* be able to write to the `srcdir`, *only* to the bare git
repository for your wiki.
If you want to allow git over `ssh`, generate a ssh key for anon, and
publish the *private* key for other people to use. This is optional; you
can use `git-daemon` instead and not worry about keys.
Now set up `git-daemon`. It will need to run as user `anon`, and be
configured to export your wiki's bare git repository. I set it up as
follows in `/etc/inetd.conf`, and ran `/etc/init.d/openbsd-inetd restart`.
git stream tcp nowait anon /usr/bin/git-daemon git-daemon --inetd --export-all --interpolated-path=/srv/git/%H%D /srv/git
At this point you should be able to `git clone git://your.wiki/path` from
anywhere, and check out the source to your wiki. But you won't be able to
push to it yet, one more change is needed to turn that on. Edit the
`config` file of your bare git repository, and allow `git-daemon` to
receive pushes:
[daemon]
receivepack = true
Now pushes should be accepted, and your wiki immediatly be updated. If it
doesn't, check your git repo's permissions, and make sure that the
`post-update` and `pre-receive` hooks are suid so they run as the user who
owns the `srcdir`.
## infelicities
If a user tries to push a changeset that ikiwiki doesn't like, it will
abort the push before refs are updated. However, the changeset will still
be present in your repository, wasting space. Since nothing refers to it,
it will be expired eventually. You can speed up the expiry by running `git
prune`.
When aborting a push, ikiwiki displays an error message about why it didn't
accept it. If using git over ssh, the user will see this error message,
which is probably useful to them. But `git-daemon` is buggy, and hides this
message from the user. This can make it hard for users to figure out why
their push was rejected. (If this happens to you, look at "'git log --stat
origin/master..`" and think about whether your changes would be accepted
over the web interface.)

View File

@ -1,6 +1,6 @@
" Vim syntax file " Vim syntax file
" Language: Ikiwiki (links) " Language: Ikiwiki (links)
" Maintainer: Recai Oktaþ (roktasATdebian.org) " Maintainer: Recai Oktaş (roktasATdebian.org)
" Last Change: 2007 May 29 " Last Change: 2007 May 29
" Instructions: " Instructions:

View File

@ -5,11 +5,12 @@ Features needed:
* Wiki, duh. * Wiki, duh.
* Source code viewing: This can be handled quite well with a [[shortcut|shortcuts]] to an external source viewer, or by putting * 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 the source in the wiki itself (see the [[todo/automatic_use_of_syntax_plugin_on_source_code_files]] wishlist item and [[todo/syntax_highlighting]] todo item).
[[plugins/contrib/highlightcode]] or [[plugins/contrib/sourcehighlight]] plugins.
* This could be improved with [[todo/source_link]]. * 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. * 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]] e.g. a `hello-world.c` and `hello-world.h`. See [[bugs/multiple_pages_with_same_name]]
> That bug was fixed before you linked to the page. :-)
>> I was the one that fixed it... :) -- [[Will]]
* Trac 'Timeline' feature: view history of the RCS - the `recentchanges` button. * 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. * 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]]. * Bug tracking: see [[tips/integrated_issue_tracking_with_ikiwiki]] and [[todo/Updated_bug_tracking_example]].

View File

@ -6,3 +6,9 @@ Currently, the page title (either the name of the page or the title specified wi
> way, # is reserved for h1 if you choose to use headers in your page. --[[Joey]] > way, # is reserved for h1 if you choose to use headers in your page. --[[Joey]]
[[done]] [[done]]
> For anyone interested, I've written a small plugin called [h1title][] that does the
> latter, making `#` (only when on the first line) set the page title, removing it from
> the page body. --[[JasonBlevins]], October 22, 2008
[h1title]: http://code.jblevins.org/ikiwiki/plugins/h1title.pm

View File

@ -0,0 +1,28 @@
As noted in [[tips/untrusted_git_push]] an untrusted push capability was added recently, but only implemented in git.
(See also [[todo/rcs_updates_needed]])
This note describes (but does not implement) an approach for this with the [[rcs/monotone]] rcs backend.
----
Monotone behaves a little differently to git in its networking. Git allows anyone to try to push, and then
check whether it is ok before finally accepting it. Monotone has no way to accept or reject revisions
in this way. However, monotone does have the ability to mark revisions, and to ignore unmarked revisions.
This marking capability can be used to achieve a somewhat similar effect to what happens with git. The
problem with this is that anyone could put anything into the monotone database, and while this wouldn't
affect ikiwiki, it seems bad to leave open, untrusted storage on the web.
The Plan
=====
In the `note_netsync_revision_received` hook in the monotone server, have the server check to make sure
that either a) the revision is signed by someone trusted or, b) the revision is checked using the same
hook that git uses in `pre-receive`. If the revision passes the ikiwiki `pre-receive` check then the
monotone hook signs the revision. This gives that revision the 'ikiwiki seal of approval'.
You'll also want to update the monotone trust hooks to only trust revisions signed by trusted people, or
ikiwiki.
Now anyone can upload a revision, but only those signed by a trusted person, or which pass the ikiwiki
check and so get signed by the ikiwiki key, will be seen by ikiwiki.

View File

@ -1,4 +1,4 @@
[[!tag wishlist]] [[!tag wishlist done]]
[[!toc ]] [[!toc ]]
@ -54,3 +54,57 @@ modify only *one* page may be easier.
Implementation Implementation
============== ==============
Also see [[joey]]'s idea on [[users/xma/discussion]], to allow (filtered) anonymous push to this wiki's repository.
> Ideally the filtering should apply the same constraints on what's pushed
> as are applied to web edits. So locked pages can't be changed, etc.
>
> That could be accomplished by making the git pre-receive hook be a
> ikiwiki wrapper. A new `git_receive_wrapper` config setting could cause
> the wrapper to be generated, with `$config{receive}` set to true.
>
> When run that way, ikiwiki would call `rcs_receive`. In the case of git,
> that would look at the received changes as fed into the hook on stdin,
> and use `parse_diff_tree` to get a list of the files changed. Then it
> could determine if the changes were allowed.
>
> To do that, it should first look at what unix user received the
> commit. That could be mapped directly to an ikiwiki user. This would
> typically be an unprivelidged user (that was set up just to allow
> anonymous pushes), but you might also want to set up
> separate users who have fewer limits on what they can push. And, of
> course, pushes from the main user, who owns the wiki, would not be
> checked at all. So, let's say `$config{usermap}` is a hash, something
> like `{usera => "wikiusera", userb => "wikiuserb"}`, and pushes from
> users not in the hash are not checked.
>
> Then it seems like it would want to call `check_canedit` to test if an
> edit to each changed page is allowed. Might also want to call
> `check_canattach` and `check_canremove` if the attach and remove plugins
> are enabled. All three expect to be passed a CGI and a CGI::Session
> object, which is a bit problimatic here. So dummy the objects up? (To call
> `check_canattach` the changed attachment would need to be extracted to a
> temp file for it to check..)
>
> If a change is disallowed, it would print out what was disallowed, and
> exit nonzero. I think that git then discards the pushed objects (or maybe
> they remain in the database until `git-gc` .. if so, that could be used
> to DOS by uploading junk, so need to check this point).
>
> Also, I've not verified that the objects have been recieved already when
> whe pre-receive hook is called. Although the docs seem to say that is the
> case. --[[Joey]]
>> Update: The git pre-receive hook stuff is written, and seems to work.
>> I think it makes more sense than using diffs, and so think this todo
>> could probably be closed.
>> --[[Joey]]
>>> I agree, closing this. I really prefer this solution to the one I was
>>> initially proposing.
>>> Is this pre-receive hook already enabled on ikiwiki.info?
>>> If not, do you plan to enable it at some point?
>>> --[[intrigeri]]
>>>> [[news/git_push_to_this_wiki]] gave me the answer. Well done! --[[intrigeri]]

View File

@ -1,6 +1,6 @@
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]]. 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. Updated to use fix noted in [[bugs/multiple_pages_with_same_name]].
-- [[Will]] -- [[Will]]
@ -92,7 +92,7 @@ Note that if this is being used with `c` or `c++` then you'll probably want to w
foreach my $lang (split(/[, ]+/, $config{sourcecode_lang})) { foreach my $lang (split(/[, ]+/, $config{sourcecode_lang})) {
if ($langs{$lang}) { if ($langs{$lang}) {
hook(type => "htmlize", id => $lang, call => \&htmlize); hook(type => "htmlize", id => $lang, call => \&htmlize, keepextension => 1);
} else { } else {
error("Your installation of source-highlight cannot handle sourcecode language $lang!"); error("Your installation of source-highlight cannot handle sourcecode language $lang!");
} }

View File

@ -24,3 +24,10 @@ the page. That's what the user intended to do in this case. The information
content of an empty vs. a deleted page is essentially the same, I'd say. But content of an empty vs. a deleted page is essentially the same, I'd say. But
having ikiwiki remove those stale pages would save some (minimal, admittedly) having ikiwiki remove those stale pages would save some (minimal, admittedly)
time needed for manual clean-up. --[[tschwinge]] time needed for manual clean-up. --[[tschwinge]]
On EmacsWiki, a page is marked for deletion when it contains just the DeletedPage
keyword and if there were no page editions since XX days. Here, I use pages that
can be empty everyday and filled all day long. It does not make sense to me to
delete these pages :). --[[xma]]
I was not aware of [[plugins/remove]]. I don't think another method is necessary -- [[JonDowland]]

View File

@ -23,3 +23,10 @@ What's your opinion, Joey? I hope it's also useful for another ikiwiki lovers :)
>>> Seems like a job for good ol' string interpolation. rootpage="post/$current_year/$current_month/$current_day" >>> Seems like a job for good ol' string interpolation. rootpage="post/$current_year/$current_month/$current_day"
>>> Ikiwiki could provide some vars, and it would be nice to write plugins to also provide vars. Sort of like templates. >>> Ikiwiki could provide some vars, and it would be nice to write plugins to also provide vars. Sort of like templates.
>>> Does that feel OK? --[[sabr]] >>> Does that feel OK? --[[sabr]]
> I want the exact same thing. My compromise was to create a `datedblog` module which overrides `inline`'s `sessioncgi` hook
> with something that sets the new page name to `%Y-%m-%d.$page` and sets up a meta directive at the beginning of
> the content, with the title you wanted. Now if you use the `datedblog` module, you get dated blog entries. But I'd
> like to have traditional `inline` functionality too. This would work great if there were a way to change the `do`
> parameter in the `blogpost` template's form; if I could change it to `datedblog` instead of `blog` then I could hook
> my datedblog module in nicely, without having to override anything. What would be the right way to do that? --[[neale]]

View File

@ -41,7 +41,7 @@ Another problimatic thing is plugins often define functions named 'preprocess',
6 IkiWiki::titlepage 6 IkiWiki::titlepage
These go together; linkpage is needed by all link plugins, and the others are used widely. These go together; linkpage is needed by all link plugins, and the others are used widely.
All should be exported. All should be exported. (Done)
7 IkiWiki::saveindex 7 IkiWiki::saveindex
5 IkiWiki::loadindex 5 IkiWiki::loadindex

View File

@ -70,10 +70,6 @@ Suggestions of ideas for plugins:
> web-server-specific code to list all users, and openid can't feasibly do so > web-server-specific code to list all users, and openid can't feasibly do so
> at all. --[[JoshTriplett]] > at all. --[[JoshTriplett]]
* It would be nice to be able to have a button to show "Differences" (or
"Show Diff") when editing a page. Is that an option that can be enabled?
Using a plugin?
* For PlaceWiki I want to be able to do some custom plugins, including one * For PlaceWiki I want to be able to do some custom plugins, including one
that links together subpages about the same place created by different that links together subpages about the same place created by different
users. This seems to call for a plugin that applies to every page w/o any users. This seems to call for a plugin that applies to every page w/o any

View File

@ -1,3 +1,8 @@
It would rock if I could view diffs from the web without going via feeds. I envision toggle-style buttons on the recentchanges page, or just links to the CGI, which then displays the diff... --[[madduck]] It would rock if I could view diffs from the web without going via feeds. I envision toggle-style buttons on the recentchanges page, or just links to the CGI, which then displays the diff... --[[madduck]]
> The diffs are actually there, enabled by the `recentchangesdiff`
> plugin, but they are hidden in the XHTML version by the stylesheet.
> You might try a user stylesheet with `div.diff { display: block }`.
> --[[JasonBlevins]]
[[!tag wishlist]] [[!tag wishlist]]

View File

@ -0,0 +1,26 @@
This [[patch]] allows for `\[[sha1]]` substitution in the `diffurl`
for git repositories. This is useful for use with [cgit][] which has
diffurls of the following form:
/project.git/diff/\[[file]]?id=\[[sha1_commit]]
[cgit]: http://hjemli.net/git/cgit/
diff --git a/IkiWiki/Plugin/git.pm b/IkiWiki/Plugin/git.pm
index 5bef928..164210d 100644
--- a/IkiWiki/Plugin/git.pm
+++ b/IkiWiki/Plugin/git.pm
@@ -518,6 +518,7 @@ sub rcs_recentchanges ($) { #{{{
my $diffurl = defined $config{'diffurl'} ? $config{'diffurl'} : "";
$diffurl =~ s/\[\[file\]\]/$file/go;
+ $diffurl =~ s/\[\[sha1\]\]/$sha1/go;
$diffurl =~ s/\[\[sha1_parent\]\]/$ci->{'parent'}/go;
$diffurl =~ s/\[\[sha1_from\]\]/$detail->{'sha1_from'}/go;
$diffurl =~ s/\[\[sha1_to\]\]/$detail->{'sha1_to'}/go;
> [[done]], but I called it `sha1_commit` since I think that's what it's
> actually a sha1 of. --[[Joey]]
>> I was at a loss for something more descriptive...I like that much
>> better :) Thanks! --[[JasonBlevins]]

View File

@ -3,3 +3,8 @@ renaming and removing files using the web interface. The mercurial and
tla [[rcs]] backends need implementions of these functions. tla [[rcs]] backends need implementions of these functions.
(The maintainers of these backends have been mailed. --[[Joey]]) (The maintainers of these backends have been mailed. --[[Joey]])
Also, currently git is the only VCS to have support for
[[untrusted_push|tips/untrusted_git_push]]. It _may_ be possible to
implement it for other DVCS, if they offer a hook that can be used to check
incoming pushes early.

View File

@ -0,0 +1,89 @@
There's been a lot of work on contrib syntax highlighting plugins. One should be
picked and added to ikiwiki core.
Ideally, it should support both converting whole source files into wiki
pages, as well as doing syntax highlighting as a preprocessor directive
(which is either passed the text, or reads it from a file).
## The big list of possibilities
* [[plugins/contrib/highlightcode]] uses [[cpan Syntax::Highlight::Engine::Kate]],
operates on whole source files only, has a few bugs (see
[here](http://u32.net/Highlight_Code_Plugin/), and needs to be updated to
support [[bugs/multiple_pages_with_same_name]].
* [[cpan IkiWiki-Plugin-syntax]] only operates as a directive.
Interestingly, it supports multiple highlighting backends, including Kate
and Vim.
* [[plugins/contrib/syntax]] only operates as a directive
([[not_on_source_code_files|automatic_use_of_syntax_plugin_on_source_code_files]]),
and uses [[cpan Text::VimColor]].
* [[plugins/contrib/sourcehighlight]] uses src-highlight, and operates on
whole source files only. Needs to be updated to
support [[bugs/multiple_pages_with_same_name]].
* [[sourcecode|todo/automatic_use_of_syntax_plugin_on_source_code_files/discussion]]
also uses src-highlight, and operates on whole source files.
Updated to work with the fix for [[bugs/multiple_pages_with_same_name]]. Untested with files with no extension, e.g. `Makefile`.
## General problems
* Using non-perl syntax highlighting backends is slow. I'd prefer either
using a perl module, or a multiple-backend solution that can use a perl
module as one option. (Or, if there's a great highlighter python module,
we could use an external plugin..)
* Currently no single plugin supports both modes of operation (directive
and whole source file to page).
* Nothing seems to support
[[wiki-formatted_comments|wiki-formatted_comments_with_syntax_plugin]]
inside source files. Doing this probably means post-processing the
results of the highlighting engine, to find places where it's highlighted
comments, and then running them through the ikiwiki rendering pipeline.
This seems fairly doable with [[cpan Syntax::Highlight::Engine::Kate]],
at least.
* The whole-file plugins tend to have a problem that things that look like
wikilinks in the source code get munged into links by ikiwiki, which can
have confusing results. Similar problem with preprocessor directives.
One approach that's also been requested for eg,
[[plugins/contrib/mediawiki]] is to allow controlling which linkification
types a page type can have on it.
* The whole-file plugins all get confused if there is a `foo.c` and a `foo.h`.
This is trivially fixable now by passing the keepextension option when
registering the htmlize hooks, though.
* Whole-file plugins register a bunch of htmlize hooks. The wacky thing
about it is that, when creating a new page, you can then pick "c" or
"h" or "pl" etc from the dropdown that normally has "mdwn" etc in it.
Is this a bug, or a feature? (Even if a feature, plugins with many
extensions make the dropdown unusable.. One way to deal with that is have
a config setting that lists what extensions to offer highlighting for.
Most people won't need/want the dozens some engines support.)
* The per page highlighters can't handle creating wiki pages from
"Makefile", or other files without a significant extension.
Not clear how to fix this, as ikiwiki is very oriented toward file
extensions. The workaround is to use a directive on a wiki page, pulling
in the Makefile.
## format directive
Rather than making syntax highlight plugins have to provide a preprocessor
directive as well as handling whole source files, perhaps a generic format
directive could be used:
\[[!format pl """..."""]]
That would run the text through the pl htmlizer, from the syntax hightligh
plugin. OTOH, if "rst" were given, it would run the text through the rst
htmlizer. So, more generic, allows mixing different types of markup on one
page, as well as syntax highlighting. Does require specifying the type of
format, instead of allowing it to be guessed (which some syntax highlighters
can do). (This directive is now implemented..)
Hmm, this would also allow comments inside source files to have mdwn
embedded in them, without making the use of mdwn a special case, or needing
to postprocess the syntax highlighter output to find comments.
/* \[[!format mdwn """
This is a comment in my C file. You can use mdwn in here.
"""]] */
Note that this assumes that directives are expanded in source files.

View File

@ -0,0 +1,26 @@
sourcehighlight is annoyingly slow, but it does support wiki directives
in comments. See [here](http://www.cs.unb.ca/~bremner/teaching/java_examples/snippet/ListMerge/)
for an example (tags).
> I think that is just a result of it expanding directives, and wikilinks,
> everywhere in the file, which is generally a possible problem..
> --[[Joey]]
* * * * *
I think having the option to choose source code page types from the
dropdown list is definitely a feature. This gives users an easy way
to contribute programs (say `.pl` files) or code snippets (like, for
example, the Elisp area of the EmacsWiki). Actually, would there any
other way to create a `.pl` file without write access to the
repository? --[[JasonBlevins]]
> Well, you can upload them as an attachment if the wiki is configured to
> allow it. Having them in the drop down becomes a problem when there are
> so many wacky extensions in there that you can't find anything.
> --[[Joey]]
>> I should just note that the
>> [[sourcecode|todo/automatic_use_of_syntax_plugin_on_source_code_files/discussion]]
>> plugin only adds the file extensions listed in the config. This shouldn't cause
>> massive drop-down menu pollution. -- [[Will]]

View File

@ -1 +1,4 @@
[[Wishlist]] item: I'd love to see the ability to optionally switch back to wiki syntax within the comments of code pretty-printed with the [[plugins/contrib/syntax]] plugin. This would allow the use of links and formatting in comments. [[Wishlist]] item: I'd love to see the ability to optionally switch back to
wiki syntax within the comments of code pretty-printed with the
[[plugins/contrib/syntax]] plugin. This would allow the use of links and
formatting in comments.

View File

@ -0,0 +1 @@
I use ikiwiki to organize information - projects, reading notes, outlines, todo lists, etc.

View File

@ -1,4 +1,5 @@
I'd love to see any notes you have on using ikiwiki for GTD. Would you I'd love to see any notes you have on using ikiwiki for GTD. Would you
consider documenting them? Perhaps we could turn the result into a consider documenting them? Perhaps we could turn the result into a
[[tip|tips]]. -[[JoshTriplett]] [[tip|tips]]. -[[JoshTriplett]]
> Well, certainly. Basically it's just inline + tag feature. I'm going to have more time in May for ikiwiki, I hope. > Well, certainly. Basically it's just inline + tag feature. I'm going to have more time in May for ikiwiki, I hope.
> > Any news about that ?

View File

@ -1,18 +1,22 @@
[[!meta title="Jason Blevins"]] [[!meta title="Jason Blevins"]]
I'm currently hosting a private ikiwiki for keeping research notes I'm currently hosting a private ikiwiki for keeping research notes
which, with some patches and a (currently unreleased) plugin, will which, with some patches and a plugin (below), will
convert inline LaTeX expressions to MathML. I'm working towards a convert inline LaTeX expressions to MathML. I'm working towards a
patchset and instructions for others to do the same. patchset and instructions for others to do the same.
There is one thing that needs to be decided first: whether or not to I've setup a test ikiwiki [here](http://xbeta.org/colab/) where I've
include [[sanitization|todo/svg]] of MathML in htmlscrubber (and while started keeping a few notes on my progress. There is an example of
we're at it, why not SVG). inline SVG on the homepage (note that the logo scales along with the
font size). There are a few example mathematical expressions in the
[sandbox](http://xbeta.org/colab/sandbox/). The MathML is generated
automatically from inline LaTeX expressions using an experimental
plugin I'm working on.
My (also MathML-enabled) homepage: <http://jblevins.org/> (still using My (also MathML-enabled) homepage: <http://jblevins.org/> (still using
Blosxom...maybe one day I'll convert it to ikiwiki...) Blosxom...maybe one day I'll convert it to ikiwiki...)
Current issues of interest: Current ikiwki issues of interest:
* [[bugs/recentchanges_feed_links]] * [[bugs/recentchanges_feed_links]]
* [[bugs/HTML_inlined_into_Atom_not_necessarily_well-formed]] * [[bugs/HTML_inlined_into_Atom_not_necessarily_well-formed]]
@ -20,3 +24,63 @@ Current issues of interest:
* [[todo/BibTeX]] * [[todo/BibTeX]]
* [[todo/svg]] * [[todo/svg]]
* [[todo/Option_to_make_title_an_h1?]] * [[todo/Option_to_make_title_an_h1?]]
* [[bugs/SVG_files_not_recognized_as_images]]
## Plugins
These plugins are experimental. Use them at your own risk. Read the
perldoc documentation for more details.
* [mdwn_itex][] - Works with the `mdwn` plugin to convert inline LaTeX
expressions to MathML using `itex2MML`.
* [h1title][] - If present, use the leading level 1 Markdown header to
set the page title and remove it from the page body.
## MathML and SVG support
So far, I've made some notes on sanitizing MathML and SVG via
htmlscrubber on the [[todo/svg]] todo item.
I've also worked out some content-negotiation issues. First of all,
one needs to modify the default templates to use the
XHTML+MathML+SVG doctype (see e.g., this [patch][template-patch]).
For most browsers, the content type of the pages should be
`application/xhtml+xml`. The solution is easy if you want to
just send `application/xhtml+xml` to everybody:
just change the content type of `.html` files across the board.
However, if you want to support browsers that don't accept
`application/xhtml+xml` (and those that will but say they
don't, such as IE with the MathPlayer plugin), then one
needs a `mod_rewrite` rule like the following:
RewriteCond %{HTTP_ACCEPT} application\/xhtml\+xml [OR]
RewriteCond %{HTTP_USER_AGENT} (W3C.*Validator|MathPlayer)
RewriteRule \.html$ - [T=application/xhtml+xml]
This solves the problem of MathML and inline SVG in static pages
but some additional work is required for dynamically generated
pages, like page previews, that are generated by `ikiwiki.cgi`.
We need to allow `ikiwiki.cgi` to set the content type dynamically
based on the `HTTP_CONTENT_TYPE` environment variable
(e.g., with the following [patch][cgi-patch]). Then, the following
rewrite rules can pass the correct content type to ikiwiki:
RewriteCond %{HTTP_ACCEPT} application\/xhtml\+xml [OR]
RewriteCond %{HTTP_USER_AGENT} (W3C.*Validator|MathPlayer)
RewriteRule ikiwiki.cgi$ - [T=application/xhtml+xml]
One final critical issue is that a production-ready setup needs to
implement some sort of on-the-fly error handling. If a user submits
an invalid LaTeX expression or SVG code (not malicious, just invalid)
and saves the page, then browsers like Firefox will halt processing of
the page, preventing any further viewing or editing. A less than
optimal solution is to force users to preview the page before saving.
That way if someone introduces invalid XHTML then they can't save the
page in the first place (unless they post directly to the right URL).
[template-patch]: http://xbeta.org/gitweb/?p=xbeta/ikiwiki.git;a=blobdiff;f=templates/page.tmpl;h=380ef699fa72223744eb5c1ee655fb79aa6bce5b;hp=9084ba7e11e92a10528b2ab12c9b73cf7b0f40a7;hb=416d5d1b15b94e604442e4e209a30dee4b77b684;hpb=ececf4fb8766a4ff7eff943b3ef600be81a0df49
[cgi-patch]: http://xbeta.org/gitweb/?p=xbeta/ikiwiki.git;a=commitdiff;h=fa538c375250ab08f396634135f7d79fce2a9d36
[mdwn_itex]: http://code.jblevins.org/ikiwiki/plugins/mdwn_itex.pm
[h1title]: http://code.jblevins.org/ikiwiki/plugins/h1title.pm

View File

@ -0,0 +1 @@
[[!meta redir=users/jasonblevins]]

View File

@ -0,0 +1,3 @@
Jan Walzer started to look on ikiwiki just recently.
Read [here](http://wa.lzer.net/wiki/ikiwiki/whyikiwiki/) why he uses ikiwiki.

View File

@ -1 +1,10 @@
I have a keyboard and I'm not afraid to use it. I used IkiWiki to supplant some custom journal software. I like that it uses
the filesystem, my intent is to make journal entries as future-proof as
possible. I'll probably start using it for generation of entire sites, soon.
Things generated by IkiWiki with some fancypants stylesheets:
* [woozle.org](http://woozle.org/)
* [My page](http://woozle.org/~neale/)
* [Amy's blog](http://woozle.org/~aim/blog/)
* [Heidi's blog](http://woozle.org/~heidi/blog/)

View File

@ -0,0 +1 @@
Hi, I'm Nolan. I'll add more later.

View File

@ -20,3 +20,9 @@ Various channels to contact me:
- mobile: +33 621-964-362 (I only anwser to people I know though) - mobile: +33 621-964-362 (I only anwser to people I know though)
Voila. Voila.
## Plans
I am planning to make a presentation of [[ikiwiki]]to my [local LUG](http://lolica.org) for our next montly meeting. Any help would be greatly appreciated.
We are discussing to replace our old unmaintained (and unmaintainable) [SPIP](http://spip.net) website with a wiki. This is why I would like using ikiwiki ;)

View File

@ -0,0 +1,18 @@
How do you edit this wiki (I mean [ikiwiki]) without the web browser ? Is there a way to git clone/pull/push and thus to use our favorite [text editor](http://www.gnu.org/software/emacs) ? --[[xma]]
> You can clone ikiwiki's [[git]] repo. I have not implemented a way to
> allow users to push doc wiki only changesets anonymously, but you can
> mails changesets to me. --[[Joey]]
> > How can I send you the changesets ? (git command) --[[xma]]
> > > `git-format-patch` --[[Joey]]
> > > > Glad to hear I can mail changesets to you, since I wrote the [[todo/applydiff_plugin]] wishlist entry. --[[intrigeri]]
> It would be nice to have a git recieve hook that
> checked that a commit contained only changes to .mdwn or other allowed
> extensions.. if someone writes up a good one, I'd be willing to deploy it
> for ikiwiki. --[[Joey]]
> > I'll think about it. It may solve some of my offline-being issues. --[[intrigeri]]
>>>> Now developed! --[[Joey]]

View File

@ -98,7 +98,7 @@ sub getconfig () { #{{{
"help|h" => sub { $SIG{__WARN__}=sub {}; die }, "help|h" => sub { $SIG{__WARN__}=sub {}; die },
) || usage(); ) || usage();
if (! $config{setup} && ! $config{render}) { if (! $config{setup}) {
loadplugins(); loadplugins();
if (@ARGV == 2) { if (@ARGV == 2) {
$config{srcdir} = possibly_foolish_untaint(shift @ARGV); $config{srcdir} = possibly_foolish_untaint(shift @ARGV);
@ -118,6 +118,7 @@ sub getconfig () { #{{{
error("WRAPPED_OPTIONS: $@"); error("WRAPPED_OPTIONS: $@");
} }
delete $ENV{WRAPPED_OPTIONS}; delete $ENV{WRAPPED_OPTIONS};
loadplugins(); loadplugins();
checkconfig(); checkconfig();
} }
@ -145,7 +146,8 @@ sub main () { #{{{
if exists $config{setupsyslog}; if exists $config{setupsyslog};
delete @config{qw(setupsyslog setupverbose wrappers genwrappers rebuild)}; delete @config{qw(setupsyslog setupverbose wrappers genwrappers rebuild)};
checkconfig(); checkconfig();
if (! $config{cgi} && ! $config{post_commit}) { if (! $config{cgi} && ! $config{post_commit} &&
! $config{test_receive}) {
$config{post_commit}=1; $config{post_commit}=1;
} }
gen_wrapper(); gen_wrapper();
@ -154,13 +156,14 @@ sub main () { #{{{
} }
# setup implies a wiki rebuild by default # setup implies a wiki rebuild by default
if (! $config{refresh}) { if (! $config{refresh} && ! $config{render}) {
$config{rebuild}=1; $config{rebuild}=1;
} }
} }
if ($config{dumpsetup}) { if ($config{dumpsetup}) {
$config{srdir}=$config{destdir}=""; $config{srdir}=$config{destdir}="";
$config{syslog}=1 if $config{setupsyslog};
require IkiWiki::Setup; require IkiWiki::Setup;
IkiWiki::Setup::dump($config{dumpsetup}); IkiWiki::Setup::dump($config{dumpsetup});
} }
@ -183,6 +186,10 @@ sub main () { #{{{
elsif ($config{post_commit} && ! commit_hook_enabled()) { elsif ($config{post_commit} && ! commit_hook_enabled()) {
# do nothing # do nothing
} }
elsif ($config{test_receive}) {
require IkiWiki::Receive;
IkiWiki::Receive::test();
}
else { else {
if ($config{rebuild}) { if ($config{rebuild}) {
debug(gettext("rebuilding wiki..")); debug(gettext("rebuilding wiki.."));

View File

@ -101,16 +101,15 @@ sub import {
# stage of ikiwiki. # stage of ikiwiki.
rpc_call("hook", type => "preprocess", id => "externaldemo", call => "preprocess"); rpc_call("hook", type => "preprocess", id => "externaldemo", call => "preprocess");
# Here's an example of how to inject an arbitrary function into
# ikiwiki. Ikiwiki will be able to call bob() just like any other
# function. Note use of automatic memoization.
rpc_call("inject", name => "IkiWiki::bob", call => "bob",
memoize => 1);
# Here's an exmaple of how to access values in %IkiWiki::config. # Here's an exmaple of how to access values in %IkiWiki::config.
print STDERR "url is set to: ". print STDERR "url is set to: ".
rpc_call("getvar", "config", "url")."\n"; rpc_call("getvar", "config", "url")."\n";
# Here's an example of how to inject an arbitrary function into
# ikiwiki. Note use of automatic memoization.
rpc_call("inject", name => "IkiWiki::bob",
call => "formattime", memoize => 1);
print STDERR "externaldemo plugin successfully imported\n"; print STDERR "externaldemo plugin successfully imported\n";
} }

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ikiwiki-bg\n" "Project-Id-Version: ikiwiki-bg\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-19 19:12-0400\n" "POT-Creation-Date: 2008-10-31 16:37-0400\n"
"PO-Revision-Date: 2007-01-12 01:19+0200\n" "PO-Revision-Date: 2007-01-12 01:19+0200\n"
"Last-Translator: Damyan Ivanov <dam@modsodtsys.com>\n" "Last-Translator: Damyan Ivanov <dam@modsodtsys.com>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n" "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
@ -49,7 +49,7 @@ msgstr "Предпочитанията са запазени."
msgid "You are banned." msgid "You are banned."
msgstr "Достъпът ви е забранен." msgstr "Достъпът ви е забранен."
#: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1173 #: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1182
msgid "Error" msgid "Error"
msgstr "Грешка" msgstr "Грешка"
@ -131,7 +131,7 @@ msgstr "създаване на нова страницa „%s”"
msgid "deleting bucket.." msgid "deleting bucket.."
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:199 #: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206
msgid "done" msgid "done"
msgstr "готово" msgstr "готово"
@ -212,6 +212,10 @@ msgstr ""
msgid "removing old preview %s" msgid "removing old preview %s"
msgstr "премахване на старата страница „%s”" msgstr "премахване на старата страница „%s”"
#: ../IkiWiki/Plugin/editpage.pm:125
msgid "bad page name"
msgstr ""
#: ../IkiWiki/Plugin/editpage.pm:141 #: ../IkiWiki/Plugin/editpage.pm:141
#, perl-format #, perl-format
msgid "%s is not an editable page" msgid "%s is not an editable page"
@ -249,10 +253,34 @@ msgstr ""
msgid "failed to process" msgid "failed to process"
msgstr "грешка при обработване на шаблона" msgstr "грешка при обработване на шаблона"
#: ../IkiWiki/Plugin/format.pm:22
msgid "must specify format and text"
msgstr ""
#: ../IkiWiki/Plugin/format.pm:25
#, perl-format
msgid "unsupported page format %s"
msgstr ""
#: ../IkiWiki/Plugin/fortune.pm:27 #: ../IkiWiki/Plugin/fortune.pm:27
msgid "fortune failed" msgid "fortune failed"
msgstr "грешшка в приставката „fortune”" msgstr "грешшка в приставката „fortune”"
#: ../IkiWiki/Plugin/git.pm:618 ../IkiWiki/Plugin/git.pm:636
#: ../IkiWiki/Receive.pm:129
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:658
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:662
msgid "you are not allowed to change file modes"
msgstr ""
#: ../IkiWiki/Plugin/google.pm:27 #: ../IkiWiki/Plugin/google.pm:27
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "Must specify %s when using the google search plugin" msgid "Must specify %s when using the google search plugin"
@ -667,11 +695,11 @@ msgstr ""
msgid "search" msgid "search"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/shortcut.pm:27 #: ../IkiWiki/Plugin/shortcut.pm:28
msgid "shortcut plugin will not work without a shortcuts.mdwn" msgid "shortcut plugin will not work without a shortcuts.mdwn"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/shortcut.pm:36 #: ../IkiWiki/Plugin/shortcut.pm:38
#, fuzzy #, fuzzy
msgid "missing name or url parameter" msgid "missing name or url parameter"
msgstr "препратката няма указани параметрите „name” или „url”" msgstr "препратката няма указани параметрите „name” или „url”"
@ -679,7 +707,7 @@ msgstr "препратката няма указани параметрите
#. translators: This is used to display what shortcuts are defined. #. translators: This is used to display what shortcuts are defined.
#. translators: First parameter is the name of the shortcut, the second #. translators: First parameter is the name of the shortcut, the second
#. translators: is an URL. #. translators: is an URL.
#: ../IkiWiki/Plugin/shortcut.pm:45 #: ../IkiWiki/Plugin/shortcut.pm:48
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "shortcut %s points to <i>%s</i>" msgid "shortcut %s points to <i>%s</i>"
msgstr "препратката „%s” сочи към „%s”" msgstr "препратката „%s” сочи към „%s”"
@ -816,6 +844,16 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)" msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr "" msgstr ""
#: ../IkiWiki/Receive.pm:35
#, perl-format
msgid "cannot determine id of untrusted committer %s"
msgstr ""
#: ../IkiWiki/Receive.pm:85
#, fuzzy, perl-format
msgid "bad file name %s"
msgstr "пропускане на невалидното име на файл „%s”"
#: ../IkiWiki/Render.pm:253 #: ../IkiWiki/Render.pm:253
#, perl-format #, perl-format
msgid "" msgid ""
@ -908,19 +946,19 @@ msgstr "не е указан файл на обвивката"
#. translators: The first parameter is a filename, and the second is #. translators: The first parameter is a filename, and the second is
#. translators: a (probably not translated) error message. #. translators: a (probably not translated) error message.
#: ../IkiWiki/Wrapper.pm:48 #: ../IkiWiki/Wrapper.pm:79
#, perl-format #, perl-format
msgid "failed to write %s: %s" msgid "failed to write %s: %s"
msgstr "грешка при запис на файла „%s”: %s" msgstr "грешка при запис на файла „%s”: %s"
#. translators: The parameter is a C filename. #. translators: The parameter is a C filename.
#: ../IkiWiki/Wrapper.pm:99 #: ../IkiWiki/Wrapper.pm:135
#, perl-format #, perl-format
msgid "failed to compile %s" msgid "failed to compile %s"
msgstr "крешка при компилиране на файла %s" msgstr "крешка при компилиране на файла %s"
#. translators: The parameter is a filename. #. translators: The parameter is a filename.
#: ../IkiWiki/Wrapper.pm:119 #: ../IkiWiki/Wrapper.pm:155
#, perl-format #, perl-format
msgid "successfully generated %s" msgid "successfully generated %s"
msgstr "успешно генериране на %s" msgstr "успешно генериране на %s"
@ -937,39 +975,39 @@ msgstr ""
msgid "usage: --set var=value" msgid "usage: --set var=value"
msgstr "" msgstr ""
#: ../ikiwiki.in:137 #: ../ikiwiki.in:138
msgid "generating wrappers.." msgid "generating wrappers.."
msgstr "генериране на обвивки..." msgstr "генериране на обвивки..."
#: ../ikiwiki.in:188 #: ../ikiwiki.in:195
msgid "rebuilding wiki.." msgid "rebuilding wiki.."
msgstr "обновяване на уики..." msgstr "обновяване на уики..."
#: ../ikiwiki.in:191 #: ../ikiwiki.in:198
msgid "refreshing wiki.." msgid "refreshing wiki.."
msgstr "осъвременяване на уики..." msgstr "осъвременяване на уики..."
#: ../IkiWiki.pm:458 #: ../IkiWiki.pm:466
msgid "Must specify url to wiki with --url when using --cgi" msgid "Must specify url to wiki with --url when using --cgi"
msgstr "" msgstr ""
"При използване на пареметъра „--cgi” е необходимо да се укаже и " "При използване на пареметъра „--cgi” е необходимо да се укаже и "
"местоположението на уикито чрез параметъра „--url”" "местоположението на уикито чрез параметъра „--url”"
#: ../IkiWiki.pm:504 #: ../IkiWiki.pm:512
msgid "cannot use multiple rcs plugins" msgid "cannot use multiple rcs plugins"
msgstr "" msgstr ""
#: ../IkiWiki.pm:533 #: ../IkiWiki.pm:541
#, perl-format #, perl-format
msgid "failed to load external plugin needed for %s plugin: %s" msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "" msgstr ""
#: ../IkiWiki.pm:1156 #: ../IkiWiki.pm:1165
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "preprocessing loop detected on %s at depth %i" msgid "preprocessing loop detected on %s at depth %i"
msgstr "открита е циклична завидимост при %s на „%s” на дълбочина %i" msgstr "открита е циклична завидимост при %s на „%s” на дълбочина %i"
#: ../IkiWiki.pm:1665 #: ../IkiWiki.pm:1678
msgid "yes" msgid "yes"
msgstr "" msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ikiwiki\n" "Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-19 19:12-0400\n" "POT-Creation-Date: 2008-10-31 16:37-0400\n"
"PO-Revision-Date: 2007-05-09 21:21+0200\n" "PO-Revision-Date: 2007-05-09 21:21+0200\n"
"Last-Translator: Miroslav Kure <kurem@debian.cz>\n" "Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n" "Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
@ -47,7 +47,7 @@ msgstr "Nastavení uloženo."
msgid "You are banned." msgid "You are banned."
msgstr "Jste vyhoštěni." msgstr "Jste vyhoštěni."
#: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1173 #: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1182
msgid "Error" msgid "Error"
msgstr "Chyba" msgstr "Chyba"
@ -128,7 +128,7 @@ msgstr "vytvářím novou stránku %s"
msgid "deleting bucket.." msgid "deleting bucket.."
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:199 #: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206
msgid "done" msgid "done"
msgstr "hotovo" msgstr "hotovo"
@ -209,6 +209,10 @@ msgstr ""
msgid "removing old preview %s" msgid "removing old preview %s"
msgstr "odstraňuji starou stránku %s" msgstr "odstraňuji starou stránku %s"
#: ../IkiWiki/Plugin/editpage.pm:125
msgid "bad page name"
msgstr ""
#: ../IkiWiki/Plugin/editpage.pm:141 #: ../IkiWiki/Plugin/editpage.pm:141
#, perl-format #, perl-format
msgid "%s is not an editable page" msgid "%s is not an editable page"
@ -246,10 +250,34 @@ msgstr ""
msgid "failed to process" msgid "failed to process"
msgstr "nepodařilo se zpracovat:" msgstr "nepodařilo se zpracovat:"
#: ../IkiWiki/Plugin/format.pm:22
msgid "must specify format and text"
msgstr ""
#: ../IkiWiki/Plugin/format.pm:25
#, perl-format
msgid "unsupported page format %s"
msgstr ""
#: ../IkiWiki/Plugin/fortune.pm:27 #: ../IkiWiki/Plugin/fortune.pm:27
msgid "fortune failed" msgid "fortune failed"
msgstr "fortune selhal" msgstr "fortune selhal"
#: ../IkiWiki/Plugin/git.pm:618 ../IkiWiki/Plugin/git.pm:636
#: ../IkiWiki/Receive.pm:129
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:658
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:662
msgid "you are not allowed to change file modes"
msgstr ""
#: ../IkiWiki/Plugin/google.pm:27 #: ../IkiWiki/Plugin/google.pm:27
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "Must specify %s when using the google search plugin" msgid "Must specify %s when using the google search plugin"
@ -655,18 +683,18 @@ msgstr ""
msgid "search" msgid "search"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/shortcut.pm:27 #: ../IkiWiki/Plugin/shortcut.pm:28
msgid "shortcut plugin will not work without a shortcuts.mdwn" msgid "shortcut plugin will not work without a shortcuts.mdwn"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/shortcut.pm:36 #: ../IkiWiki/Plugin/shortcut.pm:38
msgid "missing name or url parameter" msgid "missing name or url parameter"
msgstr "chybí parametr jméno nebo url" msgstr "chybí parametr jméno nebo url"
#. translators: This is used to display what shortcuts are defined. #. translators: This is used to display what shortcuts are defined.
#. translators: First parameter is the name of the shortcut, the second #. translators: First parameter is the name of the shortcut, the second
#. translators: is an URL. #. translators: is an URL.
#: ../IkiWiki/Plugin/shortcut.pm:45 #: ../IkiWiki/Plugin/shortcut.pm:48
#, perl-format #, perl-format
msgid "shortcut %s points to <i>%s</i>" msgid "shortcut %s points to <i>%s</i>"
msgstr "zkratka %s odkazuje na <i>%s</i>" msgstr "zkratka %s odkazuje na <i>%s</i>"
@ -797,6 +825,16 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)" msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr "" msgstr ""
#: ../IkiWiki/Receive.pm:35
#, perl-format
msgid "cannot determine id of untrusted committer %s"
msgstr ""
#: ../IkiWiki/Receive.pm:85
#, fuzzy, perl-format
msgid "bad file name %s"
msgstr "přeskakuji chybné jméno souboru %s"
#: ../IkiWiki/Render.pm:253 #: ../IkiWiki/Render.pm:253
#, perl-format #, perl-format
msgid "" msgid ""
@ -889,19 +927,19 @@ msgstr "jméno souboru s obalem nebylo zadáno"
#. translators: The first parameter is a filename, and the second is #. translators: The first parameter is a filename, and the second is
#. translators: a (probably not translated) error message. #. translators: a (probably not translated) error message.
#: ../IkiWiki/Wrapper.pm:48 #: ../IkiWiki/Wrapper.pm:79
#, perl-format #, perl-format
msgid "failed to write %s: %s" msgid "failed to write %s: %s"
msgstr "nelze zapsat %s: %s" msgstr "nelze zapsat %s: %s"
#. translators: The parameter is a C filename. #. translators: The parameter is a C filename.
#: ../IkiWiki/Wrapper.pm:99 #: ../IkiWiki/Wrapper.pm:135
#, perl-format #, perl-format
msgid "failed to compile %s" msgid "failed to compile %s"
msgstr "nelze zkompilovat %s" msgstr "nelze zkompilovat %s"
#. translators: The parameter is a filename. #. translators: The parameter is a filename.
#: ../IkiWiki/Wrapper.pm:119 #: ../IkiWiki/Wrapper.pm:155
#, perl-format #, perl-format
msgid "successfully generated %s" msgid "successfully generated %s"
msgstr "%s byl úspěšně vytvořen" msgstr "%s byl úspěšně vytvořen"
@ -918,37 +956,37 @@ msgstr ""
msgid "usage: --set var=value" msgid "usage: --set var=value"
msgstr "" msgstr ""
#: ../ikiwiki.in:137 #: ../ikiwiki.in:138
msgid "generating wrappers.." msgid "generating wrappers.."
msgstr "generuji obaly..." msgstr "generuji obaly..."
#: ../ikiwiki.in:188 #: ../ikiwiki.in:195
msgid "rebuilding wiki.." msgid "rebuilding wiki.."
msgstr "znovu vytvářím wiki..." msgstr "znovu vytvářím wiki..."
#: ../ikiwiki.in:191 #: ../ikiwiki.in:198
msgid "refreshing wiki.." msgid "refreshing wiki.."
msgstr "obnovuji wiki..." msgstr "obnovuji wiki..."
#: ../IkiWiki.pm:458 #: ../IkiWiki.pm:466
msgid "Must specify url to wiki with --url when using --cgi" msgid "Must specify url to wiki with --url when using --cgi"
msgstr "Při použití --cgi musíte pomocí --url zadat url k wiki" msgstr "Při použití --cgi musíte pomocí --url zadat url k wiki"
#: ../IkiWiki.pm:504 #: ../IkiWiki.pm:512
msgid "cannot use multiple rcs plugins" msgid "cannot use multiple rcs plugins"
msgstr "" msgstr ""
#: ../IkiWiki.pm:533 #: ../IkiWiki.pm:541
#, perl-format #, perl-format
msgid "failed to load external plugin needed for %s plugin: %s" msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "" msgstr ""
#: ../IkiWiki.pm:1156 #: ../IkiWiki.pm:1165
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "preprocessing loop detected on %s at depth %i" msgid "preprocessing loop detected on %s at depth %i"
msgstr "Byla rozpoznána smyčka direktivy %s na %s v hloubce %i" msgstr "Byla rozpoznána smyčka direktivy %s na %s v hloubce %i"
#: ../IkiWiki.pm:1665 #: ../IkiWiki.pm:1678
msgid "yes" msgid "yes"
msgstr "" msgstr ""

147
po/da.po
View File

@ -7,14 +7,14 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ikiwiki\n" "Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-19 19:12-0400\n" "POT-Creation-Date: 2008-10-31 16:37-0400\n"
"PO-Revision-Date: 2008-08-11 01:04+0200\n" "PO-Revision-Date: 2008-10-22 19:13+0100\n"
"Last-Translator: Jonas Smedegaard <dr@jones.dk>\n" "Last-Translator: Jonas Smedegaard <dr@jones.dk>\n"
"Language-Team: None\n" "Language-Team: None\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: Danish\n" "X-Poedit-Language: Danish\n"
"X-Poedit-Country: DENMARK\n" "X-Poedit-Country: DENMARK\n"
"X-Poedit-SourceCharset: utf-8\n" "X-Poedit-SourceCharset: utf-8\n"
@ -51,7 +51,7 @@ msgstr "Indstillinger gemt"
msgid "You are banned." msgid "You are banned."
msgstr "Du er banlyst." msgstr "Du er banlyst."
#: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1173 #: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1182
msgid "Error" msgid "Error"
msgstr "Fejl" msgstr "Fejl"
@ -132,7 +132,7 @@ msgstr "opretter ny side %s"
msgid "deleting bucket.." msgid "deleting bucket.."
msgstr "sletter bundt.." msgstr "sletter bundt.."
#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:199 #: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206
msgid "done" msgid "done"
msgstr "færdig" msgstr "færdig"
@ -207,9 +207,14 @@ msgid "no text was copied in this page with id %s"
msgstr "ingen tekst blev kopieret i denne side med id %s" msgstr "ingen tekst blev kopieret i denne side med id %s"
#: ../IkiWiki/Plugin/editpage.pm:40 #: ../IkiWiki/Plugin/editpage.pm:40
#, fuzzy, perl-format #, perl-format
msgid "removing old preview %s" msgid "removing old preview %s"
msgstr "fjerner gammel side %s" msgstr "fjerner gammelt smugkig %s"
#: ../IkiWiki/Plugin/editpage.pm:125
#, fuzzy
msgid "bad page name"
msgstr "dårligt vedhæftningsfilnavn"
#: ../IkiWiki/Plugin/editpage.pm:141 #: ../IkiWiki/Plugin/editpage.pm:141
#, perl-format #, perl-format
@ -245,18 +250,43 @@ msgstr "redigeringsskabelon %s registreret for %s"
msgid "failed to process" msgid "failed to process"
msgstr "dannelsen mislykkedes" msgstr "dannelsen mislykkedes"
#: ../IkiWiki/Plugin/format.pm:22
msgid "must specify format and text"
msgstr ""
#: ../IkiWiki/Plugin/format.pm:25
#, fuzzy, perl-format
msgid "unsupported page format %s"
msgstr "revisionskontrolsystem %s ikke understøttet"
#: ../IkiWiki/Plugin/fortune.pm:27 #: ../IkiWiki/Plugin/fortune.pm:27
msgid "fortune failed" msgid "fortune failed"
msgstr "spådom (fortune) fejlede" msgstr "spådom (fortune) fejlede"
#: ../IkiWiki/Plugin/google.pm:27 #: ../IkiWiki/Plugin/git.pm:618 ../IkiWiki/Plugin/git.pm:636
#: ../IkiWiki/Receive.pm:129
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "you are not allowed to change %s"
msgstr "du er ikke logget på som en administrator"
#: ../IkiWiki/Plugin/git.pm:658
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:662
#, fuzzy
msgid "you are not allowed to change file modes"
msgstr "du er ikke logget på som en administrator"
#: ../IkiWiki/Plugin/google.pm:27
#, perl-format
msgid "Must specify %s when using the google search plugin" msgid "Must specify %s when using the google search plugin"
msgstr "Skal angive %s når søgeudvidelsen bruges" msgstr "Skal angive %s når google søgeudvidelsen bruges"
#: ../IkiWiki/Plugin/google.pm:31 #: ../IkiWiki/Plugin/google.pm:31
msgid "Failed to parse url, cannot determine domain name" msgid "Failed to parse url, cannot determine domain name"
msgstr "" msgstr "Tolkning af URL mislykkedes, kan ikke afgøre domænenavn"
#: ../IkiWiki/Plugin/googlecalendar.pm:32 #: ../IkiWiki/Plugin/googlecalendar.pm:32
msgid "failed to find url in html" msgid "failed to find url in html"
@ -300,9 +330,8 @@ msgid "Must specify url to wiki with --url when using --rss or --atom"
msgstr "Skal angive url til wiki med --url når --rss eller --atom anvendes" msgstr "Skal angive url til wiki med --url når --rss eller --atom anvendes"
#: ../IkiWiki/Plugin/inline.pm:139 #: ../IkiWiki/Plugin/inline.pm:139
#, fuzzy
msgid "page editing not allowed" msgid "page editing not allowed"
msgstr "ring af henvisninger er ikke tilladt" msgstr "sideredigering er ikke tilladt"
#: ../IkiWiki/Plugin/inline.pm:156 #: ../IkiWiki/Plugin/inline.pm:156
msgid "missing pages parameter" msgid "missing pages parameter"
@ -335,9 +364,9 @@ msgid "failed to run dot"
msgstr "dot-kørsel mislykkedes" msgstr "dot-kørsel mislykkedes"
#: ../IkiWiki/Plugin/lockedit.pm:49 ../IkiWiki/Plugin/lockedit.pm:66 #: ../IkiWiki/Plugin/lockedit.pm:49 ../IkiWiki/Plugin/lockedit.pm:66
#, fuzzy, perl-format #, perl-format
msgid "%s is locked and cannot be edited" msgid "%s is locked and cannot be edited"
msgstr "%s er låst af %s og kan ikke redigeres" msgstr "%s er låst og kan ikke redigeres"
#: ../IkiWiki/Plugin/mdwn.pm:44 #: ../IkiWiki/Plugin/mdwn.pm:44
msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed" msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed"
@ -535,13 +564,13 @@ msgid "at noon on %A"
msgstr "midt på dagen %A" msgstr "midt på dagen %A"
#: ../IkiWiki/Plugin/progress.pm:34 #: ../IkiWiki/Plugin/progress.pm:34
#, fuzzy, perl-format #, perl-format
msgid "illegal percent value %s" msgid "illegal percent value %s"
msgstr "ugyldigt navn" msgstr "ugyldigt procentværdi %s"
#: ../IkiWiki/Plugin/progress.pm:59 #: ../IkiWiki/Plugin/progress.pm:59
msgid "need either `percent` or `totalpages` and `donepages` parameters" msgid "need either `percent` or `totalpages` and `donepages` parameters"
msgstr "" msgstr "Kræver enten parametre `percent` eller `totalpages og `donepages`"
#: ../IkiWiki/Plugin/recentchanges.pm:100 #: ../IkiWiki/Plugin/recentchanges.pm:100
msgid "missing page" msgid "missing page"
@ -615,7 +644,7 @@ msgstr "omdøb %s"
#: ../IkiWiki/Plugin/rename.pm:138 #: ../IkiWiki/Plugin/rename.pm:138
msgid "Also rename SubPages and attachments" msgid "Also rename SubPages and attachments"
msgstr "" msgstr "Omdøb også UnderSider og vedhæftninger"
#: ../IkiWiki/Plugin/rename.pm:224 #: ../IkiWiki/Plugin/rename.pm:224
msgid "Only one attachment can be renamed at a time." msgid "Only one attachment can be renamed at a time."
@ -649,18 +678,18 @@ msgstr "behøver Digest::SHA1 til indeks %s"
msgid "search" msgid "search"
msgstr "søg" msgstr "søg"
#: ../IkiWiki/Plugin/shortcut.pm:27 #: ../IkiWiki/Plugin/shortcut.pm:28
msgid "shortcut plugin will not work without a shortcuts.mdwn" msgid "shortcut plugin will not work without a shortcuts.mdwn"
msgstr "genvejsudvidelsen vil ikke fungere uden en shortcuts.mdwn" msgstr "genvejsudvidelsen vil ikke fungere uden en shortcuts.mdwn"
#: ../IkiWiki/Plugin/shortcut.pm:36 #: ../IkiWiki/Plugin/shortcut.pm:38
msgid "missing name or url parameter" msgid "missing name or url parameter"
msgstr "manglende navn eller url parameter" msgstr "manglende navn eller url parameter"
#. translators: This is used to display what shortcuts are defined. #. translators: This is used to display what shortcuts are defined.
#. translators: First parameter is the name of the shortcut, the second #. translators: First parameter is the name of the shortcut, the second
#. translators: is an URL. #. translators: is an URL.
#: ../IkiWiki/Plugin/shortcut.pm:45 #: ../IkiWiki/Plugin/shortcut.pm:48
#, perl-format #, perl-format
msgid "shortcut %s points to <i>%s</i>" msgid "shortcut %s points to <i>%s</i>"
msgstr "genvej %s viser til <i>%s</i>" msgstr "genvej %s viser til <i>%s</i>"
@ -749,52 +778,67 @@ msgstr "billedopbygning fra kode mislykkedes"
#: ../IkiWiki/Plugin/websetup.pm:89 #: ../IkiWiki/Plugin/websetup.pm:89
msgid "plugin" msgid "plugin"
msgstr "" msgstr "udvidelse"
#: ../IkiWiki/Plugin/websetup.pm:108 #: ../IkiWiki/Plugin/websetup.pm:108
#, fuzzy, perl-format #, perl-format
msgid "enable %s?" msgid "enable %s?"
msgstr "omdøb %s" msgstr "aktivér %s?"
#: ../IkiWiki/Plugin/websetup.pm:236 #: ../IkiWiki/Plugin/websetup.pm:236
msgid "you are not logged in as an admin" msgid "you are not logged in as an admin"
msgstr "" msgstr "du er ikke logget på som en administrator"
#: ../IkiWiki/Plugin/websetup.pm:240 #: ../IkiWiki/Plugin/websetup.pm:240
msgid "setup file for this wiki is not known" msgid "setup file for this wiki is not known"
msgstr "" msgstr "opsætningsfilen for denne wiki er ukendt"
#: ../IkiWiki/Plugin/websetup.pm:256 #: ../IkiWiki/Plugin/websetup.pm:256
#, fuzzy
msgid "main" msgid "main"
msgstr "Admin" msgstr "primær"
#: ../IkiWiki/Plugin/websetup.pm:257 #: ../IkiWiki/Plugin/websetup.pm:257
msgid "plugins" msgid "plugins"
msgstr "" msgstr "udvidelser"
#: ../IkiWiki/Plugin/websetup.pm:395 #: ../IkiWiki/Plugin/websetup.pm:395
msgid "" msgid ""
"The configuration changes shown below require a wiki rebuild to take effect." "The configuration changes shown below require a wiki rebuild to take effect."
msgstr "" msgstr ""
"Opsætningsændringerne vist nedenfor kræver wiki-genopbygning for at træde i "
"kraft."
#: ../IkiWiki/Plugin/websetup.pm:399 #: ../IkiWiki/Plugin/websetup.pm:399
msgid "" msgid ""
"For the configuration changes shown below to fully take effect, you may need " "For the configuration changes shown below to fully take effect, you may need "
"to rebuild the wiki." "to rebuild the wiki."
msgstr "" msgstr ""
"For at opsætningsændringerne vist nedenfor træder fuldt ud i kraft, skal du "
"muligvis genopbygge wikien."
#: ../IkiWiki/Plugin/websetup.pm:433 #: ../IkiWiki/Plugin/websetup.pm:433
#, perl-format #, perl-format
msgid "<p class=\"error\">Error: %s exited nonzero (%s)" msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr "<p class=\"error\">Fejl: %s sluttede med fejl (%s)"
#: ../IkiWiki/Receive.pm:35
#, perl-format
msgid "cannot determine id of untrusted committer %s"
msgstr "" msgstr ""
#: ../IkiWiki/Receive.pm:85
#, fuzzy, perl-format
msgid "bad file name %s"
msgstr "udelader forkert filnavn %s"
#: ../IkiWiki/Render.pm:253 #: ../IkiWiki/Render.pm:253
#, perl-format #, perl-format
msgid "" msgid ""
"symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to " "symlink found in srcdir path (%s) -- set allow_symlinks_before_srcdir to "
"allow this" "allow this"
msgstr "" msgstr ""
"symbolsk lænke fundet i srcdir-sti (%s) -- sæt allow_symlinks_before_srcdir "
"for at tillade dette"
#: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:302 #: ../IkiWiki/Render.pm:277 ../IkiWiki/Render.pm:302
#, perl-format #, perl-format
@ -804,7 +848,7 @@ msgstr "udelader forkert filnavn %s"
#: ../IkiWiki/Render.pm:284 #: ../IkiWiki/Render.pm:284
#, perl-format #, perl-format
msgid "%s has multiple possible source pages" msgid "%s has multiple possible source pages"
msgstr "" msgstr "%s har flere mulige kildesider"
#: ../IkiWiki/Render.pm:360 #: ../IkiWiki/Render.pm:360
#, perl-format #, perl-format
@ -855,16 +899,16 @@ msgstr "kan ikke læse %s: %s"
#: ../IkiWiki/Setup/Automator.pm:33 #: ../IkiWiki/Setup/Automator.pm:33
msgid "you must enter a wikiname (that contains alphanumerics)" msgid "you must enter a wikiname (that contains alphanumerics)"
msgstr "" msgstr "du skal angive et wikinavn (som indeholder alfanumeriske tegn)"
#: ../IkiWiki/Setup/Automator.pm:67 #: ../IkiWiki/Setup/Automator.pm:67
#, perl-format #, perl-format
msgid "unsupported revision control system %s" msgid "unsupported revision control system %s"
msgstr "" msgstr "revisionskontrolsystem %s ikke understøttet"
#: ../IkiWiki/Setup/Automator.pm:83 #: ../IkiWiki/Setup/Automator.pm:83
msgid "failed to set up the repository with ikiwiki-makerepo" msgid "failed to set up the repository with ikiwiki-makerepo"
msgstr "" msgstr "opsætning af depotet med ikiwiki-makerepo mislykkedes"
#: ../IkiWiki/Wrapper.pm:16 #: ../IkiWiki/Wrapper.pm:16
#, perl-format #, perl-format
@ -881,19 +925,19 @@ msgstr "wrapper-navn ikke angivet"
#. translators: The first parameter is a filename, and the second is #. translators: The first parameter is a filename, and the second is
#. translators: a (probably not translated) error message. #. translators: a (probably not translated) error message.
#: ../IkiWiki/Wrapper.pm:48 #: ../IkiWiki/Wrapper.pm:79
#, perl-format #, perl-format
msgid "failed to write %s: %s" msgid "failed to write %s: %s"
msgstr "skrivning ad %s mislykkedes: %s" msgstr "skrivning ad %s mislykkedes: %s"
#. translators: The parameter is a C filename. #. translators: The parameter is a C filename.
#: ../IkiWiki/Wrapper.pm:99 #: ../IkiWiki/Wrapper.pm:135
#, perl-format #, perl-format
msgid "failed to compile %s" msgid "failed to compile %s"
msgstr "kompilering af %s mislykkedes" msgstr "kompilering af %s mislykkedes"
#. translators: The parameter is a filename. #. translators: The parameter is a filename.
#: ../IkiWiki/Wrapper.pm:119 #: ../IkiWiki/Wrapper.pm:155
#, perl-format #, perl-format
msgid "successfully generated %s" msgid "successfully generated %s"
msgstr "Korrekt bygget %s" msgstr "Korrekt bygget %s"
@ -904,65 +948,66 @@ msgstr "brug: ikiwiki [valg] kilde mål"
#: ../ikiwiki.in:14 #: ../ikiwiki.in:14
msgid " ikiwiki --setup configfile" msgid " ikiwiki --setup configfile"
msgstr "" msgstr " ikiwiki --setup opsætningsfil"
#: ../ikiwiki.in:90 #: ../ikiwiki.in:90
msgid "usage: --set var=value" msgid "usage: --set var=value"
msgstr "brug: --set var=værdi" msgstr "brug: --set var=værdi"
#: ../ikiwiki.in:137 #: ../ikiwiki.in:138
msgid "generating wrappers.." msgid "generating wrappers.."
msgstr "bygger wrappers.." msgstr "bygger wrappers.."
#: ../ikiwiki.in:188 #: ../ikiwiki.in:195
msgid "rebuilding wiki.." msgid "rebuilding wiki.."
msgstr "genopbygger wiki..." msgstr "genopbygger wiki..."
#: ../ikiwiki.in:191 #: ../ikiwiki.in:198
msgid "refreshing wiki.." msgid "refreshing wiki.."
msgstr "genopfrisker wiki..." msgstr "genopfrisker wiki..."
#: ../IkiWiki.pm:458 #: ../IkiWiki.pm:466
msgid "Must specify url to wiki with --url when using --cgi" msgid "Must specify url to wiki with --url when using --cgi"
msgstr "Skal angive url til wiki med --url når der bruges --cgi" msgstr "Skal angive url til wiki med --url når der bruges --cgi"
#: ../IkiWiki.pm:504 #: ../IkiWiki.pm:512
msgid "cannot use multiple rcs plugins" msgid "cannot use multiple rcs plugins"
msgstr "" msgstr "kan ikke bruge flere samtidige RCS-udvidelser"
#: ../IkiWiki.pm:533 #: ../IkiWiki.pm:541
#, perl-format #, perl-format
msgid "failed to load external plugin needed for %s plugin: %s" msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "" msgstr ""
"indlæsning af ekstern udvidelse krævet af udvidelsen %s mislykkedes: %s"
#: ../IkiWiki.pm:1156 #: ../IkiWiki.pm:1165
#, perl-format #, perl-format
msgid "preprocessing loop detected on %s at depth %i" msgid "preprocessing loop detected on %s at depth %i"
msgstr "forudberegningssløkke fundet på %s ved dybde %i" msgstr "forudberegningssløkke fundet på %s ved dybde %i"
#: ../IkiWiki.pm:1665 #: ../IkiWiki.pm:1678
msgid "yes" msgid "yes"
msgstr "ja" msgstr "ja"
#: ../auto.setup:16 #: ../auto.setup:16
msgid "What will the wiki be named?" msgid "What will the wiki be named?"
msgstr "" msgstr "Hvad skal wikien hedde?"
#: ../auto.setup:16 #: ../auto.setup:16
msgid "wiki" msgid "wiki"
msgstr "" msgstr "wiki"
#: ../auto.setup:18 #: ../auto.setup:18
msgid "What revision control system to use?" msgid "What revision control system to use?"
msgstr "" msgstr "Hvilket revisionskontrolsystem skal bruges?"
#: ../auto.setup:20 #: ../auto.setup:20
msgid "What wiki user (or openid) will be wiki admin?" msgid "What wiki user (or openid) will be wiki admin?"
msgstr "" msgstr "Hvilken wiki bruger (eller openid) skal være administrator?"
#: ../auto.setup:23 #: ../auto.setup:23
msgid "What is the domain name of the web server?" msgid "What is the domain name of the web server?"
msgstr "" msgstr "Hvad er domænenavnet på webserveren?"
#~ msgid "processed ok at %s" #~ msgid "processed ok at %s"
#~ msgstr "korrekt dannet ved %s" #~ msgstr "korrekt dannet ved %s"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ikiwiki 2.40\n" "Project-Id-Version: ikiwiki 2.40\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-19 19:12-0400\n" "POT-Creation-Date: 2008-10-31 16:37-0400\n"
"PO-Revision-Date: 2008-03-03 21:22+0100\n" "PO-Revision-Date: 2008-03-03 21:22+0100\n"
"Last-Translator: Kai Wasserbäch <debian@carbon-project.org>\n" "Last-Translator: Kai Wasserbäch <debian@carbon-project.org>\n"
"Language-Team: German <debian-l10n-german@lists.debian.org>\n" "Language-Team: German <debian-l10n-german@lists.debian.org>\n"
@ -47,7 +47,7 @@ msgstr "Einstellungen gespeichert."
msgid "You are banned." msgid "You are banned."
msgstr "Sie sind ausgeschlossen worden." msgstr "Sie sind ausgeschlossen worden."
#: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1173 #: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1182
msgid "Error" msgid "Error"
msgstr "Fehler" msgstr "Fehler"
@ -128,7 +128,7 @@ msgstr "erstelle neue Seite %s"
msgid "deleting bucket.." msgid "deleting bucket.."
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:199 #: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206
msgid "done" msgid "done"
msgstr "fertig" msgstr "fertig"
@ -209,6 +209,10 @@ msgstr ""
msgid "removing old preview %s" msgid "removing old preview %s"
msgstr "entferne alte Seite %s" msgstr "entferne alte Seite %s"
#: ../IkiWiki/Plugin/editpage.pm:125
msgid "bad page name"
msgstr ""
#: ../IkiWiki/Plugin/editpage.pm:141 #: ../IkiWiki/Plugin/editpage.pm:141
#, perl-format #, perl-format
msgid "%s is not an editable page" msgid "%s is not an editable page"
@ -243,10 +247,34 @@ msgstr "»edittemplate« %s registriert für %s"
msgid "failed to process" msgid "failed to process"
msgstr "Bearbeitung fehlgeschlagen" msgstr "Bearbeitung fehlgeschlagen"
#: ../IkiWiki/Plugin/format.pm:22
msgid "must specify format and text"
msgstr ""
#: ../IkiWiki/Plugin/format.pm:25
#, perl-format
msgid "unsupported page format %s"
msgstr ""
#: ../IkiWiki/Plugin/fortune.pm:27 #: ../IkiWiki/Plugin/fortune.pm:27
msgid "fortune failed" msgid "fortune failed"
msgstr "»fortune« fehlgeschlagen" msgstr "»fortune« fehlgeschlagen"
#: ../IkiWiki/Plugin/git.pm:618 ../IkiWiki/Plugin/git.pm:636
#: ../IkiWiki/Receive.pm:129
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:658
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:662
msgid "you are not allowed to change file modes"
msgstr ""
#: ../IkiWiki/Plugin/google.pm:27 #: ../IkiWiki/Plugin/google.pm:27
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "Must specify %s when using the google search plugin" msgid "Must specify %s when using the google search plugin"
@ -652,18 +680,18 @@ msgstr ""
msgid "search" msgid "search"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/shortcut.pm:27 #: ../IkiWiki/Plugin/shortcut.pm:28
msgid "shortcut plugin will not work without a shortcuts.mdwn" msgid "shortcut plugin will not work without a shortcuts.mdwn"
msgstr "das »shortcut«-Plugin funktioniert nicht ohne eine »shortcuts.mdwn«" msgstr "das »shortcut«-Plugin funktioniert nicht ohne eine »shortcuts.mdwn«"
#: ../IkiWiki/Plugin/shortcut.pm:36 #: ../IkiWiki/Plugin/shortcut.pm:38
msgid "missing name or url parameter" msgid "missing name or url parameter"
msgstr "fehlender Name oder URL-Parameter" msgstr "fehlender Name oder URL-Parameter"
#. translators: This is used to display what shortcuts are defined. #. translators: This is used to display what shortcuts are defined.
#. translators: First parameter is the name of the shortcut, the second #. translators: First parameter is the name of the shortcut, the second
#. translators: is an URL. #. translators: is an URL.
#: ../IkiWiki/Plugin/shortcut.pm:45 #: ../IkiWiki/Plugin/shortcut.pm:48
#, perl-format #, perl-format
msgid "shortcut %s points to <i>%s</i>" msgid "shortcut %s points to <i>%s</i>"
msgstr "Shortcut %s zeigt auf <i>%s</i>" msgstr "Shortcut %s zeigt auf <i>%s</i>"
@ -792,6 +820,16 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)" msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr "" msgstr ""
#: ../IkiWiki/Receive.pm:35
#, perl-format
msgid "cannot determine id of untrusted committer %s"
msgstr ""
#: ../IkiWiki/Receive.pm:85
#, fuzzy, perl-format
msgid "bad file name %s"
msgstr "überspringe fehlerhaften Dateinamen %s"
#: ../IkiWiki/Render.pm:253 #: ../IkiWiki/Render.pm:253
#, perl-format #, perl-format
msgid "" msgid ""
@ -884,19 +922,19 @@ msgstr "Dateiname des Wrappers nicht angegeben"
#. translators: The first parameter is a filename, and the second is #. translators: The first parameter is a filename, and the second is
#. translators: a (probably not translated) error message. #. translators: a (probably not translated) error message.
#: ../IkiWiki/Wrapper.pm:48 #: ../IkiWiki/Wrapper.pm:79
#, perl-format #, perl-format
msgid "failed to write %s: %s" msgid "failed to write %s: %s"
msgstr "schreiben von %s fehlgeschlagen: %s" msgstr "schreiben von %s fehlgeschlagen: %s"
#. translators: The parameter is a C filename. #. translators: The parameter is a C filename.
#: ../IkiWiki/Wrapper.pm:99 #: ../IkiWiki/Wrapper.pm:135
#, perl-format #, perl-format
msgid "failed to compile %s" msgid "failed to compile %s"
msgstr "erzeugen von %s fehlgeschlagen" msgstr "erzeugen von %s fehlgeschlagen"
#. translators: The parameter is a filename. #. translators: The parameter is a filename.
#: ../IkiWiki/Wrapper.pm:119 #: ../IkiWiki/Wrapper.pm:155
#, perl-format #, perl-format
msgid "successfully generated %s" msgid "successfully generated %s"
msgstr "%s wurde erfolgreich erstellt" msgstr "%s wurde erfolgreich erstellt"
@ -913,39 +951,39 @@ msgstr ""
msgid "usage: --set var=value" msgid "usage: --set var=value"
msgstr "Benutzung: --set Variable=Wert" msgstr "Benutzung: --set Variable=Wert"
#: ../ikiwiki.in:137 #: ../ikiwiki.in:138
msgid "generating wrappers.." msgid "generating wrappers.."
msgstr "erzeuge Wrapper.." msgstr "erzeuge Wrapper.."
#: ../ikiwiki.in:188 #: ../ikiwiki.in:195
msgid "rebuilding wiki.." msgid "rebuilding wiki.."
msgstr "erzeuge Wiki neu.." msgstr "erzeuge Wiki neu.."
#: ../ikiwiki.in:191 #: ../ikiwiki.in:198
msgid "refreshing wiki.." msgid "refreshing wiki.."
msgstr "aktualisiere Wiki.." msgstr "aktualisiere Wiki.."
#: ../IkiWiki.pm:458 #: ../IkiWiki.pm:466
msgid "Must specify url to wiki with --url when using --cgi" msgid "Must specify url to wiki with --url when using --cgi"
msgstr "" msgstr ""
"Es muss eine URL zum Wiki mit --url angegeben werden, wenn --cgi verwandt " "Es muss eine URL zum Wiki mit --url angegeben werden, wenn --cgi verwandt "
"wird" "wird"
#: ../IkiWiki.pm:504 #: ../IkiWiki.pm:512
msgid "cannot use multiple rcs plugins" msgid "cannot use multiple rcs plugins"
msgstr "" msgstr ""
#: ../IkiWiki.pm:533 #: ../IkiWiki.pm:541
#, perl-format #, perl-format
msgid "failed to load external plugin needed for %s plugin: %s" msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "" msgstr ""
#: ../IkiWiki.pm:1156 #: ../IkiWiki.pm:1165
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "preprocessing loop detected on %s at depth %i" msgid "preprocessing loop detected on %s at depth %i"
msgstr "Präprozessorschleife %s auf Seite %s in Tiefe %i erkannt" msgstr "Präprozessorschleife %s auf Seite %s in Tiefe %i erkannt"
#: ../IkiWiki.pm:1665 #: ../IkiWiki.pm:1678
msgid "yes" msgid "yes"
msgstr "" msgstr ""

View File

@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: es\n" "Project-Id-Version: es\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-19 19:12-0400\n" "POT-Creation-Date: 2008-10-31 16:37-0400\n"
"PO-Revision-Date: 2008-10-07 12:44+0200\n" "PO-Revision-Date: 2008-10-22 13:54+0200\n"
"Last-Translator: Víctor Moral <victor@taquiones.net>\n" "Last-Translator: Víctor Moral <victor@taquiones.net>\n"
"Language-Team: Spanish <es@li.org>\n" "Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -48,7 +48,7 @@ msgstr "Las preferencias se han guardado."
msgid "You are banned." msgid "You are banned."
msgstr "Ha sido expulsado." msgstr "Ha sido expulsado."
#: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1173 #: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1182
msgid "Error" msgid "Error"
msgstr "Error" msgstr "Error"
@ -91,7 +91,7 @@ msgstr "%s caducada"
#: ../IkiWiki/Plugin/aggregate.pm:463 #: ../IkiWiki/Plugin/aggregate.pm:463
#, perl-format #, perl-format
msgid "last checked %s" msgid "last checked %s"
msgstr "" msgstr "última comprobación el %s"
#: ../IkiWiki/Plugin/aggregate.pm:467 #: ../IkiWiki/Plugin/aggregate.pm:467
#, perl-format #, perl-format
@ -130,7 +130,7 @@ msgstr "creando nueva página %s"
msgid "deleting bucket.." msgid "deleting bucket.."
msgstr "borrando el directorio.." msgstr "borrando el directorio.."
#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:199 #: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206
msgid "done" msgid "done"
msgstr "completado" msgstr "completado"
@ -209,6 +209,11 @@ msgstr "no se ha copiado ningún texto con el identificador %s en esta pagina"
msgid "removing old preview %s" msgid "removing old preview %s"
msgstr "eliminando la antigua previsualización %s" msgstr "eliminando la antigua previsualización %s"
#: ../IkiWiki/Plugin/editpage.pm:125
#, fuzzy
msgid "bad page name"
msgstr "nombre de archivo adjunto erróneo"
#: ../IkiWiki/Plugin/editpage.pm:141 #: ../IkiWiki/Plugin/editpage.pm:141
#, perl-format #, perl-format
msgid "%s is not an editable page" msgid "%s is not an editable page"
@ -243,18 +248,46 @@ msgstr "plantilla de edición %s registrada para %s"
msgid "failed to process" msgid "failed to process"
msgstr "fallo en el proceso" msgstr "fallo en el proceso"
#: ../IkiWiki/Plugin/format.pm:22
msgid "must specify format and text"
msgstr ""
#: ../IkiWiki/Plugin/format.pm:25
#, fuzzy, perl-format
msgid "unsupported page format %s"
msgstr "el sistema de control de versiones %s no está soportado"
#: ../IkiWiki/Plugin/fortune.pm:27 #: ../IkiWiki/Plugin/fortune.pm:27
msgid "fortune failed" msgid "fortune failed"
msgstr "el programa fortune ha fallado" msgstr "el programa fortune ha fallado"
#: ../IkiWiki/Plugin/google.pm:27 #: ../IkiWiki/Plugin/git.pm:618 ../IkiWiki/Plugin/git.pm:636
#: ../IkiWiki/Receive.pm:129
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "you are not allowed to change %s"
msgstr "No está registrado como un administrador"
#: ../IkiWiki/Plugin/git.pm:658
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:662
#, fuzzy
msgid "you are not allowed to change file modes"
msgstr "No está registrado como un administrador"
#: ../IkiWiki/Plugin/google.pm:27
#, perl-format
msgid "Must specify %s when using the google search plugin" msgid "Must specify %s when using the google search plugin"
msgstr "Es obligatorio indicar %s cuando se utiliza el complemento de búsqueda" msgstr ""
"Es obligatorio indicar %s cuando se utiliza el complemento de búsqueda de "
"google"
#: ../IkiWiki/Plugin/google.pm:31 #: ../IkiWiki/Plugin/google.pm:31
msgid "Failed to parse url, cannot determine domain name" msgid "Failed to parse url, cannot determine domain name"
msgstr "" msgstr ""
"Error en el análisis del URL, no puedo determinar el nombre del dominio"
#: ../IkiWiki/Plugin/googlecalendar.pm:32 #: ../IkiWiki/Plugin/googlecalendar.pm:32
msgid "failed to find url in html" msgid "failed to find url in html"
@ -652,18 +685,18 @@ msgstr "se necesita la instalación de Digest::SHA1 para indexar %s"
msgid "search" msgid "search"
msgstr "buscar" msgstr "buscar"
#: ../IkiWiki/Plugin/shortcut.pm:27 #: ../IkiWiki/Plugin/shortcut.pm:28
msgid "shortcut plugin will not work without a shortcuts.mdwn" msgid "shortcut plugin will not work without a shortcuts.mdwn"
msgstr "el complemento shortcut no funciona sin una página shortcuts.mdwn" msgstr "el complemento shortcut no funciona sin una página shortcuts.mdwn"
#: ../IkiWiki/Plugin/shortcut.pm:36 #: ../IkiWiki/Plugin/shortcut.pm:38
msgid "missing name or url parameter" msgid "missing name or url parameter"
msgstr "shortcut necesita el parámetro 'name' ó el parámetro 'url'" msgstr "shortcut necesita el parámetro 'name' ó el parámetro 'url'"
#. translators: This is used to display what shortcuts are defined. #. translators: This is used to display what shortcuts are defined.
#. translators: First parameter is the name of the shortcut, the second #. translators: First parameter is the name of the shortcut, the second
#. translators: is an URL. #. translators: is an URL.
#: ../IkiWiki/Plugin/shortcut.pm:45 #: ../IkiWiki/Plugin/shortcut.pm:48
#, perl-format #, perl-format
msgid "shortcut %s points to <i>%s</i>" msgid "shortcut %s points to <i>%s</i>"
msgstr "El atajo %s apunta a <i>%s</i>" msgstr "El atajo %s apunta a <i>%s</i>"
@ -795,6 +828,16 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)" msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr "<p class=\"error\">Error: %s finaliza con código distinto de cero (%s)" msgstr "<p class=\"error\">Error: %s finaliza con código distinto de cero (%s)"
#: ../IkiWiki/Receive.pm:35
#, perl-format
msgid "cannot determine id of untrusted committer %s"
msgstr ""
#: ../IkiWiki/Receive.pm:85
#, fuzzy, perl-format
msgid "bad file name %s"
msgstr "ignorando el archivo %s porque su nombre no es correcto"
#: ../IkiWiki/Render.pm:253 #: ../IkiWiki/Render.pm:253
#, perl-format #, perl-format
msgid "" msgid ""
@ -892,19 +935,19 @@ msgstr "el programa envoltorio no ha sido especificado"
#. translators: The first parameter is a filename, and the second is #. translators: The first parameter is a filename, and the second is
#. translators: a (probably not translated) error message. #. translators: a (probably not translated) error message.
#: ../IkiWiki/Wrapper.pm:48 #: ../IkiWiki/Wrapper.pm:79
#, perl-format #, perl-format
msgid "failed to write %s: %s" msgid "failed to write %s: %s"
msgstr "no puedo escribir en %s: %s" msgstr "no puedo escribir en %s: %s"
#. translators: The parameter is a C filename. #. translators: The parameter is a C filename.
#: ../IkiWiki/Wrapper.pm:99 #: ../IkiWiki/Wrapper.pm:135
#, perl-format #, perl-format
msgid "failed to compile %s" msgid "failed to compile %s"
msgstr "ha fallado la compilación del programa %s" msgstr "ha fallado la compilación del programa %s"
#. translators: The parameter is a filename. #. translators: The parameter is a filename.
#: ../IkiWiki/Wrapper.pm:119 #: ../IkiWiki/Wrapper.pm:155
#, perl-format #, perl-format
msgid "successfully generated %s" msgid "successfully generated %s"
msgstr "creado con éxito el programa envoltorio %s" msgstr "creado con éxito el programa envoltorio %s"
@ -921,41 +964,41 @@ msgstr " ikiwiki --setup archivo_de_configuración"
msgid "usage: --set var=value" msgid "usage: --set var=value"
msgstr "uso: --set variable=valor" msgstr "uso: --set variable=valor"
#: ../ikiwiki.in:137 #: ../ikiwiki.in:138
msgid "generating wrappers.." msgid "generating wrappers.."
msgstr "generando programas auxiliares.." msgstr "generando programas auxiliares.."
#: ../ikiwiki.in:188 #: ../ikiwiki.in:195
msgid "rebuilding wiki.." msgid "rebuilding wiki.."
msgstr "reconstruyendo el wiki.." msgstr "reconstruyendo el wiki.."
#: ../ikiwiki.in:191 #: ../ikiwiki.in:198
msgid "refreshing wiki.." msgid "refreshing wiki.."
msgstr "actualizando el wiki.." msgstr "actualizando el wiki.."
#: ../IkiWiki.pm:458 #: ../IkiWiki.pm:466
msgid "Must specify url to wiki with --url when using --cgi" msgid "Must specify url to wiki with --url when using --cgi"
msgstr "" msgstr ""
"Es obligatorio especificar un url al wiki con el parámetro --url si se " "Es obligatorio especificar un url al wiki con el parámetro --url si se "
"utiliza el parámetro --cgi" "utiliza el parámetro --cgi"
#: ../IkiWiki.pm:504 #: ../IkiWiki.pm:512
msgid "cannot use multiple rcs plugins" msgid "cannot use multiple rcs plugins"
msgstr "no puedo emplear varios complementos rcs" msgstr "no puedo emplear varios complementos rcs"
#: ../IkiWiki.pm:533 #: ../IkiWiki.pm:541
#, perl-format #, perl-format
msgid "failed to load external plugin needed for %s plugin: %s" msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "no he podido cargar el complemento externo %s necesario para %s" msgstr "no he podido cargar el complemento externo %s necesario para %s"
#: ../IkiWiki.pm:1156 #: ../IkiWiki.pm:1165
#, perl-format #, perl-format
msgid "preprocessing loop detected on %s at depth %i" msgid "preprocessing loop detected on %s at depth %i"
msgstr "" msgstr ""
"se ha detectado en la página %s un bucle de preprocesado en la iteración " "se ha detectado en la página %s un bucle de preprocesado en la iteración "
"número %i" "número %i"
#: ../IkiWiki.pm:1665 #: ../IkiWiki.pm:1678
msgid "yes" msgid "yes"
msgstr "si" msgstr "si"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-19 19:12-0400\n" "POT-Creation-Date: 2008-10-31 16:37-0400\n"
"PO-Revision-Date: 2008-10-11 10:34+0200\n" "PO-Revision-Date: 2008-10-11 10:34+0200\n"
"Last-Translator: Julien Patriarca <patriarcaj@gmail.com>\n" "Last-Translator: Julien Patriarca <patriarcaj@gmail.com>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n" "Language-Team: French <debian-l10n-french@lists.debian.org>\n"
@ -51,7 +51,7 @@ msgstr "Les préférences ont été enregistrées."
msgid "You are banned." msgid "You are banned."
msgstr "Vous avez été banni." msgstr "Vous avez été banni."
#: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1173 #: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1182
msgid "Error" msgid "Error"
msgstr "Erreur" msgstr "Erreur"
@ -133,7 +133,7 @@ msgstr "Création de la nouvelle page %s"
msgid "deleting bucket.." msgid "deleting bucket.."
msgstr "suppression du compartiment (« bucket »)..." msgstr "suppression du compartiment (« bucket »)..."
#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:199 #: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206
msgid "done" msgid "done"
msgstr "Terminé" msgstr "Terminé"
@ -216,6 +216,11 @@ msgstr "Aucun texte n'a été copié dans cette page avec l'identifiant %s"
msgid "removing old preview %s" msgid "removing old preview %s"
msgstr "Suppression de l'ancienne prévisualisation %s" msgstr "Suppression de l'ancienne prévisualisation %s"
#: ../IkiWiki/Plugin/editpage.pm:125
#, fuzzy
msgid "bad page name"
msgstr "Mauvais nom de la pièce jointe"
#: ../IkiWiki/Plugin/editpage.pm:141 #: ../IkiWiki/Plugin/editpage.pm:141
#, perl-format #, perl-format
msgid "%s is not an editable page" msgid "%s is not an editable page"
@ -250,10 +255,35 @@ msgstr "edittemplate %s enregistré pour %s"
msgid "failed to process" msgid "failed to process"
msgstr "Échec du traitement" msgstr "Échec du traitement"
#: ../IkiWiki/Plugin/format.pm:22
msgid "must specify format and text"
msgstr ""
#: ../IkiWiki/Plugin/format.pm:25
#, fuzzy, perl-format
msgid "unsupported page format %s"
msgstr "Système de contrôle de version non reconnu"
#: ../IkiWiki/Plugin/fortune.pm:27 #: ../IkiWiki/Plugin/fortune.pm:27
msgid "fortune failed" msgid "fortune failed"
msgstr "Échec du lancement de « fortune »" msgstr "Échec du lancement de « fortune »"
#: ../IkiWiki/Plugin/git.pm:618 ../IkiWiki/Plugin/git.pm:636
#: ../IkiWiki/Receive.pm:129
#, fuzzy, perl-format
msgid "you are not allowed to change %s"
msgstr "vous n'êtes pas authentifié comme administrateur"
#: ../IkiWiki/Plugin/git.pm:658
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:662
#, fuzzy
msgid "you are not allowed to change file modes"
msgstr "vous n'êtes pas authentifié comme administrateur"
#: ../IkiWiki/Plugin/google.pm:27 #: ../IkiWiki/Plugin/google.pm:27
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "Must specify %s when using the google search plugin" msgid "Must specify %s when using the google search plugin"
@ -662,18 +692,18 @@ msgstr "Digest::SHA1 est nécessaire pour indexer %s"
msgid "search" msgid "search"
msgstr "recherche" msgstr "recherche"
#: ../IkiWiki/Plugin/shortcut.pm:27 #: ../IkiWiki/Plugin/shortcut.pm:28
msgid "shortcut plugin will not work without a shortcuts.mdwn" msgid "shortcut plugin will not work without a shortcuts.mdwn"
msgstr "Le greffon « shortcut » ne fonctionnera pas sans shortcuts.mdwn" msgstr "Le greffon « shortcut » ne fonctionnera pas sans shortcuts.mdwn"
#: ../IkiWiki/Plugin/shortcut.pm:36 #: ../IkiWiki/Plugin/shortcut.pm:38
msgid "missing name or url parameter" msgid "missing name or url parameter"
msgstr "Il manque le paramètre nom ou URL." msgstr "Il manque le paramètre nom ou URL."
#. translators: This is used to display what shortcuts are defined. #. translators: This is used to display what shortcuts are defined.
#. translators: First parameter is the name of the shortcut, the second #. translators: First parameter is the name of the shortcut, the second
#. translators: is an URL. #. translators: is an URL.
#: ../IkiWiki/Plugin/shortcut.pm:45 #: ../IkiWiki/Plugin/shortcut.pm:48
#, perl-format #, perl-format
msgid "shortcut %s points to <i>%s</i>" msgid "shortcut %s points to <i>%s</i>"
msgstr "Le raccourci %s pointe vers <i>%s</i>" msgstr "Le raccourci %s pointe vers <i>%s</i>"
@ -805,6 +835,16 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)" msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr "<p class=\"erreur\">Erreur: %s a quitté nonzero (%s)" msgstr "<p class=\"erreur\">Erreur: %s a quitté nonzero (%s)"
#: ../IkiWiki/Receive.pm:35
#, perl-format
msgid "cannot determine id of untrusted committer %s"
msgstr ""
#: ../IkiWiki/Receive.pm:85
#, fuzzy, perl-format
msgid "bad file name %s"
msgstr "Omission du fichier au nom incorrect %s"
#: ../IkiWiki/Render.pm:253 #: ../IkiWiki/Render.pm:253
#, perl-format #, perl-format
msgid "" msgid ""
@ -902,19 +942,19 @@ msgstr "Le nom du fichier CGI n'a pas été indiqué"
#. translators: The first parameter is a filename, and the second is #. translators: The first parameter is a filename, and the second is
#. translators: a (probably not translated) error message. #. translators: a (probably not translated) error message.
#: ../IkiWiki/Wrapper.pm:48 #: ../IkiWiki/Wrapper.pm:79
#, perl-format #, perl-format
msgid "failed to write %s: %s" msgid "failed to write %s: %s"
msgstr "Échec de l'écriture de %s : %s" msgstr "Échec de l'écriture de %s : %s"
#. translators: The parameter is a C filename. #. translators: The parameter is a C filename.
#: ../IkiWiki/Wrapper.pm:99 #: ../IkiWiki/Wrapper.pm:135
#, perl-format #, perl-format
msgid "failed to compile %s" msgid "failed to compile %s"
msgstr "Échec de la compilation de %s" msgstr "Échec de la compilation de %s"
#. translators: The parameter is a filename. #. translators: The parameter is a filename.
#: ../IkiWiki/Wrapper.pm:119 #: ../IkiWiki/Wrapper.pm:155
#, perl-format #, perl-format
msgid "successfully generated %s" msgid "successfully generated %s"
msgstr "%s a été créé avec succès" msgstr "%s a été créé avec succès"
@ -932,39 +972,39 @@ msgstr " ikiwiki --setup fichier de configuration"
msgid "usage: --set var=value" msgid "usage: --set var=value"
msgstr "Syntaxe : -- set var=valeur" msgstr "Syntaxe : -- set var=valeur"
#: ../ikiwiki.in:137 #: ../ikiwiki.in:138
msgid "generating wrappers.." msgid "generating wrappers.."
msgstr "Création des fichiers CGI..." msgstr "Création des fichiers CGI..."
#: ../ikiwiki.in:188 #: ../ikiwiki.in:195
msgid "rebuilding wiki.." msgid "rebuilding wiki.."
msgstr "Reconstruction du wiki..." msgstr "Reconstruction du wiki..."
#: ../ikiwiki.in:191 #: ../ikiwiki.in:198
msgid "refreshing wiki.." msgid "refreshing wiki.."
msgstr "Rafraîchissement du wiki..." msgstr "Rafraîchissement du wiki..."
#: ../IkiWiki.pm:458 #: ../IkiWiki.pm:466
msgid "Must specify url to wiki with --url when using --cgi" msgid "Must specify url to wiki with --url when using --cgi"
msgstr "" msgstr ""
"Vous devez indiquer une URL vers le wiki par --url lors de l'utilisation de " "Vous devez indiquer une URL vers le wiki par --url lors de l'utilisation de "
"--cgi" "--cgi"
#: ../IkiWiki.pm:504 #: ../IkiWiki.pm:512
msgid "cannot use multiple rcs plugins" msgid "cannot use multiple rcs plugins"
msgstr "impossible d'utiliser plusieurs systèmes de contrôle des versions" msgstr "impossible d'utiliser plusieurs systèmes de contrôle des versions"
#: ../IkiWiki.pm:533 #: ../IkiWiki.pm:541
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "failed to load external plugin needed for %s plugin: %s" msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "Impossible de charger le greffon externe nécessaire au greffon %s : %s" msgstr "Impossible de charger le greffon externe nécessaire au greffon %s : %s"
#: ../IkiWiki.pm:1156 #: ../IkiWiki.pm:1165
#, perl-format #, perl-format
msgid "preprocessing loop detected on %s at depth %i" msgid "preprocessing loop detected on %s at depth %i"
msgstr "une boucle de pré traitement a été détectée sur %s à hauteur de %i" msgstr "une boucle de pré traitement a été détectée sur %s à hauteur de %i"
#: ../IkiWiki.pm:1665 #: ../IkiWiki.pm:1678
msgid "yes" msgid "yes"
msgstr "oui" msgstr "oui"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ikiwiki-gu\n" "Project-Id-Version: ikiwiki-gu\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-19 19:12-0400\n" "POT-Creation-Date: 2008-10-31 16:37-0400\n"
"PO-Revision-Date: 2007-01-11 16:05+0530\n" "PO-Revision-Date: 2007-01-11 16:05+0530\n"
"Last-Translator: Kartik Mistry <kartik.mistry@gmail.com>\n" "Last-Translator: Kartik Mistry <kartik.mistry@gmail.com>\n"
"Language-Team: Gujarati <team@utkarsh.org>\n" "Language-Team: Gujarati <team@utkarsh.org>\n"
@ -48,7 +48,7 @@ msgstr "પ્રાથમિકતાઓ સંગ્રહાઇ."
msgid "You are banned." msgid "You are banned."
msgstr "તમારા પર પ્રતિબંધ છે." msgstr "તમારા પર પ્રતિબંધ છે."
#: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1173 #: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1182
msgid "Error" msgid "Error"
msgstr "ક્ષતિ" msgstr "ક્ષતિ"
@ -129,7 +129,7 @@ msgstr "નવું પાનું %s બનાવે છે"
msgid "deleting bucket.." msgid "deleting bucket.."
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:199 #: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206
msgid "done" msgid "done"
msgstr "સંપૂર્ણ" msgstr "સંપૂર્ણ"
@ -210,6 +210,10 @@ msgstr ""
msgid "removing old preview %s" msgid "removing old preview %s"
msgstr "જુનાં પાનાં દૂર કરે છે %s" msgstr "જુનાં પાનાં દૂર કરે છે %s"
#: ../IkiWiki/Plugin/editpage.pm:125
msgid "bad page name"
msgstr ""
#: ../IkiWiki/Plugin/editpage.pm:141 #: ../IkiWiki/Plugin/editpage.pm:141
#, perl-format #, perl-format
msgid "%s is not an editable page" msgid "%s is not an editable page"
@ -247,10 +251,34 @@ msgstr ""
msgid "failed to process" msgid "failed to process"
msgstr "ક્રિયા કરવામાં નિષ્ફળ:" msgstr "ક્રિયા કરવામાં નિષ્ફળ:"
#: ../IkiWiki/Plugin/format.pm:22
msgid "must specify format and text"
msgstr ""
#: ../IkiWiki/Plugin/format.pm:25
#, perl-format
msgid "unsupported page format %s"
msgstr ""
#: ../IkiWiki/Plugin/fortune.pm:27 #: ../IkiWiki/Plugin/fortune.pm:27
msgid "fortune failed" msgid "fortune failed"
msgstr "ભવિષ્ય નિષ્ફળ" msgstr "ભવિષ્ય નિષ્ફળ"
#: ../IkiWiki/Plugin/git.pm:618 ../IkiWiki/Plugin/git.pm:636
#: ../IkiWiki/Receive.pm:129
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:658
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:662
msgid "you are not allowed to change file modes"
msgstr ""
#: ../IkiWiki/Plugin/google.pm:27 #: ../IkiWiki/Plugin/google.pm:27
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "Must specify %s when using the google search plugin" msgid "Must specify %s when using the google search plugin"
@ -656,18 +684,18 @@ msgstr ""
msgid "search" msgid "search"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/shortcut.pm:27 #: ../IkiWiki/Plugin/shortcut.pm:28
msgid "shortcut plugin will not work without a shortcuts.mdwn" msgid "shortcut plugin will not work without a shortcuts.mdwn"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/shortcut.pm:36 #: ../IkiWiki/Plugin/shortcut.pm:38
msgid "missing name or url parameter" msgid "missing name or url parameter"
msgstr "ખોવાયેલ નામ અથવા યુઆરએલ વિકલ્પ" msgstr "ખોવાયેલ નામ અથવા યુઆરએલ વિકલ્પ"
#. translators: This is used to display what shortcuts are defined. #. translators: This is used to display what shortcuts are defined.
#. translators: First parameter is the name of the shortcut, the second #. translators: First parameter is the name of the shortcut, the second
#. translators: is an URL. #. translators: is an URL.
#: ../IkiWiki/Plugin/shortcut.pm:45 #: ../IkiWiki/Plugin/shortcut.pm:48
#, perl-format #, perl-format
msgid "shortcut %s points to <i>%s</i>" msgid "shortcut %s points to <i>%s</i>"
msgstr "ટુંકોરસ્તો %s એ <i>%s</i> નો નિર્દેશ કરે છે" msgstr "ટુંકોરસ્તો %s એ <i>%s</i> નો નિર્દેશ કરે છે"
@ -797,6 +825,16 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)" msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr "" msgstr ""
#: ../IkiWiki/Receive.pm:35
#, perl-format
msgid "cannot determine id of untrusted committer %s"
msgstr ""
#: ../IkiWiki/Receive.pm:85
#, fuzzy, perl-format
msgid "bad file name %s"
msgstr "ખરાબ ફાઇલ નામ છોડી દે છે %s"
#: ../IkiWiki/Render.pm:253 #: ../IkiWiki/Render.pm:253
#, perl-format #, perl-format
msgid "" msgid ""
@ -889,19 +927,19 @@ msgstr "આવરણ ફાઇલનામ સ્પષ્ટ કરેલ ન
#. translators: The first parameter is a filename, and the second is #. translators: The first parameter is a filename, and the second is
#. translators: a (probably not translated) error message. #. translators: a (probably not translated) error message.
#: ../IkiWiki/Wrapper.pm:48 #: ../IkiWiki/Wrapper.pm:79
#, perl-format #, perl-format
msgid "failed to write %s: %s" msgid "failed to write %s: %s"
msgstr "%s લખવામાં નિષ્ફળ: %s" msgstr "%s લખવામાં નિષ્ફળ: %s"
#. translators: The parameter is a C filename. #. translators: The parameter is a C filename.
#: ../IkiWiki/Wrapper.pm:99 #: ../IkiWiki/Wrapper.pm:135
#, perl-format #, perl-format
msgid "failed to compile %s" msgid "failed to compile %s"
msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ" msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ"
#. translators: The parameter is a filename. #. translators: The parameter is a filename.
#: ../IkiWiki/Wrapper.pm:119 #: ../IkiWiki/Wrapper.pm:155
#, perl-format #, perl-format
msgid "successfully generated %s" msgid "successfully generated %s"
msgstr "સફળતાપૂર્વક પેદા કરેલ છે %s" msgstr "સફળતાપૂર્વક પેદા કરેલ છે %s"
@ -918,37 +956,37 @@ msgstr ""
msgid "usage: --set var=value" msgid "usage: --set var=value"
msgstr "" msgstr ""
#: ../ikiwiki.in:137 #: ../ikiwiki.in:138
msgid "generating wrappers.." msgid "generating wrappers.."
msgstr "આવરણ બનાવે છે.." msgstr "આવરણ બનાવે છે.."
#: ../ikiwiki.in:188 #: ../ikiwiki.in:195
msgid "rebuilding wiki.." msgid "rebuilding wiki.."
msgstr "વીકી ફરીથી બનાવે છે.." msgstr "વીકી ફરીથી બનાવે છે.."
#: ../ikiwiki.in:191 #: ../ikiwiki.in:198
msgid "refreshing wiki.." msgid "refreshing wiki.."
msgstr "વીકીને તાજી કરે છે.." msgstr "વીકીને તાજી કરે છે.."
#: ../IkiWiki.pm:458 #: ../IkiWiki.pm:466
msgid "Must specify url to wiki with --url when using --cgi" msgid "Must specify url to wiki with --url when using --cgi"
msgstr "જ્યારે --cgi ઉપયોગ કરતાં હોય ત્યારે વીકીનું યુઆરએલ સ્પષ્ટ કરવું જ પડશે" msgstr "જ્યારે --cgi ઉપયોગ કરતાં હોય ત્યારે વીકીનું યુઆરએલ સ્પષ્ટ કરવું જ પડશે"
#: ../IkiWiki.pm:504 #: ../IkiWiki.pm:512
msgid "cannot use multiple rcs plugins" msgid "cannot use multiple rcs plugins"
msgstr "" msgstr ""
#: ../IkiWiki.pm:533 #: ../IkiWiki.pm:541
#, perl-format #, perl-format
msgid "failed to load external plugin needed for %s plugin: %s" msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "" msgstr ""
#: ../IkiWiki.pm:1156 #: ../IkiWiki.pm:1165
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "preprocessing loop detected on %s at depth %i" msgid "preprocessing loop detected on %s at depth %i"
msgstr "%s પર શોધાયેલ લુપ %s પર ચલાવે છે %i ઉંડાણ પર" msgstr "%s પર શોધાયેલ લુપ %s પર ચલાવે છે %i ઉંડાણ પર"
#: ../IkiWiki.pm:1665 #: ../IkiWiki.pm:1678
msgid "yes" msgid "yes"
msgstr "" msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-19 20:06-0400\n" "POT-Creation-Date: 2008-10-31 16:38-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -129,7 +129,7 @@ msgstr ""
msgid "deleting bucket.." msgid "deleting bucket.."
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:199 #: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206
msgid "done" msgid "done"
msgstr "" msgstr ""
@ -208,6 +208,10 @@ msgstr ""
msgid "removing old preview %s" msgid "removing old preview %s"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/editpage.pm:125
msgid "bad page name"
msgstr ""
#: ../IkiWiki/Plugin/editpage.pm:141 #: ../IkiWiki/Plugin/editpage.pm:141
#, perl-format #, perl-format
msgid "%s is not an editable page" msgid "%s is not an editable page"
@ -242,10 +246,34 @@ msgstr ""
msgid "failed to process" msgid "failed to process"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/format.pm:22
msgid "must specify format and text"
msgstr ""
#: ../IkiWiki/Plugin/format.pm:25
#, perl-format
msgid "unsupported page format %s"
msgstr ""
#: ../IkiWiki/Plugin/fortune.pm:27 #: ../IkiWiki/Plugin/fortune.pm:27
msgid "fortune failed" msgid "fortune failed"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/git.pm:618 ../IkiWiki/Plugin/git.pm:636
#: ../IkiWiki/Receive.pm:129
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:658
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:662
msgid "you are not allowed to change file modes"
msgstr ""
#: ../IkiWiki/Plugin/google.pm:27 #: ../IkiWiki/Plugin/google.pm:27
#, perl-format #, perl-format
msgid "Must specify %s when using the google search plugin" msgid "Must specify %s when using the google search plugin"
@ -641,18 +669,18 @@ msgstr ""
msgid "search" msgid "search"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/shortcut.pm:27 #: ../IkiWiki/Plugin/shortcut.pm:28
msgid "shortcut plugin will not work without a shortcuts.mdwn" msgid "shortcut plugin will not work without a shortcuts.mdwn"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/shortcut.pm:36 #: ../IkiWiki/Plugin/shortcut.pm:38
msgid "missing name or url parameter" msgid "missing name or url parameter"
msgstr "" msgstr ""
#. translators: This is used to display what shortcuts are defined. #. translators: This is used to display what shortcuts are defined.
#. translators: First parameter is the name of the shortcut, the second #. translators: First parameter is the name of the shortcut, the second
#. translators: is an URL. #. translators: is an URL.
#: ../IkiWiki/Plugin/shortcut.pm:45 #: ../IkiWiki/Plugin/shortcut.pm:48
#, perl-format #, perl-format
msgid "shortcut %s points to <i>%s</i>" msgid "shortcut %s points to <i>%s</i>"
msgstr "" msgstr ""
@ -780,6 +808,16 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)" msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr "" msgstr ""
#: ../IkiWiki/Receive.pm:35
#, perl-format
msgid "cannot determine id of untrusted committer %s"
msgstr ""
#: ../IkiWiki/Receive.pm:85
#, perl-format
msgid "bad file name %s"
msgstr ""
#: ../IkiWiki/Render.pm:253 #: ../IkiWiki/Render.pm:253
#, perl-format #, perl-format
msgid "" msgid ""
@ -872,19 +910,19 @@ msgstr ""
#. translators: The first parameter is a filename, and the second is #. translators: The first parameter is a filename, and the second is
#. translators: a (probably not translated) error message. #. translators: a (probably not translated) error message.
#: ../IkiWiki/Wrapper.pm:48 #: ../IkiWiki/Wrapper.pm:79
#, perl-format #, perl-format
msgid "failed to write %s: %s" msgid "failed to write %s: %s"
msgstr "" msgstr ""
#. translators: The parameter is a C filename. #. translators: The parameter is a C filename.
#: ../IkiWiki/Wrapper.pm:99 #: ../IkiWiki/Wrapper.pm:135
#, perl-format #, perl-format
msgid "failed to compile %s" msgid "failed to compile %s"
msgstr "" msgstr ""
#. translators: The parameter is a filename. #. translators: The parameter is a filename.
#: ../IkiWiki/Wrapper.pm:119 #: ../IkiWiki/Wrapper.pm:155
#, perl-format #, perl-format
msgid "successfully generated %s" msgid "successfully generated %s"
msgstr "" msgstr ""
@ -901,27 +939,27 @@ msgstr ""
msgid "usage: --set var=value" msgid "usage: --set var=value"
msgstr "" msgstr ""
#: ../ikiwiki.in:137 #: ../ikiwiki.in:138
msgid "generating wrappers.." msgid "generating wrappers.."
msgstr "" msgstr ""
#: ../ikiwiki.in:188 #: ../ikiwiki.in:195
msgid "rebuilding wiki.." msgid "rebuilding wiki.."
msgstr "" msgstr ""
#: ../ikiwiki.in:191 #: ../ikiwiki.in:198
msgid "refreshing wiki.." msgid "refreshing wiki.."
msgstr "" msgstr ""
#: ../IkiWiki.pm:458 #: ../IkiWiki.pm:466
msgid "Must specify url to wiki with --url when using --cgi" msgid "Must specify url to wiki with --url when using --cgi"
msgstr "" msgstr ""
#: ../IkiWiki.pm:504 #: ../IkiWiki.pm:512
msgid "cannot use multiple rcs plugins" msgid "cannot use multiple rcs plugins"
msgstr "" msgstr ""
#: ../IkiWiki.pm:533 #: ../IkiWiki.pm:541
#, perl-format #, perl-format
msgid "failed to load external plugin needed for %s plugin: %s" msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "" msgstr ""
@ -931,7 +969,7 @@ msgstr ""
msgid "preprocessing loop detected on %s at depth %i" msgid "preprocessing loop detected on %s at depth %i"
msgstr "" msgstr ""
#: ../IkiWiki.pm:1674 #: ../IkiWiki.pm:1678
msgid "yes" msgid "yes"
msgstr "" msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ikiwiki 1.51\n" "Project-Id-Version: ikiwiki 1.51\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-19 19:12-0400\n" "POT-Creation-Date: 2008-10-31 16:37-0400\n"
"PO-Revision-Date: 2007-04-27 22:05+0200\n" "PO-Revision-Date: 2007-04-27 22:05+0200\n"
"Last-Translator: Pawel Tecza <ptecza@net.icm.edu.pl>\n" "Last-Translator: Pawel Tecza <ptecza@net.icm.edu.pl>\n"
"Language-Team: Debian L10n Polish <debian-l10n-polish@lists.debian.org>\n" "Language-Team: Debian L10n Polish <debian-l10n-polish@lists.debian.org>\n"
@ -51,7 +51,7 @@ msgstr "Preferencje zapisane."
msgid "You are banned." msgid "You are banned."
msgstr "Twój dostęp został zabroniony przez administratora." msgstr "Twój dostęp został zabroniony przez administratora."
#: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1173 #: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1182
msgid "Error" msgid "Error"
msgstr "Błąd" msgstr "Błąd"
@ -133,7 +133,7 @@ msgstr "tworzenie nowej strony %s"
msgid "deleting bucket.." msgid "deleting bucket.."
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:199 #: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206
msgid "done" msgid "done"
msgstr "gotowe" msgstr "gotowe"
@ -214,6 +214,10 @@ msgstr ""
msgid "removing old preview %s" msgid "removing old preview %s"
msgstr "usuwanie starej strony %s" msgstr "usuwanie starej strony %s"
#: ../IkiWiki/Plugin/editpage.pm:125
msgid "bad page name"
msgstr ""
#: ../IkiWiki/Plugin/editpage.pm:141 #: ../IkiWiki/Plugin/editpage.pm:141
#, perl-format #, perl-format
msgid "%s is not an editable page" msgid "%s is not an editable page"
@ -251,10 +255,34 @@ msgstr ""
msgid "failed to process" msgid "failed to process"
msgstr "awaria w trakcie przetwarzania:" msgstr "awaria w trakcie przetwarzania:"
#: ../IkiWiki/Plugin/format.pm:22
msgid "must specify format and text"
msgstr ""
#: ../IkiWiki/Plugin/format.pm:25
#, perl-format
msgid "unsupported page format %s"
msgstr ""
#: ../IkiWiki/Plugin/fortune.pm:27 #: ../IkiWiki/Plugin/fortune.pm:27
msgid "fortune failed" msgid "fortune failed"
msgstr "awaria fortunki" msgstr "awaria fortunki"
#: ../IkiWiki/Plugin/git.pm:618 ../IkiWiki/Plugin/git.pm:636
#: ../IkiWiki/Receive.pm:129
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:658
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:662
msgid "you are not allowed to change file modes"
msgstr ""
#: ../IkiWiki/Plugin/google.pm:27 #: ../IkiWiki/Plugin/google.pm:27
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "Must specify %s when using the google search plugin" msgid "Must specify %s when using the google search plugin"
@ -672,11 +700,11 @@ msgstr ""
msgid "search" msgid "search"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/shortcut.pm:27 #: ../IkiWiki/Plugin/shortcut.pm:28
msgid "shortcut plugin will not work without a shortcuts.mdwn" msgid "shortcut plugin will not work without a shortcuts.mdwn"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/shortcut.pm:36 #: ../IkiWiki/Plugin/shortcut.pm:38
#, fuzzy #, fuzzy
msgid "missing name or url parameter" msgid "missing name or url parameter"
msgstr "brakujący parametr name lub url" msgstr "brakujący parametr name lub url"
@ -684,7 +712,7 @@ msgstr "brakujący parametr name lub url"
#. translators: This is used to display what shortcuts are defined. #. translators: This is used to display what shortcuts are defined.
#. translators: First parameter is the name of the shortcut, the second #. translators: First parameter is the name of the shortcut, the second
#. translators: is an URL. #. translators: is an URL.
#: ../IkiWiki/Plugin/shortcut.pm:45 #: ../IkiWiki/Plugin/shortcut.pm:48
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "shortcut %s points to <i>%s</i>" msgid "shortcut %s points to <i>%s</i>"
msgstr "skrót %s wskazuje na adres <i>%s</i>" msgstr "skrót %s wskazuje na adres <i>%s</i>"
@ -822,6 +850,16 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)" msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr "" msgstr ""
#: ../IkiWiki/Receive.pm:35
#, perl-format
msgid "cannot determine id of untrusted committer %s"
msgstr ""
#: ../IkiWiki/Receive.pm:85
#, fuzzy, perl-format
msgid "bad file name %s"
msgstr "pomijanie nieprawidłowej nazwy pliku %s"
#: ../IkiWiki/Render.pm:253 #: ../IkiWiki/Render.pm:253
#, perl-format #, perl-format
msgid "" msgid ""
@ -914,19 +952,19 @@ msgstr "nieokreślona nazwa pliku osłony"
#. translators: The first parameter is a filename, and the second is #. translators: The first parameter is a filename, and the second is
#. translators: a (probably not translated) error message. #. translators: a (probably not translated) error message.
#: ../IkiWiki/Wrapper.pm:48 #: ../IkiWiki/Wrapper.pm:79
#, perl-format #, perl-format
msgid "failed to write %s: %s" msgid "failed to write %s: %s"
msgstr "awaria w trakcie zapisu %s: %s" msgstr "awaria w trakcie zapisu %s: %s"
#. translators: The parameter is a C filename. #. translators: The parameter is a C filename.
#: ../IkiWiki/Wrapper.pm:99 #: ../IkiWiki/Wrapper.pm:135
#, perl-format #, perl-format
msgid "failed to compile %s" msgid "failed to compile %s"
msgstr "awaria w trakcie kompilowania %s" msgstr "awaria w trakcie kompilowania %s"
#. translators: The parameter is a filename. #. translators: The parameter is a filename.
#: ../IkiWiki/Wrapper.pm:119 #: ../IkiWiki/Wrapper.pm:155
#, perl-format #, perl-format
msgid "successfully generated %s" msgid "successfully generated %s"
msgstr "pomyślnie utworzono %s" msgstr "pomyślnie utworzono %s"
@ -943,39 +981,39 @@ msgstr ""
msgid "usage: --set var=value" msgid "usage: --set var=value"
msgstr "" msgstr ""
#: ../ikiwiki.in:137 #: ../ikiwiki.in:138
msgid "generating wrappers.." msgid "generating wrappers.."
msgstr "tworzenie osłon..." msgstr "tworzenie osłon..."
#: ../ikiwiki.in:188 #: ../ikiwiki.in:195
msgid "rebuilding wiki.." msgid "rebuilding wiki.."
msgstr "przebudowywanie wiki..." msgstr "przebudowywanie wiki..."
#: ../ikiwiki.in:191 #: ../ikiwiki.in:198
msgid "refreshing wiki.." msgid "refreshing wiki.."
msgstr "odświeżanie wiki..." msgstr "odświeżanie wiki..."
#: ../IkiWiki.pm:458 #: ../IkiWiki.pm:466
msgid "Must specify url to wiki with --url when using --cgi" msgid "Must specify url to wiki with --url when using --cgi"
msgstr "" msgstr ""
"Użycie parametru --cgi wymaga podania adresu URL do wiki za pomocą parametru " "Użycie parametru --cgi wymaga podania adresu URL do wiki za pomocą parametru "
"--url" "--url"
#: ../IkiWiki.pm:504 #: ../IkiWiki.pm:512
msgid "cannot use multiple rcs plugins" msgid "cannot use multiple rcs plugins"
msgstr "" msgstr ""
#: ../IkiWiki.pm:533 #: ../IkiWiki.pm:541
#, perl-format #, perl-format
msgid "failed to load external plugin needed for %s plugin: %s" msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "" msgstr ""
#: ../IkiWiki.pm:1156 #: ../IkiWiki.pm:1165
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "preprocessing loop detected on %s at depth %i" msgid "preprocessing loop detected on %s at depth %i"
msgstr "polecenie preprocesora %s wykryte w %s na głębokości %i" msgstr "polecenie preprocesora %s wykryte w %s na głębokości %i"
#: ../IkiWiki.pm:1665 #: ../IkiWiki.pm:1678
msgid "yes" msgid "yes"
msgstr "" msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ikiwiki\n" "Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-19 19:12-0400\n" "POT-Creation-Date: 2008-10-31 16:37-0400\n"
"PO-Revision-Date: 2007-01-10 23:47+0100\n" "PO-Revision-Date: 2007-01-10 23:47+0100\n"
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n" "Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@ -48,7 +48,7 @@ msgstr "Inställningar sparades."
msgid "You are banned." msgid "You are banned."
msgstr "Du är bannlyst." msgstr "Du är bannlyst."
#: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1173 #: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1182
msgid "Error" msgid "Error"
msgstr "Fel" msgstr "Fel"
@ -130,7 +130,7 @@ msgstr "skapar nya sidan %s"
msgid "deleting bucket.." msgid "deleting bucket.."
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:199 #: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:206
msgid "done" msgid "done"
msgstr "klar" msgstr "klar"
@ -211,6 +211,10 @@ msgstr ""
msgid "removing old preview %s" msgid "removing old preview %s"
msgstr "tar bort gammal sida %s" msgstr "tar bort gammal sida %s"
#: ../IkiWiki/Plugin/editpage.pm:125
msgid "bad page name"
msgstr ""
#: ../IkiWiki/Plugin/editpage.pm:141 #: ../IkiWiki/Plugin/editpage.pm:141
#, perl-format #, perl-format
msgid "%s is not an editable page" msgid "%s is not an editable page"
@ -248,10 +252,34 @@ msgstr ""
msgid "failed to process" msgid "failed to process"
msgstr "misslyckades med att behandla mall:" msgstr "misslyckades med att behandla mall:"
#: ../IkiWiki/Plugin/format.pm:22
msgid "must specify format and text"
msgstr ""
#: ../IkiWiki/Plugin/format.pm:25
#, perl-format
msgid "unsupported page format %s"
msgstr ""
#: ../IkiWiki/Plugin/fortune.pm:27 #: ../IkiWiki/Plugin/fortune.pm:27
msgid "fortune failed" msgid "fortune failed"
msgstr "fortune misslyckades" msgstr "fortune misslyckades"
#: ../IkiWiki/Plugin/git.pm:618 ../IkiWiki/Plugin/git.pm:636
#: ../IkiWiki/Receive.pm:129
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:658
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:662
msgid "you are not allowed to change file modes"
msgstr ""
#: ../IkiWiki/Plugin/google.pm:27 #: ../IkiWiki/Plugin/google.pm:27
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "Must specify %s when using the google search plugin" msgid "Must specify %s when using the google search plugin"
@ -662,11 +690,11 @@ msgstr ""
msgid "search" msgid "search"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/shortcut.pm:27 #: ../IkiWiki/Plugin/shortcut.pm:28
msgid "shortcut plugin will not work without a shortcuts.mdwn" msgid "shortcut plugin will not work without a shortcuts.mdwn"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/shortcut.pm:36 #: ../IkiWiki/Plugin/shortcut.pm:38
#, fuzzy #, fuzzy
msgid "missing name or url parameter" msgid "missing name or url parameter"
msgstr "genväg saknar parameter för namn eller url" msgstr "genväg saknar parameter för namn eller url"
@ -674,7 +702,7 @@ msgstr "genväg saknar parameter för namn eller url"
#. translators: This is used to display what shortcuts are defined. #. translators: This is used to display what shortcuts are defined.
#. translators: First parameter is the name of the shortcut, the second #. translators: First parameter is the name of the shortcut, the second
#. translators: is an URL. #. translators: is an URL.
#: ../IkiWiki/Plugin/shortcut.pm:45 #: ../IkiWiki/Plugin/shortcut.pm:48
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "shortcut %s points to <i>%s</i>" msgid "shortcut %s points to <i>%s</i>"
msgstr "genvägen %s pekar på %s" msgstr "genvägen %s pekar på %s"
@ -811,6 +839,16 @@ msgstr ""
msgid "<p class=\"error\">Error: %s exited nonzero (%s)" msgid "<p class=\"error\">Error: %s exited nonzero (%s)"
msgstr "" msgstr ""
#: ../IkiWiki/Receive.pm:35
#, perl-format
msgid "cannot determine id of untrusted committer %s"
msgstr ""
#: ../IkiWiki/Receive.pm:85
#, fuzzy, perl-format
msgid "bad file name %s"
msgstr "hoppar över felaktigt filnamn %s"
#: ../IkiWiki/Render.pm:253 #: ../IkiWiki/Render.pm:253
#, perl-format #, perl-format
msgid "" msgid ""
@ -903,19 +941,19 @@ msgstr "filnamn för wrapper har inte angivits"
#. translators: The first parameter is a filename, and the second is #. translators: The first parameter is a filename, and the second is
#. translators: a (probably not translated) error message. #. translators: a (probably not translated) error message.
#: ../IkiWiki/Wrapper.pm:48 #: ../IkiWiki/Wrapper.pm:79
#, perl-format #, perl-format
msgid "failed to write %s: %s" msgid "failed to write %s: %s"
msgstr "misslyckades med att skriva %s: %s" msgstr "misslyckades med att skriva %s: %s"
#. translators: The parameter is a C filename. #. translators: The parameter is a C filename.
#: ../IkiWiki/Wrapper.pm:99 #: ../IkiWiki/Wrapper.pm:135
#, perl-format #, perl-format
msgid "failed to compile %s" msgid "failed to compile %s"
msgstr "misslyckades med att kompilera %s" msgstr "misslyckades med att kompilera %s"
#. translators: The parameter is a filename. #. translators: The parameter is a filename.
#: ../IkiWiki/Wrapper.pm:119 #: ../IkiWiki/Wrapper.pm:155
#, perl-format #, perl-format
msgid "successfully generated %s" msgid "successfully generated %s"
msgstr "generering av %s lyckades" msgstr "generering av %s lyckades"
@ -932,37 +970,37 @@ msgstr ""
msgid "usage: --set var=value" msgid "usage: --set var=value"
msgstr "" msgstr ""
#: ../ikiwiki.in:137 #: ../ikiwiki.in:138
msgid "generating wrappers.." msgid "generating wrappers.."
msgstr "genererar wrappers.." msgstr "genererar wrappers.."
#: ../ikiwiki.in:188 #: ../ikiwiki.in:195
msgid "rebuilding wiki.." msgid "rebuilding wiki.."
msgstr "bygger om wiki.." msgstr "bygger om wiki.."
#: ../ikiwiki.in:191 #: ../ikiwiki.in:198
msgid "refreshing wiki.." msgid "refreshing wiki.."
msgstr "uppdaterar wiki.." msgstr "uppdaterar wiki.."
#: ../IkiWiki.pm:458 #: ../IkiWiki.pm:466
msgid "Must specify url to wiki with --url when using --cgi" msgid "Must specify url to wiki with --url when using --cgi"
msgstr "Måste ange url till wiki med --url när --cgi används" msgstr "Måste ange url till wiki med --url när --cgi används"
#: ../IkiWiki.pm:504 #: ../IkiWiki.pm:512
msgid "cannot use multiple rcs plugins" msgid "cannot use multiple rcs plugins"
msgstr "" msgstr ""
#: ../IkiWiki.pm:533 #: ../IkiWiki.pm:541
#, perl-format #, perl-format
msgid "failed to load external plugin needed for %s plugin: %s" msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "" msgstr ""
#: ../IkiWiki.pm:1156 #: ../IkiWiki.pm:1165
#, fuzzy, perl-format #, fuzzy, perl-format
msgid "preprocessing loop detected on %s at depth %i" msgid "preprocessing loop detected on %s at depth %i"
msgstr "%s förbehandlingsslinga detekterades på %s, djup %i" msgstr "%s förbehandlingsslinga detekterades på %s, djup %i"
#: ../IkiWiki.pm:1665 #: ../IkiWiki.pm:1678
msgid "yes" msgid "yes"
msgstr "" msgstr ""

Some files were not shown because too many files have changed in this diff Show More