]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
simplify example
[ikiwiki.git] / IkiWiki.pm
index 43995fc9665a3768b88ec7919862e49972bcf1ca..0f28801a60a354cf38b1b8f271133fb22acc60a0 100644 (file)
@@ -12,9 +12,9 @@ use open qw{:utf8 :std};
 
 use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase
        %pagestate %wikistate %renderedfiles %oldrenderedfiles
-       %pagesources %destsources %depends %depends_simple @mass_depends 
-       %hooks %forcerebuild %loaded_plugins %typedlinks %oldtypedlinks
-       %autofiles};
+       %pagesources %delpagesources %destsources %depends %depends_simple
+       @mass_depends %hooks %forcerebuild %loaded_plugins %typedlinks
+       %oldtypedlinks %autofiles};
 
 use Exporter q{import};
 our @EXPORT = qw(hook debug error htmlpage template template_depends
@@ -1004,7 +1004,7 @@ sub displaytime ($;$$) {
        my $time=formattime($_[0], $_[1]);
        if ($config{html5}) {
                return '<time datetime="'.date_3339($_[0]).'"'.
-                       ($_[2] ? ' pubdate' : '').
+                       ($_[2] ? ' pubdate="pubdate"' : '').
                        '>'.$time.'</time>';
        }
        else {
@@ -1745,10 +1745,10 @@ sub misctemplate ($$;@) {
        run_hooks(pagetemplate => sub {
                shift->(page => "", destpage => "", template => $template);
        });
+       templateactions($template, "");
 
        $template->param(
                dynamic => 1,
-               have_actions => 0, # force off
                title => $title,
                wikiname => $config{wikiname},
                content => $content,
@@ -1756,10 +1756,32 @@ sub misctemplate ($$;@) {
                html5 => $config{html5},
                @_,
        );
-
+       
        return $template->output;
 }
 
+sub templateactions ($$) {
+       my $template=shift;
+       my $page=shift;
+
+       my $have_actions=0;
+       my @actions;
+       run_hooks(pageactions => sub {
+               push @actions, map { { action => $_ } } 
+                       grep { defined } shift->(page => $page);
+       });
+       $template->param(actions => \@actions);
+
+       if ($config{cgiurl} && exists $hooks{auth}) {
+               $template->param(prefsurl => cgiurl(do => "prefs"));
+               $have_actions=1;
+       }
+
+       if ($have_actions || @actions) {
+               $template->param(have_actions => 1);
+       }
+}
+
 sub hook (@) {
        my %param=@_;
        
@@ -2342,13 +2364,14 @@ sub match_glob ($$;@) {
 }
 
 sub match_internal ($$;@) {
-       return match_glob($_[0], $_[1], @_, internal => 1)
+       return match_glob(shift, shift, @_, internal => 1)
 }
 
 sub match_page ($$;@) {
        my $page=shift;
-       my $match=match_glob($page, $_[1], @_);
-       if ($match && ! defined IkiWiki::pagetype($IkiWiki::pagesources{$page})) {
+       my $match=match_glob($page, shift, @_);
+       if ($match && ! (exists $IkiWiki::pagesources{$page}
+           && defined IkiWiki::pagetype($IkiWiki::pagesources{$page}))) {
                return IkiWiki::FailReason->new("$page is not a page");
        }
        else {