EBernhardson (WMF) has submitted this change and it was merged.

Change subject: Add primary/secondary link, email, bundling to post reply
......................................................................


Add primary/secondary link, email, bundling to post reply

Change-Id: If0e0a8dcf56b11d408f914d63869d6666f7701ba
---
M Flow.i18n.php
M Flow.php
M Hooks.php
M includes/NotificationFormatter.php
4 files changed, 125 insertions(+), 5 deletions(-)

Approvals:
  Siebrand: Looks good to me, but someone else must approve
  Matthias Mullie: Looks good to me, but someone else must approve
  EBernhardson (WMF): Looks good to me, approved
  jenkins-bot: Verified



diff --git a/Flow.i18n.php b/Flow.i18n.php
index 991c589..76babc4 100644
--- a/Flow.i18n.php
+++ b/Flow.i18n.php
@@ -81,10 +81,25 @@
        'flow-paging-fwd' => 'Older topics',
        'flow-last-modified' => 'Last modified about $1',
 
-       'flow-notification-reply' => '$1 {{GENDER:$1|replied}} to your [$5 
post] in $2 on [[$3|$4]].',
+       // Notification message
+       'flow-notification-reply' => '$1 {{GENDER:$1|replied}} to your [$5 
post] in $2 on "$4".',
+       'flow-notification-reply-bundle' => '$1 and $5 
{{PLURAL:$6|other|others}} {{GENDER:$1|replied}} to your [$4 post] in $2 on 
"$3".',
        'flow-notification-edit' => '$1 {{GENDER:$1|edited}} your [$5 post] in 
$2 on [[$3|$4]].',
        'flow-notification-newtopic' => '$1 {{GENDER:$1|created}} a [$5 new 
