| | |
| | | break; |
| | | |
| | | case 'logout': |
| | | this.goto_url('logout', true); |
| | | this.goto_url('logout', '', true); |
| | | break; |
| | | |
| | | // commands to switch task |
| | |
| | | { |
| | | setTimeout(function(){ ref.printwin.focus(); }, 20); |
| | | if (this.env.action != 'show') |
| | | this.toggle_read_status('read', [uid]); |
| | | this.mark_message('read', uid); |
| | | } |
| | | } |
| | | break; |
| | |
| | | this.mark_message = function(flag, uid) |
| | | { |
| | | var a_uids = new Array(); |
| | | var r_uids = new Array(); |
| | | var selection = this.message_list ? this.message_list.get_selection() : new Array(); |
| | | |
| | | if (uid) |
| | |
| | | { |
| | | for (var id, n=0; n<selection.length; n++) |
| | | { |
| | | id = selection[n]; |
| | | if ((flag=='read' && this.message_list.rows[id].unread) || (flag=='unread' && !this.message_list.rows[id].unread) |
| | | || (flag=='delete' && !this.message_list.rows[id].deleted) || (flag=='undelete' && this.message_list.rows[id].deleted)) |
| | | a_uids[a_uids.length] = id; |
| | | a_uids[a_uids.length] = selection[n]; |
| | | } |
| | | } |
| | | |
| | | for (var id, n=0; n<a_uids.length; n++) |
| | | { |
| | | id = a_uids[n]; |
| | | if ((flag=='read' && this.message_list.rows[id].unread) |
| | | || (flag=='unread' && !this.message_list.rows[id].unread) |
| | | || (flag=='delete' && !this.message_list.rows[id].deleted) |
| | | || (flag=='undelete' && this.message_list.rows[id].deleted)) |
| | | { |
| | | r_uids[r_uids.length] = id; |
| | | } |
| | | } |
| | | |
| | | // nothing to do |
| | | if (!a_uids.length) |
| | | if (!r_uids.length) |
| | | return; |
| | | |
| | | switch (flag) |
| | | { |
| | | case 'read': |
| | | case 'unread': |
| | | this.toggle_read_status(flag, a_uids); |
| | | this.toggle_read_status(flag, r_uids); |
| | | break; |
| | | case 'delete': |
| | | case 'undelete': |
| | | this.toggle_delete_status(a_uids); |
| | | this.toggle_delete_status(r_uids); |
| | | break; |
| | | } |
| | | }; |
| | |
| | | { |
| | | // mark all message rows as read/unread |
| | | var icn_src; |
| | | var res_uids = new Array(); |
| | | var rows = this.message_list.rows; |
| | | for (var i=0; i<a_uids.length; i++) |
| | | { |
| | | uid = a_uids[i]; |
| | | // check if flag isn't set yet |
| | | if (rows[uid] && ((flag=='unread' && !rows[uid].unread) || (flag=='read' && rows[uid].unread))) |
| | | if (rows[uid]) |
| | | { |
| | | res_uids[res_uids.length] = uid; |
| | | |
| | | rows[uid].unread = (flag=='unread' ? true : false); |
| | | |
| | | if (rows[uid].classname.indexOf('unread')<0 && rows[uid].unread) |
| | |
| | | } |
| | | } |
| | | |
| | | if (res_uids.length) |
| | | this.http_post('mark', '_uid='+res_uids.join(',')+'&_flag='+flag); |
| | | this.http_post('mark', '_uid='+a_uids.join(',')+'&_flag='+flag); |
| | | }; |
| | | |
| | | // mark all message rows as deleted/undeleted |
| | | this.toggle_delete_status = function(a_uids) |
| | | { |
| | | if (this.env.read_when_deleted) |
| | | this.toggle_read_status('read',a_uids); |
| | | this.mark_message('read',a_uids); |
| | | |
| | | // if deleting message from "view message" don't bother with delete icon |
| | | if (this.env.action == "show") |
| | |
| | | |
| | | this.subscribe_folder = function(folder) |
| | | { |
| | | var form; |
| | | if ((form = this.gui_objects.editform) && form.elements['_unsubscribed']) |
| | | this.change_subscription('_unsubscribed', '_subscribed', 'subscribe'); |
| | | else if (folder) |
| | | this.http_post('subscribe', '_mboxes='+urlencode(folder)); |
| | | if (folder) |
| | | this.http_post('subscribe', '_mbox='+urlencode(folder)); |
| | | }; |
| | | |
| | | |
| | | this.unsubscribe_folder = function(folder) |
| | | { |
| | | var form; |
| | | if ((form = this.gui_objects.editform) && form.elements['_subscribed']) |
| | | this.change_subscription('_subscribed', '_unsubscribed', 'unsubscribe'); |
| | | else if (folder) |
| | | this.http_post('unsubscribe', '_mboxes='+urlencode(folder)); |
| | | if (folder) |
| | | this.http_post('unsubscribe', '_mbox='+urlencode(folder)); |
| | | }; |
| | | |
| | | |
| | | this.change_subscription = function(from, to, action) |
| | | { |
| | | var form; |
| | | if (form = this.gui_objects.editform) |
| | | { |
| | | var a_folders = new Array(); |
| | | var list_from = form.elements[from]; |
| | | |
| | | for (var i=0; list_from && i<list_from.options.length; i++) |
| | | { |
| | | if (list_from.options[i] && list_from.options[i].selected) |
| | | { |
| | | a_folders[a_folders.length] = list_from.options[i].value; |
| | | list_from[i] = null; |
| | | i--; |
| | | } |
| | | } |
| | | |
| | | // yes, we have some folders selected |
| | | if (a_folders.length) |
| | | { |
| | | var list_to = form.elements[to]; |
| | | var index; |
| | | |
| | | for (var n=0; n<a_folders.length; n++) |
| | | { |
| | | index = list_to.options.length; |
| | | list_to[index] = new Option(a_folders[n]); |
| | | } |
| | | |
| | | this.http_post(action, '_mboxes='+urlencode(a_folders.join(','))); |
| | | } |
| | | } |
| | | |
| | | }; |
| | | |
| | | // helper method to find a specific mailbox row ID |
| | | this.get_folder_row_id = function(folder) |
| | |
| | | // process the response data according to the sent action |
| | | switch (request_obj.__action) |
| | | { |
| | | |
| | | case 'delete': |
| | | case 'moveto': |
| | | if (this.env.action=='show') |
| | | this.command('list'); |
| | | else if (this.message_list) |
| | | this.message_list.init(); |
| | | break; |
| | | |
| | | 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); |
| | | } |
| | | |
| | | break; |
| | | |
| | | case 'list': |
| | | if (this.env.messagecount) |
| | | this.enable_command('purge', (this.env.mailbox==this.env.trash_mailbox || this.env.mailbox==this.env.junk_mailbox)); |
| | | |
| | | this.enable_command('sort', (this.env.messagecount > 0)); |
| | | this.msglist_select(this.message_list); |
| | | |
| | | case 'expunge': |
| | | this.enable_command('select-all', 'select-none', 'expunge', this.env.messagecount ? true : false); |
| | | break; |
| | | 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; |
| | | |
| | | } |
| | | |
| | | request_obj.reset(); |