Add folder hierarchy collapsing.

release-0.6
svncommit 16 years ago
parent 79aeb308cb
commit f5aa16541e

@ -1,6 +1,10 @@
CHANGELOG RoundCube Webmail
---------------------------
2008/08/28 (robin)
----------
- Added folder hierarchy collapsing
2008/08/27 (alec)
----------
- Added options to use syslog instead of log file (#1484850)

@ -201,6 +201,14 @@ $action_map = array(
)
);
// save preference value
if ($RCMAIL->action=='save-pref')
{
$USER->save_prefs(array(get_input_value('_name', RCUBE_INPUT_POST) => get_input_value('_value', RCUBE_INPUT_POST)));
$OUTPUT->reset();
$OUTPUT->send();
}
// include task specific functions
include_once 'program/steps/'.$RCMAIL->task.'/func.inc';

@ -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
}
}
?>
?>

@ -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)
), ' ') .
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;
}

@ -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))

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

@ -284,6 +284,32 @@ td.formlinks a:visited
border-bottom: 1px solid #EBEBEB;
}
#mailboxlist li div
{
position: absolute;
padding-left: 10px;
padding-top: 2px;
padding-bottom: 2px;
margin-right: 2px;
width: 12px;
}
#mailboxlist li div.collapsed,
#mailboxlist li div.expanded
{
cursor: pointer;
}
#mailboxlist li div.collapsed
{
background: url(images/icons/collapsed.png) bottom right no-repeat;
}
#mailboxlist li div.expanded
{
background: url(images/icons/expanded.png) bottom right no-repeat;
}
#mailboxlist li.inbox
{
background-image: url(images/icons/folder-inbox.png);
@ -316,6 +342,8 @@ td.formlinks a:visited
padding-top: 2px;
padding-bottom: 2px;
text-decoration: none;
/* css hack for IE */
margin-top: expression('-12px');
}
#mailboxlist li.unread

Loading…
Cancel
Save