Alex Monk has uploaded a new change for review.
https://gerrit.wikimedia.org/r/182988
Change subject: Mark interwiki links as known in LinkTargetInputWidget
......................................................................
Mark interwiki links as known in LinkTargetInputWidget
Bit messy at the moment.
Bug: T72504
Change-Id: I4b08f1c6d70f371f7f9a05d0856111721f4edb35
---
M modules/ve-mw/ui/widgets/ve.ui.MWLinkTargetInputWidget.js
1 file changed, 39 insertions(+), 11 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor
refs/changes/88/182988/1
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWLinkTargetInputWidget.js
b/modules/ve-mw/ui/widgets/ve.ui.MWLinkTargetInputWidget.js
index f91d890..4d05b5d 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWLinkTargetInputWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWLinkTargetInputWidget.js
@@ -16,6 +16,8 @@
* @param {Object} [config] Configuration options
*/
ve.ui.MWLinkTargetInputWidget = function VeUiMWLinkTargetInputWidget( config )
{
+ var widget = this;
+
// Config initialization
config = config || {};
@@ -34,6 +36,17 @@
// Initialization
this.$element.addClass( 've-ui-mwLinkTargetInputWidget' );
this.lookupMenu.$element.addClass( 've-ui-mwLinkTargetInputWidget-menu'
);
+
+ this.interwikiPrefixes = [];
+ this.interwikiPrefixesPromise =
ve.init.target.constructor.static.apiRequest( {
+ action: 'query',
+ meta: 'siteinfo',
+ siprop: 'interwikimap'
+ } ).done( function ( data ) {
+ $.each( data.query.interwikimap, function ( index, interwiki ) {
+ widget.interwikiPrefixes.push( interwiki.prefix );
+ } );
+ } );
};
/* Inheritance */
@@ -102,21 +115,36 @@
* @returns {jqXHR} AJAX object without success or fail handlers attached
*/
ve.ui.MWLinkTargetInputWidget.prototype.getLookupRequest = function () {
+ var widget = this, promiseAbortObject = { abort: function () {
+ // Do nothing. This is just so OOUI doesn't break due to abort
being undefined.
+ } };
+
if ( mw.Title.newFromText( this.value ) ) {
- return ve.init.target.constructor.static.apiRequest( {
- action: 'query',
- generator: 'prefixsearch',
- gpssearch: this.value,
- gpsnamespace: 0,
- prop: 'info|pageprops',
- ppprop: 'disambiguation'
- } );
+ return this.interwikiPrefixesPromise.then( function () {
+ var interwiki = widget.value.substring( 0,
widget.value.indexOf( ':' ) );
+ if ( interwiki && interwiki !== '' ) {
+ return $.Deferred().resolve( { query: {
+ pages: [{
+ title: widget.value
+ }]
+ } } ).promise( promiseAbortObject );
+ } else {
+ var req =
ve.init.target.constructor.static.apiRequest( {
+ action: 'query',
+ generator: 'prefixsearch',
+ gpssearch: widget.value,
+ gpsnamespace: 0,
+ prop: 'info|pageprops',
+ ppprop: 'disambiguation'
+ } );
+ promiseAbortObject.abort = req.abort.bind( req
);
+ return req;
+ }
+ } ).promise( promiseAbortObject );
} else {
// Don't send invalid titles to the API.
// Just pretend it returned nothing so we can show the 'invalid
title' section
- return $.Deferred().resolve( {} ).promise( { abort: function ()
{
- // Do nothing. This is just so OOUI doesn't break due
to abort being undefined.
- } } );
+ return $.Deferred().resolve( {} ).promise( promiseAbortObject );
}
};
--
To view, visit https://gerrit.wikimedia.org/r/182988
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4b08f1c6d70f371f7f9a05d0856111721f4edb35
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Alex Monk <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits