| | |
| | | this.delete_messages = function() |
| | | { |
| | | var selection = this.message_list ? this.message_list.get_selection() : new Array(); |
| | | |
| | | |
| | | // exit if no mailbox specified or if selection is empty |
| | | if (!this.env.uid && !selection.length) |
| | | return; |
| | |
| | | this._with_selected_messages = function(action, lock, add_url) |
| | | { |
| | | var a_uids = new Array(); |
| | | |
| | | if (this.env.uid) |
| | | a_uids[a_uids.length] = this.env.uid; |
| | | a_uids[0] = this.env.uid; |
| | | else |
| | | { |
| | | var selection = this.message_list.get_selection(); |
| | |
| | | { |
| | | id = selection[n]; |
| | | a_uids[a_uids.length] = id; |
| | | |
| | | this.message_list.remove_row(id, (n == selection.length-1)); |
| | | } |
| | | } |
| | | |
| | | |
| | | // also send search request to get the right messages |
| | | if (this.env.search_request) |
| | | add_url += '&_search='+this.env.search_request; |
| | |
| | | var a_uids = new Array(); |
| | | var r_uids = new Array(); |
| | | var selection = this.message_list ? this.message_list.get_selection() : new Array(); |
| | | |
| | | |
| | | if (uid) |
| | | a_uids[0] = uid; |
| | | else if (this.env.uid) |
| | | a_uids[0] = this.env.uid; |
| | | else if (this.message_list) |
| | | { |
| | | for (var id, n=0; n<selection.length; n++) |
| | | for (var n=0; n<selection.length; n++) |
| | | { |
| | | a_uids[a_uids.length] = selection[n]; |
| | | } |
| | | } |
| | | |
| | | for (var id, n=0; n<a_uids.length; n++) |
| | | if (!this.message_list) |
| | | r_uids = a_uids; |
| | | else |
| | | for (var id, n=0; n<a_uids.length; n++) |
| | | { |
| | | id = a_uids[n]; |
| | | if ((flag=='read' && this.message_list.rows[id].unread) |
| | |
| | | r_uids[r_uids.length] = id; |
| | | } |
| | | } |
| | | |
| | | |
| | | // nothing to do |
| | | if (!r_uids.length) |
| | | return; |
| | | |
| | | |
| | | switch (flag) |
| | | { |
| | | case 'read': |
| | |
| | | parent.rcmail.set_classname(rows[uid].obj, 'unread', false); |
| | | |
| | | if (rows[uid].replied && parent.rcmail.env.repliedicon) |
| | | icn_src = parent.rcmail.env.repliedicon; |
| | | icn_src = parent.rcmail.env.repliedicon; |
| | | else if (parent.rcmail.env.messageicon) |
| | | icn_src = parent.rcmail.env.messageicon; |
| | | |
| | | if (rows[uid].icon && icn_src) |
| | | if (rows[uid].icon && icn_src) |
| | | rows[uid].icon.src = icn_src; |
| | | } |
| | | } |
| | |
| | | // mark all message rows as deleted/undeleted |
| | | this.toggle_delete_status = function(a_uids) |
| | | { |
| | | if (this.env.read_when_deleted) |
| | | this.mark_message('read',a_uids); |
| | | |
| | | // if deleting message from "view message" don't bother with delete icon |
| | | if (this.env.action == "show") |
| | | return false; |
| | | |
| | | var rows = this.message_list.rows; |
| | | var rows = this.message_list ? this.message_list.rows : new Array(); |
| | | |
| | | if (a_uids.length==1) |
| | | { |
| | | if (rows[a_uids[0]] && rows[a_uids[0]].classname.indexOf('deleted') < 0) |
| | | if (!rows.length || (rows[a_uids[0]] && rows[a_uids[0]].classname.indexOf('deleted') < 0)) |
| | | this.flag_as_deleted(a_uids); |
| | | else |
| | | this.flag_as_undeleted(a_uids); |
| | |
| | | |
| | | this.flag_as_undeleted = function(a_uids) |
| | | { |
| | | // if deleting message from "view message" don't bother with delete icon |
| | | if (this.env.action == "show") |
| | | return false; |
| | | |
| | | var icn_src; |
| | | var rows = this.message_list.rows; |
| | | var rows = this.message_list ? this.message_list.rows : new Array(); |
| | | |
| | | for (var i=0; i<a_uids.length; i++) |
| | | { |
| | |
| | | icn_src = this.env.repliedicon; |
| | | else if (this.env.messageicon) |
| | | icn_src = this.env.messageicon; |
| | | |
| | | if (rows[uid].icon && icn_src) |
| | | rows[uid].icon.src = icn_src; |
| | | } |
| | |
| | | |
| | | this.flag_as_deleted = function(a_uids) |
| | | { |
| | | // if deleting message from "view message" don't bother with delete icon |
| | | if (this.env.action == "show") |
| | | return false; |
| | | |
| | | var rows = this.message_list.rows; |
| | | var add_url = ''; |
| | | var r_uids = new Array(); |
| | | var rows = this.message_list ? this.message_list.rows : new Array(); |
| | | |
| | | for (var i=0; i<a_uids.length; i++) |
| | | { |
| | | { |
| | | uid = a_uids[i]; |
| | | if (rows[uid]) { |
| | | if (rows[uid]) |
| | | { |
| | | rows[uid].deleted = true; |
| | | |
| | | if (rows[uid].classname.indexOf('deleted')<0) { |
| | | if (rows[uid].classname.indexOf('deleted')<0) |
| | | { |
| | | rows[uid].classname += ' deleted'; |
| | | this.set_classname(rows[uid].obj, 'deleted', true); |
| | | } |
| | | if (rows[uid].icon && this.env.deletedicon) |
| | | } |
| | | |
| | | if (rows[uid].icon && this.env.deletedicon) |
| | | rows[uid].icon.src = this.env.deletedicon; |
| | | } |
| | | } |
| | | |
| | | this.http_post('mark', '_uid='+a_uids.join(',')+'&_flag=delete'); |
| | | if (rows[uid].unread) |
| | | r_uids[r_uids.length] = uid; |
| | | } |
| | | } |
| | | |
| | | if (r_uids.length) |
| | | add_url = '&_ruid='+r_uids.join(','); |
| | | |
| | | this.http_post('mark', '_uid='+a_uids.join(',')+'&_flag=delete'+add_url); |
| | | return true; |
| | | }; |
| | | |
| | | |
| | | // flag as read without mark request (called from backend) |
| | | // argument should be a coma-separated list of uids |
| | | this.flag_deleted_as_read = function(uids) |
| | | { |
| | | var icn_src; |
| | | var rows = this.message_list ? this.message_list.rows : new Array(); |
| | | var str = String(uids); |
| | | var a_uids = new Array(); |
| | | |
| | | a_uids = str.split(','); |
| | | |
| | | for (var uid, i=0; i<a_uids.length; i++) |
| | | { |
| | | uid = a_uids[i]; |
| | | if (rows[uid]) |
| | | { |
| | | rows[uid].unread = false; |
| | | rows[uid].read = true; |
| | | |
| | | rows[uid].classname = rows[uid].classname.replace(/\s*unread/, ''); |
| | | this.set_classname(rows[uid].obj, 'unread', false); |
| | | |
| | | if (rows[uid].icon) |
| | | rows[uid].icon.src = this.env.deletedicon; |
| | | } |
| | | } |
| | | }; |
| | | |
| | | /*********************************************************/ |
| | | /********* login form methods *********/ |
| | |
| | | this.message_list.init(); |
| | | |
| | | case 'purge': |
| | | case 'expunge': |
| | | if (!this.env.messagecount) |
| | | { |
| | | // clear preview pane content |
| | | if (this.env.contentframe) |
| | | this.show_contentframe(false); |
| | | // disable commands useless when mailbox is empty |
| | | this.enable_command('show', 'reply', 'reply-all', 'forward', 'moveto', 'delete', 'mark', 'viewsource', |
| | | 'print', 'load-attachment', 'purge', 'expunge', 'select-all', 'select-none', 'sort', false); |
| | | } |
| | | case 'expunge': |
| | | if (!this.env.messagecount) |
| | | { |
| | | // clear preview pane content |
| | | if (this.env.contentframe) |
| | | this.show_contentframe(false); |
| | | // disable commands useless when mailbox is empty |
| | | this.enable_command('show', 'reply', 'reply-all', 'forward', 'moveto', 'delete', 'mark', 'viewsource', |
| | | 'print', 'load-attachment', 'purge', 'expunge', 'select-all', 'select-none', 'sort', false); |
| | | } |
| | | |
| | | break; |
| | | break; |
| | | |
| | | case 'list': |
| | | this.msglist_select(this.message_list); |
| | | this.msglist_select(this.message_list); |
| | | |
| | | case 'check-recent': |
| | | case 'getunread': |
| | | this.enable_command('show', 'expunge', 'select-all', 'select-none', 'sort', (this.env.messagecount > 0)); |
| | | this.enable_command('purge', (this.env.messagecount && (this.env.mailbox==this.env.trash_mailbox || this.env.mailbox==this.env.junk_mailbox))); |
| | | break; |
| | | this.enable_command('show', 'expunge', 'select-all', 'select-none', 'sort', (this.env.messagecount > 0)); |
| | | this.enable_command('purge', (this.env.messagecount && (this.env.mailbox==this.env.trash_mailbox || this.env.mailbox==this.env.junk_mailbox))); |
| | | |
| | | break; |
| | | |
| | | } |
| | | |