[Libreoffice-commits] online.git: Branch 'distro/collabora/collabora-online-2-1' - loleaflet/src

Jan Holesovsky kendy at collabora.com
Fri Nov 3 20:46:18 UTC 2017


 loleaflet/src/control/Toolbar.js      |    5 ++++-
 loleaflet/src/core/Socket.js          |   31 +++++++++++++++++++++++++++++--
 loleaflet/src/map/handler/Map.WOPI.js |    2 +-
 3 files changed, 34 insertions(+), 4 deletions(-)

New commits:
commit dd2c950185e3622441929167672df39b9bd40f07
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Fri Nov 3 19:00:58 2017 +0100

    Save As: Reload the newly created document after the Save As.
    
    Change-Id: Ibf979cce4fea13a31ece089394dab296158a159b
    Reviewed-on: https://gerrit.libreoffice.org/44283
    Reviewed-by: Andras Timar <andras.timar at collabora.com>
    Tested-by: Andras Timar <andras.timar at collabora.com>

diff --git a/loleaflet/src/control/Toolbar.js b/loleaflet/src/control/Toolbar.js
index c47e523d..337188a0 100644
--- a/loleaflet/src/control/Toolbar.js
+++ b/loleaflet/src/control/Toolbar.js
@@ -85,6 +85,9 @@ L.Map.include({
 	},
 
 	saveAs: function (url, format, options) {
+		if (url === undefined || url == null) {
+			return;
+		}
 		if (format === undefined || format === null) {
 			format = '';
 		}
@@ -94,7 +97,7 @@ L.Map.include({
 
 		this.showBusy(_('Saving...'), false);
 		this._socket.sendMessage('saveas ' +
-			'url=' + url + ' ' +
+			'url=wopi:' + encodeURIComponent(url) + ' ' +
 			'format=' + format + ' ' +
 			'options=' + options);
 	},
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index e5028b69..cc7e8d6c 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -119,6 +119,12 @@ L.Socket = L.Class.extend({
 		this.socket.send(msg);
 	},
 
+	_getParameterByName: function(url, name) {
+		name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
+		var regex = new RegExp('[\\?&]' + name + '=([^&#]*)'), results = regex.exec(url);
+		return results === null ? '' : results[1].replace(/\+/g, ' ');
+	},
+
 	_onSocketOpen: function () {
 		console.debug('_onSocketOpen:');
 		this._map._serverRecycling = false;
@@ -560,8 +566,29 @@ L.Socket = L.Class.extend({
 		}
 		else if (textMsg.startsWith('saveas:')) {
 			this._map.hideBusy();
-			// var url = command.url; // WOPI url - if needed at some stage
-			// var name = command.name; TODO dialog that the file was saved as "name"
+			if (command !== undefined && command.url !== undefined && command.url !== '') {
+				this.close();
+				var url = command.url;
+				var accessToken = this._getParameterByName(url, 'access_token');
+				var accessTokenTtl = this._getParameterByName(url, 'access_token_ttl');
+
+				if (accessToken !== undefined) {
+					if (accessTokenTtl === undefined) {
+						accessTokenTtl = 0;
+					}
+					this._map.options.docParams = { 'access_token': accessToken, 'access_token_ttl': accessTokenTtl };
+				}
+				else {
+					this._map.options.docParams = {};
+				}
+
+				// setup for loading the new document, and trigger the load
+				var docUrl = url.split('?')[0];
+				this._map.options.doc = docUrl;
+				this._map.options.wopiSrc = encodeURIComponent(docUrl);
+				this._map.loadDocument();
+			}
+			// var name = command.name; - ignored, we get the new name via the wopi's BaseFileName
 		}
 		else if (textMsg.startsWith('statusindicator:')) {
 			//FIXME: We should get statusindicator when saving too, no?
diff --git a/loleaflet/src/map/handler/Map.WOPI.js b/loleaflet/src/map/handler/Map.WOPI.js
index f06e30fc..0201e1d0 100644
--- a/loleaflet/src/map/handler/Map.WOPI.js
+++ b/loleaflet/src/map/handler/Map.WOPI.js
@@ -216,7 +216,7 @@ L.Map.WOPI = L.Handler.extend({
 			if (msg.Values) {
 				if (msg.Values.Filename !== null && msg.Values.Filename !== undefined) {
 					this._map.showBusy(_('Creating copy...'), false);
-					map.saveAs('wopi:' + msg.Values.Filename);
+					map.saveAs(msg.Values.Filename);
 				}
 			}
 		}


More information about the Libreoffice-commits mailing list