From efe38a9d83ea963c8e84cc9932610be0797cb4dc Mon Sep 17 00:00:00 2001 From: Ilmari Karonen Date: Wed, 6 Dec 2006 08:28:44 +0000 Subject: [PATCH] (bug 5485) Show number of intervening revisions in diff view. Also clean up RELEASE-NOTES some more after SpecialContributions revert. --- RELEASE-NOTES | 6 ++--- includes/DifferenceEngine.php | 39 ++++++++++++++++++++++++++----- includes/Title.php | 19 +++++++++++++-- languages/messages/MessagesEn.php | 7 ++++-- languages/messages/MessagesFi.php | 3 +++ 5 files changed, 60 insertions(+), 14 deletions(-) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 1498acd639..d29586534c 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -247,10 +247,8 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN * (bug 8141) Cleanup of Parser::doTableStuff, patch by AzaTht * (bug 8042) Make miser mode caching limits settable via $wgQueryCacheLimit instead of hardcoding to 1000 -* Avoid notice when contribs query page class is instantiated in batch mode -* Enable QueryPage classes to override list formatting; return Contribs - to unordered list display to improve readability - +* Enable QueryPage classes to override list formatting +* (bug 5485) Show number of intervening revisions in diff view == Languages updated == diff --git a/includes/DifferenceEngine.php b/includes/DifferenceEngine.php index 49efbf1725..4dbe8b4a21 100644 --- a/includes/DifferenceEngine.php +++ b/includes/DifferenceEngine.php @@ -292,7 +292,8 @@ CONTROL; if ( $body === false ) { return false; } else { - return $this->addHeader( $body, $otitle, $ntitle ); + $multi = $this->getMultiNotice(); + return $this->addHeader( $body, $otitle, $ntitle, $multi ); } } @@ -431,20 +432,46 @@ CONTROL; return wfMsgExt( 'lineno', array('parseinline'), $wgLang->formatNum( $matches[1] ) ); } + + /** + * If there are revisions between the ones being compared, return a note saying so. + */ + function getMultiNotice() { + $oldid = $this->mOldRev->getId(); + $newid = $this->mNewRev->getId(); + if ( $oldid > $newid ) { + $tmp = $oldid; $oldid = $newid; $newid = $tmp; + } + + $n = $this->mTitle->countRevisionsBetween( $oldid, $newid ); + if ( !$n ) + return ''; + + if ( $n == 1 ) + $msg = wfMsg( 'diff-multi-rev' ); + else + $msg = wfMsg( 'diff-multi-revs', $n ); + + return wfMsgExt( 'diff-multi', array('parseinline'), $msg ); + } + + /** * Add the header to a diff body */ - function addHeader( $diff, $otitle, $ntitle ) { - $out = " + function addHeader( $diff, $otitle, $ntitle, $multi = '' ) { + $header = " - $diff -
{$otitle} {$ntitle}
"; - return $out; + + if ( $multi != '' ) + $header .= "{$multi}"; + + return $header . $diff . ""; } /** diff --git a/includes/Title.php b/includes/Title.php index 65458a07c4..d836d14325 100644 --- a/includes/Title.php +++ b/includes/Title.php @@ -2204,7 +2204,7 @@ class Title { * Get the revision ID of the previous revision * * @param integer $revision Revision ID. Get the revision that was before this one. - * @return interger $oldrevision|false + * @return integer $oldrevision|false */ function getPreviousRevisionID( $revision ) { $dbr =& wfGetDB( DB_SLAVE ); @@ -2217,7 +2217,7 @@ class Title { * Get the revision ID of the next revision * * @param integer $revision Revision ID. Get the revision that was after this one. - * @return interger $oldrevision|false + * @return integer $oldrevision|false */ function getNextRevisionID( $revision ) { $dbr =& wfGetDB( DB_SLAVE ); @@ -2226,6 +2226,21 @@ class Title { ' AND rev_id>' . intval( $revision ) . ' ORDER BY rev_id' ); } + /** + * Get the number of revisions between the given revision IDs. + * + * @param integer $old Revision ID. + * @param integer $new Revision ID. + * @return integer Number of revisions between these IDs. + */ + function countRevisionsBetween( $old, $new ) { + $dbr =& wfGetDB( DB_SLAVE ); + return $dbr->selectField( 'revision', 'count(*)', + 'rev_page = ' . intval( $this->getArticleId() ) . + ' AND rev_id > ' . intval( $old ) . + ' AND rev_id < ' . intval( $new ) ); + } + /** * Compare with another title. * diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index 5e7a573f74..5f146f9d4c 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -1085,12 +1085,15 @@ is placed by the site operators.", # 'difference' => '(Difference between revisions)', 'loadingrev' => 'loading revision for diff', -'lineno' => "Line $1:", +'lineno' => "Line $1:", 'editcurrent' => 'Edit the current version of this page', 'selectnewerversionfordiff' => 'Select a newer version for comparison', 'selectolderversionfordiff' => 'Select an older version for comparison', 'compareselectedversions' => 'Compare selected versions', -'editundo' => 'undo', +'editundo' => 'undo', +'diff-multi' => "($1 not shown.)", +'diff-multi-rev' => "One intermediate revision", +'diff-multi-revs' => "$1 intermediate revisions", # Search results # diff --git a/languages/messages/MessagesFi.php b/languages/messages/MessagesFi.php index da698149f0..d575d118ad 100644 --- a/languages/messages/MessagesFi.php +++ b/languages/messages/MessagesFi.php @@ -606,6 +606,9 @@ Syynä tähän on luultavasti jatkuva häiriköinti yhteiskäyttökoneelta.', 'selectnewerversionfordiff' => 'Valitse uudempi versio vertailuun', 'selectolderversionfordiff' => 'Valitse vanhempi versio vertailuun', 'compareselectedversions' => 'Vertaile valittuja versioita', +'diff-multi' => "(Versioiden välissä $1.)", +'diff-multi-rev' => "yksi muu muokkaus", +'diff-multi-revs' => "$1 muuta muokkausta", # Search results # -- 2.20.1