X-Git-Url: http://git.tremily.us/?p=ikiwiki.git;a=blobdiff_plain;f=ikiwiki;h=fa214971bb96bc11c8684844f319b31ec8830e26;hp=da3dde46d6e0ebcddd8bf595c21aa73502c6af45;hb=9d1d1844b306218d3a926fe0a93bb7100268d80f;hpb=e622b275c576ff4939cada803b07eaa372119218 diff --git a/ikiwiki b/ikiwiki index da3dde46d..fa214971b 100755 --- a/ikiwiki +++ b/ikiwiki @@ -407,7 +407,7 @@ sub rcs_recentchanges ($) { #{{{ my $div=qr/^--------------------+$/; my $infoline=qr/^r(\d+)\s+\|\s+([^\s]+)\s+\|\s+(\d+-\d+-\d+\s+\d+:\d+:\d+\s+[-+]?\d+).*/; my $state='start'; - my ($rev, $user, $when, @pages, $message); + my ($rev, $user, $when, @pages, @message); foreach (`LANG=C svn log -v '$svn_url'`) { chomp; if ($state eq 'start' && /$div/) { @@ -427,16 +427,16 @@ sub rcs_recentchanges ($) { #{{{ } elsif ($state eq 'body' && /$div/) { push @ret, { rev => $rev, user => $user, - when => $when, message => $message, + when => $when, message => [@message], pages => [@pages] } if @pages; return @ret if @ret >= $num; $state='header'; - $message=$rev=$user=$when=undef; - @pages=(); + $rev=$user=$when=undef; + @pages=@message=(); } elsif ($state eq 'body') { - $message.="$_
\n"; + push @message, {line => $_}, } } } @@ -693,6 +693,7 @@ sub cgi_signin ($$) { #{{{ javascript => 0, params => $q, action => $q->request_uri, + template => (-e "$templatedir/signin.tmpl" ? "$templatedir/signin.tmpl" : "") ); $form->sessionid($session->id); @@ -777,23 +778,26 @@ sub cgi () { #{{{ eval q{use CGI::Session}; my $q=CGI->new; - # session id has to be _sessionid for CGI::FormBuilder to work. - # TODO: stop having the formbuilder emit cookies and change session - # id to something else. - CGI::Session->name("_sessionid"); - my $session = CGI::Session->new(undef, $q, - { Directory=> "$srcdir/.ikiwiki/sessions" }); my $do=$q->param('do'); if (! defined $do || ! length $do) { error("\"do\" parameter missing"); } + # This does not need a session. if ($do eq 'recentchanges') { cgi_recentchanges($q); return; } + # session id has to be _sessionid for CGI::FormBuilder to work. + # TODO: stop having the formbuilder emit cookies and change session + # id to something else. + CGI::Session->name("_sessionid"); + my $session = CGI::Session->new(undef, $q, + { Directory=> "$srcdir/.ikiwiki/sessions" }); + + # Everything below this point needs the user to be signed in. if ((! $anonok && ! defined $session->param("name")) || $do eq 'signin') { cgi_signin($q, $session); return;