]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - extensions/Cite/modules/ve-cite/ve.ui.MWCitationDialogTool.js
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / extensions / Cite / modules / ve-cite / ve.ui.MWCitationDialogTool.js
diff --git a/extensions/Cite/modules/ve-cite/ve.ui.MWCitationDialogTool.js b/extensions/Cite/modules/ve-cite/ve.ui.MWCitationDialogTool.js
new file mode 100644 (file)
index 0000000..19883a6
--- /dev/null
@@ -0,0 +1,64 @@
+/*!
+ * VisualEditor MediaWiki UserInterface citation dialog tool class.
+ *
+ * @copyright 2011-2017 Cite 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.MWReferenceDialogTool
+ * @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';
+
+/**
+ * Only display tool for single-template transclusions of these templates.
+ *
+ * @property {string|string[]|null}
+ * @static
+ * @inheritable
+ */
+ve.ui.MWCitationDialogTool.static.template = null;
+
+/* Static 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;
+};