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