From: joey Date: Fri, 17 Aug 2007 05:34:59 +0000 (+0000) Subject: * Applied Jeremie Koenig's pluggable editpage buttons patch: X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/commitdiff_plain/ce7596dad9c841fee92a84579be0261d3ef26407 * Applied Jeremie Koenig's pluggable editpage buttons patch: - add a title to the editpage form; - pass a reference to the list of buttons to the formbuilder_setup hooks, so we can add ours; - relax asumption about the possible submit values (use "Save Page" explicitly); - de-hardcode the submit buttons from the editpage template (This was needed for compatability with a bug in CGI::FormBuilder 3.0401, but ikiwiki already needs a newer version.) * Pass buttons to all other formbuilder_setup hooks too. --- diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 07319ad22..e8df1fe11 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -157,7 +157,8 @@ sub cgi_signin ($$) { #{{{ force => 1); run_hooks(formbuilder_setup => sub { - shift->(form => $form, cgi => $q, session => $session); + shift->(form => $form, cgi => $q, session => $session, + buttons => $buttons); }); decode_form_utf8($form); @@ -228,7 +229,8 @@ sub cgi_prefs ($$) { #{{{ my $buttons=["Save Preferences", "Logout", "Cancel"]; run_hooks(formbuilder_setup => sub { - shift->(form => $form, cgi => $q, session => $session); + shift->(form => $form, cgi => $q, session => $session, + buttons => $buttons); }); $form->field(name => "do", type => "hidden"); @@ -304,6 +306,7 @@ sub cgi_editpage ($$) { #{{{ eval q{use CGI::FormBuilder}; error($@) if $@; my $form = CGI::FormBuilder->new( + title => "editpage", fields => \@fields, charset => "utf-8", method => 'POST', @@ -321,7 +324,8 @@ sub cgi_editpage ($$) { #{{{ ); run_hooks(formbuilder_setup => sub { - shift->(form => $form, cgi => $q, session => $session); + shift->(form => $form, cgi => $q, session => $session, + buttons => \@buttons); }); decode_form_utf8($form); @@ -402,12 +406,12 @@ sub cgi_editpage ($$) { #{{{ preprocess($page, $page, filter($page, $page, $form->field('editcontent')), 0, 1)))); } - else { + elsif ($form->submitted eq "Save Page") { $form->tmpl_param("page_preview", ""); } $form->tmpl_param("page_conflict", ""); - if (! $form->submitted || $form->submitted eq "Preview" || + if ($form->submitted ne "Save Page" || ! $form->validate) { if ($form->field("do") eq "create") { my @page_locs; diff --git a/debian/changelog b/debian/changelog index 381164e15..cca99ecf1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -32,8 +32,18 @@ ikiwiki (2.6) UNRELEASED; urgency=low * Fix bug when editing file from underlaydir, need to rcs_add it even though a page creation isn't occuring. * Various minor fixes and stylistic improvements suggested by Perl::Critic. - - -- Joey Hess Wed, 15 Aug 2007 03:05:15 -0400 + * Applied Jeremie Koenig's pluggable editpage buttons patch: + - add a title to the editpage form; + - pass a reference to the list of buttons to the formbuilder_setup + hooks, so we can add ours; + - relax asumption about the possible submit values (use "Save Page" + explicitly); + - de-hardcode the submit buttons from the editpage template + (This was needed for compatability with a bug in CGI::FormBuilder + 3.0401, but ikiwiki already needs a newer version.) + * Pass buttons to all other formbuilder_setup hooks too. + + -- Joey Hess Fri, 17 Aug 2007 01:19:44 -0400 ikiwiki (2.5) unstable; urgency=low diff --git a/doc/plugins/contrib/showdiff.mdwn b/doc/plugins/contrib/showdiff.mdwn index cedc4311c..0436fdef6 100644 --- a/doc/plugins/contrib/showdiff.mdwn +++ b/doc/plugins/contrib/showdiff.mdwn @@ -19,6 +19,11 @@ which does the following: * de-hardcode the submit buttons from the editpage template (was this intended to work around something?). +> That was there to work around a bug in CGI::FormBuilder 3.0401 +> that broke FORM-SUBMIT on customised templates. That seems to be +> fixed in the newer version ikiwiki already depends on. Patch accepted. +> --[[Joey]] + ## Problems No special handling is done of concurrent edits: changes introduced diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 3030d6558..efb65523b 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -258,8 +258,9 @@ If the hook has no opinion about whether the edit can proceed, return These hooks allow tapping into the parts of ikiwiki that use [[cpan CGI::FormBuilder]] to generate web forms. These hooks are passed named -parameters: `cgi`, `session`, and `form`. These are, respectively, the -`CGI` object, the user's `CGI::Session`, and a `CGI::FormBuilder`. +parameters: `cgi`, `session`, `form`, and `buttons`. These are, respectively, +the `CGI` object, the user's `CGI::Session`, a `CGI::FormBuilder`, and a +reference to an array of names of buttons to go on the form. Each time a form is set up, the `formbuilder_setup` hook is called. Typically the `formbuilder_setup` hook will check the form's title, and if diff --git a/templates/editpage.tmpl b/templates/editpage.tmpl index 18e00849b..cf4950ead 100644 --- a/templates/editpage.tmpl +++ b/templates/editpage.tmpl @@ -57,9 +57,7 @@ Page type: Optional comment about this change:

- - - +