Robert Vogel has uploaded a new change for review. https://gerrit.wikimedia.org/r/206774
Change subject: BS Notifications: Fixes/Improvements/Standardizations ...................................................................... BS Notifications: Fixes/Improvements/Standardizations * Added formatter and decorator classes to use own intro and footer * Used own formatting also for mw mails * Added realname param * bs-newuser is (really) only for admins * bs-newuser works also on MW AddNewAccount * bs-newuser user setting is hidden for non-admins * Used GENDER destinction for messages * Added real name params to every mail * Fixed some messages in de, de-formal and en * Fixed qqq * Fixed some Notices * Added de-fromal message for echo default footer * Deaktivated mention, page-linked and reverted notifications-did not work * Deaktivated batch mails - currently wont work in BS => This will kind a do for next release. TODO: crlt+a, entf, re-write Change-Id: Id5037ba1999174c4837153c42896ee41d3604354 --- M Notifications/Notifications.class.php M Notifications/Notifications.setup.php M Notifications/i18n/de-formal.json M Notifications/i18n/de.json M Notifications/i18n/en.json M Notifications/i18n/qqq.json A Notifications/includes/BsEchoEmailSingle.class.php A Notifications/includes/BsEchoTextEmailDecorator.class.php A Notifications/includes/BsEchoTextEmailFormatter.class.php M Notifications/includes/BsNotificationsFormatter.class.php M ShoutBox/ShoutBox.class.php M ShoutBox/i18n/de-formal.json M ShoutBox/i18n/de.json M ShoutBox/i18n/en.json M ShoutBox/i18n/qqq.json 15 files changed, 405 insertions(+), 90 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/BlueSpiceExtensions refs/changes/74/206774/1 diff --git a/Notifications/Notifications.class.php b/Notifications/Notifications.class.php index 4cefc91..54d2137 100644 --- a/Notifications/Notifications.class.php +++ b/Notifications/Notifications.class.php @@ -22,6 +22,7 @@ * For further information visit http://www.blue-spice.org * * @author Stefan Widmann <widm...@hallowelt.biz> + * @author Patric Wirth <wi...@hallowelt.biz> * @version 2.23.1 * @package BlueSpice_Extensions * @subpackage Notifications @@ -62,7 +63,10 @@ $this->mInfo = array( EXTINFO::NAME => 'Notifications', EXTINFO::DESCRIPTION => 'bs-notifications-desc', - EXTINFO::AUTHOR => array( '[https://www.mediawiki.org/wiki/User:Swidmann Stefan Widmann]' ), + EXTINFO::AUTHOR => array( + '[https://www.mediawiki.org/wiki/User:Swidmann Stefan Widmann]', + 'Patric Wirth', + ), EXTINFO::VERSION => 'default', EXTINFO::STATUS => 'default', EXTINFO::PACKAGE => 'default', @@ -83,6 +87,7 @@ $this->setHook( 'ArticleDeleteComplete' ); $this->setHook( 'TitleMoveComplete' ); $this->setHook( 'BSUserManagerAfterAddUser' ); + $this->setHook( 'AddNewAccount' ); $this->setHook( 'BSShoutBoxAfterInsertShout' ); $this->setHook( 'BeforeCreateEchoEvent' ); $this->setHook( 'EchoGetDefaultNotifiedUsers' ); @@ -90,6 +95,7 @@ $this->setHook( 'UserSaveOptions' ); $this->setHook( 'BeforePageDisplay' ); $this->setHook( 'SkinTemplateOutputPageBeforeExec' ); + $this->setHook( 'EchoAbortEmailNotification' ); // Variables BsConfig::registerVar( 'MW::Notifications::Active', true, BsConfig::LEVEL_PUBLIC|BsConfig::TYPE_BOOL, 'bs-notifications-pref-active', 'toggle' ); @@ -204,6 +210,10 @@ // category definition via self::$aNotificationCategories // HINT: http://www.mediawiki.org/wiki/Echo_(Notifications)/Developer_guide#Notification_category_parameters foreach( self::$aNotificationCategories as $sCategory => $aCategoryDefinition ) { + //Hide admin-only notifications + if( $sCategory == 'bs-newuser-cat' && !$this->getUser()->isAllowed('wikiadmin') ) { + continue; + } $notificationCategories[$sCategory] = $aCategoryDefinition; } @@ -214,13 +224,14 @@ 'title-message' => 'bs-echo-page-edit', 'title-params' => array( 'title' ), 'flyout-message' => 'bs-notifications-email-edit-subject', - 'flyout-params' => array( 'titlelink', 'agentlink' ), + // params are wrong, but email subject is in use here... + 'flyout-params' => array( 'titlelink', 'agentlink', 'agentlink' ), 'email-subject-message' => 'bs-notifications-email-edit-subject', - 'email-subject-params' => array( 'title', 'agent' ), + 'email-subject-params' => array( 'title', 'agent', 'realname' ), 'email-body-message' => 'bs-notifications-email-edit', - 'email-body-params' => array( 'title', 'agent', 'summary', 'titlelink', 'difflink' ), + 'email-body-params' => array( 'title', 'agent', 'summary', 'titlelink', 'difflink', 'realname' ), 'email-body-batch-message' => 'bs-notifications-email-edit', - 'email-body-batch-params' => array( 'title', 'agent', 'summary', 'titlelink', 'difflink' ), + 'email-body-batch-params' => array( 'title', 'agent', 'summary', 'titlelink', 'difflink', 'realname' ), 'icon' => 'bs-edit', ); @@ -231,13 +242,14 @@ 'title-message' => 'bs-echo-page-create', 'title-params' => array( 'title' ), 'flyout-message' => 'bs-notifications-email-new-subject', - 'flyout-params' => array( 'titlelink', 'agentlink' ), + // params are wrong, but email subject is in use here... + 'flyout-params' => array( 'titlelink', 'agentlink', 'agentlink' ), 'email-subject-message' => 'bs-notifications-email-new-subject', - 'email-subject-params' => array( 'title', 'agent' ), + 'email-subject-params' => array( 'title', 'agent', 'realname' ), 'email-body-message' => 'bs-notifications-email-new', - 'email-body-params' => array( 'title', 'agent', 'summary', 'titlelink', 'difflink' ), + 'email-body-params' => array( 'title', 'agent', 'summary', 'titlelink', 'difflink', 'realname' ), 'email-body-batch-message' => 'bs-notifications-email-new', - 'email-body-batch-params' => array( 'title', 'agent', 'summary', 'titlelink', 'difflink' ), + 'email-body-batch-params' => array( 'title', 'agent', 'summary', 'titlelink', 'difflink', 'realname' ), 'icon' => 'bs-create', ); @@ -248,13 +260,14 @@ 'title-message' => 'bs-echo-page-delete', 'title-params' => array( 'title' ), 'flyout-message' => 'bs-notifications-email-delete-subject', - 'flyout-params' => array( 'titlelink', 'agentlink' ), + // params are wrong, but email subject is in use here... + 'flyout-params' => array( 'titlelink', 'agentlink', 'agentlink' ), 'email-subject-message' => 'bs-notifications-email-delete-subject', - 'email-subject-params' => array( 'title', 'agent' ), + 'email-subject-params' => array( 'title', 'agent', 'realname' ), 'email-body-message' => 'bs-notifications-email-delete', - 'email-body-params' => array( 'titlelink', 'agent', 'deletereason' ), + 'email-body-params' => array( 'titlelink', 'agent', 'deletereason', 'title','realname' ), 'email-body-batch-message' => 'bs-notifications-email-delete', - 'email-body-batch-params' => array( 'titlelink', 'agent', 'deletereason' ), + 'email-body-batch-params' => array( 'titlelink', 'agent', 'deletereason', 'title', 'realname' ), 'icon' => 'bs-delete', ); @@ -265,32 +278,37 @@ 'title-message' => 'bs-echo-page-move', 'title-params' => array( 'title' ), 'flyout-message' => 'bs-notifications-email-move-subject', - 'flyout-params' => array( 'title', 'agentlink', 'newtitlelink' ), + // params are wrong, but email subject is in use here... + 'flyout-params' => array( 'title', 'agentlink', 'newtitlelink', 'agentlink' ), 'email-subject-message' => 'bs-notifications-email-move-subject', - 'email-subject-params' => array( 'title', 'agent', 'newtitle' ), + 'email-subject-params' => array( 'title', 'agent', 'newtitle', 'realname' ), 'email-body-message' => 'bs-notifications-email-move', - 'email-body-params' => array( 'title', 'agent', 'newtitle', 'newtitlelink' ), + 'email-body-params' => array( 'title', 'agent', 'newtitle', 'newtitlelink', 'realname' ), 'email-body-batch-message' => 'bs-notifications-email-move', - 'email-body-batch-params' => array( 'title', 'agent', 'newtitle', 'newtitlelink' ), + 'email-body-batch-params' => array( 'title', 'agent', 'newtitle', 'newtitlelink', 'realname' ), 'icon' => 'bs-move', ); - $notifications['bs-newuser'] = array( - 'category' => 'bs-newuser-cat', - 'group' => 'neutral', - 'formatter-class' => 'BsNotificationsFormatter', - 'title-message' => 'bs-echo-page-newuser', - 'title-params' => array( 'userlink' ), - 'flyout-message' => 'bs-notifications-email-addaccount-subject', - 'flyout-params' => array( 'userlink' ), - 'email-subject-message' => 'bs-notifications-email-addaccount-subject', - 'email-subject-params' => array( 'username' ), - 'email-body-message' => 'bs-notifications-email-addaccount', - 'email-body-params' => array( 'userlink', 'username' ), - 'email-body-batch-message' => 'bs-notifications-email-addaccount', - 'email-body-batch-params' => array( 'userlink','username' ), - 'icon' => 'bs-newuser', - ); + //Hide admin-only notifications + if( $this->getUser()->isAllowed('wikiadmin') ) { + $notifications['bs-newuser'] = array( + 'category' => 'bs-newuser-cat', + 'group' => 'neutral', + 'formatter-class' => 'BsNotificationsFormatter', + 'title-message' => 'bs-echo-page-newuser', + 'title-params' => array( 'userlink' ), + 'flyout-message' => 'bs-notifications-email-addaccount-subject', + // params are wrong, but email subject is in use here... + 'flyout-params' => array( 'userlink', 'userlink' ), + 'email-subject-message' => 'bs-notifications-email-addaccount-subject', + 'email-subject-params' => array( 'username', 'realname' ), + 'email-body-message' => 'bs-notifications-email-addaccount', + 'email-body-params' => array( 'userlink', 'username', 'realname' ), + 'email-body-batch-message' => 'bs-notifications-email-addaccount', + 'email-body-batch-params' => array( 'userlink', 'username', 'realname' ), + 'icon' => 'bs-newuser', + ); + } $notifications['bs-shoutbox'] = array( 'category' => 'bs-shoutbox-cat', @@ -299,15 +317,43 @@ 'title-message' => 'bs-echo-page-shoutbox', 'title-params' => array( 'title' ), 'flyout-message' => 'bs-notifications-email-shout-subject', - 'flyout-params' => array( 'titlelink', 'agentlink' ), + // params are wrong, but email subject is in use here... + 'flyout-params' => array( 'titlelink', 'agentlink', 'agentlink' ), 'email-subject-message' => 'bs-notifications-email-shout-subject', - 'email-subject-params' => array( 'title', 'agent' ), + 'email-subject-params' => array( 'title', 'agent', 'realname' ), 'email-body-message' => 'bs-notifications-email-shout', - 'email-body-params' => array( 'title', 'agent', 'shoutmsg', 'titlelink' ), + 'email-body-params' => array( 'title', 'agent', 'shoutmsg', 'titlelink', 'realname' ), 'email-body-batch-message' => 'bs-notifications-email-shout', - 'email-body-batch-params' => array( 'title', 'agent', 'shoutmsg', 'titlelink' ), + 'email-body-batch-params' => array( 'title', 'agent', 'shoutmsg', 'titlelink', 'realname' ), 'icon' => 'bs-shoutbox', ); + + //Echo default Notifications for using BsNotificationsFormatter + $aMWNotifications = array( + 'welcome', + 'edit-user-talk', + 'reverted', + 'page-linked', + 'mention', + 'user-rights', + ); + //Deactivate Notifications, cause they did not work + $aDeactivateNotifications = array( + 'page-linked' => 'article-linked', + 'reverted' => 'reverted', + 'mention' => 'mention', + ); + foreach($aMWNotifications as $sKey) { + if( isset($aDeactivateNotifications[$sKey]) ) { + unset( $aMWNotifications[$sKey] ); + unset( $notificationCategories[$aDeactivateNotifications[$sKey]] ); + continue; + } + if( !isset($notifications[$sKey]) ) { + continue; + } + $notifications[$sKey]['formatter-class'] = 'BsNotificationsFormatter'; + } return true; } @@ -338,7 +384,8 @@ 'title' => Title::newFromID( $iArticleId ), 'agent' => $wgUser, 'extra' => array( - 'shoutmsg' => $sMessage + 'shoutmsg' => $sMessage, + 'realname' => BsCore::getUserDisplayName( $wgUser ), ) ) ); @@ -375,6 +422,8 @@ 'extra' => array( 'summary' => $summary, 'titlelink' => true, + 'realname' => BsCore::getUserDisplayName( $user ), + 'difflink' => '', ), ) ); return true; @@ -389,6 +438,7 @@ 'titlelink' => true, 'difflink' => is_object( $revision ) ? array( 'diffparams' => array( 'diff' => $revision->getId(), 'oldid' => $revision->getPrevious()->getId() ) ): array( 'diffparams' => array() ), 'agentlink' => true, + 'realname' => BsCore::getUserDisplayName( $user ), ), ) ); @@ -412,7 +462,9 @@ 'title' => $article->getTitle(), 'agent' => $user, 'extra' => array( - 'deletereason' => $reason + 'deletereason' => $reason, + 'title' => $article->getTitle()->getText(), + 'realname' => BsCore::getUserDisplayName( $user ), ), ) ); @@ -438,6 +490,7 @@ 'agent' => $user, 'extra' => array( 'newtitle' => $newtitle, + 'realname' => BsCore::getUserDisplayName( $user ), ) ) ); @@ -458,11 +511,39 @@ // TODO SW: implement own notifications formatter 'extra' => array( 'user' => $oUser->getName(), - 'username' => isset($aUserDetails['realname']) ? $aUserDetails['realname'] : $aUserDetails['username'], + 'username' => $aUserDetails['username'], 'userlink' => true, + 'realname' => empty( $aUserDetails['realname'] ) + ? $aUserDetails['username'] + : $aUserDetails['realname'], ) ) ); + + wfProfileOut( 'BS::'.__METHOD__ ); + return true; + } + + /** + * Sends a notification after adding an user. + * @param User $oUser + * @param Boolean $bByEmail + * @return bool allow other hooked methods to be executed. Always true. + */ + public function onAddNewAccount( $oUser, $bByEmail ) { + wfProfileIn( 'BS::'.__METHOD__ ); + + if( $oUser->isAllowed( 'bot' ) ) return true; + EchoEvent::create( array( + 'type' => 'bs-newuser', + // TODO SW: implement own notifications formatter + 'extra' => array( + 'user' => $oUser->getName(), + 'username' => $oUser->getName(), + 'userlink' => true, + 'realname' => BsCore::getUserDisplayName( $oUser ), + ) + ) ); wfProfileOut( 'BS::'.__METHOD__ ); return true; @@ -502,4 +583,36 @@ return true; } + /** + * Override notification method due to missing hook, pendant to onEchoAbortEmailNotification + * @param User $user + * @param EchoEvent $event + * @return boolean + */ + public static function notifyWithNotification( $user, $event ) { + //New user notification is only for admins + if( $event->getType() == 'bs-newuser' ) { + if( !$user->isAllowed( 'wikiadmin' ) ) { + return false; + } + } + EchoNotifier::notifyWithNotification( $user, $event ); + } + + /** + * Hook for email notification + * @param User $user + * @param EchoEvent $event + * @return boolean + */ + public function onEchoAbortEmailNotification( $user, $event ) { + //New user notification is only for admins + if( $event->getType() == 'bs-newuser' ) { + if( !$user->isAllowed( 'wikiadmin' ) ) { + return false; + } + } + return true; + } + } diff --git a/Notifications/Notifications.setup.php b/Notifications/Notifications.setup.php index a664fa0..7acd74b 100644 --- a/Notifications/Notifications.setup.php +++ b/Notifications/Notifications.setup.php @@ -2,13 +2,20 @@ BsExtensionManager::registerExtension('Notifications', BsRUNLEVEL::FULL|BsRUNLEVEL::REMOTE); +//Do not enable Batch mails - Wont work for BS so far +$wgEchoEnableEmailBatch = false; + // MessageFiles $wgMessagesDirs['Notifications'] = __DIR__ . '/i18n'; $wgExtensionMessagesFiles['Notifications'] = __DIR__ . '/Notifications.i18n.php'; // Autoloader $GLOBALS['wgAutoloadClasses']['Notifications'] = __DIR__ . '/Notifications.class.php'; + $wgAutoloadClasses['BsNotificationsFormatter'] = __DIR__.'/includes/BsNotificationsFormatter.class.php'; +$wgAutoloadClasses['BsEchoTextEmailFormatter'] = __DIR__.'/includes/BsEchoTextEmailFormatter.class.php'; +$wgAutoloadClasses['BsEchoEmailSingle'] = __DIR__.'/includes/BsEchoEmailSingle.class.php'; +$wgAutoloadClasses['BsEchoTextEmailDecorator'] = __DIR__.'/includes/BsEchoTextEmailDecorator.class.php'; $wgResourceModuleTemplate = array( 'localBasePath' => "$IP/extensions/BlueSpiceExtensions/Notifications/resources", @@ -40,4 +47,7 @@ $wgDefaultUserOptions['echo-subscriptions-web-article-linked'] = true; $wgDefaultUserOptions['echo-subscriptions-web-mention'] = true; +//Overwrite, cause there is no hook +$wgEchoNotifiers['web'] = array( 'Notifications', 'notifyWithNotification' ); + unset( $wgResourceModuleTemplate ); \ No newline at end of file diff --git a/Notifications/i18n/de-formal.json b/Notifications/i18n/de-formal.json index 8c5c2a9..f3bde5e 100644 --- a/Notifications/i18n/de-formal.json +++ b/Notifications/i18n/de-formal.json @@ -4,8 +4,11 @@ "Swidmann" ] }, - "bs-notifications-email-new": "Die Seite \"$1\" wurde von $2 neu {{GENDER:$2|angelegt}}.\n\nKommentar:\n$3\n\nSie können den Artikel über diesen Link aufrufen:\n$4", - "bs-notifications-email-edit": "Die Seite \"$1\" wurde von $2 {{GENDER:$2|geändert}}.\n\nKommentar:\n$3\n\nSie können den Artikel über diese URL aufrufen:\n$4.\n\nUm nur die Änderungen zu sehen, folgen Sie diesem Link:\n$5", - "bs-notifications-email-move": "Die Seite \"$1\" wurde von $2 nach $3 {{GENDER:$2|verschoben}}.\n\nSie können den Artikel über diese URL aufrufen:\n$4", - "bs-notifications-email-shout": "$2 hat auf der Seite \"$1\" eine Nachricht {{GENDER:$2|hinterlassen}}.\n\nNachricht:\n$3\n\nSie können den Artikel über diese URL aufrufen:\n$4" + "bs-notifications-email-new": "Die Seite \"$1\" wurde von $6 neu {{GENDER:$2|angelegt}}.\n\nKommentar:\n$3\n\nSie können den Artikel über diesen Link aufrufen:\n$4", + "bs-notifications-email-edit": "Die Seite \"$1\" wurde von $6 {{GENDER:$2|geändert}}.\n\nKommentar:\n$3\n\nSie können den Artikel über diese URL aufrufen:\n$4.\n\nUm nur die Änderungen zu sehen, folgen Sie diesem Link:\n$5", + "bs-notifications-email-move": "Die Seite \"$1\" wurde von $5 nach $3 {{GENDER:$2|verschoben}}.\n\nSie können den Artikel über diese URL aufrufen:\n$4", + "bs-notifications-email-delete": "Die Seite \"$4\" wurde von $5 {{GENDER:$2|gelöscht}}.\n\nAls Grund wurde angegeben:\n$3\n\nSie können die Seite über diese URL aufrufen:\n$1", + "bs-notifications-email-addaccount": "{{GENDER:$2|Der Benutzer|Die Benutzerin|Das Benutzerkonto}} $3 wurde neu {{GENDER:$2|angelegt}}.\n\nSie können {{GENDER:$2|seine|ihre|die}} Benutzerseite über diese URL aufrufen:\n$1", + "bs-notifications-email-shout": "$5 hat auf der Seite \"$1\" eine Nachricht {{GENDER:$2|hinterlassen}}.\n\nNachricht:\n$3\n\nSie können den Artikel über diese URL aufrufen:\n$4", + "echo-email-footer-default": "$2\n\nUm zu steuern, welche E-Mails wir Ihnen senden, nutzen Sie Ihre Einstellungen:\n{{canonicalurl:{{#special:Preferences}}#mw-prefsection-echo}}\n\n$1" } diff --git a/Notifications/i18n/de.json b/Notifications/i18n/de.json index 9110ce0..09d2c10 100644 --- a/Notifications/i18n/de.json +++ b/Notifications/i18n/de.json @@ -19,18 +19,18 @@ "bs-echo-page-move": "Die Seite [[:$1]] wurde verschoben", "bs-echo-page-newuser": "Der Benutzer $1 wurde neu angelegt.", "bs-echo-page-shoutbox": "Auf der Seite [[:$1]] wurde eine ShoutBox-Mitteilung verfasst .", - "bs-notifications-email-new-subject": "Seite \"$1\" wurde von $2 {{GENDER:$2|angelegt}}", - "bs-notifications-email-new": "Die Seite \"$1\" wurde von $2 neu {{GENDER:$2|angelegt}}.\n\nKommentar:\n $3 \nDu kannst die Seite über diesen Link aufrufen:\n$4", - "bs-notifications-email-edit-subject": "Seite $1 wurde von $2 {{GENDER:$2|geändert}}", - "bs-notifications-email-edit": "Die Seite \"$1\" wurde von $2 {{GENDER:$2|geändert}}.\n\nKommentar:\n $3 \nDu kannst die Seite über diese URL aufrufen:\n$4.\n\nUm nur die Änderungen zu sehen, folge diesem Link:\n$5", - "bs-notifications-email-move-subject": "Seite $1 wurde von $2 {{GENDER:$2|verschoben}}", - "bs-notifications-email-move": "Die Seite \"$1\" wurde von $2 nach $3 {{GENDER:$2|verschoben}}.\n\nDu kannst die Seite über diese URL aufrufen:\n$4", - "bs-notifications-email-delete-subject": "Seite $1 wurde von $2 {{GENDER:$2|gelöscht}}", - "bs-notifications-email-delete": "Die Seite \"$1\" wurde von $2 {{GENDER:$2|gelöscht}}.\n\nAls Grund wurde angegeben:\n$3", - "bs-notifications-email-addaccount-subject": "Benutzer $1 wurde neu angelegt", - "bs-notifications-email-addaccount": "Der Benutzer $1 mit dem bürgerlichen Namen $2 wurde neu angelegt.", - "bs-notifications-email-shout-subject": "$2 hat auf der Seite $1 eine Nachricht {{GENDER:$2|hinterlassen}}", - "bs-notifications-email-shout": "$2 hat auf der Seite \"$1\" eine Nachricht {{GENDER:$2|hinterlassen}}.\n\nNachricht:\n$3\n\nDu kannst die Seite über diese URL aufrufen:\n$4", + "bs-notifications-email-new-subject": "Seite \"$1\" wurde von $3 {{GENDER:$2|angelegt}}", + "bs-notifications-email-new": "Die Seite \"$1\" wurde von $6 neu {{GENDER:$2|angelegt}}.\n\nKommentar:\n $3 \nDu kannst die Seite über diesen Link aufrufen:\n$4", + "bs-notifications-email-edit-subject": "Seite $1 wurde von $3 {{GENDER:$2|geändert}}", + "bs-notifications-email-edit": "Die Seite \"$1\" wurde von $6 {{GENDER:$2|geändert}}.\n\nKommentar:\n $3 \nDu kannst die Seite über diese URL aufrufen:\n$4.\n\nUm nur die Änderungen zu sehen, folge diesem Link:\n$5", + "bs-notifications-email-move-subject": "Seite $1 wurde von $4 {{GENDER:$2|verschoben}}", + "bs-notifications-email-move": "Die Seite \"$1\" wurde von $5 nach $3 {{GENDER:$2|verschoben}}.\n\nDu kannst die Seite über diese URL aufrufen:\n$4", + "bs-notifications-email-delete-subject": "Seite $1 wurde von $3 {{GENDER:$2|gelöscht}}", + "bs-notifications-email-delete": "Die Seite \"$4\" wurde von $5 {{GENDER:$2|gelöscht}}.\n\nAls Grund wurde angegeben:\n$3\n\nDu kannst die Seite über diese URL aufrufen:\n$4", + "bs-notifications-email-addaccount-subject": "Benutzer $2 wurde neu {{GENDER:$1|angelegt}}", + "bs-notifications-email-addaccount": "{{GENDER:$2|Der Benutzer|Die Benutzerin|Das Benutzerkonto}} $3 wurde neu {{GENDER:$2|angelegt}}.\n\nDu kannst {{GENDER:$2|seine|ihre|die}} Benutzerseite über diese URL aufrufen:\n$1", + "bs-notifications-email-shout-subject": "$3 hat auf der Seite $1 eine Nachricht {{GENDER:$2|hinterlassen}}", + "bs-notifications-email-shout": "$5 hat auf der Seite \"$1\" eine Nachricht {{GENDER:$2|hinterlassen}}.\n\nNachricht:\n$3\n\nDu kannst die Seite über diese URL aufrufen:\n$4", "echo-category-title-bs-create-cat": "Benachrichtigung bei neuen Seiten", "echo-category-title-bs-edit-cat": "Benachrichtigung beim Bearbeiten von Seiten", "echo-category-title-bs-move-cat": "Benachrichtigung beim Verschieben von Seiten", diff --git a/Notifications/i18n/en.json b/Notifications/i18n/en.json index 976adfd..503b557 100644 --- a/Notifications/i18n/en.json +++ b/Notifications/i18n/en.json @@ -18,18 +18,18 @@ "bs-echo-page-move": "The page [[:$1]] has been moved", "bs-echo-page-newuser": "The user $1 was created.", "bs-echo-page-shoutbox": "A new ShoutBox message on the site [[:$1]].", - "bs-notifications-email-new-subject": "Page $1 {{GENDER:$2|created}} by $2", - "bs-notifications-email-new": "The page \"$1\" was {{GENDER:$2|created}} by $2.\n\nComment:\n $3 \nYou can visit the page following this link:\n$4\n", - "bs-notifications-email-edit-subject": "Page $1 {{GENDER:$2|edited}} by $2", - "bs-notifications-email-edit": "The page \"$1\" was {{GENDER:$2|edited}} by $2.\n\nComment:\n $3 \nYou can visit the page following this link:\n$4.\n\nIf you only want to see the changes, follow this link:\n$5\n", - "bs-notifications-email-move-subject": "Page $1 {{GENDER:$2|moved}} by $2", - "bs-notifications-email-move": "The page \"$1\" was {{GENDER:$2|moved}} to $3 by $2. You can visit the page following this link:\n$4\n", - "bs-notifications-email-delete-subject": "Page $1 {{GENDER:$2|deleted}} by $2", - "bs-notifications-email-delete": "The page \"$1\" was {{GENDER:$2|deleted}} by $2.\n\nThis was the reason:\n$3", - "bs-notifications-email-addaccount-subject": "User $1 created", - "bs-notifications-email-addaccount": "The user $1 with real name $2 was created.", - "bs-notifications-email-shout-subject": "$2 {{GENDER:$2|posted}} a message on page $1", - "bs-notifications-email-shout": "$2 {{GENDER:$2|posted}} a message on page \"$1\".\n\nMessage:\n$3\n\nYou can visit the page following this link:\n$4.\n", + "bs-notifications-email-new-subject": "Page $1 {{GENDER:$2|created}} by $3", + "bs-notifications-email-new": "The page \"$1\" was {{GENDER:$2|created}} by $6.\n\nComment:\n $3 \nYou can visit the page following this link:\n$4\n", + "bs-notifications-email-edit-subject": "Page $1 {{GENDER:$2|edited}} by $3", + "bs-notifications-email-edit": "The page \"$1\" was {{GENDER:$2|edited}} by $6.\n\nComment:\n $3 \nYou can visit the page following this link:\n$4.\n\nIf you only want to see the changes, follow this link:\n$5\n", + "bs-notifications-email-move-subject": "Page $1 {{GENDER:$2|moved}} by $4", + "bs-notifications-email-move": "The page \"$1\" was {{GENDER:$2|moved}} to $3 by $5. You can visit the page following this link:\n$4\n", + "bs-notifications-email-delete-subject": "Page $1 {{GENDER:$2|deleted}} by $3", + "bs-notifications-email-delete": "The page \"$4\" was {{GENDER:$2|deleted}} by $5.\n\nThis was the reason:\n$3", + "bs-notifications-email-addaccount-subject": "User $2 {{GENDER:$1|created}}", + "bs-notifications-email-addaccount": "{{GENDER:$2|The user}} $3 was created.\n\nYou can visit {{GENDER:$2|his|her|the}} user page following this link:\n$1", + "bs-notifications-email-shout-subject": "$3 {{GENDER:$2|posted}} a message on page $1", + "bs-notifications-email-shout": "$5 {{GENDER:$2|posted}} a message on page \"$1\".\n\nMessage:\n$3\n\nYou can visit the page following this link:\n$4.\n", "echo-category-title-bs-create-cat": "Notification for new pages", "echo-category-title-bs-edit-cat": "Notification for edits", "echo-category-title-bs-move-cat": "Notification for moves", diff --git a/Notifications/i18n/qqq.json b/Notifications/i18n/qqq.json index d333ee4..7b1db60 100644 --- a/Notifications/i18n/qqq.json +++ b/Notifications/i18n/qqq.json @@ -20,17 +20,17 @@ "bs-echo-page-move": "Short message that a page was edited. Parameters:\n* $1 pagename of the moved page", "bs-echo-page-newuser": "Short message that a user was created. Parameters:\n* $1 username of the created user", "bs-echo-page-shoutbox": "Short message that a shoutbox entry on a page was created. Parameters:\n* $1 pagename of page where the shoutbox entry was created", - "bs-notifications-email-new-subject": "Short message that a page was edited by a user. Parameters:\n* $1 pagename of the created page\n* $2 username", - "bs-notifications-email-new": "A page was created by a user with link to the page. Parameters:\n* $1 page that was created\n* $2 username\n* $3 summary of page creation\n* $4 link to the page", - "bs-notifications-email-edit-subject": "A page was edited by a user. Parameters:\n* $1 page that was edited\n* $2 username", - "bs-notifications-email-edit": "A page was edited by a user. Parameters:\n* $1 edited page\n* $2 username\n* $3 summary of edit\n* $4 link to edited page\n* $5 difflink to the page (&curid=10&diff=22&oldid=21)", - "bs-notifications-email-move-subject": "A page was moved by a user. Parameters:\n* $1 page that was moved\n* $2 username", - "bs-notifications-email-move": "A page was moved to another target by a user. Parameters:\n* $1 page that was moved\n* $2 username\n* $3 new pagename\n* $4 link to new pagename", - "bs-notifications-email-delete-subject": "A page was deleted by a user. Parameters:\n* $1 page that was deleted\n* $2 username", - "bs-notifications-email-delete": "A page was deleted by a user and why. Parameters:\n* $1 page that was deleted\n* $2 username\n* $3 reason for delete", - "bs-notifications-email-addaccount-subject": "A user was created. Paramters:\n* $1 the username of the created user", - "bs-notifications-email-addaccount": "A user was created with link to userpage. Parameters:\n* $1 the userpagelink\n* $2 user real name", - "bs-notifications-email-shout-subject": "A user posted a shoutboxmessage on a page. Parameters:\n* $1 pagename\n* $2 username", + "bs-notifications-email-new-subject": "Short message that a page was edited by a user. Parameters:\n* $1 pagename of the created page\n* $2 username\n* $3 user real name of the user who created the page", + "bs-notifications-email-new": "A page was created by a user with link to the page. Parameters:\n* $1 page that was created\n* $2 username\n* $3 summary of page creation\n* $4 link to the page\n* $5 difflink - not in use\n* $6 is the real name of the user who created the page", + "bs-notifications-email-edit-subject": "A page was edited by a user. Parameters:\n* $1 page that was edited\n* $2 username of the user edited the page\n* $3 real name of the user who edited the page", + "bs-notifications-email-edit": "A page was edited by a user. Parameters:\n* $1 edited page\n* $2 username\n* $3 summary of edit\n* $4 link to edited page\n* $5 difflink to the page (&curid=10&diff=22&oldid=21)\n* $6 is the real name of the user who edited the page", + "bs-notifications-email-move-subject": "A page was moved by a user. Parameters:\n* $1 page that was moved\n* $2 username\n* $3 new title of the page\n* $4 real name of the user who moved the page", + "bs-notifications-email-move": "A page was moved to another target by a user. Parameters:\n* $1 page that was moved\n* $2 username\n* $3 new pagename\n* $4 link to new pagename\n* $5 is the real name of the user who moved the page", + "bs-notifications-email-delete-subject": "A page was deleted by a user. Parameters:\n* $1 page that was deleted\n* $2 username\n* $3 real name of the user who deleted the page", + "bs-notifications-email-delete": "A page was deleted by a user and why. Parameters:\n* $1 the link to the page that was deleted\n* $2 username\n* $3 reason for delete\n* $5 title of the deleted page\n* $5 user real name of the user who deleted the page", + "bs-notifications-email-addaccount-subject": "A user was created. Paramters:\n* $1 the username of the created user\n* $2 the realname of the created user", + "bs-notifications-email-addaccount": "A user was created with link to userpage. Parameters:\n* $1 the userpagelink\n* $2 user name\n* $3 user real name", + "bs-notifications-email-shout-subject": "A user posted a shoutboxmessage on a page. Parameters:\n* $1 pagename\n* $2 username\n* $3 realname", "bs-notifications-email-shout": "A user posted a message on a page, the shoutboxmessage and a link to the page. Parameters:\n* $1 pagename\n* $2 username\n* $3 the message that was postet\n* $4 link to the page where the message was postet", "echo-category-title-bs-create-cat": "checkbox label in preferences for notifications on \"page created\" <msg-key automatically generated by [https://www.mediawiki.org/wiki/Extension:Echo Echo] extension>\n{{related|Echo-category-title}}", "echo-category-title-bs-edit-cat": "checkbox label in preferences for notifications on \"page edited\" <msg-key automatically generated by [https://www.mediawiki.org/wiki/Extension:Echo Echo] extension>\n{{related|Echo-category-title}}", diff --git a/Notifications/includes/BsEchoEmailSingle.class.php b/Notifications/includes/BsEchoEmailSingle.class.php new file mode 100644 index 0000000..c0a72a0 --- /dev/null +++ b/Notifications/includes/BsEchoEmailSingle.class.php @@ -0,0 +1,45 @@ +<?php +/** + * Echo Email Single class for notifications + * + * Part of BlueSpice for MediaWiki + * + * @author Patric Wirth <wi...@hallowelt.biz> + * @package BlueSpice_Extensions + * @subpackage Notifications + * @copyright Copyright (C) 2012 Hallo Welt! - Medienwerkstatt GmbH, All rights reserved. + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License v2 or later + * @filesource + */ +class BsEchoEmailSingle extends EchoEmailSingle { + + /** + * Build the intro component + * @return string + */ + public function buildIntro() { + $bundle = $this->notifFormatter->getValue( 'bundleData' ); + $email = $this->notifFormatter->getValue( 'email' ); + + if ( $bundle['use-bundle'] && $email['batch-bundle-body']['message'] ) { + $detail = $email['batch-bundle-body']; + } else { + $detail = $email['batch-body']; + } + + $message = $this->notifFormatter->formatFragment( + $detail, + $this->event, + $this->user + ); + + return $this->decorator->userBasedDecorateIntro( $message, $this->user ); + } + + public function getTextTemplate() { + return <<< EOF +%%intro%% %%summary%% +%%action%% %%footer%% +EOF; + } +} \ No newline at end of file diff --git a/Notifications/includes/BsEchoTextEmailDecorator.class.php b/Notifications/includes/BsEchoTextEmailDecorator.class.php new file mode 100644 index 0000000..6988c3f --- /dev/null +++ b/Notifications/includes/BsEchoTextEmailDecorator.class.php @@ -0,0 +1,53 @@ +<?php +/** + * Text Email Decorator class for notifications + * + * Part of BlueSpice for MediaWiki + * + * @author Patric Wirth <wi...@hallowelt.biz> + * @package BlueSpice_Extensions + * @subpackage Notifications + * @copyright Copyright (C) 2012 Hallo Welt! - Medienwerkstatt GmbH, All rights reserved. + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License v2 or later + * @filesource + */ + +/** + * Text email decorator + */ +class BsEchoTextEmailDecorator extends EchoTextEmailDecorator { + + /** + * Adds a user based greeting to the text mail + * @param Message $message + * @param User $oUser + * @return String + */ + public function userBasedDecorateIntro( $message, $oUser ) { + $sRealname = BsCore::getUserDisplayName( $oUser ); + $sReturn = wfMessage( 'bs-email-greeting-receiver' ) + ->params( $oUser->getName(), $sRealname ) + ->inLanguage( $oUser->getOption( 'language' ) ) + ->text() + ; + return $sReturn."\n\n".$message->text(); + } + + /** + * Adds the BS default footer to the text mail + * @global String $wgSitename + * @param type $address + * @param User $user + * @return String + */ + public function decorateFooter( $address, $user ) { + global $wgSitename; + + $sFooter = parent::decorateFooter( $address, $user ); + return $sFooter. + "\n---------------------\n\n" + .wfMessage( 'bs-email-footer', $wgSitename )->text() + ."\n\n---------------------" + ; + } +} \ No newline at end of file diff --git a/Notifications/includes/BsEchoTextEmailFormatter.class.php b/Notifications/includes/BsEchoTextEmailFormatter.class.php new file mode 100644 index 0000000..6dd60e9 --- /dev/null +++ b/Notifications/includes/BsEchoTextEmailFormatter.class.php @@ -0,0 +1,33 @@ +<?php +/** + * TextEmailFormatter class for notifications + * + * Part of BlueSpice for MediaWiki + * + * @author Patric Wirth <wi...@hallowelt.biz> + * @package BlueSpice_Extensions + * @subpackage Notifications + * @copyright Copyright (C) 2012 Hallo Welt! - Medienwerkstatt GmbH, All rights reserved. + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License v2 or later + * @filesource + */ + +class BsEchoTextEmailFormatter extends EchoTextEmailFormatter { + /** + * @param $emailMode EchoEmailMode + */ + public function __construct( EchoEmailMode $emailMode ) { + parent::__construct( $emailMode ); + $this->emailMode->attachDecorator( new BsEchoTextEmailDecorator() ); + } + + /** + * Remove extra newline from a text content + * @param $text string + * @return string + */ + protected function removeExtraNewLine( $text ) { + return parent::removeExtraNewLine($text); + //return preg_replace( "/(^\s?$){1,}/s", "\r\n", $text ); + } +} \ No newline at end of file diff --git a/Notifications/includes/BsNotificationsFormatter.class.php b/Notifications/includes/BsNotificationsFormatter.class.php index df60fb1..5122010 100644 --- a/Notifications/includes/BsNotificationsFormatter.class.php +++ b/Notifications/includes/BsNotificationsFormatter.class.php @@ -5,7 +5,7 @@ * Part of BlueSpice for MediaWiki * * @author Stefan Widmann <widm...@hallowelt.biz> - + * @author Patric Wirth <wi...@hallowelt.biz> * @package BlueSpice_Extensions * @subpackage Notifications * @copyright Copyright (C) 2012 Hallo Welt! - Medienwerkstatt GmbH, All rights reserved. @@ -16,6 +16,52 @@ public function __construct( $params ) { parent::__construct( $params ); + } + + /** + * Create text version and/or html version for email notification + * + * @param $event EchoEvent + * @param $user User + * @param $type string deprecated + * @return array + */ + protected function formatEmail( $event, $user, $type ) { + // Email should be always sent in user language + $this->language = $user->getOption( 'language' ); + + // Email digest + if ( $this->distributionType === 'emaildigest' ) { + return $this->formatEmailDigest( $event, $user ); + } + + // Echo single email + $emailSingle = new BsEchoEmailSingle( $this, $event, $user ); + + $textEmailFormatter = new BsEchoTextEmailFormatter( $emailSingle ); + global $wgSitename; + $content = array( + // Single email subject, there is no need to to escape it for either html + // or text email since it's always treated as plain text by mail client + 'subject' => "[$wgSitename] ".$this->formatFragment( $this->email['subject'], $event, $user )->text(), + // Single email text body + 'body' => $textEmailFormatter->formatEmail(), + ); + + $format = MWEchoNotifUser::newFromUser( $user )->getEmailFormat(); + if ( $format == EchoHooks::EMAIL_FORMAT_HTML ) { + $htmlEmailFormatter = new EchoHTMLEmailFormatter( $emailSingle ); + $outputFormat = $this->outputFormat; + $this->setOutputFormat( 'htmlemail' ); + // Add single email html body if user prefers html format + $content['body'] = array ( + 'text' => $content['body'], + 'html' => $htmlEmailFormatter->formatEmail() + ); + $this->setOutputFormat( $outputFormat ); + } + + return $content; } /** @@ -39,7 +85,10 @@ ); } else if ( $param === 'difflink' ) { $aEvent = $event->getExtra(); - $diffparams = $aEvent['difflink']['diffparams']; + $diffparams = isset($aEvent['difflink']) + ? $aEvent['difflink']['diffparams'] + : '' + ; $this->setDiffLink( $event, @@ -91,10 +140,14 @@ $aExtra = $event->getExtra(); $sMessage = $aExtra['shoutmsg']; $message->params( $sMessage ); - } else if( $param === 'username' ) { + } else if( $param === 'username' ) { $aExtra = $event->getExtra(); $sMessage = $aExtra['username']; $message->params( $sMessage ); + } else if( $param === 'realname' ) { + $aExtra = $event->getExtra(); + $sMessage = $aExtra['realname']; + $message->params( $sMessage ); } else { parent::processParam( $event, $param, $message, $user ); } diff --git a/ShoutBox/ShoutBox.class.php b/ShoutBox/ShoutBox.class.php index c945e1c..b3c5489 100644 --- a/ShoutBox/ShoutBox.class.php +++ b/ShoutBox/ShoutBox.class.php @@ -538,6 +538,7 @@ */ public static function notifyUser( $sAction, $aUsers, $iArticleId, $iUserId ) { if ( class_exists( 'EchoEvent' ) ) { + $oCurrentUser = RequestContext::getMain()->getUser(); foreach ( $aUsers as $oUser ) { EchoEvent::create( array( 'type' => 'bs-shoutbox-' . $sAction, @@ -548,11 +549,14 @@ 'titlelink' => true, 'difflink' => array( 'diffparams' => array() ), 'agentlink' => true, - 'mentioned-user-id' => $oUser->getId() + 'mentioned-user-id' => $oUser->getId(), + 'realname' => BsCore::getUserDisplayName($oCurrentUser), + 'title' => Article::newFromID( $iArticleId )->getTitle()->getText(), ), ) ); } } else { + //PW(23.04.2015): TODO - get rid of BsMailer | Echo is required $sSubject = wfMessage( 'bs-shoutbox-notifications-title-message-subject' )->plain(); @@ -566,7 +570,7 @@ /** * Handler for EchoGetDefaultNotifiedUsers hook. - * @param array $event EchoEvent to get implicitly subscribed users for + * @param EchoEvent $event EchoEvent to get implicitly subscribed users for * @param array &$users Array to append implicitly subscribed users to. * @return bool true in all cases */ @@ -583,6 +587,7 @@ $row = $oDBr->selectRow( 'user', '*', array( 'user_id' => (int) $recipientId ) ); $recipient = User::newFromRow( $row ); $users[$recipientId] = $recipient; + //$event->setExtra('username', $recipient->); break; } return true; @@ -605,9 +610,9 @@ 'flyout-params' => array( 'agent', 'agentlink', 'titlelink' ), 'email-subject-message' => 'bs-shoutbox-notifications-title-message-subject', 'email-body-message' => 'bs-shoutbox-notifications-title-message-text', - 'email-body-params' => array( 'agent', 'agentlink', 'titlelink' ), + 'email-body-params' => array( 'agent', 'agentlink', 'titlelink', 'realname', 'title' ), 'email-body-batch-message' => 'bs-shoutbox-notifications-title-message-text', - 'email-body-batch-params' => array( 'agent', 'agentlink', 'titlelink' ), + 'email-body-batch-params' => array( 'agent', 'agentlink', 'titlelink', 'realname', 'title' ), ); return true; } diff --git a/ShoutBox/i18n/de-formal.json b/ShoutBox/i18n/de-formal.json index 2af7eae..b8bdd15 100644 --- a/ShoutBox/i18n/de-formal.json +++ b/ShoutBox/i18n/de-formal.json @@ -10,5 +10,5 @@ "bs-shoutbox-entermessage": "Bitte geben Sie eine Nachricht ein.", "bs-shoutbox-too-early": "Bitte warten Sie ein paar Sekunden, bevor Sie den nächsten Eintrag abschicken.", "bs-shoutbox-notifications-title-message-subject": "Sie wurden in einer Nachricht in der Shoutbox erwähnt.", - "bs-shoutbox-notifications-title-message-text": "Sie wurden von $2 in einer Nachricht auf der Seite \"$3\" {{GENDER:$1|erwähnt}}." + "bs-shoutbox-notifications-title-message-text": "Sie wurden von $4 in einer Nachricht auf der Seite \"$5\" {{GENDER:$1|erwähnt}}.\n\nSie können den Artikel über diese URL aufrufen:\n$3" } diff --git a/ShoutBox/i18n/de.json b/ShoutBox/i18n/de.json index 0d27d9f..165c050 100644 --- a/ShoutBox/i18n/de.json +++ b/ShoutBox/i18n/de.json @@ -32,5 +32,5 @@ "bs-shoutbox-n-shouts": "$1 {{PLURAL:$1|Shout|Shouts}}", "echo-category-title-bs-shoutbox-mention-cat": "Benachrichtigung bei Erwähnung in einer Nachricht in der Shoutbox", "bs-shoutbox-notifications-title-message-subject": "Du wurdest in einer Nachricht in der Shoutbox erwähnt.", - "bs-shoutbox-notifications-title-message-text": "Du wurdest von $2 in einer Nachricht auf der Seite \"$3\" {{GENDER:$1|erwähnt}}." + "bs-shoutbox-notifications-title-message-text": "Du wurdest von $4 in einer Nachricht auf der Seite \"$5\" {{GENDER:$1|erwähnt}}.\n\nDu kannst den Artikel über diese URL aufrufen:\n$3" } diff --git a/ShoutBox/i18n/en.json b/ShoutBox/i18n/en.json index f06d8f4..e91e5fc 100644 --- a/ShoutBox/i18n/en.json +++ b/ShoutBox/i18n/en.json @@ -30,5 +30,5 @@ "bs-shoutbox-n-shouts": "$1 {{PLURAL:$1|Shout|Shouts}}", "echo-category-title-bs-shoutbox-mention-cat": "Notification for mention in a shout", "bs-shoutbox-notifications-title-message-subject": "You've been mentioned", - "bs-shoutbox-notifications-title-message-text": "You've been {{GENDER:$1|mentioned}} by $2 in a shout on the page \"$3.\"" + "bs-shoutbox-notifications-title-message-text": "You've been {{GENDER:$1|mentioned}} by $4 in a shout on the page \"$5.\"\n\nYou can visit the page following this link:\n$3.\n" } diff --git a/ShoutBox/i18n/qqq.json b/ShoutBox/i18n/qqq.json index f51879d..865f642 100644 --- a/ShoutBox/i18n/qqq.json +++ b/ShoutBox/i18n/qqq.json @@ -34,5 +34,5 @@ "bs-shoutbox-n-shouts": "Text for the number of shouts, used in StateBar\n*$1 is the number of shouts, also use this for PLURAL distinction\n{{Identical|Shout}}", "echo-category-title-bs-shoutbox-mention-cat": "text found in notifications, let's the user decide if he wants to be notified about a mention in a message in the shoutbox via web, mail or both", "bs-shoutbox-notifications-title-message-subject": "notifications text used for e-mail if the user was mentioned in a shoutbox entry", - "bs-shoutbox-notifications-title-message-text": "text used in notifications in the wiki and as the mail body if the user was mentioned in a shoutbox entry \n*$1 the user being mentioned \n*$2 is the link to the user page of the user that mentioned another user. \n*$3 is the link to the page where the shoutbox entry was made." + "bs-shoutbox-notifications-title-message-text": "text used in notifications in the wiki and as the mail body if the user was mentioned in a shoutbox entry \n*$1 the user who mentioned \n*$2 is the link to the user page of the user that mentioned another user. \n*$3 is the link to the page where the shoutbox entry was made.\n*$4 is the real name of the user who mentioned.\n*$5 is the title of the page where the shoutbox entry was made." } -- To view, visit https://gerrit.wikimedia.org/r/206774 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id5037ba1999174c4837153c42896ee41d3604354 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/BlueSpiceExtensions Gerrit-Branch: REL1_23 Gerrit-Owner: Robert Vogel <vo...@hallowelt.biz> Gerrit-Reviewer: Pwirth <wi...@hallowelt.biz> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits