Wctaiwan has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/148950

Change subject: Differentiate invalid title and invalid site
......................................................................

Differentiate invalid title and invalid site

Make the error message on adding a page more descriptive.

Change-Id: Ic194c3f94e27cfb1d31b6f7c88584aa3f2e05ee4
---
M MassMessage.php
M i18n/en.json
M i18n/qqq.json
M includes/ApiEditMassMessageList.php
M includes/SpecialEditMassMessageList.php
M includes/content/MassMessageListContentHandler.php
M modules/ext.MassMessage.content.js
7 files changed, 45 insertions(+), 27 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MassMessage 
refs/changes/50/148950/1

diff --git a/MassMessage.php b/MassMessage.php
index 7bda48b..f0044eb 100644
--- a/MassMessage.php
+++ b/MassMessage.php
@@ -147,7 +147,9 @@
                'massmessage-content-addeditem',
                'massmessage-content-removeerror',
                'massmessage-content-alreadyinlist',
-               'massmessage-content-invalidadd',
+               'massmessage-content-invalidtitlesite',
+               'massmessage-content-invalidtitle',
+               'massmessage-content-invalidsite',
                'massmessage-content-adderror',
        ),
        'dependencies' => array(
diff --git a/i18n/en.json b/i18n/en.json
index c1ff72a..1f17808 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -57,7 +57,9 @@
        "massmessage-content-addedlistheading": "Pages added:",
        "massmessage-content-addeditem": "$1 on $2",
        "massmessage-content-alreadyinlist": "The page is already in the list.",
-       "massmessage-content-invalidadd": "The page is invalid.",
+       "massmessage-content-invalidtitlesite": "The title and site are 
invalid.",
+       "massmessage-content-invalidtitle": "The title is invalid.",
+       "massmessage-content-invalidsite": "The site is invalid.",
        "massmessage-content-adderror": "API Error: $1",
        "massmessage-ch-tojsonerror": "The list could not be encoded for 
storage.",
        "massmessage-ch-apierror": "Editing the list through the API failed 
with error code $1.",
diff --git a/i18n/qqq.json b/i18n/qqq.json
index 17333fb..4cd6cde 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -58,7 +58,9 @@
        "massmessage-content-addedlistheading": "Subheading for the list of 
pages just added",
        "massmessage-content-addeditem": "A target on another wiki in the list 
of pages just added\n* $1 is a link to the target\n* 2 is the domain of the 
wiki",
        "massmessage-content-alreadyinlist": "Error message shown next to form 
for adding pages when the page is already in the list",
-       "massmessage-content-invalidadd": "Error message shown next to the form 
for adding pages when the title or site is invalid",
+       "massmessage-content-invalidtitlesite": "Error message shown next to 
the form for adding pages when the title and site are both invalid",
+       "massmessage-content-invalidtitle": "Error message shown next to the 
form for adding pages when the title is invalid",
+       "massmessage-content-invalidsite": "Error message shown next to the 
form for adding pages when the site is invalid",
        "massmessage-content-adderror": "Error message shown next to the form 
for adding pages when the API request failed\n* $1 is the error code",
        "massmessage-ch-tojsonerror": "Error message shown when the input could 
not be successfully encoded as a delivery list",
        "massmessage-ch-apierror": "Error message shown when a request to the 
edit API to update a delivery list failed",
diff --git a/includes/ApiEditMassMessageList.php 
b/includes/ApiEditMassMessageList.php
index 6129f63..b879894 100644
--- a/includes/ApiEditMassMessageList.php
+++ b/includes/ApiEditMassMessageList.php
@@ -26,8 +26,12 @@
 
                        foreach ( $data['add'] as $page ) {
                                $target = 
MassMessageListContentHandler::extractTarget( $page );
-                               if ( $target === null ) {
-                                       $invalidAdd[] = $page;
+                               if ( isset( $target['errors'] ) ) {
+                                       $item = array( '*' => $page );
+                                       foreach( $target['errors'] as $error ) {
+                                               $item[$error] = '';
+                                       }
+                                       $invalidAdd[] = $item;
                                } else {
                                        $newTargets[] = $target;
                                }
@@ -44,7 +48,7 @@
 
                        foreach ( $data['remove'] as $page ) {
                                $target = 
MassMessageListContentHandler::extractTarget( $page );
-                               if ( $target === null || !in_array( $target, 
$newTargets ) ) {
+                               if ( isset( $target['errors'] ) || !in_array( 
$target, $newTargets ) ) {
                                        $invalidRemove[] = $page;
                                } else {
                                        $toRemove[] = $target;
diff --git a/includes/SpecialEditMassMessageList.php 
b/includes/SpecialEditMassMessageList.php
index 7d07961..f5af8ae 100644
--- a/includes/SpecialEditMassMessageList.php
+++ b/includes/SpecialEditMassMessageList.php
@@ -162,7 +162,7 @@
                $targets = array();
                foreach ( $lines as $line ) {
                        $target = MassMessageListContentHandler::extractTarget( 
$line );
-                       if ( $target === null ) {
+                       if ( array_key_exists( 'errors', $target ) ) {
                                return null; // Invalid target
                        }
                        $targets[] = $target;
diff --git a/includes/content/MassMessageListContentHandler.php 
b/includes/content/MassMessageListContentHandler.php
index ab1f23f..11680f7 100644
--- a/includes/content/MassMessageListContentHandler.php
+++ b/includes/content/MassMessageListContentHandler.php
@@ -122,27 +122,28 @@
                        $site = null;
                }
 
+               $result = array();
+
                $title = Title::newFromText( $titleText );
                if ( !$title ) {
-                       return null; // Invalid title
+                       $result['errors'] = array( 'invalidtitle' );
+               } else {
+                       $result['title'] = $title->getPrefixedText(); // Use 
the canonical form.
                }
-               $titleText = $title->getPrefixedText(); // Use the canonical 
form.
 
-               if ( $site ) {
-                       if ( $site === MassMessage::getBaseUrl( 
$wgCanonicalServer ) ) {
-                               $site = null; // Do not return site for the 
local wiki.
-                       } else {
-                               $wiki = MassMessage::getDBName( $site );
-                               if ( $wiki === null || !$wgAllowGlobalMessaging 
&& $wiki !== wfWikiID() ) {
-                                       return null; // Invalid site
+               if ( $site !== null && $site !== MassMessage::getBaseUrl( 
$wgCanonicalServer ) ) {
+                       $wiki = MassMessage::getDBName( $site );
+                       if ( $wiki === null || !$wgAllowGlobalMessaging && 
$wiki !== wfWikiID() ) {
+                               if ( array_key_exists( 'errors', $result ) ) {
+                                       $result['errors'][] = 'invalidsite';
+                               } else {
+                                       $result['errors'] = array( 
'invalidsite' );
                                }
+                       } else {
+                               $result['site'] = $site;
                        }
                }
 
-               if ( $site ) {
-                       return array( 'title' => $titleText, 'site' => $site );
-               } else {
-                       return array( 'title' => $titleText );
-               }
+               return $result;
        }
 }
diff --git a/modules/ext.MassMessage.content.js 
b/modules/ext.MassMessage.content.js
index c6ef862..a74ace3 100644
--- a/modules/ext.MassMessage.content.js
+++ b/modules/ext.MassMessage.content.js
@@ -110,7 +110,7 @@
 
                // Handle add pages form.
                $( '#mw-massmessage-addform' ).submit( function( e ) {
-                       var title, site, apiResult, addedPage;
+                       var title, site, apiResult, page;
 
                        e.preventDefault();
 
@@ -133,11 +133,11 @@
 
                                if ( apiResult.result === 'Success' ) {
                                        if ( apiResult.added.length > 0 ) {
-                                               addedPage = apiResult.added[0];
+                                               page = apiResult.added[0];
                                                appendAdded(
-                                                       addedPage.title,
-                                                       ( 'site' in addedPage ) 
? addedPage.site : '',
-                                                       ( 'missing' in 
addedPage ) ? true : false
+                                                       page.title,
+                                                       ( 'site' in page ) ? 
page.site : '',
+                                                       ( 'missing' in page ) ? 
true : false
                                                );
                                                // Clear the input fields
                                                $( '#mw-massmessage-addtitle' 
).val( '' );
@@ -146,7 +146,14 @@
                                                showAddError( 
'massmessage-content-alreadyinlist' );
                                        }
                                } else { // The input was invalid.
-                                       showAddError( 
'massmessage-content-invalidadd' );
+                                       page = apiResult.invalidadd[0];
+                                       if ( 'invalidtitle' in page && 
'invalidsite' in page ) {
+                                               showAddError( 
'massmessage-content-invalidtitlesite' );
+                                       } else if ( 'invalidtitle' in page ) {
+                                               showAddError( 
'massmessage-content-invalidtitle' );
+                                       } else {
+                                               showAddError( 
'massmessage-content-invalidsite' );
+                                       }
                                }
                        } )
                        .fail( function ( errorCode ) {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic194c3f94e27cfb1d31b6f7c88584aa3f2e05ee4
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MassMessage
Gerrit-Branch: contenthandler
Gerrit-Owner: Wctaiwan <wctai...@gmail.com>

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

Reply via email to