* 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 $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);
}

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
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 <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

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.)
> 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]]