Merge commit 'origin/master' into aggregateinternal
commit
18b3e970ff
38
IkiWiki.pm
38
IkiWiki.pm
|
@ -189,11 +189,6 @@ sub loadplugin ($) { #{{{
|
|||
sub error ($;$) { #{{{
|
||||
my $message=shift;
|
||||
my $cleaner=shift;
|
||||
if ($config{cgi}) {
|
||||
print "Content-type: text/html\n\n";
|
||||
print misctemplate(gettext("Error"),
|
||||
"<p>".gettext("Error").": $message</p>");
|
||||
}
|
||||
log_message('err' => $message) if $config{syslog};
|
||||
if (defined $cleaner) {
|
||||
$cleaner->();
|
||||
|
@ -773,21 +768,30 @@ sub preprocess ($$$;$$) { #{{{
|
|||
}
|
||||
my $ret;
|
||||
if (! $scan) {
|
||||
$ret=$hooks{preprocess}{$command}{call}->(
|
||||
@params,
|
||||
page => $page,
|
||||
destpage => $destpage,
|
||||
preview => $preprocess_preview,
|
||||
);
|
||||
$ret=eval {
|
||||
$hooks{preprocess}{$command}{call}->(
|
||||
@params,
|
||||
page => $page,
|
||||
destpage => $destpage,
|
||||
preview => $preprocess_preview,
|
||||
);
|
||||
};
|
||||
if ($@) {
|
||||
chomp $@;
|
||||
$ret="[[!$command <span class=\"error\">".
|
||||
gettext("Error").": $@"."</span>]]";
|
||||
}
|
||||
}
|
||||
else {
|
||||
# use void context during scan pass
|
||||
$hooks{preprocess}{$command}{call}->(
|
||||
@params,
|
||||
page => $page,
|
||||
destpage => $destpage,
|
||||
preview => $preprocess_preview,
|
||||
);
|
||||
eval {
|
||||
$hooks{preprocess}{$command}{call}->(
|
||||
@params,
|
||||
page => $page,
|
||||
destpage => $destpage,
|
||||
preview => $preprocess_preview,
|
||||
);
|
||||
};
|
||||
$ret="";
|
||||
}
|
||||
$preprocessing{$page}--;
|
||||
|
|
|
@ -750,4 +750,14 @@ sub cgi (;$$) { #{{{
|
|||
}
|
||||
} #}}}
|
||||
|
||||
# Does not need tobe called directly; all errors will go through here.
|
||||
sub cgierror ($) { #{{{
|
||||
my $message=shift;
|
||||
|
||||
print "Content-type: text/html\n\n";
|
||||
print misctemplate(gettext("Error"),
|
||||
"<p class=\"error\">".gettext("Error").": $message</p>");
|
||||
die $@;
|
||||
} #}}}
|
||||
|
||||
1
|
||||
|
|
|
@ -134,7 +134,7 @@ sub preprocess (@) { #{{{
|
|||
|
||||
foreach my $required (qw{name url}) {
|
||||
if (! exists $params{$required}) {
|
||||
return "[[aggregate ".sprintf(gettext("missing %s parameter"), $required)."]]";
|
||||
error sprintf(gettext("missing %s parameter"), $required)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ sub preprocess_if (@) { #{{{
|
|||
|
||||
foreach my $param (qw{test then}) {
|
||||
if (! exists $params{$param}) {
|
||||
return "[[if ".sprintf(gettext('%s parameter is required'), $param)."]]";
|
||||
error sprintf(gettext('%s parameter is required'), $param);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -38,10 +38,10 @@ sub preprocess (@) { #{{{
|
|||
return "" if $params{page} ne $params{destpage};
|
||||
|
||||
if (! exists $params{template} || ! length($params{template})) {
|
||||
return "[[meta ".gettext("template not specified")."]]";
|
||||
error gettext("template not specified")
|
||||
}
|
||||
if (! exists $params{match} || ! length($params{match})) {
|
||||
return "[[meta ".gettext("match not specified")."]]";
|
||||
error gettext("match not specified")
|
||||
}
|
||||
|
||||
$pagestate{$params{page}}{edittemplate}{$params{match}}=$params{template};
|
||||
|
@ -108,7 +108,9 @@ sub filltemplate ($$) { #{{{
|
|||
);
|
||||
};
|
||||
if ($@) {
|
||||
return "[[pagetemplate ".gettext("failed to process")." $@]]";
|
||||
# Indicate that the earlier preprocessor directive set
|
||||
# up a template that doesn't work.
|
||||
return "[[!pagetemplate ".gettext("failed to process")." $@]]";
|
||||
}
|
||||
|
||||
$template->param(name => $page);
|
||||
|
|
|
@ -15,7 +15,7 @@ sub preprocess (@) { #{{{
|
|||
my $f = `fortune 2>/dev/null`;
|
||||
|
||||
if ($?) {
|
||||
return "[[".gettext("fortune failed")."]]";
|
||||
error gettext("fortune failed");
|
||||
}
|
||||
else {
|
||||
return "<pre>$f</pre>\n";
|
||||
|
|
|
@ -19,7 +19,7 @@ sub preprocess (@) { #{{{
|
|||
# Avoid XSS attacks..
|
||||
my ($url)=$params{html}=~m#iframe\s+src="http://www\.google\.com/calendar/embed\?([^"<>]+)"#;
|
||||
if (! defined $url || ! length $url) {
|
||||
return "[[googlecalendar ".gettext("failed to find url in html")."]]";
|
||||
error gettext("failed to find url in html")
|
||||
}
|
||||
my ($height)=$params{html}=~m#height="(\d+)"#;
|
||||
my ($width)=$params{html}=~m#width="(\d+)"#;
|
||||
|
|
|
@ -55,7 +55,7 @@ sub render_graph (\%) { #{{{
|
|||
|
||||
waitpid $pid, 0;
|
||||
$SIG{PIPE}="DEFAULT";
|
||||
return "[[graph ".gettext("failed to run graphviz")."]]" if ($sigpipe);
|
||||
error gettext("failed to run graphviz") if $sigpipe;
|
||||
|
||||
if (! $params{preview}) {
|
||||
writefile($dest, $config{destdir}, $png, 1);
|
||||
|
@ -82,7 +82,7 @@ sub graph (@) { #{{{
|
|||
$params{src} = "" unless defined $params{src};
|
||||
$params{type} = "digraph" unless defined $params{type};
|
||||
$params{prog} = "dot" unless defined $params{prog};
|
||||
return "[[graph ".gettext("prog not a valid graphviz program")."]]" unless $graphviz_programs{$params{prog}};
|
||||
error gettext("prog not a valid graphviz program") unless $graphviz_programs{$params{prog}};
|
||||
|
||||
return render_graph(%params);
|
||||
} # }}}
|
||||
|
|
|
@ -46,14 +46,14 @@ sub preprocess (@) { #{{{
|
|||
my $base = IkiWiki::basename($file);
|
||||
|
||||
eval q{use Image::Magick};
|
||||
error($@) if $@;
|
||||
error gettext("Image::Magick is not installed") if $@;
|
||||
my $im = Image::Magick->new;
|
||||
my $imglink;
|
||||
my $r;
|
||||
|
||||
if ($params{size} ne 'full') {
|
||||
my ($w, $h) = ($params{size} =~ /^(\d+)x(\d+)$/);
|
||||
return "[[img ".sprintf(gettext('bad size "%s"'), $params{size})."]]"
|
||||
error sprintf(gettext('bad size "%s"'), $params{size})
|
||||
unless (defined $w && defined $h);
|
||||
|
||||
my $outfile = "$config{destdir}/$dir/${w}x${h}-$base";
|
||||
|
@ -63,14 +63,14 @@ sub preprocess (@) { #{{{
|
|||
|
||||
if (-e $outfile && (-M srcfile($file) >= -M $outfile)) {
|
||||
$r = $im->Read($outfile);
|
||||
return "[[img ".sprintf(gettext("failed to read %s: %s"), $outfile, $r)."]]" if $r;
|
||||
error sprintf(gettext("failed to read %s: %s"), $outfile, $r) if $r;
|
||||
}
|
||||
else {
|
||||
$r = $im->Read(srcfile($file));
|
||||
return "[[img ".sprintf(gettext("failed to read %s: %s"), $file, $r)."]]" if $r;
|
||||
error sprintf(gettext("failed to read %s: %s"), $file, $r) if $r;
|
||||
|
||||
$r = $im->Resize(geometry => "${w}x${h}");
|
||||
return "[[img ".sprintf(gettext("failed to resize: %s"), $r)."]]" if $r;
|
||||
error sprintf(gettext("failed to resize: %s"), $r) if $r;
|
||||
|
||||
# don't actually write file in preview mode
|
||||
if (! $params{preview}) {
|
||||
|
@ -84,7 +84,7 @@ sub preprocess (@) { #{{{
|
|||
}
|
||||
else {
|
||||
$r = $im->Read(srcfile($file));
|
||||
return "[[img ".sprintf(gettext("failed to read %s: %s"), $file, $r)."]]" if $r;
|
||||
error sprintf(gettext("failed to read %s: %s"), $file, $r) if $r;
|
||||
$imglink = $file;
|
||||
}
|
||||
|
||||
|
@ -101,7 +101,7 @@ sub preprocess (@) { #{{{
|
|||
}
|
||||
|
||||
if (! defined($im->Get("width")) || ! defined($im->Get("height"))) {
|
||||
return "[[img ".sprintf(gettext("failed to determine size of image %s"), $file)."]]";
|
||||
error sprintf(gettext("failed to determine size of image %s"), $file)
|
||||
}
|
||||
|
||||
my $imgtag='<img src="'.$imgurl.
|
||||
|
|
|
@ -98,7 +98,7 @@ sub preprocess_inline (@) { #{{{
|
|||
my %params=@_;
|
||||
|
||||
if (! exists $params{pages}) {
|
||||
return "[[inline ".gettext("missing pages parameter")."]]";
|
||||
error gettext("missing pages parameter");
|
||||
}
|
||||
my $raw=yesno($params{raw});
|
||||
my $archive=yesno($params{archive});
|
||||
|
|
|
@ -94,9 +94,7 @@ sub genmap ($) { #{{{
|
|||
|
||||
waitpid $pid, 0;
|
||||
$SIG{PIPE}="DEFAULT";
|
||||
if ($sigpipe) {
|
||||
return "[[linkmap ".gettext("failed to run dot")."]]";
|
||||
}
|
||||
error gettext("failed to run dot") if $sigpipe;
|
||||
|
||||
return $ret;
|
||||
} #}}}
|
||||
|
|
|
@ -138,7 +138,7 @@ sub preprocess (@) { #{{{
|
|||
# editable page as a stylesheet
|
||||
my $stylesheet=bestlink($page, $value.".css");
|
||||
if (! length $stylesheet) {
|
||||
return "[[meta ".gettext("stylesheet not found")."]]";
|
||||
error gettext("stylesheet not found")
|
||||
}
|
||||
push @{$metaheaders{$page}}, '<link href="'.urlto($stylesheet, $page).
|
||||
'" rel="'.encode_entities($rel).
|
||||
|
@ -172,7 +172,7 @@ sub preprocess (@) { #{{{
|
|||
add_depends($page, $redir_page);
|
||||
my $link=bestlink($page, $redir_page);
|
||||
if (! length $link) {
|
||||
return "[[meta ".gettext("redir page not found")."]]";
|
||||
error gettext("redir page not found")
|
||||
}
|
||||
|
||||
$value=urlto($link, $page);
|
||||
|
@ -185,7 +185,7 @@ sub preprocess (@) { #{{{
|
|||
my %seen;
|
||||
while (exists $pagestate{$at}{meta}{redir}) {
|
||||
if ($seen{$at}) {
|
||||
return "[[meta ".gettext("redir cycle is not allowed")."]]";
|
||||
error gettext("redir cycle is not allowed")
|
||||
}
|
||||
$seen{$at}=1;
|
||||
$at=$pagestate{$at}{meta}{redir};
|
||||
|
|
|
@ -18,7 +18,7 @@ sub preprocess (@) { #{{{
|
|||
if (! exists $params{template} ||
|
||||
$params{template} !~ /^[-A-Za-z0-9._+]+$/ ||
|
||||
! defined IkiWiki::template_file($params{template})) {
|
||||
return "[[pagetemplate ".gettext("bad or missing template")."]]";
|
||||
error gettext("bad or missing template")
|
||||
}
|
||||
|
||||
if ($params{page} eq $params{destpage}) {
|
||||
|
|
|
@ -34,7 +34,7 @@ sub needsbuild (@) { #{{{
|
|||
sub preprocess (@) { #{{{
|
||||
my %params=@_;
|
||||
if (! exists $params{from} || ! exists $params{to}) {
|
||||
return "[[ping ".gettext("requires 'from' and 'to' parameters")."]]";
|
||||
error gettext("requires 'from' and 'to' parameters");
|
||||
}
|
||||
if ($params{from} eq $config{url}) {
|
||||
$pagestate{$params{destpage}}{pinger}{$params{to}}=1;
|
||||
|
|
|
@ -29,7 +29,7 @@ sub preprocess (@) { #{{{
|
|||
|
||||
my $grmfile = '/usr/share/polygen/ita/polygen.grm';
|
||||
if (! -d '/usr/share/polygen') {
|
||||
return "[[".gettext("polygen not installed")."]]";
|
||||
error gettext("polygen not installed");
|
||||
}
|
||||
find({wanted => sub {
|
||||
if (substr($File::Find::name, -length($grammar)) eq $grammar) {
|
||||
|
@ -48,7 +48,7 @@ sub preprocess (@) { #{{{
|
|||
}
|
||||
|
||||
if ($?) {
|
||||
$res="[[".gettext("polygen failed")."]]";
|
||||
error gettext("command failed");
|
||||
}
|
||||
|
||||
# Strip trailing spaces and newlines so that we flow well with the
|
||||
|
|
|
@ -29,14 +29,14 @@ sub preprocess (@) { #{{{
|
|||
}
|
||||
|
||||
if (! exists $params{formula}) {
|
||||
return "[[postsparkline ".gettext("missing formula")."]]";
|
||||
error gettext("missing formula")
|
||||
}
|
||||
my $formula=$params{formula};
|
||||
$formula=~s/[^a-zA-Z0-9]*//g;
|
||||
$formula=IkiWiki::possibly_foolish_untaint($formula);
|
||||
if (! length $formula ||
|
||||
! IkiWiki::Plugin::postsparkline::formula->can($formula)) {
|
||||
return "[[postsparkline ".gettext("unknown formula")."]]";
|
||||
error gettext("unknown formula");
|
||||
}
|
||||
|
||||
add_depends($params{page}, $params{pages});
|
||||
|
@ -53,7 +53,7 @@ sub preprocess (@) { #{{{
|
|||
|
||||
my @data=eval qq{IkiWiki::Plugin::postsparkline::formula::$formula(\\\%params, \@list)};
|
||||
if ($@) {
|
||||
return "[[postsparkline error $@]]";
|
||||
error $@;
|
||||
}
|
||||
|
||||
if (! @data) {
|
||||
|
|
|
@ -24,7 +24,7 @@ sub preprocess_shortcut (@) { #{{{
|
|||
my %params=@_;
|
||||
|
||||
if (! defined $params{name} || ! defined $params{url}) {
|
||||
return "[[shortcut ".gettext("missing name or url parameter")."]]";
|
||||
error gettext("missing name or url parameter");
|
||||
}
|
||||
|
||||
hook(type => "preprocess", no_override => 1, id => $params{name},
|
||||
|
|
|
@ -60,13 +60,13 @@ sub preprocess (@) { #{{{
|
|||
}
|
||||
}
|
||||
elsif (! length $value) {
|
||||
return "[[sparkline ".gettext("parse error")." \"$key\"]]";
|
||||
error gettext("parse error")." \"$key\"";
|
||||
}
|
||||
elsif ($key eq 'featurepoint') {
|
||||
my ($x, $y, $color, $diameter, $text, $location)=
|
||||
split(/\s*,\s*/, $value);
|
||||
if (! defined $diameter || $diameter < 0) {
|
||||
return "[[sparkline ".gettext("bad featurepoint diameter")."]]";
|
||||
error gettext("bad featurepoint diameter");
|
||||
}
|
||||
$x=int($x);
|
||||
$y=int($y);
|
||||
|
@ -76,7 +76,7 @@ sub preprocess (@) { #{{{
|
|||
if (defined $location) {
|
||||
$location=$locmap{$location};
|
||||
if (! defined $location) {
|
||||
return "[[sparkline ".gettext("bad featurepoint location")."]]";
|
||||
error gettext("bad featurepoint location");
|
||||
}
|
||||
}
|
||||
$php.=qq{\$sparkline->SetFeaturePoint($x, $y, '$color', $diameter};
|
||||
|
@ -87,23 +87,23 @@ sub preprocess (@) { #{{{
|
|||
}
|
||||
|
||||
if ($c eq 0) {
|
||||
return "[[sparkline ".gettext("missing values")."]]";
|
||||
error gettext("missing values");
|
||||
}
|
||||
|
||||
my $height=int($params{height} || 20);
|
||||
if ($height < 2 || $height > 100) {
|
||||
return "[[sparkline ".gettext("bad height value")."]]";
|
||||
error gettext("bad height value");
|
||||
}
|
||||
if ($style eq "Bar") {
|
||||
$php.=qq{\$sparkline->Render($height);\n};
|
||||
}
|
||||
else {
|
||||
if (! exists $params{width}) {
|
||||
return "[[sparkline ".gettext("missing width parameter")."]]";
|
||||
error gettext("missing width parameter");
|
||||
}
|
||||
my $width=int($params{width});
|
||||
if ($width < 2 || $width > 1024) {
|
||||
return "[[sparkline ".gettext("bad width value")."]]";
|
||||
error gettext("bad width value");
|
||||
}
|
||||
$php.=qq{\$sparkline->RenderResampled($width, $height);\n};
|
||||
}
|
||||
|
@ -141,7 +141,7 @@ sub preprocess (@) { #{{{
|
|||
waitpid $pid, 0;
|
||||
$SIG{PIPE}="DEFAULT";
|
||||
if ($sigpipe) {
|
||||
return "[[sparkline ".gettext("failed to run php")."]]";
|
||||
error gettext("failed to run php");
|
||||
}
|
||||
|
||||
if (! $params{preview}) {
|
||||
|
|
|
@ -19,7 +19,7 @@ sub preprocess (@) { #{{{
|
|||
|
||||
if (exists $params{file}) {
|
||||
if (! $pagesources{$params{file}}) {
|
||||
return "[[table ".gettext("cannot find file")."]]";
|
||||
error gettext("cannot find file");
|
||||
}
|
||||
$params{data} = readfile(srcfile($params{file}));
|
||||
add_depends($params{page}, $params{file});
|
||||
|
@ -61,7 +61,7 @@ sub preprocess (@) { #{{{
|
|||
defined $params{delimiter} ? $params{delimiter} : "|",);
|
||||
}
|
||||
else {
|
||||
return "[[table ".gettext("unknown data format")."]]";
|
||||
error gettext("unknown data format");
|
||||
}
|
||||
|
||||
my $header;
|
||||
|
@ -69,7 +69,7 @@ sub preprocess (@) { #{{{
|
|||
$header=shift @data;
|
||||
}
|
||||
if (! @data) {
|
||||
return "[[table ".gettext("empty data")."]]";
|
||||
error gettext("empty data");
|
||||
}
|
||||
|
||||
my @lines;
|
||||
|
|
|
@ -16,7 +16,7 @@ sub preprocess (@) { #{{{
|
|||
my %params=@_;
|
||||
|
||||
if (! exists $params{id}) {
|
||||
return "[[template ".gettext("missing id parameter")."]]";
|
||||
error gettext("missing id parameter")
|
||||
}
|
||||
|
||||
my $template_page="templates/$params{id}";
|
||||
|
@ -42,7 +42,7 @@ sub preprocess (@) { #{{{
|
|||
);
|
||||
};
|
||||
if ($@) {
|
||||
return "[[template ".gettext("failed to process:")." $@]]";
|
||||
error gettext("failed to process:")." $@"
|
||||
}
|
||||
|
||||
$params{basename}=IkiWiki::basename($params{page});
|
||||
|
|
|
@ -14,7 +14,7 @@ sub preprocess (@) { #{{{
|
|||
|
||||
foreach my $param (qw{match pagespec}) {
|
||||
if (! exists $params{$param}) {
|
||||
return "[[testpagespec $param parameter is required]]";
|
||||
error sprintf(gettext("%s parameter is required"), $param);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,14 +27,14 @@ sub preprocess (@) { #{{{
|
|||
|
||||
my $code = $params{code};
|
||||
if (! defined $code && ! length $code) {
|
||||
return "[[teximg ".gettext("missing tex code"). "]]";
|
||||
error gettext("missing tex code");
|
||||
}
|
||||
|
||||
if (check($code)) {
|
||||
return create($code, check_height($height), \%params);
|
||||
}
|
||||
else {
|
||||
return "[[teximg ".gettext("code includes disallowed latex commands"). "]]";
|
||||
error gettext("code includes disallowed latex commands")
|
||||
}
|
||||
} #}}}
|
||||
|
||||
|
@ -85,7 +85,7 @@ sub create ($$$) { #{{{
|
|||
.qq{" class="teximg" />};
|
||||
}
|
||||
else {
|
||||
return qq{[[teximg <a href="$logurl">}.gettext("failed to generate image from code")."</a>]]";
|
||||
error qq{<a href="$logurl">}.gettext("failed to generate image from code")."</a>";
|
||||
}
|
||||
} #}}}
|
||||
|
||||
|
|
|
@ -229,10 +229,14 @@ sub render ($) { #{{{
|
|||
will_render($file, $file, 1);
|
||||
|
||||
if ($config{hardlink}) {
|
||||
prep_writefile($file, $config{destdir});
|
||||
unlink($config{destdir}."/".$file);
|
||||
if (link($srcfile, $config{destdir}."/".$file)) {
|
||||
return;
|
||||
# only hardlink if owned by same user
|
||||
my @stat=stat($srcfile);
|
||||
if ($stat[4] == $>) {
|
||||
prep_writefile($file, $config{destdir});
|
||||
unlink($config{destdir}."/".$file);
|
||||
if (link($srcfile, $config{destdir}."/".$file)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
# if hardlink fails, fall back to copying
|
||||
}
|
||||
|
|
|
@ -97,6 +97,8 @@ sub setup () { #{{{
|
|||
loadplugins();
|
||||
checkconfig();
|
||||
|
||||
require IkiWiki::Render;
|
||||
|
||||
if ($config{render}) {
|
||||
commandline_render();
|
||||
}
|
||||
|
|
|
@ -19,6 +19,12 @@ ikiwiki (2.54) UNRELEASED; urgency=low
|
|||
uuid in feeds. (smcv)
|
||||
* Move yesno function out of inline and into IkiWiki core, not exported.
|
||||
* meta: fix title() PageSpec (smcv)
|
||||
* Some footer style changes. (smcv)
|
||||
* Error handling improvement for preprocess hooks. It's now safe to call
|
||||
error() from such hooks; it will cause a nicely formatted error message
|
||||
to be inserted into the page.
|
||||
* Cut the size of the binary package in half by excluding pages for bugs
|
||||
and todo items from the html shipped in it.
|
||||
|
||||
-- Josh Triplett <josh@freedesktop.org> Wed, 09 Jul 2008 21:30:33 -0700
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ Source: ikiwiki
|
|||
Section: web
|
||||
Priority: optional
|
||||
Build-Depends: perl, debhelper (>= 5)
|
||||
Build-Depends-Indep: dpkg-dev (>= 1.9.0), libxml-simple-perl, libtext-markdown-perl | markdown, libtimedate-perl, libhtml-template-perl, libhtml-scrubber-perl, wdg-html-validator, libhtml-parser-perl, liburi-perl
|
||||
Build-Depends-Indep: dpkg-dev (>= 1.9.0), libxml-simple-perl, libtext-markdown-perl | markdown, libtimedate-perl, libhtml-template-perl, libhtml-scrubber-perl, wdg-html-validator, libhtml-parser-perl, liburi-perl, perlmagick
|
||||
Maintainer: Joey Hess <joeyh@debian.org>
|
||||
Uploaders: Joey Hess <joeyh@debian.org>, Josh Triplett <josh@freedesktop.org>
|
||||
Standards-Version: 3.8.0
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
Joey, I would like to see your blog script I've found
|
||||
at [[Tips|tips/blog_script]] page, but it seems that the URL
|
||||
(http://git.kitenet.net/?p=joey/home;a=blob_plain;f=bin/blog)
|
||||
to its Git repo is broken:
|
||||
|
||||
403 Forbidden - No such project
|
||||
|
||||
--[[Paweł|ptecza]]
|
||||
|
||||
> [[fixed|done]] --[[Joey]]
|
|
@ -0,0 +1,14 @@
|
|||
Trying to build current Git master in a (two weeks old - no DSL here) sid chroot triggers :
|
||||
|
||||
rendering news.mdwn
|
||||
Can't locate Image/Magick.pm in @INC (@INC contains: . blib/lib /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at (eval 175) line 2.
|
||||
BEGIN failed--compilation aborted at (eval 175) line 2.
|
||||
|
||||
make[1]: *** [extra_build] Error 2
|
||||
make[1]: Leaving directory `/tmp/buildd/ikiwiki-2.54'
|
||||
make: *** [build-stamp] Error 2
|
||||
|
||||
Adding perlmagick to the build-deps fixes it. I read somewhere in debian/changelog that this build-deb was not needed, but...
|
||||
|
||||
> It's not needed by the test suite, but once I added a img to the source
|
||||
> wiki, it became needed. [[done]] --[[Joey]]
|
|
@ -0,0 +1,7 @@
|
|||
After building a fresh deb from current Git master (9b62dac4bcf62f3a1f76ec5a7ed5a90db16ea1c8) :
|
||||
|
||||
$ ikiwiki --setup ~/ikiwiki.setup --rebuild
|
||||
Undefined subroutine &IkiWiki::refresh called at /usr/share/perl5/IkiWiki/Setup.pm line 113.
|
||||
|
||||
> [[done]], it just needed "require IkiWiki::Render" before it started
|
||||
> rendering. --[[smcv]]
|
|
@ -15,3 +15,21 @@ adding this `clear: both`?
|
|||
> before the modification date. So all of them have to clear both above and
|
||||
> below. I'm sure there are better ways for the CSS to handle that.
|
||||
> --[[Joey]]
|
||||
|
||||
>> There is indeed a better way - all the optional things below the
|
||||
>> content are wrapped in `<div id="footer">`, so to have the browser wait
|
||||
>> until all floating boxes have finished before rendering the footer, it
|
||||
>> would be sufficient to have `#footer { clear: both; }` and remove all
|
||||
>> the other footer-related `clear` attributes. I'm not sure what you mean
|
||||
>> by "clear above and below" - the clear attribute takes values none, left,
|
||||
>> right or both, and its purpose is to stop floating boxes (sidebars,
|
||||
>> mainly) from overlapping with footers.
|
||||
>>
|
||||
>> ... oh, I see what you mean - this affects inlines too. In inlinepage.tmpl
|
||||
>> we could wrap the "pseudo-footer" in `<div class="inlinefooter">` too?
|
||||
>> Then sites could choose whether to set clear:both on the inlinefooter
|
||||
>> or not, and this would be separate from the same styling on whole pages.
|
||||
>>
|
||||
>> [[done]] --[[smcv]]
|
||||
|
||||
[[patch]]
|
||||
|
|
|
@ -1,2 +1,5 @@
|
|||
ikiwiki will generate html formatted error messages to the command
|
||||
line if --cgi is set, even if it's not yet running as a cgi
|
||||
|
||||
> [[done]], at last. Oldest open bug.. just thought of an elegant fix!
|
||||
> --[[Joey]]
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
basewiki_brokenlinks.t fails when running dpkg-buildpackage in non-English environment : it greps for an (non-)error message that is i18n'd. This of course does not happen when building in a proper chroot environment... which happens to fail as well, for other reasons, but this will be for another bug.
|
||||
|
||||
The `LANG=` on line 9 does not seem to do what it's supposed to, go figure.
|
||||
|
||||
I've never had to understand the Unix locales, so I randomly tried to replace `LANG=` in basewiki_brokenlinks.t with :
|
||||
|
||||
- `LANG=C` : fails
|
||||
- `LANGUAGE=` : fails
|
||||
- `LANGUAGE=C` : works!
|
||||
|
||||
> For maximum precedence it should have been LC_ALL=C. [[done]], I think... --[[smcv]]
|
|
@ -412,12 +412,13 @@ Aborts with an error message. If the second parameter is passed, it is a
|
|||
function that is called after the error message is printed, to do any final
|
||||
cleanup.
|
||||
|
||||
Note that while any plugin can use this for a fatal error, plugins should
|
||||
try to avoid dying on bad input when building a page, as that will halt
|
||||
the entire wiki build and make the wiki unusable. So for example, if a
|
||||
[[ikiwiki/PreProcessorDirective]] is passed bad parameters, it's better to
|
||||
return an error message, which can appear on the wiki page, rather than
|
||||
calling error().
|
||||
If called inside a preprocess hook, error() does not abort the entire
|
||||
wiki build, but instead replaces the [[ikiwiki/PreProcessorDirective]] with
|
||||
a version containing the error message.
|
||||
|
||||
In other hooks, error() is a fatal error, so use with care. Try to avoid
|
||||
dying on bad input when building a page, as that will halt
|
||||
the entire wiki build and make the wiki unusable.
|
||||
|
||||
#### `template($;@)`
|
||||
|
||||
|
|
|
@ -169,7 +169,7 @@ be a guard on how high it will go.
|
|||
}
|
||||
my $num=$last{$page}++;
|
||||
if ($num > 25) {
|
||||
return "[[fib will only calculate the first 25 numbers in the sequence]]";
|
||||
error "can only calculate the first 25 numbers in the sequence";
|
||||
}
|
||||
return fib($num);
|
||||
}
|
||||
|
@ -182,7 +182,7 @@ does for numbers less than 1. Or for any number that's not an integer. In
|
|||
either case, it will run forever. Here's one way to fix that:
|
||||
|
||||
if (int($num) != $num || $num < 1) {
|
||||
return "[[fib positive integers only, please]]";
|
||||
error "positive integers only, please";
|
||||
}
|
||||
|
||||
As these security problems have demonstrated, even a simple input from the
|
||||
|
|
|
@ -2,7 +2,17 @@
|
|||
system developed by Matt Mackall. Ikiwiki supports storing a wiki in a
|
||||
mercurial repository.
|
||||
|
||||
Ikiwiki can run as a post-update hook to update a wiki whenever commits
|
||||
Ikiwiki can run as a `post-commit` and/or `incoming` hook to update a wiki whenever commits or remote pushes
|
||||
come in. When running as a [[cgi]] with Mercurial, ikiwiki automatically
|
||||
commits edited pages, and uses the Mercurial history to generate the
|
||||
[[RecentChanges]] page.
|
||||
|
||||
Example for a `.hg/hgrc` file in `$SRCDIR`:
|
||||
|
||||
[hooks]
|
||||
post-commit = /home/abe/bin/rebuildwiki
|
||||
incoming = /home/abe/bin/rebuildwiki
|
||||
|
||||
Do not use `commit` or `precommit` hooks or ikiwiki will run into a dead lock when committing in `$SRCDIR`
|
||||
|
||||
See also [[todo/mercurial|todo/mercurial]]
|
||||
|
|
|
@ -35,12 +35,14 @@
|
|||
padding: .2em .4em;
|
||||
}
|
||||
|
||||
.tags {
|
||||
.pagefooter {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.tags {
|
||||
}
|
||||
|
||||
#pageinfo {
|
||||
clear: both;
|
||||
margin: 1em 0;
|
||||
border-top: 1px solid #000;
|
||||
}
|
||||
|
@ -140,12 +142,15 @@ div.recentchanges {
|
|||
.pagedate,
|
||||
.pagelicense,
|
||||
.pagecopyright {
|
||||
clear: both;
|
||||
font-style: italic;
|
||||
display: block;
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.error {
|
||||
color: #C00;
|
||||
}
|
||||
|
||||
/* Used for invalid form fields. */
|
||||
.fb_invalid {
|
||||
color: red;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
I have a [blog](http://git.kitenet.net/?p=joey/home;a=blob_plain;f=bin/blog)
|
||||
I have a [blog](http://git.kitenet.net/?p=joey/home.git;a=blob_plain;f=bin/blog)
|
||||
program that I use to write blog posts in a text editor. The first line I
|
||||
enter is used as the title, and it automatically comes up with a unique page
|
||||
name based on the title and handles all the details of posting to my blog.
|
||||
|
|
|
@ -72,3 +72,8 @@ a dedicated plugin, called `genealogictitle` or whatever, and :
|
|||
-- intrigeri
|
||||
|
||||
> Plugin sounds reasonable. --[[Joey]]
|
||||
|
||||
>> Well, it seems I once more designed a solution before clearly
|
||||
>> defining my problem... What I really need is more generic, can be
|
||||
>> done as a plugin, and deserves its own [[todo|pedigree_plugin]], so
|
||||
>> I'm tagging this one wontfix^W [[done]]. I'm sorry. -- intrigeri
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
Recently I've wanted to colour some piece of text on my Ikiwiki page.
|
||||
It seems that Markdown can do it only using HTML tags, so I used
|
||||
<span class="color">foo bar baz</span>.
|
||||
|
||||
However, in my opinion mixing Markdown syntax and HTML tags is rather ugly,
|
||||
so maybe we should create a new color plugin to add more color to Ikiwiki ;)
|
||||
I know that another Wikis have similar plugin, for example
|
||||
[WikiDot](http://www.wikidot.com/).
|
||||
|
||||
I've noticed that htmlscrubber plugin strips `style` attribute, because of
|
||||
security, so probably we need to use `class` attribute of HTML. But then
|
||||
we have to customize our `local.css` file to add all color we want to use.
|
||||
It's not as easy in usage like color name or definition as plugin argument,
|
||||
but I don't have a better idea right now.
|
||||
|
||||
What do you think about it? --[[Paweł|ptecza]]
|
||||
|
||||
> Making a plugin preserve style attributes can be done, it just has to add
|
||||
> them after the sanitize step, which strips them. The general method is
|
||||
> adding placeholders first, and replacing them with the real html later.
|
||||
>
|
||||
> The hard thing to me seems to be finding a syntax that is better than a
|
||||
> `<span>`. A preprocessor directive is not really any less ugly than html
|
||||
> tags, though at least it could play nicely with nested markdown: --[[Joey]]
|
||||
>
|
||||
> \[[color red,green """
|
||||
> Xmas-colored markdown here
|
||||
> """]]
|
|
@ -480,4 +480,8 @@ It is in a [darcs repository](http://joyful.com/darcsweb/darcsweb.cgi?r=ikiwiki-
|
|||
> conflicts and return a page with conflict markers for the user to fix
|
||||
> the conflict.
|
||||
|
||||
I have addressed the recentchanges bit, you can find my hacked up darcs.pm at <http://web.mornfall.net/stuff/web-root/IkiWiki/Rcs/darcs.pm>.
|
||||
|
||||
It's got couple of FIXMEs, and a very site-specific filter for recentchanges. Not sure how to do that better though. I will eventually add web commits, probably of my own (and mention it here).
|
||||
|
||||
[[tag patch]]
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
* Need to get post commit hook working (or an example of how to use it.)
|
||||
* See below. --[[bma]]
|
||||
* rcs_notify is not implemented (not needed in this branch --[[Joey]])
|
||||
* Is the code sufficiently robust? It just warns when mercurial fails.
|
||||
* When rcs_commit is called with a $user that is an openid, it will be
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
After realizing (thanks to
|
||||
[[Allow_TITLE_to_include_part_of_the_path_in_addition_to_the_basename]])
|
||||
that I needed some kind of "parentlinks on steroids", I wrote a new
|
||||
plugin, called pedigree.
|
||||
|
||||
This plugin provides a bunch of loops that one can use in his/her
|
||||
`HTML::Template`'s to iterate over all or a subset of a page's
|
||||
parents. Inside these loops, half a dozen variables are made
|
||||
available, in addition to `PAGE` and `URL` that are already provided
|
||||
by parentlinks.
|
||||
|
||||
Amongst many possibilities, one can e.g. simply use this plugin to
|
||||
give every parent link a different `class=` attribute, depending
|
||||
either on its depth in the path leading to the current page, or on its
|
||||
distance to it.
|
||||
|
||||
The code and documentation (including simple and complex usage
|
||||
examples) are in the 'pedigree' Git branch in this repo:
|
||||
|
||||
git://repo.or.cz/ikiwiki/intrigeri.git
|
||||
|
||||
Seems there is also a [gitweb](http://repo.or.cz/w/ikiwiki/intrigeri.git).
|
||||
|
||||
> Ok, I'll take a look. BTW, could you allow user joey on repo.or.cz
|
||||
> push access to the main ikiwiki repo you set up there? --[[Joey]]
|
||||
|
||||
>> I did not. The main ikiwiki repo on repo.or.cz seems to have been
|
||||
>> been setup by johannes.schindelin@gmx.de ; mine is what they call
|
||||
>> a "fork" (but it's not, obviously).
|
||||
|
||||
Any opinions on the idea/design/implementation?
|
||||
|
||||
> Seems that there should be a more generic way to do `PEDIGREE_BUT_ROOT`
|
||||
> and `PEDIGREE_BUT_TWO_OLDEST` (also `is_second_ancestor`,
|
||||
> `is_grand_mother` etc). One way would be to include in `PEDIGREE`
|
||||
> a set of values like `depth_1`, `depth_2`, etc. The one corresponding
|
||||
> to the `absdepth` would be true. This would allow a template like this:
|
||||
|
||||
<TMPL_LOOP NAME="PEDIGREE">
|
||||
<TMPL_IF NAME="depth_1">
|
||||
</TMPL_ELSE>
|
||||
<TMPL_IF NAME="depth_2">
|
||||
</TMPL_ELSE>
|
||||
<TMPL_VAR PAGE> /* only showing pages 2 levels deep */
|
||||
</TMPL_IF>
|
||||
</TMPL_IF>
|
||||
</TMPL_LOOP>
|
||||
|
||||
> The only missing information would be `reldepth`, but in the above
|
||||
> example the author of that template knows that it's `absdepth - 1`
|
||||
> (Things would be a lot nicer if `HTML::Template` had equality tests!)
|
||||
>
|
||||
> Since this would make it more generic and also fix your one documented
|
||||
> bug, I can see no reason not to do it. ;-) --[[Joey]]
|
||||
|
||||
>> Thanks for your comments. I'll answer soon. (Grrr, I really
|
||||
>> need to find a way to edit this wiki offline, every minute
|
||||
>> online costs bucks to me, my old modem gently weeps,
|
||||
>> and I hate webbrowsers.) -- intrigeri
|
||||
|
||||
(I'll try never to rebase this branch, but writing this plugin has
|
||||
been a pretext for me to start learning Git, so...)
|
||||
|
||||
To finish with, it seems no plugin bundled with ikiwiki uses the current
|
||||
parentlinks implementation, so one could event think of moving it from the
|
||||
core to this plugin (which should then be enabled by default, since the
|
||||
default templates do use parentlinks ;).
|
||||
|
||||
> I think that moving parentlinks out to a plugin is a good idea.
|
||||
> However, if it's done, I think the plugin should be named parentlinks,
|
||||
> and should continue to use the same template variables as are used now,
|
||||
> to avoid needing to change custom templates. Pedigree is a quite nice
|
||||
> name, but renaming it to parentlinks seems to be the way to go to me.
|
||||
> --[[Joey]]
|
||||
|
||||
>> Agreed. -- intrigeri
|
|
@ -0,0 +1 @@
|
|||
I'm trying to add enough features/fix enough bugs to convert [smcv.pseudorandom.co.uk](http://smcv.pseudorandom.co.uk/) from Django + Python + misc hacks to ikiwiki.
|
|
@ -9,7 +9,7 @@ use IkiWiki::Setup::Standard {
|
|||
underlaydir => "underlays/basewiki",
|
||||
wrappers => [],
|
||||
discussion => 0,
|
||||
exclude => qr/\/discussion/,
|
||||
exclude => qr/\/discussion|bugs\/*|todo\/*/,
|
||||
locale => '',
|
||||
verbose => 1,
|
||||
syslog => 0,
|
||||
|
|
|
@ -123,7 +123,10 @@ sub main () { #{{{
|
|||
}
|
||||
elsif ($config{cgi}) {
|
||||
require IkiWiki::CGI;
|
||||
cgi();
|
||||
eval {cgi()};
|
||||
if ($@) {
|
||||
cgierror($@);
|
||||
}
|
||||
}
|
||||
elsif ($config{render}) {
|
||||
require IkiWiki::Render;
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2008-07-11 06:04-0400\n"
|
||||
"POT-Creation-Date: 2008-07-13 15:04-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -50,7 +50,7 @@ msgid "%s is not an editable page"
|
|||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/CGI.pm:438 ../IkiWiki/Plugin/brokenlinks.pm:24
|
||||
#: ../IkiWiki/Plugin/inline.pm:266 ../IkiWiki/Plugin/opendiscussion.pm:17
|
||||
#: ../IkiWiki/Plugin/inline.pm:261 ../IkiWiki/Plugin/opendiscussion.pm:17
|
||||
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:95
|
||||
#: ../IkiWiki/Render.pm:162
|
||||
msgid "discussion"
|
||||
|
@ -71,6 +71,10 @@ msgstr ""
|
|||
msgid "You are banned."
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/CGI.pm:758 ../IkiWiki/CGI.pm:759 ../IkiWiki.pm:782
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/aggregate.pm:53
|
||||
msgid "Aggregation triggered via web."
|
||||
msgstr ""
|
||||
|
@ -148,7 +152,7 @@ msgstr ""
|
|||
msgid "deleting bucket.."
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/amazon_s3.pm:37 ../IkiWiki/Setup.pm:115
|
||||
#: ../IkiWiki/Plugin/amazon_s3.pm:37 ../IkiWiki/Setup.pm:117
|
||||
msgid "done"
|
||||
msgstr ""
|
||||
|
||||
|
@ -190,7 +194,7 @@ msgstr ""
|
|||
msgid "There are no broken links!"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/conditional.pm:18
|
||||
#: ../IkiWiki/Plugin/conditional.pm:18 ../IkiWiki/Plugin/testpagespec.pm:17
|
||||
#, perl-format
|
||||
msgid "%s parameter is required"
|
||||
msgstr ""
|
||||
|
@ -208,7 +212,7 @@ msgstr ""
|
|||
msgid "edittemplate %s registered for %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/edittemplate.pm:111
|
||||
#: ../IkiWiki/Plugin/edittemplate.pm:113
|
||||
msgid "failed to process"
|
||||
msgstr ""
|
||||
|
||||
|
@ -228,6 +232,10 @@ msgstr ""
|
|||
msgid "prog not a valid graphviz program"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/img.pm:49
|
||||
msgid "Image::Magick is not installed"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/img.pm:56
|
||||
#, perl-format
|
||||
msgid "bad size \"%s\""
|
||||
|
@ -253,33 +261,33 @@ msgstr ""
|
|||
msgid "Must specify url to wiki with --url when using --rss or --atom"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/inline.pm:106
|
||||
#: ../IkiWiki/Plugin/inline.pm:101
|
||||
msgid "missing pages parameter"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/inline.pm:154
|
||||
#: ../IkiWiki/Plugin/inline.pm:149
|
||||
#, perl-format
|
||||
msgid "unknown sort type %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/inline.pm:225
|
||||
#: ../IkiWiki/Plugin/inline.pm:220
|
||||
msgid "Add a new post titled:"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/inline.pm:241
|
||||
#: ../IkiWiki/Plugin/inline.pm:236
|
||||
#, perl-format
|
||||
msgid "nonexistant template %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/inline.pm:274 ../IkiWiki/Render.pm:99
|
||||
#: ../IkiWiki/Plugin/inline.pm:269 ../IkiWiki/Render.pm:99
|
||||
msgid "Discussion"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/inline.pm:504
|
||||
#: ../IkiWiki/Plugin/inline.pm:506
|
||||
msgid "RPC::XML::Client not found, not pinging"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/linkmap.pm:98
|
||||
#: ../IkiWiki/Plugin/linkmap.pm:97
|
||||
msgid "failed to run dot"
|
||||
msgstr ""
|
||||
|
||||
|
@ -297,15 +305,15 @@ msgstr ""
|
|||
msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/meta.pm:137
|
||||
#: ../IkiWiki/Plugin/meta.pm:141
|
||||
msgid "stylesheet not found"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/meta.pm:171
|
||||
#: ../IkiWiki/Plugin/meta.pm:175
|
||||
msgid "redir page not found"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/meta.pm:184
|
||||
#: ../IkiWiki/Plugin/meta.pm:188
|
||||
msgid "redir cycle is not allowed"
|
||||
msgstr ""
|
||||
|
||||
|
@ -387,11 +395,11 @@ msgstr ""
|
|||
msgid "LWP not found, not pinging"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/poll.pm:65
|
||||
#: ../IkiWiki/Plugin/poll.pm:60
|
||||
msgid "vote"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/poll.pm:73
|
||||
#: ../IkiWiki/Plugin/poll.pm:68
|
||||
msgid "Total votes:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -400,7 +408,7 @@ msgid "polygen not installed"
|
|||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/polygen.pm:51
|
||||
msgid "polygen failed"
|
||||
msgid "command failed"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Plugin/postsparkline.pm:32
|
||||
|
@ -604,47 +612,47 @@ msgstr ""
|
|||
msgid "getctime not implemented"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Render.pm:286 ../IkiWiki/Render.pm:307
|
||||
#: ../IkiWiki/Render.pm:290 ../IkiWiki/Render.pm:311
|
||||
#, perl-format
|
||||
msgid "skipping bad filename %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Render.pm:361
|
||||
#: ../IkiWiki/Render.pm:365
|
||||
#, perl-format
|
||||
msgid "removing old page %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Render.pm:401
|
||||
#: ../IkiWiki/Render.pm:405
|
||||
#, perl-format
|
||||
msgid "scanning %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Render.pm:406
|
||||
#: ../IkiWiki/Render.pm:410
|
||||
#, perl-format
|
||||
msgid "rendering %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Render.pm:427
|
||||
#: ../IkiWiki/Render.pm:431
|
||||
#, perl-format
|
||||
msgid "rendering %s, which links to %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Render.pm:448
|
||||
#: ../IkiWiki/Render.pm:452
|
||||
#, perl-format
|
||||
msgid "rendering %s, which depends on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Render.pm:487
|
||||
#: ../IkiWiki/Render.pm:491
|
||||
#, perl-format
|
||||
msgid "rendering %s, to update its backlinks"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Render.pm:499
|
||||
#: ../IkiWiki/Render.pm:503
|
||||
#, perl-format
|
||||
msgid "removing %s, no longer rendered by %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Render.pm:523
|
||||
#: ../IkiWiki/Render.pm:527
|
||||
#, perl-format
|
||||
msgid "ikiwiki: cannot render %s"
|
||||
msgstr ""
|
||||
|
@ -660,11 +668,11 @@ msgstr ""
|
|||
msgid "generating wrappers.."
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Setup.pm:105
|
||||
#: ../IkiWiki/Setup.pm:107
|
||||
msgid "rebuilding wiki.."
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki/Setup.pm:108
|
||||
#: ../IkiWiki/Setup.pm:110
|
||||
msgid "refreshing wiki.."
|
||||
msgstr ""
|
||||
|
||||
|
@ -712,15 +720,15 @@ msgstr ""
|
|||
msgid "Must specify url to wiki with --url when using --cgi"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki.pm:194 ../IkiWiki.pm:195
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#. translators: The first parameter is a
|
||||
#. translators: preprocessor directive name,
|
||||
#. translators: the second a page name, the
|
||||
#. translators: third a number.
|
||||
#: ../IkiWiki.pm:770
|
||||
#: ../IkiWiki.pm:765
|
||||
#, perl-format
|
||||
msgid "%s preprocessing loop detected on %s at depth %i"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki.pm:1212
|
||||
msgid "yes"
|
||||
msgstr ""
|
||||
|
|
|
@ -6,7 +6,7 @@ use Test::More 'no_plan';
|
|||
ok(! system("mkdir t/tmp"));
|
||||
ok(! system("make -q ikiwiki.out"));
|
||||
ok(! system("make extra_install DESTDIR=`pwd`/t/tmp/install PREFIX=/usr >/dev/null"));
|
||||
ok(! system("LANG= perl -T -I. ./ikiwiki.out -plugin smiley -plugin brokenlinks -rebuild -underlaydir=t/tmp/install/usr/share/ikiwiki/basewiki -templatedir=templates t/basewiki_brokenlinks t/tmp/out"));
|
||||
ok(! system("LC_ALL=C perl -T -I. ./ikiwiki.out -plugin smiley -plugin brokenlinks -rebuild -underlaydir=t/tmp/install/usr/share/ikiwiki/basewiki -templatedir=templates t/basewiki_brokenlinks t/tmp/out"));
|
||||
ok(`grep 'no broken links' t/tmp/out/index.html`);
|
||||
ok(-e "t/tmp/out/style.css");
|
||||
ok(! system("rm -rf t/tmp t/basewiki_brokenlinks/.ikiwiki"));
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<div class="inlinepage">
|
||||
|
||||
<div class="inlineheader">
|
||||
|
||||
<TMPL_IF NAME="AUTHOR">
|
||||
<span class="author">
|
||||
<TMPL_IF NAME="AUTHORURL">
|
||||
|
@ -15,7 +18,14 @@
|
|||
<a href="<TMPL_VAR PAGEURL>"><TMPL_VAR TITLE></a>
|
||||
</TMPL_IF>
|
||||
</span>
|
||||
|
||||
</div><!--.inlineheader-->
|
||||
|
||||
<div class="inlinecontent">
|
||||
<TMPL_VAR CONTENT>
|
||||
</div><!--.inlinecontent-->
|
||||
|
||||
<div class="inlinefooter">
|
||||
|
||||
<span class="pagedate">
|
||||
Posted <TMPL_VAR CTIME>
|
||||
|
@ -52,7 +62,9 @@ License: <TMPL_VAR LICENSE>
|
|||
<li><TMPL_VAR DISCUSSIONLINK></li>
|
||||
</TMPL_IF>
|
||||
</ul>
|
||||
</div>
|
||||
</div><!--.actions-->
|
||||
</TMPL_IF>
|
||||
|
||||
</div>
|
||||
</div><!--.inlinefooter-->
|
||||
|
||||
</div><!--.inlinepage-->
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
</head>
|
||||
<body>
|
||||
|
||||
<div class="pageheader">
|
||||
<div class="header">
|
||||
<span>
|
||||
<TMPL_LOOP NAME="PARENTLINKS">
|
||||
|
@ -50,6 +51,7 @@
|
|||
</ul>
|
||||
</div>
|
||||
</TMPL_IF>
|
||||
</div> <!-- .pageheader -->
|
||||
|
||||
<TMPL_IF SIDEBAR>
|
||||
<div id="sidebar">
|
||||
|
@ -61,7 +63,7 @@
|
|||
<TMPL_VAR CONTENT>
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
<div id="footer" class="pagefooter">
|
||||
<div id="pageinfo">
|
||||
|
||||
<TMPL_IF NAME="TAGS">
|
||||
|
@ -88,7 +90,7 @@ Links:
|
|||
</span>
|
||||
</span>
|
||||
</TMPL_IF>
|
||||
</div>
|
||||
</div><!-- #backlinks -->
|
||||
</TMPL_IF>
|
||||
|
||||
<TMPL_IF COPYRIGHT>
|
||||
|
@ -110,10 +112,10 @@ Last edited <TMPL_VAR NAME=MTIME>
|
|||
<!-- Created <TMPL_VAR NAME=CTIME> -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div><!-- #pageinfo -->
|
||||
<TMPL_IF EXTRAFOOTER><TMPL_VAR EXTRAFOOTER></TMPL_IF>
|
||||
<!-- from <TMPL_VAR NAME=WIKINAME> -->
|
||||
</div>
|
||||
</div><!-- .pagefooter #footer -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
Loading…
Reference in New Issue