Fix Shift + delete button does not permanently delete messages (#1488243)

pull/13/head
Aleksander Machniak 12 years ago
parent 6237c94758
commit c281619b96

@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail CHANGELOG Roundcube Webmail
=========================== ===========================
- Fix Shift + delete button does not permanently delete messages (#1488243)
- Add Content-Length for attachments where possible (#1485478) - Add Content-Length for attachments where possible (#1485478)
- Fix attachment sizes in message print page and attachment preview page (#1488515) - Fix attachment sizes in message print page and attachment preview page (#1488515)
- Fix XSS vulnerability in message subject handling using Larry skin (#1488519) - Fix XSS vulnerability in message subject handling using Larry skin (#1488519)

@ -933,7 +933,7 @@ class rcube_output_html extends rcube_output
// make valid href to specific buttons // make valid href to specific buttons
if (in_array($attrib['command'], rcmail::$main_tasks)) { if (in_array($attrib['command'], rcmail::$main_tasks)) {
$attrib['href'] = $this->app->url(array('task' => $attrib['command'])); $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)) { else if ($attrib['task'] && in_array($attrib['task'], rcmail::$main_tasks)) {
$attrib['href'] = $this->app->url(array('action' => $attrib['command'], 'task' => $attrib['task'])); $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']) { else if ($command && !$attrib['onclick']) {
$attrib['onclick'] = sprintf( $attrib['onclick'] = sprintf(
"return %s.command('%s','%s',this)", "return %s.command('%s','%s',this,event)",
rcmail::JS_OBJECT_NAME, rcmail::JS_OBJECT_NAME,
$command, $command,
$attrib['prop'] $attrib['prop']
@ -1485,7 +1485,7 @@ class rcube_output_html extends rcube_output
if (empty($attrib['form'])) { if (empty($attrib['form'])) {
$out = $this->form_tag(array( $out = $this->form_tag(array(
'name' => "rcmqsearchform", 'name' => "rcmqsearchform",
'onsubmit' => rcmail::JS_OBJECT_NAME . ".command('search');return false;", 'onsubmit' => rcmail::JS_OBJECT_NAME . ".command('search'); return false",
'style' => "display:inline"), 'style' => "display:inline"),
$out); $out);
} }

@ -493,7 +493,7 @@ function rcube_webmail()
/*********************************************************/ /*********************************************************/
// execute a specific command on the web client // 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; var ret, uid, cid, url, flag;
@ -713,7 +713,7 @@ function rcube_webmail()
case 'delete': case 'delete':
// mail task // mail task
if (this.task == 'mail') if (this.task == 'mail')
this.delete_messages(); this.delete_messages(event);
// addressbook task // addressbook task
else if (this.task == 'addressbook') else if (this.task == 'addressbook')
this.delete_contacts(); this.delete_contacts();
@ -2555,7 +2555,7 @@ function rcube_webmail()
}; };
// delete selected messages from the current mailbox // 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, var uid, i, len, trash = this.env.trash_mailbox,
list = this.message_list, 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 // if there is a trash mailbox defined and we're not currently in it
else { else {
// if shift was pressed delete it immediately // 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'))) if (confirm(this.get_label('deletemessagesconfirm')))
this.permanently_remove_messages(); this.permanently_remove_messages();
} }

Loading…
Cancel
Save