Mooeypoo has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/78670


Change subject: LanguageBlock Node
......................................................................

LanguageBlock Node

This is the ce/dm definition for the LanguageBlockNode as part of the
new LanguageBlockInspector. The inspector UI will come up next.

This commit sets up the dm/ce to recognize language <div> blocks with
some langu='xx' dir='yy' definition and visually marks them for the user.
The LanguageBlock Node definition is set up as BranchNode so it can
wrap a block of content that has other nodes in it.

Change-Id: I0e7d3156085970ce3b0cca1f853d2ad7417bd712
---
M VisualEditor.php
A modules/ve/ce/nodes/ve.ce.LanguageBlockNode.js
M modules/ve/ce/styles/ve.ce.Node.css
A modules/ve/dm/nodes/ve.dm.LanguageBlockNode.js
4 files changed, 119 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor 
refs/changes/70/78670/1

diff --git a/VisualEditor.php b/VisualEditor.php
index b067472..e5007a7 100644
--- a/VisualEditor.php
+++ b/VisualEditor.php
@@ -732,6 +732,8 @@
                        've/ui/widgets/ve.ui.LanguageInputWidget.js',
                        've/ui/tools/buttons/ve.ui.CodeButtonTool.js',
                        've/ui/tools/buttons/ve.ui.StrikethroughButtonTool.js',
+                       've/ce/nodes/ve.ce.LanguageBlockNode.js',
+                       've/dm/nodes/ve.dm.LanguageBlockNode.js',
                ),
                'dependencies' => array(
                        'ext.visualEditor.core',
diff --git a/modules/ve/ce/nodes/ve.ce.LanguageBlockNode.js 
b/modules/ve/ce/nodes/ve.ce.LanguageBlockNode.js
new file mode 100644
index 0000000..58bea53
--- /dev/null
+++ b/modules/ve/ce/nodes/ve.ce.LanguageBlockNode.js
@@ -0,0 +1,55 @@
+/*!
+ * VisualEditor ContentEditable ListNode class.
+ *
+ * @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * ContentEditable language block node.
+ *
+ * @class
+ * @extends ve.ce.BranchNode
+ * @constructor
+ * @param {ve.dm.ListNode} model Model to observe
+ * @param {Object} [config] Config options
+ */
+ve.ce.LanguageBlockNode = function VeCeLanguageBlockNode( model, config ) {
+       // Parent constructor
+       ve.ce.BranchNode.call( this, model, config );
+
+       // Events
+       this.model.connect( this, { 'update': 'onUpdate' } );
+
+       // DOM Changes
+       this.$.addClass( 've-ce-languageBlockNode' );
+};
+
+/* Inheritance */
+
+ve.inheritClass( ve.ce.LanguageBlockNode, ve.ce.BranchNode );
+
+/* Static Properties */
+
+ve.ce.LanguageBlockNode.static.name = 'languageblock';
+
+ve.ce.LanguageBlockNode.static.tagName = 'div';
+
+ve.ce.LanguageBlockNode.static.canBeSplit = true;
+
+/* Methods */
+
+/**
+ * Handle model update events.
+ *
+ * If the style changed since last update the DOM wrapper will be replaced 
with an appropriate one.
+ *
+ * @method
+ */
+ve.ce.LanguageBlockNode.prototype.onUpdate = function () {
+//     this.updateTagName();
+};
+
+/* Registration */
+
+ve.ce.nodeFactory.register( ve.ce.LanguageBlockNode );
diff --git a/modules/ve/ce/styles/ve.ce.Node.css 
b/modules/ve/ce/styles/ve.ce.Node.css
index 6458fb6..b20e57a 100644
--- a/modules/ve/ce/styles/ve.ce.Node.css
+++ b/modules/ve/ce/styles/ve.ce.Node.css
@@ -192,3 +192,10 @@
        border-bottom: dashed #ccc 1px;
        background-color: #ebf3f5;
 }
+
+/* Language Block Div Node */
+.ve-ce-languageBlockNode {
+       border: dashed #ccc 1px;
+       background-color: #ebf3f5;
+}
+
diff --git a/modules/ve/dm/nodes/ve.dm.LanguageBlockNode.js 
b/modules/ve/dm/nodes/ve.dm.LanguageBlockNode.js
new file mode 100644
index 0000000..316220b
--- /dev/null
+++ b/modules/ve/dm/nodes/ve.dm.LanguageBlockNode.js
@@ -0,0 +1,55 @@
+/*!
+ * VisualEditor DataModel LanguageBlockNode class.
+ *
+ * @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * DataModel language block node.
+ *
+ * @class
+ * @extends ve.dm.BranchNode
+ * @constructor
+ * @param {ve.dm.BranchNode[]} [children] Child nodes to attach
+ * @param {Object} [element] Reference to element in linear model
+ */
+ve.dm.LanguageBlockNode = function VeDmLanguageBlockNode( children, element ) {
+       // Parent constructor
+       ve.dm.BranchNode.call( this, children, element );
+};
+
+/* Inheritance */
+
+ve.inheritClass( ve.dm.LanguageBlockNode, ve.dm.BranchNode );
+
+/* Static Properties */
+
+ve.dm.LanguageBlockNode.static.name = 'languageblock';
+
+ve.dm.LanguageBlockNode.static.matchTagNames = [ 'div' ];
+
+// TODO:
+// change the default from 'en'/'ltr' to the page langauge/dir
+// from the surface.getDir()
+ve.dm.LanguageBlockNode.static.toDataElement = function ( domElements ) {
+       var $node = $( domElements[0] );
+       return {
+               'type': 'languageblock',
+               'attributes': {
+                       'lang': $node.attr( 'lang' ) || 'en',
+                       'dir': $node.css( 'direction' ) || 'ltr'
+                       }
+               };
+};
+
+ve.dm.LanguageBlockNode.static.toDomElements = function ( dataElement, doc ) {
+       var domElement = doc.createElement( 'div' );
+       ve.setDomAttributes( domElement, dataElement.attributes, [ 'lang', 
'dir' ] );
+       return [ domElement ];
+};
+
+
+/* Registration */
+
+ve.dm.modelRegistry.register( ve.dm.LanguageBlockNode );

-- 
To view, visit https://gerrit.wikimedia.org/r/78670
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0e7d3156085970ce3b0cca1f853d2ad7417bd712
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Mooeypoo <mor...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to