(bug 5485) Show number of intervening revisions in diff view.
authorIlmari Karonen <vyznev@users.mediawiki.org>
Wed, 6 Dec 2006 08:28:44 +0000 (08:28 +0000)
committerIlmari Karonen <vyznev@users.mediawiki.org>
Wed, 6 Dec 2006 08:28:44 +0000 (08:28 +0000)
Also clean up RELEASE-NOTES some more after SpecialContributions revert.

RELEASE-NOTES
includes/DifferenceEngine.php
includes/Title.php
languages/messages/MessagesEn.php
languages/messages/MessagesFi.php

index 1498acd..d295865 100644 (file)
@@ -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 ==
 
index 49efbf1..4dbe8b4 100644 (file)
@@ -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 = "
                        <table border='0' width='98%' cellpadding='0' cellspacing='4' class='diff'>
                        <tr>
                                <td colspan='2' width='50%' align='center' class='diff-otitle'>{$otitle}</td>
                                <td colspan='2' width='50%' align='center' class='diff-ntitle'>{$ntitle}</td>
                        </tr>
-                       $diff
-                       </table>
                ";
-               return $out;
+
+               if ( $multi != '' )
+                       $header .= "<tr><td colspan='4' align='center' class='diff-multi'>{$multi}</td></tr>";
+
+               return $header . $diff . "</table>";
        }
 
        /**
index 65458a0..d836d14 100644 (file)
@@ -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.
         *
index 5e7a573..5f146f9 100644 (file)
@@ -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
 #
index da69814..d575d11 100644 (file)
@@ -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
 #