2015-11-08 17:05:33 +00:00
|
|
|
/*!
|
|
|
|
* VisualEditor DataModel MWSignatureNode class.
|
|
|
|
*
|
2020-01-08 17:13:04 +00:00
|
|
|
* @copyright 2011-2020 VisualEditor Team and others; see AUTHORS.txt
|
2015-11-08 17:05:33 +00:00
|
|
|
* @license The MIT License (MIT); see LICENSE.txt
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* DataModel MediaWiki signature node. This defines the behavior of the data model for the
|
|
|
|
* signature, especially the fact that it needs to be converted into a wikitext signature on
|
|
|
|
* save.
|
|
|
|
*
|
|
|
|
* @class
|
2020-06-20 12:00:25 +00:00
|
|
|
* @extends ve.dm.LeafNode
|
2015-11-08 17:05:33 +00:00
|
|
|
*
|
|
|
|
* @constructor
|
|
|
|
* @param {Object} [element] Reference to element in linear model
|
|
|
|
*/
|
2016-08-22 21:44:59 +00:00
|
|
|
ve.dm.MWSignatureNode = function VeDmMWSignatureNode() {
|
2015-11-08 17:05:33 +00:00
|
|
|
// Parent constructor
|
2016-08-22 21:44:59 +00:00
|
|
|
ve.dm.MWSignatureNode.super.apply( this, arguments );
|
2020-06-20 12:00:25 +00:00
|
|
|
|
|
|
|
// Mixin constructors
|
|
|
|
ve.dm.GeneratedContentNode.call( this );
|
|
|
|
ve.dm.FocusableNode.call( this );
|
2015-11-08 17:05:33 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/* Inheritance */
|
|
|
|
|
2020-06-20 12:00:25 +00:00
|
|
|
OO.inheritClass( ve.dm.MWSignatureNode, ve.dm.LeafNode );
|
|
|
|
OO.mixinClass( ve.dm.MWSignatureNode, ve.dm.GeneratedContentNode );
|
|
|
|
OO.mixinClass( ve.dm.MWSignatureNode, ve.dm.FocusableNode );
|
2015-11-08 17:05:33 +00:00
|
|
|
|
|
|
|
/* Static members */
|
|
|
|
|
|
|
|
ve.dm.MWSignatureNode.static.name = 'mwSignature';
|
|
|
|
|
2020-06-20 12:00:25 +00:00
|
|
|
ve.dm.MWSignatureNode.static.isContent = true;
|
|
|
|
|
2015-11-08 17:05:33 +00:00
|
|
|
ve.dm.MWSignatureNode.static.matchTagNames = null;
|
|
|
|
|
|
|
|
ve.dm.MWSignatureNode.static.matchRdfaTypes = [];
|
|
|
|
|
|
|
|
ve.dm.MWSignatureNode.static.matchFunction = function () {
|
|
|
|
return false;
|
|
|
|
};
|
|
|
|
|
2020-07-02 12:41:57 +00:00
|
|
|
ve.dm.MWSignatureNode.static.getTemplateDataElement = function () {
|
|
|
|
return {
|
2015-11-08 17:05:33 +00:00
|
|
|
type: 'mwTransclusionInline',
|
|
|
|
attributes: {
|
|
|
|
mw: {
|
|
|
|
parts: [ '~~~~' ]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
2020-07-02 12:41:57 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
ve.dm.MWSignatureNode.static.toDomElements = function ( dataElement, doc, converter ) {
|
|
|
|
// Ignore the mwSignature dataElement and create a wikitext transclusion
|
|
|
|
dataElement = this.getTemplateDataElement();
|
2020-06-20 12:00:25 +00:00
|
|
|
return ve.dm.MWTransclusionInlineNode.static.toDomElements( dataElement, doc, converter );
|
2015-11-08 17:05:33 +00:00
|
|
|
};
|
|
|
|
|
2020-06-20 12:00:25 +00:00
|
|
|
// Can't be generated from existing HTML documents, this method should never be called
|
|
|
|
ve.dm.MWSignatureNode.static.toDataElement = null;
|
2015-11-08 17:05:33 +00:00
|
|
|
|
2020-07-02 12:41:57 +00:00
|
|
|
// In previews we look up the rendering of the generated mwTransclusionInline node,
|
|
|
|
// so use that node's hash object.
|
|
|
|
ve.dm.MWSignatureNode.static.getHashObjectForRendering = function () {
|
|
|
|
return ve.dm.MWTransclusionNode.static.getHashObject( this.getTemplateDataElement() );
|
|
|
|
};
|
|
|
|
|
2015-11-08 17:05:33 +00:00
|
|
|
/* Registration */
|
|
|
|
|
|
|
|
ve.dm.modelRegistry.register( ve.dm.MWSignatureNode );
|