topic] on [[$2|$3]]: $4.',
-       'flow-notification-rename' => '$1 {{GENDER:$1|changed}} the title of 
[$2 $3] to "$4" on [[$5|$6]].'
+       'flow-notification-rename' => '$1 {{GENDER:$1|changed}} the title of 
[$2 $3] to "$4" on [[$5|$6]].',
+
+       // Notification primary links and secondary links
+       'flow-notification-link-text-view-post' => 'View post',
+       'flow-notification-link-text-view-board' => 'View board',
+
+       // Notification Email messages
+       'flow-notification-reply-email-subject' => '$1 {{GENDER:$1|replied}} to 
your post',
+       'flow-notification-reply-email-batch-body' => '$1 {{GENDER:$1|replied}} 
to your post in $2 on "$3"',
+       'flow-notification-reply-email-batch-bundle-body' => '$1 and $4 
{{PLURAL:$5|other|others}} {{GENDER:$1|replied}} to your post in $2 on "$3"',
+
+       // Notification preference
+       'echo-category-title-flow-discussion' => 
'{{PLURAL:$1|Discussion|Discussions}}',
+       'echo-pref-tooltip-flow-discussion' => 'Notify me when actions related 
to me occur in the disucssion board.',
 );
 
 /** Message documentation (Message documentation)
@@ -239,10 +254,17 @@
        'flow-notification-reply' => 'Notification text for when a user 
receives a reply. Parameters:
 * $1 - Username of the person who replied
 * $2 - Title of the topic
-* $3 - Title for the Flow board
+* $3 - Title for the Flow board, this parameter is not used for the message at 
this moment
 * $4 - Title for the page that the Flow board is attached to
 * $5 - Permanent URL for the post
 {{Related|Flow-notification}}',
+       'flow-notification-reply-bundle' => 'Notification text for when a user 
receives replies from multiple users on the same post/topic.  Params:
+* $1 - Username of the person who replied
+* $2 - Title of the topic
+* $3 - Title for the page that the Flow board is attached to
+* $4 - Permantent URL for the post
+* $5 - the count of other action performers, could be number or 
{{msg-mw|Echo-notification-count}}. e.g. 7 others or 99+ others
+* $6 - a number used for plural support',
        'flow-notification-edit' => "Notification text for when a user's post 
is edited. Parameters:
 * $1 - Username of the person who edited the post
 * $2 - Title of the topic
@@ -265,6 +287,24 @@
 * $5 - title for the Flow board
 * $6 - title for the page that the Flow board is attached to
 {{Related|Flow-notification}}',
+       'flow-notification-link-text-view-post' => 'Label for button that links 
to a flow post.',
+       'flow-notification-link-text-view-board' => 'Label for button that 
links to a flow discussion board.',
+       'flow-notification-reply-email-subject' => 'Email notification subject 
when a user receives a reply.  Parameters:
+* $1 - Username of the person who replied',
+       'flow-notification-reply-email-batch-body' => 'Email notification body 
when a user receives a reply, this message is used in both single email and 
email digest.  Parameters:
+* $1 - Username of the person who replied
+* $2 - Title of the topic
+* $3 - Title for the page that the Flow board is attached to',
+       'flow-notification-reply-email-batch-bundle-body' => 'Email 
notification body when a user receives reply from multiple users, this message 
is used in both single email and email digest.  Parameters:
+* $1 - Username of the person who replied
+* $2 - Title of the topic
+* $3 - Title for the page that the Flow board is attached to
+* $4 - the count of other action performers, could be number or 
{{msg-mw|Echo-notification-count}}. e.g. 7 others or 99+ others
+* $5 - a number used for plural support',
+       'echo-category-title-flow-discussion' => 'This is a short title for 
notification category.  Parameters:
+* $1 - number of mentions, for PLURAL support
+{{Related|Echo-category-title}}',
+       'echo-pref-tooltip-flow-discussion' => 'This is a short description of 
the flow-discussion notification category.',
 );
 
 /** Asturian (asturianu)
diff --git a/Flow.php b/Flow.php
index 4a750a4..6bbad0c 100755
--- a/Flow.php
+++ b/Flow.php
@@ -184,3 +184,7 @@
 $wgFlowDefaultWorkflow = 'discussion';
 $wgFlowDefaultLimit = 5;
 $wgFlowMaxLimit = 50;
+
+// Echo notification subscription preference
+$wgDefaultUserOptions['echo-subscriptions-web-flow-discussion'] = true;
+$wgDefaultUserOptions['echo-subscriptions-email-flow-discussion'] = true;
diff --git a/Hooks.php b/Hooks.php
index 24faa41..11927af 100644
--- a/Hooks.php
+++ b/Hooks.php
@@ -8,10 +8,11 @@
         * from $wgExtensionFunctions
         */
        public static function initFlowExtension() {
-               global $wgEchoNotifications, $wgHooks, $wgEchoNotificationIcons;
+               global $wgEchoNotifications, $wgHooks, 
$wgEchoNotificationIcons, $wgEchoNotificationCategories;
 
                if ( isset( $wgEchoNotifications ) ) {
                        $wgHooks['EchoGetDefaultNotifiedUsers'][] = 
'FlowHooks::getDefaultNotifiedUsers';
+                       $wgHooks['EchoGetBundleRules'][] = 
'FlowHooks::onEchoGetBundleRules';
 
                        $notificationTemplate = array(
                                'category' => 'flow-discussion',
@@ -27,8 +28,19 @@
                        ) + $notificationTemplate;
 
                        $wgEchoNotifications['flow-post-reply'] = array(
+                               'primary-link' => array( 'message' => 
'flow-notification-link-text-view-post', 'destination' => 'flow-post' ),
+                               'secondary-link' => array( 'message' => 
'flow-notification-link-text-view-board', 'destination' => 'flow-board' ),
                                'title-message' => 'flow-notification-reply',
                                'title-params' => array( 'agent', 'subject', 
'flow-title', 'title', 'post-permalink' ),
+                               'bundle' => array( 'web' => true, 'email' => 
false ),
+                               'bundle-message' => 
'flow-notification-reply-bundle',
+                               'bundle-params' => array( 'agent', 'subject', 
'title', 'post-permalink', 'agent-other-display', 'agent-other-count' ),
+                               'email-subject-message' => 
'flow-notification-reply-email-subject',
+                               'email-subject-params' => array( 'agent' ),
+                               'email-body-batch-message' => 
'flow-notification-reply-email-batch-body',
+                               'email-body-batch-params' => array( 'agent', 
'subject', 'title' ),
+                               'email-body-batch-bundle-message' => 
'flow-notification-reply-email-batch-bundle-body',
+                               'email-body-batch-bundle-params' => array( 
'agent', 'subject', 'title', 'agent-other-display', 'agent-other-count' ),
                                'payload' => array( 'comment-text' ),
                        ) + $notificationTemplate;
 
@@ -53,7 +65,8 @@
                        );
 
                        $wgEchoNotificationCategories['flow-discussion'] = 
array(
-                               // 'echo-pref'
+                               'priority' => 3,
+                               'tooltip' => 
'echo-pref-tooltip-flow-discussion',
                        );
                }
        }
