* 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.
master
joey 2007-08-17 05:34:59 +00:00
parent ceae681a43
commit ce7596dad9
5 changed files with 29 additions and 11 deletions

View File

@ -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;

12
debian/changelog vendored
View File

@ -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.
* 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 <joeyh@debian.org> Wed, 15 Aug 2007 03:05:15 -0400
-- Joey Hess <joeyh@debian.org> Fri, 17 Aug 2007 01:19:44 -0400
ikiwiki (2.5) unstable; urgency=low

View File

@ -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

View File

@ -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

View File

@ -57,9 +57,7 @@ Page type: <TMPL_VAR FIELD-TYPE>
Optional comment about this change:<br />
<TMPL_VAR FIELD-COMMENTS><br />
</TMPL_IF>
<input id="_submit" name="_submit" type="submit" value="Save Page" />
<input id="_submit_2" name="_submit" type="submit" value="Preview" />
<input id="_submit_3" name="_submit" type="submit" value="Cancel" />
<TMPL_VAR FORM-SUBMIT>
<TMPL_VAR HELPONFORMATTINGLINK>
<TMPL_VAR FORM-END>