loleaflet/src/control/Control.Menubar.js |    5 -
 loleaflet/src/control/Toolbar.js         |   88 ++++++++++++++++++-------------
 2 files changed, 53 insertions(+), 40 deletions(-)

New commits:
commit ad36e72519f0201c4cca04b2877e1bfe7bac4a60
Author:     Jan Holesovsky <ke...@collabora.com>
AuthorDate: Wed Apr 15 13:13:27 2020 +0200
Commit:     Jan Holesovsky <ke...@collabora.com>
CommitDate: Thu Apr 16 14:19:14 2020 +0200

    Welcome: Rework to handle non-existing welcome message.
    
    And do some small additional amendments, like decrease the retry timeout
    to one day, don't hide the menu entry based on the About dialog, or
    consistently name the cookies.
    
    Change-Id: I4170161a44230b05333798dc68d8c3ffe07e26d4
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/92267
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Jan Holesovsky <ke...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/92352
    Tested-by: Jan Holesovsky <ke...@collabora.com>

diff --git a/loleaflet/src/control/Control.Menubar.js 
b/loleaflet/src/control/Control.Menubar.js
index de54731bd..67b8b0d01 100644
--- a/loleaflet/src/control/Control.Menubar.js
+++ b/loleaflet/src/control/Control.Menubar.js
@@ -1181,7 +1181,7 @@ L.Control.Menubar = L.Control.extend({
                } else if (id === 'about') {
                        this._map.showLOAboutDialog();
                } else if (id === 'latest-updates') {
-                       this._map.showWelcomeDialog();
+                       this._map.showWelcomeDialog(/*calledFromMenu=*/true);
                } else if (id === 'report-an-issue') {
                        
window.open('https://bugs.documentfoundation.org/enter_bug.cgi?product=LibreOffice%20Online',
 '_blank');
                } else if (id === 'inserthyperlink') {
@@ -1304,9 +1304,6 @@ 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 7ba6c0a14..e6f1a7e6f 100644
--- a/loleaflet/src/control/Toolbar.js
+++ b/loleaflet/src/control/Toolbar.js
@@ -344,7 +344,8 @@ L.Map.include({
                });
        },
 
-       showWelcomeDialog: function() {
+       // show the actual welcome dialog with the given data
+       _showWelcomeDialogVex: function(data) {
                var w;
                var iw = window.innerWidth;
                if (iw < 768) {
@@ -356,43 +357,58 @@ L.Map.include({
                else {
                        w = iw / 5 + 590;
                }
+
+               // show the dialog
                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;
+               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);
                        }
-                       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);
+       showWelcomeDialog: function(calledFromMenu) {
+               console.log('showWelcomeDialog, calledFromMenu: ' + 
calledFromMenu);
+               var welcomeLocation = 'welcome/welcome-' + String.locale + 
'.html';
+
+               // try to load the welcome message
+               var map = this;
+               $.get(welcomeLocation)
+                       .done(function(data) {
+                               map._showWelcomeDialogVex(data);
+                               if (!calledFromMenu) {
+                                       var WSDVerCookie = 'WSDWelcomeVersion=' 
+ 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';
                                        document.cookie = WSDVerCookie;
                                }
+                       })
+                       .fail(function() {
+                               // Welcome dialog disabled in loolwsd.xml or 
nonexistant for some other reason
+                               // Let's check back in a day (60 x 60 x 24 = 
86400 seconds)
+                               var welcomeDisabledCookie = 
'WSDWelcomeDisabled=true; max-age=86400; SameSite=Strict';
+                               document.cookie = welcomeDisabledCookie;
+
+                               if (calledFromMenu)
+                                       map._showWelcomeDialogVex(_('We are 
sorry, the information about the latest updates is not available.'));
                        });
-               });
        },
 
        getCookie: function(name) {
@@ -408,10 +424,10 @@ L.Map.include({
        },
 
        shouldWelcome: function() {
-               var currentVerCookie = this.getCookie('WSDWelcomeVer');
-               var newVerCookie = 'WSDWelcomeVer=' + 
this._socket.WSDServer.Version;
-               var welcomeDisabledCookie = 
this.getCookie('loolWelcomeDisabled');
-               var isWelcomeDisabled = welcomeDisabledCookie === 
'loolWelcomeDisabled=true';
+               var currentVerCookie = this.getCookie('WSDWelcomeVersion');
+               var newVerCookie = 'WSDWelcomeVersion=' + 
this._socket.WSDServer.Version;
+               var welcomeDisabledCookie = 
this.getCookie('WSDWelcomeDisabled');
+               var isWelcomeDisabled = welcomeDisabledCookie === 
'WSDWelcomeDisabled=true';
 
                if (currentVerCookie !== newVerCookie && !isWelcomeDisabled && 
!L.Browser.cypressTest) {
                        return true;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to