fsf changes, meant to be rebased on upstream
[squirrelmail.git] / templates / default / left_main.tpl
CommitLineData
29997535 1<?php
2/**
3 * left_main.tpl
4 *
44452136 5 * Basic template to the left main window.
6 *
7 * The following variables are avilable in this template:
29997535 8 * $clock - formatted string containing last refresh
44452136 9 * $settings - Array containing user perferences needed by this
10 * template. Indexes are as follows:
4f5c9970 11 * $settings['templateID'] - contains the ID of the current
12 * template set. This may be needed by third
44452136 13 * party packages that don't integrate easily.
14 * $settings['unreadNotificationEnabled'] - Boolean TRUE if the user
15 * wants to see unread message count on mailboxes
16 * $settings['unreadNotificationCummulative'] - Boolean TRUE if the
17 * user has enabled cummulative message counts.
18 * $settings['unreadNotificationAllFolders'] - Boolean TRUE if the
19 * user wants to see unread message count on ALL
20 * folders or just the Inbox.
21 * $settings['unreadNotificationDisplayTotal'] - Boolean TRUE if the
22 * user wants to see the total number of messages in
23 * addition to the unread message count.
24 * $settings['collapsableFoldersEnabled'] - Boolean TRUE if the user
25 * has enabled collapsable folders.
26 * $settings['useSpecialFolderColor'] - Boolean TRUE if the use has
27 * chosen to tag "Special" folders in a different color
28 * $settings['messageRecyclingEnabled'] - Boolean TRUE if messages
29 * that get deleted go to the Trash folder. FALSE if
30 * they are permanently deleted.
e945d2c2 31 *
29997535 32 * $mailboxes - Associative array of current mailbox structure.
33 * Provided so template authors know what they have to
34 * work with when building a custom mailbox tree.
35 * Array contains the following elements:
36 * $a['MailboxName'] = String containing the name of the mailbox
37 * $a['MailboxFullName'] = String containing full IMAP name of mailbox
38 * $a['MessageCount'] = integer of all messages in the mailbox
39 * $a['UnreadCount'] = integer of unseen message in the mailbox
40 * $a['ViewLink'] = array containing elements needed to view the
41 * mailbox. Elements are:
42 * 'Target' = target frame for link
43 * 'URL' = target URL for link
44452136 44 * $a['IsRecent'] = boolean TRUE if the mailbox is tagged "recent"
45 * $a['IsSpecial'] = boolean TRUE if the mailbox is tagged "special"
46 * $a['IsRoot'] = boolean TRUE if the mailbox is the root mailbox
47 * $a['IsNoSelect'] = boolean TRUE if the mailbox is tagged "noselect"
48 * $a['IsCollapsed'] = boolean TRUE if the mailbox is currently collapsed
49 * $a['CollapseLink'] = array containg elements needed to expand/collapse
50 * the mailbox. Elements are:
51 * 'Target' = target frame for link
52 * 'URL' = target URL for link
53 * 'Icon' = the icon to use, based on user prefs
29997535 54 * $a['ChildBoxes'] = array containing this same data structure for
44452136 55 * each child folder/mailbox of the current
56 * mailbox.
57 * $a['CummulativeMessageCount'] = integer of total messages in all
58 * folders in this mailbox, exlcuding
59 * trash folders.
60 * $a['CummulativeUnreadCount'] = integer of total unseen messages
61 * in all folders in this mailbox,
62 * excluding trash folders.
29997535 63 *
c997cbe6 64 * @copyright 1999-2021 The SquirrelMail Project Team
29997535 65 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
66 * @version $Id$
67 * @package squirrelmail
68 * @subpackage templates
44452136 69 * @author Steve Brown
29997535 70 */
71
29997535 72
73/*
74 * Recursively parse the mailbox structure to build the navigation tree.
e945d2c2 75 *
29997535 76 * @since 1.5.2
77 */
5e8e22db 78function buildMailboxTree ($box, $settings, $icon_theme_path, $indent_factor=0) {
29997535 79 // stop condition
80 if (empty($box)) {
81 return '';
82 }
83
29997535 84 $pre = '<span style="white-space: nowrap;">';
85 $end = '';
86 $indent = str_repeat('&nbsp;&nbsp;',$indent_factor);
87
88 // Get unseeen/total message info if needed
89 $unseen_str = '';
90 if ($settings['unreadNotificationEnabled']) {
91 // We only display the unread count if we on the Inbox or we are told
1644256e 92 // to display it on all folders AND there is more than 1 unread message
e945d2c2 93 if ( $settings['unreadNotificationAllFolders'] ||
42b0ed18 94 (!$settings['unreadNotificationAllFolders'] && strtolower($box['MailboxFullName'])=='inbox')
29997535 95 ) {
1644256e 96 $unseen = $settings['unreadNotificationCummulative'] ?
e945d2c2 97 $box['CummulativeUnreadCount'] :
29997535 98 $box['UnreadCount'];
1644256e 99
6248fde9 100 if (!$box['IsNoSelect'] && ($unseen > 0 || $settings['unreadNotificationDisplayTotal'])) {
1644256e 101 $unseen_str = $unseen;
102
103 // Add the total messages if desired
104 if ($settings['unreadNotificationDisplayTotal']) {
105 $unseen_str .= '/' . ($settings['unreadNotificationCummulative'] ?
106 $box['CummulativeMessageCount'] :
107 $box['MessageCount']);
108 }
e945d2c2 109
1644256e 110 $unseen_str = '<span class="'.
111 ($box['IsRecent'] ? 'leftrecent' : 'leftunseen') .
112 '">' . $unseen_str .
113 '</span>';
29997535 114 }
29997535 115 }
116 }
117
118 /*
119 * If the box has any children, and collapsable folders have been enabled
120 * we need to output the expand/collapse link.
121 */
122 if (sizeof($box['ChildBoxes'])>0 && $settings['collapsableFoldersEnabled']) {
e945d2c2 123 $link = $indent .
29997535 124 '<a href="'.$box['CollapseLink']['URL'].'" ' .
125 'target="'.$box['CollapseLink']['Target'].'" ' .
126 'style="text-decoration:none" ' .
e945d2c2 127 '>' .
128 $box['CollapseLink']['Icon'] .
129 '</a>';
130 $pre .= $link;
131 } else {
29997535 132 $pre .= $indent . '&nbsp;&nbsp;';
133 }
e945d2c2 134
1644256e 135 /**
136 * Add folder icon. Template authors may choose to display a different
137 * image based on whatever logic they see fit here.
138 */
139 $folder_icon = '';
c2bdb921 140 if (!is_null($icon_theme_path)) {
1644256e 141 switch (true) {
142 case $box['IsInbox']:
5e8e22db 143 $folder_icon = getIcon($icon_theme_path, 'inbox.png', '', $box['MailboxName']);
1644256e 144 break;
145 case $box['IsSent']:
5e8e22db 146 $folder_icon = getIcon($icon_theme_path, 'senti.png', '', $box['MailboxName']);
1644256e 147 break;
148 case $box['IsTrash']:
5e8e22db 149 $folder_icon = getIcon($icon_theme_path, 'delitem.png', '', $box['MailboxName']);
1644256e 150 break;
151 case $box['IsDraft']:
5e8e22db 152 $folder_icon = getIcon($icon_theme_path, 'draft.png', '', $box['MailboxName']);
1644256e 153 break;
154 case $box['IsNoInferiors']:
5e8e22db 155 $folder_icon = getIcon($icon_theme_path, 'folder_noinf.png', '', $box['MailboxName']);
1644256e 156 break;
157 default:
5e8e22db 158 $folder_icon = getIcon($icon_theme_path, 'folder.png', '', $box['MailboxName']);
1644256e 159 break;
160 }
161 $folder_icon .= '&nbsp;';
162 }
163 $pre .= $folder_icon;
164
f99c4469 165 // calculate if access key is needed
166 //
167 if ($box['IsInbox']) {
168 global $accesskey_folders_inbox;
169 $accesskey = $accesskey_folders_inbox;
170 }
171 else $accesskey = '';
172
29997535 173 /*
174 * The Trash folder should only be displayed if message recycling has
175 * been enabled, i.e. when deleted is a message moved to the trash or
176 * deleted forever?
177 */
178 $view_link = '<a href="'.$box['ViewLink']['URL'].'" ' .
f99c4469 179 ($accesskey == '' ? '' : 'accesskey="' . $accesskey . '" ') .
29997535 180 'target="'.$box['ViewLink']['Target'].'" ' .
70d55dbc 181 'title="'.$box['MailboxName'].'" ' .
29997535 182 'style="text-decoration:none">';
e945d2c2 183
1644256e 184 if ($settings['messageRecyclingEnabled'] && $box['IsTrash']) {
29997535 185 $pre .= $view_link;
186
187 // Boxes with unread messages should be emphasized
188 if ($box['UnreadCount'] > 0) {
189 $pre .= '<em>';
190 $end .= '</em>';
191 }
192 $end .= '</a>';
e945d2c2 193
29997535 194 // Print unread info
ad648d4c 195 if ($box['MessageCount'] > 0 || count($box['ChildBoxes'])) {
29997535 196 if (!empty($unseen_str)) {
197 $end .= '&nbsp;<small>('.$unseen_str.')</small>';
198 }
199 $end .= "\n<small>" .
ce102fcc 200 '&nbsp;&nbsp;[<a href="empty_trash.php?smtoken=' . sm_generate_security_token() . '">'. _("Purge").'</a>]' .
29997535 201 '</small>';
202 }
203 } else {
204 // Add a few other things for all other folders...
205 if (!$box['IsNoSelect']) {
206 $pre .= $view_link;
e945d2c2 207
29997535 208 // Boxes with unread messages should be emphasized
209 if ($box['UnreadCount'] > 0) {
210 $pre .= '<em>';
211 $end .= '</em>';
212 }
213 $end .= '</a>';
214 }
e945d2c2 215
29997535 216 // Display unread info...
217 if (!empty($unseen_str)) {
218 $end .= '&nbsp;<small>('.$unseen_str.')</small>';
219 }
220 }
e945d2c2 221
e883b46e 222 // Add any extra output that may have been added by plugins, etc
223 //
224 if (!empty($box['ExtraOutput']))
225 $end .= $box['ExtraOutput'];
226
29997535 227 $span = '';
228 $spanend = '';
229 if ($settings['useSpecialFolderColor'] && $box['IsSpecial']) {
230 $span = '<span class="leftspecial">';
231 $spanend = '</span>';
232 } elseif ( $box['IsNoSelect'] ) {
233 $span = '<span class="leftnoselect">';
234 $spanend = '</span>';
235 }
236
29997535 237 $end .= '</span>';
238
239 $out = '';
240 if (!$box['IsRoot']) {
241 $out = $span . $pre .
242 str_replace(
243 array(' ','<','>'),
244 array('&nbsp;','&lt;','&gt;'),
245 $box['MailboxName']) .
246 $end . $spanend . '<br />' . "\n";
247 $indent_factor++;
248 }
249
250 if (!$box['IsCollapsed'] || $box['IsRoot']) {
251 for ($i = 0; $i<sizeof($box['ChildBoxes']); $i++) {
c2bdb921 252 $out .= buildMailboxTree($box['ChildBoxes'][$i], $settings, $icon_theme_path, $indent_factor);
29997535 253 }
254 }
e945d2c2 255
29997535 256 return $out;
257}
258
259// Retrieve the template vars
260extract($t);
e945d2c2 261
29997535 262?>
263<body class="sqm_leftMain">
264<div class="sqm_leftMain">
b71975ad 265<?php if (!empty($plugin_output['left_main_before'])) echo $plugin_output['left_main_before']; ?>
29997535 266<table class="sqm_wrapperTable" cellspacing="0">
267 <tr>
268 <td>
269 <table cellspacing="0">
270 <tr>
271 <td style="text-align:center">
272 <span class="sqm_folderHeader"><?php echo _("Folders"); ?></span><br />
273 <span class="sqm_clock"><?php echo $clock; ?></span>
f99c4469 274 <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>
29997535 275 </td>
276 </tr>
277 </table>
278 <br />
5e8e22db 279 <?php echo buildMailboxTree($mailboxes, $settings, $icon_theme_path); ?>
fddbf0d4 280 </td>
281 </tr>
282</table>
b71975ad 283<?php if (!empty($plugin_output['left_main_after'])) echo $plugin_output['left_main_after']; ?>
fddbf0d4 284</div>