* Fixed magic quotes in $_REQUEST, in Setup.php
[lhc/web/wiklou.git] / includes / PageHistory.php
index 1def0a1..bfae24e 100644 (file)
@@ -7,7 +7,7 @@
 class PageHistory {
        var $mArticle, $mTitle, $mSkin;
        var $lastline, $lastdate;
-       
+       var $linesonpage;
        function PageHistory( $article ) {
                $this->mArticle =& $article;
                $this->mTitle =& $article->mTitle;
@@ -31,6 +31,7 @@ class PageHistory {
                $wgOut->setPageTitle( $this->mTitle->getPRefixedText() );
                $wgOut->setSubtitle( wfMsg( "revhistory" ) );
                $wgOut->setArticleFlag( false );
+               $wgOut->setArticleRelated( true );
                $wgOut->setRobotpolicy( "noindex,nofollow" );
 
                if( $this->mTitle->getArticleID() == 0 ) {
@@ -62,22 +63,32 @@ class PageHistory {
                $res = wfQuery( $sql, DB_READ, $fname );
 
                $revs = wfNumRows( $res );
+               
+               if( $revs < $limitplus ) // the sql above tries to fetch one extra
+                       $this->linesonpage = $revs;
+               else
+                       $this->linesonpage = $revs - 1;
+
                $atend = ($revs < $limitplus);
                
                $this->mSkin = $wgUser->getSkin();
                $numbar = wfViewPrevNext(
                        $offset, $limit,
                        $this->mTitle->getPrefixedText(),
-                       "action=history" );
+                       "action=history", $atend );
                $s = $numbar;
                $s .= $this->beginHistoryList();
 
-               if( $offset == 0 )
-               $s .= $this->historyLine( $this->mArticle->getTimestamp(), $this->mArticle->getUser(),
-                 $this->mArticle->getUserText(), $namespace,
-                 $title, 0, $this->mArticle->getComment(),
-                 ( $this->mArticle->getMinorEdit() > 0 ) );
-
+               if( $offset == 0 ){
+                       $this->linesonpage++;
+                       $s .= $this->historyLine( 
+                               $this->mArticle->getTimestamp(), 
+                               $this->mArticle->getUser(),
+                               $this->mArticle->getUserText(), $namespace,
+                               $title, 0, $this->mArticle->getComment(),
+                               ( $this->mArticle->getMinorEdit() > 0 ) 
+                       );
+               }
                while ( $line = wfFetchObject( $res ) ) {
                        $s .= $this->historyLine( $line->old_timestamp, $line->old_user,
                          $line->old_user_text, $namespace,
@@ -92,8 +103,38 @@ class PageHistory {
 
        function beginHistoryList()
        {
+               global $wgTitle;
                $this->lastdate = $this->lastline = "";
                $s = "\n<p>" . wfMsg( "histlegend" ) . "\n<ul>";
+               $url = $wgTitle->getURL("-");
+               $s .= "<SCRIPT>
+                       var sel = -1;
+                       function anysel(oid){ 
+                               row = document.getElementById(\"ver\" + oid);
+                               if( row.selected ){
+                                       row.style.backgroundColor=row.oldbg; 
+                                       row.selected = 0;
+                                       sel = -1;
+                               } else {
+                                       row.oldbg = row.style.backgroundColor;
+                                       row.style.backgroundColor=\"lightgrey\"; 
+                                       row.selected = 1;
+                                       if( sel == -1){
+                                               sel = oid;
+                                       } else {
+                                               dodiff(sel, oid);
+                                       }
+                               }
+                               return false; 
+                       } 
+                       function dodiff(oldid, diff){
+                               if( (diff < oldid && diff != 0) || oldid == 0 ){ 
+                                       tmp = oldid; oldid = diff; diff = tmp; 
+                               }
+                               u = \"{$url}&diff=\" + diff + \"&oldid=\" + oldid;
+                               location.href=u;
+                       }
+               </SCRIPT>";
                return $s;
        }
 
@@ -145,13 +186,15 @@ class PageHistory {
                } else {
                        $curlink = $cur;
                }
-               $s .= "({$curlink}) (!OLDID!{$oid}!) . .";
-
+               $arbitrary = "";
+               if( $this->linesonpage > 1)
+                       $arbitrary = "<INPUT TYPE=CHECKBOX onClick='anysel($oid)' TITLE='Select any two versions to diff them'>";
+               $s .= "({$curlink}) (!OLDID!{$oid}!) $arbitrary . .";
                $M = wfMsg( "minoreditletter" );
                if ( $isminor ) {
                        $s .= " <strong>{$M}</strong>";
                }
-               $s .= " {$link} . . {$ul}";
+               $s .= " <span ID='ver$oid'>{$link} . . {$ul}</span>";
 
                if ( "" != $c && "*" != $c ) {
                        $s .= " <em>(" . wfEscapeHTML($c) . ")</em>";