return $ret;
}
-sub displaytime ($;$) {
+sub displaytime ($;$$) {
# Plugins can override this function to mark up the time to
# display.
- return '<span class="date">'.formattime(@_).'</span>';
+ my $time=formattime($_[0], $_[1]);
+ if ($config{html5}) {
+ return '<time datetime="'.date_3339($_[0]).'"'.
+ ($_[2] ? ' pubdate' : '').
+ '>'.$time.'</time>';
+ }
+ else {
+ return '<span class="date">'.$time.'</span>';
+ }
}
sub formattime ($;$) {
return decode_utf8(POSIX::strftime($format, localtime($time)));
}
+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 beautify_urlpath ($) {
my $url=shift;
my $template = template("comment.tmpl");
$template->param(content => $preview);
- $template->param(ctime => displaytime($time));
+ $template->param(ctime => displaytime($time, undef, 1));
IkiWiki::run_hooks(pagetemplate => sub {
shift->(page => $location,
$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];
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;
'" type="text/javascript" charset="utf-8"></script>';
}
-sub mydisplaytime ($;$) {
+sub mydisplaytime ($;$$) {
my $time=shift;
my $format=shift;
+ my $pubdate=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
my $gmtime=decode_utf8(POSIX::strftime("%a, %d %b %Y %H:%M:%S %z",
localtime($time)));
- return '<span class="relativedate" title="'.$gmtime.'">'.
- IkiWiki::formattime($time, $format).'</span>';
+ my $mid=' class="relativedate" title="'.$gmtime.'">'.
+ IkiWiki::formattime($time, $format);
+
+ if ($config{html5}) {
+ return '<time datetime="'.IkiWiki::date_3339($time).'"'.
+ ($pubdate ? ' pubdate' : '').$mid.'</time>';
+ }
+ else {
+ return '<span'.$mid.'</span>';
+ }
}
1
backlinks => $backlinks,
more_backlinks => $more_backlinks,
mtime => displaytime($pagemtime{$page}),
- ctime => displaytime($pagectime{$page}),
+ ctime => displaytime($pagectime{$page}, undef, 1),
baseurl => baseurl($page),
html5 => $config{html5},
);
+ikiwiki (3.20100502) UNRELEASED; urgency=low
+
+ * Add parameter to displaytime to specify that it is a pubdate,
+ and in html5 mode, use time tag.
+
+ -- Joey Hess <joeyh@debian.org> Sun, 02 May 2010 13:22:50 -0400
+
ikiwiki (3.20100501) unstable; urgency=low
* TMPL_INCLUDE re-enabled for templates read from the templatedir.
> Also, the [[plugins/relativedate]] plugin needs to be updated to
> support relatatizing the contents of time elements. --[[Joey]]
+> Done and done; in html5 mode it uses the time tag, and even
+> adds pubdate when displaying ctimes. --[[Joey]]
+
## tidy plugin
Will reformat html5 to html4.
If the directory name is not absolute, ikiwiki will assume it is in
the parent directory of the configured underlaydir.
-### `displaytime($;$)`
+### `displaytime($;$$)`
Given a time, formats it for display.
The optional second parameter is a strftime format to use to format the
time.
+If the third parameter is true, this is the publication time of a page.
+(Ie, set the html5 pubdate attribute.)
+
### `gettext`
This is the standard gettext function, although slightly optimised.