X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/fd95afe8ea8c01fd67b774ff8cf8bfae7a026430..0cd67c515fad03797fa7792c10b507a0abb77c28:/IkiWiki/Plugin/inline.pm diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index e8e71e552..3b49152f4 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -26,7 +26,7 @@ sub import { # Hook to change to do pinging since it's called late. # This ensures each page only pings once and prevents slow # pings interrupting page builds. - hook(type => "change", id => "inline", call => \&IkiWiki::pingurl); + hook(type => "rendered", id => "inline", call => \&IkiWiki::pingurl); } sub getopt () { @@ -128,7 +128,7 @@ sub sessioncgi ($$) { $add=1 unless length $add; $add++; } - $q->param('page', $page.$add); + $q->param('page', "/$from/$page$add"); # now go create the page $q->param('do', 'create'); # make sure the editpage plugin is loaded @@ -194,7 +194,8 @@ sub preprocess_inline (@) { } } - @list = map { bestlink($params{page}, $_) } + @list = grep { $_ ne '' } + map { bestlink($params{page}, $_) } split ' ', $params{pagenames}; if (yesno($params{reverse})) { @@ -290,8 +291,17 @@ sub preprocess_inline (@) { } } - my $rssurl=abs2rel($feedbase."rss".$feednum, dirname(htmlpage($params{destpage}))) if $feeds && $rss; - my $atomurl=abs2rel($feedbase."atom".$feednum, dirname(htmlpage($params{destpage}))) if $feeds && $atom; + my ($rssurl, $atomurl, $rssdesc, $atomdesc); + if ($feeds) { + if ($rss) { + $rssurl=abs2rel($feedbase."rss".$feednum, dirname(htmlpage($params{destpage}))); + $rssdesc = sprintf(gettext("%s (RSS feed)"), $desc); + } + if ($atom) { + $atomurl=abs2rel($feedbase."atom".$feednum, dirname(htmlpage($params{destpage}))); + $atomdesc = sprintf(gettext("%s (Atom feed)"), $desc); + } + } my $ret=""; @@ -302,8 +312,16 @@ sub preprocess_inline (@) { my $formtemplate=template_depends("blogpost.tmpl", $params{page}, blind_cache => 1); $formtemplate->param(cgiurl => IkiWiki::cgiurl()); $formtemplate->param(rootpage => rootpage(%params)); - $formtemplate->param(rssurl => $rssurl) if $feeds && $rss; - $formtemplate->param(atomurl => $atomurl) if $feeds && $atom; + if ($feeds) { + if ($rss) { + $formtemplate->param(rssurl => $rssurl); + $formtemplate->param(rssdesc => $rssdesc); + } + if ($atom) { + $formtemplate->param(atomurl => $atomurl); + $formtemplate->param(atomdesc => $atomdesc); + } + } if (exists $params{postformtext}) { $formtemplate->param(postformtext => $params{postformtext}); @@ -312,6 +330,10 @@ sub preprocess_inline (@) { $formtemplate->param(postformtext => gettext("Add a new post titled:")); } + if (exists $params{id}) { + $formtemplate->param(postformid => + $params{id}); + } $ret.=$formtemplate->output; # The post form includes the feed buttons, so @@ -321,8 +343,17 @@ sub preprocess_inline (@) { elsif ($feeds && !$params{preview} && ($emptyfeeds || @feedlist)) { # Add feed buttons. my $linktemplate=template_depends("feedlink.tmpl", $params{page}, blind_cache => 1); - $linktemplate->param(rssurl => $rssurl) if $rss; - $linktemplate->param(atomurl => $atomurl) if $atom; + if ($rss) { + $linktemplate->param(rssurl => $rssurl); + $linktemplate->param(rssdesc => $rssdesc); + } + if ($atom) { + $linktemplate->param(atomurl => $atomurl); + $linktemplate->param(atomdesc => $atomdesc); + } + if (exists $params{id}) { + $linktemplate->param(id => $params{id}); + } $ret.=$linktemplate->output; } @@ -417,9 +448,9 @@ sub preprocess_inline (@) { if (! $params{preview}) { writefile($rssp, $config{destdir}, genfeed("rss", - $config{url}."/".$rssp, $desc, $params{guid}, $params{destpage}, @feedlist)); + $config{url}."/".$rssp, $desc, $params{guid}, $params{page}, @feedlist)); $toping{$params{destpage}}=1 unless $config{rebuild}; - $feedlinks{$params{destpage}}.=qq{}; + $feedlinks{$params{destpage}}.=qq{}; } } if ($atom) { @@ -427,9 +458,9 @@ sub preprocess_inline (@) { will_render($params{destpage}, $atomp); if (! $params{preview}) { writefile($atomp, $config{destdir}, - genfeed("atom", $config{url}."/".$atomp, $desc, $params{guid}, $params{destpage}, @feedlist)); + genfeed("atom", $config{url}."/".$atomp, $desc, $params{guid}, $params{page}, @feedlist)); $toping{$params{destpage}}=1 unless $config{rebuild}; - $feedlinks{$params{destpage}}.=qq{}; + $feedlinks{$params{destpage}}.=qq{}; } } } @@ -476,7 +507,7 @@ sub get_inline_content ($$) { if (isinternal($page)) { # make inlined text of internal pages searchable run_hooks(indexhtml => sub { - shift->(page => $page, destpage => $page, + shift->(page => $page, destpage => $destpage, content => $ret); }); } @@ -534,13 +565,15 @@ sub absolute_urls ($$) { next unless $v_offset; # 0 v_offset means no value my $v = substr($text, $v_offset, $v_len); $v =~ s/^([\'\"])(.*)\1$/$2/; - if ($v=~/^#/) { + eval q{use HTML::Entities}; + my $dv = decode_entities($v); + if ($dv=~/^#/) { $v=$baseurl.$v; # anchor } - elsif ($v=~/^(?!\w+:)[^\/]/) { + elsif ($dv=~/^(?!\w+:)[^\/]/) { $v=$url.$v; # relative url } - elsif ($v=~/^\//) { + elsif ($dv=~/^\//) { if (! defined $urltop) { # what is the non path part of the url? my $top_uri = URI->new($url); @@ -645,7 +678,6 @@ sub genfeed ($$$$$@) { guid => $guid, feeddate => date_3339($lasttime), feedurl => $feedurl, - version => $IkiWiki::version, ); run_hooks(pagetemplate => sub { shift->(page => $page, destpage => $page,