b67f9deaf90374cbe6ae9ea4a959067effac59ed
[squirrelmail.git] / templates / default / left_main.tpl
1 <?php
2 /**
3  * left_main.tpl
4  *
5  * Basic template to the left main window.  
6  * 
7  * The following variables are avilable in this template:
8  *      $clock           - formatted string containing last refresh
9  *      $settings        - Array containing user perferences needed by this
10  *                         template.  Indexes are as follows:
11  *          $settings['templateID'] - contains the ID of the current
12  *                         template set.  This may be needed by third
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.
31  *
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
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
54  *          $a['ChildBoxes']    = array containing this same data structure for
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.
63  *
64  * @copyright 1999-2019 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
69  * @author Steve Brown
70  */
71
72
73 /*
74  * Recursively parse the mailbox structure to build the navigation tree.
75  *
76  * @since 1.5.2
77  */
78 function buildMailboxTree ($box, $settings, $icon_theme_path, $indent_factor=0) {
79     // stop condition
80     if (empty($box)) {
81         return '';
82     }
83
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
92         // to display it on all folders AND there is more than 1 unread message
93         if ( $settings['unreadNotificationAllFolders'] ||
94              (!$settings['unreadNotificationAllFolders'] && strtolower($box['MailboxFullName'])=='inbox')
95            )  {
96             $unseen = $settings['unreadNotificationCummulative'] ?
97                             $box['CummulativeUnreadCount'] :
98                             $box['UnreadCount'];
99             
100             if (!$box['IsNoSelect'] && ($unseen > 0 || $settings['unreadNotificationDisplayTotal'])) {
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                 }
109
110                 $unseen_str = '<span class="'.
111                               ($box['IsRecent'] ? 'leftrecent' : 'leftunseen') .
112                               '">' . $unseen_str .
113                               '</span>';
114             }
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'])    {
123         $link = $indent .
124                 '<a href="'.$box['CollapseLink']['URL'].'" ' .
125                 'target="'.$box['CollapseLink']['Target'].'" ' .
126                 'style="text-decoration:none" ' .
127                 '>' .
128                 $box['CollapseLink']['Icon'] .
129                 '</a>';
130         $pre .= $link;
131     } else {
132         $pre .= $indent . '&nbsp;&nbsp;';
133     }
134
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 = '';
140     if (!is_null($icon_theme_path)) {
141         switch (true) {
142             case $box['IsInbox']:
143                 $folder_icon = getIcon($icon_theme_path, 'inbox.png', '', $box['MailboxName']);
144                 break; 
145             case $box['IsSent']:
146                 $folder_icon = getIcon($icon_theme_path, 'senti.png', '', $box['MailboxName']);
147                 break; 
148             case $box['IsTrash']:
149                 $folder_icon = getIcon($icon_theme_path, 'delitem.png', '', $box['MailboxName']);
150                 break; 
151             case $box['IsDraft']:
152                 $folder_icon = getIcon($icon_theme_path, 'draft.png', '', $box['MailboxName']);
153                 break; 
154             case $box['IsNoInferiors']:
155                 $folder_icon = getIcon($icon_theme_path, 'folder_noinf.png', '', $box['MailboxName']);
156                 break;
157             default: 
158                 $folder_icon = getIcon($icon_theme_path, 'folder.png', '', $box['MailboxName']);
159                 break;
160         }
161         $folder_icon .= '&nbsp;';
162     }
163     $pre .= $folder_icon;
164
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     
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'].'" ' .
179                  ($accesskey == '' ? '' : 'accesskey="' . $accesskey . '" ') .
180                  'target="'.$box['ViewLink']['Target'].'" ' .
181                  'title="'.$box['MailboxName'].'" ' .
182                  'style="text-decoration:none">';
183
184     if ($settings['messageRecyclingEnabled'] && $box['IsTrash']) {
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>';
193
194         // Print unread info
195         if ($box['MessageCount'] > 0 || count($box['ChildBoxes'])) {
196             if (!empty($unseen_str)) {
197                 $end .= '&nbsp;<small>('.$unseen_str.')</small>';
198             }
199             $end .= "\n<small>" .
200                     '&nbsp;&nbsp;[<a href="empty_trash.php?smtoken=' . sm_generate_security_token() . '">'. _("Purge").'</a>]' .
201                     '</small>';
202         }
203     } else {
204         // Add a few other things for all other folders...
205         if (!$box['IsNoSelect']) {
206             $pre .= $view_link;
207
208             // Boxes with unread messages should be emphasized
209             if ($box['UnreadCount'] > 0) {
210                 $pre .= '<em>';
211                 $end .= '</em>';
212             }
213             $end .= '</a>';
214         }
215
216         // Display unread info...
217         if (!empty($unseen_str)) {
218             $end .= '&nbsp;<small>('.$unseen_str.')</small>';
219         }
220     }
221
222     // Add any extra output that may have been added by plugins, etc
223     //
224     if (!empty($box['ExtraOutput']))
225         $end .= $box['ExtraOutput'];
226
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
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++) {
252             $out .= buildMailboxTree($box['ChildBoxes'][$i], $settings, $icon_theme_path, $indent_factor);
253         }
254     }
255
256     return $out;
257 }
258
259 // Retrieve the template vars
260 extract($t);
261
262 ?>
263 <body class="sqm_leftMain">
264 <div class="sqm_leftMain">
265 <?php if (!empty($plugin_output['left_main_before'])) echo $plugin_output['left_main_before']; ?>
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>
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>
275      </td>
276     </tr>
277    </table>
278    <br />
279    <?php echo buildMailboxTree($mailboxes, $settings, $icon_theme_path); ?>
280   </td>
281  </tr>
282 </table>
283 <?php if (!empty($plugin_output['left_main_after'])) echo $plugin_output['left_main_after']; ?>
284 </div>