* 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.
master
joey 2007-03-17 23:20:27 +00:00
parent 6003422f45
commit 188f1931c2
3 changed files with 20 additions and 20 deletions

View File

@ -290,8 +290,7 @@ sub cgi_editpage ($$) { #{{{
my $q=shift; my $q=shift;
my $session=shift; my $session=shift;
my @fields=qw(do rcsinfo subpage from page type editcontent comments my @fields=qw(do rcsinfo subpage from page type editcontent comments);
newfile);
my @buttons=("Save Page", "Preview", "Cancel"); my @buttons=("Save Page", "Preview", "Cancel");
eval q{use CGI::FormBuilder}; eval q{use CGI::FormBuilder};
@ -333,12 +332,16 @@ sub cgi_editpage ($$) { #{{{
my $file; my $file;
my $type; my $type;
if (exists $pagesources{$page}) { if (exists $pagesources{$page} && $form->field("do") ne "create") {
$file=$pagesources{$page}; $file=$pagesources{$page};
$type=pagetype($file); $type=pagetype($file);
if (! defined $type) { if (! defined $type) {
error(sprintf(gettext("%s is not an editable page"), $page)); error(sprintf(gettext("%s is not an editable page"), $page));
} }
if (! $form->submitted) {
$form->field(name => "rcsinfo",
value => rcs_prepedit($file), force => 1);
}
} }
else { else {
$type=$form->param('type'); $type=$form->param('type');
@ -351,6 +354,9 @@ sub cgi_editpage ($$) { #{{{
} }
$type=$config{default_pageext} unless defined $type; $type=$config{default_pageext} unless defined $type;
$file=$page.".".$type; $file=$page.".".$type;
if (! $form->submitted) {
$form->field(name => "rcsinfo", value => "", force => 1);
}
} }
$form->field(name => "do", type => 'hidden'); $form->field(name => "do", type => 'hidden');
@ -362,25 +368,17 @@ sub cgi_editpage ($$) { #{{{
$form->field(name => "comments", type => "text", size => 80); $form->field(name => "comments", type => "text", size => 80);
$form->field(name => "editcontent", type => "textarea", rows => 20, $form->field(name => "editcontent", type => "textarea", rows => 20,
cols => 80); cols => 80);
$form->field(name => "newfile", type => 'hidden');
$form->tmpl_param("can_commit", $config{rcs}); $form->tmpl_param("can_commit", $config{rcs});
$form->tmpl_param("indexlink", indexlink()); $form->tmpl_param("indexlink", indexlink());
$form->tmpl_param("helponformattinglink", $form->tmpl_param("helponformattinglink",
htmllink("", "", "HelpOnFormatting", noimageinline => 1)); htmllink("", "", "HelpOnFormatting", noimageinline => 1));
$form->tmpl_param("baseurl", baseurl()); $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->submitted eq "Cancel") {
if ($form->field(name => "newfile") && defined $from) { if ($form->field("do") eq "create" && defined $from) {
redirect($q, "$config{url}/".htmlpage($from)); redirect($q, "$config{url}/".htmlpage($from));
} }
elsif ($form->field(name => "newfile")) { elsif ($form->field("do") eq "create") {
redirect($q, $config{url}); redirect($q, $config{url});
} }
else { else {
@ -488,13 +486,14 @@ sub cgi_editpage ($$) { #{{{
else { else {
# save page # save page
check_canedit($page, $q, $session); 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->tmpl_param("page_gone", 1);
$form->field(name => "newfile", $form->field(name => "do", value => "create", force => 1);
value => 1, force => 1);
$form->tmpl_param("page_select", 0); $form->tmpl_param("page_select", 0);
$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));
print $form->render(submit => \@buttons); print $form->render(submit => \@buttons);
return; return;
} }
@ -529,7 +528,7 @@ sub cgi_editpage ($$) { #{{{
$message=$form->field('comments'); $message=$form->field('comments');
} }
if ($form->field(name => "newfile")) { if ($form->field("do") eq "create") {
rcs_add($file); rcs_add($file);
} }

4
debian/changelog vendored
View File

@ -4,8 +4,10 @@ ikiwiki (1.46) UNRELEASED; urgency=low
blog post pages. The links will now create pages relative to the page that blog post pages. The links will now create pages relative to the page that
actually contains the link. actually contains the link.
* French update. Closes: #414597 * 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 <joeyh@debian.org> Mon, 12 Mar 2007 15:52:33 -0400 -- Joey Hess <joeyh@debian.org> Sat, 17 Mar 2007 18:25:59 -0400
ikiwiki (1.45) unstable; urgency=low ikiwiki (1.45) unstable; urgency=low

View File

@ -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.) (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 > [[bugs/done]] --[[Joey]]
> buggy behavior, which you've not done. Could you do so? Thanks. --[[Joey]]