Allow non-sysops to view the history of deleted pages. No flag to disable currently...
authorTim Starling <tstarling@users.mediawiki.org>
Sun, 7 Aug 2005 14:10:17 +0000 (14:10 +0000)
committerTim Starling <tstarling@users.mediawiki.org>
Sun, 7 Aug 2005 14:10:17 +0000 (14:10 +0000)
includes/Skin.php
includes/SpecialPage.php
includes/SpecialUndelete.php
languages/Language.php

index f536dbb..e0f486b 100644 (file)
@@ -549,10 +549,15 @@ END;
 
        function getUndeleteLink() {
                global $wgUser, $wgTitle, $wgContLang, $action;
-               if( $wgUser->isAllowed('delete') &&
-                       (($wgTitle->getArticleId() == 0) || ($action == "history")) &&
-                       ($n = $wgTitle->isDeleted() ) ) {
-                       return wfMsg( 'thisisdeleted',
+               if(     (($wgTitle->getArticleId() == 0) || ($action == "history")) &&
+                       ($n = $wgTitle->isDeleted() ) ) 
+               {
+                       if ( $wgUser->isAllowed( 'delete' ) ) {
+                               $msg = 'thisisdeleted';
+                       } else {
+                               $msg = 'viewdeleted';
+                       }
+                       return wfMsg( $msg,
                                $this->makeKnownLink(
                                        $wgContLang->SpecialPage( 'Undelete/' . $wgTitle->getPrefixedDBkey() ),
                                        wfMsg( 'restorelink' . ($n == 1 ? '1' : ''), $n ) ) );
index 869ccaf..3135b03 100644 (file)
@@ -68,7 +68,7 @@ $wgSpecialPages = array(
        'Allmessages'   => new SpecialPage( 'Allmessages' ),
        'Log'           => new SpecialPage( 'Log' ),
        'Blockip'               => new SpecialPage( 'Blockip', 'block' ),
-       'Undelete'              => new SpecialPage( 'Undelete', 'delete' ),
+       'Undelete'              => new SpecialPage( 'Undelete' ),
        "Import"                => new SpecialPage( "Import", 'import' ),
        'Lockdb'                => new SpecialPage( 'Lockdb', 'siteadmin' ),
        'Unlockdb'              => new SpecialPage( 'Unlockdb', 'siteadmin' ),
index 47fa861..2c0c2ad 100644 (file)
@@ -297,7 +297,7 @@ class PageArchive {
  */
 class UndeleteForm {
        var $mAction, $mTarget, $mTimestamp, $mRestore, $mTargetObj;
-       var $mTargetTimestamp;
+       var $mTargetTimestamp, $mAllowed;
 
        function UndeleteForm( &$request, $par = "" ) {
                global $wgUser;
@@ -310,6 +310,13 @@ class UndeleteForm {
                if( $par != "" ) {
                        $this->mTarget = $par;
                }
+               if ( $wgUser->isAllowed( 'delete' ) ) {
+                       $this->mAllowed = true;
+               } else {
+                       $this->mAllowed = false;
+                       $this->mTimestamp = '';
+                       $this->mRestore = false;
+               }
                if ( $this->mTarget !== "" ) {
                        $this->mTargetObj = Title::newFromURL( $this->mTarget );
                } else {
@@ -328,6 +335,8 @@ class UndeleteForm {
        }
 
        function execute() {
+               global $wgOut;
+               
                if( is_null( $this->mTargetObj ) ) {
                        return $this->showList();
                }
@@ -347,7 +356,11 @@ class UndeleteForm {
                # List undeletable articles
                $result = PageArchive::listAllPages();
 
-               $wgOut->setPagetitle( wfMsg( "undeletepage" ) );
+               if ( $this->mAllowed ) {
+                       $wgOut->setPagetitle( wfMsg( "undeletepage" ) );
+               } else {
+                       $wgOut->setPagetitle( wfMsg( "viewdeletedpage" ) );
+               }
                $wgOut->addWikiText( wfMsg( "undeletepagetext" ) );
 
                $sk = $wgUser->getSkin();
@@ -387,7 +400,11 @@ class UndeleteForm {
                global $wgLang, $wgUser, $wgOut;
 
                $sk = $wgUser->getSkin();
-               $wgOut->setPagetitle( wfMsg( "undeletepage" ) );
+               if ( $this->mAllowed ) {
+                       $wgOut->setPagetitle( wfMsg( "undeletepage" ) );
+               } else {
+                       $wgOut->setPagetitle( wfMsg( 'viewdeletedpage' ) );
+               }
 
                $archive = new PageArchive( $this->mTargetObj );
                $text = $archive->getLastRevisionText();
@@ -395,23 +412,27 @@ class UndeleteForm {
                        $wgOut->addWikiText( wfMsg( "nohistory" ) );
                        return;
                }
-               $wgOut->addWikiText( wfMsg( "undeletehistory" ) . "\n----\n" . $text );
+               if ( $this->mAllowed ) {
+                       $wgOut->addWikiText( wfMsg( "undeletehistory" ) . "\n----\n" . $text );
+               }
 
                # List all stored revisions
                $revisions = $archive->listRevisions();
 
-               $titleObj = Title::makeTitle( NS_SPECIAL, "Undelete" );
-               $action = $titleObj->escapeLocalURL( "action=submit" );
-               $encTarget = htmlspecialchars( $this->mTarget );
-               $button = htmlspecialchars( wfMsg("undeletebtn") );
-               $token = htmlspecialchars( $wgUser->editToken() );
-
-               $wgOut->addHTML("
-       <form id=\"undelete\" method=\"post\" action=\"{$action}\">
-       <input type=\"hidden\" name=\"target\" value=\"{$encTarget}\" />
-       <input type=\"submit\" name=\"restore\" value=\"{$button}\" />
-       <input type='hidden' name='wpEditToken' value=\"{$token}\" />
-       ");
+               if ( $this->mAllowed ) {
+                       $titleObj = Title::makeTitle( NS_SPECIAL, "Undelete" );
+                       $action = $titleObj->escapeLocalURL( "action=submit" );
+                       $encTarget = htmlspecialchars( $this->mTarget );
+                       $button = htmlspecialchars( wfMsg("undeletebtn") );
+                       $token = htmlspecialchars( $wgUser->editToken() );
+
+                       $wgOut->addHTML("
+                               <form id=\"undelete\" method=\"post\" action=\"{$action}\">
+                               <input type=\"hidden\" name=\"target\" value=\"{$encTarget}\" />
+                               <input type=\"submit\" name=\"restore\" value=\"{$button}\" />
+                               <input type='hidden' name='wpEditToken' value=\"{$token}\" />
+                               ");
+               }
 
                # Show relevant lines from the deletion log:
                $wgOut->addHTML( "<h2>" . htmlspecialchars( LogPage::logName( 'delete' ) ) . "</h2>\n" );
@@ -429,10 +450,15 @@ class UndeleteForm {
                $target = urlencode( $this->mTarget );
                while( $row = $revisions->fetchObject() ) {
                        $ts = wfTimestamp( TS_MW, $row->ar_timestamp );
-                       $checkBox = "<input type=\"checkbox\" name=\"ts$ts\" value=\"1\" />";
-                       $pageLink = $sk->makeKnownLinkObj( $titleObj,
-                               $wgLang->timeanddate( $ts, true ),
-                               "target=$target&timestamp=$ts" );
+                       if ( $this->mAllowed ) {
+                               $checkBox = "<input type=\"checkbox\" name=\"ts$ts\" value=\"1\" />";
+                               $pageLink = $sk->makeKnownLinkObj( $titleObj,
+                                       $wgLang->timeanddate( $ts, true ),
+                                       "target=$target&timestamp=$ts" );
+                       } else {
+                               $checkBox = '';
+                               $pageLink = $wgLang->timeanddate( $ts, true );
+                       }
                        $userLink = htmlspecialchars( $row->ar_user_text );
                        if( $row->ar_user ) {
                                $userLink = $sk->makeKnownLinkObj(
@@ -448,7 +474,10 @@ class UndeleteForm {
 
                }
                $revisions->free();
-               $wgOut->addHTML("</ul>\n</form>");
+               $wgOut->addHTML("</ul>");
+               if ( $this->mAllowed ) {
+                       $wgOut->addHTML( "\n</form>" );
+               }
 
                return true;
        }
index a4b95df..8789b07 100644 (file)
@@ -476,6 +476,7 @@ See $1.',
 'showtoc' => 'show',
 'hidetoc' => 'hide',
 'thisisdeleted' => "View or restore $1?",
+'viewdeleted' => 'View $1?',
 'restorelink1' => 'one deleted edit',
 'restorelink' => "$1 deleted edits",
 'feedlinks' => 'Feed:',
@@ -1335,8 +1336,9 @@ See [[Project:Protected page]] for more information.",
 'unprotectcomment' => 'Reason for unprotecting',
 
 # Undelete
-'undelete' => 'Restore deleted page',
+'undelete' => 'View deleted pages',
 'undeletepage' => 'View and restore deleted pages',
+'viewdeletedpage' => 'View deleted pages',
 'undeletepagetext' => 'The following pages have been deleted but are still in the archive and
 can be restored. The archive may be periodically cleaned out.',
 'undeletearticle' => 'Restore deleted page',