add displaytime hook

Need to use a hook because an exported function cannot be reliably
overridden. The replacement verstion was actually only affecting plugins
loaded after it.

formattime doesn't need a hook, since there's no reason to export it.
master
Joey Hess 2008-10-19 20:12:37 -04:00
parent 3bdc66d300
commit fd9393ef85
4 changed files with 27 additions and 9 deletions

View File

@ -898,12 +898,23 @@ sub abs2rel ($$) { #{{{
} #}}} } #}}}
sub displaytime ($;$) { #{{{ sub displaytime ($;$) { #{{{
# Plugins can override this function to mark up the time for my $time=shift;
# display. my $format=shift;
return formattime(@_); if (exists $hooks{displaytime}) {
my $ret;
run_hooks(displaytime => sub {
$ret=shift->($time, $format)
});
return $ret;
}
else {
return formattime($time, $format);
}
} #}}} } #}}}
sub formattime ($;$) { #{{{ sub formattime ($;$) { #{{{
# Plugins can override this function to mark up the time for
# display.
my $time=shift; my $time=shift;
my $format=shift; my $format=shift;
if (! defined $format) { if (! defined $format) {

View File

@ -12,6 +12,7 @@ sub import { #{{{
add_underlay("javascript"); add_underlay("javascript");
hook(type => "getsetup", id => "relativedate", call => \&getsetup); hook(type => "getsetup", id => "relativedate", call => \&getsetup);
hook(type => "format", id => "relativedate", call => \&format); hook(type => "format", id => "relativedate", call => \&format);
hook(type => "displaytime", id => "relativedate", call => \&display);
} # }}} } # }}}
sub getsetup () { #{{{ sub getsetup () { #{{{
@ -42,7 +43,7 @@ sub include_javascript ($;$) { #{{{
'" type="text/javascript" charset="utf-8"></script>'; '" type="text/javascript" charset="utf-8"></script>';
} #}}} } #}}}
sub IkiWiki::displaytime ($;$) { #{{{ sub display ($;$) { #{{{
my $time=shift; my $time=shift;
my $format=shift; my $format=shift;

View File

@ -196,7 +196,6 @@ generating the page.
hook(type => "pagetemplate", id => "foo", call => \&pagetemplate); hook(type => "pagetemplate", id => "foo", call => \&pagetemplate);
[[Templates|wikitemplates]] are filled out for many different things in [[Templates|wikitemplates]] are filled out for many different things in
ikiwiki, like generating a page, or part of a blog page, or an rss feed, or ikiwiki, like generating a page, or part of a blog page, or an rss feed, or
a cgi. This hook allows modifying the variables available on those a cgi. This hook allows modifying the variables available on those
@ -361,6 +360,13 @@ This hook is called whenever ikiwiki normally saves its state, just before
the state is saved. The function can save other state, modify values before the state is saved. The function can save other state, modify values before
they're saved, etc. they're saved, etc.
### displaytime
hook(type => "displaytime", id => "foo", call => \&display);
This hook can be registered to override the regular `displaytime` function.
Only the last displaytime hook will be used.
### renamepage ### renamepage
hook(type => "renamepage", id => "foo", call => \&renamepage); hook(type => "renamepage", id => "foo", call => \&renamepage);

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-19 19:13-0400\n" "POT-Creation-Date: 2008-10-19 20:06-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -48,7 +48,7 @@ msgstr ""
msgid "You are banned." msgid "You are banned."
msgstr "" msgstr ""
#: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1173 #: ../IkiWiki/CGI.pm:385 ../IkiWiki/CGI.pm:386 ../IkiWiki.pm:1182
msgid "Error" msgid "Error"
msgstr "" msgstr ""
@ -926,12 +926,12 @@ msgstr ""
msgid "failed to load external plugin needed for %s plugin: %s" msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "" msgstr ""
#: ../IkiWiki.pm:1156 #: ../IkiWiki.pm:1165
#, perl-format #, perl-format
msgid "preprocessing loop detected on %s at depth %i" msgid "preprocessing loop detected on %s at depth %i"
msgstr "" msgstr ""
#: ../IkiWiki.pm:1665 #: ../IkiWiki.pm:1674
msgid "yes" msgid "yes"
msgstr "" msgstr ""