Wctaiwan has uploaded a new change for review.
https://gerrit.wikimedia.org/r/285302
Change subject: Support using the user's account to deliver messages
......................................................................
Support using the user's account to deliver messages
Add the option to use the user's account to deliver messages to
Special:MassMessage and the API.
Follow up to I736f4c675583d3db21ee4a1a259b961494337ef3
Bug: T71954
Change-Id: I64aa554815a42088c2af83748b0d8c7a4d0e0950
---
M i18n/en.json
M i18n/qqq.json
M includes/ApiMassMessage.php
M includes/SpecialMassMessage.php
M includes/job/MassMessageJob.php
5 files changed, 50 insertions(+), 11 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MassMessage
refs/changes/02/285302/1
diff --git a/i18n/en.json b/i18n/en.json
index 902f97b..5dba798 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -12,6 +12,9 @@
"massmessage-form-spamlist": "Page or category containing list of pages
to leave a message on:",
"massmessage-form-subject": "Subject of the message (also used as the
edit summary):",
"massmessage-form-message": "Body of the message:",
+ "massmessage-form-sender": "Sender account:",
+ "massmessage-form-shareduser": "Shared message delivery user",
+ "massmessage-form-ownuser": "Your own user account",
"massmessage-form-preview": "Preview",
"massmessage-form-submit": "Send",
"massmessage-fieldset-preview": "Preview",
diff --git a/i18n/qqq.json b/i18n/qqq.json
index 4c52951..a4dfcb6 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -18,6 +18,9 @@
"massmessage-form-spamlist": "Label for an inputbox on
[[Special:MassMessage]].",
"massmessage-form-subject": "Label for an inputbox on
[[Special:MassMessage]].",
"massmessage-form-message": "Used as label for a textarea on
[[Special:MassMessage]].",
+ "massmessage-form-sender": "Label for a radio button on
[[Special:MassMessage]]",
+ "massmessage-form-shareduser": "Option label for using the shared
message delivery user",
+ "massmessage-form-ownuser": "Option label for using the user's own
account",
"massmessage-form-preview": "Label for the preview button on
[[Special:MassMessage]].\n{{Identical|Preview}}",
"massmessage-form-submit": "Label for the submit button on
[[Special:MassMessage]].\n\nUsed in
{{msg-mw|Massmessage-just-preview}}.\n{{Identical|Send}}",
"massmessage-fieldset-preview": "Label for the fieldset box around the
page preview.\n{{Identical|Preview}}",
diff --git a/includes/ApiMassMessage.php b/includes/ApiMassMessage.php
index 630653b..5465835 100644
--- a/includes/ApiMassMessage.php
+++ b/includes/ApiMassMessage.php
@@ -44,6 +44,11 @@
ApiBase::PARAM_TYPE => 'string',
ApiBase::PARAM_REQUIRED => true
),
+ 'sender' => array(
+ ApiBase::PARAM_TYPE => array( 'shareduser',
'ownuser' ),
+ ApiBase::PARAM_REQUIRED => false,
+ ApiBase::PARAM_DFLT => 'shareduser'
+ ),
'token' => null,
);
}
diff --git a/includes/SpecialMassMessage.php b/includes/SpecialMassMessage.php
index 4c1b72f..3457666 100644
--- a/includes/SpecialMassMessage.php
+++ b/includes/SpecialMassMessage.php
@@ -110,11 +110,29 @@
}
/**
+ * Build and return the aossociative array for the sender field
+ * @return array
+ */
+ protected function getSenderOptions() {
+ $mapping = array(
+ 'massmessage-form-shareduser' => 'shareduser',
+ 'massmessage-form-ownuser' => 'ownuser'
+ );
+
+ $options = array();
+ foreach ( $mapping as $msgKey => $option ) {
+ $options[$this->msg( $msgKey )->escaped()] = $option;
+ }
+ return $options;
+ }
+
+ /**
* @return array
*/
protected function createForm() {
$request = $this->getRequest();
$m = array();
+
// Who to send to
$m['spamlist'] = array(
'id' => 'mw-massmessage-form-spamlist',
@@ -124,6 +142,7 @@
'label-message' => 'massmessage-form-spamlist',
'default' => $request->getText( 'spamlist' )
);
+
// The subject line
$m['subject'] = array(
'id' => 'mw-massmessage-form-subject',
@@ -145,6 +164,17 @@
'default' => $request->getText( 'message' )
);
+ // Whether to send using the user account or the shared
MassMessage user
+ $m['sender'] = array(
+ 'id' => 'mw-masssmessage-form-sender',
+ 'name' => 'sender',
+ 'type' => 'radio',
+ 'tabindex' => '4',
+ 'label-message' => 'massmessage-form-sender',
+ 'options' => $this->getSenderOptions(),
+ 'default' => 'shareduser'
+ );
+
if ( $this->state === 'preview' ) {
// Adds it right before the 'Send' button
$m['message']['help'] = EditPage::getCopyrightWarning(
$this->getPageTitle( false ), 'parse' );
@@ -152,7 +182,7 @@
'id' => 'mw-massmessage-form-submit-button',
'name' => 'submit-button',
'type' => 'submit',
- 'tabindex' => '4',
+ 'tabindex' => '5',
'default' => $this->msg(
'massmessage-form-submit' )->text()
);
}
@@ -161,7 +191,7 @@
'id' => 'mw-massmessage-form-preview-button',
'name' => 'preview-button',
'type' => 'submit',
- 'tabindex' => '5',
+ 'tabindex' => '6',
'default' => $this->msg( 'massmessage-form-preview'
)->text()
);
@@ -291,8 +321,10 @@
// Hooks not being run: EditPageGetPreviewContent,
EditPageGetPreviewText
- $content = $content->preSaveTransform( $mockTarget,
MassMessage::getMessengerUser(),
- $parserOptions );
+ $user = ( $data['sender'] === 'ownuser' )
+ ? $this->getUser()
+ : MassMessage::getMessengerUser();
+ $content = $content->preSaveTransform( $mockTarget, $user,
$parserOptions );
$parserOutput = $content->getParserOutput( $mockTarget, null,
$parserOptions );
$previewFieldset = Xml::fieldset(
$this->msg( 'massmessage-fieldset-preview' )->text(),
diff --git a/includes/job/MassMessageJob.php b/includes/job/MassMessageJob.php
index ebfd3d2..f29c084 100644
--- a/includes/job/MassMessageJob.php
+++ b/includes/job/MassMessageJob.php
@@ -14,12 +14,6 @@
const STRIP_TILDES = true;
- /**
- * @var bool Whether to use sender account (if possible)
- * TODO: Expose this as a configurable option (T71954)
- */
- private $useSenderUser = false;
-
public function __construct( Title $title, array $params, $id = 0 ) {
// Create a fresh Title object so namespaces are evaluated
// in the context of the target site. See bug 57464.
@@ -47,10 +41,12 @@
}
/**
+ * Returns the sender user, if specified, or the shared messenger user
+ *
* @return User
*/
protected function getUser() {
- if ( $this->useSenderUser && isset( $this->params['userId'] ) )
{
+ if ( $this->params['sender'] === 'ownuser' && isset(
$this->params['userId'] ) ) {
$centralIdLookup = CentralIdLookup::factory();
$user = $centralIdLookup->localUserFromCentralId(
$this->params['userId'],
--
To view, visit https://gerrit.wikimedia.org/r/285302
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I64aa554815a42088c2af83748b0d8c7a4d0e0950
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MassMessage
Gerrit-Branch: master
Gerrit-Owner: Wctaiwan <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits