[MediaWiki-commits] [Gerrit] mediawiki...VisualEditor[master]: Preserve data when switching from NWE to VE

2016-08-30 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged.

Change subject: Preserve data when switching from NWE to VE
..


Preserve data when switching from NWE to VE

Bug: T143917
Change-Id: I910e731914bd71fdb131dae79d233d4306facc5d
---
M modules/ve-mw/init/targets/ve.init.mw.DesktopWikitextArticleTarget.js
M modules/ve-mw/init/ve.init.mw.ArticleTargetLoader.js
2 files changed, 32 insertions(+), 5 deletions(-)

Approvals:
  Alex Monk: Looks good to me, approved
  jenkins-bot: Verified



diff --git 
a/modules/ve-mw/init/targets/ve.init.mw.DesktopWikitextArticleTarget.js 
b/modules/ve-mw/init/targets/ve.init.mw.DesktopWikitextArticleTarget.js
index 97290df..1eb0839 100644
--- a/modules/ve-mw/init/targets/ve.init.mw.DesktopWikitextArticleTarget.js
+++ b/modules/ve-mw/init/targets/ve.init.mw.DesktopWikitextArticleTarget.js
@@ -75,11 +75,28 @@
this.reloadSurface( dataPromise );
 };
 
+/**
+ * Switch to the visual editor.
+ */
 ve.init.mw.DesktopWikitextArticleTarget.prototype.switchToVisualEditor = 
function () {
+   var dataPromise;
+
this.setMode( 'visual' );
-   this.reloadSurface();
+
+   dataPromise = mw.libs.ve.targetLoader.requestParsoidData(
+   this.pageName,
+   this.requestedRevId,
+   this.constructor.name,
+   this.edited,
+   this.getWikitextFromDocument( this.getSurface().getDom() )
+   );
+
+   this.reloadSurface( dataPromise );
 };
 
+/**
+ * Reload the target surface in the new editor mode
+ */
 ve.init.mw.DesktopWikitextArticleTarget.prototype.reloadSurface = function ( 
dataPromise ) {
var target = this;
// Create progress - will be discarded when surface is destroyed.
@@ -228,7 +245,7 @@
if ( this.mode === 'source' ) {
data = ve.extendObject( {}, options, { format: 'json' } );
 
-   data.wikitext = Array.prototype.map.call( doc.body.children, 
function ( p ) { return p.innerText; } ).join( '\n' );
+   data.wikitext = this.getWikitextFromDocument( doc );
 
return new mw.Api().post( data, { contentType: 
'multipart/form-data' } );
} else {
@@ -237,6 +254,16 @@
}
 };
 
+/**
+ * Get wikitext for the whole document
+ *
+ * @param {ve.dm.Document} doc Document
+ * @return {string} Wikitext
+ */
+ve.init.mw.DesktopWikitextArticleTarget.prototype.getWikitextFromDocument = 
function ( doc ) {
+   return Array.prototype.map.call( doc.body.children, function ( p ) { 
return p.innerText; } ).join( '\n' );
+};
+
 /* Registration */
 
 ve.init.mw.targetFactory.register( ve.init.mw.DesktopWikitextArticleTarget );
diff --git a/modules/ve-mw/init/ve.init.mw.ArticleTargetLoader.js 
b/modules/ve-mw/init/ve.init.mw.ArticleTargetLoader.js
index c1ded97..4640340 100644
--- a/modules/ve-mw/init/ve.init.mw.ArticleTargetLoader.js
+++ b/modules/ve-mw/init/ve.init.mw.ArticleTargetLoader.js
@@ -113,7 +113,7 @@
}
},
 
