Esanders has uploaded a new change for review.

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


Change subject: Round trip alien extensions correctly when edited
......................................................................

Round trip alien extensions correctly when edited

ce.MWExtensionNode
* Build up the wikitext for round-tripping using jQuery, and pass
  through the attributes from data-mw

dm.MWExtensionNode
* Use a static getExtensionName to correctly get the extension
  name from the dataElement (as the getMatchRdfaTypes hack won't
  work for MWAlienExtensionNode's)

dm.MWAlienExtensionNode
* Implement new static getExtensionName function

Bug: 53543
Change-Id: Id4e83c14ec68c3b3970d05317477f19aaf31abe4
---
M modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js
M modules/ve-mw/dm/nodes/ve.dm.MWAlienExtensionNode.js
M modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js
3 files changed, 21 insertions(+), 12 deletions(-)


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

diff --git a/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js 
b/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js
index 62e0b57..ded1dd8 100644
--- a/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js
+++ b/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js
@@ -47,7 +47,9 @@
 /** */
 ve.ce.MWExtensionNode.prototype.generateContents = function () {
        var deferred = $.Deferred(),
-               extensionName = this.getModel().getExtensionName();
+               extensionNode = $( document.createElement( 
this.getModel().getExtensionName() ) )
+                       .attr( this.getModel().getAttribute( 'mw' ).attrs )
+                       .text( this.getModel().getAttribute( 'mw' ).body.extsrc 
);
 
        $.ajax( {
                'url': mw.util.wikiScript( 'api' ),
@@ -55,10 +57,7 @@
                        'action': 'visualeditor',
                        'paction': 'parsefragment',
                        'page': mw.config.get( 'wgRelevantPageName' ),
-                       'wikitext':
-                               '<' + extensionName + '>' +
-                                       this.getModel().getAttribute( 'mw' 
).body.extsrc +
-                               '</' + extensionName + '>',
+                       'wikitext': extensionNode[0].outerHTML,
                        'token': mw.user.tokens.get( 'editToken' ),
                        'format': 'json'
                },
diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWAlienExtensionNode.js 
b/modules/ve-mw/dm/nodes/ve.dm.MWAlienExtensionNode.js
index 9e07ce4..5a02eac 100644
--- a/modules/ve-mw/dm/nodes/ve.dm.MWAlienExtensionNode.js
+++ b/modules/ve-mw/dm/nodes/ve.dm.MWAlienExtensionNode.js
@@ -34,11 +34,9 @@
 
 ve.dm.MWAlienExtensionNode.static.tagName = 'div';
 
-/* Methods */
-
 /** */
-ve.dm.MWAlienExtensionNode.prototype.getExtensionName = function () {
-       return this.getAttribute('mw').name;
+ve.dm.MWAlienExtensionNode.static.getExtensionName = function ( dataElement ) {
+       return dataElement.attributes.mw.name;
 };
 
 /* Registration */
diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js 
b/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js
index 99c3b1b..b080c17 100644
--- a/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js
+++ b/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js
@@ -85,7 +85,7 @@
                return ve.copyDomElements( 
dataElement.attributes.originalDomElements, doc );
        } else {
                el = doc.createElement( this.tagName );
-               el.setAttribute( 'typeof', this.getMatchRdfaTypes()[0] );
+               el.setAttribute( 'typeof', 'mw:Extension/' + 
this.getExtensionName( dataElement ) );
                el.setAttribute( 'data-mw', JSON.stringify( 
dataElement.attributes.mw ) );
                return [ el ];
        }
@@ -98,6 +98,18 @@
        };
 };
 
+/**
+ * Get the extension's name
+ *
+ * Static version for toDomElements
+ *
+ * @param {Object} dataElement Data element
+ * @returns {string} Extension name
+ */
+ve.dm.MWExtensionNode.static.getExtensionName = function () {
+       return this.extensionName;
+};
+
 /* Methods */
 
 /**
@@ -105,5 +117,5 @@
  * @returns {string} Extension name
  */
 ve.dm.MWExtensionNode.prototype.getExtensionName = function () {
-       return this.constructor.static.extensionName;
-};
\ No newline at end of file
+       return this.constructor.static.getExtensionName( this.element );
+};

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

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