summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Bruederli <thomas@roundcube.net>2012-11-14 10:28:34 +0100
committerThomas Bruederli <thomas@roundcube.net>2012-11-14 10:28:34 +0100
commite30500643fbe0c9f9237570b73e59992f776cf0c (patch)
tree00c82e45b6c90c66b917d500bb374ce0560510c7
parent275728ab0511c5e89c372aaa5508dc0040c146b2 (diff)
Enable default behavior of the browser when shift/ctrl-click task links (e.g. open in new window/tab)
-rw-r--r--program/include/rcube_output_html.php2
-rw-r--r--program/js/app.js7
2 files changed, 7 insertions, 2 deletions
diff --git a/program/include/rcube_output_html.php b/program/include/rcube_output_html.php
index db947bd2b..ac07d58e9 100644
--- a/program/include/rcube_output_html.php
+++ b/program/include/rcube_output_html.php
@@ -1087,7 +1087,7 @@ class rcube_output_html extends rcube_output
// make valid href to specific buttons
if (in_array($attrib['command'], rcmail::$main_tasks)) {
$attrib['href'] = $this->app->url(array('task' => $attrib['command']));
- $attrib['onclick'] = sprintf("%s.command('switch-task','%s',null,event); return false", rcmail::JS_OBJECT_NAME, $attrib['command']);
+ $attrib['onclick'] = sprintf("return %s.command('switch-task','%s',this,event)", rcmail::JS_OBJECT_NAME, $attrib['command']);
}
else if ($attrib['task'] && in_array($attrib['task'], rcmail::$main_tasks)) {
$attrib['href'] = $this->app->url(array('action' => $attrib['command'], 'task' => $attrib['task']));
diff --git a/program/js/app.js b/program/js/app.js
index 0f5a60c6f..2a170b258 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -507,6 +507,11 @@ function rcube_webmail()
if (this.busy)
return false;
+ // let the browser handle this click (shift/ctrl usually opens the link in a new window/tab)
+ if ((obj && (obj.href.indexOf(location.href) < 0)) && rcube_event.get_modifier(event)) {
+ return true;
+ }
+
// command not supported or allowed
if (!this.commands[command]) {
// pass command to parent window
@@ -562,7 +567,7 @@ function rcube_webmail()
break;
case 'about':
- location.href = '?_task=settings&_action=about';
+ this.redirect('?_task=settings&_action=about', false);
break;
case 'permaurl':