From 64f20dae0cdd3a53114053e3520eb30b71bfa42c Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Thu, 31 Jul 2008 17:30:25 -0400
Subject: [PATCH] Show real names in folder drop-down + rebuild default_imap_folders property when saving prefs

---
 program/include/main.inc |   43 ++++++++++++++++++-------------------------
 1 files changed, 18 insertions(+), 25 deletions(-)

diff --git a/program/include/main.inc b/program/include/main.inc
index 0a1cf60..bfba9dd 100644
--- a/program/include/main.inc
+++ b/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,19 +913,18 @@
     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;
-  }
+}
 
 
 /**
@@ -944,7 +937,7 @@
 {
   global $RCMAIL;
   
-  $p += array('maxlength' => 100);
+  $p += array('maxlength' => 100, 'relanames' => false);
   $a_mailboxes = array();
   
   foreach ($RCMAIL->imap->list_mailboxes() as $folder)
@@ -955,7 +948,7 @@
   if ($p['noselection'])
     $select->add($p['noselection'], '');
     
-  rcmail_render_folder_tree_select($a_mailboxes, $mbox, $p['maxlength'], $select);
+  rcmail_render_folder_tree_select($a_mailboxes, $mbox, $p['maxlength'], $select, $p['realnames']);
   
   return $select;
 }
@@ -998,7 +991,7 @@
  * Return html for a structured list &lt;ul&gt; 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;
 
@@ -1009,7 +1002,7 @@
     $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
       {
@@ -1061,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++;
@@ -1075,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;
 
@@ -1083,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
       {
@@ -1097,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++;
     }

--
Gitblit v1.9.1