X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/f79ce33c575106ccb79c8624de1e184e11f561e0..965afd875cd168713e9351d3c4c992c31f0bea0a:/ikiwiki diff --git a/ikiwiki b/ikiwiki index 904d615d6..e59051860 100755 --- a/ikiwiki +++ b/ikiwiki @@ -167,9 +167,10 @@ sub isinlinableimage ($) { $file=~/\.(png|gif|jpg|jpeg)$/; } -sub htmllink ($$) { +sub htmllink { my $page=shift; my $link=shift; + my $noimagelink=shift; my $bestlink=bestlink($page, $link); @@ -188,7 +189,7 @@ sub htmllink ($$) { $bestlink=File::Spec->abs2rel($bestlink, dirname($page)); - if (isinlinableimage($bestlink)) { + if (! $noimagelink && isinlinableimage($bestlink)) { return "<img src=\"$bestlink\">"; } return "<a href=\"$bestlink\">$link</a>"; @@ -324,9 +325,9 @@ sub loadindex () { sub saveindex () { open (OUT, ">$srcdir/.index") || error("cannot write to .index: $!"); foreach my $page (keys %oldpagemtime) { - print OUT "$oldpagemtime{$page} $pagesources{$page} $renderedfiles{$page} ". - join(" ", @{$links{$page}})."\n" - if $oldpagemtime{$page}; + print OUT "$oldpagemtime{$page} $pagesources{$page} $renderedfiles{$page} ". + join(" ", @{$links{$page}})."\n" + if $oldpagemtime{$page}; } close OUT; } @@ -370,13 +371,17 @@ sub rcs_recentchanges ($) { my $num=shift; my @ret; - eval {use Date::Parse}; - eval {use Time::Duration}; + eval q{use Date::Parse}; + eval q{use Time::Duration}; if (-d "$srcdir/.svn") { my $info=`LANG=C svn info $srcdir`; my ($svn_url)=$info=~/^URL: (.*)$/m; + # FIXME: currently assumes that the wiki is somewhere + # under trunk in svn, doesn't support other layouts. + my ($svn_base)=$svn_url=~m!(/trunk(?:/.*)?)$!; + 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'; @@ -389,19 +394,19 @@ sub rcs_recentchanges ($) { elsif ($state eq 'header' && /$infoline/) { $rev=$1; $user=$2; - $when=ago(time - str2time($3)); + $when=concise(ago(time - str2time($3))); } - elsif ($state eq 'header' && /^\s+(.*)/) { - push @pages, $1; + elsif ($state eq 'header' && /^\s+[A-Z]\s+\Q$svn_base\E\/(.+)$/) { + push @pages, pagename($1) if length $1; } elsif ($state eq 'header' && /^$/) { $state='body'; } elsif ($state eq 'body' && /$div/) { - push @ret, {rev => $rev, user => $user, - date => $when, message => $message, - pages => [@pages]}, - last if @ret >= $num; + push @ret, { rev => $rev, user => $user, + when => $when, message => $message, + pages => [@pages] } if @pages; + return @ret if @ret >= $num; $state='header'; $message=$rev=$user=$when=undef; @@ -554,7 +559,7 @@ FILE: foreach my $file (@files) { sub gen_wrapper ($$) { my ($svn, $rebuild)=@_; - eval {use Cwd 'abs_path'}; + eval q{use Cwd 'abs_path'}; $srcdir=abs_path($srcdir); $destdir=abs_path($destdir); my $this=abs_path($0); @@ -640,13 +645,11 @@ sub cgi () { my $list="<ul>\n"; foreach my $change (rcs_recentchanges(100)) { $list.="<li>"; - foreach my $page (@{$change->{pages}}) { - $list.=$page." "; - } + $list.=join(", ", map { htmllink("", $_, 1) } @{$change->{pages}}); $list.="<br>\n"; $list.="changed ".$change->{when}." by ". - htmllink("index", $change->{user}). - ": <i>".$change->{message}."<br>\n"; + htmllink("", $change->{user}, 1). + ": <i>".$change->{message}."</i>\n"; $list.="</li>\n"; } $list.="</ul>\n"; @@ -698,6 +701,7 @@ sub cgi () { print $q->header, $q->start_html("Creating $page"), $q->start_h1("<a href=\"$url\">$wikiname</a>/ Creating $page"), + $q->end_hi, $q->start_form(-action => $action), $q->hidden('do'), "Select page location:", @@ -725,6 +729,7 @@ sub cgi () { print $q->header, $q->start_html("Editing $page"), $q->h1("<a href=\"$url\">$wikiname</a>/ Editing $page"), + $q->end_hi, $q->start_form(-action => $action), $q->hidden('do'), $q->hidden('page'),