2015-05-03 21:21:00 +00:00
|
|
|
/*!
|
|
|
|
* VisualEditor UserInterface MWExternalLinkAnnotationWidget class.
|
|
|
|
*
|
2023-12-01 16:06:11 +00:00
|
|
|
* @copyright See AUTHORS.txt
|
2015-05-03 21:21:00 +00:00
|
|
|
* @license The MIT License (MIT); see LICENSE.txt
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Creates an ve.ui.MWExternalLinkAnnotationWidget object.
|
|
|
|
*
|
|
|
|
* @class
|
|
|
|
* @extends ve.ui.LinkAnnotationWidget
|
|
|
|
*
|
|
|
|
* @constructor
|
|
|
|
* @param {Object} [config] Configuration options
|
|
|
|
*/
|
|
|
|
ve.ui.MWExternalLinkAnnotationWidget = function VeUiMWExternalLinkAnnotationWidget() {
|
|
|
|
// Parent constructor
|
|
|
|
ve.ui.MWExternalLinkAnnotationWidget.super.apply( this, arguments );
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Inheritance */
|
|
|
|
|
|
|
|
OO.inheritClass( ve.ui.MWExternalLinkAnnotationWidget, ve.ui.LinkAnnotationWidget );
|
|
|
|
|
2015-05-29 12:08:05 +00:00
|
|
|
/* Static Methods */
|
2015-05-03 21:21:00 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @inheritdoc
|
|
|
|
*/
|
2015-05-29 12:08:05 +00:00
|
|
|
ve.ui.MWExternalLinkAnnotationWidget.static.getAnnotationFromText = function ( value ) {
|
2024-05-21 14:22:56 +00:00
|
|
|
const href = value.trim();
|
2015-05-03 21:21:00 +00:00
|
|
|
|
|
|
|
// Keep annotation in sync with value
|
|
|
|
if ( href === '' ) {
|
|
|
|
return null;
|
|
|
|
} else {
|
|
|
|
return new ve.dm.MWExternalLinkAnnotation( {
|
|
|
|
type: 'link/mwExternal',
|
|
|
|
attributes: {
|
|
|
|
href: href
|
|
|
|
}
|
|
|
|
} );
|
|
|
|
}
|
|
|
|
};
|
2015-05-29 12:08:05 +00:00
|
|
|
|
|
|
|
/**
|
2014-10-29 21:50:14 +00:00
|
|
|
* Create an external link input widget.
|
2015-05-29 12:08:05 +00:00
|
|
|
*
|
|
|
|
* @param {Object} [config] Configuration options
|
|
|
|
* @return {OO.ui.TextInputWidget} Text input widget
|
|
|
|
*/
|
2014-10-29 21:50:14 +00:00
|
|
|
ve.ui.MWExternalLinkAnnotationWidget.static.createExternalLinkInputWidget = function ( config ) {
|
2024-05-21 14:22:56 +00:00
|
|
|
const inputWidget = new OO.ui.TextInputWidget( ve.extendObject( {}, config, {
|
2015-05-29 12:08:05 +00:00
|
|
|
icon: 'linkExternal',
|
2019-07-24 12:50:11 +00:00
|
|
|
type: 'url',
|
2024-05-01 11:36:18 +00:00
|
|
|
validate: ( text ) => !!ve.init.platform.getExternalLinkUrlProtocolsRegExp().exec( text.trim() )
|
2014-10-29 21:50:14 +00:00
|
|
|
} ) );
|
2020-02-14 19:11:39 +00:00
|
|
|
|
|
|
|
inputWidget.$input.attr( 'aria-label', mw.msg( 'visualeditor-linkinspector-button-link-external' ) );
|
|
|
|
return inputWidget;
|
2014-10-29 21:50:14 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/* Methods */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create a text input widget to be used by the annotation widget
|
|
|
|
*
|
|
|
|
* @param {Object} [config] Configuration options
|
|
|
|
* @return {OO.ui.TextInputWidget} Text input widget
|
|
|
|
*/
|
|
|
|
ve.ui.MWExternalLinkAnnotationWidget.prototype.createInputWidget = function ( config ) {
|
|
|
|
return this.constructor.static.createExternalLinkInputWidget( config );
|
2015-05-29 12:08:05 +00:00
|
|
|
};
|