From e30500643fbe0c9f9237570b73e59992f776cf0c Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Wed, 14 Nov 2012 04:28:34 -0500
Subject: [PATCH] Enable default behavior of the browser when shift/ctrl-click task links (e.g. open in new window/tab)
---
program/include/rcube_output_html.php | 2 +-
program/js/app.js | 7 ++++++-
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/program/include/rcube_output_html.php b/program/include/rcube_output_html.php
index db947bd..ac07d58 100644
--- a/program/include/rcube_output_html.php
+++ b/program/include/rcube_output_html.php
@@ -1087,7 +1087,7 @@
// 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 0f5a60c..2a170b2 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -507,6 +507,11 @@
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 @@
break;
case 'about':
- location.href = '?_task=settings&_action=about';
+ this.redirect('?_task=settings&_action=about', false);
break;
case 'permaurl':
--
Gitblit v1.9.1