/**
* left_main.tpl
*
- * Basic template to the left main window. The following variables are
- * avilable in this template:
+ * Basic template to the left main window.
+ *
+ * The following variables are avilable in this template:
* $clock - formatted string containing last refresh
- * $mailbox_listing - string containing HTML to display default mailbox tree
- * $location_of_bar - string "left" or "right" indicating where the frame
- * is located. Currently only used in
- * left_main_advanced.tpl
- * $left_size - width of left column in pixels. Currently only used
- * in left_main_advanced.tpl
- * $imapConnection - IMAP connection handle. Needed to allow plugins to
- * read the mailbox.
- * $icon_theme_path - Path to the desired icon theme. If no icon theme has
- * been chosen, this will be the template directory. If
- * the user has disabled icons, this will be NULL.
- *
- * $unread_notification_enabled - Boolean TRUE if the user wants to see unread
- * message count on mailboxes
- * $unread_notification_cummulative - Boolean TRUE if the user has enabled
- * cummulative message counts.
- * $unread_notification_allFolders - Boolean TRUE if the user wants to see
- * unread message count on ALL folders or just the
- * mailbox.
- * $unread_notification_displayTotal - Boolean TRUE if the user wants to
- * see the total number of messages in addition to
- * the unread message count.
- * $collapsable_folders_enabled - Boolean TRUE if the user has enabled collapsable
- * folders.
- * $use_special_folder_color - Boolean TRUE if the use has chosen to tag
- * "Special" folders in a different color.
- * $message_recycling_enabled - Boolean TRUE if messages that get deleted go to
- * the Trash folder. FALSE if they are permanently
- * deleted.
- * $trash_folder_name - Name of the Trash folder.
+ * $settings - Array containing user perferences needed by this
+ * template. Indexes are as follows:
+ * $settings['templateID'] - contains the ID of the current
+ * template set. This may be needed by third
+ * party packages that don't integrate easily.
+ * $settings['unreadNotificationEnabled'] - Boolean TRUE if the user
+ * wants to see unread message count on mailboxes
+ * $settings['unreadNotificationCummulative'] - Boolean TRUE if the
+ * user has enabled cummulative message counts.
+ * $settings['unreadNotificationAllFolders'] - Boolean TRUE if the
+ * user wants to see unread message count on ALL
+ * folders or just the Inbox.
+ * $settings['unreadNotificationDisplayTotal'] - Boolean TRUE if the
+ * user wants to see the total number of messages in
+ * addition to the unread message count.
+ * $settings['collapsableFoldersEnabled'] - Boolean TRUE if the user
+ * has enabled collapsable folders.
+ * $settings['useSpecialFolderColor'] - Boolean TRUE if the use has
+ * chosen to tag "Special" folders in a different color
+ * $settings['messageRecyclingEnabled'] - Boolean TRUE if messages
+ * that get deleted go to the Trash folder. FALSE if
+ * they are permanently deleted.
*
* $mailboxes - Associative array of current mailbox structure.
* Provided so template authors know what they have to
* in all folders in this mailbox,
* excluding trash folders.
*
- *
- * @copyright © 1999-2006 The SquirrelMail Project Team
+ * @copyright 1999-2011 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
* @subpackage templates
+ * @author Steve Brown
*/
-// include required files
-include_once(SM_PATH . 'templates/util_global.php');
/*
* Recursively parse the mailbox structure to build the navigation tree.
*
* @since 1.5.2
*/
-function buildMailboxTree ($box, $settings, $indent_factor=0) {
+function buildMailboxTree ($box, $settings, $icon_theme_path, $indent_factor=0) {
// stop condition
if (empty($box)) {
return '';
}
-# echo '<b>'.$box['MailboxName'].':</b> '.dump_array($box).'<hr>';
$pre = '<span style="white-space: nowrap;">';
$end = '';
$indent = str_repeat(' ',$indent_factor);
$unseen_str = '';
if ($settings['unreadNotificationEnabled']) {
// We only display the unread count if we on the Inbox or we are told
- // to display it on all folders.
+ // to display it on all folders AND there is more than 1 unread message
if ( $settings['unreadNotificationAllFolders'] ||
(!$settings['unreadNotificationAllFolders'] && strtolower($box['MailboxFullName'])=='inbox')
) {
- $unseen_str = $settings['unreadNotificationCummulative'] ?
+ $unseen = $settings['unreadNotificationCummulative'] ?
$box['CummulativeUnreadCount'] :
$box['UnreadCount'];
+
+ if (!$box['IsNoSelect'] && ($unseen > 0 || $settings['unreadNotificationDisplayTotal'])) {
+ $unseen_str = $unseen;
+
+ // Add the total messages if desired
+ if ($settings['unreadNotificationDisplayTotal']) {
+ $unseen_str .= '/' . ($settings['unreadNotificationCummulative'] ?
+ $box['CummulativeMessageCount'] :
+ $box['MessageCount']);
+ }
- // Add the total messages if desired
- if ($settings['unreadNotificationDisplayTotal']) {
- $unseen_str .= '/' . ($settings['unreadNotificationCummulative'] ?
- $box['CummulativeMessageCount'] :
- $box['MessageCount']);
+ $unseen_str = '<span class="'.
+ ($box['IsRecent'] ? 'leftrecent' : 'leftunseen') .
+ '">' . $unseen_str .
+ '</span>';
}
-
- $unseen_str = '<span class="'.
- ($box['IsRecent'] ? 'leftrecent' : 'leftunseen') .
- '">' . $unseen_str .
- '</span>';
}
}
'<a href="'.$box['CollapseLink']['URL'].'" ' .
'target="'.$box['CollapseLink']['Target'].'" ' .
'style="text-decoration:none" ' .
-# 'alt="'.$box['CollapseLink']['Alt'].'" ' .
-# 'title="'.$box['CollapseLink']['Alt'].'">' .
'>' .
$box['CollapseLink']['Icon'] .
'</a>';
$pre .= $indent . ' ';
}
+ /**
+ * Add folder icon. Template authors may choose to display a different
+ * image based on whatever logic they see fit here.
+ */
+ $folder_icon = '';
+ if (!is_null($icon_theme_path)) {
+ switch (true) {
+ case $box['IsInbox']:
+ $folder_icon = getIcon($icon_theme_path, 'inbox.png', '', $box['MailboxName']);
+ break;
+ case $box['IsSent']:
+ $folder_icon = getIcon($icon_theme_path, 'senti.png', '', $box['MailboxName']);
+ break;
+ case $box['IsTrash']:
+ $folder_icon = getIcon($icon_theme_path, 'delitem.png', '', $box['MailboxName']);
+ break;
+ case $box['IsDraft']:
+ $folder_icon = getIcon($icon_theme_path, 'draft.png', '', $box['MailboxName']);
+ break;
+ case $box['IsNoInferiors']:
+ $folder_icon = getIcon($icon_theme_path, 'folder_noinf.png', '', $box['MailboxName']);
+ break;
+ default:
+ $folder_icon = getIcon($icon_theme_path, 'folder.png', '', $box['MailboxName']);
+ break;
+ }
+ $folder_icon .= ' ';
+ }
+ $pre .= $folder_icon;
+
+ // calculate if access key is needed
+ //
+ if ($box['IsInbox']) {
+ global $accesskey_folders_inbox;
+ $accesskey = $accesskey_folders_inbox;
+ }
+ else $accesskey = '';
+
/*
* The Trash folder should only be displayed if message recycling has
* been enabled, i.e. when deleted is a message moved to the trash or
* deleted forever?
*/
$view_link = '<a href="'.$box['ViewLink']['URL'].'" ' .
+ ($accesskey == '' ? '' : 'accesskey="' . $accesskey . '" ') .
'target="'.$box['ViewLink']['Target'].'" ' .
'style="text-decoration:none">';
- if ($settings['messageRecyclingEnabled'] && $box['MailboxFullName'] == $settings['trashFolderName']) {
+ if ($settings['messageRecyclingEnabled'] && $box['IsTrash']) {
$pre .= $view_link;
// Boxes with unread messages should be emphasized
$end .= '</a>';
// Print unread info
- if ($box['UnreadCount'] > 0) {
+ if ($box['MessageCount'] > 0 || count($box['ChildBoxes'])) {
if (!empty($unseen_str)) {
$end .= ' <small>('.$unseen_str.')</small>';
}
}
}
+ // Add any extra output that may have been added by plugins, etc
+ //
+ if (!empty($box['ExtraOutput']))
+ $end .= $box['ExtraOutput'];
+
$span = '';
$spanend = '';
if ($settings['useSpecialFolderColor'] && $box['IsSpecial']) {
$spanend = '</span>';
}
- // let plugins fiddle with end of line
- $end .= concat_hook_function('left_main_after_each_folder',
- array(isset($numMessages) ? $numMessages : '',
- $box['MailboxFullName'], $settings['imapConnection']));
-
$end .= '</span>';
$out = '';
if (!$box['IsCollapsed'] || $box['IsRoot']) {
for ($i = 0; $i<sizeof($box['ChildBoxes']); $i++) {
- $out .= buildMailboxTree($box['ChildBoxes'][$i], $settings, $indent_factor);
+ $out .= buildMailboxTree($box['ChildBoxes'][$i], $settings, $icon_theme_path, $indent_factor);
}
}
// Retrieve the template vars
extract($t);
-/*
- * Build an array to pass user prefs to the function that builds the tree in
- * order to avoid using globals, which are dirty, filthy things in templates. :)
- */
-$settings = array();
-$settings['imapConnection'] = $imapConnection;
-$settings['iconThemePath'] = $icon_theme_path;
-$settings['unreadNotificationEnabled'] = $unread_notification_enabled;
-$settings['unreadNotificationAllFolders'] = $unread_notification_allFolders;
-$settings['unreadNotificationDisplayTotal'] = $unread_notification_displayTotal;
-$settings['unreadNotificationCummulative'] = $unread_notification_cummulative;
-$settings['useSpecialFolderColor'] = $use_special_folder_color;
-$settings['messageRecyclingEnabled'] = $message_recycling_enabled;
-$settings['trashFolderName'] = $trash_folder_name;
-$settings['collapsableFoldersEnabled'] = $collapsable_folders_enabled;
-
?>
<body class="sqm_leftMain">
<div class="sqm_leftMain">
-<?php do_hook('left_main_before'); ?>
+<?php if (!empty($plugin_output['left_main_before'])) echo $plugin_output['left_main_before']; ?>
<table class="sqm_wrapperTable" cellspacing="0">
<tr>
<td>
<td style="text-align:center">
<span class="sqm_folderHeader"><?php echo _("Folders"); ?></span><br />
<span class="sqm_clock"><?php echo $clock; ?></span>
- <span class="sqm_refreshButton"><small>[<a href="../src/left_main.php" target="left"><?php echo _("Check mail"); ?></a>]</small></span>
+ <span class="sqm_refreshButton"><small>[<a href="../src/left_main.php" <?php if ($accesskey_folders_refresh != 'NONE') echo 'accesskey="' . $accesskey_folders_refresh . '" '; ?>target="left"><?php echo _("Check Mail"); ?></a>]</small></span>
</td>
</tr>
</table>
<br />
- <?php echo buildMailboxTree($mailboxes, $settings); ?>
- </tr>
- </td>
+ <?php echo buildMailboxTree($mailboxes, $settings, $icon_theme_path); ?>
+ </td>
+ </tr>
</table>
-<?php do_hook('left_main_after'); ?>
+<?php if (!empty($plugin_output['left_main_after'])) echo $plugin_output['left_main_after']; ?>
</div>