X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/dd1fa13bce872141442ff134610e4b9175605a4e..38c92e63bb012da98019faf9bc11037c5cbd5a99:/IkiWiki/Plugin/comments.pm diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 888c9fd9c..8d333f05f 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -9,6 +9,7 @@ use warnings; use strict; use IkiWiki 2.00; use Encode; +use POSIX qw(strftime); use constant PREVIEW => "Preview"; use constant POST_COMMENT => "Post comment"; @@ -17,7 +18,7 @@ use constant CANCEL => "Cancel"; sub import { #{{{ hook(type => "checkconfig", id => 'comments', call => \&checkconfig); hook(type => "getsetup", id => 'comments', call => \&getsetup); - hook(type => "preprocess", id => 'comment', call => \&preprocess); + hook(type => "preprocess", id => '_comment', call => \&preprocess); hook(type => "sessioncgi", id => 'comment', call => \&sessioncgi); hook(type => "htmlize", id => "_comment", call => \&htmlize); hook(type => "pagetemplate", id => "comments", call => \&pagetemplate); @@ -25,6 +26,68 @@ sub import { #{{{ IkiWiki::loadplugin("inline"); } # }}} +sub getsetup () { #{{{ + return + plugin => { + safe => 1, + rebuild => 1, + }, + # Pages where comments are shown, but new comments are not + # allowed, will show "Comments are closed". + comments_shown_pagespec => { + type => 'pagespec', + example => 'blog/*', + default => '', + description => 'PageSpec for pages where comments will be shown inline', + link => 'ikiwiki/PageSpec', + safe => 1, + rebuild => 1, + }, + comments_open_pagespec => { + type => 'pagespec', + example => 'blog/* and created_after(close_old_comments)', + default => '', + description => 'PageSpec for pages where new comments can be posted', + link => 'ikiwiki/PageSpec', + safe => 1, + rebuild => 1, + }, + comments_pagename => { + type => 'string', + example => 'comment_', + default => 'comment_', + description => 'Base name for comments, e.g. "comment_" for pages like "sandbox/comment_12"', + safe => 0, # manual page moving required + rebuild => undef, + }, + comments_allowdirectives => { + type => 'boolean', + default => 0, + example => 0, + description => 'Interpret directives in comments?', + safe => 1, + rebuild => 0, + }, + comments_allowauthor => { + type => 'boolean', + default => 0, + example => 0, + description => 'Allow anonymous commenters to set an author name?', + safe => 1, + rebuild => 0, + }, + comments_commit => { + type => 'boolean', + example => 1, + default => 1, + description => 'commit comments to the VCS', + # old uncommitted comments are likely to cause + # confusion if this is changed + safe => 0, + rebuild => 0, + }, +} #}}} + sub htmlize { # {{{ my %params = @_; return $params{content}; @@ -144,68 +207,6 @@ sub preprocess { # {{{ return $content; } # }}} -sub getsetup () { #{{{ - return - plugin => { - safe => 1, - rebuild => 1, - }, - # Pages where comments are shown, but new comments are not - # allowed, will show "Comments are closed". - comments_shown_pagespec => { - type => 'pagespec', - example => 'blog/*', - default => '', - description => 'PageSpec for pages where comments will be shown inline', - link => 'ikiwiki/PageSpec', - safe => 1, - rebuild => 1, - }, - comments_open_pagespec => { - type => 'pagespec', - example => 'blog/* and created_after(close_old_comments)', - default => '', - description => 'PageSpec for pages where new comments can be posted', - link => 'ikiwiki/PageSpec', - safe => 1, - rebuild => 1, - }, - comments_pagename => { - type => 'string', - example => 'comment_', - default => 'comment_', - description => 'Base name for comments, e.g. "comment_" for pages like "sandbox/comment_12"', - safe => 0, # manual page moving will required - rebuild => undef, - }, - comments_allowdirectives => { - type => 'boolean', - default => 0, - example => 0, - description => 'Interpret directives in comments?', - safe => 1, - rebuild => 0, - }, - comments_allowauthor => { - type => 'boolean', - default => 0, - example => 0, - description => 'Allow anonymous commenters to set an author name?', - safe => 1, - rebuild => 0, - }, - comments_commit => { - type => 'boolean', - example => 1, - default => 1, - description => 'commit comments to the VCS', - # old uncommitted comments are likely to cause - # confusion if this is changed - safe => 0, - rebuild => 0, - }, -} #}}} - sub checkconfig () { #{{{ $config{comments_commit} = 1 unless defined $config{comments_commit}; $config{comments_pagename} = 'comment_' @@ -403,7 +404,7 @@ sub sessioncgi ($$) { #{{{ my $anchor = "${comments_pagename}${i}"; $editcontent =~ s/"/\\"/g; - my $content = "[[!comment format=$type\n"; + my $content = "[[!_comment format=$type\n"; # FIXME: handling of double quotes probably wrong? if (defined $session->param('name')) { @@ -437,7 +438,7 @@ sub sessioncgi ($$) { #{{{ $content .= " subject=\"$subject\"\n"; } - $content .= " date=\"" . IkiWiki::formattime(time, '%X %x') . "\"\n"; + $content .= " date=\"" . decode_utf8(strftime('%Y-%m-%dT%H:%M:%SZ', gmtime)) . "\"\n"; $content .= " content=\"\"\"\n$editcontent\n\"\"\"]]\n";