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