parent
b1b5860b29
commit
a1df39ed4a
|
@ -18,20 +18,23 @@ sub formbuilder_setup (@) { #{{{
|
||||||
my $q=$params{cgi};
|
my $q=$params{cgi};
|
||||||
|
|
||||||
if (defined $form->field("do") && $form->field("do") eq "edit") {
|
if (defined $form->field("do") && $form->field("do") eq "edit") {
|
||||||
|
# Removal button for the page, and also for attachments.
|
||||||
push @{$params{buttons}}, "Remove";
|
push @{$params{buttons}}, "Remove";
|
||||||
# TODO button for attachments
|
$form->tmpl_param("field-remove" => '<input name="_submit" type="submit" value="Remove Attachments" />');
|
||||||
}
|
}
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
sub confirmation_form ($$) { #{{{
|
sub confirmation_form ($$$) { #{{{
|
||||||
my $q=shift;
|
my $q=shift;
|
||||||
my $session=shift;
|
my $session=shift;
|
||||||
|
my $page=shift;
|
||||||
|
|
||||||
eval q{use CGI::FormBuilder};
|
eval q{use CGI::FormBuilder};
|
||||||
error($@) if $@;
|
error($@) if $@;
|
||||||
my @fields=qw(do page);
|
my @fields=qw(do page);
|
||||||
my $f = CGI::FormBuilder->new(
|
my $f = CGI::FormBuilder->new(
|
||||||
title => "confirm removal",
|
title => sprintf(gettext("confirm removal of %s"),
|
||||||
|
IkiWiki::pagetitle($page)),
|
||||||
name => "remove",
|
name => "remove",
|
||||||
header => 0,
|
header => 0,
|
||||||
charset => "utf-8",
|
charset => "utf-8",
|
||||||
|
@ -44,20 +47,7 @@ sub confirmation_form ($$) { #{{{
|
||||||
);
|
);
|
||||||
|
|
||||||
$f->field(name => "do", type => "hidden", value => "remove", force => 1);
|
$f->field(name => "do", type => "hidden", value => "remove", force => 1);
|
||||||
$f->field(name => "page", label => "Will remove:", size => 60,
|
$f->field(name => "page", type => "hidden", value => $page, force => 1);
|
||||||
validate => sub {
|
|
||||||
# Validate page by checking that the page exists, and that
|
|
||||||
# the user is allowed to edit(/remove) it.
|
|
||||||
my $page=IkiWiki::titlepage(shift);
|
|
||||||
if (! exists $pagesources{$page}) {
|
|
||||||
$f->field(name => "page", message => gettext("page does not exist"));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
IkiWiki::check_canedit($page, $q, $session);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return $f, ["Remove", "Cancel"];
|
return $f, ["Remove", "Cancel"];
|
||||||
} #}}}
|
} #}}}
|
||||||
|
@ -66,27 +56,28 @@ sub formbuilder (@) { #{{{
|
||||||
my %params=@_;
|
my %params=@_;
|
||||||
my $form=$params{form};
|
my $form=$params{form};
|
||||||
|
|
||||||
if (defined $form->field("do") && $form->field("do") eq "edit" &&
|
if (defined $form->field("do") && $form->field("do") eq "edit") {
|
||||||
$form->submitted eq "Remove") {
|
if ($form->submitted eq "Remove") {
|
||||||
my $q=$params{cgi};
|
my $q=$params{cgi};
|
||||||
my $session=$params{session};
|
my $session=$params{session};
|
||||||
|
|
||||||
# Save current form state to allow returning to it later
|
# Save current form state to allow returning to it later
|
||||||
# without losing any edits.
|
# without losing any edits.
|
||||||
# (But don't save what button was submitted, to avoid
|
# (But don't save what button was submitted, to avoid
|
||||||
# looping back to here.)
|
# looping back to here.)
|
||||||
# Note: "_submit" is CGI::FormBuilder internals.
|
# Note: "_submit" is CGI::FormBuilder internals.
|
||||||
$q->param(-name => "_submit", -value => "");
|
$q->param(-name => "_submit", -value => "");
|
||||||
$session->param(postremove => scalar $q->Vars);
|
$session->param(postremove => scalar $q->Vars);
|
||||||
IkiWiki::cgi_savesession($session);
|
IkiWiki::cgi_savesession($session);
|
||||||
|
|
||||||
# Display a small confirmation form.
|
# Display a small confirmation form.
|
||||||
my ($f, $buttons)=confirmation_form($q, $session);
|
my ($f, $buttons)=confirmation_form($q, $session, $form->field("page"));
|
||||||
$f->field(name => "page",
|
IkiWiki::showform($f, $buttons, $session, $q);
|
||||||
value => IkiWiki::pagetitle($form->field("page")),
|
exit 0;
|
||||||
force => 1);
|
}
|
||||||
IkiWiki::showform($f, $buttons, $session, $q);
|
elsif ($form->submitted eq "Remove Attachments") {
|
||||||
exit 0;
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
|
@ -95,7 +86,7 @@ sub sessioncgi ($$) { #{{{
|
||||||
|
|
||||||
if ($q->param("do") eq 'remove') {
|
if ($q->param("do") eq 'remove') {
|
||||||
my $session=shift;
|
my $session=shift;
|
||||||
my ($form, $buttons)=confirmation_form($q, $session);
|
my ($form, $buttons)=confirmation_form($q, $session, $session->param("page"));
|
||||||
IkiWiki::decode_form_utf8($form);
|
IkiWiki::decode_form_utf8($form);
|
||||||
|
|
||||||
if ($form->submitted eq 'Cancel') {
|
if ($form->submitted eq 'Cancel') {
|
||||||
|
@ -106,8 +97,16 @@ sub sessioncgi ($$) { #{{{
|
||||||
IkiWiki::cgi($postremove, $session);
|
IkiWiki::cgi($postremove, $session);
|
||||||
}
|
}
|
||||||
elsif ($form->submitted eq 'Remove' && $form->validate) {
|
elsif ($form->submitted eq 'Remove' && $form->validate) {
|
||||||
my $page=IkiWiki::titlepage($form->field("page"));
|
my $page=$form->field("page");
|
||||||
my $file=$pagesources{$page};
|
my $file=$pagesources{$page};
|
||||||
|
|
||||||
|
# Validate removal by checking that the page exists,
|
||||||
|
# and that the user is allowed to edit(/remove) it.
|
||||||
|
if (! exists $pagesources{$page}) {
|
||||||
|
error(sprintf(gettext("%s does not exist"),
|
||||||
|
htmllink("", "", $page, noimageinline => 1)));
|
||||||
|
}
|
||||||
|
IkiWiki::check_canedit($page, $q, $session);
|
||||||
|
|
||||||
# Do removal, and update the wiki.
|
# Do removal, and update the wiki.
|
||||||
require IkiWiki::Render;
|
require IkiWiki::Render;
|
||||||
|
|
|
@ -71,7 +71,7 @@ Optional comment about this change:<br />
|
||||||
<tr><td><TMPL_VAR FIELD-SELECT><TMPL_VAR LINK></td><td><TMPL_VAR SIZE></td><td><TMPL_VAR MTIME></td></tr>
|
<tr><td><TMPL_VAR FIELD-SELECT><TMPL_VAR LINK></td><td><TMPL_VAR SIZE></td><td><TMPL_VAR MTIME></td></tr>
|
||||||
</TMPL_LOOP>
|
</TMPL_LOOP>
|
||||||
<TMPL_IF NAME="ATTACHMENT_LIST">
|
<TMPL_IF NAME="ATTACHMENT_LIST">
|
||||||
<tr><td colspan="2"><TMPL_VAR FIELD-LINK><TMPL_VAR FIELD-DELETE><TMPL_VAR FIELD-RENAME></td></tr>
|
<tr><td colspan="2"><TMPL_VAR FIELD-LINK><TMPL_VAR FIELD-REMOVE><TMPL_VAR FIELD-RENAME></td></tr>
|
||||||
</TMPL_IF>
|
</TMPL_IF>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue