镜像自地址
https://github.com/wikimedia/mediawiki-extensions-MassMessage
已同步 2024-05-27 13:42:33 +08:00
Convert modules to use packageFiles
ext.MassMessage.autocomplete.js and ext.MassMessage.badhtml.js are now module exports Also fix missing message documentation for content.js Bug: T235944 Change-Id: I1c4b81885457db4146574fc08a0140c5362eea5d
这个提交包含在:
父节点
bdef9a8e66
当前提交
673f66a74a
|
@ -9,6 +9,7 @@
|
|||
"Promise": "readonly"
|
||||
},
|
||||
"rules": {
|
||||
"no-jquery/no-global-selector": "off"
|
||||
"no-jquery/no-global-selector": "off",
|
||||
"no-implicit-globals": "off"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
]
|
||||
},
|
||||
"ext.MassMessage.special.js": {
|
||||
"scripts": [
|
||||
"packageFiles": [
|
||||
"ext.MassMessage.special.js",
|
||||
"ext.MassMessage.badhtml.js",
|
||||
"ext.MassMessage.autocomplete.js"
|
||||
|
@ -105,7 +105,7 @@
|
|||
]
|
||||
},
|
||||
"ext.MassMessage.content.js": {
|
||||
"scripts": [
|
||||
"packageFiles": [
|
||||
"ext.MassMessage.content.js",
|
||||
"ext.MassMessage.autocomplete.js"
|
||||
],
|
||||
|
@ -132,7 +132,7 @@
|
|||
]
|
||||
},
|
||||
"ext.MassMessage.create": {
|
||||
"scripts": [
|
||||
"packageFiles": [
|
||||
"ext.MassMessage.create.js",
|
||||
"ext.MassMessage.autocomplete.js"
|
||||
],
|
||||
|
|
|
@ -2,41 +2,44 @@
|
|||
* Functions for autocomplete of titles and sites
|
||||
* Mainly from from http://jqueryui.com/autocomplete/
|
||||
* and resources/mediawiki/mediawiki.searchSuggest.js
|
||||
*
|
||||
* Warning: This file may be executed multiple times in the same request, since it is
|
||||
* used by multiple modules.
|
||||
*
|
||||
* TODO convert to packageFiles to avoid multiple executions
|
||||
*/
|
||||
( function () {
|
||||
'use strict';
|
||||
mw.massmessage = mw.massmessage || {};
|
||||
'use strict';
|
||||
|
||||
mw.massmessage.enableTitleComplete = function ( $selector ) {
|
||||
$selector.autocomplete( {
|
||||
source: function ( request, response ) {
|
||||
var api = new mw.Api();
|
||||
api.get( {
|
||||
action: 'opensearch',
|
||||
search: request.term
|
||||
} ).done( function ( data ) {
|
||||
response( data[ 1 ] );
|
||||
} );
|
||||
}
|
||||
} );
|
||||
};
|
||||
/**
|
||||
* @param {jQuery} $selector
|
||||
*/
|
||||
function enableTitleComplete( $selector ) {
|
||||
$selector.autocomplete( {
|
||||
source: function ( request, response ) {
|
||||
var api = new mw.Api();
|
||||
api.get( {
|
||||
action: 'opensearch',
|
||||
search: request.term
|
||||
} ).done( function ( data ) {
|
||||
response( data[ 1 ] );
|
||||
} );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
mw.massmessage.enableSiteComplete = function ( $selector ) {
|
||||
$selector.autocomplete( {
|
||||
source: function ( request, response ) {
|
||||
( new mw.Api() ).get( {
|
||||
action: 'query',
|
||||
list: 'mmsites',
|
||||
term: request.term
|
||||
} ).done( function ( data ) {
|
||||
response( data.query.mmsites );
|
||||
} );
|
||||
}
|
||||
} );
|
||||
};
|
||||
}() );
|
||||
/**
|
||||
* @param {jQuery} $selector
|
||||
*/
|
||||
function enableSiteComplete( $selector ) {
|
||||
$selector.autocomplete( {
|
||||
source: function ( request, response ) {
|
||||
( new mw.Api() ).get( {
|
||||
action: 'query',
|
||||
list: 'mmsites',
|
||||
term: request.term
|
||||
} ).done( function ( data ) {
|
||||
response( data.query.mmsites );
|
||||
} );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
enableTitleComplete: enableTitleComplete,
|
||||
enableSiteComplete: enableSiteComplete
|
||||
};
|
||||
|
|
|
@ -3,9 +3,13 @@
|
|||
* Based on http://www.raymondcamden.com/index.cfm/2012/1/23/Detecting-invalid-HTML-with-JavaScript
|
||||
* Similar PHP method that checks on preview in SpecialMassMessage.php
|
||||
*/
|
||||
$( function () {
|
||||
'use strict';
|
||||
var voidElements, $msg, $warnings;
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* @param {jQuery} $msg
|
||||
*/
|
||||
function badHtml( $msg ) {
|
||||
var voidElements, $warnings;
|
||||
|
||||
// Construct a set containing HTML singleton elements (do not need an end tag).
|
||||
// List obtained from http://www.w3.org/TR/html-markup/syntax.html#syntax-elements
|
||||
|
@ -13,7 +17,6 @@ $( function () {
|
|||
embed: 1, hr: 1, img: 1, input: 1, keygen: 1, link: 1,
|
||||
meta: 1, param: 1, source: 1, track: 1, wbr: 1 };
|
||||
|
||||
$msg = $( '#mw-massmessage-form-message' );
|
||||
$warnings = $( '<div>' )
|
||||
.attr( 'id', 'mw-massmessage-form-warnings' )
|
||||
.addClass( 'warningbox' );
|
||||
|
@ -77,4 +80,6 @@ $( function () {
|
|||
$warnings.hide();
|
||||
}
|
||||
} ) );
|
||||
} );
|
||||
}
|
||||
|
||||
module.exports = badHtml;
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
$( function () {
|
||||
'use strict';
|
||||
|
||||
var listShown = false,
|
||||
var autocomplete = require( './ext.MassMessage.autocomplete.js' ),
|
||||
listShown = false,
|
||||
appendAdded, getApiParam, removeHandler, confirmableParams, showAddError;
|
||||
|
||||
// Append an added page to the displayed list.
|
||||
|
@ -129,9 +130,16 @@ $( function () {
|
|||
showAddError = function ( msgKey, errorCode ) {
|
||||
var message;
|
||||
if ( errorCode === undefined ) {
|
||||
// eslint-disable-next-line mediawiki/msg-doc
|
||||
// The following messages are used here:
|
||||
// * massmessage-content-alreadyinlist
|
||||
// * massmessage-content-invalidtitlesite
|
||||
// * massmessage-content-invalidtitle
|
||||
// * massmessage-content-invalidsite
|
||||
message = mw.message( msgKey ).escaped();
|
||||
} else {
|
||||
// The following messages are used here:
|
||||
// * massmessage-content-adderror
|
||||
// Since only 1 key is used, the lint rule fails
|
||||
// eslint-disable-next-line mediawiki/msg-doc
|
||||
message = mw.message( msgKey, errorCode ).escaped();
|
||||
}
|
||||
|
@ -143,10 +151,10 @@ $( function () {
|
|||
};
|
||||
|
||||
// Autocomplete for page titles
|
||||
mw.massmessage.enableTitleComplete( $( '#mw-massmessage-addtitle' ) );
|
||||
autocomplete.enableTitleComplete( $( '#mw-massmessage-addtitle' ) );
|
||||
|
||||
// Autocomplete for sites
|
||||
mw.massmessage.enableSiteComplete( $( '#mw-massmessage-addsite' ) );
|
||||
autocomplete.enableSiteComplete( $( '#mw-massmessage-addsite' ) );
|
||||
|
||||
// Register handler for remove links.
|
||||
$( '.mw-massmessage-removelink a' ).confirmable( confirmableParams );
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
$( function () {
|
||||
'use strict';
|
||||
|
||||
var checkTitle, checkSource, pageIsValidSource,
|
||||
var autocomplete = require( './ext.MassMessage.autocomplete.js' ),
|
||||
checkTitle, checkSource, pageIsValidSource,
|
||||
checkSourceTimeout = -1,
|
||||
queryTitleApiRequest,
|
||||
$titleStatus = OO.ui.infuse( $( '#mw-input-wptitle' ).closest( '.oo-ui-fieldLayout' ) ),
|
||||
|
@ -108,5 +109,5 @@ $( function () {
|
|||
checkSourceTimeout = setTimeout( checkSource, 300 );
|
||||
} );
|
||||
|
||||
mw.massmessage.enableTitleComplete( $formSource.$input );
|
||||
autocomplete.enableTitleComplete( $formSource.$input );
|
||||
} );
|
||||
|
|
|
@ -2,12 +2,16 @@ $( function () {
|
|||
'use strict';
|
||||
|
||||
// Dynamic page title validation
|
||||
var $spamlist = $( '#mw-massmessage-form-spamlist' ),
|
||||
var autocomplete = require( './ext.MassMessage.autocomplete.js' ),
|
||||
badHtml = require( './ext.MassMessage.badhtml.js' ),
|
||||
$spamlist = $( '#mw-massmessage-form-spamlist' ),
|
||||
$massmessagepage = $( '#mw-massmessage-form-page' );
|
||||
|
||||
// Limit edit summaries to 240 bytes
|
||||
$( '#mw-massmessage-form-subject' ).byteLimit();
|
||||
|
||||
badHtml( $( '#mw-massmessage-form-message' ) );
|
||||
|
||||
/**
|
||||
* Fetch pages with a given title.
|
||||
*
|
||||
|
@ -97,8 +101,8 @@ $( function () {
|
|||
} );
|
||||
|
||||
// Autocomplete for spamlist titles
|
||||
mw.massmessage.enableTitleComplete( $spamlist );
|
||||
autocomplete.enableTitleComplete( $spamlist );
|
||||
|
||||
// Autocomplete for pages to send as message
|
||||
mw.massmessage.enableTitleComplete( $massmessagepage );
|
||||
autocomplete.enableTitleComplete( $massmessagepage );
|
||||
} );
|
||||
|
|
正在加载...
在新工单中引用
屏蔽一个用户