| | |
| | | { |
| | | this.env.spellcheck.spelling_state_observer = function(s){ ref.set_spellcheck_state(s); }; |
| | | this.set_spellcheck_state('ready'); |
| | | if (rcube_find_object('_is_html').value == '1') |
| | | this.display_spellcheck_controls(false); |
| | | } |
| | | if (this.env.drafts_mailbox) |
| | | this.enable_command('savedraft', true); |
| | |
| | | this.enable_command('select-all', 'select-none', 'expunge', true); |
| | | |
| | | if (this.env.messagecount |
| | | && (this.env.mailbox == this.env.trash_mailbox || this.env.mailbox == this.env.junk_mailbox |
| | | || this.env.mailbox.match('^' + RegExp.escape(this.env.trash_mailbox) + RegExp.escape(this.env.delimiter)) |
| | | || this.env.mailbox.match('^' + RegExp.escape(this.env.junk_mailbox) + RegExp.escape(this.env.delimiter)))) |
| | | && (this.env.mailbox == this.env.trash_mailbox || this.env.mailbox == this.env.junk_mailbox |
| | | || this.env.mailbox.match('^' + RegExp.escape(this.env.trash_mailbox) + RegExp.escape(this.env.delimiter)) |
| | | || this.env.mailbox.match('^' + RegExp.escape(this.env.junk_mailbox) + RegExp.escape(this.env.delimiter)))) |
| | | this.enable_command('purge', true); |
| | | |
| | | this.set_page_buttons(); |
| | |
| | | break; |
| | | |
| | | case 'spellcheck': |
| | | if (this.env.spellcheck && this.env.spellcheck.spellCheck && this.spellcheck_ready) |
| | | { |
| | | if (window.tinyMCE && tinyMCE.get('compose-body')) { |
| | | tinyMCE.execCommand('mceSpellCheck', true); |
| | | } |
| | | else if (this.env.spellcheck && this.env.spellcheck.spellCheck && this.spellcheck_ready) { |
| | | this.env.spellcheck.spellCheck(this.env.spellcheck.check_link); |
| | | this.set_spellcheck_state('checking'); |
| | | } |
| | | } |
| | | break; |
| | | |
| | | case 'savedraft': |
| | |
| | | |
| | | // start timer for message preview (wait for double click) |
| | | if (selected && this.env.contentframe && !list.multi_selecting) |
| | | this.preview_timer = window.setTimeout(function(){ ref.msglist_get_preview(); }, this.dblclick_time + 10); |
| | | this.preview_timer = window.setTimeout(function(){ ref.msglist_get_preview(); }, 200); |
| | | else if (this.env.contentframe) |
| | | this.show_contentframe(false); |
| | | }; |
| | |
| | | if (!show && window.frames[this.env.contentframe]) |
| | | { |
| | | if (window.frames[this.env.contentframe].location.href.indexOf(this.env.blankpage)<0) |
| | | window.frames[this.env.contentframe].location.href = this.env.blankpage; |
| | | } |
| | | window.frames[this.env.contentframe].location.href = this.env.blankpage; |
| | | } |
| | | else if (!bw.safari) |
| | | frm.style.display = show ? 'block' : 'none'; |
| | | } |
| | |
| | | // Send a specifc request with UIDs of all selected messages |
| | | // @private |
| | | this._with_selected_messages = function(action, lock, add_url, remove) |
| | | { |
| | | { |
| | | var a_uids = new Array(); |
| | | |
| | | if (this.env.uid) |
| | | a_uids[0] = this.env.uid; |
| | | else |
| | | { |
| | | { |
| | | var selection = this.message_list.get_selection(); |
| | | var rows = this.message_list.rows; |
| | | var id; |
| | |
| | | id = selection[n]; |
| | | a_uids[a_uids.length] = id; |
| | | |
| | | if (remove) |
| | | if (remove) |
| | | this.message_list.remove_row(id, (n == selection.length-1)); |
| | | else |
| | | { |
| | | rows[id].deleted = true; |
| | | { |
| | | rows[id].deleted = true; |
| | | |
| | | if (rows[id].classname.indexOf('deleted')<0) |
| | | { |
| | | { |
| | | rows[id].classname += ' deleted'; |
| | | this.set_classname(rows[id].obj, 'deleted', true); |
| | | } |
| | | } |
| | | if (this.env.read_when_deleted) |
| | | { |
| | | rows[id].classname = rows[id].classname.replace(/\s*unread/, ''); |
| | | this.set_classname(rows[id].obj, 'unread', false); |
| | | } |
| | | |
| | | if (rows[id].icon && this.env.deletedicon) |
| | | if (rows[id].icon && this.env.deletedicon) |
| | | rows[id].icon.src = this.env.deletedicon; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // also send search request to get the right messages |
| | | if (this.env.search_request) |
| | |
| | | |
| | | // send request to server |
| | | this.http_post(action, '_uid='+a_uids.join(',')+'&_mbox='+urlencode(this.env.mailbox)+add_url, lock); |
| | | }; |
| | | }; |
| | | |
| | | |
| | | // set a specific flag to one or more messages |
| | |
| | | { |
| | | 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) |
| | | || (flag=='flagged' && !this.message_list.rows[id].flagged) |
| | | || (flag=='unflagged' && this.message_list.rows[id].flagged)) |
| | | { |
| | | r_uids[r_uids.length] = id; |
| | | } |
| | | || (flag=='unread' && !this.message_list.rows[id].unread) |
| | | || (flag=='delete' && !this.message_list.rows[id].deleted) |
| | | || (flag=='undelete' && this.message_list.rows[id].deleted) |
| | | || (flag=='flagged' && !this.message_list.rows[id].flagged) |
| | | || (flag=='unflagged' && this.message_list.rows[id].flagged)) |
| | | { |
| | | r_uids[r_uids.length] = id; |
| | | } |
| | | } |
| | | |
| | | // nothing to do |
| | |
| | | } |
| | | |
| | | if (rows[uid].icon && icn_src |
| | | && !(rows[uid].replied && this.env.repliedicon) |
| | | && !(rows[uid].replied && this.env.repliedicon) |
| | | && !(rows[uid].deleted && this.env.deletedicon)) |
| | | rows[uid].icon.src = icn_src; |
| | | } |
| | |
| | | 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 (rows[uid].deleted && parent.rcmail.env.deletedicon) |
| | | icn_src = parent.rcmail.env.deletedicon; |
| | | icn_src = parent.rcmail.env.deletedicon; |
| | | 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; |
| | | } |
| | | } |
| | |
| | | rows[uid].deleted = true; |
| | | |
| | | 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 (this.env.read_when_deleted) |
| | | { |
| | | rows[uid].classname = rows[uid].classname.replace(/\s*unread/, ''); |
| | | this.set_classname(rows[uid].obj, 'unread', false); |
| | | } |
| | | |
| | | if (rows[uid].icon && this.env.deletedicon) |
| | | rows[uid].icon.src = this.env.deletedicon; |
| | | |
| | | if (rows[uid].unread) |
| | | r_uids[r_uids.length] = uid; |
| | | if (rows[uid].unread) |
| | | r_uids[r_uids.length] = uid; |
| | | } |
| | | } |
| | | |
| | |
| | | if (rows[uid]) |
| | | { |
| | | rows[uid].unread = false; |
| | | rows[uid].read = true; |
| | | rows[uid].read = true; |
| | | |
| | | rows[uid].classname = rows[uid].classname.replace(/\s*unread/, ''); |
| | | this.set_classname(rows[uid].obj, 'unread', false); |
| | |
| | | } |
| | | |
| | | // check for empty body |
| | | if ((((!window.tinyMCE || !tinyMCE.get('compose-body')) && input_message.value == '') |
| | | || (window.tinyMCE && tinyMCE.get('compose-body') && tinyMCE.get('compose-body').getContent() == '')) |
| | | && !confirm(this.get_label('nobodywarning'))) |
| | | if ((!window.tinyMCE || !tinyMCE.get('compose-body')) && input_message.value == '' && !confirm(this.get_label('nobodywarning'))) |
| | | { |
| | | input_message.focus(); |
| | | return false; |
| | | } |
| | | else if (window.tinyMCE && tinyMCE.get('compose-body') && !tinyMCE.get('compose-body').getContent() && !confirm(this.get_label('nobodywarning'))) |
| | | { |
| | | tinyMCE.get('compose-body').focus(); |
| | | return false; |
| | | } |
| | | |
| | | return true; |
| | | }; |
| | | |
| | | this.display_spellcheck_controls = function(vis) |
| | | { |
| | | if (this.env.spellcheck) { |
| | | this.env.spellcheck.check_link.style.visibility = vis ? 'visible' : 'hidden'; |
| | | this.env.spellcheck.switch_lan_pic.style.visibility = vis ? 'visible' : 'hidden'; |
| | | } |
| | | }; |
| | | |
| | | this.set_spellcheck_state = function(s) |
| | | { |
| | |
| | | }; |
| | | |
| | | |
| | | this.sent_successfully = function(msg) |
| | | this.sent_successfully = function(type, msg) |
| | | { |
| | | this.list_mailbox(); |
| | | this.display_message(msg, 'confirmation', true); |
| | | this.display_message(msg, type, true); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | var id, frame, ref = this; |
| | | if (id = list.get_single_selection()) |
| | | this.preview_timer = window.setTimeout(function(){ ref.load_contact(id, 'show'); }, this.dblclick_time + 10); |
| | | this.preview_timer = window.setTimeout(function(){ ref.load_contact(id, 'show'); }, 200); |
| | | else if (this.env.contentframe) |
| | | this.show_contentframe(false); |
| | | |
| | | this.enable_command('edit', id?true:false); |
| | | this.enable_command('compose', list.selection.length > 0); |
| | | this.enable_command('edit', (id && this.env.address_sources && !this.env.address_sources[this.env.source].readonly) ? true : false); |
| | | this.enable_command('delete', list.selection.length && this.env.address_sources && !this.env.address_sources[this.env.source].readonly); |
| | | |
| | | return false; |
| | |
| | | }; |
| | | |
| | | |
| | | // replace content of mailboxname display |
| | | this.set_mailboxname = function(content) |
| | | { |
| | | if (this.gui_objects.mailboxname && content) |
| | | this.gui_objects.mailboxname.innerHTML = content; |
| | | }; |
| | | |
| | | // replace content of quota display |
| | | this.set_quota = function(content) |
| | | { |
| | |
| | | { |
| | | |
| | | case 'delete': |
| | | if (this.task == 'addressbook') |
| | | { |
| | | var uid = this.contact_list.get_selection(); |
| | | this.enable_command('compose', (uid && this.contact_list.rows[uid])); |
| | | this.enable_command('delete', 'edit', (uid && this.contact_list.rows[uid] && this.env.address_sources && !this.env.address_sources[this.env.source].readonly)); |
| | | break; |
| | | } |
| | | case 'moveto': |
| | | if (this.env.action=='show') |
| | | this.command('list'); |
| | | else if (this.message_list) |
| | | this.message_list.init(); |
| | | |
| | | |
| | | case 'purge': |
| | | case 'expunge': |
| | | if (!this.env.messagecount) |
| | | if (!this.env.messagecount && this.task == 'mail') |
| | | { |
| | | // clear preview pane content |
| | | if (this.env.contentframe) |
| | |
| | | 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': |
| | |
| | | |
| | | case 'check-recent': |
| | | case 'getunread': |
| | | this.enable_command('show', 'expunge', 'select-all', 'select-none', 'sort', (this.env.messagecount > 0)); |
| | | var mailboxtest = (this.env.mailbox == this.env.trash_mailbox || this.env.mailbox == this.env.junk_mailbox |
| | | if (this.task == 'mail') |
| | | { |
| | | this.enable_command('show', 'expunge', 'select-all', 'select-none', 'sort', (this.env.messagecount > 0)); |
| | | var mailboxtest = (this.env.mailbox == this.env.trash_mailbox || this.env.mailbox == this.env.junk_mailbox |
| | | || this.env.mailbox.match('^' + RegExp.escape(this.env.trash_mailbox) + RegExp.escape(this.env.delimiter)) |
| | | || this.env.mailbox.match('^' + RegExp.escape(this.env.junk_mailbox) + RegExp.escape(this.env.delimiter))) ? true : false; |
| | | |
| | | this.enable_command('purge', (this.env.messagecount && mailboxtest)); |
| | | |
| | | this.enable_command('purge', (this.env.messagecount && mailboxtest)); |
| | | } |
| | | break; |
| | | |
| | | } |