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 | * |
c4faef33 |
64 | * @copyright 1999-2020 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 |
78 | function 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(' ',$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 . ' '; |
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 .= ' '; |
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 .= ' <small>('.$unseen_str.')</small>'; |
198 | } |
199 | $end .= "\n<small>" . |
ce102fcc |
200 | ' [<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 .= ' <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(' ','<','>'), |
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 |
260 | extract($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> |