From: Tim Starling Date: Sun, 7 Aug 2005 14:10:17 +0000 (+0000) Subject: Allow non-sysops to view the history of deleted pages. No flag to disable currently... X-Git-Tag: 1.6.0~2050 X-Git-Url: http://git.cyclocoop.org/%24self?a=commitdiff_plain;h=63fda8b32e1143ab65b64cab48152ce0afcc9bd6;p=lhc%2Fweb%2Fwiklou.git Allow non-sysops to view the history of deleted pages. No flag to disable currently, but note that you can just add the restriction back in to SpecialPage.php --- diff --git a/includes/Skin.php b/includes/Skin.php index f536dbb739..e0f486b0f2 100644 --- a/includes/Skin.php +++ b/includes/Skin.php @@ -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 ) ) ); diff --git a/includes/SpecialPage.php b/includes/SpecialPage.php index 869ccafe1a..3135b0317a 100644 --- a/includes/SpecialPage.php +++ b/includes/SpecialPage.php @@ -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' ), diff --git a/includes/SpecialUndelete.php b/includes/SpecialUndelete.php index 47fa8618f2..2c0c2ad094 100644 --- a/includes/SpecialUndelete.php +++ b/includes/SpecialUndelete.php @@ -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(" -
- - - - "); + 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(" + + + + + "); + } # Show relevant lines from the deletion log: $wgOut->addHTML( "

" . htmlspecialchars( LogPage::logName( 'delete' ) ) . "

\n" ); @@ -429,10 +450,15 @@ class UndeleteForm { $target = urlencode( $this->mTarget ); while( $row = $revisions->fetchObject() ) { $ts = wfTimestamp( TS_MW, $row->ar_timestamp ); - $checkBox = ""; - $pageLink = $sk->makeKnownLinkObj( $titleObj, - $wgLang->timeanddate( $ts, true ), - "target=$target×tamp=$ts" ); + if ( $this->mAllowed ) { + $checkBox = ""; + $pageLink = $sk->makeKnownLinkObj( $titleObj, + $wgLang->timeanddate( $ts, true ), + "target=$target×tamp=$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("\n
"); + $wgOut->addHTML(""); + if ( $this->mAllowed ) { + $wgOut->addHTML( "\n" ); + } return true; } diff --git a/languages/Language.php b/languages/Language.php index a4b95df0e5..8789b07183 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -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',