diff --git a/mail/inc/class.mail_ui.inc.php b/mail/inc/class.mail_ui.inc.php index 4d03714539..db11b4467a 100644 --- a/mail/inc/class.mail_ui.inc.php +++ b/mail/inc/class.mail_ui.inc.php @@ -169,7 +169,7 @@ class mail_ui { $response = egw_json_response::get(); $windowName = "editMailAccount".self::$icServerID; - $response->call("egw.open_link", egw::link('/index.php', $linkData), $windowName, "600x480"); + $response->call("egw.open_link", egw::link('/index.php', $linkData), $windowName, "600x480",null,true); egw_framework::message($message, 'error'); if ($_GET['menuaction'] == 'mail.mail_ui.index') { diff --git a/phpgwapi/js/jsapi/egw_open.js b/phpgwapi/js/jsapi/egw_open.js index 337ef13d95..004adb0f31 100644 --- a/phpgwapi/js/jsapi/egw_open.js +++ b/phpgwapi/js/jsapi/egw_open.js @@ -238,8 +238,10 @@ egw.extend('open', egw.MODULE_WND_LOCAL, function(_egw, _wnd) { * @param string _target optional target / window name * @param string _popup widthxheight, if a popup should be used * @param string _target_app app-name for opener + * @param boolean _check_popup_blocker TRUE check if browser pop-up blocker is on/off, FALSE no check + * - This option only makes sense to be enabled when the open_link requested without user interaction */ - open_link: function(_link, _target, _popup, _target_app) + open_link: function(_link, _target, _popup, _target_app, _check_popup_blocker) { // Log for debugging purposes - don't use navigation here to avoid // flooding log with details already captured by egw.open() @@ -247,7 +249,11 @@ egw.extend('open', egw.MODULE_WND_LOCAL, function(_egw, _wnd) { "egw.open_link(_link=%s, _target=%s, _popup=%s, _target_app=%s)", _link,_target,_popup,_target_app ); - + //Check browser pop-up blocker + if (_check_popup_blocker) + { + if (this._check_popupBlocker(_link, _target, _popup, _target_app)) return; + } var url = _link; if (url.indexOf('javascript:') == 0) { @@ -312,6 +318,37 @@ egw.extend('open', egw.MODULE_WND_LOCAL, function(_egw, _wnd) { { _wnd.location.href = _url; } + }, + + /** + * Check if browser pop-up blocker is on/off + * + * @param string _link menuaction, EGroupware relative url or a full url (incl. "mailto:" or "javascript:") + * @param string _target optional target / window name + * @param string _popup widthxheight, if a popup should be used + * @param string _target_app app-name for opener + * + * @return boolean returns false if pop-up blocker is off + * - returns true if pop-up blocker is on, + * - and re-call the open_link with provided parameters, after user interaction. + */ + _check_popupBlocker: function(_link, _target, _popup, _target_app) + { + var popup = window.open("","",'top='+(screen.height/2)+',left='+(screen.width/2)+',width=1,height=1,menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no,dependent=yes'); + + if (!popup||popup == 'undefined'||popup == null) + { + et2_dialog.show_dialog(function(){ + window.egw.open_link(_link, _target, _popup, _target_app); + },egw.lang("The browser popup blocker is on. Please click on OK button to see the pop-up.\n\nIf you would like to not see this message for the next time, allow your browser pop-up blocker to open popups from %1",window.location.hostname) , + "Popup Blocker Warning",{},et2_dialog.BUTTONS_OK,et2_dialog.WARNING_MESSAGE); + return true; + } + else + { + popup.close(); + return false; + } } }; }); diff --git a/phpgwapi/lang/egw_de.lang b/phpgwapi/lang/egw_de.lang index 16392f5a6e..385a3127cb 100644 --- a/phpgwapi/lang/egw_de.lang +++ b/phpgwapi/lang/egw_de.lang @@ -790,6 +790,7 @@ text color: common de Textfarbe: thailand common de THAILAND the api is current common de Die API ist aktuell the api requires an upgrade common de Die API benötigt eine Aktualisierung +the browser popup blocker is on. please click on ok button to see the pop-up.\n\nif you would like to not see this message for the next time, allow your browser pop-up blocker to open popups from %1 common de Ihr Browser hat das Öffnen eines Popup-Dialogs blockiert. Bitte klicken Sie OK, um das Popup angezeigt zu bekommen.\n\nWenn Sie die Meldung nicht nochmals erhalten wollen, erlauben Sie bitte in den Einstellungen vom Browser für %1 das Öffnen von Popups. the following applications require upgrades common de Die folgenden Anwendungen benötigen eine Aktualisierung the mail server returned common de Der E-Mail-Server liefert zurück there already is a system-user with this name. user's should not have the same name as a systemuser common de Es gibt schon einen System Benutzer mit dem selben Namen. Die Benutzer sollten nicht die gleichen Namen haben, wie die Systembenutzer.