]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Plugin/editpage.pm
Fix display of sidebar when previewing page edit. (Thanks, privat)
[ikiwiki.git] / IkiWiki / Plugin / editpage.pm
index ee1de8eaa10285a818be0205322348cc3a0a117f..af2c5ff4e5e9558ac3ee4d337637ef796235c69f 100644 (file)
@@ -78,7 +78,7 @@ sub cgi_editpage ($$) {
                action => $config{cgiurl},
                header => 0,
                table => 0,
-               template => scalar template_params("editpage.tmpl"),
+               template => { template("editpage.tmpl") },
        );
        
        decode_form_utf8($form);
@@ -92,7 +92,7 @@ sub cgi_editpage ($$) {
        # wiki_file_regexp.
        my ($page)=$form->field('page')=~/$config{wiki_file_regexp}/;
        $page=possibly_foolish_untaint($page);
-       my $absolute=($page =~ s#^/+##);
+       my $absolute=($page =~ s#^/+##); # absolute name used to force location
        if (! defined $page || ! length $page ||
            file_pruned($page)) {
                error(gettext("bad page name"));
@@ -148,12 +148,12 @@ sub cgi_editpage ($$) {
        $form->field(name => "editcontent", type => "textarea", rows => 20,
                cols => 80);
        $form->tmpl_param("can_commit", $config{rcs});
-       $form->tmpl_param("indexlink", indexlink());
        $form->tmpl_param("helponformattinglink",
                htmllink($page, $page, "ikiwiki/formatting",
                        noimageinline => 1,
                        linktext => "FormattingHelp"));
        
+       my $previewing=0;
        if ($form->submitted eq "Cancel") {
                if ($form->field("do") eq "create" && defined $from) {
                        redirect($q, urlto($from, undef, 1));
@@ -167,6 +167,8 @@ sub cgi_editpage ($$) {
                exit;
        }
        elsif ($form->submitted eq "Preview") {
+               $previewing=1;
+
                my $new=not exists $pagesources{$page};
                if ($new) {
                        # temporarily record its type
@@ -221,7 +223,6 @@ sub cgi_editpage ($$) {
                        if (! defined $from || ! length $from ||
                            $from ne $form->field('from') ||
                            file_pruned($from) ||
-                           $from=~/^\// || 
                            $absolute ||
                            $form->submitted) {
                                @page_locs=$best_loc=$page;
@@ -257,7 +258,7 @@ sub cgi_editpage ($$) {
                        if (! @page_locs) {
                                # hmm, someone else made the page in the
                                # meantime?
-                               if ($form->submitted eq "Preview") {
+                               if ($previewing) {
                                        # let them go ahead with the edit
                                        # and resolve the conflict at save
                                        # time
@@ -314,7 +315,10 @@ sub cgi_editpage ($$) {
                        $form->title(sprintf(gettext("editing %s"), pagetitle($page)));
                }
                
-               showform($form, \@buttons, $session, $q, forcebaseurl => $baseurl);
+               showform($form, \@buttons, $session, $q,
+                       forcebaseurl => $baseurl,
+                       ($previewing ? (page => $page) : ()),
+               );
        }
        else {
                # save page
@@ -331,7 +335,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);
+                       showform($form, \@buttons, $session, $q,
+                               forcebaseurl => $baseurl);
                        exit;
                }
                elsif ($form->field("do") eq "create" && $exists) {
@@ -345,7 +350,8 @@ sub cgi_editpage ($$) {
                                value => readfile("$config{srcdir}/$file").
                                         "\n\n\n".$form->field("editcontent"),
                                force => 1);
-                       showform($form, \@buttons, $session, $q, forcebaseurl => $baseurl);
+                       showform($form, \@buttons, $session, $q,
+                               forcebaseurl => $baseurl);
                        exit;
                }