summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG1
-rw-r--r--program/include/rcube_output_html.php6
-rw-r--r--program/js/app.js8
3 files changed, 8 insertions, 7 deletions
diff --git a/CHANGELOG b/CHANGELOG
index b423f7cbc..45b310ebc 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
+- Fix Shift + delete button does not permanently delete messages (#1488243)
- Add Content-Length for attachments where possible (#1485478)
- Fix attachment sizes in message print page and attachment preview page (#1488515)
- Fix XSS vulnerability in message subject handling using Larry skin (#1488519)
diff --git a/program/include/rcube_output_html.php b/program/include/rcube_output_html.php
index 142755bcf..fce9615cf 100644
--- a/program/include/rcube_output_html.php
+++ b/program/include/rcube_output_html.php
@@ -933,7 +933,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');return false", rcmail::JS_OBJECT_NAME, $attrib['command']);
+ $attrib['onclick'] = sprintf("%s.command('switch-task','%s',null,event); return false", 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']));
@@ -956,7 +956,7 @@ class rcube_output_html extends rcube_output
}
else if ($command && !$attrib['onclick']) {
$attrib['onclick'] = sprintf(
- "return %s.command('%s','%s',this)",
+ "return %s.command('%s','%s',this,event)",
rcmail::JS_OBJECT_NAME,
$command,
$attrib['prop']
@@ -1485,7 +1485,7 @@ class rcube_output_html extends rcube_output
if (empty($attrib['form'])) {
$out = $this->form_tag(array(
'name' => "rcmqsearchform",
- 'onsubmit' => rcmail::JS_OBJECT_NAME . ".command('search');return false;",
+ 'onsubmit' => rcmail::JS_OBJECT_NAME . ".command('search'); return false",
'style' => "display:inline"),
$out);
}
diff --git a/program/js/app.js b/program/js/app.js
index 7eb8c787c..a5c7db441 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -493,7 +493,7 @@ function rcube_webmail()
/*********************************************************/
// execute a specific command on the web client
- this.command = function(command, props, obj)
+ this.command = function(command, props, obj, event)
{
var ret, uid, cid, url, flag;
@@ -713,7 +713,7 @@ function rcube_webmail()
case 'delete':
// mail task
if (this.task == 'mail')
- this.delete_messages();
+ this.delete_messages(event);
// addressbook task
else if (this.task == 'addressbook')
this.delete_contacts();
@@ -2555,7 +2555,7 @@ function rcube_webmail()
};
// delete selected messages from the current mailbox
- this.delete_messages = function()
+ this.delete_messages = function(event)
{
var uid, i, len, trash = this.env.trash_mailbox,
list = this.message_list,
@@ -2587,7 +2587,7 @@ function rcube_webmail()
// if there is a trash mailbox defined and we're not currently in it
else {
// if shift was pressed delete it immediately
- if (list && list.modkey == SHIFT_KEY) {
+ if ((list && list.modkey == SHIFT_KEY) || (event && rcube_event.get_modifier(event) == SHIFT_KEY)) {
if (confirm(this.get_label('deletemessagesconfirm')))
this.permanently_remove_messages();
}