The CGI tries to decide whether an user is trying to edit a new file or not with the following test:
$form->field(name => "newfile",
value => ! -e "$config{srcdir}/$file",
force => 1);
Assume the script is called like this http://example.com/ikiwiki.cgi?page=discussion&from=some-page&do=create
. The if (exists $pagesources{$page}) {
test determines whether there's a file called $config{srcdir}/discussion
. Most installs won't have a $config{srcdir}/discussion
page, so this test will fail causing the else clause to be executed. In this case, the else clause results in $file
being set to discussion.mdwn
. Thus, on typical installs value => ! -e "$config{srcdir}/$file",
always succeeds, which results in the expected behaviour, albeit for the wrong reasons. Similarly, the $form->field(name => "rcsinfo", value => rcs_prepedit($file)
line is also meaningless because $file
isn't what we think it is.
(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've fixed it to only look for an existing page if it's not creating a new page, so done --Joey