aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki/CGI.pm
diff options
context:
space:
mode:
Diffstat (limited to 'IkiWiki/CGI.pm')
-rw-r--r--IkiWiki/CGI.pm72
1 files changed, 34 insertions, 38 deletions
diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm
index e8df1fe11..c800ddf6e 100644
--- a/IkiWiki/CGI.pm
+++ b/IkiWiki/CGI.pm
@@ -20,6 +20,24 @@ sub printheader ($) { #{{{
}
} #}}}
+
+sub showform ($$$$) { #{{{
+ my $form=shift;
+ my $buttons=shift;
+ my $session=shift;
+ my $cgi=shift;
+
+ if (exists $hooks{formbuilder}) {
+ run_hooks(formbuilder => sub {
+ shift->(form => $form, cgi => $cgi, session => $session,
+ buttons => $buttons);
+ });
+ }
+ else {
+ printheader($session);
+ print misctemplate($form->title, $form->render(submit => $buttons));
+ }
+}
sub redirect ($$) { #{{{
my $q=shift;
@@ -156,26 +174,18 @@ sub cgi_signin ($$) { #{{{
$form->field(name => "do", type => "hidden", value => "signin",
force => 1);
+ decode_form_utf8($form);
+
run_hooks(formbuilder_setup => sub {
shift->(form => $form, cgi => $q, session => $session,
buttons => $buttons);
});
-
- decode_form_utf8($form);
- if (exists $hooks{formbuilder}) {
- run_hooks(formbuilder => sub {
- shift->(form => $form, cgi => $q, session => $session,
- buttons => $buttons);
- });
- }
- else {
- if ($form->submitted) {
- $form->validate;
- }
- printheader($session);
- print misctemplate($form->title, $form->render(submit => $buttons));
+ if ($form->submitted) {
+ $form->validate;
}
+
+ showform($form, $buttons, $session, $q);
} #}}}
sub cgi_postsignin ($$) { #{{{
@@ -228,6 +238,8 @@ sub cgi_prefs ($$) { #{{{
);
my $buttons=["Save Preferences", "Logout", "Cancel"];
+ decode_form_utf8($form);
+
run_hooks(formbuilder_setup => sub {
shift->(form => $form, cgi => $q, session => $session,
buttons => $buttons);
@@ -257,8 +269,6 @@ sub cgi_prefs ($$) { #{{{
}
}
- decode_form_utf8($form);
-
if ($form->submitted eq 'Logout') {
$session->delete();
redirect($q, $config{url});
@@ -284,16 +294,7 @@ sub cgi_prefs ($$) { #{{{
$form->text(gettext("Preferences saved."));
}
- if (exists $hooks{formbuilder}) {
- run_hooks(formbuilder => sub {
- shift->(form => $form, cgi => $q, session => $session,
- buttons => $buttons);
- });
- }
- else {
- printheader($session);
- print misctemplate($form->title, $form->render(submit => $buttons));
- }
+ showform($form, $buttons, $session, $q);
} #}}}
sub cgi_editpage ($$) { #{{{
@@ -323,13 +324,13 @@ sub cgi_editpage ($$) { #{{{
wikiname => $config{wikiname},
);
+ decode_form_utf8($form);
+
run_hooks(formbuilder_setup => sub {
shift->(form => $form, cgi => $q, session => $session,
buttons => \@buttons);
});
- decode_form_utf8($form);
-
# This untaint is safe because titlepage removes any problematic
# characters.
my ($page)=$form->field('page');
@@ -495,8 +496,7 @@ sub cgi_editpage ($$) { #{{{
$form->title(sprintf(gettext("editing %s"), pagetitle($page)));
}
- printheader($session);
- print misctemplate($form->title, $form->render(submit => \@buttons));
+ showform($form, \@buttons, $session, $q);
}
else {
# save page
@@ -512,8 +512,7 @@ sub cgi_editpage ($$) { #{{{
$form->field(name => "page", type => 'hidden');
$form->field(name => "type", type => 'hidden');
$form->title(sprintf(gettext("editing %s"), $page));
- printheader($session);
- print misctemplate($form->title, $form->render(submit => \@buttons));
+ showform($form, \@buttons, $session, $q);
return;
}
elsif ($form->field("do") eq "create" && $exists) {
@@ -527,8 +526,7 @@ sub cgi_editpage ($$) { #{{{
value => readfile("$config{srcdir}/$file").
"\n\n\n".$form->field("editcontent"),
force => 1);
- printheader($session);
- print misctemplate($form->title, $form->render(submit => \@buttons));
+ showform($form, \@buttons, $session, $q);
return;
}
@@ -550,8 +548,7 @@ sub cgi_editpage ($$) { #{{{
$form->field(name => "page", type => 'hidden');
$form->field(name => "type", type => 'hidden');
$form->title(sprintf(gettext("editing %s"), $page));
- printheader($session);
- print misctemplate($form->title, $form->render(submit => \@buttons));
+ showform($form, \@buttons, $session, $q);
return;
}
@@ -595,8 +592,7 @@ sub cgi_editpage ($$) { #{{{
$form->field(name => "page", type => 'hidden');
$form->field(name => "type", type => 'hidden');
$form->title(sprintf(gettext("editing %s"), $page));
- printheader($session);
- print misctemplate($form->title, $form->render(submit => \@buttons));
+ showform($form, \@buttons, $session, $q);
return;
}
else {