From 1966c53255495890dd7f25c31bac73d97ecc3291 Mon Sep 17 00:00:00 2001 From: svncommit <devs@roundcube.net> Date: Mon, 19 Jun 2006 15:04:51 -0400 Subject: [PATCH] Added Drafts support (Feature #1326839) (richs) --- program/js/app.js | 116 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 98 insertions(+), 18 deletions(-) diff --git a/program/js/app.js b/program/js/app.js index a834582..c0dac3f 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -142,7 +142,13 @@ } if (this.env.action=='compose') + { this.enable_command('add-attachment', 'send-attachment', 'send', true); + if (this.env.spellcheck) + this.enable_command('spellcheck', true); + if (this.env.drafts_mailbox) + this.enable_command('savedraft', true); + } if (this.env.messagecount) this.enable_command('select-all', 'select-none', 'sort', 'expunge', true); @@ -255,15 +261,29 @@ }; // reset last clicked if user clicks on anything other than the message table - this.reset_click = function() - { + this.reset_click = function() { this.in_message_list = false; - }; + for (var n=0; n<this.selection.length; n++) { + id = this.selection[n]; + if (this.list_rows[id].obj) { + this.set_classname(this.list_rows[id].obj, 'selected', false); + this.set_classname(this.list_rows[id].obj, 'unfocused', true); + } + } + }; this.click_on_list = function(e) { if (!e) e = window.event; + + for (var n=0; n<this.selection.length; n++) { + id = this.selection[n]; + if (this.list_rows[id].obj) { + this.set_classname(this.list_rows[id].obj, 'selected', true); + this.set_classname(this.list_rows[id].obj, 'unfocused', false); + } + } this.in_message_list = true; e.cancelBubble = true; @@ -658,7 +678,17 @@ { var uid = this.get_single_uid(); if (uid && (!this.env.uid || uid != this.env.uid)) - this.show_message(uid); + { + if (this.env.mailbox==this.env.drafts_mailbox) + { + this.set_busy(true); + location.href = this.env.comm_path+'&_action=compose&_draft_uid='+uid+'&_mbox='+escape(this.env.mailbox); + } + else + { + this.show_message(uid); + } + } } else if (this.task=='addressbook') { @@ -815,9 +845,14 @@ case 'compose': var url = this.env.comm_path+'&_action=compose'; - + + if (this.task=='mail' && this.env.mailbox==this.env.drafts_mailbox) + { + var uid = this.get_single_uid(); + url += '&_draft_uid='+uid+'&_mbox='+escape(this.env.mailbox); + } // modify url if we're in addressbook - if (this.task=='addressbook') + else if (this.task=='addressbook') { url = this.get_task_url('mail', url); var a_cids = new Array(); @@ -861,7 +896,25 @@ parent.location.href = url; else location.href = url; - break; + break; + + case 'spellcheck': + if (this.env.spellcheck && this.env.spellcheck.spellCheck) + this.env.spellcheck.spellCheck(this.env.spellcheck.check_link); + break; + + case 'savedraft': + if (!this.gui_objects.messageform) + break; + + // if saving Drafts is disabled in main.inc.php + if (!this.env.drafts_mailbox) + break; + + this.set_busy(true, 'savingmessage'); + var form = this.gui_objects.messageform; + form.submit(); + break; case 'send': if (!this.gui_objects.messageform) @@ -873,6 +926,7 @@ // all checks passed, send message this.set_busy(true, 'sendingmessage'); var form = this.gui_objects.messageform; + form._draft.value=''; form.submit(); break; @@ -1148,7 +1202,15 @@ // row was double clicked if (this.task=='mail' && this.list_rows && this.list_rows[id].clicked && this.in_selection(id)) { - this.show_message(id); + if (this.env.mailbox==this.env.drafts_mailbox) + { + this.set_busy(true); + location.href = this.env.comm_path+'&_action=compose&_draft_uid='+id+'&_mbox='+escape(this.env.mailbox); + } + else + { + this.show_message(id); + } return false; } else if (this.task=='addressbook') @@ -1253,7 +1315,7 @@ if (!this.in_selection(id)) // select row { this.selection[this.selection.length] = id; - this.set_classname(this.list_rows[id].obj, 'selected', true); + this.set_classname(this.list_rows[id].obj, 'selected', true); } else // unselect row { @@ -1262,6 +1324,7 @@ var a_post = this.selection.slice(p+1, this.selection.length); this.selection = a_pre.concat(a_post); this.set_classname(this.list_rows[id].obj, 'selected', false); + this.set_classname(this.list_rows[id].obj, 'unfocused', false); } selected = (this.selection.length==1); } @@ -1269,8 +1332,18 @@ // enable/disable commands for message if (this.task=='mail') { - this.enable_command('show', 'reply', 'reply-all', 'forward', 'print', selected); - this.enable_command('delete', 'moveto', this.selection.length>0 ? true : false); + if (this.env.mailbox==this.env.drafts_mailbox) + { + //alert(this.env.mailbox); + //this.disable_command('reply', 'reply-all', 'forward', 'print', 'moveto'); + this.enable_command('show', selected); + this.enable_command('delete', this.selection.length>0 ? true : false); + } + else + { + this.enable_command('show', 'reply', 'reply-all', 'forward', 'print', selected); + this.enable_command('delete', 'moveto', this.selection.length>0 ? true : false); + } } else if (this.task=='addressbook') { @@ -1334,9 +1407,10 @@ this.clear_selection = function() { for(var n=0; n<this.selection.length; n++) - if (this.list_rows[this.selection[n]]) + if (this.list_rows[this.selection[n]]) { this.set_classname(this.list_rows[this.selection[n]].obj, 'selected', false); - + this.set_classname(this.list_rows[this.selection[n]].obj, 'unfocused', false); + } this.selection = new Array(); }; @@ -1882,12 +1956,15 @@ var message = input_message ? input_message.value : ''; var sig, p; + if (!this.env.identity) + this.env.identity = id + // remove the 'old' signature if (this.env.identity && this.env.signatures && this.env.signatures[this.env.identity]) { sig = this.env.signatures[this.env.identity]; - if (sig.indexOf('-- ')!=0) - sig = '-- \n'+sig; + if (sig.indexOf('--')!=0) + sig = '--\n'+sig; p = message.lastIndexOf(sig); if (p>=0) @@ -1898,8 +1975,8 @@ if (this.env.signatures && this.env.signatures[id]) { sig = this.env.signatures[id]; - if (sig.indexOf('-- ')!=0) - sig = '-- \n'+sig; + if (sig.indexOf('--')!=0) + sig = '--\n'+sig; message += '\n'+sig; } @@ -2075,6 +2152,7 @@ highlight.removeAttribute('id'); //highlight.removeAttribute('class'); this.set_classname(highlight, 'selected', false); + this.set_classname(highlight, 'unfocused', false); } if (next) @@ -2813,8 +2891,10 @@ var current_li = document.getElementById('rcmbx'+s_current); var mbox_li = document.getElementById('rcmbx'+s_mbox); - if (current_li) + if (current_li) { this.set_classname(current_li, 'selected', false); + this.set_classname(current_li, 'unfocused', false); + } if (mbox_li) this.set_classname(mbox_li, 'selected', true); } -- Gitblit v1.9.1