From b408e0bc532e6023248c6671c5cef52d1c06f3f3 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Fri, 30 May 2014 04:53:19 -0400
Subject: [PATCH] Display a warning if popup window was blocked (#1489618)

---
 CHANGELOG                               |    1 +
 program/include/rcmail.php              |    3 ++-
 program/localization/en_US/messages.inc |    1 +
 program/js/app.js                       |   10 +++++++---
 4 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index c9e3f38..b0cca3a 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Display a warning if popup window was blocked (#1489618)
 - Remove (was: ...) from message subject on reply (#1489375)
 - Update to TinyMCE 4.0 (#1489057)
 - Enable autolink plugin in TinyMCE (#1488845)
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 9639422..a6ba183 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -428,7 +428,8 @@
         }
 
         // add some basic labels to client
-        $this->output->add_label('loading', 'servererror', 'connerror', 'requesttimedout', 'refreshing');
+        $this->output->add_label('loading', 'servererror', 'connerror', 'requesttimedout',
+            'refreshing', 'windowopenerror');
 
         return $this->output;
     }
diff --git a/program/js/app.js b/program/js/app.js
index 914bb02..cd0737e 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -685,9 +685,6 @@
             form.target = win.name;
             form.submit();
           }
-          else {
-            // this.display_message(this.get_label('windowopenerror'), 'error');
-          }
         }
         else {
           this.open_window(this.env.permaurl, true);
@@ -1780,6 +1777,13 @@
           +(toolbar ? ',toolbar=yes,menubar=yes,status=yes' : ',toolbar=no,menubar=no,status=no'));
     }
 
+    // detect popup blocker (#1489618)
+    // don't care this might not work with all browsers
+    if (!extwin || extwin.closed) {
+      this.display_message(this.get_label('windowopenerror'), 'warning');
+      return;
+    }
+
     // write loading... message to empty windows
     if (!url && extwin.document) {
       extwin.document.write('<html><body>' + this.get_label('loading') + '</body></html>');
diff --git a/program/localization/en_US/messages.inc b/program/localization/en_US/messages.inc
index 0d0a691..d4fbd61 100644
--- a/program/localization/en_US/messages.inc
+++ b/program/localization/en_US/messages.inc
@@ -26,6 +26,7 @@
 $messages['servererrormsg'] = 'Server Error: $msg';
 $messages['connerror'] = 'Connection Error (Failed to reach the server)!';
 $messages['dberror'] = 'Database Error!';
+$messages['windowopenerror'] = 'The popup window was blocked!';
 $messages['requesttimedout'] = 'Request timed out';
 $messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
 $messages['errornoperm'] = 'Unable to perform operation. Permission denied.';

--
Gitblit v1.9.1