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