[Libreoffice-commits] online.git: loleaflet/src

Muhammet Kara (via logerrit) logerrit at kemper.freedesktop.org
Thu Apr 16 09:31:09 UTC 2020


 loleaflet/src/control/Control.Menubar.js |   13 ++++-
 loleaflet/src/control/Toolbar.js         |   76 +++++++++++++++++++++++++++++++
 loleaflet/src/layer/tile/TileLayer.js    |    3 +
 3 files changed, 91 insertions(+), 1 deletion(-)

New commits:
commit 7e9cd6e09310b337ed1040fae6c301f0e495dab1
Author:     Muhammet Kara <muhammet.kara at collabora.com>
AuthorDate: Mon Mar 30 14:30:20 2020 +0300
Commit:     Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Apr 16 11:30:50 2020 +0200

    Welcome: Add Welcome dialog
    
     * Whenever a new version of Online is deployed,
       users will be shown a welcome dialog with latest updates,
       release notes etc.
     * Location of the content for the welcome dialog can be
       set up in loolwsd.xml, and that file will be served to
       the client by loolwsd (That part handled in a prior patch)
     * If the welcome dialog is disabled in the config, or the welcome
       file (at welcome/welcome-$LANG.html by default) does not exist,
       then we will disable the checks for a week
     * A command to show the welcome dialog has also been added under
       the help menu as 'Latest Updates'
    
    Change-Id: I490f4ed92920bbcc9308a53014a3fb5a1d477a54
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/92266
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/loleaflet/src/control/Control.Menubar.js b/loleaflet/src/control/Control.Menubar.js
index 8d77a6dc3..1d31eee93 100644
--- a/loleaflet/src/control/Control.Menubar.js
+++ b/loleaflet/src/control/Control.Menubar.js
@@ -241,6 +241,7 @@ L.Control.Menubar = L.Control.extend({
 				{name: _('Online Help'), id: 'online-help', type: 'action', iosapp: false},
 				{name: _('Keyboard shortcuts'), id: 'keyboard-shortcuts', type: 'action', iosapp: false},
 				{name: _('Report an issue'), id: 'report-an-issue', type: 'action', iosapp: false},
+				{name: _('Latest Updates'), id: 'latest-updates', type: 'action'},
 				{name: _('About'), id: 'about', type: 'action'}]
 			},
 			{name: _('Last modification'), id: 'last-mod', type: 'action', tablet: false}
@@ -342,6 +343,7 @@ L.Control.Menubar = L.Control.extend({
 				{name: _('Online Help'), id: 'online-help', type: 'action', iosapp: false},
 				{name: _('Keyboard shortcuts'), id: 'keyboard-shortcuts', type: 'action', iosapp: false},
 				{name: _('Report an issue'), id: 'report-an-issue', type: 'action', iosapp: false},
+				{name: _('Latest Updates'), id: 'latest-updates', type: 'action'},
 				{name: _('About'), id: 'about', type: 'action'}]
 			},
 			{name: _('Last modification'), id: 'last-mod', type: 'action', tablet: false}
@@ -458,6 +460,7 @@ L.Control.Menubar = L.Control.extend({
 				{name: _('Online Help'), id: 'online-help', type: 'action', iosapp: false},
 				{name: _('Keyboard shortcuts'), id: 'keyboard-shortcuts', type: 'action', iosapp: false},
 				{name: _('Report an issue'), id: 'report-an-issue', type: 'action', iosapp: false},
+				{name: _('Latest Updates'), id: 'latest-updates', type: 'action'},
 				{name: _('About'), id: 'about', type: 'action'}]
 			},
 			{name: _('Last modification'), id: 'last-mod', type: 'action', tablet: false}
@@ -510,6 +513,7 @@ L.Control.Menubar = L.Control.extend({
 				{name: _UNO('.uno:ShowResolvedAnnotations', 'text'), id: 'showresolved', type: 'action'},
 			]
 			},
+			{name: _('Latest Updates'), id: 'latest-updates', type: 'action'},
 			{name: _('About'), id: 'about', type: 'action'},
 		],
 
@@ -556,6 +560,7 @@ L.Control.Menubar = L.Control.extend({
 			{name: _UNO('.uno:FullScreen', 'presentation'), id: 'fullscreen', type: 'action', mobileapp: false},
 			{uno: '.uno:SpellOnline'},
 			{name: _('Fullscreen presentation'), id: 'fullscreen-presentation', type: 'action'},
+			{name: _('Latest Updates'), id: 'latest-updates', type: 'action'},
 			{name: _('About'), id: 'about', type: 'action'},
 		],
 
@@ -619,6 +624,7 @@ L.Control.Menubar = L.Control.extend({
 			]},
 			{uno: '.uno:SpellOnline'},
 			{name: _UNO('.uno:FullScreen', 'spreadsheet'), id: 'fullscreen', type: 'action', mobileapp: false},
+			{name: _('Latest Updates'), id: 'latest-updates', type: 'action'},
 			{name: _('About'), id: 'about', type: 'action'},
 		],
 
