summaryrefslogtreecommitdiff
path: root/roundcubemail/program/js
diff options
context:
space:
mode:
authorrobin <robin@208e9e7b-5314-0410-a742-e7e81cd9613c>2008-08-28 08:15:31 +0000
committerrobin <robin@208e9e7b-5314-0410-a742-e7e81cd9613c>2008-08-28 08:15:31 +0000
commit1dd978d1eb57a78483a09c161146784c26cd3444 (patch)
tree680c78123a49292ccb7584cd1953d03460701771 /roundcubemail/program/js
parent13f4177df858577e8fc8b8695d385f3bdee05221 (diff)
Add folder hierarchy collapsing.
git-svn-id: https://svn.roundcube.net/trunk@1687 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/js')
-rw-r--r--roundcubemail/program/js/app.js36
1 files changed, 34 insertions, 2 deletions
diff --git a/roundcubemail/program/js/app.js b/roundcubemail/program/js/app.js
index b5073daed..f81f19d1d 100644
--- a/roundcubemail/program/js/app.js
+++ b/roundcubemail/program/js/app.js
@@ -151,7 +151,7 @@ function rcube_webmail()
this.set_message_coltypes(this.env.coltypes);
// enable mail commands
- this.enable_command('list', 'checkmail', 'compose', 'add-contact', 'search', 'reset-search', true);
+ this.enable_command('list', 'checkmail', 'compose', 'add-contact', 'search', 'reset-search', 'collapse-folder', true);
if (this.env.search_text != null && document.getElementById('quicksearchbox') != null)
document.getElementById('quicksearchbox').value = this.env.search_text;
@@ -982,6 +982,11 @@ function rcube_webmail()
this.list_contacts(this.env.source);
break;
+ // collapse/expand folder
+ case 'collapse-folder':
+ if (props)
+ this.collapse_folder(props);
+ break;
// user settings commands
case 'preferences':
@@ -1142,6 +1147,33 @@ function rcube_webmail()
this.set_classname(li, 'droptarget', false);
}
+ this.collapse_folder = function(id)
+ {
+ var div;
+ if ((li = this.get_folder_li(id)) &&
+ (div = li.getElementsByTagName("div")[0]) &&
+ (div.className.match(/collapsed/) || div.className.match(/expanded/)))
+ {
+ var ul = li.getElementsByTagName("ul")[0];
+ if (div.className.match(/collapsed/))
+ {
+ ul.style.display = '';
+ this.set_classname(div, 'collapsed', false);
+ this.set_classname(div, 'expanded', true);
+ var reg = new RegExp('&'+escape(id)+'&');
+ this.set_env('collapsed_folders', this.env.collapsed_folders.replace(reg, ''));
+ }
+ else
+ {
+ ul.style.display = 'none';
+ this.set_classname(div, 'expanded', false);
+ this.set_classname(div, 'collapsed', true);
+ 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));
+ }
+ }
+
// onmouseup handler for folder list item
this.folder_mouse_up = function(id)
{
@@ -3441,7 +3473,7 @@ function rcube_webmail()
if (item = this.get_folder_li(mbox))
{
// set new text
- text_obj = item.firstChild;
+ text_obj = item.firstChild.nextSibling;
reg = /\s+\([0-9]+\)$/i;
if (count && text_obj.innerHTML.match(reg))