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