X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/4b36dee35a55b08d6d6f3bb3840220a4956f2540..1f26347379fd646e75302f32cf3411fb09cef5e4:/IkiWiki/CGI.pm?ds=sidebyside diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index db97740f6..be06db49c 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -9,6 +9,18 @@ use Encode; package IkiWiki; +sub printheader ($) { #{{{ + my $session=shift; + + if ($config{sslcookie}) { + print $session->header(-charset => 'utf-8', + -cookie => $session->cookie(-secure => 1)); + } else { + print $session->header(-charset => 'utf-8'); + } + +} #}}} + sub redirect ($$) { #{{{ my $q=shift; my $url=shift; @@ -64,16 +76,29 @@ sub cgi_recentchanges ($) { #{{{ eval q{use Memoize}; memoize("htmllink"); + eval q{use Time::Duration}; + + my $changelog=[rcs_recentchanges(100)]; + foreach my $change (@$changelog) { + $change->{when} = concise(ago($change->{when})); + $change->{user} = htmllink("", "", escapeHTML($change->{user}), 1); + $change->{pages} = [ + map { + $_->{link} = htmllink("", "", $_->{page}, 1); + $_; + } @{$change->{pages}} + ]; + } + my $template=template("recentchanges.tmpl"); $template->param( title => "RecentChanges", indexlink => indexlink(), wikiname => $config{wikiname}, - changelog => [rcs_recentchanges(100)], - styleurl => styleurl(), - baseurl => "$config{url}/", + changelog => $changelog, + baseurl => baseurl(), ); - print $q->header(-charset=>'utf-8'), $template->output; + print $q->header(-charset => 'utf-8'), $template->output; } #}}} sub cgi_signin ($$) { #{{{ @@ -100,7 +125,7 @@ sub cgi_signin ($$) { #{{{ header => 0, template => (-e "$config{templatedir}/signin.tmpl" ? {template_params("signin.tmpl")} : ""), - stylesheet => styleurl(), + stylesheet => baseurl()."style.css", ); decode_form_utf8($form); @@ -205,7 +230,7 @@ sub cgi_signin ($$) { #{{{ $form->field(name => "confirm_password", type => "hidden"); $form->field(name => "email", type => "hidden"); $form->text("Registration successful. Now you can Login."); - print $session->header(-charset=>'utf-8'); + printheader($session); print misctemplate($form->title, $form->render(submit => ["Login"])); } else { @@ -233,12 +258,12 @@ sub cgi_signin ($$) { #{{{ $form->text("Your password has been emailed to you."); $form->field(name => "name", required => 0); - print $session->header(-charset=>'utf-8'); + printheader($session); print misctemplate($form->title, $form->render(submit => ["Login", "Register", "Mail Password"])); } } else { - print $session->header(-charset=>'utf-8'); + printheader($session); print misctemplate($form->title, $form->render(submit => ["Login", "Register", "Mail Password"])); } } #}}} @@ -267,7 +292,7 @@ sub cgi_prefs ($$) { #{{{ action => $config{cgiurl}, template => (-e "$config{templatedir}/prefs.tmpl" ? {template_params("prefs.tmpl")} : ""), - stylesheet => styleurl(), + stylesheet => baseurl()."style.css", ); my @buttons=("Save Preferences", "Logout", "Cancel"); @@ -315,7 +340,7 @@ sub cgi_prefs ($$) { #{{{ $form->text("Preferences saved."); } - print $session->header(-charset=>'utf-8'); + printheader($session); print misctemplate($form->title, $form->render(submit => \@buttons)); } #}}} @@ -372,9 +397,7 @@ sub cgi_editpage ($$) { #{{{ # favor the type of linking page $type=pagetype($pagesources{$from}); } - else { - $type=$config{default_pageext}; - } + $type=$config{default_pageext} unless defined $type; $file=$page.".".$type; } @@ -396,8 +419,7 @@ sub cgi_editpage ($$) { #{{{ $form->tmpl_param("indexlink", indexlink()); $form->tmpl_param("helponformattinglink", htmllink("", "", "HelpOnFormatting", 1)); - $form->tmpl_param("styleurl", styleurl()); - $form->tmpl_param("baseurl", "$config{url}/"); + $form->tmpl_param("baseurl", baseurl()); if (! $form->submitted) { $form->field(name => "rcsinfo", value => rcs_prepedit($file), force => 1); @@ -415,8 +437,12 @@ sub cgi_editpage ($$) { #{{{ value => $content, force => 1); $form->field(name => "comments", value => $comments, force => 1); + $config{rss}=0; # avoid preview writing an rss feed! $form->tmpl_param("page_preview", - htmlize($type, linkify($page, $page, filter($page, $content)))); + htmlize($page, $type, + linkify($page, "", + preprocess($page, $page, + filter($page, $content))))); } else { $form->tmpl_param("page_preview", ""); @@ -596,7 +622,7 @@ sub cgi () { #{{{ umask($oldmask); # Everything below this point needs the user to be signed in. - if ((! $config{anonok} && + if (((! $config{anonok} || $do eq 'prefs') && (! defined $session->param("name") || ! userinfo_get($session->param("name"), "regdate"))) || $do eq 'signin') { cgi_signin($q, $session); @@ -616,7 +642,7 @@ sub cgi () { #{{{ cgi_prefs($q, $session); } elsif ($do eq 'blog') { - my $page=titlepage($q->param('title')); + my $page=titlepage(decode_utf8($q->param('title'))); # if the page already exists, munge it to be unique my $from=$q->param('from'); my $add="";