From 46a80d9cbe249d0acba26f1378d30c951f2f9cfd Mon Sep 17 00:00:00 2001 From: joey Date: Sun, 5 Aug 2007 22:07:32 +0000 Subject: [PATCH] * Move blog form code out of CGI.pm and into the inline plugin. --- IkiWiki/CGI.pm | 15 --------------- IkiWiki/Plugin/inline.pm | 24 ++++++++++++++++++++++++ IkiWiki/Plugin/skeleton.pm | 8 ++++++++ debian/changelog | 1 + po/ikiwiki.pot | 20 ++++++++++---------- 5 files changed, 43 insertions(+), 25 deletions(-) diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 144ad2198..d3f0203d8 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -704,21 +704,6 @@ sub cgi (;$$) { #{{{ elsif ($do eq 'create' || $do eq 'edit') { cgi_editpage($q, $session); } - elsif ($do eq 'blog') { - my $page=decode_utf8($q->param('title')); - $page=~s/\///g; # no slashes in blog posts - # if the page already exists, munge it to be unique - my $from=$q->param('from'); - my $add=""; - while (exists $pagecase{lc($from."/".titlepage($page).$add)}) { - $add=1 unless length $add; - $add++; - } - $q->param('page', $page.$add); - # now run same as create - $q->param('do', 'create'); - cgi_editpage($q, $session); - } elsif ($do eq 'postsignin') { error(gettext("login failed, perhaps you need to turn on cookies?")); } diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 08e1f2769..5378cc939 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -4,12 +4,14 @@ package IkiWiki::Plugin::inline; use warnings; use strict; +use Encode; use IkiWiki 2.00; use URI; sub import { #{{{ hook(type => "getopt", id => "inline", call => \&getopt); hook(type => "checkconfig", id => "inline", call => \&checkconfig); + hook(type => "sessioncgi", id => "skeleton", call => \&sessioncgi); hook(type => "preprocess", id => "inline", call => \&IkiWiki::preprocess_inline); hook(type => "pagetemplate", id => "inline", @@ -19,6 +21,7 @@ sub import { #{{{ # pings interrupting page builds. hook(type => "change", id => "inline", call => \&IkiWiki::pingurl); + } # }}} sub getopt () { #{{{ @@ -43,6 +46,27 @@ sub checkconfig () { #{{{ } } #}}} +sub sessioncgi () { #{{{ + my $q=shift; + my $session=shift; + + if ($q->param('do') eq 'blog') { + my $page=decode_utf8($q->param('title')); + $page=~s/\///g; # no slashes in blog posts + # if the page already exists, munge it to be unique + my $from=$q->param('from'); + my $add=""; + while (exists $IkiWiki::pagecase{lc($from."/".IkiWiki::titlepage($page).$add)}) { + $add=1 unless length $add; + $add++; + } + $q->param('page', $page.$add); + # now go create the page + $q->param('do', 'create'); + IkiWiki::cgi_editpage($q, $session); + } +} + # Back to ikiwiki namespace for the rest, this code is very much # internal to ikiwiki even though it's separated into a plugin. package IkiWiki; diff --git a/IkiWiki/Plugin/skeleton.pm b/IkiWiki/Plugin/skeleton.pm index 2ea19eef9..72e088770 100644 --- a/IkiWiki/Plugin/skeleton.pm +++ b/IkiWiki/Plugin/skeleton.pm @@ -23,6 +23,7 @@ sub import { #{{{ hook(type => "change", id => "skeleton", call => \&change); hook(type => "cgi", id => "skeleton", call => \&cgi); hook(type => "auth", id => "skeleton", call => \&auth); + hook(type => "sessioncgi", id => "skeleton", call => \&sessioncgi); hook(type => "canedit", id => "skeleton", call => \&canedit); hook(type => "formbuilder_setup", id => "skeleton", call => \&formbuilder_setup); hook(type => "formbuilder", id => "skeleton", call => \&formbuilder); @@ -119,6 +120,13 @@ sub auth ($$) { #{{{ debug("skeleton plugin running in auth"); } #}}} +sub sessionncgi ($$) { #{{{ + my $cgi=shift; + my $session=shift; + + debug("skeleton plugin running in sessioncgi"); +} #}}} + sub canedit ($$$) { #{{{ my $page=shift; my $cgi=shift; diff --git a/debian/changelog b/debian/changelog index 0d40a2d2e..41a9a22a6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,7 @@ ikiwiki (2.6) UNRELEASED; urgency=low * Add rel=tag attribute to tag links, supporting that microformat, as well as allowing them to be styled specially. Thanks, NicolasLimare. * Add sessioncgi hook. + * Move blog form code out of CGI.pm and into the inline plugin. -- Joey Hess Sun, 05 Aug 2007 14:36:55 -0700 diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index 1f7c1b158..31a3430c4 100644 --- a/po/ikiwiki.pot +++ b/po/ikiwiki.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-08-05 13:46-0700\n" +"POT-Creation-Date: 2007-08-05 14:56-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -42,7 +42,7 @@ msgid "%s is not an editable page" msgstr "" #: ../IkiWiki/CGI.pm:429 ../IkiWiki/Plugin/brokenlinks.pm:24 -#: ../IkiWiki/Plugin/inline.pm:184 ../IkiWiki/Plugin/opendiscussion.pm:17 +#: ../IkiWiki/Plugin/inline.pm:206 ../IkiWiki/Plugin/opendiscussion.pm:17 #: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:99 #: ../IkiWiki/Render.pm:179 msgid "discussion" @@ -59,11 +59,11 @@ msgstr "" msgid "editing %s" msgstr "" -#: ../IkiWiki/CGI.pm:691 +#: ../IkiWiki/CGI.pm:688 msgid "You are banned." msgstr "" -#: ../IkiWiki/CGI.pm:723 +#: ../IkiWiki/CGI.pm:708 msgid "login failed, perhaps you need to turn on cookies?" msgstr "" @@ -173,29 +173,29 @@ msgstr "" msgid "failed to determine size of image %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:36 +#: ../IkiWiki/Plugin/inline.pm:37 msgid "Must specify url to wiki with --url when using --rss or --atom" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:106 +#: ../IkiWiki/Plugin/inline.pm:128 #, perl-format msgid "unknown sort type %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:146 +#: ../IkiWiki/Plugin/inline.pm:168 msgid "Add a new post titled:" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:161 +#: ../IkiWiki/Plugin/inline.pm:183 #, perl-format msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:192 ../IkiWiki/Render.pm:103 +#: ../IkiWiki/Plugin/inline.pm:214 ../IkiWiki/Render.pm:103 msgid "Discussion" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:403 +#: ../IkiWiki/Plugin/inline.pm:425 msgid "RPC::XML::Client not found, not pinging" msgstr "" -- 2.26.2