]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Plugin/comments.pm
Merge commit 'schmonz/master' into cvs
[ikiwiki.git] / IkiWiki / Plugin / comments.pm
index 2ad422f5f678028c83bfe3a9fbc68e7528135414..517e16f9ff8afd0ca3de21df8ace8558a03173bb 100644 (file)
@@ -21,6 +21,8 @@ my %commentstate;
 sub import {
        hook(type => "checkconfig", id => 'comments',  call => \&checkconfig);
        hook(type => "getsetup", id => 'comments',  call => \&getsetup);
+       hook(type => "preprocess", id => 'comment', call => \&preprocess);
+       # here for backwards compatability with old comments
        hook(type => "preprocess", id => '_comment', call => \&preprocess);
        hook(type => "sessioncgi", id => 'comment', call => \&sessioncgi);
        hook(type => "htmlize", id => "_comment", call => \&htmlize);
@@ -287,10 +289,15 @@ sub editcomment ($$) {
        else {
                $type = $config{default_pageext};
        }
+
+
        my @page_types;
        if (exists $IkiWiki::hooks{htmlize}) {
-               @page_types = grep { ! /^_/ } keys %{$IkiWiki::hooks{htmlize}};
+               foreach my $key (grep { !/^_/ } keys %{$IkiWiki::hooks{htmlize}}) {
+                       push @page_types, [$key, $IkiWiki::hooks{htmlize}{$key}{longname} || $key];
+               }
        }
+       @page_types=sort @page_types;
 
        $form->field(name => 'do', type => 'hidden');
        $form->field(name => 'sid', type => 'hidden', value => $session->id,
@@ -317,6 +324,13 @@ sub editcomment ($$) {
                        force => 1);
        }
 
+       if (! defined $session->param('name')) {
+               # Make signinurl work and return here.
+               $form->tmpl_param(signinurl => IkiWiki::cgiurl(do => 'signin'));
+               $session->param(postsignin => $ENV{QUERY_STRING});
+               IkiWiki::cgi_savesession($session);
+       }
+
        # The untaint is OK (as in editpage) because we're about to pass
        # it to file_pruned anyway
        my $page = $form->field('page');
@@ -365,7 +379,7 @@ sub editcomment ($$) {
 
        my $location=unique_comment_location($page, $config{srcdir});
 
-       my $content = "[[!_comment format=$type\n";
+       my $content = "[[!comment format=$type\n";
 
        # FIXME: handling of double quotes probably wrong?
        if (defined $session->param('name')) {
@@ -819,13 +833,10 @@ sub page_to_id ($) {
        # comment.
        my $page=shift;
 
-       # It needs to start with a letter.
-       $page="comment_".$page;
-
-       # Encode any illegal characters.
-       $page=~s/([^A-Za-z0-9-_:.])/"__".ord($1)."__"/eg;
+       eval q{use Digest::MD5 'md5_hex'};
+       error($@) if $@;
 
-       return $page;
+       return "comment-".md5_hex($page);
 }
        
 package IkiWiki::PageSpec;