From 235a65d5d176a14cfba2284cb2ce898596e5e8f1 Mon Sep 17 00:00:00 2001 From: lkehresman Date: Thu, 22 Feb 2001 01:45:43 +0000 Subject: [PATCH] put Tyler's collapsable folder listing back in git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@1149 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- src/left_main.php | 148 ++++++++++++++++++++++++++++------------- src/load_prefs.php | 2 + src/options.php | 7 +- src/options_folder.php | 22 +++--- 4 files changed, 122 insertions(+), 57 deletions(-) diff --git a/src/left_main.php b/src/left_main.php index d80fdd78..0adbd3a7 100644 --- a/src/left_main.php +++ b/src/left_main.php @@ -17,10 +17,10 @@ if(!isset($username)) { set_up_language($squirrelmail_language, true); - include ("../themes/default_theme.php"); - printf('', - $color[8], $color[4], $color[7], $color[7], $color[7]); - echo ""; + include ("../themes/default_theme.php"); + printf('', + $color[8], $color[4], $color[7], $color[7], $color[7]); + echo ""; exit; } @@ -48,25 +48,20 @@ displayHtmlHeader(); - function formatMailboxName($imapConnection, $mailbox, $real_box, $delimeter, $unseen) { + function formatMailboxName($imapConnection, $box_array, $delimeter) { global $folder_prefix, $trash_folder, $sent_folder; global $color, $move_to_sent, $move_to_trash; - global $unseen_notify, $unseen_type; - + global $unseen_notify, $unseen_type, $collapse_folders; + + $real_box = $box_array['unformatted']; + $mailbox = $box_array['formatted']; $mailboxURL = urlencode($real_box); - if ($unseen_notify == 2 && $real_box == "INBOX") { - $unseen = sqimap_unseen_messages($imapConnection, $numUnseen, $real_box); - if ($unseen_type == 1 && $unseen > 0) { - $unseen_string = "($unseen)"; - $unseen_found = true; - } else if ($unseen_type == 2) { - $numMessages = sqimap_get_num_messages($imapConnection, $real_box); - $unseen_string = "($unseen/$numMessages)"; - $unseen_found = true; - } - } else if ($unseen_notify == 3) { - $unseen = sqimap_unseen_messages($imapConnection, $numUnseen, $real_box); + $unseen = 0; + + if (($unseen_notify == 2 && $real_box == "INBOX") || + $unseen_notify == 3) { + $unseen = sqimap_unseen_messages($imapConnection, $numUnseen, $real_box); if ($unseen_type == 1 && $unseen > 0) { $unseen_string = "($unseen)"; $unseen_found = true; @@ -77,29 +72,41 @@ } } - $line = ""; - if ($unseen > 0) - $line .= ""; - $special_color = false; if ((strtolower($real_box) == "inbox") || - (($real_box == $trash_folder) && ($move_to_trash)) || - (($real_box == $sent_folder) && ($move_to_sent))) - $special_color = true; + (($real_box == $trash_folder) && ($move_to_trash)) || + (($real_box == $sent_folder) && ($move_to_sent))) + $special_color = true; + + $spaces = ''; + $line = ""; + if (ereg("^( *)([^ ]*)$", $mailbox, $regs)) { + $spaces = $regs[1]; + $mailbox = $regs[2]; + } - if ($special_color == true) { - $line .= ""; - $line .= replace_spaces($mailbox); - $line .= ""; - } else { - $line .= ""; - $line .= replace_spaces($mailbox); - $line .= ""; + if ($unseen > 0) + $line .= ""; + $line .= str_replace(' ', ' ', $spaces); + + if ($collapse_folders) { + if (isset($box_array['parent'])) + $line .= FoldLink($box_array['unformatted'], $box_array['parent']); + else + $line .= '  '; } + + $line .= ""; + if ($special_color == true) + $line .= ""; + $line .= str_replace(' ', ' ', $mailbox); + if ($special_color == true) + $line .= ""; + $line .= ""; if ($unseen > 0) $line .= ""; - + if (isset($unseen_found) && $unseen_found) { $line .= " $unseen_string"; } @@ -107,7 +114,7 @@ if (($move_to_trash == true) && ($real_box == $trash_folder)) { $urlMailbox = urlencode($real_box); $line .= "\n\n"; - $line .= "   ("._("purge").")"; + $line .= "   ("._("purge").")"; $line .= "\n\n"; } $line .= ""; @@ -134,22 +141,67 @@ echo ")
"; $delimeter = sqimap_get_delimiter($imapConnection); + if (isset($collapse_folders) && $collapse_folders) { + if (isset($fold)) + setPref($data_dir, $username, 'collapse_folder_' . $fold, 1); + if (isset($unfold)) + setPref($data_dir, $username, 'collapse_folder_' . $unfold, 0); + $IAmAParent = array(); + for ($i = 0; $i < count($boxes); $i ++) { + $parts = explode($delimeter, $boxes[$i]['unformatted']); + $box_name = array_pop($parts); + $box_parent = implode($delimeter, $parts); + $hidden = 0; + if (isset($box_parent)) { + $hidden = getPref($data_dir, $username, + 'collapse_folder_' . $box_parent); + $IAmAParent[$box_parent] = $hidden; + } + $boxes[$i]['folded'] = $hidden; + } + } + for ($i = 0;$i < count($boxes); $i++) { - $line = ""; - $mailbox = $boxes[$i]["formatted"]; - - if (in_array('noselect', $boxes[$i]['flags'])) { - $line .= ""; - $line .= replace_spaces($mailbox); - $line .= ''; - } else { - if (! isset($boxes[$i]['unseen'])) - $boxes[$i]['unseen'] = ''; - $line .= formatMailboxName($imapConnection, $mailbox, $boxes[$i]["unformatted"], $delimeter, $boxes[$i]["unseen"]); + if (! isset($boxes[$i]['folded']) || ! $boxes[$i]['folded']) + { + $line = ""; + $mailbox = $boxes[$i]["formatted"]; + + if (isset($collapse_folders) && $collapse_folders && isset($IAmAParent[$boxes[$i]['unformatted']])) { + $boxes[$i]['parent'] = $IAmAParent[$boxes[$i]['unformatted']]; + } + + if (in_array('noselect', $boxes[$i]['flags'])) { + $line .= ""; + if (ereg("^( *)([^ ]*)$", $mailbox, $regs)) { + $line .= str_replace(' ', ' ', $regs[1]); + if (isset($boxes[$i]['parent'])) + $line .= FoldLink($boxes[$i]['unformatted'], + $boxes[$i]['parent']); + elseif ($collapse_folders) + $line .= '  '; + $line .= str_replace(' ', ' ', $regs[2]); + } + $line .= ''; + } else { + $line .= formatMailboxName($imapConnection, $boxes[$i], $delimeter); + } + echo "$line
\n"; } - echo "$line
\n"; } sqimap_logout($imapConnection); do_hook("left_main_after"); + + function FoldLink($mailbox, $folded) { + $mailbox = urlencode($mailbox); + echo '+"; + else + echo "fold=$mailbox\">-"; + echo ' '; + } + ?> diff --git a/src/load_prefs.php b/src/load_prefs.php index ed9c6342..bfc2e6b3 100644 --- a/src/load_prefs.php +++ b/src/load_prefs.php @@ -186,6 +186,8 @@ $location_of_buttons = getPref($data_dir, $username, 'location_of_buttons'); if ($location_of_buttons == '') $location_of_buttons = 'between'; + + $collapse_folders = getPref($data_dir, $username, 'collapse_folders'); do_hook("loading_prefs"); diff --git a/src/options.php b/src/options.php index 71b0e3ea..92ad9701 100644 --- a/src/options.php +++ b/src/options.php @@ -92,9 +92,14 @@ setPref($data_dir, $username, 'move_to_sent', '0'); setPref($data_dir, $username, 'sent_folder', 'none'); } - setPref($data_dir, $username, 'folder_prefix', $folderprefix); + if (isset($folderprefix)) + setPref($data_dir, $username, 'folder_prefix', $folderprefix); setPref($data_dir, $username, 'unseen_notify', $unseennotify); setPref($data_dir, $username, 'unseen_type', $unseentype); + if (isset($collapsefolders)) + setPref($data_dir, $username, 'collapse_folders', $collapsefolders); + else + removePref($data_dir, $username, 'collapse_folders'); do_hook('options_folders_save'); echo '
'._("Successfully saved folder preferences!").'
'; echo '' . _("Refresh Folder List") . '

'; diff --git a/src/options_folder.php b/src/options_folder.php index 750db9be..9e50d846 100644 --- a/src/options_folder.php +++ b/src/options_folder.php @@ -42,7 +42,7 @@
- +
@@ -74,7 +74,7 @@ } if ($use_folder == true) { $box = $boxes[$i]['unformatted-dm']; - $box2 = replace_spaces($boxes[$i]['formatted']); + $box2 = str_replace(' ', ' ', $boxes[$i]['formatted']); if (($boxes[$i]['unformatted'] == $trash_folder) && ($move_to_trash == true)) echo " - + + + +
-
:
>
>
>
-
-
:
- 2) echo " checked"; ?>> - (4)
+
+ 2) echo " checked"; ?>> - (4)
> - (4/27)
+ : + + > + +
  -- 2.25.1