@@ -706,7 +712,7 @@ L.Control.Menubar = L.Control.extend({
 			'downloadas-odp', 'downloadas-ppt', 'downloadas-pptx', 'print', // file menu
 			'downloadas-ods', 'downloadas-xls', 'downloadas-xlsx', 'closedocument', // file menu
 			'fullscreen', 'zoomin', 'zoomout', 'zoomreset', 'showresolved', // view menu
-			'about', 'keyboard-shortcuts', 'online-help', 'report-an-issue' // help menu
+			'about', 'keyboard-shortcuts', 'latest-updates', 'online-help', 'report-an-issue' // help menu
 		]
 	},
 
@@ -1175,6 +1181,8 @@ L.Control.Menubar = L.Control.extend({
 			});
 		} else if (id === 'about') {
 			this._map.showLOAboutDialog();
+		} else if (id === 'latest-updates') {
+			this._map.showWelcomeDialog();
 		} else if (id === 'report-an-issue') {
 			window.open('https://bugs.documentfoundation.org/enter_bug.cgi?product=LibreOffice%20Online', '_blank');
 		} else if (id === 'inserthyperlink') {
@@ -1297,6 +1305,9 @@ L.Control.Menubar = L.Control.extend({
 		if (menuItem.id === 'about' && (L.DomUtil.get('about-dialog') === null)) {
 			return false;
 		}
+		if (menuItem.id === 'latest-updates' && (L.DomUtil.get('about-dialog') === null)) {
+			return false;
+		}
 		if (menuItem.id === 'signdocument' && (L.DomUtil.get('document-signing-bar') === null)) {
 			return false;
 		}
diff --git a/loleaflet/src/control/Toolbar.js b/loleaflet/src/control/Toolbar.js
index d1e4bdafd..7ba6c0a14 100644
--- a/loleaflet/src/control/Toolbar.js
+++ b/loleaflet/src/control/Toolbar.js
@@ -344,6 +344,82 @@ L.Map.include({
 		});
 	},
 
+	showWelcomeDialog: function() {
+		var w;
+		var iw = window.innerWidth;
+		if (iw < 768) {
+			w = iw - 30;
+		}
+		else if (iw > 1920) {
+			w = 960;
+		}
+		else {
+			w = iw / 5 + 590;
+		}
+		var map = this;
+		var welcomeLocation = 'welcome/welcome-' + String.locale + '.html';
+		$.get(welcomeLocation, function(data, textStatus) {
+			if (textStatus !== 'success') {
+				// Welcome dialog disabled in loolwsd.xml or nonexistant for some other reason
+				// Let's check back in a week (60 x 60 x 24 x 7 = 604800 seconds)
+				var welcomeDisabledCookie = 'loolWelcomeDisabled=true; max-age=604800; SameSite=Strict';
+				document.cookie = welcomeDisabledCookie;
+				return;
+			}
+			var WSDVerCookie = 'WSDWelcomeVer=' + map._socket.WSDServer.Version;
+			// Cookie will not expire for a year, and it will not be sent to other domains
+			WSDVerCookie += '; max-age=31536000; SameSite=Strict';
+			vex.open({
+				unsafeContent: data,
+				showCloseButton: true,
+				escapeButtonCloses: true,
+				overlayClosesOnClick: true,
+				closeAllOnPopState: false,
+				buttons: {},
+				afterOpen: function() {
+					var $vexContent = $(this.contentEl);
+					this.contentEl.style.width = w + 'px';
+					map.enable(false);
+
+					$vexContent.attr('tabindex', -1);
+					$vexContent.focus();
+					// workaround for https://github.com/HubSpot/vex/issues/43
+					$('.vex-overlay').css({ 'pointer-events': 'none'});
+				},
+				beforeClose: function () {
+					map.focus();
+					map.enable(true);
+					document.cookie = WSDVerCookie;
+				}
+			});
+		});
+	},
+
+	getCookie: function(name) {
+		var cookies = document.cookie.split(';');
+		for (var i = 0; i < cookies.length; i++) {
+			var cookie = cookies[i].trim();
+			if (cookie.indexOf(name) === 0) {
+				return cookie;
+			}
+		}
+
+		return '';
+	},
+
+	shouldWelcome: function() {
+		var currentVerCookie = this.getCookie('WSDWelcomeVer');
+		var newVerCookie = 'WSDWelcomeVer=' + this._socket.WSDServer.Version;
+		var welcomeDisabledCookie = this.getCookie('loolWelcomeDisabled');
+		var isWelcomeDisabled = welcomeDisabledCookie === 'loolWelcomeDisabled=true';
+
+		if (currentVerCookie !== newVerCookie && !isWelcomeDisabled && !L.Browser.cypressTest) {
+			return true;
+		}
+
+		return false;
+	},
+
 	showLOAboutDialog: function() {
 		// Move the div sitting in 'body' as vex-content and make it visible
 		var content = $('#about-dialog').clone().css({display: 'block'});
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 9bd68f421..dab4a0790 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -318,6 +318,9 @@ L.TileLayer = L.GridLayer.extend({
 				if (e.statusType === 'alltilesloaded' && this._docType === 'spreadsheet') {
 					this._onCellCursorShift(true);
 				}
+				if (e.statusType === 'alltilesloaded' && this._map.shouldWelcome()) {
+					this._map.showWelcomeDialog();
+				}
 			},
 		this);
 


More information about the Libreoffice-commits mailing list