/*!
* VisualEditor user interface MWTemplatesUsedPage class.
*
* @copyright See AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* MediaWiki meta dialog TemplatesUsed page.
*
* @class
* @extends OO.ui.PageLayout
*
* @constructor
* @param {string} name Unique symbolic name of page
* @param {Object} [config] Configuration options
* @param {jQuery} [config.$overlay] Overlay to render dropdowns in
*/
ve.ui.MWTemplatesUsedPage = function VeUiMWTemplatesUsedPage() {
const target = ve.init.target;
// Parent constructor
ve.ui.MWTemplatesUsedPage.super.apply( this, arguments );
// Properties
this.templatesUsedFieldset = new OO.ui.FieldsetLayout( {
label: ve.msg( 'visualeditor-templatesused-tool' ),
icon: 'puzzle'
} );
this.templatesUsedFieldset.$group.addClass( [
'mw-body-content'
] );
target.getContentApi().get( {
action: 'visualeditor',
paction: 'templatesused',
page: target.getPageName(),
uselang: mw.config.get( 'wgUserLanguage' )
} ).then( ( response ) => {
const templatesUsed = $.parseHTML( response.visualeditor );
if ( templatesUsed.length && $( templatesUsed ).find( 'li' ).length ) {
return templatesUsed;
} else {
return ve.createDeferred().reject().promise();
}
} ).then( ( templatesUsed ) => {
// templatesUsed is an array of nodes
// eslint-disable-next-line no-jquery/no-append-html
this.templatesUsedFieldset.$group.append( templatesUsed );
ve.targetLinksToNewWindow( this.templatesUsedFieldset.$group[ 0 ] );
}, () => {
this.templatesUsedFieldset.$group.append(
$( '<em>' ).text( ve.msg( 'visualeditor-dialog-meta-templatesused-noresults' ) )
);
} );
// Initialization
this.$element.append( this.templatesUsedFieldset.$element );
};
/* Inheritance */
OO.inheritClass( ve.ui.MWTemplatesUsedPage, OO.ui.PageLayout );
/* Methods */
/**
* @inheritdoc
*/
ve.ui.MWTemplatesUsedPage.prototype.setupOutlineItem = function () {
this.outlineItem
.setIcon( 'puzzle' )
.setLabel( ve.msg( 'visualeditor-templatesused-tool' ) );
};
/**
* @inheritdoc
*/
ve.ui.MWTemplatesUsedPage.prototype.focus = function () {
// No controls, just focus the whole page instead of the first link
this.$element[ 0 ].focus();
};
ve.ui.MWTemplatesUsedPage.prototype.getFieldsets = function () {
return [
this.templatesUsedFieldset
];
};