add cgitemplate
cgitemplate is a modified misctemplate that takes an optional cgi object and uses it to set the baseurl, and also optionally the forcebaseurl, if a page is provided. If no cgi object is provided, it will fall back to using $config{url}. I expect this will only be needed in exceptional cases where that doesn't much matter, such as cgierror(). showform uses cgitemplate, so there is no more need for showform_preview.master
parent
ea734d451c
commit
4a6ac6b485
|
@ -46,23 +46,45 @@ sub showform ($$$$;@) {
|
|||
my $cgi=shift;
|
||||
|
||||
printheader($session);
|
||||
print misctemplate($form->title, $form->render(submit => $buttons), @_);
|
||||
print cgitemplate($cgi, $form->title,
|
||||
$form->render(submit => $buttons), @_);
|
||||
}
|
||||
|
||||
# Like showform, but the base url will be set to allow edit previews
|
||||
# that use links relative to the specified page.
|
||||
sub showform_preview ($$$$;@) {
|
||||
my $form=shift;
|
||||
my $buttons=shift;
|
||||
my $session=shift;
|
||||
sub cgitemplate ($$$;@) {
|
||||
my $cgi=shift;
|
||||
my $title=shift;
|
||||
my $content=shift;
|
||||
my %params=@_;
|
||||
|
||||
my $template=template("page.tmpl");
|
||||
|
||||
# The base url needs to be a full URL, and urlto may return a path.
|
||||
my $baseurl = urlabs(urlto($params{page}), $cgi->url);
|
||||
my $topurl = defined $cgi ? $cgi->url : $config{url};
|
||||
|
||||
showform($form, $buttons, $session, $cgi, @_,
|
||||
forcebaseurl => $baseurl);
|
||||
my $page="";
|
||||
if (exists $params{page}) {
|
||||
$page=delete $params{page};
|
||||
$params{forcebaseurl}=urlabs(urlto($page), $topurl);
|
||||
}
|
||||
run_hooks(pagetemplate => sub {
|
||||
shift->(
|
||||
page => $page,
|
||||
destpage => $page,
|
||||
template => $template,
|
||||
);
|
||||
});
|
||||
templateactions($template, "");
|
||||
|
||||
$template->param(
|
||||
dynamic => 1,
|
||||
title => $title,
|
||||
wikiname => $config{wikiname},
|
||||
content => $content,
|
||||
baseurl => urlabs(urlto(undef), $topurl),
|
||||
html5 => $config{html5},
|
||||
%params,
|
||||
);
|
||||
|
||||
return $template->output;
|
||||
}
|
||||
|
||||
sub redirect ($$) {
|
||||
|
@ -439,7 +461,7 @@ sub cgierror ($) {
|
|||
my $message=shift;
|
||||
|
||||
print "Content-type: text/html\n\n";
|
||||
print misctemplate(gettext("Error"),
|
||||
print cgitemplate(undef, gettext("Error"),
|
||||
"<p class=\"error\">".gettext("Error").": $message</p>");
|
||||
die $@;
|
||||
}
|
||||
|
|
|
@ -554,7 +554,7 @@ sub editcomment ($$) {
|
|||
|
||||
}
|
||||
else {
|
||||
IkiWiki::showform_preview($form, \@buttons, $session, $cgi,
|
||||
IkiWiki::showform($form, \@buttons, $session, $cgi,
|
||||
page => $page);
|
||||
}
|
||||
|
||||
|
|
|
@ -312,7 +312,7 @@ sub cgi_editpage ($$) {
|
|||
$form->title(sprintf(gettext("editing %s"), pagetitle(basename($page))));
|
||||
}
|
||||
|
||||
showform_preview($form, \@buttons, $session, $q, page => $page);
|
||||
showform($form, \@buttons, $session, $q, page => $page);
|
||||
}
|
||||
else {
|
||||
# save page
|
||||
|
@ -329,7 +329,7 @@ sub cgi_editpage ($$) {
|
|||
$form->field(name => "page", type => 'hidden');
|
||||
$form->field(name => "type", type => 'hidden');
|
||||
$form->title(sprintf(gettext("editing %s"), $page));
|
||||
showform_preview($form, \@buttons, $session, $q,
|
||||
showform($form, \@buttons, $session, $q,
|
||||
page => $page);
|
||||
exit;
|
||||
}
|
||||
|
@ -344,7 +344,7 @@ sub cgi_editpage ($$) {
|
|||
value => readfile("$config{srcdir}/$file").
|
||||
"\n\n\n".$form->field("editcontent"),
|
||||
force => 1);
|
||||
showform_preview($form, \@buttons, $session, $q,
|
||||
showform($form, \@buttons, $session, $q,
|
||||
page => $page);
|
||||
exit;
|
||||
}
|
||||
|
@ -385,7 +385,7 @@ sub cgi_editpage ($$) {
|
|||
$form->field(name => "page", type => 'hidden');
|
||||
$form->field(name => "type", type => 'hidden');
|
||||
$form->title(sprintf(gettext("editing %s"), $page));
|
||||
showform_preview($form, \@buttons, $session, $q,
|
||||
showform($form, \@buttons, $session, $q,
|
||||
page => $page);
|
||||
exit;
|
||||
}
|
||||
|
@ -427,7 +427,7 @@ sub cgi_editpage ($$) {
|
|||
$form->field(name => "page", type => 'hidden');
|
||||
$form->field(name => "type", type => 'hidden');
|
||||
$form->title(sprintf(gettext("editing %s"), $page));
|
||||
showform_preview($form, \@buttons, $session, $q,
|
||||
showform($form, \@buttons, $session, $q,
|
||||
page => $page);
|
||||
}
|
||||
else {
|
||||
|
|
Loading…
Reference in New Issue