mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-12-01 17:36:35 +00:00
a15fa5a17c
Greatly enhance the functionality of ve.dm.MWTransclusionNode#isSingleTemplate and actually use it places. Use mw.Title to normalize titles, accounting for case differences and spaces vs underscores. Also allow an array of template names to be specified. Use isSingleTemplate() in the transclusion and citation dialog tools, which were duplicating this logic. Also document the .static.template properties. Without this, the citation tool will appear for a reference using {{Cite news}}, but not for one using {{cite news}} or {{Cite_news}}. Change-Id: I18d2bb1b22a5ab269694ad0818b1bb326ef8d1fd
69 lines
1.8 KiB
JavaScript
69 lines
1.8 KiB
JavaScript
/*!
|
|
* VisualEditor MediaWiki UserInterface citation dialog tool class.
|
|
*
|
|
* @copyright 2011-2014 VisualEditor Team and others; see AUTHORS.txt
|
|
* @license The MIT License (MIT); see LICENSE.txt
|
|
*/
|
|
|
|
/**
|
|
* MediaWiki UserInterface citation dialog tool.
|
|
*
|
|
* @class
|
|
* @abstract
|
|
* @extends ve.ui.DialogTool
|
|
* @constructor
|
|
* @param {OO.ui.Toolbar} toolbar
|
|
* @param {Object} [config] Configuration options
|
|
*/
|
|
ve.ui.MWCitationDialogTool = function VeUiMWCitationDialogTool( toolbar, config ) {
|
|
// Parent method
|
|
ve.ui.MWCitationDialogTool.super.call( this, toolbar, config );
|
|
};
|
|
|
|
/* Inheritance */
|
|
|
|
OO.inheritClass( ve.ui.MWCitationDialogTool, ve.ui.MWReferenceDialogTool );
|
|
|
|
/* Static Properties */
|
|
|
|
ve.ui.MWCitationDialogTool.static.group = 'cite';
|
|
|
|
ve.ui.MWCitationDialogTool.static.modelClasses = [ ve.dm.MWReferenceNode ];
|
|
|
|
ve.ui.MWCitationDialogTool.static.requiresRange = true;
|
|
|
|
/**
|
|
* Only display tool for single-template transclusions of these templates.
|
|
*
|
|
* @property {string|string[]|null}
|
|
* @static
|
|
* @inheritable
|
|
*/
|
|
ve.ui.MWCitationDialogTool.static.template = null;
|
|
|
|
/* Methods */
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
ve.ui.MWCitationDialogTool.static.isCompatibleWith = function ( model ) {
|
|
var internalItem, branches, leaves,
|
|
compatible = ve.ui.MWCitationDialogTool.super.static.isCompatibleWith.call( this, model );
|
|
|
|
if ( compatible && this.template ) {
|
|
// Check if content of the reference node contains only a template with the same name as
|
|
// this.template
|
|
internalItem = model.getInternalItem();
|
|
branches = internalItem.getChildren();
|
|
if ( branches.length === 1 && branches[0].canContainContent() ) {
|
|
leaves = branches[0].getChildren();
|
|
if ( leaves.length === 1 && leaves[0] instanceof ve.dm.MWTransclusionNode ) {
|
|
return leaves[0].isSingleTemplate( this.template );
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
return compatible;
|
|
};
|