summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2007-03-17 23:20:27 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2007-03-17 23:20:27 +0000
commit188f1931c2a2fec7c5737985d5e6fb7a05f8ed04 (patch)
tree2cad996297ed80a1dcbaa2781ba26f06722e1c60
parent6003422f4577be43b387e608d531c59079b65db8 (diff)
* 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.
-rw-r--r--IkiWiki/CGI.pm33
-rw-r--r--debian/changelog4
-rw-r--r--doc/bugs/newfile-test.mdwn3
3 files changed, 20 insertions, 20 deletions
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 <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
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]]