loleaflet/js/toolbar.js                      |    2 -
 loleaflet/src/control/Control.AlertDialog.js |   47 +++++++++++++++++++++++++++
 loleaflet/src/errormessages.js               |    2 +
 3 files changed, 50 insertions(+), 1 deletion(-)

New commits:
commit 1767dcdb2a8195ba3b40bcf67876e3425fc4ae7c
Author:     Szymon Kłos <szymon.k...@collabora.com>
AuthorDate: Thu Mar 28 11:49:56 2019 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Apr 9 14:13:20 2019 +0200

    Introduce warning when leaving the editor
    
    Change-Id: Id9fe06015b45f37ae415f8e3607434d984a6074f

diff --git a/loleaflet/js/toolbar.js b/loleaflet/js/toolbar.js
index ea740e610..bb9b73fac 100644
--- a/loleaflet/js/toolbar.js
+++ b/loleaflet/js/toolbar.js
@@ -2212,7 +2212,7 @@ function setupToolbar(e) {
        });
 
        map.on('hyperlinkclicked', function (e) {
-               window.open(e.url, '_blank');
+               map.fire('warn', {url: e.url, map: map, cmd: 'openlink'});
        });
 
        map.on('cellformula', function (e) {
diff --git a/loleaflet/src/control/Control.AlertDialog.js 
b/loleaflet/src/control/Control.AlertDialog.js
index d63c80432..bb4c61685 100644
--- a/loleaflet/src/control/Control.AlertDialog.js
+++ b/loleaflet/src/control/Control.AlertDialog.js
@@ -24,6 +24,53 @@ L.Control.AlertDialog = L.Control.extend({
                else if (e.cmd == 'load' && e.kind == 'docunloading') {
                        // Handled by transparently retrying.
                        return;
+               } else if (e.cmd == 'openlink') {
+                       var url = e.url;
+                       var messageText = window.errorMessages.leaving;
+
+                       var isLinkValid = true;
+                       if (url.trim().toLowerCase().startsWith('javascript:')) 
{
+                               isLinkValid = false;
+                               messageText = window.errorMessages.invalidLink;
+                               messageText = messageText.replace('%url', url);
+                       }
+
+                       var buttonsList = [];
+
+                       if (isLinkValid) {
+                               buttonsList.push({
+                                       text: _('Open link'),
+                                       type: 'button',
+                                       className: 'vex-dialog-button-primary',
+                                       click: function openClick () {
+                                               window.open(url, '_blank');
+                                               vex.close(vex.dialogID);
+                                               vex.dialogID = 0;
+                                       }
+                               });
+                       }
+
+                       buttonsList.push({
+                               text: _('Edit'),
+                               type: 'button',
+                               className: 'vex-dialog-button-secondary',
+                               click: function editClick () {
+                                       
e.map.toggleCommandState('HyperlinkDialog');
+                                       vex.close(vex.dialogID);
+                                       vex.dialogID = 0;
+                               }
+                       });
+
+                       vex.dialog.open({
+                               message: messageText,
+                               showCloseButton: true,
+                               buttons: buttonsList,
+                               callback: function() {},
+                               beforeClose: function () {
+                                       e.map.focus();
+                                       e.map.enable(true);
+                               }
+                       });
                } else if (e.cmd && e.kind) {
                        var msg = _('The server encountered a %0 error while 
parsing the %1 command.');
                        msg = msg.replace('%0', e.kind);
diff --git a/loleaflet/src/errormessages.js b/loleaflet/src/errormessages.js
index 3381b9126..0baa1e626 100644
--- a/loleaflet/src/errormessages.js
+++ b/loleaflet/src/errormessages.js
@@ -21,6 +21,8 @@ errorMessages.wrongwopisrc = _('Wrong or missing WOPISrc 
parameter, please conta
 errorMessages.sessionexpiry = _('Your session will expire in %time. Please 
save your work and refresh the session (or webpage) to continue.');
 errorMessages.sessionexpired = _('Your session has been expired. Further 
changes to document might not be saved. Please refresh the session (or webpage) 
to continue.');
 errorMessages.faileddocloading = _('Failed to load the document. Please ensure 
the file type is supported and not corrupted, and try again.');
+errorMessages.invalidLink = _('Invalid link: \'%url\'');
+errorMessages.leaving = _('You are leaving the editor, are you sure you want 
to proceed?');
 
 errorMessages.storage = {
        loadfailed: _('Failed to read document from storage. Please contact 
your storage server (%storageserver) administrator.'),
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to