loleaflet/src/core/Socket.js | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-)
New commits: commit 98fbc0c4a4718255fb0e2aafaa36df2be279d1fb Author: Pranav Kant <pran...@collabora.co.uk> Date: Thu Feb 4 23:13:52 2016 +0530 loleaflet: Handle password protected documents Change-Id: Ife7923869710999de83365dc2c6be33ed42c2f3b Reviewed-on: https://gerrit.libreoffice.org/21895 Reviewed-by: Andras Timar <andras.ti...@collabora.com> Tested-by: Andras Timar <andras.ti...@collabora.com> diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js index cf8a531..f3c7dd7 100644 --- a/loleaflet/src/core/Socket.js +++ b/loleaflet/src/core/Socket.js @@ -2,7 +2,7 @@ * L.Socket contains methods for the communication with the server */ -/* global _ */ +/* global _ vex */ L.Socket = L.Class.extend({ ProtocolVersionNumber: '0.1', @@ -63,6 +63,9 @@ L.Socket = L.Class.extend({ if (this._map.options.timestamp) { msg += ' timestamp=' + this._map.options.timestamp; } + if (this._map._docPassword) { + msg += ' password=' + this._map._docPassword; + } if (this._map.options.renderingOptions) { var options = { 'rendering': this._map.options.renderingOptions @@ -95,6 +98,7 @@ L.Socket = L.Class.extend({ textMsg = String.fromCharCode.apply(null, imgBytes.subarray(0, index)); } + var command = this.parseServerCmd(textMsg); if (textMsg.startsWith('loolserver ')) { // This must be the first message. if (this._map._docLayer) { @@ -105,6 +109,39 @@ L.Socket = L.Class.extend({ this.fire('error', {msg: _('Unsupported server version.')}); } } + else if (textMsg.startsWith('error:') && command.errorCmd === 'load') { + var errorKind = command.errorKind; + var passwordNeeded = false; + if (errorKind.startsWith('passwordrequired')) { + passwordNeeded = true; + var msg = ''; + var passwordType = errorKind.split(':')[1]; + if (passwordType === 'to-view') { + msg += _('Document requires password to view.'); + } + else if (passwordType === 'to-modify') { + msg += _('Document requires password to modify.'); + msg += ' '; + msg += _('Hit Cancel to open in view-only mode.'); + } + } else if (errorKind.startsWith('wrongpassword')) { + passwordNeeded = true; + msg = _('Wrong password provided. Please try again.'); + } + + if (passwordNeeded) { + // Ask the user for password + vex.dialog.open({ + message: msg, + input: '<input name="password" type="password" required />', + callback: L.bind(function(data) { + this._map._docPassword = data.password; + this._onOpen(); + }, this) + }); + return; + } + } else if (!textMsg.startsWith('tile:') && !textMsg.startsWith('renderfont:')) { // log the tile msg separately as we need the tile coordinates L.Log.log(textMsg, L.INCOMING); @@ -135,7 +172,6 @@ L.Socket = L.Class.extend({ tileHeightTwips = Math.round(tileHeightTwips * scale); } - var command = this.parseServerCmd(textMsg); var docLayer = null; if (command.type === 'text') { docLayer = new L.WriterTileLayer('', { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits