jenkins-bot has submitted this change and it was merged.

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
M modules/ve/ce/ve.ce.Surface.js
A modules/ve/dm/nodes/ve.dm.MWImageNode.js
M modules/ve/test/index.php
7 files changed, 133 insertions(+), 1 deletion(-)

Approvals:
  Trevor Parscal: Looks good to me, approved
  jenkins-bot: Verified



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..701a884
--- /dev/null
+++ b/modules/ve/ce/nodes/ve.ce.MWImageNode.js
@@ -0,0 +1,79 @@
+/*!
+ * 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' );
+       this.$.on( {
+               'click': ve.bind( this.onClick, this ),
+               'dragstart': ve.bind( this.onDragstart, this )
+       } );
+
+       // 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 () {
+       // ...
+};
+
+/**
+ * Handle the mouse click.
+ *
+ * @method
+ * @param {jQuery.Event} e Click event
+ */
+ve.ce.MWImageNode.prototype.onClick = function ( e ) {
+       e.preventDefault();
+       return false;
+};
+
+/**
+ * Handle the dragstart.
+ *
+ * @method
+ * @param {jQuery.Event} e Dragstart event
+ */
+ve.ce.MWImageNode.prototype.onDragstart = function ( e ) {
+       e.preventDefault();
+       return false;
+};
+
+/* Registration */
+
+ve.ce.nodeFactory.register( ve.ce.MWImageNode );
diff --git a/modules/ve/ce/ve.ce.Surface.js b/modules/ve/ce/ve.ce.Surface.js
index 3c3fcf4..53b2471 100644
--- a/modules/ve/ce/ve.ce.Surface.js
+++ b/modules/ve/ce/ve.ce.Surface.js
@@ -53,7 +53,7 @@
                'cut': ve.bind( this.onCut, this ),
                'copy': ve.bind( this.onCopy, this ),
                'paste': ve.bind( this.onPaste, this ),
-               'dragover drop': ve.bind( this.onDragoverDrop, this )
+               'dragover drop': ve.bind( this.onDocumentDragoverDrop, this )
        } );
        if ( $.browser.msie ) {
                this.$.on( 'beforepaste', ve.bind( this.onPaste, this ) );
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: merged
Gerrit-Change-Id: Ieecbca8ed864585e8eaa99598d4bfdb5ac9bfec7
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Inez <[email protected]>
Gerrit-Reviewer: Catrope <[email protected]>
Gerrit-Reviewer: Trevor Parscal <[email protected]>
Gerrit-Reviewer: jenkins-bot

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

Reply via email to