From 2b569f99d9e7f1d4d30c7f3adde9729ff4d868cf Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 19 Oct 2008 19:13:40 -0400 Subject: fix relativedate timezone inclusion The machine parseable date needs to include a timezone. Also, simplified the interface for date display. --- IkiWiki/Plugin/relativedate.pm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'IkiWiki/Plugin/relativedate.pm') diff --git a/IkiWiki/Plugin/relativedate.pm b/IkiWiki/Plugin/relativedate.pm index 2895f6d57..a918889d2 100644 --- a/IkiWiki/Plugin/relativedate.pm +++ b/IkiWiki/Plugin/relativedate.pm @@ -2,8 +2,11 @@ package IkiWiki::Plugin::relativedate; use warnings; +no warnings 'redefine'; use strict; use IkiWiki 2.00; +use POSIX; +use Encode; sub import { #{{{ add_underlay("javascript"); @@ -39,4 +42,17 @@ sub include_javascript ($;$) { #{{{ '" type="text/javascript" charset="utf-8">'; } #}}} +sub IkiWiki::displaytime ($;$) { #{{{ + my $time=shift; + my $format=shift; + + # This needs to be in a form that can be parsed by javascript. + # Being fairly human readable is also nice, as it will be exposed as the title + # if javascript is not available. + my $gmtime=decode_utf8(POSIX::strftime("%a, %d %b %Y %H:%M:%S %z", gmtime($time))); + + return ''. + IkiWiki::formattime($time, $format).''; +} #}}} + 1 -- cgit v1.2.3 From db146d9f1e70b69b13b02b7484027b288de5decf Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 19 Oct 2008 19:39:32 -0400 Subject: need to use localtime, fix width --- IkiWiki/Plugin/relativedate.pm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'IkiWiki/Plugin/relativedate.pm') diff --git a/IkiWiki/Plugin/relativedate.pm b/IkiWiki/Plugin/relativedate.pm index a918889d2..0c9426dda 100644 --- a/IkiWiki/Plugin/relativedate.pm +++ b/IkiWiki/Plugin/relativedate.pm @@ -47,9 +47,10 @@ sub IkiWiki::displaytime ($;$) { #{{{ my $format=shift; # This needs to be in a form that can be parsed by javascript. - # Being fairly human readable is also nice, as it will be exposed as the title - # if javascript is not available. - my $gmtime=decode_utf8(POSIX::strftime("%a, %d %b %Y %H:%M:%S %z", gmtime($time))); + # Being fairly human readable is also nice, as it will be exposed + # as the title if javascript is not available. + my $gmtime=decode_utf8(POSIX::strftime("%a, %d %b %Y %H:%M:%S %z", + localtime($time))); return ''. IkiWiki::formattime($time, $format).''; -- cgit v1.2.3 From fd9393ef8575ad4a8966ae7f5310aab688dedf48 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 19 Oct 2008 20:12:37 -0400 Subject: 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. --- IkiWiki.pm | 17 ++++++++++++++--- IkiWiki/Plugin/relativedate.pm | 3 ++- doc/plugins/write.mdwn | 8 +++++++- po/ikiwiki.pot | 8 ++++---- 4 files changed, 27 insertions(+), 9 deletions(-) (limited to 'IkiWiki/Plugin/relativedate.pm') diff --git a/IkiWiki.pm b/IkiWiki.pm index 1f4d40d41..207ca87fb 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -898,12 +898,23 @@ sub abs2rel ($$) { #{{{ } #}}} sub displaytime ($;$) { #{{{ - # Plugins can override this function to mark up the time for - # display. - return formattime(@_); + my $time=shift; + my $format=shift; + if (exists $hooks{displaytime}) { + my $ret; + run_hooks(displaytime => sub { + $ret=shift->($time, $format) + }); + return $ret; + } + else { + return formattime($time, $format); + } } #}}} sub formattime ($;$) { #{{{ + # Plugins can override this function to mark up the time for + # display. my $time=shift; my $format=shift; if (! defined $format) { diff --git a/IkiWiki/Plugin/relativedate.pm b/IkiWiki/Plugin/relativedate.pm index 0c9426dda..d9d8f7776 100644 --- a/IkiWiki/Plugin/relativedate.pm +++ b/IkiWiki/Plugin/relativedate.pm @@ -12,6 +12,7 @@ sub import { #{{{ add_underlay("javascript"); hook(type => "getsetup", id => "relativedate", call => \&getsetup); hook(type => "format", id => "relativedate", call => \&format); + hook(type => "displaytime", id => "relativedate", call => \&display); } # }}} sub getsetup () { #{{{ @@ -42,7 +43,7 @@ sub include_javascript ($;$) { #{{{ '" type="text/javascript" charset="utf-8">'; } #}}} -sub IkiWiki::displaytime ($;$) { #{{{ +sub display ($;$) { #{{{ my $time=shift; my $format=shift; diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index daf70c8e2..856b34ba1 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -196,7 +196,6 @@ generating the page. hook(type => "pagetemplate", id => "foo", call => \&pagetemplate); - [[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 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 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 hook(type => "renamepage", id => "foo", call => \&renamepage); diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index 89cca9ff4..335575f02 100644 --- a/po/ikiwiki.pot +++ b/po/ikiwiki.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -48,7 +48,7 @@ msgstr "" msgid "You are banned." 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" msgstr "" @@ -926,12 +926,12 @@ msgstr "" msgid "failed to load external plugin needed for %s plugin: %s" msgstr "" -#: ../IkiWiki.pm:1156 +#: ../IkiWiki.pm:1165 #, perl-format msgid "preprocessing loop detected on %s at depth %i" msgstr "" -#: ../IkiWiki.pm:1665 +#: ../IkiWiki.pm:1674 msgid "yes" msgstr "" -- cgit v1.2.3