|
|
@ -929,11 +929,11 @@ function rcmail_mailbox_list($attrib)
|
|
|
|
$out = $select->show();
|
|
|
|
$out = $select->show();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
$out = html::tag('ul', $attrib, rcmail_render_folder_tree_html($a_mailboxes, $mbox_name, $attrib['maxlength'], $attrib['realnames']), html::$common_attrib);
|
|
|
|
$js_mailboxlist = array();
|
|
|
|
}
|
|
|
|
$out = html::tag('ul', $attrib, rcmail_render_folder_tree_html($a_mailboxes, $mbox_name, $js_mailboxlist, $attrib), html::$common_attrib);
|
|
|
|
|
|
|
|
|
|
|
|
if ($type=='ul') {
|
|
|
|
|
|
|
|
$RCMAIL->output->add_gui_object('mailboxlist', $attrib['id']);
|
|
|
|
$RCMAIL->output->add_gui_object('mailboxlist', $attrib['id']);
|
|
|
|
|
|
|
|
$RCMAIL->output->set_env('mailboxes', $js_mailboxlist);
|
|
|
|
$RCMAIL->output->set_env('collapsed_folders', $RCMAIL->config->get('collapsed_folders'));
|
|
|
|
$RCMAIL->output->set_env('collapsed_folders', $RCMAIL->config->get('collapsed_folders'));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -975,26 +975,28 @@ function rcmail_mailbox_select($p = array())
|
|
|
|
function rcmail_build_folder_tree(&$arrFolders, $folder, $delm='/', $path='')
|
|
|
|
function rcmail_build_folder_tree(&$arrFolders, $folder, $delm='/', $path='')
|
|
|
|
{
|
|
|
|
{
|
|
|
|
$pos = strpos($folder, $delm);
|
|
|
|
$pos = strpos($folder, $delm);
|
|
|
|
if ($pos !== false)
|
|
|
|
if ($pos !== false) {
|
|
|
|
{
|
|
|
|
|
|
|
|
$subFolders = substr($folder, $pos+1);
|
|
|
|
$subFolders = substr($folder, $pos+1);
|
|
|
|
$currentFolder = substr($folder, 0, $pos);
|
|
|
|
$currentFolder = substr($folder, 0, $pos);
|
|
|
|
|
|
|
|
$virtual = !isset($arrFolders[$currentFolder]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else {
|
|
|
|
{
|
|
|
|
|
|
|
|
$subFolders = false;
|
|
|
|
$subFolders = false;
|
|
|
|
$currentFolder = $folder;
|
|
|
|
$currentFolder = $folder;
|
|
|
|
|
|
|
|
$virtual = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$path .= $currentFolder;
|
|
|
|
$path .= $currentFolder;
|
|
|
|
|
|
|
|
|
|
|
|
if (!isset($arrFolders[$currentFolder]))
|
|
|
|
if (!isset($arrFolders[$currentFolder])) {
|
|
|
|
{
|
|
|
|
|
|
|
|
$arrFolders[$currentFolder] = array(
|
|
|
|
$arrFolders[$currentFolder] = array(
|
|
|
|
'id' => $path,
|
|
|
|
'id' => $path,
|
|
|
|
'name' => rcube_charset_convert($currentFolder, 'UTF-7'),
|
|
|
|
'name' => rcube_charset_convert($currentFolder, 'UTF-7'),
|
|
|
|
|
|
|
|
'virtual' => $virtual,
|
|
|
|
'folders' => array());
|
|
|
|
'folders' => array());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
$arrFolders[$currentFolder]['virtual'] = $virtual;
|
|
|
|
|
|
|
|
|
|
|
|
if (!empty($subFolders))
|
|
|
|
if (!empty($subFolders))
|
|
|
|
rcmail_build_folder_tree($arrFolders[$currentFolder]['folders'], $subFolders, $delm, $path.$delm);
|
|
|
|
rcmail_build_folder_tree($arrFolders[$currentFolder]['folders'], $subFolders, $delm, $path.$delm);
|
|
|
@ -1005,26 +1007,28 @@ function rcmail_build_folder_tree(&$arrFolders, $folder, $delm='/', $path='')
|
|
|
|
* Return html for a structured list <ul> for the mailbox tree
|
|
|
|
* Return html for a structured list <ul> for the mailbox tree
|
|
|
|
* @access private
|
|
|
|
* @access private
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
function rcmail_render_folder_tree_html(&$arrFolders, &$mbox_name, $maxlength, $realnames=false, $nestLevel=0)
|
|
|
|
function rcmail_render_folder_tree_html(&$arrFolders, &$mbox_name, &$jslist, $attrib, $nestLevel=0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
global $RCMAIL, $CONFIG;
|
|
|
|
global $RCMAIL, $CONFIG;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$maxlength = intval($attrib['maxlength']);
|
|
|
|
|
|
|
|
$realnames = (bool)$attrib['realnames'];
|
|
|
|
|
|
|
|
$msgcounts = $RCMAIL->imap->get_cache('messagecount');
|
|
|
|
|
|
|
|
|
|
|
|
$idx = 0;
|
|
|
|
$idx = 0;
|
|
|
|
$out = '';
|
|
|
|
$out = '';
|
|
|
|
foreach ($arrFolders as $key => $folder)
|
|
|
|
foreach ($arrFolders as $key => $folder) {
|
|
|
|
{
|
|
|
|
|
|
|
|
$zebra_class = (($nestLevel+1)*$idx) % 2 == 0 ? 'even' : 'odd';
|
|
|
|
$zebra_class = (($nestLevel+1)*$idx) % 2 == 0 ? 'even' : 'odd';
|
|
|
|
$title = null;
|
|
|
|
$title = null;
|
|
|
|
|
|
|
|
|
|
|
|
if (($folder_class = rcmail_folder_classname($folder['id'])) && !$realnames)
|
|
|
|
if (($folder_class = rcmail_folder_classname($folder['id'])) && !$realnames) {
|
|
|
|
$foldername = rcube_label($folder_class);
|
|
|
|
$foldername = rcube_label($folder_class);
|
|
|
|
else
|
|
|
|
}
|
|
|
|
{
|
|
|
|
else {
|
|
|
|
$foldername = $folder['name'];
|
|
|
|
$foldername = $folder['name'];
|
|
|
|
|
|
|
|
|
|
|
|
// shorten the folder name to a given length
|
|
|
|
// shorten the folder name to a given length
|
|
|
|
if ($maxlength && $maxlength>1)
|
|
|
|
if ($maxlength && $maxlength > 1) {
|
|
|
|
{
|
|
|
|
|
|
|
|
$fname = abbreviate_string($foldername, $maxlength);
|
|
|
|
$fname = abbreviate_string($foldername, $maxlength);
|
|
|
|
if ($fname != $foldername)
|
|
|
|
if ($fname != $foldername)
|
|
|
|
$title = $foldername;
|
|
|
|
$title = $foldername;
|
|
|
@ -1054,28 +1058,38 @@ function rcmail_render_folder_tree_html(&$arrFolders, &$mbox_name, $maxlength, $
|
|
|
|
$classes[] = 'selected';
|
|
|
|
$classes[] = 'selected';
|
|
|
|
|
|
|
|
|
|
|
|
$collapsed = preg_match('/&'.rawurlencode($folder['id']).'&/', $RCMAIL->config->get('collapsed_folders'));
|
|
|
|
$collapsed = preg_match('/&'.rawurlencode($folder['id']).'&/', $RCMAIL->config->get('collapsed_folders'));
|
|
|
|
|
|
|
|
$unread = $msgcounts ? intval($msgcounts[$folder['id']]['UNSEEN']) : 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($folder['virtual'])
|
|
|
|
|
|
|
|
$classes[] = 'virtual';
|
|
|
|
|
|
|
|
else if ($unread)
|
|
|
|
|
|
|
|
$classes[] = 'unread';
|
|
|
|
|
|
|
|
|
|
|
|
$js_name = JQ($folder['id']);
|
|
|
|
$js_name = JQ($folder['id']);
|
|
|
|
|
|
|
|
$html_name = Q($foldername . ($unread ? " ($unread)" : ''));
|
|
|
|
|
|
|
|
$link_attrib = $folder['virtual'] ? array() : array(
|
|
|
|
|
|
|
|
'href' => rcmail_url('', array('_mbox' => $folder['id'])),
|
|
|
|
|
|
|
|
'onclick' => sprintf("return %s.command('list','%s',this)", JS_OBJECT_NAME, $js_name),
|
|
|
|
|
|
|
|
'title' => $title,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
$out .= html::tag('li', array(
|
|
|
|
$out .= html::tag('li', array(
|
|
|
|
'id' => "rcmli".$folder_id,
|
|
|
|
'id' => "rcmli".$folder_id,
|
|
|
|
'class' => join(' ', $classes),
|
|
|
|
'class' => join(' ', $classes),
|
|
|
|
'noclose' => true),
|
|
|
|
'noclose' => true),
|
|
|
|
html::a(array(
|
|
|
|
html::a($link_attrib, $html_name) .
|
|
|
|
'href' => rcmail_url('', array('_mbox' => $folder['id'])),
|
|
|
|
|
|
|
|
'onclick' => sprintf("return %s.command('list','%s',this)", JS_OBJECT_NAME, $js_name),
|
|
|
|
|
|
|
|
'onmouseover' => sprintf("return %s.focus_folder('%s')", JS_OBJECT_NAME, $js_name),
|
|
|
|
|
|
|
|
'onmouseout' => sprintf("return %s.unfocus_folder('%s')", JS_OBJECT_NAME, $js_name),
|
|
|
|
|
|
|
|
'onmouseup' => sprintf("return %s.folder_mouse_up('%s')", JS_OBJECT_NAME, $js_name),
|
|
|
|
|
|
|
|
'title' => $title,
|
|
|
|
|
|
|
|
), Q($foldername)) .
|
|
|
|
|
|
|
|
(!empty($folder['folders']) ? html::div(array(
|
|
|
|
(!empty($folder['folders']) ? html::div(array(
|
|
|
|
'class' => ($collapsed ? 'collapsed' : 'expanded'),
|
|
|
|
'class' => ($collapsed ? 'collapsed' : 'expanded'),
|
|
|
|
'style' => "position:absolute",
|
|
|
|
'style' => "position:absolute",
|
|
|
|
'onclick' => sprintf("%s.command('collapse-folder', '%s')", JS_OBJECT_NAME, $js_name)
|
|
|
|
'onclick' => sprintf("%s.command('collapse-folder', '%s')", JS_OBJECT_NAME, $js_name)
|
|
|
|
), ' ') : ''));
|
|
|
|
), ' ') : ''));
|
|
|
|
|
|
|
|
|
|
|
|
if (!empty($folder['folders']))
|
|
|
|
$jslist[$folder_id] = array('id' => $folder['id'], 'name' => $foldername, 'virtual' => $folder['virtual']);
|
|
|
|
$out .= "\n<ul" . ($collapsed ? " style=\"display: none;\"" : "") . ">\n" . rcmail_render_folder_tree_html($folder['folders'], $mbox_name, $maxlength, $realnames, $nestLevel+1) . "</ul>\n";
|
|
|
|
|
|
|
|
|
|
|
|
if (!empty($folder['folders'])) {
|
|
|
|
|
|
|
|
$out .= html::tag('ul', array('style' => ($collapsed ? "display:none;" : null)),
|
|
|
|
|
|
|
|
rcmail_render_folder_tree_html($folder['folders'], $mbox_name, $jslist, $attrib, $nestLevel+1));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$out .= "</li>\n";
|
|
|
|
$out .= "</li>\n";
|
|
|
|
$idx++;
|
|
|
|
$idx++;
|
|
|
|