$page=lc($page);
my $file=$page.$config{default_pageext};
- my $newfile=1;
if (exists $pagesources{lc($page)}) {
$file=$pagesources{lc($page)};
- $newfile=0;
+ }
+ my $newfile=0;
+ if (! -e "$config{srcdir}/$file") {
+ $newfile=1;
}
$form->field(name => "do", type => 'hidden');
! length $form->field('content')) {
my $content="";
if (exists $pagesources{lc($page)}) {
- $content=readfile("$config{srcdir}/$pagesources{lc($page)}");
+ $content=readfile(srcfile($pagesources{lc($page)}));
$content=~s/\n/\r\n/g;
}
$form->field(name => "content", value => $content,
my $content=$form->field('content');
$content=~s/\r\n/\n/g;
$content=~s/\r/\n/g;
- writefile("$config{srcdir}/$file", $content);
+ writefile($file, $config{srcdir}, $content);
my $message="web commit ";
if (length $session->param("name")) {
}
} #}}}
+sub cgi_hyperestraier () { #{{{
+ # only works for GET requests
+ chdir("$config{wikistatedir}/hyperestraier") || error("chdir: $!");
+ exec("./".basename($config{cgiurl})) || error("estseek.cgi failed");
+} #}}}
+
sub cgi () { #{{{
eval q{use CGI};
eval q{use CGI::Session};
my $do=$q->param('do');
if (! defined $do || ! length $do) {
- error("\"do\" parameter missing");
+ if (defined $q->param('phrase')) {
+ cgi_hyperestraier();
+ }
+ else {
+ error("\"do\" parameter missing");
+ }
}
# Things that do not need a session.
cgi_recentchanges($q);
return;
}
+ elsif ($do eq 'hyperestraier') {
+ cgi_hyperestraier();
+ }
CGI::Session->name("ikiwiki_session_$config{wikiname}");