X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/178ab4c51cc64ad5fcfb191c1f93118b40d099c0..62aecc19f0585779a443fead2fae23bf3483e44e:/IkiWiki/Plugin/inline.pm diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index ecae47f1a..4dbf9f159 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -5,7 +5,6 @@ package IkiWiki::Plugin::inline; use warnings; use strict; use IkiWiki 1.00; -use IkiWiki::Render; # for displaytime use URI; sub import { #{{{ @@ -68,6 +67,7 @@ sub preprocess_inline (@) { #{{{ my $atom=($config{atom} && exists $params{atom}) ? yesno($params{atom}) : $config{atom}; my $quick=exists $params{quick} ? yesno($params{quick}) : 0; my $feeds=exists $params{feeds} ? yesno($params{feeds}) : !$quick; + $feeds=0 if $params{preview}; if (! exists $params{show} && ! $archive) { $params{show}=10; } @@ -78,11 +78,17 @@ sub preprocess_inline (@) { #{{{ $desc = $config{wikiname}; } my $actions=yesno($params{actions}); + if (exists $params{template}) { + $params{template}=~s/[^-_a-zA-Z0-9]+//g; + } + else { + $params{template} = $archive ? "archivepage" : "inlinepage"; + } my @list; foreach my $page (keys %pagesources) { next if $page eq $params{page}; - if (pagespec_match($page, $params{pages})) { + if (pagespec_match($page, $params{pages}, $params{page})) { push @list, $page; } } @@ -97,6 +103,10 @@ sub preprocess_inline (@) { #{{{ return sprintf(gettext("unknown sort type %s"), $params{sort}); } + if (yesno($params{reverse})) { + @list=reverse(@list); + } + if (exists $params{skip}) { @list=@list[$params{skip} .. scalar @list - 1]; } @@ -128,10 +138,11 @@ sub preprocess_inline (@) { #{{{ $ret.=$linktemplate->output; } - my $template=template( - ($archive ? "inlinepagetitle.tmpl" : "inlinepage.tmpl"), - blind_cache => 1, - ) unless $raw; + my @params=IkiWiki::template_params($params{template}.".tmpl", blind_cache => 1); + if (! @params) { + return sprintf(gettext("nonexistant template %s"), $params{template}); + } + my $template=HTML::Template->new(@params) unless $raw; foreach my $page (@list) { my $file = $pagesources{$page}; @@ -157,15 +168,23 @@ sub preprocess_inline (@) { #{{{ if ($actions) { my $file = $pagesources{$page}; my $type = pagetype($file); - if ($config{discussion} && - $page !~ /.*\/discussion$/ && - (length $config{cgiurl} || exists $links{$page."/".gettext("discussion")})) { - $template->param(have_actions => 1); - $template->param(discussionlink => htmllink($page, $params{page}, "Discussion", 1, 1)); + if ($config{discussion}) { + my $discussionlink=gettext("discussion"); + if ($page !~ /.*\/\Q$discussionlink\E$/ && + (length $config{cgiurl} || + exists $links{$page."/".$discussionlink})) { + $template->param(have_actions => 1); + $template->param(discussionlink => + htmllink($page, + $params{page}, + gettext("Discussion"), + noimageinline => 1, + forcesubpage => 1)); + } } if (length $config{cgiurl} && defined $type) { $template->param(have_actions => 1); - $template->param(editurl => cgiurl(do => "edit", page => $page)); + $template->param(editurl => cgiurl(do => "edit", page => pagetitle($page, 1))); } } @@ -188,19 +207,25 @@ sub preprocess_inline (@) { #{{{ } } - if ($feeds && $rss) { - will_render($params{page}, rsspage($params{page})); - writefile(rsspage($params{page}), $config{destdir}, - genfeed("rss", $rssurl, $desc, $params{page}, @list)); - $toping{$params{page}}=1 unless $config{rebuild}; - $feedlinks{$params{destpage}}=qq{}; - } - if ($feeds && $atom) { - will_render($params{page}, atompage($params{page})); - writefile(atompage($params{page}), $config{destdir}, - genfeed("atom", $atomurl, $desc, $params{page}, @list)); - $toping{$params{page}}=1 unless $config{rebuild}; - $feedlinks{$params{destpage}}=qq{}; + if ($feeds) { + if (exists $params{feedshow} && @list > $params{feedshow}) { + @list=@list[0..$params{feedshow} - 1]; + } + + if ($rss) { + will_render($params{page}, rsspage($params{page})); + writefile(rsspage($params{page}), $config{destdir}, + genfeed("rss", $rssurl, $desc, $params{page}, @list)); + $toping{$params{page}}=1 unless $config{rebuild}; + $feedlinks{$params{destpage}}=qq{}; + } + if ($atom) { + will_render($params{page}, atompage($params{page})); + writefile(atompage($params{page}), $config{destdir}, + genfeed("atom", $atomurl, $desc, $params{page}, @list)); + $toping{$params{page}}=1 unless $config{rebuild}; + $feedlinks{$params{destpage}}=qq{}; + } } return $ret; @@ -238,7 +263,7 @@ sub date_822 ($) { #{{{ eval q{use POSIX}; error($@) if $@; - my $lc_time= POSIX::setlocale(&POSIX::LC_TIME); + my $lc_time=POSIX::setlocale(&POSIX::LC_TIME); POSIX::setlocale(&POSIX::LC_TIME, "C"); my $ret=POSIX::strftime("%a, %d %b %Y %H:%M:%S %z", localtime($time)); POSIX::setlocale(&POSIX::LC_TIME, $lc_time); @@ -250,7 +275,7 @@ sub date_3339 ($) { #{{{ eval q{use POSIX}; error($@) if $@; - my $lc_time= POSIX::setlocale(&POSIX::LC_TIME); + my $lc_time=POSIX::setlocale(&POSIX::LC_TIME); POSIX::setlocale(&POSIX::LC_TIME, "C"); my $ret=POSIX::strftime("%Y-%m-%dT%H:%M:%SZ", localtime($time)); POSIX::setlocale(&POSIX::LC_TIME, $lc_time);