/*! * 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( $( '' ).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 ]; };