Index: lib/TWiki/UI/View.pm =================================================================== --- lib/TWiki/UI/View.pm (revision 3765) +++ lib/TWiki/UI/View.pm (working copy) @@ -228,29 +228,37 @@ } # Show revisions around the one being displayed + # we start at $showRev then possibly jump near $rev if too distant my $revsToShow = $TWiki::cfg{NumberOfRevisions} + 1; - my $topRev = $rev + $revsToShow / 2; - $topRev = $revsToShow if $topRev < $revsToShow; - $topRev = $showRev if $topRev > $showRev; - my $revisions = ""; + $revsToShow = $showRev if $showRev < $revsToShow; + my $doingRev = $showRev; my @revs; - while( $revsToShow && $topRev ) { - if( $topRev == $rev) { - push( @revs, "r$rev" ); + while( $revsToShow > 0 ) { + $revsToShow--; + if( $doingRev == $rev) { + push( @revs, "r$rev"); } else { push( @revs, "getScriptUrl( $webName, $topicName, "view" ) . - "?rev=$topRev\" $TWiki::cfg{NoFollow}>r$topRev" ); + "?rev=$doingRev\" $TWiki::cfg{NoFollow}>r$doingRev"); } - if( $revsToShow > 1 && $topRev > 1 ) { + if ($doingRev-$rev >= $TWiki::cfg{NumberOfRevisions}) { + # we started too far away, need to jump closer to $rev + use integer; + $doingRev = $rev + $revsToShow / 2; + $doingRev = $revsToShow if $revsToShow > $doingRev; + push( @revs, "|" ); + next; + } + if( $revsToShow ) { push( @revs, "getScriptUrl( $webName, $topicName, "rdiff"). - "?rev1=$topRev&rev2=".($topRev-1)."\" $TWiki::cfg{NoFollow}>>" ); + "?rev1=$doingRev&rev2=".($doingRev-1)."\" $TWiki::cfg{NoFollow}>>"); } - $revsToShow--; - $topRev--; + $doingRev--; } - $revisions = join(" ", @revs ); + my $revisions = join(" ", @revs); + $tmpl =~ s/%REVISIONS%/$revisions/go; $tmpl =~ s/%REVINFO%/%REVINFO%$mirrorNote/go;