Bsitu has uploaded a new change for review.
https://gerrit.wikimedia.org/r/81170
Change subject: archive page and overlay should respect ?uselang=xxx
......................................................................
archive page and overlay should respect ?uselang=xxx
This has not been fully tested yet and this is just a draft implentation
bug: 52992
Change-Id: I3585f28d4ec97b86a467958bdfd603791f293d52
---
M Echo.php
M api/ApiEchoNotifications.php
M formatters/BasicFormatter.php
M formatters/PageLinkFormatter.php
M includes/EmailFormatter.php
M modules/overlay/ext.echo.overlay.js
M modules/special/ext.echo.special.js
7 files changed, 37 insertions(+), 18 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Echo
refs/changes/70/81170/1
diff --git a/Echo.php b/Echo.php
index 897baec..4a27caf 100644
--- a/Echo.php
+++ b/Echo.php
@@ -143,6 +143,7 @@
'dependencies' => array(
'jquery.ui.button',
'mediawiki.api',
+ 'mediawiki.Uri'
),
'messages' => array(
'cancel',
diff --git a/api/ApiEchoNotifications.php b/api/ApiEchoNotifications.php
index 25ddb83..2d5c67c 100644
--- a/api/ApiEchoNotifications.php
+++ b/api/ApiEchoNotifications.php
@@ -199,6 +199,7 @@
),
'index' => false,
'continue' => null,
+ 'uselang' => null
);
}
@@ -211,6 +212,7 @@
'index' => 'If specified, a list of notification IDs,
in order, will be returned.',
'limit' => 'The maximum number of notifications to
return.',
'continue' => 'When more results are available, use
this to continue',
+ 'uselang' => 'the desired language to format the output'
);
}
diff --git a/formatters/BasicFormatter.php b/formatters/BasicFormatter.php
index 5c7ed92..9e28f94 100644
--- a/formatters/BasicFormatter.php
+++ b/formatters/BasicFormatter.php
@@ -237,15 +237,12 @@
$userLanguage = $user->getOption( 'language' );
$dismissTitle = wfMessage( 'echo-category-title-' .
$event->getCategory() )
- ->inLanguage( $userLanguage )
->numParams( 1 )
->text();
$dismissMessage = wfMessage( 'echo-dismiss-message',
$dismissTitle )
- ->inLanguage( $userLanguage )
->escaped();
$dismiss = Xml::tags( 'div', array( 'class' =>
'mw-echo-dismiss-message' ), $dismissMessage ) . "\n";
$prefsMessage = wfMessage( 'echo-dismiss-prefs-message' )
- ->inLanguage( $userLanguage )
->escaped();
$dismiss .= Xml::tags( 'div', array( 'class' =>
'mw-echo-prefs-dismiss-message' ), $prefsMessage ) . "\n";
$dismiss = Xml::tags( 'div', array( 'class' =>
'mw-echo-dismiss', 'style' => 'display:none;' ), $dismiss ) . "\n";
@@ -339,11 +336,14 @@
* @param $details array An i18n message and parameters to pass to the
message
* @param $event EchoEvent that the notification is for.
* @param $user User to format the notification for.
+ * @param $lang string The language to format the message to
* @return string
*/
- public function formatFragment( $details, $event, $user ) {
- $message = wfMessage( $details['message'] )
- ->inLanguage( $user->getOption( 'language' ) );
+ public function formatFragment( $details, $event, $user, $lang = '' ) {
+ $message = wfMessage( $details['message'] );
+ if ( $lang ) {
+ $message->inLanguage( $lang );
+ }
$this->processParams( $details['params'], $event, $message,
$user );
@@ -627,7 +627,7 @@
* 'border: 1px solid green; text-decoration: none;' (optional)
* @return String URL for link, or HTML for anchor tag, or empty string
*/
- public function getLink( $event, $user, $rank = 'primary', $local =
true, $urlOnly = false, $style = '' ) {
+ public function getLink( $event, $user, $rank = 'primary', $local =
true, $urlOnly = false, $style = '', $inUserLang = false ) {
$destination = $event->getLinkDestination( $rank );
if ( !$destination ) {
return '';
@@ -645,7 +645,11 @@
return $target->getFullURL( $query, false,
PROTO_HTTPS );
}
} else {
- $message = wfMessage( $event->getLinkMessage( $rank )
)->inLanguage( $user->getOption( 'language' ) )->text();
+ $message = wfMessage( $event->getLinkMessage( $rank ) );
+ if ( $inUserLang ) {
+ $message->inLanguage( $user->getOption(
'language' ) );
+ }
+ $message->text();
$attribs = array( 'class' =>
"mw-echo-notification-{$rank}-link" );
if ( $style ) {
$attribs['style'] = $style;
@@ -753,7 +757,6 @@
if ( $this->bundleData['agent-other-count'] >
$wgEchoMaxNotificationCount ) {
$message->params(
wfMessage( 'echo-notification-count' )
- ->inLanguage( $user->getOption(
'language' ) )
->params( $wgEchoMaxNotificationCount )
->text()
);
diff --git a/formatters/PageLinkFormatter.php b/formatters/PageLinkFormatter.php
index a718be6..81c6595 100644
--- a/formatters/PageLinkFormatter.php
+++ b/formatters/PageLinkFormatter.php
@@ -146,7 +146,6 @@
if (
$this->bundleData['link-from-page-other-count'] > $wgEchoMaxNotificationCount )
{
$message->params(
wfMessage(
'echo-notification-count' )
- ->inLanguage( $user->getOption(
'language' ) )
->params(
$wgEchoMaxNotificationCount )
->text()
);
diff --git a/includes/EmailFormatter.php b/includes/EmailFormatter.php
index 21a7076..fecf793 100644
--- a/includes/EmailFormatter.php
+++ b/includes/EmailFormatter.php
@@ -241,7 +241,8 @@
$message = $this->notifFormatter->formatFragment(
$detail,
$this->event,
- $this->user
+ $this->user,
+ $this->user->getOption( 'language' )
);
return $this->decorator->decorateIntro( $message );
@@ -659,7 +660,7 @@
* {@inheritDoc}
*/
public function decorateSingleAction( $notifFormatter, $event, $user,
$rank, $message ) {
- $url = $notifFormatter->getLink( $event, $user, $rank, false,
true );
+ $url = $notifFormatter->getLink( $event, $user, $rank, false,
true, '', true );
return EchoEmailMode::message( $message, $user )->text()
. EchoEmailMode::message( 'colon-separator', $user
)->text()
@@ -753,7 +754,7 @@
$style = $this->getSecondaryLinkCSS();
}
- return $notifFormatter->getLink( $event, $user, $rank, false,
false, $style );
+ return $notifFormatter->getLink( $event, $user, $rank, false,
false, $style, true );
}
/**
diff --git a/modules/overlay/ext.echo.overlay.js
b/modules/overlay/ext.echo.overlay.js
index f03f5ca..adb5c7c 100644
--- a/modules/overlay/ext.echo.overlay.js
+++ b/modules/overlay/ext.echo.overlay.js
@@ -23,6 +23,7 @@
$overlay = $( '<div></div>' ).addClass(
'mw-echo-overlay' ),
$prefLink = $( '#pt-preferences a' ),
count = 0,
+ apiData,
api = new mw.Api( { ajax: { cache: false } } );
// Set notification limit based on height of the window
@@ -34,13 +35,19 @@
notificationLimit = 8;
}
- api.get( {
+ apiData = {
'action' : 'query',
'meta' : 'notifications',
'notformat' : 'flyout',
'notlimit' : notificationLimit,
'notprop' : 'index|list|count'
- } ).done( function ( result ) {
+ }
+
+ if ( typeof mw.Uri().query.uselang !== 'undefined' ) {
+ apiData.uselang = mw.Uri().query.uselang;
+ }
+
+ api.get( apiData ).done( function ( result ) {
var notifications = result.query.notifications,
unread = [],
unreadTotalCount =
result.query.notifications.count,
diff --git a/modules/special/ext.echo.special.js
b/modules/special/ext.echo.special.js
index 8903930..094d778 100644
--- a/modules/special/ext.echo.special.js
+++ b/modules/special/ext.echo.special.js
@@ -60,16 +60,22 @@
* Load more notification records.
*/
loadMore: function () {
- var api = new mw.Api( { ajax: { cache: false } } ),
notifications, data, container, $li, that = this, unread = [];
+ var api = new mw.Api( { ajax: { cache: false } } ),
notifications, data, container, $li, that = this, unread = [], apiData;
- api.get( {
+ apiData = {
'action' : 'query',
'meta' : 'notifications',
'notformat' : 'html',
'notprop' : 'index|list',
'notcontinue': this.notcontinue,
'notlimit': mw.config.get( 'wgEchoDisplayNum' )
- } ).done( function ( result ) {
+ }
+
+ if ( typeof mw.Uri().query.uselang !== 'undefined' ) {
+ apiData.uselang = mw.Uri().query.uselang;
+ }
+
+ api.get( apiData ).done( function ( result ) {
container = $( '#mw-echo-special-container' );
notifications = result.query.notifications;
unread = [];
--
To view, visit https://gerrit.wikimedia.org/r/81170
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3585f28d4ec97b86a467958bdfd603791f293d52
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Echo
Gerrit-Branch: master
Gerrit-Owner: Bsitu <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits