Inez has uploaded a new change for review.

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


Change subject: Added support for displaying inline images.
......................................................................

Added support for displaying inline images.

Change-Id: Ieecbca8ed864585e8eaa99598d4bfdb5ac9bfec7
---
M VisualEditor.php
M demos/ve/index.php
A demos/ve/pages/image.html
A modules/ve/ce/nodes/ve.ce.MWImageNode.js
A modules/ve/dm/nodes/ve.dm.MWImageNode.js
M modules/ve/test/index.php
6 files changed, 106 insertions(+), 0 deletions(-)


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

diff --git a/VisualEditor.php b/VisualEditor.php
index 900c1f4..48f5c27 100644
--- a/VisualEditor.php
+++ b/VisualEditor.php
@@ -265,6 +265,7 @@
                        've/dm/nodes/ve.dm.MWEntityNode.js',
                        've/dm/nodes/ve.dm.MWHeadingNode.js',
                        've/dm/nodes/ve.dm.MWPreformattedNode.js',
+                       've/dm/nodes/ve.dm.MWImageNode.js',
 
                        've/dm/annotations/ve.dm.LinkAnnotation.js',
                        've/dm/annotations/ve.dm.MWExternalLinkAnnotation.js',
@@ -310,6 +311,7 @@
                        've/ce/nodes/ve.ce.MWEntityNode.js',
                        've/ce/nodes/ve.ce.MWHeadingNode.js',
                        've/ce/nodes/ve.ce.MWPreformattedNode.js',
+                       've/ce/nodes/ve.ce.MWImageNode.js',
 
                        // ui
                        've/ui/ve.ui.js',
diff --git a/demos/ve/index.php b/demos/ve/index.php
index f3852f3..166e02a 100644
--- a/demos/ve/index.php
+++ b/demos/ve/index.php
@@ -154,6 +154,7 @@
                <script 
src="../../modules/ve/dm/nodes/ve.dm.MWEntityNode.js"></script>
                <script 
src="../../modules/ve/dm/nodes/ve.dm.MWHeadingNode.js"></script>
                <script 
src="../../modules/ve/dm/nodes/ve.dm.MWPreformattedNode.js"></script>
+               <script 
src="../../modules/ve/dm/nodes/ve.dm.MWImageNode.js"></script>
                <script 
src="../../modules/ve/dm/annotations/ve.dm.LinkAnnotation.js"></script>
                <script 
src="../../modules/ve/dm/annotations/ve.dm.MWExternalLinkAnnotation.js"></script>
                <script 
src="../../modules/ve/dm/annotations/ve.dm.MWInternalLinkAnnotation.js"></script>
@@ -194,6 +195,7 @@
                <script 
src="../../modules/ve/ce/nodes/ve.ce.MWEntityNode.js"></script>
                <script 
src="../../modules/ve/ce/nodes/ve.ce.MWHeadingNode.js"></script>
                <script 
src="../../modules/ve/ce/nodes/ve.ce.MWPreformattedNode.js"></script>
+               <script 
src="../../modules/ve/ce/nodes/ve.ce.MWImageNode.js"></script>
                <script src="../../modules/ve/ui/ve.ui.js"></script>
                <script src="../../modules/ve/ui/ve.ui.Context.js"></script>
                <script src="../../modules/ve/ui/ve.ui.Frame.js"></script>
diff --git a/demos/ve/pages/image.html b/demos/ve/pages/image.html
new file mode 100644
index 0000000..06c103c
--- /dev/null
+++ b/demos/ve/pages/image.html
@@ -0,0 +1 @@
+<p>This is an image: <a rel="mw:Image" href="./File:Foo.jpg"><img 
alt="Wiki.png" src="//upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png" 
width="135" height="155"></a>!!!</p>
\ No newline at end of file
diff --git a/modules/ve/ce/nodes/ve.ce.MWImageNode.js 
b/modules/ve/ce/nodes/ve.ce.MWImageNode.js
new file mode 100644
index 0000000..dcce02f
--- /dev/null
+++ b/modules/ve/ce/nodes/ve.ce.MWImageNode.js
@@ -0,0 +1,53 @@
+/*!
+ * VisualEditor ContentEditable MWEntityNode class.
+ *
+ * @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * ContentEditable MediaWiki image node.
+ *
+ * @class
+ * @extends ve.ce.LeafNode
+ * @constructor
+ * @param {ve.dm.MWImageNode} model Model to observe
+ */
+ ve.ce.MWImageNode = function VeCeMWImageNode( model ) {
+       // Parent constructor
+       ve.ce.LeafNode.call( this, model, $( '<a>' ) );
+
+       // DOM Changes
+       this.$.addClass( 've-ce-MWImageNode' );
+       this.$.attr( 'contenteditable', false );
+       this.$img = $( '<img>' ).appendTo( this.$ );
+       this.$img.attr( {
+               'width': this.model.getAttribute( 'width' ),
+               'height': this.model.getAttribute( 'height' ),
+               'src': this.model.getAttribute( 'src' )
+       } );
+
+       // Events
+       this.model.addListenerMethod( this, 'update', 'onUpdate' );
+
+       // Initialization
+       this.onUpdate();
+};
+
+/* Inheritance */
+
+ve.inheritClass( ve.ce.MWImageNode, ve.ce.LeafNode );
+
+/* Static Properties */
+
+ve.ce.MWImageNode.static.name = 'MWimage';
+
+/* Methods */
+
+ve.ce.MWImageNode.prototype.onUpdate = function () {
+       // ...
+};
+
+/* Registration */
+
+ve.ce.nodeFactory.register( ve.ce.MWImageNode );
diff --git a/modules/ve/dm/nodes/ve.dm.MWImageNode.js 
b/modules/ve/dm/nodes/ve.dm.MWImageNode.js
new file mode 100644
index 0000000..6601c84
--- /dev/null
+++ b/modules/ve/dm/nodes/ve.dm.MWImageNode.js
@@ -0,0 +1,46 @@
+/*!
+ * VisualEditor DataModel MWEntityNode class.
+ *
+ * @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * DataModel MediaWiki image node.
+ *
+ * @class
+ * @extends ve.dm.LeafNode
+ * @constructor
+ * @param {number} [length] Length of content data in document
+ * @param {Object} [element] Reference to element in linear model
+ */
+ve.dm.MWImageNode = function VeDmMWImageNode( length, element ) {
+       ve.dm.LeafNode.call( this, 0, element );
+};
+
+/* Inheritance */
+
+ve.inheritClass( ve.dm.MWImageNode, ve.dm.LeafNode );
+
+/* Static Properties */
+
+ve.dm.MWImageNode.static.name = 'MWimage';
+
+ve.dm.MWImageNode.static.isContent = true;
+
+ve.dm.MWImageNode.static.matchRdfaTypes = [ 'mw:Image' ];
+
+ve.dm.MWImageNode.static.toDataElement = function ( domElements ) {
+       return {
+               'type': 'MWimage',
+               'attributes': {
+                       'src': domElements[0].childNodes[0].src,
+                       'width': domElements[0].childNodes[0].width,
+                       'height': domElements[0].childNodes[0].height
+               }
+       };
+};
+
+/* Registration */
+
+ve.dm.modelRegistry.register( ve.dm.MWImageNode );
diff --git a/modules/ve/test/index.php b/modules/ve/test/index.php
index ada2221..a9f5f92 100644
--- a/modules/ve/test/index.php
+++ b/modules/ve/test/index.php
@@ -99,6 +99,7 @@
                <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.MWPreformattedNode.js"></script>
+               <script src="../../ve/dm/nodes/ve.dm.MWImageNode.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>
@@ -139,6 +140,7 @@
                <script src="../../ve/ce/nodes/ve.ce.MWEntityNode.js"></script>
                <script src="../../ve/ce/nodes/ve.ce.MWHeadingNode.js"></script>
                <script 
src="../../ve/ce/nodes/ve.ce.MWPreformattedNode.js"></script>
+               <script src="../../ve/ce/nodes/ve.ce.MWImageNode.js"></script>
                <script src="../../ve/ui/ve.ui.js"></script>
                <script src="../../ve/ui/ve.ui.Context.js"></script>
                <script src="../../ve/ui/ve.ui.Frame.js"></script>

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

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

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

Reply via email to