Add browser popup blocker checker for open_link method.

-Fix not poping up the emailadminWizard popup when an IMAP error occurrs, because of the browser blocks the popup.
This commit is contained in:
Hadi Nategh 2014-08-05 08:12:33 +00:00
parent 2fcb09d458
commit baa5e4cdbc
3 changed files with 41 additions and 3 deletions

View File

@ -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')
{

View File

@ -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;
}
}
};
});

View File

@ -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.