]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/CGI.pm
Fix base url when previewing. Was broken by urlto changes in last release.
[ikiwiki.git] / IkiWiki / CGI.pm
index e0bfda9ae06d9685a4e4eaed5f8557963560c652..df51798344cf00b23bea94ddad30bb6682f9a670 100644 (file)
@@ -12,7 +12,7 @@ use Encode;
 sub printheader ($) {
        my $session=shift;
        
-       if ($config{sslcookie}) {
+       if ($ENV{HTTPS} || $config{sslcookie}) {
                print $session->header(-charset => 'utf-8',
                        -cookie => $session->cookie(-httponly => 1, -secure => 1));
        }
@@ -49,6 +49,24 @@ sub showform ($$$$;@) {
        print misctemplate($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;
+       my $cgi=shift;
+       my %params=@_;
+
+       eval q{use URI};
+       # The base url needs to be a full URL. If urlto returns relative,
+       # force it absolute, using the same URL scheme used for the cgi.
+       my $baseurl = URI->new_abs(urlto($params{page}), $cgi->url);
+
+       showform($form, $buttons, $session, $cgi, @_,
+               forcebaseurl => $baseurl);
+}
+
 sub redirect ($$) {
        my $q=shift;
        eval q{use URI};