Incoproated template config file. Templates can now include their own javascript...
[squirrelmail.git] / templates / default / left_main_advanced.tpl
1 <?php
2 /**
3 * left_main_advanced.tpl
4 *
5 * Displays an experimental mailbox-tree with dhtml behaviour.
6 * It only works on browsers which supports css and javascript. The used
7 * javascript is experimental and doesn't support all browsers.
8 * It has been tested on IE6 an Konquerer 3.0.0-2.
9 * It is now tested and working on: (please test and update this list)
10 * Windows: IE 5.5 SP2, IE 6 SP1, Gecko based (Mozilla, Firebird) and Opera7
11 * XWindow: ?
12 * Mac: ?
13 * In the function ListAdvancedBoxes there is another var $use_folder_images.
14 * setting this to true is only usefull if the images exists in ../images.
15 *
16 * Feel free to experiment with the code and report bugs and enhancements
17 *
18 * The following variables are avilable in this template:
19 * $clock - formatted string containing last refresh
20 * $mailbox_listing - string containing HTML to display default mailbox tree
21 * $location_of_bar - string "left" or "right" indicating where the frame
22 * is located. Currently only used in
23 * left_main_advanced.tpl
24 * $left_size - width of left column in pixels. Currently only used
25 * in left_main_advanced.tpl
26 * $imapConnection - IMAP connection handle. Needed to allow plugins to
27 * read the mailbox.
28 * $icon_theme_path - Path to the desired icon theme. If no icon theme has
29 * been chosen, this will be the template directory. If
30 * the user has disabled icons, this will be NULL.
31 *
32 * $unread_notification_enabled - Boolean TRUE if the user wants to see unread
33 * message count on mailboxes
34 * $unread_notification_cummulative - Boolean TRUE if the user has enabled
35 * cummulative message counts.
36 * $unread_notification_allFolders - Boolean TRUE if the user wants to see
37 * unread message count on ALL folders or just the
38 * mailbox.
39 * $unread_notification_displayTotal - Boolean TRUE if the user wants to
40 * see the total number of messages in addition to
41 * the unread message count.
42 * $collapsable_folders_enabled - Boolean TRUE if the user has enabled collapsable
43 * folders.
44 * $use_special_folder_color - Boolean TRUE if the use has chosen to tag
45 * "Special" folders in a different color.
46 * $message_recycling_enabled - Boolean TRUE if messages that get deleted go to
47 * the Trash folder. FALSE if they are permanently
48 * deleted.
49 * $trash_folder_name - Name of the Trash folder.
50 *
51 * $mailboxes - Associative array of current mailbox structure.
52 * Provided so template authors know what they have to
53 * work with when building a custom mailbox tree.
54 * Array contains the following elements:
55 * $a['MailboxName'] = String containing the name of the mailbox
56 * $a['MailboxFullName'] = String containing full IMAP name of mailbox
57 * $a['MessageCount'] = integer of all messages in the mailbox
58 * $a['UnreadCount'] = integer of unseen message in the mailbox
59 * $a['ViewLink'] = array containing elements needed to view the
60 * mailbox. Elements are:
61 * 'Target' = target frame for link
62 * 'URL' = target URL for link
63 * $a['IsRecent'] = boolean TRUE if the mailbox is tagged "recent"
64 * $a['IsSpecial'] = boolean TRUE if the mailbox is tagged "special"
65 * $a['IsRoot'] = boolean TRUE if the mailbox is the root mailbox
66 * $a['IsNoSelect'] = boolean TRUE if the mailbox is tagged "noselect"
67 * $a['IsCollapsed'] = boolean TRUE if the mailbox is currently collapsed
68 * $a['CollapseLink'] = array containg elements needed to expand/collapse
69 * the mailbox. Elements are:
70 * 'Target' = target frame for link
71 * 'URL' = target URL for link
72 * 'Icon' = the icon to use, based on user prefs
73 * $a['ChildBoxes'] = array containing this same data structure for
74 * each child folder/mailbox of the current
75 * mailbox.
76 * $a['CummulativeMessageCount'] = integer of total messages in all
77 * folders in this mailbox, exlcuding
78 * trash folders.
79 * $a['CummulativeUnreadCount'] = integer of total unseen messages
80 * in all folders in this mailbox,
81 * excluding trash folders.
82 *
83 * *
84 * @copyright &copy; 1999-2006 The SquirrelMail Project Team
85 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
86 * @version $Id$
87 * @package squirrelmail
88 * @subpackage templates
89 */
90
91 /*
92 * Recursively parse the mailbox structure to build the navigation tree.
93 *
94 * @param array $box Array containing mailbox data
95 * @param array $settings Array containing perferences, etc, passed to template
96 * @param integer $indent_factor Counter used to control indent spacing
97 * @since 1.5.2
98 * @author Steve Brown
99 */
100 function buildMailboxTree ($box, $settings, $indent_factor=0) {
101 // Work in progress...
102 }
103
104 /* retrieve the template vars */
105 extract($t);
106
107 /*
108 * Build an array to pass user prefs to the function that builds the tree in
109 * order to avoid using globals, which are dirty, filthy things in templates. :)
110 */
111 $settings = array();
112 $settings['imapConnection'] = $imapConnection;
113 $settings['iconThemePath'] = $icon_theme_path;
114 $settings['unreadNotificationEnabled'] = $unread_notification_enabled;
115 $settings['unreadNotificationAllFolders'] = $unread_notification_allFolders;
116 $settings['unreadNotificationDisplayTotal'] = $unread_notification_displayTotal;
117 $settings['unreadNotificationCummulative'] = $unread_notification_cummulative;
118 $settings['useSpecialFolderColor'] = $use_special_folder_color;
119 $settings['messageRecyclingEnabled'] = $message_recycling_enabled;
120 $settings['trashFolderName'] = $trash_folder_name;
121 $settings['collapsableFoldersEnabled'] = $collapsable_folders_enabled;
122
123 ?>
124 <body class="sqm_leftMain">
125 <script type="text/javascript" src="js/test.js"></script>
126 <script type="text/javascript">
127 <!--
128 /**
129 * Advanced tree makes uses dTree JavaScript package by Geir Landrö heavily.
130 * See http://www.destroydrop.com/javascripts/tree/
131 */
132 function preload() {
133 if (document.images) {
134 var treeImages = new Array;
135 var arguments = preload.arguments;
136 for (var i = 0; i<arguments.length; i++) {
137 treeImages[i] = new Image();
138 treeImages[i].src = arguments[i];
139 }
140 }
141 }
142 var vTreeImg;
143 var vTreeDiv;
144 var vTreeSrc;
145 function fTreeTimeout() {
146 if (vTreeDiv.readyState == "complete")
147 vTreeImg.src = vTreeSrc;
148 else
149 setTimeout("fTreeTimeout()", 100);
150 }
151 function hidechilds(img) {
152 id = img.id + ".0000";
153 form_id = "mbx[" + img.id +"F]";
154 if (document.all) { //IE, Opera7
155 div = document.all[id];
156 if (div) {
157 if (div.style.display == "none") {
158 vTreeSrc = "../images/minus.png";
159 style = "block";
160 value = 0;
161 }
162 else {
163 vTreeSrc = "../images/plus.png";
164 style = "none";
165 value = 1;
166 }
167 vTreeImg = img;
168 vTreeDiv = div;
169 if (typeof vTreeDiv.readyState != "undefined") //IE
170 setTimeout("fTreeTimeout()",100);
171 else //Non IE
172 vTreeImg.src = vTreeSrc;
173 div.style.display = style;
174 document.all[form_id].value = value;
175 }
176 }
177 else if (document.getElementById) { //Gecko
178 div = document.getElementById(id);
179 if (div) {
180 if (div.style.display == "none") {
181 src = "../images/minus.png";
182 style = "block";
183 value = 0;
184 }
185 else {
186 src = "../images/plus.png";
187 style = "none";
188 value = 1;
189 }
190 div.style.display = style;
191 img.src = src;
192 document.getElementById(form_id).value = value;
193 }
194 }
195 }
196 function buttonover(el,on) {
197 if (!on) {
198 el.style.background="$color[0]";}
199 else {
200 el.style.background="$color[9]";}
201 }
202 function buttonclick(el,on) {
203 if (!on) {
204 el.style.border="groove";}
205 else {
206 el.style.border="ridge";}
207 }
208 function hideframe(hide) {
209 left_size = "$left_size";
210 if (document.all) {
211 masterf = window.parent.document.all["fs1"];
212 leftf = window.parent.document.all["left"];
213 leftcontent = document.all["leftframe"];
214 leftbutton = document.all["showf"];
215 } else if (document.getElementById) {
216 masterf = window.parent.document.getElementById("fs1");
217 leftf = window.parent.document.getElementById("left");
218 leftcontent = document.getElementById("leftframe");
219 leftbutton = document.getElementById("showf");
220 } else {
221 return false;
222 }
223 if(hide) {
224 new_col = calc_col("20");
225 masterf.cols = new_col;
226 document.body.scrollLeft=0;
227 document.body.style.overflow="hidden";
228 leftcontent.style.display = "none";
229 leftbutton.style.display="block";
230 } else {
231 masterf.cols = calc_col(left_size);
232 document.body.style.overflow="";
233 leftbutton.style.display="none";
234 leftcontent.style.display="block";
235 }
236 }
237 function calc_col(c_w) {
238 <?php
239 if ($location_of_bar == 'right') {
240 echo ' right=true;';
241 } else {
242 echo ' right=false;';
243 }
244 ?>
245 if (right) {
246 new_col = '*,'+c_w;
247 } else {
248 new_col = c_w+',*';
249 }
250 return new_col;
251 }
252 function resizeframe(direction) {
253 if (document.all) {
254 masterf = window.parent.document.all["fs1"];
255 } else if (document.getElementById) {
256 window.parent.document.getElementById("fs1");
257 } else {
258 return false;
259 }
260 <?php
261 if ($location_of_bar == 'right') {
262 echo ' colPat=/^\*,(\d+)$/;';
263 } else {
264 echo ' colPat=/^(\d+),.*$/;';
265 }
266 ?>
267 old_col = masterf.cols;
268 colPat.exec(old_col);
269 if (direction) {
270 new_col_width = parseInt(RegExp.$1) + 25;
271 } else {
272 if (parseInt(RegExp.$1) > 35) {
273 new_col_width = parseInt(RegExp.$1) - 25;
274 }
275 }
276 masterf.cols = calc_col(new_col_width);
277 }
278 //-->
279 </script>
280 <style type="text/css">
281 <!--
282 body {
283 margin: 0px 0px 0px 0px;
284 padding: 5px 5px 5px 5px;
285 }
286 img {
287 vertical-align: middle;
288 }
289 .button {
290 border:outset;
291 border-color: <?php echo $color[9]; ?>;
292 background: <?php echo $color[0]; ?>;
293 color: <?php echo $color[6]; ?>;
294 width:99%;
295 heigth:99%;
296 }
297 .mbx_par {
298 font-size:1.0em;
299 margin-left:4px;
300 margin-right:0px;
301 white-space: nowrap;
302 }
303 a.mbx_link {
304 text-decoration: none;
305 background-color: <?php echo $color[0]; ?>;
306 display: inline;
307 }
308 a:hover.mbx_link {
309 background-color: <?php echo $color[9]; ?>;
310 }
311 a.mbx_link img {
312 border-style: none;
313 }
314 .mbx_sub {
315 padding-left:5px;
316 padding-right:0px;
317 margin-left:4px;
318 margin-right:0px;
319 font-size:0.9em;
320 white-space: nowrap;
321 }
322 .par_area {
323 margin-top:0px;
324 margin-left:4px;
325 margin-right:0px;
326 padding-left:10px;
327 padding-bottom:5px;
328 border-left: solid;
329 border-left-width:0.1em;
330 border-left-color: <?php echo $color[9]; ?>;
331 border-bottom: solid;
332 border-bottom-width:0.1em;
333 border-bottom-color: <?php echo $color[9]; ?>;
334 display: block;
335 }
336 .mailboxes {
337 padding-bottom:3px;
338 margin-right:4px;
339 padding-right:4px;
340 margin-left:4px;
341 padding-left:4px;
342 border: groove;
343 border-width:0.1em;
344 border-color: <?php echo $color[9]; ?>;
345 background: <?php echo $color[0]; ?>;
346 font-size: smaller;
347 }
348 -->
349 </style>
350 <div class="sqm_leftMain">
351 <?php
352 $right_pos = $left_size - 20;
353 ?>
354 <div style="position:absolute; top:0; border:0.1em solid blue;">
355 <div id="hidef" style="width=20;font-size:12"><a href="javascript:hideframe(true)"><b>&lt;&lt;</b></a></div>
356 <div id="showf" style="width=20;font-size:12;display:none;"><a href="javascript:hideframe(false)"><b>&gt;&gt;</b></a></div>
357 <div id="incrf" style="width=20;font-size:12"><a href="javascript:resizeframe(true)"><b>&gt;</b></a></div>
358 <div id="decrf" style="width=20;font-size:12"><a href="javascript:resizeframe(false)"><b>&lt;</b></a></div>
359 </div>
360 <div id="leftframe">
361 <br />
362 <br />
363 <br />
364 <?php do_hook('left_main_before'); ?>
365 <table class="sqm_wrapperTable" cellspacing="0">
366 <tr>
367 <td>
368 <table cellspacing="0">
369 <tr>
370 <td style="text-align:center">
371 <span class="sqm_folderHeader"><?php echo _("Folders"); ?></span><br />
372 <span class="sqm_clock"><?php echo $clock; ?></span>
373 <span class="sqm_refreshButton"><small>[<a href="../src/left_main.php" target="left"><?php echo _("Check mail"); ?></a>]</small></span>
374 </td>
375 </tr>
376 </table>
377 <br />
378 <?php echo $mailbox_listing; ?>
379 </tr>
380 </td>
381 </table>
382 <?php do_hook('left_main_after'); ?>
383 </div>