From edb69335f2ca5d42c62f6a4cce0b044da5ef88e8 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 11 Dec 2008 00:19:39 +0000 Subject: [PATCH 1/1] comments: instead of hard-coding mdwn, allow any supported page format --- IkiWiki/Plugin/comments.pm | 24 ++++++++++++++++++------ templates/comments_form.tmpl | 5 +++-- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 13ced6ffd..b45a4a97b 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -22,7 +22,6 @@ sub import { #{{{ hook(type => "htmlize", id => "_comment", call => \&htmlize); hook(type => "pagetemplate", id => "comments", call => \&pagetemplate); hook(type => "cgi", id => "comments", call => \&linkcgi); - IkiWiki::loadplugin("mdwn"); IkiWiki::loadplugin("inline"); } # }}} @@ -243,7 +242,7 @@ sub sessioncgi ($$) { #{{{ my @buttons = (POST_COMMENT, PREVIEW, CANCEL); my $form = CGI::FormBuilder->new( - fields => [qw{do sid page subject body}], + fields => [qw{do sid page subject body type}], charset => 'utf-8', method => 'POST', required => [qw{body}], @@ -264,13 +263,26 @@ sub sessioncgi ($$) { #{{{ }); IkiWiki::decode_form_utf8($form); + my $type = $form->param('type'); + if (defined $type && length $type && $IkiWiki::hooks{htmlize}{$type}) { + $type = possibly_foolish_untaint($type); + } + else { + $type = $config{default_pageext}; + } + my @page_types; + if (exists $IkiWiki::hooks{htmlize}) { + @page_types = grep { !/^_/ } keys %{$IkiWiki::hooks{htmlize}}; + } + $form->field(name => 'do', type => 'hidden'); $form->field(name => 'sid', type => 'hidden', value => $session->id, force => 1); $form->field(name => 'page', type => 'hidden'); $form->field(name => 'subject', type => 'text', size => 72); - $form->field(name => 'body', type => 'textarea', rows => 5, - cols => 80); + $form->field(name => 'body', type => 'textarea', rows => 10); + $form->field(name => "type", value => $type, force => 1, + type => 'select', options => \@page_types); # The untaint is OK (as in editpage) because we're about to pass # it to file_pruned anyway @@ -341,7 +353,7 @@ sub sessioncgi ($$) { #{{{ my $anchor = "${comments_pagename}${i}"; $body =~ s/"/\\"/g; - my $content = "[[!comment format=mdwn\n"; + my $content = "[[!comment format=$type\n"; # FIXME: handling of double quotes probably wrong? if (defined $session->param('name')) { @@ -371,7 +383,7 @@ sub sessioncgi ($$) { #{{{ # - this means that if they do, rocks fall and everyone dies if ($form->submitted eq PREVIEW) { - my $preview = IkiWiki::htmlize($location, $page, 'mdwn', + my $preview = IkiWiki::htmlize($location, $page, '_comment', IkiWiki::linkify($page, $page, IkiWiki::preprocess($page, $page, IkiWiki::filter($location, diff --git a/templates/comments_form.tmpl b/templates/comments_form.tmpl index 59c03b4f0..e798fcdde 100644 --- a/templates/comments_form.tmpl +++ b/templates/comments_form.tmpl @@ -6,10 +6,11 @@ Subject:

+Page type:


-Formatting with Markdown and HTML are allowed.
-IkiWiki directives ([[!directive]]) are not allowed.
+A subset of HTML is allowed.
+IkiWiki directives ([[!directive]]) are not allowed in comments on this wiki.
-- 2.44.0