Fix Shift + delete button does not permanently delete messages (#1488243)
| | |
| | | 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) |
| | |
| | | // 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'])); |
| | |
| | | } |
| | | 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'] |
| | |
| | | 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); |
| | | } |
| | |
| | | /*********************************************************/ |
| | | |
| | | // 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; |
| | | |
| | |
| | | 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(); |
| | |
| | | }; |
| | | |
| | | // 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, |
| | |
| | | // 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(); |
| | | } |