-   requestParsoidData: function ( pageName, oldid, targetName, 
modified ) {
+   requestParsoidData: function ( pageName, oldid, targetName, 
modified, wikitext ) {
var start, apiXhr, restbaseXhr, apiPromise, 
restbasePromise, dataPromise, pageHtmlUrl,
switched = false,
fromEditedState = false,
@@ -151,7 +151,7 @@
ve.track( 'trace.restbaseLoad.enter' );
if (
conf.fullRestbaseUrl &&
-   $( '#wpTextbox1' ).textSelection( 
'getContents' ) &&
+   ( wikitext || ( wikitext = $( 
'#wpTextbox1' ).textSelection( 'getContents' ) ) ) &&
!$( '[name=wpSection]' ).val()
) {
switched = true;
@@ -166,7 +166,7 @@
data: {
title: pageName,
oldid: oldid,
-   wikitext: $( 
'#wpTextbox1' ).textSelection( 'getContents' ),
+   wikitext: wikitext,
stash: 'true'
},
// Should be synchronised with 
ApiVisualEditor.php

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I910e731914bd71fdb131dae79d233d4306facc5d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: 

[MediaWiki-commits] [Gerrit] mediawiki...VisualEditor[master]: Preserve data when switching from NWE to VE

2016-08-25 Thread Esanders (Code Review)
Esanders has uploaded a new change for review.

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

Change subject: Preserve data when switching from NWE to VE
..

Preserve data when switching from NWE to VE

Bug: T143917
Change-Id: I910e731914bd71fdb131dae79d233d4306facc5d
---
M modules/ve-mw/init/targets/ve.init.mw.DesktopWikitextArticleTarget.js
M modules/ve-mw/init/ve.init.mw.ArticleTargetLoader.js
2 files changed, 32 insertions(+), 5 deletions(-)


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

diff --git 
a/modules/ve-mw/init/targets/ve.init.mw.DesktopWikitextArticleTarget.js 
b/modules/ve-mw/init/targets/ve.init.mw.DesktopWikitextArticleTarget.js
index 97290df..1eb0839 100644
--- a/modules/ve-mw/init/targets/ve.init.mw.DesktopWikitextArticleTarget.js
+++ b/modules/ve-mw/init/targets/ve.init.mw.DesktopWikitextArticleTarget.js
@@ -75,11 +75,28 @@
this.reloadSurface( dataPromise );
 };
 
+/**
+ * Switch to the visual editor.
+ */
 ve.init.mw.DesktopWikitextArticleTarget.prototype.switchToVisualEditor = 
function () {
+   var dataPromise;
+
this.setMode( 'visual' );
-   this.reloadSurface();
+
+   dataPromise = mw.libs.ve.targetLoader.requestParsoidData(
+   this.pageName,
+   this.requestedRevId,
+   this.constructor.name,
+   this.edited,
+   this.getWikitextFromDocument( this.getSurface().getDom() )
+   );
+
+   this.reloadSurface( dataPromise );
 };
 
+/**
+ * Reload the target surface in the new editor mode
+ */
 ve.init.mw.DesktopWikitextArticleTarget.prototype.reloadSurface = function ( 
dataPromise ) {
var target = this;
// Create progress - will be discarded when surface is destroyed.
@@ -228,7 +245,7 @@
if ( this.mode === 'source' ) {
data = ve.extendObject( {}, options, { format: 'json' } );
 
-   data.wikitext = Array.prototype.map.call( doc.body.children, 
function ( p ) { return p.innerText; } ).join( '\n' );
+   data.wikitext = this.getWikitextFromDocument( doc );
 
return new mw.Api().post( data, { contentType: 
'multipart/form-data' } );
} else {
@@ -237,6 +254,16 @@
}
 };
 
+/**
+ * Get wikitext for the whole document
+ *
+ * @param {ve.dm.Document} doc Document
+ * @return {string} Wikitext
+ */
+ve.init.mw.DesktopWikitextArticleTarget.prototype.getWikitextFromDocument = 
function ( doc ) {
+   return Array.prototype.map.call( doc.body.children, function ( p ) { 
return p.innerText; } ).join( '\n' );
+};
+
 /* Registration */
 
 ve.init.mw.targetFactory.register( ve.init.mw.DesktopWikitextArticleTarget );
diff --git a/modules/ve-mw/init/ve.init.mw.ArticleTargetLoader.js 
b/modules/ve-mw/init/ve.init.mw.ArticleTargetLoader.js
index c1ded97..4640340 100644
--- a/modules/ve-mw/init/ve.init.mw.ArticleTargetLoader.js
+++ b/modules/ve-mw/init/ve.init.mw.ArticleTargetLoader.js
@@ -113,7 +113,7 @@
}
},
 
-   requestParsoidData: function ( pageName, oldid, targetName, 
modified ) {
+   requestParsoidData: function ( pageName, oldid, targetName, 
modified, wikitext ) {
var start, apiXhr, restbaseXhr, apiPromise, 
restbasePromise, dataPromise, pageHtmlUrl,
switched = false,
fromEditedState = false,
@@ -151,7 +151,7 @@
ve.track( 'trace.restbaseLoad.enter' );
if (
conf.fullRestbaseUrl &&
-   $( '#wpTextbox1' ).textSelection( 
'getContents' ) &&
+   ( wikitext || ( wikitext = $( 
'#wpTextbox1' ).textSelection( 'getContents' ) ) ) &&
!$( '[name=wpSection]' ).val()
) {
switched = true;
@@ -166,7 +166,7 @@
data: {
title: pageName,
oldid: oldid,
-   wikitext: $( 
'#wpTextbox1' ).textSelection( 'getContents' ),
+   wikitext: wikitext,
stash: 'true'
},
// Should be synchronised with 
ApiVisualEditor.php

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I910e731914bd71fdb131dae79d233d4306facc5d
Gerrit-PatchSet: 1
Gerrit-Project: