Add a context parameter to Liker::generateRollback() and Linker::buildRollbackLink() and updated callers.

This allows both methods to not always rely on global object, but also to use the local context when possible.

Change-Id: Id10f55ed9b18c889afd8d9937d9f35acb376cce4
This commit is contained in:
Alexandre Emsenhuber 2012-07-05 23:07:58 +02:00
parent e773eb0af5
commit 026e8534c6
4 changed files with 21 additions and 11 deletions

View file

@ -1646,11 +1646,17 @@ class Linker {
* other users.
*
* @param $rev Revision object
* @param $context IContextSource context to use or null for the main context.
* @return string
*/
public static function generateRollback( $rev ) {
public static function generateRollback( $rev, IContextSource $context = null ) {
if ( $context === null ) {
$context = RequestContext::getMain();
}
return '<span class="mw-rollback-link">'
. wfMessage( 'brackets' )->rawParams( self::buildRollbackLink( $rev ) )->plain()
. $context->msg( 'brackets' )->rawParams(
self::buildRollbackLink( $rev, $context ) )->plain()
. '</span>';
}
@ -1658,24 +1664,28 @@ class Linker {
* Build a raw rollback link, useful for collections of "tool" links
*
* @param $rev Revision object
* @param $context IContextSource context to use or null for the main context.
* @return String: HTML fragment
*/
public static function buildRollbackLink( $rev ) {
global $wgRequest, $wgUser;
public static function buildRollbackLink( $rev, IContextSource $context = null ) {
if ( $context === null ) {
$context = RequestContext::getMain();
}
$title = $rev->getTitle();
$query = array(
'action' => 'rollback',
'from' => $rev->getUserText(),
'token' => $wgUser->getEditToken( array( $title->getPrefixedText(), $rev->getUserText() ) ),
'token' => $context->getUser()->getEditToken( array( $title->getPrefixedText(), $rev->getUserText() ) ),
);
if ( $wgRequest->getBool( 'bot' ) ) {
if ( $context->getRequest()->getBool( 'bot' ) ) {
$query['bot'] = '1';
$query['hidediff'] = '1'; // bug 15999
}
return self::link(
$title,
wfMsgHtml( 'rollbacklink' ),
array( 'title' => wfMsg( 'tooltip-rollback' ) ),
$context->msg( 'rollbacklink' )->escaped(),
array( 'title' => $context->msg( 'tooltip-rollback' )->text() ),
$query,
array( 'known', 'noclasses' )
);

View file

@ -647,7 +647,7 @@ class HistoryPager extends ReverseChronologicalPager {
if ( $latest && !count( $this->getTitle()->getUserPermissionsErrors( 'rollback', $this->getUser() ) ) ) {
$this->preventClickjacking();
$tools[] = '<span class="mw-rollback-link">' .
Linker::buildRollbackLink( $rev ) . '</span>';
Linker::buildRollbackLink( $rev, $this->getContext() ) . '</span>';
}
if ( !$rev->isDeleted( Revision::DELETED_TEXT )

View file

@ -278,7 +278,7 @@ class DifferenceEngine extends ContextSource {
if ( $samePage && $this->mNewPage->quickUserCan( 'edit', $user ) ) {
if ( $this->mNewRev->isCurrent() && $this->mNewPage->userCan( 'rollback', $user ) ) {
$out->preventClickjacking();
$rollback = '&#160;&#160;&#160;' . Linker::generateRollback( $this->mNewRev );
$rollback = '&#160;&#160;&#160;' . Linker::generateRollback( $this->mNewRev, $this->getContext() );
}
if ( !$this->mOldRev->isDeleted( Revision::DELETED_TEXT ) && !$this->mNewRev->isDeleted( Revision::DELETED_TEXT ) ) {
$undoLink = ' ' . $this->msg( 'parentheses' )->rawParams(

View file

@ -850,7 +850,7 @@ class ContribsPager extends ReverseChronologicalPager {
&& $page->quickUserCan( 'edit', $user ) )
{
$this->preventClickjacking();
$topmarktext .= ' ' . Linker::generateRollback( $rev );
$topmarktext .= ' ' . Linker::generateRollback( $rev, $this->getContext() );
}
}
# Is there a visible previous revision?