@@ -164,6 +177,32 @@
        }
 
        /**
+        * Handler for EchoGetBundleRule hook, which defines the bundle rule 
for each notification
+        * @param $event EchoEvent
+        * @param $bundleString string Determines how the notification should 
be bundled
+        */
+       public static function onEchoGetBundleRules( $event, &$bundleString ) {
+               switch ( $event->getType() ) {
+                       case 'flow-post-reply':
+                               $extra = $event->getExtra();
+
+                               if ( isset( $extra['reply-to'] ) ) {
+                                       $postId = $extra['reply-to'];
+                               } elseif ( isset( $extra['post-id'] ) ) {
+                                       $postId = $extra['post-id'];
+                               } else {
+                                       $postId = null;
+                               }
+
+                               if ( $postId ) {
+                                       $bundleString = 'flow-post-reply-' . 
$postId->getHex();
+                               }
+                       break;
+               }
+               return true;
+       }
+
+       /**
         * Add token type "flow", to generate edit tokens for Flow via
         * api.php?action=tokens&type=flow
         *
diff --git a/includes/NotificationFormatter.php 
b/includes/NotificationFormatter.php
index 5fb5074..8a375eb 100644
--- a/includes/NotificationFormatter.php
+++ b/includes/NotificationFormatter.php
@@ -64,4 +64,41 @@
                        parent::processParam( $event, $param, $message, $user );
                }
        }
+
+       /**
+        * Helper function for getLink()
+        *
+        * @param EchoEvent $event
+        * @param User $user The user receiving the notification
+        * @param String $destination The destination type for the link
+        * @return Array including target and query parameters
+        */
+       protected function getLinkParams( $event, $user, $destination ) {
+               $target = null;
+               $query  = array();
+               $title  = $event->getTitle();
+               // Set up link parameters based on the destination (or pass to 
parent)
+               switch ( $destination ) {
+                       case 'flow-post':
+                               $post  = $event->getExtraParam( 'post-id' );
+                               $flow  = $event->getExtraParam( 
'topic-workflow' );
+                               if ( $post && $flow && $title ) {
+                                       $target = SpecialPage::getTitleFor( 
'Flow', $title );
+                                       $query = array(
+                                               'topic[postId]' => 
$post->getHex(),
+                                               'workflow' => $flow->getHex(),
+                                               'action' => 'view'
+                                       );
+                               }
+                               break;
+                       case 'flow-board':
+                               if ( $title ) {
+                                       $target = SpecialPage::getTitleFor( 
'Flow', $title );
+                               }
+                               break;
+                       default:
+                               return parent::getLinkParams( $event, $user, 
$destination );
+               }
+               return array( $target, $query );
+       }
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/86064
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: If0e0a8dcf56b11d408f914d63869d6666f7701ba
Gerrit-PatchSet: 7
Gerrit-Project: mediawiki/extensions/Flow
Gerrit-Branch: master
Gerrit-Owner: Bsitu <bs...@wikimedia.org>
Gerrit-Reviewer: Bsitu <bs...@wikimedia.org>
Gerrit-Reviewer: EBernhardson (WMF) <ebernhard...@wikimedia.org>
Gerrit-Reviewer: Matthias Mullie <mmul...@wikimedia.org>
Gerrit-Reviewer: Siebrand <siebr...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to