Esanders has uploaded a new change for review.

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


Change subject: Create MediaWiki specific nodes to contain MW specific rules.
......................................................................

Create MediaWiki specific nodes to contain MW specific rules.

Heading and Preformatted nodes have rules that should only
exist under a document node in MediaWiki.

Two new node types have been created as has a new DropdownTool which
uses these. The MW init options have been changed to use the new
DropdownTool.

Change-Id: I3f47e1ae1f5c1415bde58a75385e4bf5f4b8fffc
---
M VisualEditor.php
A modules/ve/dm/nodes/ve.dm.MWHeadingNode.js
A modules/ve/dm/nodes/ve.dm.MWPreformattedNode.js
M modules/ve/init/mw/targets/ve.init.mw.ViewPageTarget.js
M modules/ve/test/index.php
A modules/ve/ui/tools/dropdowns/ve.ui.MWFormatDropdownTool.js
6 files changed, 184 insertions(+), 5 deletions(-)


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

diff --git a/VisualEditor.php b/VisualEditor.php
index 264d952..602c949 100644
--- a/VisualEditor.php
+++ b/VisualEditor.php
@@ -240,8 +240,6 @@
                        've/dm/nodes/ve.dm.ListItemNode.js',
                        've/dm/nodes/ve.dm.ListNode.js',
                        've/dm/nodes/ve.dm.MetaNode.js',
-                       've/dm/nodes/ve.dm.MWEntityNode.js',
-                       've/dm/nodes/ve.dm.MWMetaNode.js',
                        've/dm/nodes/ve.dm.ParagraphNode.js',
                        've/dm/nodes/ve.dm.PreformattedNode.js',
                        've/dm/nodes/ve.dm.TableCellNode.js',
@@ -249,6 +247,11 @@
                        've/dm/nodes/ve.dm.TableRowNode.js',
                        've/dm/nodes/ve.dm.TableSectionNode.js',
                        've/dm/nodes/ve.dm.TextNode.js',
+
+                       've/dm/nodes/ve.dm.MWEntityNode.js',
+                       've/dm/nodes/ve.dm.MWHeadingNode.js',
+                       've/dm/nodes/ve.dm.MWMetaNode.js',
+                       've/dm/nodes/ve.dm.MWPreformattedNode.js',
 
                        've/dm/annotations/ve.dm.LinkAnnotation.js',
                        've/dm/annotations/ve.dm.MWExternalLinkAnnotation.js',
@@ -331,6 +334,7 @@
                        've/ui/tools/buttons/ve.ui.UndoButtonTool.js',
 
                        've/ui/tools/dropdowns/ve.ui.FormatDropdownTool.js',
+                       've/ui/tools/dropdowns/ve.ui.MWFormatDropdownTool.js',
 
                        've/ui/inspectors/ve.ui.LinkInspector.js',
                        've/ui/inspectors/ve.ui.MWLinkInspector.js',
