summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2013-03-08 08:49:57 +0100
committerAleksander Machniak <alec@alec.pl>2013-03-08 08:49:57 +0100
commit32da69983021005567a4d8f56a2658ac2645780c (patch)
tree306a8181bdb1cdbc3394e3e8ee91b2bd417dae84
parentcf8b9fc004e67bd5f8d7b0bf7f573020bcb33804 (diff)
Fix javascript errors when working in a page opened with taget="_blank"
-rw-r--r--CHANGELOG1
-rw-r--r--program/js/app.js20
-rw-r--r--skins/larry/ui.js3
3 files changed, 19 insertions, 5 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 2fb870f92..062313ee1 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
+- Fix javascript errors when working in a page opened with taget="_blank"
- Mention SQLite database format change in UPGRADING file (#1488983)
- Increase maxlength to 254 chars for email input fields in addressbook (#1488987)
- Add attachment menu with Open and Download options (#1488975)
diff --git a/program/js/app.js b/program/js/app.js
index 55c71d776..c2a7c1b79 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -2984,10 +2984,10 @@ function rcube_webmail()
input_message = $("[name='_message']").get(0),
html_mode = $("input[name='_is_html']").val() == '1',
ac_fields = ['cc', 'bcc', 'replyto', 'followupto'],
- ac_props;
+ ac_props, opener_rc = this.opener();
// close compose step in opener
- if (window.opener && !window.opener.closed && opener.rcmail && opener.rcmail.env.action == 'compose') {
+ if (opener_rc && opener_rc.env.action == 'compose') {
setTimeout(function(){ opener.history.back(); }, 100);
this.env.opened_extwin = true;
}
@@ -3666,9 +3666,10 @@ function rcube_webmail()
this.display_message(msg, type);
if (this.env.extwin) {
+ var opener_rc = this.opener();
this.lock_form(this.gui_objects.messageform);
- if (window.opener && !window.opener.closed && opener.rcmail)
- opener.rcmail.display_message(msg, type);
+ if (opener_rc)
+ opener_rc.display_message(msg, type);
setTimeout(function(){ window.close() }, 1000);
}
else {
@@ -6500,6 +6501,17 @@ function rcube_webmail()
/********* helper methods *********/
/********************************************************/
+ // get window.opener.rcmail if available
+ this.opener = function()
+ {
+ // catch Error: Permission denied to access property rcmail
+ try {
+ if (window.opener && !opener.closed && opener.rcmail)
+ return opener.rcmail;
+ }
+ catch (e) {}
+ };
+
// check if we're in show mode or if we have a unique selection
// and return the message uid
this.get_single_uid = function()
diff --git a/skins/larry/ui.js b/skins/larry/ui.js
index 6b2a5c7d0..b787dbb8d 100644
--- a/skins/larry/ui.js
+++ b/skins/larry/ui.js
@@ -123,7 +123,8 @@ function rcube_mail_ui()
}).css('cursor', 'pointer');
// toggle compose options if opened in new window and they were visible before
- if (window.opener && opener.rcmail && opener.rcmail.env.action == 'compose' && $('#composeoptionstoggle', opener.document).hasClass('remove'))
+ var opener_rc = rcmail.opener();
+ if (opener_rc && opener_rc.env.action == 'compose' && $('#composeoptionstoggle', opener.document).hasClass('remove'))
$('#composeoptionstoggle').click();
new rcube_splitter({ id:'composesplitterv', p1:'#composeview-left', p2:'#composeview-right',