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;
|
my $cgi=shift;
|
||||||
|
|
||||||
printheader($session);
|
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
|
sub cgitemplate ($$$;@) {
|
||||||
# that use links relative to the specified page.
|
|
||||||
sub showform_preview ($$$$;@) {
|
|
||||||
my $form=shift;
|
|
||||||
my $buttons=shift;
|
|
||||||
my $session=shift;
|
|
||||||
my $cgi=shift;
|
my $cgi=shift;
|
||||||
|
my $title=shift;
|
||||||
|
my $content=shift;
|
||||||
my %params=@_;
|
my %params=@_;
|
||||||
|
|
||||||
# The base url needs to be a full URL, and urlto may return a path.
|
my $template=template("page.tmpl");
|
||||||
my $baseurl = urlabs(urlto($params{page}), $cgi->url);
|
|
||||||
|
|
||||||
showform($form, $buttons, $session, $cgi, @_,
|
my $topurl = defined $cgi ? $cgi->url : $config{url};
|
||||||
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 ($$) {
|
sub redirect ($$) {
|
||||||
|
@ -439,7 +461,7 @@ sub cgierror ($) {
|
||||||
my $message=shift;
|
my $message=shift;
|
||||||
|
|
||||||
print "Content-type: text/html\n\n";
|
print "Content-type: text/html\n\n";
|
||||||
print misctemplate(gettext("Error"),
|
print cgitemplate(undef, gettext("Error"),
|
||||||
"<p class=\"error\">".gettext("Error").": $message</p>");
|
"<p class=\"error\">".gettext("Error").": $message</p>");
|
||||||
die $@;
|
die $@;
|
||||||
}
|
}
|
||||||
|
|
|
@ -554,7 +554,7 @@ sub editcomment ($$) {
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
IkiWiki::showform_preview($form, \@buttons, $session, $cgi,
|
IkiWiki::showform($form, \@buttons, $session, $cgi,
|
||||||
page => $page);
|
page => $page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -312,7 +312,7 @@ sub cgi_editpage ($$) {
|
||||||
$form->title(sprintf(gettext("editing %s"), pagetitle(basename($page))));
|
$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 {
|
else {
|
||||||
# save page
|
# save page
|
||||||
|
@ -329,7 +329,7 @@ sub cgi_editpage ($$) {
|
||||||
$form->field(name => "page", type => 'hidden');
|
$form->field(name => "page", type => 'hidden');
|
||||||
$form->field(name => "type", type => 'hidden');
|
$form->field(name => "type", type => 'hidden');
|
||||||
$form->title(sprintf(gettext("editing %s"), $page));
|
$form->title(sprintf(gettext("editing %s"), $page));
|
||||||
showform_preview($form, \@buttons, $session, $q,
|
showform($form, \@buttons, $session, $q,
|
||||||
page => $page);
|
page => $page);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
@ -344,7 +344,7 @@ sub cgi_editpage ($$) {
|
||||||
value => readfile("$config{srcdir}/$file").
|
value => readfile("$config{srcdir}/$file").
|
||||||
"\n\n\n".$form->field("editcontent"),
|
"\n\n\n".$form->field("editcontent"),
|
||||||
force => 1);
|
force => 1);
|
||||||
showform_preview($form, \@buttons, $session, $q,
|
showform($form, \@buttons, $session, $q,
|
||||||
page => $page);
|
page => $page);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
@ -385,7 +385,7 @@ sub cgi_editpage ($$) {
|
||||||
$form->field(name => "page", type => 'hidden');
|
$form->field(name => "page", type => 'hidden');
|
||||||
$form->field(name => "type", type => 'hidden');
|
$form->field(name => "type", type => 'hidden');
|
||||||
$form->title(sprintf(gettext("editing %s"), $page));
|
$form->title(sprintf(gettext("editing %s"), $page));
|
||||||
showform_preview($form, \@buttons, $session, $q,
|
showform($form, \@buttons, $session, $q,
|
||||||
page => $page);
|
page => $page);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
@ -427,7 +427,7 @@ sub cgi_editpage ($$) {
|
||||||
$form->field(name => "page", type => 'hidden');
|
$form->field(name => "page", type => 'hidden');
|
||||||
$form->field(name => "type", type => 'hidden');
|
$form->field(name => "type", type => 'hidden');
|
||||||
$form->title(sprintf(gettext("editing %s"), $page));
|
$form->title(sprintf(gettext("editing %s"), $page));
|
||||||
showform_preview($form, \@buttons, $session, $q,
|
showform($form, \@buttons, $session, $q,
|
||||||
page => $page);
|
page => $page);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
Loading…
Reference in New Issue