diff --git a/modules/ve/dm/nodes/ve.dm.MWHeadingNode.js 
b/modules/ve/dm/nodes/ve.dm.MWHeadingNode.js
new file mode 100644
index 0000000..8834aa7
--- /dev/null
+++ b/modules/ve/dm/nodes/ve.dm.MWHeadingNode.js
@@ -0,0 +1,47 @@
+/*!
+ * VisualEditor DataModel MWHeadingNode class.
+ *
+ * @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * DataModel MW heading node.
+ *
+ * @class
+ * @extends ve.dm.HeadingNode
+ * @constructor
+ * @param {ve.dm.LeafNode[]} [children] Child nodes to attach
+ * @param {Object} [element] Reference to element in linear model
+ */
+ve.dm.MWHeadingNode = function VeDmMWHeadingNode( children, element ) {
+       // Parent constructor
+       ve.dm.HeadingNode.call( this, children, element );
+};
+
+/* Inheritance */
+
+ve.inheritClass( ve.dm.MWHeadingNode, ve.dm.HeadingNode );
+
+/* Static Properties */
+
+ve.dm.MWHeadingNode.static.name = 'MWheading';
+
+ve.dm.MWHeadingNode.static.parentNodeTypes = [ 'document' ];
+
+ve.dm.MWHeadingNode.static.toDataElement = function ( domElements ) {
+       var levels = {
+                       'h1': 1,
+                       'h2': 2,
+                       'h3': 3,
+                       'h4': 4,
+                       'h5': 5,
+                       'h6': 6
+               },
+               level = levels[domElements[0].nodeName.toLowerCase()];
+       return { 'type': 'MWheading', 'attributes': { 'level': level } };
+};
+
+/* Registration */
+
+ve.dm.modelRegistry.register( ve.dm.MWHeadingNode );
diff --git a/modules/ve/dm/nodes/ve.dm.MWPreformattedNode.js 
b/modules/ve/dm/nodes/ve.dm.MWPreformattedNode.js
new file mode 100644
index 0000000..ea46269
--- /dev/null
+++ b/modules/ve/dm/nodes/ve.dm.MWPreformattedNode.js
@@ -0,0 +1,38 @@
+/*!
+ * VisualEditor DataModel MWPreformattedNode class.
+ *
+ * @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * DataModel MW preformatted node.
+ *
+ * @class
+ * @extends ve.dm.BranchNode
+ * @constructor
+ * @param {ve.dm.LeafNode[]} [children] Child nodes to attach
+ * @param {Object} [element] Reference to element in linear model
+ */
+ve.dm.MWPreformattedNode = function VeDmMWPreformattedNode( children, element 
) {
+       // Parent constructor
+       ve.dm.PreformattedNode.call( this, children, element );
+};
+
+/* Inheritance */
+
+ve.inheritClass( ve.dm.MWPreformattedNode, ve.dm.PreformattedNode );
+
+/* Static Properties */
+
+ve.dm.PreformattedNode.static.name = 'MWpreformatted';
+
+ve.dm.PreformattedNode.static.parentNodeTypes = [ 'document' ];
+
+ve.dm.PreformattedNode.static.toDataElement = function () {
+       return { 'type': 'MWpreformatted' };
+};
+
+/* Registration */
+
+ve.dm.modelRegistry.register( ve.dm.PreformattedNode );
diff --git a/modules/ve/init/mw/targets/ve.init.mw.ViewPageTarget.js 
b/modules/ve/init/mw/targets/ve.init.mw.ViewPageTarget.js
index 41ea9ec..3ea38a4 100644
--- a/modules/ve/init/mw/targets/ve.init.mw.ViewPageTarget.js
+++ b/modules/ve/init/mw/targets/ve.init.mw.ViewPageTarget.js
@@ -57,7 +57,7 @@
                                // copy-pasted from ve.Surface except using 
mwLink for the link tool
                                'tools': [
                                        { 'name': 'history', 'items' : ['undo', 
'redo'] },
-                                       { 'name': 'textStyle', 'items' : 
['format'] },
+                                       { 'name': 'textStyle', 'items' : 
['mwFormat'] },
                                        { 'name': 'textStyle', 'items' : 
['bold', 'italic', 'mwLink', 'clear'] },
                                        { 'name': 'list', 'items' : ['number', 
'bullet', 'outdent', 'indent'] }
                                ]
diff --git a/modules/ve/test/index.php b/modules/ve/test/index.php
index abfce08..471ad12 100644
--- a/modules/ve/test/index.php
+++ b/modules/ve/test/index.php
@@ -79,8 +79,6 @@
                <script src="../../ve/dm/nodes/ve.dm.ListItemNode.js"></script>
                <script src="../../ve/dm/nodes/ve.dm.ListNode.js"></script>
                <script src="../../ve/dm/nodes/ve.dm.MetaNode.js"></script>
-               <script src="../../ve/dm/nodes/ve.dm.MWEntityNode.js"></script>
-               <script src="../../ve/dm/nodes/ve.dm.MWMetaNode.js"></script>
                <script src="../../ve/dm/nodes/ve.dm.ParagraphNode.js"></script>
                <script 
src="../../ve/dm/nodes/ve.dm.PreformattedNode.js"></script>
                <script src="../../ve/dm/nodes/ve.dm.TableCellNode.js"></script>
@@ -88,6 +86,10 @@
                <script src="../../ve/dm/nodes/ve.dm.TableRowNode.js"></script>
                <script 
src="../../ve/dm/nodes/ve.dm.TableSectionNode.js"></script>
                <script src="../../ve/dm/nodes/ve.dm.TextNode.js"></script>
+               <script src="../../ve/dm/nodes/ve.dm.MWEntityNode.js"></script>
+               <script src="../../ve/dm/nodes/ve.dm.MWHeadingNode.js"></script>
+               <script src="../../ve/dm/nodes/ve.dm.MWMetaNode.js"></script>
+               <script 
src="../../ve/dm/nodes/ve.dm.MWPreformattedNode.js"></script>
                <script 
src="../../ve/dm/annotations/ve.dm.LinkAnnotation.js"></script>
                <script 
src="../../ve/dm/annotations/ve.dm.MWExternalLinkAnnotation.js"></script>
                <script 
src="../../ve/dm/annotations/ve.dm.MWInternalLinkAnnotation.js"></script>
@@ -160,6 +162,7 @@
                <script 
src="../../ve/ui/tools/buttons/ve.ui.RedoButtonTool.js"></script>
                <script 
src="../../ve/ui/tools/buttons/ve.ui.UndoButtonTool.js"></script>
                <script 
src="../../ve/ui/tools/dropdowns/ve.ui.FormatDropdownTool.js"></script>
+               <script 
src="../../ve/ui/tools/dropdowns/ve.ui.MWFormatDropdownTool.js"></script>
                <script 
src="../../ve/ui/inspectors/ve.ui.LinkInspector.js"></script>
                <script 
src="../../ve/ui/inspectors/ve.ui.MWLinkInspector.js"></script>
 
diff --git a/modules/ve/ui/tools/dropdowns/ve.ui.MWFormatDropdownTool.js 
b/modules/ve/ui/tools/dropdowns/ve.ui.MWFormatDropdownTool.js
new file mode 100644
index 0000000..969ab59
--- /dev/null
+++ b/modules/ve/ui/tools/dropdowns/ve.ui.MWFormatDropdownTool.js
@@ -0,0 +1,87 @@
+/*!
+ * VisualEditor UserInterface MWFormatDropdownTool class.
+ *
+ * @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * UserInterface format dropdown tool.
+ *
+ * @class
+ * @extends ve.ui.FormatDropdownTool
+ * @constructor
+ * @param {ve.ui.Toolbar} toolbar
+ */
+ve.ui.MWFormatDropdownTool = function VeUiMwFormatDropdownTool( toolbar ) {
+       // Parent constructor
+       ve.ui.DropdownTool.call( this, toolbar, 
ve.ui.MWFormatDropdownTool.static.options );
+};
+
+/* Inheritance */
+
+ve.inheritClass( ve.ui.MWFormatDropdownTool, ve.ui.FormatDropdownTool );
+
+/* Static Properties */
+
+ve.ui.MWFormatDropdownTool.static.name = 'format';
+
+/**
+ * Options given to ve.ui.DropdownTool.
+ *
+ * @static
+ * @property
+ * @type {Object[]}
+ */
+ve.ui.MWFormatDropdownTool.static.options = [
+       {
+               'name': 'paragraph',
+               'label': ve.msg( 'visualeditor-formatdropdown-format-paragraph' 
),
+               'type' : 'paragraph'
+       },
+       {
+               'name': 'heading-1',
+               'label': ve.msg( 'visualeditor-formatdropdown-format-heading1' 
),
+               'type' : 'MWheading',
+               'attributes': { 'level': 1 }
+       },
+       {
+               'name': 'heading-2',
+               'label': ve.msg( 'visualeditor-formatdropdown-format-heading2' 
),
+               'type' : 'MWheading',
+               'attributes': { 'level': 2 }
+       },
+       {
+               'name': 'heading-3',
+               'label': ve.msg( 'visualeditor-formatdropdown-format-heading3' 
),
+               'type' : 'MWheading',
+               'attributes': { 'level': 3 }
+       },
+       {
+               'name': 'heading-4',
+               'label': ve.msg( 'visualeditor-formatdropdown-format-heading4' 
),
+               'type' : 'MWheading',
+               'attributes': { 'level': 4 }
+       },
+       {
+               'name': 'heading-5',
+               'label': ve.msg( 'visualeditor-formatdropdown-format-heading5' 
),
+               'type' : 'MWheading',
+               'attributes': { 'level': 5 }
+       },
+       {
+               'name': 'heading-6',
+               'label': ve.msg( 'visualeditor-formatdropdown-format-heading6' 
),
+               'type' : 'MWheading',
+               'attributes': { 'level': 6 }
+       },
+       {
+               'name': 'preformatted',
+               'label': ve.msg( 
'visualeditor-formatdropdown-format-preformatted' ),
+               'type' : 'MWpreformatted'
+       }
+];
+
+/* Registration */
+
+ve.ui.toolFactory.register( 'mwFormat', ve.ui.MWFormatDropdownTool );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3f47e1ae1f5c1415bde58a75385e4bf5f4b8fffc
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to