]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Plugin/comments.pm
comments: use global configuration for allow_directives, commit, and pagename
[ikiwiki.git] / IkiWiki / Plugin / comments.pm
index ea106a90fda800c686cb6a1379408ec2b0853a81..80469f503b4a8689cfcdba770f1ccb5a266b332f 100644 (file)
@@ -33,17 +33,61 @@ 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 => 'Allow directives in newly posted comments?',
+                       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,
+               },
 } #}}}
 
 # Somewhat based on IkiWiki::Plugin::inline blog posting support
 sub preprocess (@) { #{{{
        my %params=@_;
 
-       unless (length $config{cgiurl}) {
-               error(gettext("[[!comments plugin requires CGI enabled]]"));
-       }
+       return "";
 
        my $page = $params{page};
        $pagestate{$page}{comments}{comments} = defined $params{closed}
@@ -107,6 +151,7 @@ sub getcgiuser ($) { # {{{
 } # }}}
 
 # FIXME: logic adapted from recentchanges, should be common code?
+# returns (author URL, pretty-printed version)
 sub linkuser ($) { # {{{
        my $user = shift;
        my $oiduser = eval { IkiWiki::openiduser($user) };
@@ -175,10 +220,9 @@ sub sessioncgi ($$) { #{{{
                error(gettext("bad page name"));
        }
 
-       my $allow_directives = $pagestate{$page}{comments}{allowdirectives};
-       my $commit_comments = defined $pagestate{$page}{comments}{commit}
-               ? $pagestate{$page}{comments}{commit}
-               : 1;
+       my $allow_directives = $config{comments_allowdirectives};
+       my $commit_comments = $config{comments_commit};
+       my $comments_pagename = $config{comments_pagename};
 
        # FIXME: is this right? Or should we be using the candidate subpage
        # (whatever that might mean) as the base URL?