From: jenkins-bot Date: Tue, 8 Mar 2016 20:23:02 +0000 (+0000) Subject: Merge "ChangesList: Add support for context source in ChangesList::flag()" X-Git-Tag: 1.31.0-rc.0~7695 X-Git-Url: https://git.cyclocoop.org/%242?a=commitdiff_plain;h=de966d247c7f51e646c29acd884c6c316a232fd4;hp=4959a43f1c3897a539281c86671f8c3d851e5329;p=lhc%2Fweb%2Fwiklou.git Merge "ChangesList: Add support for context source in ChangesList::flag()" --- diff --git a/includes/actions/HistoryAction.php b/includes/actions/HistoryAction.php index 6f1f3e81b4..5ec10e6aff 100644 --- a/includes/actions/HistoryAction.php +++ b/includes/actions/HistoryAction.php @@ -682,7 +682,7 @@ class HistoryPager extends ReverseChronologicalPager { $s .= $dirmark; if ( $rev->isMinor() ) { - $s .= ' ' . ChangesList::flag( 'minor' ); + $s .= ' ' . ChangesList::flag( 'minor', $this->getContext() ); } # Sometimes rev_len isn't populated diff --git a/includes/changes/ChangesList.php b/includes/changes/ChangesList.php index 342b31d466..637eb88b09 100644 --- a/includes/changes/ChangesList.php +++ b/includes/changes/ChangesList.php @@ -132,7 +132,7 @@ class ChangesList extends ContextSource { $f = ''; foreach ( array_keys( $this->getConfig()->get( 'RecentChangesFlags' ) ) as $flag ) { $f .= isset( $flags[$flag] ) && $flags[$flag] - ? self::flag( $flag ) + ? self::flag( $flag, $this->getContext() ) : $nothing; } @@ -168,40 +168,40 @@ class ChangesList extends ContextSource { } /** - * Provide the "" element appropriate to a given abbreviated flag, - * namely the flag indicating a new page, a minor edit, a bot edit, or an - * unpatrolled edit. By default in English it will contain "N", "m", "b", - * "!" respectively, plus it will have an appropriate title and class. + * Make an "" element for a given change flag. The flag indicating a new page, minor edit, + * bot edit, or unpatrolled edit. In English it typically contains "N", "m", "b", or "!". * * @param string $flag One key of $wgRecentChangesFlags - * @return string Raw HTML + * @param IContextSource $context + * @return string HTML */ - public static function flag( $flag ) { + public static function flag( $flag, IContextSource $context = null ) { + static $map = [ 'minoredit' => 'minor', 'botedit' => 'bot' ]; static $flagInfos = null; + if ( is_null( $flagInfos ) ) { global $wgRecentChangesFlags; $flagInfos = []; foreach ( $wgRecentChangesFlags as $key => $value ) { - $flagInfos[$key]['letter'] = wfMessage( $value['letter'] )->escaped(); - $flagInfos[$key]['title'] = wfMessage( $value['title'] )->escaped(); + $flagInfos[$key]['letter'] = $value['letter']; + $flagInfos[$key]['title'] = $value['title']; // Allow customized class name, fall back to flag name - $flagInfos[$key]['class'] = Sanitizer::escapeClass( - isset( $value['class'] ) ? $value['class'] : $key ); + $flagInfos[$key]['class'] = isset( $value['class'] ) ? $value['class'] : $key; } } - // Inconsistent naming, bleh, kepted for b/c - $map = [ - 'minoredit' => 'minor', - 'botedit' => 'bot', - ]; + $context = $context ?: RequestContext::getMain(); + + // Inconsistent naming, kepted for b/c if ( isset( $map[$flag] ) ) { $flag = $map[$flag]; } - return "" . $flagInfos[$flag]['letter'] . - ''; + $info = $flagInfos[$flag]; + return Html::element( 'abbr', [ + 'class' => $info['class'], + 'title' => wfMessage( $info['title'] )->setContext( $context )->text(), + ], wfMessage( $info['letter'] )->setContext( $context )->text() ); } /** diff --git a/tests/phpunit/includes/changes/OldChangesListTest.php b/tests/phpunit/includes/changes/OldChangesListTest.php index 193034f374..79cc666ab6 100644 --- a/tests/phpunit/includes/changes/OldChangesListTest.php +++ b/tests/phpunit/includes/changes/OldChangesListTest.php @@ -108,13 +108,13 @@ class OldChangesListTest extends MediaWikiLangTestCase { $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 ); $this->assertContains( - "(newpageletter)", + '(newpageletter)', $line, 'new page flag' ); $this->assertContains( - "(boteditletter)", + '(boteditletter)', $line, 'bot flag' );