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 | * |
64 | * @copyright © 1999-2006 The SquirrelMail Project Team |
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 | |
a9527551 |
72 | /** include required files */ |
29997535 |
73 | include_once(SM_PATH . 'templates/util_global.php'); |
74 | |
75 | /* |
76 | * Recursively parse the mailbox structure to build the navigation tree. |
e945d2c2 |
77 | * |
29997535 |
78 | * @since 1.5.2 |
79 | */ |
5e8e22db |
80 | function buildMailboxTree ($box, $settings, $icon_theme_path, $indent_factor=0) { |
29997535 |
81 | // stop condition |
82 | if (empty($box)) { |
83 | return ''; |
84 | } |
85 | |
29997535 |
86 | $pre = '<span style="white-space: nowrap;">'; |
87 | $end = ''; |
88 | $indent = str_repeat(' ',$indent_factor); |
89 | |
90 | // Get unseeen/total message info if needed |
91 | $unseen_str = ''; |
92 | if ($settings['unreadNotificationEnabled']) { |
93 | // We only display the unread count if we on the Inbox or we are told |
1644256e |
94 | // to display it on all folders AND there is more than 1 unread message |
e945d2c2 |
95 | if ( $settings['unreadNotificationAllFolders'] || |
42b0ed18 |
96 | (!$settings['unreadNotificationAllFolders'] && strtolower($box['MailboxFullName'])=='inbox') |
29997535 |
97 | ) { |
1644256e |
98 | $unseen = $settings['unreadNotificationCummulative'] ? |
e945d2c2 |
99 | $box['CummulativeUnreadCount'] : |
29997535 |
100 | $box['UnreadCount']; |
1644256e |
101 | |
6248fde9 |
102 | if (!$box['IsNoSelect'] && ($unseen > 0 || $settings['unreadNotificationDisplayTotal'])) { |
1644256e |
103 | $unseen_str = $unseen; |
104 | |
105 | // Add the total messages if desired |
106 | if ($settings['unreadNotificationDisplayTotal']) { |
107 | $unseen_str .= '/' . ($settings['unreadNotificationCummulative'] ? |
108 | $box['CummulativeMessageCount'] : |
109 | $box['MessageCount']); |
110 | } |
e945d2c2 |
111 | |
1644256e |
112 | $unseen_str = '<span class="'. |
113 | ($box['IsRecent'] ? 'leftrecent' : 'leftunseen') . |
114 | '">' . $unseen_str . |
115 | '</span>'; |
29997535 |
116 | } |
29997535 |
117 | } |
118 | } |
119 | |
120 | /* |
121 | * If the box has any children, and collapsable folders have been enabled |
122 | * we need to output the expand/collapse link. |
123 | */ |
124 | if (sizeof($box['ChildBoxes'])>0 && $settings['collapsableFoldersEnabled']) { |
e945d2c2 |
125 | $link = $indent . |
29997535 |
126 | '<a href="'.$box['CollapseLink']['URL'].'" ' . |
127 | 'target="'.$box['CollapseLink']['Target'].'" ' . |
128 | 'style="text-decoration:none" ' . |
e945d2c2 |
129 | '>' . |
130 | $box['CollapseLink']['Icon'] . |
131 | '</a>'; |
132 | $pre .= $link; |
133 | } else { |
29997535 |
134 | $pre .= $indent . ' '; |
135 | } |
e945d2c2 |
136 | |
1644256e |
137 | /** |
138 | * Add folder icon. Template authors may choose to display a different |
139 | * image based on whatever logic they see fit here. |
140 | */ |
141 | $folder_icon = ''; |
c2bdb921 |
142 | if (!is_null($icon_theme_path)) { |
1644256e |
143 | switch (true) { |
144 | case $box['IsInbox']: |
5e8e22db |
145 | $folder_icon = getIcon($icon_theme_path, 'inbox.png', '', $box['MailboxName']); |
1644256e |
146 | break; |
147 | case $box['IsSent']: |
5e8e22db |
148 | $folder_icon = getIcon($icon_theme_path, 'senti.png', '', $box['MailboxName']); |
1644256e |
149 | break; |
150 | case $box['IsTrash']: |
5e8e22db |
151 | $folder_icon = getIcon($icon_theme_path, 'delitem.png', '', $box['MailboxName']); |
1644256e |
152 | break; |
153 | case $box['IsDraft']: |
5e8e22db |
154 | $folder_icon = getIcon($icon_theme_path, 'draft.png', '', $box['MailboxName']); |
1644256e |
155 | break; |
156 | case $box['IsNoInferiors']: |
5e8e22db |
157 | $folder_icon = getIcon($icon_theme_path, 'folder_noinf.png', '', $box['MailboxName']); |
1644256e |
158 | break; |
159 | default: |
5e8e22db |
160 | $folder_icon = getIcon($icon_theme_path, 'folder.png', '', $box['MailboxName']); |
1644256e |
161 | break; |
162 | } |
163 | $folder_icon .= ' '; |
164 | } |
165 | $pre .= $folder_icon; |
166 | |
29997535 |
167 | /* |
168 | * The Trash folder should only be displayed if message recycling has |
169 | * been enabled, i.e. when deleted is a message moved to the trash or |
170 | * deleted forever? |
171 | */ |
172 | $view_link = '<a href="'.$box['ViewLink']['URL'].'" ' . |
173 | 'target="'.$box['ViewLink']['Target'].'" ' . |
174 | 'style="text-decoration:none">'; |
e945d2c2 |
175 | |
1644256e |
176 | if ($settings['messageRecyclingEnabled'] && $box['IsTrash']) { |
29997535 |
177 | $pre .= $view_link; |
178 | |
179 | // Boxes with unread messages should be emphasized |
180 | if ($box['UnreadCount'] > 0) { |
181 | $pre .= '<em>'; |
182 | $end .= '</em>'; |
183 | } |
184 | $end .= '</a>'; |
e945d2c2 |
185 | |
29997535 |
186 | // Print unread info |
ad648d4c |
187 | if ($box['MessageCount'] > 0 || count($box['ChildBoxes'])) { |
29997535 |
188 | if (!empty($unseen_str)) { |
189 | $end .= ' <small>('.$unseen_str.')</small>'; |
190 | } |
191 | $end .= "\n<small>" . |
192 | ' [<a href="empty_trash.php">'. _("Purge").'</a>]' . |
193 | '</small>'; |
194 | } |
195 | } else { |
196 | // Add a few other things for all other folders... |
197 | if (!$box['IsNoSelect']) { |
198 | $pre .= $view_link; |
e945d2c2 |
199 | |
29997535 |
200 | // Boxes with unread messages should be emphasized |
201 | if ($box['UnreadCount'] > 0) { |
202 | $pre .= '<em>'; |
203 | $end .= '</em>'; |
204 | } |
205 | $end .= '</a>'; |
206 | } |
e945d2c2 |
207 | |
29997535 |
208 | // Display unread info... |
209 | if (!empty($unseen_str)) { |
210 | $end .= ' <small>('.$unseen_str.')</small>'; |
211 | } |
212 | } |
e945d2c2 |
213 | |
29997535 |
214 | $span = ''; |
215 | $spanend = ''; |
216 | if ($settings['useSpecialFolderColor'] && $box['IsSpecial']) { |
217 | $span = '<span class="leftspecial">'; |
218 | $spanend = '</span>'; |
219 | } elseif ( $box['IsNoSelect'] ) { |
220 | $span = '<span class="leftnoselect">'; |
221 | $spanend = '</span>'; |
222 | } |
223 | |
535ca371 |
224 | /******** |
225 | * Pulling imapConnection due to segfaults that cannot be tracked down. Best |
6e515418 |
226 | * we can determine, it's some combination of this var and >= 4 plugins enabled. |
535ca371 |
227 | * No further clue from anyone. |
6e515418 |
228 | ******** |
229 | * Update: syntax of this hook call changed a bit, so if the error is so anomalous, |
230 | * it might be worth trying this again to see if it is still segfaulting |
535ca371 |
231 | ******** |
232 | |
29997535 |
233 | // let plugins fiddle with end of line |
6e515418 |
234 | // FIXME: no hooks in templates! |
29997535 |
235 | $end .= concat_hook_function('left_main_after_each_folder', |
6e515418 |
236 | $temp=array(isset($numMessages) ? &$numMessages : '', |
237 | &$box['MailboxFullName'], &$settings['imapConnection'])); |
535ca371 |
238 | */ |
29997535 |
239 | |
240 | $end .= '</span>'; |
241 | |
242 | $out = ''; |
243 | if (!$box['IsRoot']) { |
244 | $out = $span . $pre . |
245 | str_replace( |
246 | array(' ','<','>'), |
247 | array(' ','<','>'), |
248 | $box['MailboxName']) . |
249 | $end . $spanend . '<br />' . "\n"; |
250 | $indent_factor++; |
251 | } |
252 | |
253 | if (!$box['IsCollapsed'] || $box['IsRoot']) { |
254 | for ($i = 0; $i<sizeof($box['ChildBoxes']); $i++) { |
c2bdb921 |
255 | $out .= buildMailboxTree($box['ChildBoxes'][$i], $settings, $icon_theme_path, $indent_factor); |
29997535 |
256 | } |
257 | } |
e945d2c2 |
258 | |
29997535 |
259 | return $out; |
260 | } |
261 | |
262 | // Retrieve the template vars |
263 | extract($t); |
e945d2c2 |
264 | |
29997535 |
265 | ?> |
266 | <body class="sqm_leftMain"> |
267 | <div class="sqm_leftMain"> |
6e515418 |
268 | <?php /* FIXME: no hooks in templates! */ global $null; do_hook('left_main_before', $null); ?> |
29997535 |
269 | <table class="sqm_wrapperTable" cellspacing="0"> |
270 | <tr> |
271 | <td> |
272 | <table cellspacing="0"> |
273 | <tr> |
274 | <td style="text-align:center"> |
275 | <span class="sqm_folderHeader"><?php echo _("Folders"); ?></span><br /> |
276 | <span class="sqm_clock"><?php echo $clock; ?></span> |
e945d2c2 |
277 | <span class="sqm_refreshButton"><small>[<a href="../src/left_main.php" target="left"><?php echo _("Check mail"); ?></a>]</small></span> |
29997535 |
278 | </td> |
279 | </tr> |
280 | </table> |
281 | <br /> |
5e8e22db |
282 | <?php echo buildMailboxTree($mailboxes, $settings, $icon_theme_path); ?> |
fddbf0d4 |
283 | </td> |
284 | </tr> |
285 | </table> |
6e515418 |
286 | <?php /* FIXME: no hooks in templates! */ do_hook('left_main_after', $null); ?> |
fddbf0d4 |
287 | </div> |