]> sipb.mit.edu Git - ikiwiki.git/commitdiff
Fix base url when previewing. Was broken by urlto changes in last release.
authorJoey Hess <joey@kitenet.net>
Wed, 5 Jan 2011 17:49:04 +0000 (13:49 -0400)
committerJoey Hess <joey@kitenet.net>
Wed, 5 Jan 2011 17:50:42 +0000 (13:50 -0400)
Added a showform_preview that is like showform, but sets forcebaseurl
to point to the page being previewed.

IkiWiki/CGI.pm
IkiWiki/Plugin/comments.pm
IkiWiki/Plugin/editpage.pm
debian/changelog

index ede194ff9aee945dc0fb471bedaa47bf93eda829..df51798344cf00b23bea94ddad30bb6682f9a670 100644 (file)
@@ -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};
index 63e9ab499bde535b1b5524219f22e8cf8d131e63..f3d6f20d6a3d9dab224e5ddff140f1a86edb772e 100644 (file)
@@ -372,8 +372,6 @@ sub editcomment ($$) {
                error(gettext("bad page name"));
        }
 
-       my $baseurl = urlto($page);
-
        $form->title(sprintf(gettext("commenting on %s"),
                        IkiWiki::pagetitle(IkiWiki::basename($page))));
 
@@ -385,7 +383,7 @@ sub editcomment ($$) {
 
        if ($form->submitted eq CANCEL) {
                # bounce back to the page they wanted to comment on, and exit.
-               IkiWiki::redirect($cgi, $baseurl);
+               IkiWiki::redirect($cgi, urlto($page));
                exit;
        }
 
@@ -556,8 +554,8 @@ sub editcomment ($$) {
 
        }
        else {
-               IkiWiki::showform ($form, \@buttons, $session, $cgi,
-                       forcebaseurl => $baseurl, page => $page);
+               IkiWiki::showform_preview($form, \@buttons, $session, $cgi,
+                       page => $page);
        }
 
        exit;
index 537b86ad1d12c1c507d2710a237051b7d4e3c91a..f6cebd4cd466eba086aa232bf54381607bc7add7 100644 (file)
@@ -312,8 +312,7 @@ sub cgi_editpage ($$) {
                        $form->title(sprintf(gettext("editing %s"), pagetitle(basename($page))));
                }
                
-               showform($form, \@buttons, $session, $q,
-                       forcebaseurl => $baseurl, page => $page);
+               showform_preview($form, \@buttons, $session, $q, page => $page);
        }
        else {
                # save page
@@ -330,8 +329,8 @@ sub cgi_editpage ($$) {
                        $form->field(name => "page", type => 'hidden');
                        $form->field(name => "type", type => 'hidden');
                        $form->title(sprintf(gettext("editing %s"), $page));
-                       showform($form, \@buttons, $session, $q,
-                               forcebaseurl => $baseurl, page => $page);
+                       showform_preview($form, \@buttons, $session, $q,
+                               page => $page);
                        exit;
                }
                elsif ($form->field("do") eq "create" && $exists) {
@@ -345,8 +344,8 @@ sub cgi_editpage ($$) {
                                value => readfile("$config{srcdir}/$file").
                                         "\n\n\n".$form->field("editcontent"),
                                force => 1);
-                       showform($form, \@buttons, $session, $q,
-                               forcebaseurl => $baseurl, page => $page);
+                       showform_preview($form, \@buttons, $session, $q,
+                               page => $page);
                        exit;
                }
                        
@@ -386,8 +385,8 @@ sub cgi_editpage ($$) {
                        $form->field(name => "page", type => 'hidden');
                        $form->field(name => "type", type => 'hidden');
                        $form->title(sprintf(gettext("editing %s"), $page));
-                       showform($form, \@buttons, $session, $q,
-                               forcebaseurl => $baseurl, page => $page);
+                       showform_preview($form, \@buttons, $session, $q,
+                               page => $page);
                        exit;
                }
                
@@ -428,8 +427,8 @@ sub cgi_editpage ($$) {
                        $form->field(name => "page", type => 'hidden');
                        $form->field(name => "type", type => 'hidden');
                        $form->title(sprintf(gettext("editing %s"), $page));
-                       showform($form, \@buttons, $session, $q,
-                               forcebaseurl => $baseurl, page => $page);
+                       showform_preview($form, \@buttons, $session, $q,
+                               page => $page);
                }
                else {
                        # The trailing question mark tries to avoid broken
index a61d910ceb46a3f334ce013dda372341ee6c533c..baf3e19060469e084ac9036646531c2fbc0f7a57 100644 (file)
@@ -3,6 +3,7 @@ ikiwiki (3.20101232) UNRELEASED; urgency=low
   * tag: Do not include tagbase in rss/atom category tags. (Giuseppe Bilotta)
   * tag: Improve display of tags with a slash in their names.
     (Giuseppe Bilotta)
+  * Fix base url when previewing. Was broken by urlto changes in last release.
 
  -- Joey Hess <joeyh@debian.org>  Tue, 04 Jan 2011 16:00:55 -0400