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;