Sbisson has uploaded a new change for review.
https://gerrit.wikimedia.org/r/265495
Change subject: Truncate usernames, titles and excerpts in notifications
......................................................................
Truncate usernames, titles and excerpts in notifications
Bug: T121822
Change-Id: Ia0a52926133ab7e04d7d9c2a095ef8f9d0871a49
---
M includes/formatters/EchoEventFormatter.php
M includes/formatters/EchoFlyoutFormatter.php
M includes/formatters/EchoModelFormatter.php
M includes/formatters/EventPresentationModel.php
M includes/formatters/MentionPresentationModel.php
M includes/formatters/PageLinkedPresentationModel.php
M includes/formatters/RevertedPresentationModel.php
M includes/formatters/SpecialNotificationsFormatter.php
M modules/echo.mixins.less
M modules/nojs/mw.echo.notifications.less
M modules/ooui/styles/mw.echo.ui.NotificationItemWidget.less
11 files changed, 34 insertions(+), 9 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Echo
refs/changes/95/265495/1
diff --git a/includes/formatters/EchoEventFormatter.php
b/includes/formatters/EchoEventFormatter.php
index c7aef95..2c34f22 100644
--- a/includes/formatters/EchoEventFormatter.php
+++ b/includes/formatters/EchoEventFormatter.php
@@ -35,4 +35,8 @@
* @return string
*/
abstract protected function formatModel( EchoEventPresentationModel
$model );
+
+ protected function truncateLinkLabel( $label ) {
+ return $this->language->truncate( $label, 15 );
+ }
}
diff --git a/includes/formatters/EchoFlyoutFormatter.php
b/includes/formatters/EchoFlyoutFormatter.php
index d94fc27..652369b 100644
--- a/includes/formatters/EchoFlyoutFormatter.php
+++ b/includes/formatters/EchoFlyoutFormatter.php
@@ -41,7 +41,7 @@
$footerItems = array( $ts );
$secondaryLinks = array_filter( $model->getSecondaryLinks() );
foreach ( $secondaryLinks as $link ) {
- $footerItems[] = Html::element( 'a', array( 'href' =>
$link['url'] ), $link['label'] );
+ $footerItems[] = Html::element( 'a', array( 'href' =>
$link['url'] ), $this->truncateLinkLabel( $link['label'] ) );
}
$html .= Xml::tags(
'div',
diff --git a/includes/formatters/EchoModelFormatter.php
b/includes/formatters/EchoModelFormatter.php
index 33ec11a..0cf5b46 100644
--- a/includes/formatters/EchoModelFormatter.php
+++ b/includes/formatters/EchoModelFormatter.php
@@ -12,6 +12,9 @@
protected function formatModel( EchoEventPresentationModel $model ) {
$data = $model->jsonSerialize();
$data['iconUrl'] = EchoNotificationFormatter::getIconUrl(
$model->getIconType(), $this->language->getDir() );
+ foreach ( $data['links']['secondary'] as &$link ) {
+ $link['label'] = $this->truncateLinkLabel(
$link['label'] );
+ }
return $data;
}
}
diff --git a/includes/formatters/EventPresentationModel.php
b/includes/formatters/EventPresentationModel.php
index c7d00c9..41ff0d2 100644
--- a/includes/formatters/EventPresentationModel.php
+++ b/includes/formatters/EventPresentationModel.php
@@ -220,7 +220,7 @@
if ( $this->userCan( Revision::DELETED_USER ) ) {
// Not deleted
- return array( $agent->getName(), $agent->getName() );
+ return array( $this->getTruncatedUsername( $agent ),
$agent->getName() );
} else {
// Deleted/hidden
$msg = $this->msg( 'rev-deleted-user' )->plain();
@@ -367,4 +367,13 @@
),
);
}
+
+ protected function getTruncatedUsername( User $user ) {
+ return $this->language->truncate( $user->getName(), 30 );
+ }
+
+ protected function getTruncatedTitleText( Title $title,
$includeNamespace = false ) {
+ $text = $includeNamespace ? $title->getPrefixedText() :
$title->getText();
+ return $this->language->truncate( $text , 50 );
+ }
}
diff --git a/includes/formatters/MentionPresentationModel.php
b/includes/formatters/MentionPresentationModel.php
index d81aca5..8334b05 100644
--- a/includes/formatters/MentionPresentationModel.php
+++ b/includes/formatters/MentionPresentationModel.php
@@ -65,15 +65,15 @@
$msg->params( $this->getViewingUserForGender() );
if ( $this->onArticleTalkpage() ) {
- $msg->params( $this->event->getTitle()->getText() );
+ $msg->params( $this->getTruncatedTitleText(
$this->event->getTitle() ) );
} elseif ( $this->onAgentTalkpage() ) {
// No params to add here.
// If we remove this check, onUserTalkpage() has to
// make sure it is a user talk page but NOT the agent's
talk page.
} elseif ( $this->onUserTalkpage() ) {
- $msg->params( $this->event->getTitle()->getText() );
+ $msg->params( $this->getTruncatedTitleText(
$this->event->getTitle() ) );
} else {
- $msg->params(
$this->event->getTitle()->getPrefixedText() );
+ $msg->params( $this->getTruncatedTitleText(
$this->event->getTitle(), true ) );
}
$section = $this->getSection();
diff --git a/includes/formatters/PageLinkedPresentationModel.php
b/includes/formatters/PageLinkedPresentationModel.php
index a4b53ef..c94ac39 100644
--- a/includes/formatters/PageLinkedPresentationModel.php
+++ b/includes/formatters/PageLinkedPresentationModel.php
@@ -46,8 +46,8 @@
public function getHeaderMessage() {
$msg = parent::getHeaderMessage();
- $msg->params( $this->event->getTitle()->getPrefixedText() );
- $msg->params( $this->getPageFrom()->getPrefixedText() );
+ $msg->params( $this->getTruncatedTitleText(
$this->event->getTitle(), true ) );
+ $msg->params( $this->getTruncatedTitleText(
$this->getPageFrom(), true ) );
list( $formattedCount, $countForPlural ) =
$this->getNotificationCountForOutput( false, array(
$this, 'getLinkedPageId' ) );
$msg->params( $formattedCount );
diff --git a/includes/formatters/RevertedPresentationModel.php
b/includes/formatters/RevertedPresentationModel.php
index 3e39c50..0804219 100644
--- a/includes/formatters/RevertedPresentationModel.php
+++ b/includes/formatters/RevertedPresentationModel.php
@@ -12,7 +12,7 @@
public function getHeaderMessage() {
$msg = parent::getHeaderMessage();
- $msg->params( $this->event->getTitle()->getPrefixedText() );
+ $msg->params( $this->getTruncatedTitleText(
$this->event->getTitle(), true ) );
$msg->params( $this->getNumberOfEdits() );
return $msg;
}
diff --git a/includes/formatters/SpecialNotificationsFormatter.php
b/includes/formatters/SpecialNotificationsFormatter.php
index 94d3780..d561ffd 100644
--- a/includes/formatters/SpecialNotificationsFormatter.php
+++ b/includes/formatters/SpecialNotificationsFormatter.php
@@ -44,7 +44,7 @@
}
$links = array_merge( $links, array_filter(
$model->getSecondaryLinks() ) );
foreach ( $links as $link ) {
- $footerItems[] = Html::element( 'a', array( 'href' =>
$link['url'] ), $link['label'] );
+ $footerItems[] = Html::element( 'a', array( 'href' =>
$link['url'] ), $this->truncateLinkLabel( $link['label'] ) );
}
$html .= Xml::tags(
diff --git a/modules/echo.mixins.less b/modules/echo.mixins.less
index c0bffb0..11a7f26 100644
--- a/modules/echo.mixins.less
+++ b/modules/echo.mixins.less
@@ -4,3 +4,9 @@
opacity: 1;
}
}
+
+.mw-echo-ui-mixin-one-line-truncated() {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
diff --git a/modules/nojs/mw.echo.notifications.less
b/modules/nojs/mw.echo.notifications.less
index e0051da..7abca7e 100644
--- a/modules/nojs/mw.echo.notifications.less
+++ b/modules/nojs/mw.echo.notifications.less
@@ -1,4 +1,5 @@
@import '../echo.variables';
+@import '../echo.mixins';
// This needs to be outside the upper selector 'NotificationItemWidget'
// because the same styles also apply (for the moment, at least) to the
notification
@@ -57,6 +58,7 @@
}
.mw-echo-payload {
+ .mw-echo-ui-mixin-one-line-truncated;
color: @notification-body-color;
}
diff --git a/modules/ooui/styles/mw.echo.ui.NotificationItemWidget.less
b/modules/ooui/styles/mw.echo.ui.NotificationItemWidget.less
index dc01102..e25dcc0 100644
--- a/modules/ooui/styles/mw.echo.ui.NotificationItemWidget.less
+++ b/modules/ooui/styles/mw.echo.ui.NotificationItemWidget.less
@@ -37,6 +37,7 @@
color: @notification-text-color;
}
&-body {
+ .mw-echo-ui-mixin-one-line-truncated;
color: @notification-body-color;
}
}
--
To view, visit https://gerrit.wikimedia.org/r/265495
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia0a52926133ab7e04d7d9c2a095ef8f9d0871a49
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Echo
Gerrit-Branch: master
Gerrit-Owner: Sbisson <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits