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