Esanders has uploaded a new change for review.

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


Change subject: Hieroglyphics support.
......................................................................

Hieroglyphics support.

Mostly as a demonstration of how easy this is with MWExtensionNode...

Change-Id: I9f9e8af501401866bfeecf0eec3690a705fbd4db
---
M VisualEditor.i18n.php
M VisualEditor.php
A modules/ve-mw/ce/nodes/ve.ce.MWHieroNode.js
M modules/ve-mw/ce/styles/ve.ce.Node.css
A modules/ve-mw/dm/nodes/ve.dm.MWHieroNode.js
M modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js
A modules/ve-mw/ui/inspectors/ve.ui.MWHieroInspector.js
A modules/ve-mw/ui/styles/images/icons/hiero.png
A modules/ve-mw/ui/styles/images/icons/hiero.svg
M modules/ve-mw/ui/styles/ve.ui.Icons-raster.css
M modules/ve-mw/ui/styles/ve.ui.Icons-vector.css
A modules/ve-mw/ui/tools/buttons/ve.ui.MWHieroButtonTool.js
12 files changed, 208 insertions(+), 1 deletion(-)


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

diff --git a/VisualEditor.i18n.php b/VisualEditor.i18n.php
index a3b4bf2..bb0fc60 100644
--- a/VisualEditor.i18n.php
+++ b/VisualEditor.i18n.php
@@ -131,6 +131,7 @@
        'visualeditor-linkinspector-suggest-matching-page' => 'Matching page',
        'visualeditor-linkinspector-suggest-new-page' => 'New page',
        'visualeditor-linkinspector-title' => 'Hyperlink',
+       'visualeditor-mwhieroinspector-title' => 'Hieroglypics',
        'visualeditor-mwmathinspector-title' => 'LaTeX',
        'visualeditor-languageinspector-title' => 'Language',
        'visualeditor-languageinspector-block-tooltip' => 'Language block: $1',
@@ -414,6 +415,7 @@
 {{Identical|New page}}',
        'visualeditor-linkinspector-title' => 'Title of the link inspector 
dialog.
 {{Identical|Hyperlink}}',
+       'visualeditor-mwhieroinspector-title' => 'Used as title for 
hieroglypics inspector.',
        'visualeditor-mwmathinspector-title' => 'Used as title for 
MathInspector.
 
 See [[w:LaTeX]].',
diff --git a/VisualEditor.php b/VisualEditor.php
index 9a32d10..0c5ebf1 100644
--- a/VisualEditor.php
+++ b/VisualEditor.php
@@ -711,9 +711,13 @@
                'scripts' => array(
                        've-mw/dm/nodes/ve.dm.MWExtensionNode.js',
                        've-mw/ce/nodes/ve.ce.MWExtensionNode.js',
+                       've-mw/dm/nodes/ve.dm.MWHieroNode.js',
+                       've-mw/ce/nodes/ve.ce.MWHieroNode.js',
                        've-mw/dm/nodes/ve.dm.MWMathNode.js',
                        've-mw/ce/nodes/ve.ce.MWMathNode.js',
                        've-mw/ui/inspectors/ve.ui.MWExtensionInspector.js',
+                       've-mw/ui/inspectors/ve.ui.MWHieroInspector.js',
+                       've-mw/ui/tools/buttons/ve.ui.MWHieroButtonTool.js',
                        've-mw/ui/inspectors/ve.ui.MWMathInspector.js',
                        've-mw/ui/tools/buttons/ve.ui.MWMathButtonTool.js',
                        've/dm/annotations/ve.dm.LanguageAnnotation.js',
@@ -729,6 +733,7 @@
                ),
                'messages' => array(
                        // VE messages needed by code that is only in 
experimental mode
+                       'visualeditor-mwhieroinspector-title',
                        'visualeditor-mwmathinspector-title',
                        'visualeditor-annotationbutton-language-tooltip',
                ),
