From 7f9d71bf1fb0f0589f328366984e30d342a08882 Mon Sep 17 00:00:00 2001 From: svncommit <devs@roundcube.net> Date: Fri, 29 Aug 2008 03:48:23 -0400 Subject: [PATCH] Display sum of subfolders unread count for collapsed folder. --- program/js/app.js | 29 ++++++++++++++++++++++++++++- 1 files changed, 28 insertions(+), 1 deletions(-) diff --git a/program/js/app.js b/program/js/app.js index 3c5a11d..3fb21bc 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -1171,6 +1171,7 @@ this.set_env('collapsed_folders', this.env.collapsed_folders+'&'+escape(id)+'&'); } this.http_post('save-pref', '_name=collapsed_folders&_value='+escape(this.env.collapsed_folders)); + this.set_unread_count_display(id, false); } } @@ -3482,9 +3483,30 @@ var reg, text_obj, item; if (item = this.get_folder_li(mbox)) { - // set new text + item.setAttribute('count', count); + this.set_unread_count_display(mbox, set_title); + } + } + + + // update the mailbox count display + this.set_unread_count_display = function(mbox, set_title) + { + var reg, text_obj, item, count, div, children; + if (item = this.get_folder_li(mbox)) + { + count = parseInt(item.getAttribute('count') ? item.getAttribute('count') : 0); text_obj = item.getElementsByTagName('a')[0]; reg = /\s+\([0-9]+\)$/i; + + div = item.getElementsByTagName('div')[0]; + if (div.className.match(/collapsed/)) + { + // add children's counters + children = item.getElementsByTagName('li'); + for (var i=0; i<children.length; i++) + count = count+parseInt(children[i].getAttribute('count') ? children[i].getAttribute('count') : 0); + } if (count && text_obj.innerHTML.match(reg)) text_obj.innerHTML = text_obj.innerHTML.replace(reg, ' ('+count+')'); @@ -3493,6 +3515,11 @@ else text_obj.innerHTML = text_obj.innerHTML.replace(reg, ''); + // set parent's display + reg = new RegExp(RegExp.escape(this.env.delimiter) + '[^' + RegExp.escape(this.env.delimiter) + ']+'); + if (mbox.match(reg)) + this.set_unread_count_display(mbox.replace(reg, ''), false); + // set the right classes this.set_classname(item, 'unread', count>0 ? true : false); } -- Gitblit v1.9.1