diff options
-rw-r--r-- | program/js/app.js | 265 | ||||
-rw-r--r-- | program/js/list.js | 2 | ||||
-rw-r--r-- | program/steps/mail/show.inc | 4 |
3 files changed, 106 insertions, 165 deletions
diff --git a/program/js/app.js b/program/js/app.js index 0aceb3008..d1341c7c6 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -758,7 +758,6 @@ function rcube_webmail() if (props._row.uid) { uid = props._row.uid; - this.message_list.dont_select = true; // toggle flagged/unflagged if (this.message_list.rows[uid].flagged) flag = 'unflagged'; @@ -1345,7 +1344,6 @@ function rcube_webmail() /********* (message) list functionality *********/ /*********************************************************/ - // when user doble-clicks on a row this.show_message = function(id, safe, preview) { @@ -1540,6 +1538,98 @@ function rcube_webmail() || this.env.mailbox.match('^' + RegExp.escape(this.env.junk_mailbox) + RegExp.escape(this.env.delimiter)))); }; + // set message icon + this.set_message_icon = function(uid) + { + var icn_src; + var rows = this.message_list.rows; + + if (!rows[uid]) + return false; + + if (rows[uid].deleted && this.env.deletedicon) + icn_src = this.env.deletedicon; + else if (rows[uid].replied && this.env.repliedicon) + { + if (rows[uid].forwarded && this.env.forwardedrepliedicon) + icn_src = this.env.forwardedrepliedicon; + else + icn_src = this.env.repliedicon; + } + else if (rows[uid].forwarded && this.env.forwardedicon) + icn_src = this.env.forwardedicon; + else if (rows[uid].unread && this.env.unreadicon) + icn_src = this.env.unreadicon; + else if (this.env.messageicon) + icn_src = this.env.messageicon; + + if (icn_src && rows[uid].icon) + rows[uid].icon.src = icn_src; + + icn_src = ''; + + if (rows[uid].flagged && this.env.flaggedicon) + icn_src = this.env.flaggedicon; + else if (this.env.unflaggedicon) + icn_src = this.env.unflaggedicon; + + if (rows[uid].flagged_icon && icn_src) + rows[uid].flagged_icon.src = icn_src; + } + + // set message status + this.set_message_status = function(uid, flag, status) + { + var rows = this.message_list.rows; + + if (!rows[uid]) return false; + + if (flag == 'unread') + rows[uid].unread = status; + else if(flag == 'deleted') + rows[uid].deleted = status; + else if (flag == 'replied') + rows[uid].replied = status; + else if (flag == 'forwarded') + rows[uid].forwarded = status; + else if (flag == 'flagged') + rows[uid].flagged = status; + } + + // set message row status, class and icon + this.set_message = function(uid, flag, status) + { + var rows = this.message_list.rows; + + if (!rows[uid]) return false; + + if (flag) + this.set_message_status(uid, flag, status); + + if (rows[uid].unread && rows[uid].classname.indexOf('unread')<0) + { + rows[uid].classname += ' unread'; + this.set_classname(rows[uid].obj, 'unread', true); + } + else if (!rows[uid].unread && rows[uid].classname.indexOf('unread')>=0) + { + rows[uid].classname = rows[uid].classname.replace(/\s*unread/, ''); + this.set_classname(rows[uid].obj, 'unread', false); + } + + if (rows[uid].deleted && rows[uid].classname.indexOf('deleted')<0) + { + rows[uid].classname += ' deleted'; + this.set_classname(rows[uid].obj, 'deleted', true); + } + else if (!rows[uid].deleted && rows[uid].classname.indexOf('deleted')>=0) + { + rows[uid].classname = rows[uid].classname.replace(/\s*deleted/, ''); + this.set_classname(rows[uid].obj, 'deleted', false); + } + + this.set_message_icon(uid); + } // move selected messages to the specified mailbox this.move_messages = function(mbox) @@ -1639,20 +1729,9 @@ function rcube_webmail() else { 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) - rows[id].icon.src = this.env.deletedicon; + rows[id].unread = false; + this.set_message(id); } } } @@ -1727,96 +1806,18 @@ function rcube_webmail() this.toggle_read_status = function(flag, a_uids) { // mark all message rows as read/unread - var icn_src; - var rows = this.message_list.rows; for (var i=0; i<a_uids.length; i++) - { - uid = a_uids[i]; - if (rows[uid]) - { - rows[uid].unread = (flag=='unread' ? true : false); - - if (rows[uid].classname.indexOf('unread')<0 && rows[uid].unread) - { - rows[uid].classname += ' unread'; - this.set_classname(rows[uid].obj, 'unread', true); - - if (this.env.unreadicon) - icn_src = this.env.unreadicon; - } - else if (!rows[uid].unread) - { - rows[uid].classname = rows[uid].classname.replace(/\s*unread/, ''); - this.set_classname(rows[uid].obj, 'unread', false); - - if (this.env.messageicon) - icn_src = this.env.messageicon; - } - - if (rows[uid].icon && icn_src - && !(rows[uid].replied && this.env.repliedicon) - && !(rows[uid].forwarded && this.env.forwardedicon) - && !(rows[uid].deleted && this.env.deletedicon)) - rows[uid].icon.src = icn_src; - } - } + this.set_message(a_uids[i], 'unread', (flag=='unread' ? true : false)); this.http_post('mark', '_uid='+a_uids.join(',')+'&_flag='+flag); }; - // set class to read/unread - this.mark_as_read_from_preview = function(uid) - { - var icn_src; - var rows = parent.rcmail.message_list.rows; - if(rows[uid].unread) - { - rows[uid].unread = false; - rows[uid].classname = rows[uid].classname.replace(/\s*unread/, ''); - parent.rcmail.set_classname(rows[uid].obj, 'unread', false); - - if (rows[uid].deleted && parent.rcmail.env.deletedicon) - icn_src = parent.rcmail.env.deletedicon; - else if (rows[uid].replied && parent.rcmail.env.repliedicon) - { - if (rows[uid].forwarded && parent.rcmail.env.forwardedrepliedicon) - icn_src = parent.rcmail.env.forwardedrepliedicon; - else - icn_src = parent.rcmail.env.repliedicon; - } - else if (rows[uid].forwarded && parent.rcmail.env.forwardedicon) - icn_src = parent.rcmail.env.forwardedicon; - else if (parent.rcmail.env.messageicon) - icn_src = parent.rcmail.env.messageicon; - - if (rows[uid].icon && icn_src) - rows[uid].icon.src = icn_src; - } - } - - // set image to flagged or unflagged this.toggle_flagged_status = function(flag, a_uids) { // mark all message rows as flagged/unflagged - var icn_src; - var rows = this.message_list.rows; for (var i=0; i<a_uids.length; i++) - { - uid = a_uids[i]; - if (rows[uid]) - { - rows[uid].flagged = (flag=='flagged' ? true : false); - - if (rows[uid].flagged && this.env.flaggedicon) - icn_src = this.env.flaggedicon; - else if (this.env.unflaggedicon) - icn_src = this.env.unflaggedicon; - - if (rows[uid].flagged_icon && icn_src) - rows[uid].flagged_icon.src = icn_src; - } - } + this.set_message(a_uids[i], 'flagged', (flag=='flagged' ? true : false)); this.http_post('mark', '_uid='+a_uids.join(',')+'&_flag='+flag); }; @@ -1828,7 +1829,7 @@ function rcube_webmail() if (a_uids.length==1) { - if (!rows.length || (rows[a_uids[0]] && rows[a_uids[0]].classname.indexOf('deleted') < 0)) + if (!rows.length || (rows[a_uids[0]] && !rows[a_uids[0]].deleted)) this.flag_as_deleted(a_uids); else this.flag_as_undeleted(a_uids); @@ -1841,7 +1842,7 @@ function rcube_webmail() { uid = a_uids[i]; if (rows[uid]) { - if (rows[uid].classname.indexOf('deleted')<0) + if (!rows[uid].deleted) { all_deleted = false; break; @@ -1860,39 +1861,8 @@ function rcube_webmail() this.flag_as_undeleted = function(a_uids) { - var icn_src; - 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]) { - rows[uid].deleted = false; - - if (rows[uid].classname.indexOf('deleted') > 0) - { - rows[uid].classname = rows[uid].classname.replace(/\s*deleted/, ''); - this.set_classname(rows[uid].obj, 'deleted', false); - } - - if (rows[uid].unread && this.env.unreadicon) - icn_src = this.env.unreadicon; - else if (rows[uid].replied && this.env.repliedicon) - { - if (rows[uid].forwarded && this.env.forwardedrepliedicon) - icn_src = this.env.forwardedrepliedicon; - else - icn_src = this.env.repliedicon; - } - else if (rows[uid].forwarded && this.env.forwardedicon) - icn_src = this.env.forwardedicon; - else if (this.env.messageicon) - icn_src = this.env.messageicon; - - if (rows[uid].icon && icn_src) - rows[uid].icon.src = icn_src; - } - } + this.set_message(a_uids[i], 'deleted', false); this.http_post('mark', '_uid='+a_uids.join(',')+'&_flag=undelete'); return true; @@ -1910,22 +1880,7 @@ function rcube_webmail() uid = a_uids[i]; if (rows[uid]) { - rows[uid].deleted = true; - - if (rows[uid].classname.indexOf('deleted')<0) - { - rows[uid].classname += ' deleted'; - this.set_classname(rows[uid].obj, 'deleted', true); - } - 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; - + this.set_message(uid, 'deleted', true); if (rows[uid].unread) r_uids[r_uids.length] = uid; } @@ -1957,12 +1912,7 @@ function rcube_webmail() { 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; + this.set_message(uid); } } }; @@ -2360,7 +2310,6 @@ function rcube_webmail() /********* keyboard live-search methods *********/ /*********************************************************/ - // handler for keyboard events on address-fields this.ksearch_keypress = function(e, obj) { @@ -2581,7 +2530,6 @@ function rcube_webmail() /********* address book methods *********/ /*********************************************************/ - this.contactlist_keypress = function(list) { if (list.key_pressed == list.DELETE_KEY) @@ -3510,8 +3458,6 @@ function rcube_webmail() var icon = this.env.messageicon; if (flags.deleted && this.env.deletedicon) icon = this.env.deletedicon; - else if(flags.unread && this.env.unreadicon) - icon = this.env.unreadicon; else if (flags.replied && this.env.repliedicon) { if (flags.forwarded && this.env.forwardedrepliedicon) @@ -3521,6 +3467,8 @@ function rcube_webmail() } else if (flags.forwarded && this.env.forwardedicon) icon = this.env.forwardedicon; + else if(flags.unread && this.env.unreadicon) + icon = this.env.unreadicon; var col = document.createElement('TD'); col.className = 'icon'; @@ -3656,12 +3604,6 @@ function rcube_webmail() } }; - // update parent's mailboxlist (from preview) - this.set_unread_count_from_preview = function(mbox, count, set_title) - { - parent.rcmail.set_unread_count(mbox, count, set_title); - } - // add row to contacts list this.add_contact_row = function(cid, cols, select) { @@ -4233,4 +4175,3 @@ function call_init(o) window.setTimeout('if (window[\''+o+'\'] && window[\''+o+'\'].init) { '+o+'.init(); }', bw.win ? 500 : 200); } - diff --git a/program/js/list.js b/program/js/list.js index 5da2bb15b..62d473260 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -173,7 +173,7 @@ insert_row: function(row, attop) /** - * Set focur to the list + * Set focus to the list */ focus: function(e) { diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc index 0b15c98d9..e5ea85791 100644 --- a/program/steps/mail/show.inc +++ b/program/steps/mail/show.inc @@ -71,8 +71,8 @@ if ($_GET['_uid']) { $marked = $IMAP->set_flag($MESSAGE->uid, 'SEEN'); if($RCMAIL->action == 'preview' && $marked != -1) { - $OUTPUT->command('set_unread_count_from_preview', $mbox_name, $IMAP->messagecount($mbox_name, 'UNSEEN'), ($mbox_name == 'INBOX')); - $OUTPUT->command('mark_as_read_from_preview', $MESSAGE->uid); + $OUTPUT->command('parent.set_unread_count', $mbox_name, $IMAP->messagecount($mbox_name, 'UNSEEN'), ($mbox_name == 'INBOX')); + $OUTPUT->command('parent.set_message', $MESSAGE->uid, 'unread', false); } } |