diff --git a/modules/ve-mw/ce/nodes/ve.ce.MWHieroNode.js 
b/modules/ve-mw/ce/nodes/ve.ce.MWHieroNode.js
new file mode 100644
index 0000000..304f669
--- /dev/null
+++ b/modules/ve-mw/ce/nodes/ve.ce.MWHieroNode.js
@@ -0,0 +1,52 @@
+/*!
+ * VisualEditor ContentEditable MWHieroNode class.
+ *
+ * @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * ContentEditable MediaWiki hieroglyphics node.
+ *
+ * @class
+ * @extends ve.ce.MWExtensionNode
+ *
+ * @constructor
+ * @param {ve.dm.MWHieroNode} model Model to observe
+ * @param {Object} [config] Config options
+ */
+ve.ce.MWHieroNode = function VeCeMWHieroNode( model, config ) {
+       // Parent constructor
+       ve.ce.MWExtensionNode.call( this, model, config );
+
+       // DOM Changes
+       this.$.addClass( 've-ce-mwHieroNode mw-hiero-outer' );
+};
+
+/* Inheritance */
+
+ve.inheritClass( ve.ce.MWHieroNode, ve.ce.MWExtensionNode );
+
+/* Static Properties */
+
+ve.ce.MWHieroNode.static.name = 'mwHiero';
+
+ve.ce.MWHieroNode.static.tagName = 'div';
+
+ve.ce.MWHieroNode.static.extensionTagWrapper = 'hiero';
+
+/* Methods */
+
+/** */
+ve.ce.MWHieroNode.prototype.onParseSuccess = function ( deferred, response ) {
+       var data = response.visualeditor, contentNodes = $( data.content 
).get();
+       deferred.resolve( contentNodes );
+       // Rerender after image load
+       this.$.find( 'img' ).on( 'load', ve.bind( function () {
+               this.emit( 'rerender' );
+       }, this ) );
+};
+
+/* Registration */
+
+ve.ce.nodeFactory.register( ve.ce.MWHieroNode );
diff --git a/modules/ve-mw/ce/styles/ve.ce.Node.css 
b/modules/ve-mw/ce/styles/ve.ce.Node.css
index cca422b..32226ea 100644
--- a/modules/ve-mw/ce/styles/ve.ce.Node.css
+++ b/modules/ve-mw/ce/styles/ve.ce.Node.css
@@ -50,3 +50,9 @@
 .ve-ce-mwMathNode {
        display: inline-block;
 }
+
+/* ve.ce.MWHieroNode */
+
+.ve-ce-mwHieroNode {
+       display: table;
+}
diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWHieroNode.js 
b/modules/ve-mw/dm/nodes/ve.dm.MWHieroNode.js
new file mode 100644
index 0000000..d5352a1
--- /dev/null
+++ b/modules/ve-mw/dm/nodes/ve.dm.MWHieroNode.js
@@ -0,0 +1,35 @@
+/*!
+ * VisualEditor DataModel MWHieroNode class.
+ *
+ * @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * DataModel MediaWiki hieroglyphics node.
+ *
+ * @class
+ * @extends ve.dm.MWExtensionNode
+ *
+ * @constructor
+ */
+ve.dm.MWHieroNode = function VeDmMWHieroNode( length, element ) {
+       // Parent constructor
+       ve.dm.MWExtensionNode.call( this, 0, element );
+};
+
+/* Inheritance */
+
+ve.inheritClass( ve.dm.MWHieroNode, ve.dm.MWExtensionNode );
+
+/* Static members */
+
+ve.dm.MWHieroNode.static.name = 'mwHiero';
+
+ve.dm.MWHieroNode.static.matchRdfaTypes = [ 'mw:Extension/hiero' ];
+
+ve.dm.MWHieroNode.static.tagName = 'img';
+
+/* Registration */
+
+ve.dm.modelRegistry.register( ve.dm.MWHieroNode );
diff --git a/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js 
b/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js
index 600c83c..1c26e5a 100644
--- a/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js
+++ b/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js
@@ -172,7 +172,7 @@
        { 'items': [ 'mwFormat' ] },
        { 'items': [ 'bold', 'italic', 'mwLink', 'language', 'code', 'clear' ] 
},
        { 'items': [ 'number', 'bullet', 'outdent', 'indent' ] },
