use warnings;
use strict;
+use IkiWiki::UserInfo;
package IkiWiki;
wikiname => $config{wikiname},
changelog => [rcs_recentchanges(100)],
styleurl => styleurl(),
+ baseurl => "$config{url}/",
);
print $q->header, $template->output;
} #}}}
required => 'NONE',
javascript => 0,
params => $q,
- action => $q->request_uri,
+ action => $config{cgiurl},
header => 0,
template => (-e "$config{templatedir}/signin.tmpl" ?
"$config{templatedir}/signin.tmpl" : ""),
);
eval q{use Mail::Sendmail};
- my ($fromhost) = $config{cgiurl} =~ m!/([^/]+)!;
sendmail(
To => userinfo_get($user_name, "email"),
- From => "$config{wikiname} admin <".(getpwuid($>))[0]."@".$fromhost.">",
+ From => "$config{wikiname} admin <$config{adminemail}>",
Subject => "$config{wikiname} information",
Message => $template->output,
) or error("Failed to send mail");
required => 'NONE',
javascript => 0,
params => $q,
- action => $q->request_uri,
+ action => $config{cgiurl},
template => (-e "$config{templatedir}/prefs.tmpl" ?
"$config{templatedir}/prefs.tmpl" : ""),
stylesheet => styleurl(),
required => [qw{content}],
javascript => 0,
params => $q,
- action => $q->request_uri,
+ action => $config{cgiurl},
table => 0,
template => "$config{templatedir}/editpage.tmpl"
);
$form->tmpl_param("helponformattinglink",
htmllink("", "HelpOnFormatting", 1));
$form->tmpl_param("styleurl", styleurl());
+ $form->tmpl_param("baseurl", "$config{url}/");
if (! $form->submitted) {
$form->field(name => "rcsinfo", value => rcs_prepedit($file),
force => 1);
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}");
my $oldmask=umask(077);
- my $session = CGI::Session->new("driver:db_file", $q,
+ my $session = CGI::Session->new("driver:DB_File", $q,
{ FileName => "$config{wikistatedir}/sessions.db" });
umask($oldmask);
# Everything below this point needs the user to be signed in.
- if ((! $config{anonok} && ! defined $session->param("name") ||
- ! defined $session->param("name") ||
- ! userinfo_get($session->param("name"), "regdate")) || $do eq 'signin') {
+ if ((! $config{anonok} &&
+ (! defined $session->param("name") ||
+ ! userinfo_get($session->param("name"), "regdate"))) || $do eq 'signin') {
cgi_signin($q, $session);
# Force session flush with safe umask.