summaryrefslogtreecommitdiff
path: root/program/include
diff options
context:
space:
mode:
authorsvncommit <devs@roundcube.net>2008-08-28 08:15:31 +0000
committersvncommit <devs@roundcube.net>2008-08-28 08:15:31 +0000
commitf5aa16541e6901d2fc543f9044be1c898365b61e (patch)
tree3b469ffaa730a06cfb651d4ca9bb7677f720fcf3 /program/include
parent79aeb308cb195dcc48004851795e811cee6f8ca1 (diff)
Add folder hierarchy collapsing.
Diffstat (limited to 'program/include')
-rw-r--r--program/include/html.php4
-rw-r--r--program/include/main.inc12
2 files changed, 12 insertions, 4 deletions
diff --git a/program/include/html.php b/program/include/html.php
index 704d10a0a..7ab82d820 100644
--- a/program/include/html.php
+++ b/program/include/html.php
@@ -98,7 +98,7 @@ class html
if (is_string($attr)) {
$attr = array('class' => $attr);
}
- return self::tag('div', $attr, $cont, self::$common_attrib);
+ return self::tag('div', $attr, $cont, array_merge(self::$common_attrib, array('onclick')));
}
/**
@@ -644,4 +644,4 @@ class html_table extends html
}
}
-?> \ No newline at end of file
+?>
diff --git a/program/include/main.inc b/program/include/main.inc
index 2b4797873..869921edb 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -1000,7 +1000,7 @@ function rcmail_build_folder_tree(&$arrFolders, $folder, $delm='/', $path='')
*/
function rcmail_render_folder_tree_html(&$arrFolders, &$mbox_name, $maxlength, $realnames=false, $nestLevel=0)
{
- global $COMM_PATH, $IMAP, $CONFIG, $OUTPUT;
+ global $COMM_PATH, $IMAP, $CONFIG, $OUTPUT, $RCMAIL;
$idx = 0;
$out = '';
@@ -1046,11 +1046,17 @@ function rcmail_render_folder_tree_html(&$arrFolders, &$mbox_name, $maxlength, $
if ($folder['id'] == $mbox_name)
$classes[] = 'selected';
+ $collapsed = preg_match('/&'.rawurlencode($folder['id']).'&/', $RCMAIL->config->get('collapsed_folders'));
+
$js_name = JQ($folder['id']);
$out .= html::tag('li', array(
'id' => "rcmli".$folder_id,
'class' => join(' ', $classes),
'noclose' => true),
+ html::div(array(
+ 'class' => empty($folder['folders']) ? 'nocollapse' : ($collapsed ? 'collapsed' : 'expanded'),
+ 'onclick' => sprintf("%s.command('collapse-folder', '%s')", JS_OBJECT_NAME, $js_name)
+ ), '&nbsp;') .
html::a(array(
'href' => rcmail_url('', array('_mbox' => $folder['id'])),
'onclick' => sprintf("return %s.command('list','%s',this)", JS_OBJECT_NAME, $js_name),
@@ -1061,12 +1067,14 @@ function rcmail_render_folder_tree_html(&$arrFolders, &$mbox_name, $maxlength, $
), Q($foldername)));
if (!empty($folder['folders']))
- $out .= "\n<ul>\n" . rcmail_render_folder_tree_html($folder['folders'], $mbox_name, $maxlength, $realnames, $nestLevel+1) . "</ul>\n";
+ $out .= "\n<ul" . ($collapsed ? " style=\"display: none;\"" : "") . ">\n" . rcmail_render_folder_tree_html($folder['folders'], $mbox_name, $maxlength, $realnames, $nestLevel+1) . "</ul>\n";
$out .= "</li>\n";
$idx++;
}
+ $OUTPUT->set_env('collapsed_folders', $RCMAIL->config->get('collapsed_folders'));
+
return $out;
}