Inez has uploaded a new change for review. https://gerrit.wikimedia.org/r/65864
Change subject: (WIP) Convert GeneratedContentNode into a mixing (instead of an abstract class). ...................................................................... (WIP) Convert GeneratedContentNode into a mixing (instead of an abstract class). Change-Id: I280d2a59326bd83357c7a09c3a188a70fbc75335 --- M modules/ve/ce/nodes/ve.ce.AlienNode.js M modules/ve/ce/nodes/ve.ce.GeneratedContentNode.js M modules/ve/ce/nodes/ve.ce.MWTemplateNode.js M modules/ve/ce/ve.ce.ProtectedNode.js M modules/ve/dm/nodes/ve.dm.AlienNode.js M modules/ve/dm/nodes/ve.dm.GeneratedContentNode.js M modules/ve/dm/nodes/ve.dm.MWTemplateNode.js M modules/ve/test/ce/ve.ce.ContentBranchNode.test.js 8 files changed, 48 insertions(+), 48 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor refs/changes/64/65864/1 diff --git a/modules/ve/ce/nodes/ve.ce.AlienNode.js b/modules/ve/ce/nodes/ve.ce.AlienNode.js index 002c1d3..cb3bbe5 100644 --- a/modules/ve/ce/nodes/ve.ce.AlienNode.js +++ b/modules/ve/ce/nodes/ve.ce.AlienNode.js @@ -10,8 +10,9 @@ * * @class * @abstract - * @extends ve.ce.GeneratedContentNode + * @extends ve.ce.LeafNode * @mixins ve.ce.ProtectedNode + * @mixins ve.ce.GeneratedContentNode * * @constructor * @param {ve.dm.AlienNode} model Model to observe @@ -19,10 +20,11 @@ */ ve.ce.AlienNode = function VeCeAlienNode( model, config ) { // Parent constructor - ve.ce.GeneratedContentNode.call( this, model, config ); + ve.ce.LeafNode.call( this, model, config ); // Mixin constructors ve.ce.ProtectedNode.call( this ); + ve.ce.GeneratedContentNode.call( this, model ); // Intitialization this.$.addClass( 've-ce-alienNode' ); @@ -30,10 +32,12 @@ /* Inheritance */ -ve.inheritClass( ve.ce.AlienNode, ve.ce.GeneratedContentNode ); +ve.inheritClass( ve.ce.AlienNode, ve.ce.LeafNode ); ve.mixinClass( ve.ce.AlienNode, ve.ce.ProtectedNode ); +ve.mixinClass( ve.ce.AlienNode, ve.ce.GeneratedContentNode ); + /* Static Properties */ ve.ce.AlienNode.static.name = 'alien'; diff --git a/modules/ve/ce/nodes/ve.ce.GeneratedContentNode.js b/modules/ve/ce/nodes/ve.ce.GeneratedContentNode.js index a9c2c86..f431bef 100644 --- a/modules/ve/ce/nodes/ve.ce.GeneratedContentNode.js +++ b/modules/ve/ce/nodes/ve.ce.GeneratedContentNode.js @@ -10,15 +10,11 @@ * * @class * @abstract - * @extends ve.ce.LeafNode + * * @constructor - * @param {ve.dm.GeneratedContentNode} model Model to observe - * @param {Object} [config] Config options + * @param {ve.dm.Node} model Model to observe */ -ve.ce.GeneratedContentNode = function VeCeGeneratedContentNode( model, config ) { - // Parent constructor - ve.ce.LeafNode.call( this, model, config ); - +ve.ce.GeneratedContentNode = function VeCeGeneratedContentNode( model ) { // DOM Changes this.$.addClass( 've-ce-generatedContentNode' ); this.$.attr( 'contenteditable', false ); @@ -26,17 +22,8 @@ // Events this.model.connect( this, { 'update': 'onUpdate' } ); - // Initialization this.onUpdate(); }; - -/* Inheritance */ - -ve.inheritClass( ve.ce.GeneratedContentNode, ve.ce.LeafNode ); - -/* Static Properties */ - -ve.ce.GeneratedContentNode.static.name = 'generatedContent'; /* Methods */ @@ -96,8 +83,4 @@ */ ve.ce.GeneratedContentNode.prototype.failGenerating = function () { // TODO: remove 'generating' style -}; - -/* Registration */ - -ve.ce.nodeFactory.register( ve.ce.GeneratedContentNode ); +}; \ No newline at end of file diff --git a/modules/ve/ce/nodes/ve.ce.MWTemplateNode.js b/modules/ve/ce/nodes/ve.ce.MWTemplateNode.js index 3aaeb24..4e61347 100644 --- a/modules/ve/ce/nodes/ve.ce.MWTemplateNode.js +++ b/modules/ve/ce/nodes/ve.ce.MWTemplateNode.js @@ -12,9 +12,10 @@ * * @class * @abstract - * @extends ve.ce.GeneratedContentNode + * @extends ve.ce.LeafNode * @mixins ve.ce.ProtectedNode * @mixins ve.ce.FocusableNode + * @mixins ve.ce.GeneratedContentNode * * @constructor * @param {ve.dm.MWTemplateNode} model Model to observe @@ -22,11 +23,12 @@ */ ve.ce.MWTemplateNode = function VeCeMWTemplateNode( model, config ) { // Parent constructor - ve.ce.GeneratedContentNode.call( this, model, config ); + ve.ce.LeafNode.call( this, model, config ); // Mixin constructors ve.ce.ProtectedNode.call( this ); ve.ce.FocusableNode.call( this ); + ve.ce.GeneratedContentNode.call( this, model ); // DOM Changes this.$.addClass( 've-ce-mwTemplateNode' ); @@ -34,12 +36,14 @@ /* Inheritance */ -ve.inheritClass( ve.ce.MWTemplateNode, ve.ce.GeneratedContentNode ); +ve.inheritClass( ve.ce.MWTemplateNode, ve.ce.LeafNode ); ve.mixinClass( ve.ce.MWTemplateNode, ve.ce.ProtectedNode ); ve.mixinClass( ve.ce.MWTemplateNode, ve.ce.FocusableNode ); +ve.mixinClass( ve.ce.MWTemplateNode, ve.ce.GeneratedContentNode ); + /* Static Properties */ ve.ce.MWTemplateNode.static.name = 'mwTemplate'; diff --git a/modules/ve/ce/ve.ce.ProtectedNode.js b/modules/ve/ce/ve.ce.ProtectedNode.js index 081f22e..10528c4 100644 --- a/modules/ve/ce/ve.ce.ProtectedNode.js +++ b/modules/ve/ce/ve.ce.ProtectedNode.js @@ -64,6 +64,9 @@ * @method */ ve.ce.ProtectedNode.prototype.onProtectedSetup = function () { + if ( !this.isLive() ) { + return; + } var $shield, node = this, $shieldTemplate = this.constructor.static.$shieldTemplate, @@ -96,6 +99,9 @@ * @method */ ve.ce.ProtectedNode.prototype.onProtectedTeardown = function () { + if ( !this.isLive() ) { + return; + } var surfaceModel = this.getRoot().getSurface().getModel(); // Events diff --git a/modules/ve/dm/nodes/ve.dm.AlienNode.js b/modules/ve/dm/nodes/ve.dm.AlienNode.js index 2cfe9c5..79be364 100644 --- a/modules/ve/dm/nodes/ve.dm.AlienNode.js +++ b/modules/ve/dm/nodes/ve.dm.AlienNode.js @@ -10,19 +10,26 @@ * * @class * @abstract - * @extends ve.dm.GeneratedContentNode + * @extends ve.dm.LeafNode + * @mixins ve.dm.GeneratedContentNode + * * @constructor * @param {number} [length] Length of content data in document; ignored and overridden to 0 * @param {Object} [element] Reference to element in linear model */ ve.dm.AlienNode = function VeDmAlienNode( length, element ) { // Parent constructor - ve.dm.GeneratedContentNode.call( this, 0, element ); + ve.dm.LeafNode.call( this, 0, element ); + + // Mixin constructors + ve.dm.GeneratedContentNode.call( this ); }; /* Inheritance */ -ve.inheritClass( ve.dm.AlienNode, ve.dm.GeneratedContentNode ); +ve.inheritClass( ve.dm.AlienNode, ve.dm.LeafNode ); + +ve.mixinClass( ve.dm.AlienNode, ve.dm.GeneratedContentNode ); /* Static members */ diff --git a/modules/ve/dm/nodes/ve.dm.GeneratedContentNode.js b/modules/ve/dm/nodes/ve.dm.GeneratedContentNode.js index 1eb081c..9ef8518 100644 --- a/modules/ve/dm/nodes/ve.dm.GeneratedContentNode.js +++ b/modules/ve/dm/nodes/ve.dm.GeneratedContentNode.js @@ -10,23 +10,16 @@ * * @class * @abstract - * @extends ve.dm.LeafNode * @constructor * @param {number} [length] Length of content data in document; ignored and overridden to 0 * @param {Object} [element] Reference to element in linear model */ -ve.dm.GeneratedContentNode = function VeDmGeneratedContentNode( length, element ) { - // Parent constructor - ve.dm.LeafNode.call( this, 0, element ); +ve.dm.GeneratedContentNode = function VeDmGeneratedContentNode() { }; - -/* Inheritance */ - -ve.inheritClass( ve.dm.GeneratedContentNode, ve.dm.LeafNode ); /* Static members */ -ve.dm.GeneratedContentNode.static.name = 'generatedContent'; +ve.dm.GeneratedContentNode.static = {}; ve.dm.GeneratedContentNode.static.matchTagNames = []; @@ -42,8 +35,4 @@ ve.dm.GeneratedContentNode.static.storeDomElements = function ( dataElement, domElements, store ) { var hash = ve.getHash( this.getHashObject( dataElement ) ); return store.index( domElements, hash ); -}; - -/* Registration */ - -ve.dm.modelRegistry.register( ve.dm.GeneratedContentNode ); \ No newline at end of file +}; \ No newline at end of file diff --git a/modules/ve/dm/nodes/ve.dm.MWTemplateNode.js b/modules/ve/dm/nodes/ve.dm.MWTemplateNode.js index 631ee7f..9e81259 100644 --- a/modules/ve/dm/nodes/ve.dm.MWTemplateNode.js +++ b/modules/ve/dm/nodes/ve.dm.MWTemplateNode.js @@ -10,19 +10,26 @@ * * @class * @abstract - * @extends ve.dm.GeneratedContentNode + * @extends ve.dm.LeafNode + * @mixins ve.dm.GeneratedContentNode + * * @constructor * @param {number} [length] Length of content data in document; ignored and overridden to 0 * @param {Object} [element] Reference to element in linear model */ ve.dm.MWTemplateNode = function VeDmMWTemplateNode( length, element ) { // Parent constructor - ve.dm.GeneratedContentNode.call( this, 0, element ); + ve.dm.LeafNode.call( this, 0, element ); + + // Mixin constructors + ve.dm.GeneratedContentNode.call( this ); }; /* Inheritance */ -ve.inheritClass( ve.dm.MWTemplateNode, ve.dm.GeneratedContentNode ); +ve.inheritClass( ve.dm.MWTemplateNode, ve.dm.LeafNode ); + +ve.mixinClass( ve.dm.MWTemplateNode, ve.dm.GeneratedContentNode ); /* Static members */ diff --git a/modules/ve/test/ce/ve.ce.ContentBranchNode.test.js b/modules/ve/test/ce/ve.ce.ContentBranchNode.test.js index 189bfa2..7a74a3c 100644 --- a/modules/ve/test/ce/ve.ce.ContentBranchNode.test.js +++ b/modules/ve/test/ce/ve.ce.ContentBranchNode.test.js @@ -246,7 +246,7 @@ ], 'html': 'a<b>b<span typeof="mw:Entity" class="ve-ce-leafNode ' + 've-ce-mwEntityNode" contenteditable="false">c</span>d<span ' + - 'class="ve-ce-leafNode ve-ce-generatedContentNode ve-ce-protectedNode ' + + 'class="ve-ce-leafNode ve-ce-protectedNode ve-ce-generatedContentNode ' + 've-ce-alienNode ve-ce-alienInlineNode" ' + 'contenteditable="false"><tt>e</tt></span></b>' } -- To view, visit https://gerrit.wikimedia.org/r/65864 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I280d2a59326bd83357c7a09c3a188a70fbc75335 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/VisualEditor Gerrit-Branch: master Gerrit-Owner: Inez <i...@wikia-inc.com> Gerrit-Reviewer: Catrope <roan.katt...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits