thomascube
2008-08-22 0ced2b9ac03e425750a76dea3ed59156b2709b4c
program/include/main.inc
@@ -876,16 +876,15 @@
 * @return string HTML code for the gui object
 */
function rcmail_mailbox_list($attrib)
  {
  global $IMAP, $CONFIG, $OUTPUT, $COMM_PATH;
  static $s_added_script = FALSE;
{
  global $IMAP, $OUTPUT;
  static $a_mailboxes;
  $attrib += array('maxlength' => 100, 'relanames' => false);
  // add some labels to client
  rcube_add_label('purgefolderconfirm');
  rcube_add_label('deletemessagesconfirm');
// $mboxlist_start = rcube_timer();
  
  $type = $attrib['type'] ? $attrib['type'] : 'ul';
  unset($attrib['type']);
@@ -897,20 +896,15 @@
  $mbox_name = $IMAP->get_mailbox_name();
  
  // build the folders tree
  if (empty($a_mailboxes))
    {
  if (empty($a_mailboxes)) {
    // get mailbox list
    $a_folders = $IMAP->list_mailboxes();
    $delimiter = $IMAP->get_hierarchy_delimiter();
    $a_mailboxes = array();
// rcube_print_time($mboxlist_start, 'list_mailboxes()');
    foreach ($a_folders as $folder)
      rcmail_build_folder_tree($a_mailboxes, $folder, $delimiter);
    }
// var_dump($a_mailboxes);
  }
  if ($type=='select') {
    $select = new html_select($attrib);
@@ -919,21 +913,45 @@
    if ($attrib['noselection'])
      $select->add(rcube_label($attrib['noselection']), '0');
    
    rcmail_render_folder_tree_select($a_mailboxes, $mbox_name, $attrib['maxlength'], $select);
    $out = $select->show($mbox_name);
    rcmail_render_folder_tree_select($a_mailboxes, $mbox_name, $attrib['maxlength'], $select, $attrib['realnames']);
    $out = $select->show();
  }
  else {
    $out = html::tag('ul', $attrib, rcmail_render_folder_tree_html($a_mailboxes, $mbox_name, $attrib['maxlength']), html::$common_attrib);
    $out = html::tag('ul', $attrib, rcmail_render_folder_tree_html($a_mailboxes, $mbox_name, $attrib['maxlength'], $attrib['realnames']), html::$common_attrib);
  }
  if ($type=='ul')
    $OUTPUT->add_gui_object('mailboxlist', $attrib['id']);
  return $out;
  }
}
/**
 * Return the mailboxlist as html_select object
 *
 * @param array Named parameters
 * @return object html_select HTML drop-down object
 */
function rcmail_mailbox_select($p = array())
{
  global $RCMAIL;
  $p += array('maxlength' => 100, 'relanames' => false);
  $a_mailboxes = array();
  foreach ($RCMAIL->imap->list_mailboxes() as $folder)
    rcmail_build_folder_tree($a_mailboxes, $folder, $RCMAIL->imap->get_hierarchy_delimiter());
  $select = new html_select($p);
  if ($p['noselection'])
    $select->add($p['noselection'], '');
  rcmail_render_folder_tree_select($a_mailboxes, $mbox, $p['maxlength'], $select, $p['realnames']);
  return $select;
}
/**
@@ -973,7 +991,7 @@
 * Return html for a structured list <ul> for the mailbox tree
 * @access private
 */
function rcmail_render_folder_tree_html(&$arrFolders, &$mbox_name, $maxlength, $nestLevel=0)
function rcmail_render_folder_tree_html(&$arrFolders, &$mbox_name, $maxlength, $realnames=false, $nestLevel=0)
  {
  global $COMM_PATH, $IMAP, $CONFIG, $OUTPUT;
@@ -981,10 +999,10 @@
  $out = '';
  foreach ($arrFolders as $key => $folder)
    {
    $zebra_class = ($nestLevel*$idx)%2 ? 'even' : 'odd';
    $zebra_class = (($nestLevel+1)*$idx) % 2 == 0 ? 'even' : 'odd';
    $title = null;
    if ($folder_class = rcmail_folder_classname($folder['id']))
    if (($folder_class = rcmail_folder_classname($folder['id'])) && !$realnames)
      $foldername = rcube_label($folder_class);
    else
      {
@@ -1036,7 +1054,7 @@
      ), Q($foldername)));
    
    if (!empty($folder['folders']))
      $out .= "\n<ul>\n" . rcmail_render_folder_tree_html($folder['folders'], $mbox_name, $maxlength, $nestLevel+1) . "</ul>\n";
      $out .= "\n<ul>\n" . rcmail_render_folder_tree_html($folder['folders'], $mbox_name, $maxlength, $realnames, $nestLevel+1) . "</ul>\n";
    $out .= "</li>\n";
    $idx++;
@@ -1050,7 +1068,7 @@
 * Return html for a flat list <select> for the mailbox tree
 * @access private
 */
function rcmail_render_folder_tree_select(&$arrFolders, &$mbox_name, $maxlength, &$select, $nestLevel=0)
function rcmail_render_folder_tree_select(&$arrFolders, &$mbox_name, $maxlength, &$select, $realnames=false, $nestLevel=0)
  {
  global $IMAP, $OUTPUT;
@@ -1058,7 +1076,7 @@
  $out = '';
  foreach ($arrFolders as $key=>$folder)
    {
    if ($folder_class = rcmail_folder_classname($folder['id']))
    if (!$realnames && ($folder_class = rcmail_folder_classname($folder['id'])))
      $foldername = rcube_label($folder_class);
    else
      {
@@ -1072,7 +1090,7 @@
    $select->add(str_repeat('&nbsp;', $nestLevel*4) . $foldername, $folder['id']);
    if (!empty($folder['folders']))
      $out .= rcmail_render_folder_tree_select($folder['folders'], $mbox_name, $maxlength, $select, $nestLevel+1);
      $out .= rcmail_render_folder_tree_select($folder['folders'], $mbox_name, $maxlength, $select, $realnames, $nestLevel+1);
    $idx++;
    }