-       { 'items': [ 'mwMediaInsert', 'mwReference', 'mwReferenceList', 
'mwTransclusion', 'mwMath' ] }
+       { 'items': [ 'mwMediaInsert', 'mwReference', 'mwReferenceList', 
'mwTransclusion', 'mwMath', 'mwHiero' ] }
 ];
 
 ve.init.mw.ViewPageTarget.static.surfaceCommands = [
diff --git a/modules/ve-mw/ui/inspectors/ve.ui.MWHieroInspector.js 
b/modules/ve-mw/ui/inspectors/ve.ui.MWHieroInspector.js
new file mode 100644
index 0000000..571098d
--- /dev/null
+++ b/modules/ve-mw/ui/inspectors/ve.ui.MWHieroInspector.js
@@ -0,0 +1,49 @@
+/*!
+ * VisualEditor UserInterface MWHieroInspector class.
+ *
+ * @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * MediaWiki hieroglyphics inspector.
+ *
+ * @class
+ * @extends ve.ui.MWExtensionInspector
+ *
+ * @constructor
+ * @param {ve.ui.Surface} surface
+ * @param {Object} [config] Config options
+ */
+ve.ui.MWHieroInspector = function VeUiMWHieroInspector( surface, config ) {
+       // Parent constructor
+       ve.ui.MWExtensionInspector.call( this, surface, config );
+};
+
+/* Inheritance */
+
+ve.inheritClass( ve.ui.MWHieroInspector, ve.ui.MWExtensionInspector );
+
+/* Static properties */
+
+ve.ui.MWHieroInspector.static.icon = 'hiero';
+
+ve.ui.MWHieroInspector.static.titleMessage = 
'visualeditor-mwhieroinspector-title';
+
+ve.ui.MWHieroInspector.static.nodeView = ve.ce.MWHieroNode;
+
+ve.ui.MWHieroInspector.static.nodeModel = ve.dm.MWHieroNode;
+
+
+/* Methods */
+
+ve.ui.MWHieroInspector.prototype.initialize = function () {
+       // Parent method
+       ve.ui.MWExtensionInspector.prototype.initialize.call( this );
+
+       this.input.$.addClass( 've-ui-mwHieroInspector-input' );
+};
+
+/* Registration */
+
+ve.ui.inspectorFactory.register( 'mwHieroInspector', ve.ui.MWHieroInspector );
diff --git a/modules/ve-mw/ui/styles/images/icons/hiero.png 
b/modules/ve-mw/ui/styles/images/icons/hiero.png
new file mode 100644
index 0000000..85b0364
--- /dev/null
+++ b/modules/ve-mw/ui/styles/images/icons/hiero.png
Binary files differ
diff --git a/modules/ve-mw/ui/styles/images/icons/hiero.svg 
b/modules/ve-mw/ui/styles/images/icons/hiero.svg
new file mode 100644
index 0000000..bb067fd
--- /dev/null
+++ b/modules/ve-mw/ui/styles/images/icons/hiero.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; x="0px" y="0px"
+    width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 
24 24" xml:space="preserve">
+<g id="hier" opacity="0.75">
+   <path id="ankh" d="m 12.155762,5.0626123 c -1.422596,0.00665 
-3.4473373,0.5629668 -2.5859133,3.3795367 0.4025152,1.3160865 
1.3835923,2.350855 2.1752103,3.294576 L 7.5625762,11.545439 c 
0.1261282,0.410699 0.1139354,0.820979 0,1.231677 l 4.1824828,-0.182339 
-0.282322,6.342715 c 0.5613,-0.149759 1.021297,-0.09248 1.463931,0 l 
-0.257982,-6.342715 3.768738,0.182339 c -0.102264,-0.410698 -0.136883,-0.820978 
0,-1.231677 l -3.768738,0.191286 c 0.700351,-1.022208 1.682698,-1.9283712 
2.035875,-3.4232588 0.713756,-3.0211291 -1.173127,-3.2411861 
-2.481871,-3.2508539 -0.02227,-1.653e-4 -0.04433,-1.109e-4 -0.06693,0 z m 
-0.04199,0.7805431 c 1.499695,-0.00996 3.037857,1.7516003 0.115613,5.3142466 C 
9.1528562,7.6346542 10.614082,5.8531299 12.113775,5.8431554 z"/>
+</g>
+</svg>
diff --git a/modules/ve-mw/ui/styles/ve.ui.Icons-raster.css 
b/modules/ve-mw/ui/styles/ve.ui.Icons-raster.css
index e204f75..730d3b1 100644
--- a/modules/ve-mw/ui/styles/ve.ui.Icons-raster.css
+++ b/modules/ve-mw/ui/styles/ve.ui.Icons-raster.css
@@ -5,6 +5,11 @@
  * @license The MIT License (MIT); see LICENSE.txt
  */
 
+.ve-ui-icon-hiero {
+       /* @embed */
+       background-image: url(images/icons/hiero.png);
+}
+
 .ve-ui-icon-language {
        /* @embed */
        background-image: url(images/icons/language.png);
diff --git a/modules/ve-mw/ui/styles/ve.ui.Icons-vector.css 
b/modules/ve-mw/ui/styles/ve.ui.Icons-vector.css
index 8467ed8..fe3b058 100644
--- a/modules/ve-mw/ui/styles/ve.ui.Icons-vector.css
+++ b/modules/ve-mw/ui/styles/ve.ui.Icons-vector.css
@@ -5,6 +5,11 @@
  * @license The MIT License (MIT); see LICENSE.txt
  */
 
+.ve-ui-icon-hiero {
+       /* @embed */
+       background-image: url(images/icons/hiero.svg);
+}
+
 .ve-ui-icon-language {
        /* @embed */
        background-image: url(images/icons/language.svg);
diff --git a/modules/ve-mw/ui/tools/buttons/ve.ui.MWHieroButtonTool.js 
b/modules/ve-mw/ui/tools/buttons/ve.ui.MWHieroButtonTool.js
new file mode 100644
index 0000000..5f7b6cd
--- /dev/null
+++ b/modules/ve-mw/ui/tools/buttons/ve.ui.MWHieroButtonTool.js
@@ -0,0 +1,40 @@
+/*!
+ * VisualEditor UserInterface MWHieroButtonTool class.
+ *
+ * @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * UserInterface MediaWiki hieroglyphics button tool.
+ *
+ * @class
+ * @extends ve.ui.InspectorButtonTool
+ * @constructor
+ * @param {ve.ui.Toolbar} toolbar
+ * @param {Object} [config] Config options
+ */
+ve.ui.MWHieroButtonTool = function VeUiMWHieroButtonTool( toolbar, config ) {
+   // Parent constructor
+   ve.ui.InspectorButtonTool.call( this, toolbar, config );
+};
+
+/* Inheritance */
+
+ve.inheritClass( ve.ui.MWHieroButtonTool, ve.ui.InspectorButtonTool );
+
+/* Static Properties */
+
+ve.ui.MWHieroButtonTool.static.name = 'mwHiero';
+
+ve.ui.MWHieroButtonTool.static.icon = 'hiero';
+
+ve.ui.MWHieroButtonTool.static.titleMessage = 
'visualeditor-mwhieroinspector-title';
+
+ve.ui.MWHieroButtonTool.static.inspector = 'mwHieroInspector';
+
+ve.ui.MWHieroButtonTool.static.modelClasses = [ ve.dm.MWHieroNode ];
+
+/* Registration */
+
+ve.ui.toolFactory.register( 'mwHiero', ve.ui.MWHieroButtonTool );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9f9e8af501401866bfeecf0eec3690a705fbd4db
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