]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/inline.pm
Merge branch 'master' of ssh://git.ikiwiki.info/srv/git/ikiwiki.info
[git.ikiwiki.info.git] / IkiWiki / Plugin / inline.pm
index 3359af31410b3c7eb9a5b2c7655ce91c707acdba..715a3d6523cfcee4e57c125425d19cfdab110298 100644 (file)
@@ -299,7 +299,7 @@ sub preprocess_inline (@) {
            (exists $params{postform} && yesno($params{postform}))) &&
            IkiWiki->can("cgi_editpage")) {
                # Add a blog post form, with feed buttons.
            (exists $params{postform} && yesno($params{postform}))) &&
            IkiWiki->can("cgi_editpage")) {
                # Add a blog post form, with feed buttons.
-               my $formtemplate=template("blogpost.tmpl", blind_cache => 1);
+               my $formtemplate=template_depends("blogpost.tmpl", $params{page}, blind_cache => 1);
                $formtemplate->param(cgiurl => $config{cgiurl});
                $formtemplate->param(rootpage => rootpage(%params));
                $formtemplate->param(rssurl => $rssurl) if $feeds && $rss;
                $formtemplate->param(cgiurl => $config{cgiurl});
                $formtemplate->param(rootpage => rootpage(%params));
                $formtemplate->param(rssurl => $rssurl) if $feeds && $rss;
@@ -320,19 +320,28 @@ sub preprocess_inline (@) {
        }
        elsif ($feeds && !$params{preview} && ($emptyfeeds || @feedlist)) {
                # Add feed buttons.
        }
        elsif ($feeds && !$params{preview} && ($emptyfeeds || @feedlist)) {
                # Add feed buttons.
-               my $linktemplate=template("feedlink.tmpl", blind_cache => 1);
+               my $linktemplate=template_depends("feedlink.tmpl", $params{page}, blind_cache => 1);
                $linktemplate->param(rssurl => $rssurl) if $rss;
                $linktemplate->param(atomurl => $atomurl) if $atom;
                $ret.=$linktemplate->output;
        }
        
        if (! $feedonly) {
                $linktemplate->param(rssurl => $rssurl) if $rss;
                $linktemplate->param(atomurl => $atomurl) if $atom;
                $ret.=$linktemplate->output;
        }
        
        if (! $feedonly) {
-               require HTML::Template;
-               my @params=IkiWiki::template_params($params{template}.".tmpl", blind_cache => 1);
-               if (! @params) {
-                       error sprintf(gettext("nonexistant template %s"), $params{template});
+               my $template;
+               if (! $raw) {
+                       # cannot use wiki pages as templates; template not sanitized due to
+                       # format hook hack
+                       eval {
+                               $template=template_depends($params{template}.".tmpl", $params{page},
+                                       blind_cache => 1);
+                       };
+                       if ($@) {
+                               error gettext("failed to process template:")." $@";
+                       }
+                       if (! $template) {
+                               error sprintf(gettext("template %s not found"), $params{template}.".tmpl");
+                       }
                }
                }
-               my $template=HTML::Template->new(@params) unless $raw;
                my $needcontent=$raw || (!($archive && $quick) && $template->query(name => 'content'));
        
                foreach my $page (@list) {
                my $needcontent=$raw || (!($archive && $quick) && $template->query(name => 'content'));
        
                foreach my $page (@list) {
@@ -349,10 +358,11 @@ sub preprocess_inline (@) {
                                $template->param(pageurl => urlto($page, $params{destpage}));
                                $template->param(inlinepage => $page);
                                $template->param(title => pagetitle(basename($page)));
                                $template->param(pageurl => urlto($page, $params{destpage}));
                                $template->param(inlinepage => $page);
                                $template->param(title => pagetitle(basename($page)));
-                               $template->param(ctime => displaytime($pagectime{$page}, $params{timeformat}));
+                               $template->param(ctime => displaytime($pagectime{$page}, $params{timeformat}, 1));
                                $template->param(mtime => displaytime($pagemtime{$page}, $params{timeformat}));
                                $template->param(first => 1) if $page eq $list[0];
                                $template->param(last => 1) if $page eq $list[$#list];
                                $template->param(mtime => displaytime($pagemtime{$page}, $params{timeformat}));
                                $template->param(first => 1) if $page eq $list[0];
                                $template->param(last => 1) if $page eq $list[$#list];
+                               $template->param(html5 => $config{html5});
        
                                if ($actions) {
                                        my $file = $pagesources{$page};
        
                                if ($actions) {
                                        my $file = $pagesources{$page};
@@ -466,6 +476,13 @@ sub get_inline_content ($$) {
                       filter($page, $destpage,
                       readfile(srcfile($file))))));
                $nested--;
                       filter($page, $destpage,
                       readfile(srcfile($file))))));
                $nested--;
+               if (isinternal($page)) {
+                       # make inlined text of internal pages searchable
+                       run_hooks(indexhtml => sub {
+                               shift->(page => $page, destpage => $page,
+                                       content => $ret);
+                       });
+               }
        }
        
        if ($cached_destpage ne $destpage) {
        }
        
        if ($cached_destpage ne $destpage) {
@@ -491,16 +508,6 @@ sub date_822 ($) {
        return $ret;
 }
 
        return $ret;
 }
 
-sub date_3339 ($) {
-       my $time=shift;
-
-       my $lc_time=POSIX::setlocale(&POSIX::LC_TIME);
-       POSIX::setlocale(&POSIX::LC_TIME, "C");
-       my $ret=POSIX::strftime("%Y-%m-%dT%H:%M:%SZ", gmtime($time));
-       POSIX::setlocale(&POSIX::LC_TIME, $lc_time);
-       return $ret;
-}
-
 sub absolute_urls ($$) {
        # sucky sub because rss sucks
        my $content=shift;
 sub absolute_urls ($$) {
        # sucky sub because rss sucks
        my $content=shift;
@@ -534,7 +541,7 @@ sub genfeed ($$$$$@) {
        
        my $url=URI->new(encode_utf8(urlto($page,"",1)));
        
        
        my $url=URI->new(encode_utf8(urlto($page,"",1)));
        
-       my $itemtemplate=template($feedtype."item.tmpl", blind_cache => 1);
+       my $itemtemplate=template_depends($feedtype."item.tmpl", $page, blind_cache => 1);
        my $content="";
        my $lasttime = 0;
        foreach my $p (@pages) {
        my $content="";
        my $lasttime = 0;
        foreach my $p (@pages) {
@@ -598,7 +605,7 @@ sub genfeed ($$$$$@) {
                $lasttime = $pagemtime{$p} if $pagemtime{$p} > $lasttime;
        }
 
                $lasttime = $pagemtime{$p} if $pagemtime{$p} > $lasttime;
        }
 
-       my $template=template($feedtype."page.tmpl", blind_cache => 1);
+       my $template=template_depends($feedtype."page.tmpl", $page, blind_cache => 1);
        $template->param(
                title => $page ne "index" ? pagetitle($page) : $config{wikiname},
                wikiname => $config{wikiname},
        $template->param(
                title => $page ne "index" ? pagetitle($page) : $config{wikiname},
                wikiname => $config{wikiname},