http://www.mediawiki.org/wiki/Special:Code/MediaWiki/58351
Revision: 58351 Author: aaron Date: 2009-10-30 02:14:22 +0000 (Fri, 30 Oct 2009) Log Message: ----------- * bug 21267 change "show/hide" to "show", if user cannot submit Special:Revisiondelete * Added revDeleteLinkDisabled() function Modified Paths: -------------- trunk/phase3/includes/Article.php trunk/phase3/includes/HistoryPage.php trunk/phase3/includes/ImagePage.php trunk/phase3/includes/Linker.php trunk/phase3/includes/LogEventsList.php trunk/phase3/includes/diff/DifferenceInterface.php trunk/phase3/includes/specials/SpecialContributions.php trunk/phase3/includes/specials/SpecialDeletedContributions.php trunk/phase3/includes/specials/SpecialUndelete.php trunk/phase3/languages/messages/MessagesEn.php trunk/phase3/maintenance/language/messages.inc Modified: trunk/phase3/includes/Article.php =================================================================== --- trunk/phase3/includes/Article.php 2009-10-30 01:51:21 UTC (rev 58350) +++ trunk/phase3/includes/Article.php 2009-10-30 02:14:22 UTC (rev 58351) @@ -3369,6 +3369,8 @@ return; } + $unhide = $wgRequest->getInt('unhide') == 1 && + $wgUser->matchEditToken( $wgRequest->getVal('token'), $oldid ); # Cascade unhide param in links for easy deletion browsing $extraParams = array(); if( $wgRequest->getVal('unhide') ) { @@ -3452,23 +3454,24 @@ array( 'known', 'noclasses' ) ); - $cdel=''; - // Don't show useless link to people who cannot hide revisions - if( $wgUser->isAllowed('deleterevision') || ($revision->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) { + $cdel = ''; + // User can delete revisions or view deleted revisions... + $canHide = $wgUser->isAllowed('deleterevision'); + if( $canHide || ($revision->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) { + // Is this hidden from Sysops? if( !$revision->userCan( Revision::DELETED_RESTRICTED ) ) { - // If revision was hidden from sysops - $cdel = wfMsgHtml( 'rev-delundel' ); + $cdel = $sk->revDeleteLinkDisabled( $canHide ); } else { $query = array( 'type' => 'revision', 'target' => urlencode( $this->mTitle->getPrefixedDbkey() ), 'ids' => urlencode( $oldid ) ); - $cdel = $sk->revDeleteLink( $query, $revision->isDeleted(File::DELETED_RESTRICTED) ); + $cdel = $sk->revDeleteLink( $query, $revision->isDeleted(File::DELETED_RESTRICTED), $canHide ); } $cdel .= ' '; } - $unhide = $wgRequest->getInt('unhide') == 1 && $wgUser->matchEditToken( $wgRequest->getVal('token'), $oldid ); + # Show user links if allowed to see them. If hidden, then show them only if requested... $userlinks = $sk->revUserTools( $revision, !$unhide ); Modified: trunk/phase3/includes/HistoryPage.php =================================================================== --- trunk/phase3/includes/HistoryPage.php 2009-10-30 01:51:21 UTC (rev 58350) +++ trunk/phase3/includes/HistoryPage.php 2009-10-30 02:14:22 UTC (rev 58351) @@ -50,7 +50,7 @@ function preCacheMessages() { // Precache various messages if( !isset( $this->message ) ) { - $msgs = array( 'cur', 'last', 'rev-delundel', 'pipe-separator' ); + $msgs = array( 'cur', 'last', 'pipe-separator' ); foreach( $msgs as $msg ) { $this->message[$msg] = wfMsgExt( $msg, array( 'escapenoentities') ); } @@ -472,6 +472,7 @@ $classes = array(); $del = ''; + // User can delete revisions... if( $wgUser->isAllowed( 'deleterevision' ) ) { // If revision was hidden from sysops, disable the checkbox if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) { @@ -484,13 +485,13 @@ } else if( $rev->getVisibility() && $wgUser->isAllowed( 'deletedhistory' ) ) { // If revision was hidden from sysops, disable the link if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) { - $del = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), - '(' . $this->historyPage->message['rev-delundel'] . ')' ); + $cdel = $this->getSkin()->revDeleteLinkDisabled( false ); // Otherwise, show the link... } else { $query = array( 'type' => 'revision', 'target' => $this->title->getPrefixedDbkey(), 'ids' => $rev->getId() ); - $del .= $this->getSkin()->revDeleteLink( $query, $rev->isDeleted( Revision::DELETED_RESTRICTED ) ); + $del .= $this->getSkin()->revDeleteLink( $query, + $rev->isDeleted( Revision::DELETED_RESTRICTED ), false ); } } if( $del ) $s .= " $del "; Modified: trunk/phase3/includes/ImagePage.php =================================================================== --- trunk/phase3/includes/ImagePage.php 2009-10-30 01:51:21 UTC (rev 58350) +++ trunk/phase3/includes/ImagePage.php 2009-10-30 02:14:22 UTC (rev 58351) @@ -861,21 +861,23 @@ ); } # Link to hide content. Don't show useless link to people who cannot hide revisions. - if( $wgUser->isAllowed('deleterevision') || ($wgUser->isAllowed('deletedhistory') && $file->getVisibility()) ) { + $canHide = $wgUser->isAllowed( 'deleterevision' ); + if( $canHide || ($wgUser->isAllowed('deletedhistory') && $file->getVisibility()) ) { if( $wgUser->isAllowed('delete') ) { $row .= '<br/>'; } // If file is top revision or locked from this user, don't link if( $iscur || !$file->userCan(File::DELETED_RESTRICTED) ) { - $del = wfMsgHtml( 'rev-delundel' ); + $del = $this->skin->revDeleteLinkDisabled( $canHide ); } else { list( $ts, $name ) = explode( '!', $img, 2 ); $query = array( - 'type' => 'oldimage', + 'type' => 'oldimage', 'target' => $wgTitle->getPrefixedText(), - 'ids' => $ts, + 'ids' => $ts, ); - $del = $this->skin->revDeleteLink( $query, $file->isDeleted(File::DELETED_RESTRICTED) ); + $del = $this->skin->revDeleteLink( $query, + $file->isDeleted(File::DELETED_RESTRICTED), $canHide ); } $row .= $del; } Modified: trunk/phase3/includes/Linker.php =================================================================== --- trunk/phase3/includes/Linker.php 2009-10-30 01:51:21 UTC (rev 58350) +++ trunk/phase3/includes/Linker.php 2009-10-30 02:14:22 UTC (rev 58351) @@ -1636,17 +1636,31 @@ * * @param array $query Query parameters to be passed to link() * @param bool $restricted Set to true to use a <strong> instead of a <span> + * @param bool $delete Set to true to use (show/hide) rather than (show) * * @return string HTML <a> link to Special:Revisiondelete, wrapped in a * span to allow for customization of appearance with CSS */ - public function revDeleteLink( $query = array(), $restricted = false ) { + public function revDeleteLink( $query = array(), $restricted = false, $delete = true ) { $sp = SpecialPage::getTitleFor( 'Revisiondelete' ); - $text = wfMsgHtml( 'rev-delundel' ); + $text = $delete ? wfMsgHtml( 'rev-delundel' ) : wfMsgHtml( 'rev-showdeleted' ); $tag = $restricted ? 'strong' : 'span'; $link = $this->link( $sp, $text, array(), $query, array( 'known', 'noclasses' ) ); return Xml::tags( $tag, array( 'class' => 'mw-revdelundel-link' ), "($link)" ); } + + /** + * Creates a dead (show/hide) link for deleting revisions/log entries + * + * @param bool $delete Set to true to use (show/hide) rather than (show) + * + * @return string HTML text wrapped in a span to allow for customization + * of appearance with CSS + */ + public function revDeleteLinkDisabled( $delete = true ) { + $text = $delete ? wfMsgHtml( 'rev-delundel' ) : wfMsgHtml( 'rev-showdeleted' ); + return Xml::tags( 'span', array( 'class' => 'mw-revdelundel-link' ), "($text)" ); + } /* Deprecated methods */ Modified: trunk/phase3/includes/LogEventsList.php =================================================================== --- trunk/phase3/includes/LogEventsList.php 2009-10-30 01:51:21 UTC (rev 58350) +++ trunk/phase3/includes/LogEventsList.php 2009-10-30 02:14:22 UTC (rev 58351) @@ -39,7 +39,7 @@ // Precache various messages if( !isset( $this->message ) ) { $messages = array( 'revertmerge', 'protect_change', 'unblocklink', 'change-blocklink', - 'revertmove', 'undeletelink', 'undeleteviewlink', 'revdel-restore', 'rev-delundel', 'hist', 'diff', + 'revertmove', 'undeletelink', 'undeleteviewlink', 'revdel-restore', 'hist', 'diff', 'pipe-separator' ); foreach( $messages as $msg ) { $this->message[$msg] = wfMsgExt( $msg, array( 'escapenoentities' ) ); @@ -507,22 +507,24 @@ * @return string */ private function getShowHideLinks( $row ) { + global $wgUser; + if( $row->log_type == 'suppress' ) { + return ''; // No one can hide items from the oversight log + } + $canHide = $wgUser->isAllowed( 'deleterevision' ); // If event was hidden from sysops if( !self::userCan( $row, LogPage::DELETED_RESTRICTED ) ) { - $del = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), - '(' . $this->message['rev-delundel'] . ')' ); - } else if( $row->log_type == 'suppress' ) { - $del = ''; // No one should be hiding from the oversight log + $del = $this->skin->revDeleteLinkDisabled( $canHide ); } else { $target = SpecialPage::getTitleFor( 'Log', $row->log_type ); $page = Title::makeTitle( $row->log_namespace, $row->log_title ); $query = array( 'target' => $target->getPrefixedDBkey(), - 'type' => 'logging', - 'ids' => $row->log_id, + 'type' => 'logging', + 'ids' => $row->log_id, ); $del = $this->skin->revDeleteLink( $query, - self::isDeleted( $row, LogPage::DELETED_RESTRICTED ) ); + self::isDeleted( $row, LogPage::DELETED_RESTRICTED ), $canHide ); } return $del; } Modified: trunk/phase3/includes/diff/DifferenceInterface.php =================================================================== --- trunk/phase3/includes/diff/DifferenceInterface.php 2009-10-30 01:51:21 UTC (rev 58350) +++ trunk/phase3/includes/diff/DifferenceInterface.php 2009-10-30 02:14:22 UTC (rev 58351) @@ -315,34 +315,34 @@ $rdel = ''; $ldel = ''; # Handle RevisionDelete links... if( $wgUser->isAllowed( 'deletedhistory' ) ) { + $canHide = $wgUser->isAllowed( 'deleterevision' ); // Don't show useless link to people who cannot hide revisions - if( $this->mOldRev->getVisibility() || $wgUser->isAllowed( 'deleterevision' ) ) { + if( $canHide || $this->mOldRev->getVisibility() ) { if( !$this->mOldRev->userCan( Revision::DELETED_RESTRICTED ) ) { - // If revision was hidden from sysops - $ldel = Xml::tags( 'span', array( 'class' => 'mw-revdelundel-link' ), - '(' . wfMsgHtml( 'rev-delundel' ) . ')' ); + $ldel = $sk->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops } else { $query = array( 'type' => 'revision', 'target' => $this->mOldRev->mTitle->getPrefixedDbkey(), 'ids' => $this->mOldRev->getId() ); - $ldel = $sk->revDeleteLink( $query, $this->mOldRev->isDeleted( Revision::DELETED_RESTRICTED ) ); + $ldel = $sk->revDeleteLink( $query, + $this->mOldRev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide ); } $ldel = " $ldel "; } // Don't show useless link to people who cannot hide revisions if( $this->mNewRev->getVisibility() || $wgUser->isAllowed( 'deleterevision' ) ) { if( !$this->mNewRev->userCan( Revision::DELETED_RESTRICTED ) ) { - // If revision was hidden from sysops - $rdel = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('.wfMsgHtml( 'rev-delundel' ).')' ); + $rdel = $sk->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops } else { $query = array( 'type' => 'revision', 'target' => $this->mNewRev->mTitle->getPrefixedDbkey(), 'ids' => $this->mNewRev->getId() ); - $rdel = $sk->revDeleteLink( $query, $this->mNewRev->isDeleted( Revision::DELETED_RESTRICTED ) ); + $rdel = $sk->revDeleteLink( $query, + $this->mNewRev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide ); } $rdel = " $rdel "; } Modified: trunk/phase3/includes/specials/SpecialContributions.php =================================================================== --- trunk/phase3/includes/specials/SpecialContributions.php 2009-10-30 01:51:21 UTC (rev 58350) +++ trunk/phase3/includes/specials/SpecialContributions.php 2009-10-30 02:14:22 UTC (rev 58351) @@ -622,20 +622,20 @@ } // Don't show useless link to people who cannot hide revisions - if( $wgUser->isAllowed('deleterevision') || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) { - // If revision was hidden from sysops + $canHide = $wgUser->isAllowed( 'deleterevision' ); + if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) { if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) { - $del = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), - wfMsg( 'parentheses', $this->messages['rev-delundel'] ) ) . ' '; - // Otherwise, show the link... + $del = $this->mSkin->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops } else { $query = array( - 'type' => 'revision', + 'type' => 'revision', 'target' => $page->getPrefixedDbkey(), - 'ids' => $rev->getId() ); + 'ids' => $rev->getId() + ); $del = $this->mSkin->revDeleteLink( $query, - $rev->isDeleted( Revision::DELETED_RESTRICTED ) ) . ' '; + $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide ); } + $del .= ' '; } else { $del = ''; } Modified: trunk/phase3/includes/specials/SpecialDeletedContributions.php =================================================================== --- trunk/phase3/includes/specials/SpecialDeletedContributions.php 2009-10-30 01:51:21 UTC (rev 58350) +++ trunk/phase3/includes/specials/SpecialDeletedContributions.php 2009-10-30 02:14:22 UTC (rev 58351) @@ -190,20 +190,18 @@ $mflag = ''; } - // Don't show useless link to people who cannot hide revisions - if( $wgUser->isAllowed('deleterevision') || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) { - // If revision was hidden from sysops + // Revision delete link + $canHide = $wgUser->isAllowed( 'deleterevision' ); + if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) { if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) { - $del = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), - '(' . $this->message['rev-delundel'] . ')' ) . ' '; - // Otherwise, show the link... + $del = $this->mSkin->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops } else { $query = array( 'type' => 'archive', 'target' => $page->getPrefixedDbkey(), 'ids' => $rev->getTimestamp() ); $del = $this->mSkin->revDeleteLink( $query, - $rev->isDeleted( Revision::DELETED_RESTRICTED ) ) . ' '; + $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide ) . ' '; } } else { $del = ''; Modified: trunk/phase3/includes/specials/SpecialUndelete.php =================================================================== --- trunk/phase3/includes/specials/SpecialUndelete.php 2009-10-30 01:51:21 UTC (rev 58350) +++ trunk/phase3/includes/specials/SpecialUndelete.php 2009-10-30 02:14:22 UTC (rev 58351) @@ -783,25 +783,25 @@ } else { $openDiv = '<div id="mw-undelete-revision">'; } - - $revdlink = ''; - // Diffs already have revision delete links - if( !$this->mDiff && $wgUser->isAllowed( 'deletedhistory' ) ) { - // Don't show useless link to people who cannot hide revisions - if( !$rev->getVisibility() && !$wgUser->isAllowed( 'deleterevision' ) ) { - $revdlink = ''; - // If revision was hidden from sysops - } else if( !$rev->userCan(Revision::DELETED_RESTRICTED ) ) { - $revdlink = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), - '('.wfMsgHtml('rev-delundel').')' ); + + // Revision delete links + $canHide = $wgUser->isAllowed( 'deleterevision' ); + if( $this->mDiff ) { + $revdlink = ''; // diffs already have revision delete links + } else if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) { + if( !$rev->userCan(Revision::DELETED_RESTRICTED ) ) { + $revdlink = $skin->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops } else { $query = array( 'type' => 'archive', 'target' => $this->mTargetObj->getPrefixedDBkey(), 'ids' => $rev->getTimestamp() ); - $revdlink = $skin->revDeleteLink( $query, $rev->isDeleted( File::DELETED_RESTRICTED ) ); + $revdlink = $skin->revDeleteLink( $query, + $rev->isDeleted( File::DELETED_RESTRICTED ), $canHide ); } + } else { + $revdlink = ''; } $wgOut->addHTML( $openDiv . $revdlink . wfMsgWikiHtml( 'undelete-revision', $link, $time, $user, $d, $t ) . '</div>' ); @@ -899,20 +899,20 @@ $targetPage = $rev->getTitle(); $targetQuery = array( 'oldid' => $rev->getId() ); } - // Add show/hide link if available. Don't show useless link to people who cannot hide revisions. - if( $wgUser->isAllowed('deleterevision') || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) { - // If revision was hidden from sysops + // Add show/hide deletion links if available + $canHide = $wgUser->isAllowed( 'deleterevision' ); + if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) { + $del = ' '; if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) { - $del = ' ' . Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), - '(' . wfMsgHtml('rev-delundel') . ')' ); - // Otherwise, show the link... + $del .= $sk->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops } else { $query = array( - 'type' => 'archive', + 'type' => 'archive', 'target' => $this->mTargetObj->getPrefixedDbkey(), - 'ids' => $rev->getTimestamp() ); - $del = ' ' . $sk->revDeleteLink( $query, - $rev->isDeleted( Revision::DELETED_RESTRICTED ) ); + 'ids' => $rev->getTimestamp() + ); + $del .= $sk->revDeleteLink( $query, + $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide ); } } else { $del = ''; @@ -1200,19 +1200,19 @@ } // Edit summary $comment = $sk->revComment( $rev ); - // Show/hide link. // Don't show useless link to people who cannot hide revisions. - if( $wgUser->isAllowed('deleterevision') || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) { + // Revision delete links + $canHide = $wgUser->isAllowed( 'deleterevision' ); + if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) { if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) { - // If revision was hidden from sysops - $revdlink = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), - '('.wfMsgHtml('rev-delundel').')' ); + $revdlink = $sk->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops } else { $query = array( - 'type' => 'archive', + 'type' => 'archive', 'target' => $this->mTargetObj->getPrefixedDBkey(), - 'ids' => $ts + 'ids' => $ts ); - $revdlink = $sk->revDeleteLink( $query, $rev->isDeleted( Revision::DELETED_RESTRICTED ) ); + $revdlink = $sk->revDeleteLink( $query, + $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide ); } } else { $revdlink = ''; @@ -1246,20 +1246,22 @@ ')'; $data = htmlspecialchars( $data ); $comment = $this->getFileComment( $file, $sk ); - $revdlink = ''; - // Add show/hide link if available. Don't show useless link to people who cannot hide revisions. - if( $wgUser->isAllowed('deleterevision') || ($file->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) { + // Add show/hide deletion links if available + $canHide = $wgUser->isAllowed( 'deleterevision' ); + if( $canHide || ($file->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) { if( !$file->userCan(File::DELETED_RESTRICTED ) ) { - // If revision was hidden from sysops - $revdlink = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('.wfMsgHtml('rev-delundel').')' ); + $revdlink = $sk->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops } else { $query = array( 'type' => 'filearchive', 'target' => $this->mTargetObj->getPrefixedDBkey(), 'ids' => $row->fa_id ); - $revdlink = $sk->revDeleteLink( $query, $file->isDeleted( File::DELETED_RESTRICTED ) ); + $revdlink = $sk->revDeleteLink( $query, + $file->isDeleted( File::DELETED_RESTRICTED ), $canHide ); } + } else { + $revdlink = ''; } return "<li>$checkBox $revdlink $pageLink . . $userLink $data $comment</li>\n"; } Modified: trunk/phase3/languages/messages/MessagesEn.php =================================================================== --- trunk/phase3/languages/messages/MessagesEn.php 2009-10-30 01:51:21 UTC (rev 58350) +++ trunk/phase3/languages/messages/MessagesEn.php 2009-10-30 02:14:22 UTC (rev 58351) @@ -1450,6 +1450,7 @@ 'rev-suppressed-diff-view' => "One of the revisions of this diff has been '''suppressed'''. As an administrator you can view this diff; there may be details in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].", 'rev-delundel' => 'show/hide', +'rev-showdeleted' => 'show', 'revisiondelete' => 'Delete/undelete revisions', 'revdelete-nooldid-title' => 'Invalid target revision', 'revdelete-nooldid-text' => 'You have either not specified a target revision(s) to perform this Modified: trunk/phase3/maintenance/language/messages.inc =================================================================== --- trunk/phase3/maintenance/language/messages.inc 2009-10-30 01:51:21 UTC (rev 58350) +++ trunk/phase3/maintenance/language/messages.inc 2009-10-30 02:14:22 UTC (rev 58351) @@ -669,6 +669,7 @@ 'rev-deleted-diff-view', 'rev-suppressed-diff-view', 'rev-delundel', + 'rev-showdeleted', 'revisiondelete', 'revdelete-nooldid-title', 'revdelete-nooldid-text', _______________________________________________ MediaWiki-CVS mailing list MediaWiki-CVS@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs