| | |
| | | flagged: flags.flagged?1:0, |
| | | has_children: flags.has_children?1:0, |
| | | depth: flags.depth?flags.depth:0, |
| | | unread_children: flags.unread_children?flags.unread_children:0, |
| | | parent_uid: flags.parent_uid?flags.parent_uid:0, |
| | | unread_children: flags.unread_children || 0, |
| | | flagged_children: flags.flagged_children || 0, |
| | | parent_uid: flags.parent_uid || 0, |
| | | selected: this.select_all_mode || this.message_list.in_selection(uid), |
| | | ml: flags.ml?1:0, |
| | | ctype: flags.ctype, |
| | |
| | | |
| | | if (flags.unread_children && flags.seen && !message.expanded) |
| | | row_class += ' unroot'; |
| | | |
| | | if (flags.flagged_children && !message.expanded) |
| | | row_class += ' flaggedroot'; |
| | | } |
| | | |
| | | tree += '<span id="msgicn'+row.id+'" class="'+css_class+status_class+'" title="'+status_label+'"></span>'; |
| | |
| | | html = '<span class="attachment" title="'+label+'"></span>'; |
| | | else if (/multipart\/report/.test(flags.ctype)) |
| | | html = '<span class="report"></span>'; |
| | | else |
| | | else |
| | | html = ' '; |
| | | } |
| | | else if (c == 'status') { |
| | |
| | | { |
| | | var row = this.message_list.rows[uid]; |
| | | |
| | | // handle unread_children mark |
| | | // handle unread_children/flagged_children mark |
| | | row.expanded = !row.expanded; |
| | | this.set_unread_children(uid); |
| | | this.set_flagged_children(uid); |
| | | row.expanded = !row.expanded; |
| | | |
| | | this.message_list.expand_row(e, uid); |
| | |
| | | } |
| | | else if (flag == 'unread' && p.has_children) { |
| | | // unread_children may be undefined |
| | | p.unread_children = p.unread_children ? p.unread_children + 1 : 1; |
| | | p.unread_children = (p.unread_children || 0) + 1; |
| | | } |
| | | else if (flag == 'unflagged' && p.flagged_children) { |
| | | p.flagged_children--; |
| | | } |
| | | else if (flag == 'flagged' && p.has_children) { |
| | | p.flagged_children = (p.flagged_children || 0) + 1; |
| | | } |
| | | else { |
| | | return; |
| | |
| | | |
| | | this.set_message_icon(root); |
| | | this.set_unread_children(root); |
| | | this.set_flagged_children(root); |
| | | }; |
| | | |
| | | // update thread indicators for all messages in a thread below the specified message |
| | |
| | | |
| | | if (!row.depth) // root message: decrease roots count |
| | | count--; |
| | | else if (row.unread) { |
| | | // update unread_children for thread root |
| | | |
| | | // update unread_children for thread root |
| | | if (row.depth && row.unread) { |
| | | parent = this.message_list.find_root(uid); |
| | | rows[parent].unread_children--; |
| | | this.set_unread_children(parent); |
| | | } |
| | | |
| | | // update unread_children for thread root |
| | | if (row.depth && row.flagged) { |
| | | parent = this.message_list.find_root(uid); |
| | | rows[parent].flagged_children--; |
| | | this.set_flagged_children(parent); |
| | | } |
| | | |
| | | parent = row.parent_uid; |
| | |
| | | row = row.nextSibling; |
| | | } |
| | | |
| | | // update unread_children for roots |
| | | for (r=0; r<roots.length; r++) |
| | | // update unread_children/flagged_children for roots |
| | | for (r=0; r<roots.length; r++) { |
| | | this.set_unread_children(roots[r].uid); |
| | | this.set_flagged_children(roots[r].uid); |
| | | } |
| | | |
| | | return count; |
| | | }; |
| | |
| | | if (row.unread != status) |
| | | this.update_thread_root(uid, status ? 'unread' : 'read'); |
| | | } |
| | | else if (flag == 'flagged') { |
| | | this.update_thread_root(uid, status ? 'flagged' : 'unflagged'); |
| | | } |
| | | |
| | | if ($.inArray(flag, ['unread', 'deleted', 'replied', 'forwarded', 'flagged']) > -1) |
| | | row[flag] = status; |
| | |
| | | if (row.parent_uid) |
| | | return; |
| | | |
| | | if (!row.unread && row.unread_children && !row.expanded) |
| | | $(row.obj).addClass('unroot'); |
| | | else |
| | | $(row.obj).removeClass('unroot'); |
| | | var enable = !row.unread && row.unread_children && !row.expanded; |
| | | $(row.obj)[enable ? 'addClass' : 'removeClass']('unroot'); |
| | | }; |
| | | |
| | | // sets flaggedroot (flagged_children) class of parent row |
| | | this.set_flagged_children = function(uid) |
| | | { |
| | | var row = this.message_list.rows[uid]; |
| | | |
| | | if (row.parent_uid) |
| | | return; |
| | | |
| | | var enable = row.flagged_children && !row.expanded; |
| | | $(row.obj)[enable ? 'addClass' : 'removeClass']('flaggedroot'); |
| | | }; |
| | | |
| | | // copy selected messages to the specified mailbox |
| | |
| | | |
| | | // list recipients with missing keys |
| | | if (!isvalid && missing_keys.length) { |
| | | // load publickey.js |
| | | if (!$('script#publickeyjs').length) { |
| | | $('<script>') |
| | | .attr('id', 'publickeyjs') |
| | | .attr('src', ref.assets_path('program/js/publickey.js')) |
| | | .appendTo(document.body); |
| | | } |
| | | |
| | | // display dialog with missing keys |
| | | ref.show_popup_dialog( |
| | | ref.get_label('nopubkeyfor').replace('$email', missing_keys.join(', ')) + |