From: joey Date: Sat, 17 Mar 2007 23:20:27 +0000 (+0000) Subject: * Fix some broken logic in cgi creation of a subpage when a toplevel page X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/commitdiff_plain/188f1931c2a2fec7c5737985d5e6fb7a05f8ed04 * Fix some broken logic in cgi creation of a subpage when a toplevel page with the same name already exists, and generally simplify the edit code. --- diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 73727805a..acf1f5969 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -290,8 +290,7 @@ sub cgi_editpage ($$) { #{{{ my $q=shift; my $session=shift; - my @fields=qw(do rcsinfo subpage from page type editcontent comments - newfile); + my @fields=qw(do rcsinfo subpage from page type editcontent comments); my @buttons=("Save Page", "Preview", "Cancel"); eval q{use CGI::FormBuilder}; @@ -333,12 +332,16 @@ sub cgi_editpage ($$) { #{{{ my $file; my $type; - if (exists $pagesources{$page}) { + if (exists $pagesources{$page} && $form->field("do") ne "create") { $file=$pagesources{$page}; $type=pagetype($file); if (! defined $type) { error(sprintf(gettext("%s is not an editable page"), $page)); } + if (! $form->submitted) { + $form->field(name => "rcsinfo", + value => rcs_prepedit($file), force => 1); + } } else { $type=$form->param('type'); @@ -351,6 +354,9 @@ sub cgi_editpage ($$) { #{{{ } $type=$config{default_pageext} unless defined $type; $file=$page.".".$type; + if (! $form->submitted) { + $form->field(name => "rcsinfo", value => "", force => 1); + } } $form->field(name => "do", type => 'hidden'); @@ -362,25 +368,17 @@ sub cgi_editpage ($$) { #{{{ $form->field(name => "comments", type => "text", size => 80); $form->field(name => "editcontent", type => "textarea", rows => 20, cols => 80); - $form->field(name => "newfile", type => 'hidden'); $form->tmpl_param("can_commit", $config{rcs}); $form->tmpl_param("indexlink", indexlink()); $form->tmpl_param("helponformattinglink", htmllink("", "", "HelpOnFormatting", noimageinline => 1)); $form->tmpl_param("baseurl", baseurl()); - if (! $form->submitted) { - $form->field(name => "rcsinfo", value => rcs_prepedit($file), - force => 1); - $form->field(name => "newfile", - value => ! -e "$config{srcdir}/$file", - force => 1); - } if ($form->submitted eq "Cancel") { - if ($form->field(name => "newfile") && defined $from) { + if ($form->field("do") eq "create" && defined $from) { redirect($q, "$config{url}/".htmlpage($from)); } - elsif ($form->field(name => "newfile")) { + elsif ($form->field("do") eq "create") { redirect($q, $config{url}); } else { @@ -488,13 +486,14 @@ sub cgi_editpage ($$) { #{{{ else { # save page check_canedit($page, $q, $session); - if (! -e "$config{srcdir}/$file" && ! $form->field(name => 'newfile')){ + if (! -e "$config{srcdir}/$file" && + $form->field("do") ne "create") { $form->tmpl_param("page_gone", 1); - $form->field(name => "newfile", - value => 1, force => 1); + $form->field(name => "do", value => "create", force => 1); $form->tmpl_param("page_select", 0); $form->field(name => "page", type => 'hidden'); $form->field(name => "type", type => 'hidden'); + $form->title(sprintf(gettext("editing %s"), $page)); print $form->render(submit => \@buttons); return; } @@ -529,7 +528,7 @@ sub cgi_editpage ($$) { #{{{ $message=$form->field('comments'); } - if ($form->field(name => "newfile")) { + if ($form->field("do") eq "create") { rcs_add($file); } diff --git a/debian/changelog b/debian/changelog index 331a233fe..2a09196e2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,8 +4,10 @@ ikiwiki (1.46) UNRELEASED; urgency=low blog post pages. The links will now create pages relative to the page that actually contains the link. * French update. Closes: #414597 + * Fix some broken logic in cgi creation of a subpage when a toplevel page + with the same name already exists, and generally simplify the edit code. - -- Joey Hess Mon, 12 Mar 2007 15:52:33 -0400 + -- Joey Hess Sat, 17 Mar 2007 18:25:59 -0400 ikiwiki (1.45) unstable; urgency=low diff --git a/doc/bugs/newfile-test.mdwn b/doc/bugs/newfile-test.mdwn index 29a09bfbf..7a51cd072 100644 --- a/doc/bugs/newfile-test.mdwn +++ b/doc/bugs/newfile-test.mdwn @@ -8,5 +8,4 @@ Assume the script is called like this `http://example.com/ikiwiki.cgi?page=discu (To confirm that this wasn't just a result of my imagination, I created [[/discussion]] on this site; feel free to delete it now.) -> I always find bug reports more comprehansible if they describe actual -> buggy behavior, which you've not done. Could you do so? Thanks. --[[Joey]] +> [[bugs/done]] --[[Joey]]