fsf changes, meant to be rebased on upstream
[squirrelmail.git] / templates / default / message_list.tpl
CommitLineData
49db257d 1<?php
2
3/**
4 * message_list.tpl
5 *
49db257d 6 * Template for viewing a messages list
7 *
83d1e1af 8 * The following variables are available in this template:
9//FIXME: need to clean (and document) this list, it is just a dump of the array keys of $t
10 * $sTemplateID
11 * $icon_theme_path
12 * $javascript_on
13 * $delayed_errors
14 * $frames
15 * $lang
16 * $page_title
17 * $header_tags
18 * $plugin_output
19 * $header_sent
20 * $body_tag_js
21 * $shortBoxName
e6e2e7fd 22 * $provider_link
83d1e1af 23 * $frame_top
24 * $urlMailbox
25 * $startMessage
26 * $hide_sm_attributions
27 * $uri
28 * $text
29 * $onclick
30 * $class
31 * $id
32 * $target
33 * $color
34 * $form_name
35 * $form_id
36 * $page_selector
37 * $page_selector_max
38 * $messagesPerPage
39 * $showall
40 * $end_msg
41 * $align
42 * $iNumberOfMessages
43 * $aOrder
44 * $aFormElements
45 * $sort
46 * $pageOffset
47 * $baseurl
48 * $aMessages
49 * $trash_folder
50 * $sent_folder
51 * $draft_folder
cd693cf4 52 * $thread_link_uri
53 * $thread_name
83d1e1af 54 * $php_self
55 * $mailbox
56 * $enablesort
57 * $icon_theme
58 * $use_icons
59 * $alt_index_colors
60 * $fancy_index_highlite
4127171c 61 * $aSortSupported
62 * $show_label_columns
83d1e1af 63 * $compact_paginator
64 * $aErrors
e0a6645e 65 * $checkall
02def6a1 66 * $preselected
969c1e9f 67 * $show_personal_names boolean When turned on, all email
68 * address fields should display
69 * the personal name and use the
70 * email address as a tool tip;
71 * When turned off, this logic
72 * should be inverted
47485591 73 * $accesskey_mailbox_toggle_selected The access key to use for the toggle all checkbox
74 * $accesskey_mailbox_thread The access key to use for the Thread/Unthread links
83d1e1af 75 *
77a1e3d1 76 * @copyright 1999-2022 The SquirrelMail Project Team
4b4abf93 77 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
49db257d 78 * @version $Id$
79 * @package squirrelmail
57d06b39 80 * @subpackage templates
49db257d 81 */
82
4127171c 83
f2e2aa7f 84/** add required includes */
a1d29fb8 85include_once(SM_PATH . 'functions/template/message_list_util.php');
49db257d 86
4127171c 87
49db257d 88/* retrieve the template vars */
89extract($t);
90
4127171c 91
a1d29fb8 92if (!empty($plugin_output['mailbox_index_before'])) echo $plugin_output['mailbox_index_before'];
49db257d 93
4127171c 94
49db257d 95/**
96 * Calculate string "Viewing message x to y (z total)"
97 */
98$msg_cnt_str = '';
99if ($pageOffset < $end_msg) {
100 $msg_cnt_str = sprintf(_("Viewing Messages: %s to %s (%s total)"),
4127171c 101 '<em>' . $pageOffset . '</em>',
102 '<em>' . $end_msg . '</em>',
103 $iNumberOfMessages);
49db257d 104} else if ($pageOffset == $end_msg) {
4127171c 105 $msg_cnt_str = sprintf(_("Viewing Message: %s (%s total)"),
106 '<em>' . $pageOffset . '</em>',
107 $iNumberOfMessages);
49db257d 108}
109
49db257d 110
583db309 111/**
29997535 112 * All icon functionality is now handled through $icon_theme_path.
113 * $icon_theme_path will contain the path to the user-selected theme. If it is
114 * NULL, the user and/or admin have turned off icons.
4127171c 115 */
116
583db309 117
49db257d 118?>
e3812cb2 119<div id="message_list">
a73c1312 120<form id="<?php echo $form_name;?>" name="<?php echo $form_name;?>" method="post" action="<?php echo $php_self;?>">
199a9ab8 121<input type="hidden" name="smtoken" value="<?php echo sm_generate_security_token(); ?>" />
e3812cb2 122<table class="table_empty" cellspacing="0">
49db257d 123 <tr>
e3812cb2 124 <td>
125 <table class="table_standard" cellspacing="0">
49db257d 126 <tr>
127 <td>
e3812cb2 128 <table class="table_empty" cellspacing="0">
49db257d 129 <tr>
e3812cb2 130 <td class="links_paginator">
49db257d 131<!-- paginator and thread link string -->
132 <?php
4127171c 133 /**
134 * The following line gets the output from a separate
135 * template altogether (called "paginator.tpl").
136 * $this is the Template class object.
49db257d 137 */
138 $paginator_str = $this->fetch('paginator.tpl');
cd693cf4 139 echo $paginator_str . '<small>[<a href="' . $thread_link_uri
47485591 140 . ($accesskey_mailbox_thread != 'NONE'
141 ? '" accesskey="' . $accesskey_mailbox_thread . '">'
142 : '">')
143 . $thread_name . '</a>]</small>&nbsp;&nbsp;';
00d0bdda 144 if (!empty($plugin_output['mailbox_paginator_after'])) echo $plugin_output['mailbox_paginator_after'];
145 ?>
49db257d 146<!-- end paginator and thread link string -->
49db257d 147 </td>
148<!-- message count string -->
e3812cb2 149 <td class="message_count"><?php echo $msg_cnt_str; ?></td>
49db257d 150<!-- end message count string -->
151 </tr>
152 </table>
153 </td>
154 </tr>
155<?php
156 if (count($aFormElements)) {
157?>
158<!-- start message list form control -->
d915a2ca 159 <tr class="message_list_controls">
49db257d 160 <td>
69a023cf 161 <?php
162 /**
163 * The following line gets the output from a separate
164 * template altogether (called "message_list_controls.tpl").
165 * $this is the Template class object.
166 */
167 $message_list_controls = $this->fetch('message_list_controls.tpl');
168 echo $message_list_controls ."\n"; ?>
49db257d 169 </td>
170 </tr>
171<!-- end message list form control -->
172<?php
173 } // if (count($aFormElements))
174?>
175 </table>
4127171c 176<?php if (!empty($plugin_output['mailbox_form_before'])) echo $plugin_output['mailbox_form_before']; ?>
49db257d 177 </td>
178 </tr>
e3812cb2 179 <tr><td class="spacer"></td></tr>
49db257d 180 <tr>
181 <td>
e3812cb2 182 <table class="table_messageListWrapper" cellspacing="0">
49db257d 183 <tr>
184 <td>
e3812cb2 185 <table class="table_messageList" cellspacing="0">
49db257d 186<!-- table header start -->
e3812cb2 187<?php
188/*
189 * As an FYI, Firefox on Windows seems to have an issue w/ putting wierd breaks while
ac858073 190 * rendering this table if we use THEAD and TH tags. No other browser or platform has
e3812cb2 191 * this issue. We will use TR/TD w/ another CSS class to work around this.
192 */
193?>
4127171c 194
e3812cb2 195 <tr class="headerRow">
4127171c 196
49db257d 197<?php
198 $aWidth = calcMessageListColumnWidth($aOrder);
199 foreach($aOrder as $iCol) {
49db257d 200?>
4127171c 201
e3812cb2 202 <td style="width:<?php echo $aWidth[$iCol]; ?>%">
4127171c 203
49db257d 204<?php
b685a253 205 $colNameText = '';
49db257d 206 switch ($iCol) {
207 case SQM_COL_CHECK:
208 if ($javascript_on) {
e0a6645e 209 $checked = ($checkall ? ' checked="checked" ' : '');
47485591 210 $accesskey = ($accesskey_mailbox_toggle_selected == 'NONE' ? ''
211 : ' accesskey="' . $accesskey_mailbox_toggle_selected . '" ');
63d19712 212 echo '<input type="checkbox" name="toggleAll" id="toggleAll" title="'
213 . _("Toggle All") . '" onclick="toggle_all(\''
214 . $form_name . '\', \'msg\', ' . $fancy_index_highlite
47485591 215 . '); return false;" ' . $checked . $accesskey . '/>' . "\n";
49db257d 216 } else {
e0a6645e 217 $link = $baseurl
218 . "&amp;startMessage=$pageOffset&amp;checkall="
219 . ($checkall ? '0' : '1');
63d19712 220 echo "<a href=\"$link\">" . _("All") . '</a>';
49db257d 221 }
222 break;
ddf0ebe1 223 case SQM_COL_FROM:
b685a253 224 // was: echo '<label for="toggleAll">' . _("From") . "</label>\n";
225 $colNameText = _("From");
226 break;
227 case SQM_COL_DATE:
228 // was: echo _("Date") . "\n";
229 $colNameText = _("Date");
230 break;
231 case SQM_COL_SUBJ:
232 // was: echo _("Subject") . "\n";
233 $colNameText = _("Subject");
ddf0ebe1 234 break;
583db309 235 case SQM_COL_FLAGS:
b685a253 236 echo getIcon($icon_theme_path, 'msg_new.png', '&nbsp;', _("Message Flags")) . "\n";
237 break;
238 case SQM_COL_SIZE:
239 // echo _("Size") . "\n";
240 $colNameText = _("Size");
241 break;
583db309 242 case SQM_COL_PRIO:
b685a253 243 echo getIcon($icon_theme_path, 'prio_high.png', '!', _("Priority")) . "\n";
244 break;
583db309 245 case SQM_COL_ATTACHMENT:
b685a253 246 echo getIcon($icon_theme_path, 'attach.png', '+', _("Attachment")) . "\n";
247 break;
248 case SQM_COL_INT_DATE:
249 // was: echo _("Received") . "\n";
250 $colNameText = _("Received");
251 break;
e8b30fd3 252 case SQM_COL_TO:
b685a253 253 // was: echo '<label for="toggleAll">' . _("To") . "</label>\n";
254 $colNameText = _("To");
e8b30fd3 255 break;
ddf0ebe1 256 case SQM_COL_CC: echo _("Cc") . "\n"; break;
257 case SQM_COL_BCC: echo _("Bcc") . "\n"; break;
49db257d 258 default: break;
259 }
260 // add the sort buttons
261 if (isset($aSortSupported[$iCol])) {
262 if ($sort == $aSortSupported[$iCol][0]) {
29997535 263 $newsort = $aSortSupported[$iCol][1];
264 $img = 'up_pointer.png';
8af5b50c 265 $text_icon = '&#8679;'; // U+21E7 UPWARDS WHITE ARROW
49db257d 266 } else if ($sort == $aSortSupported[$iCol][1]) {
29997535 267 $newsort = 0;
268 $img = 'down_pointer.png';
8af5b50c 269 $text_icon = '&#8681;'; // U+21E9 DOWNWARDS WHITE ARROW
49db257d 270 } else {
29997535 271 $newsort = $aSortSupported[$iCol][0];
272 $img = 'sort_none.png';
8af5b50c 273 $text_icon = '&#9723;'; // U+25FB WHITE MEDIUM SQUARE
49db257d 274 }
275 /* Now that we have everything figured out, show the actual button. */
b685a253 276 echo " <a href=\"$baseurl&amp;startMessage=1&amp;srt=$newsort\" style=\"text-decoration:none;color:inherit\">";
277 }
278 echo $colNameText;
279 if (isset($aSortSupported[$iCol])) {
280 echo ' ' . getIcon($icon_theme_path, $img, $text_icon, _("Click here to change the sorting of the message list")) . "\n</a>";
49db257d 281 }
282?>
49db257d 283 </td>
284<?php
285 }
286?>
e3812cb2 287 </tr>
288<!-- end table header -->
49db257d 289
290<!-- Message headers start -->
291<?php
3d621333 292
49db257d 293 $i = 0;
294 $iColCnt = count($aOrder);
295 $sLine = '';
296
3d621333 297
49db257d 298 // this stuff does the auto row highlighting on mouseover
299 //
109e876c 300 if (!empty($plugin_output['checkbox_javascript_onclick'])) $checkbox_javascript_onclick = $plugin_output['checkbox_javascript_onclick'];
301 else $checkbox_javascript_onclick = '';
302
49db257d 303 if ($javascript_on && $fancy_index_highlite) {
109e876c 304 $checkbox_javascript = ' onclick="this.checked = !this.checked; ' . $checkbox_javascript_onclick . '"';
305 } else if (!empty($checkbox_javascript_onclick)) {
306 $checkbox_javascript = ' onclick="' . $checkbox_javascript_onclick . '"';
799ee2d5 307 } else {
308 $checkbox_javascript = '';
49db257d 309 }
3d621333 310
311
312 /**
313 * main message iteration loop
314 */
49db257d 315 foreach ($aMessages as $iUid => $aMsg) {
3d621333 316
49db257d 317 echo $sLine;
318
3d621333 319
49db257d 320/**
321* Display message header row in messages list
322*
323*/
324
325 $aColumns = $aMsg['columns'];
326
49db257d 327
328 /**
329 * Check the flags and set a class var.
330 */
331 if (isset($aColumns[SQM_COL_FLAGS])) {
332 $aFlags = $aColumns[SQM_COL_FLAGS]['value'];
29997535 333 $sFlags = getFlagIcon($aFlags, $icon_theme_path);
49db257d 334
49db257d 335 /* add the flag string to the value index */
336 $aColumns[SQM_COL_FLAGS]['value'] = $sFlags;
337 }
338 /**
339 * Check the priority column
340 */
341 if (isset($aColumns[SQM_COL_PRIO])) {
29997535 342 $sValue = getPriorityIcon($aColumns[SQM_COL_PRIO]['value'], $icon_theme_path);
49db257d 343 $aColumns[SQM_COL_PRIO]['value'] = $sValue;
344 }
345
346 /**
347 * Check the attachment column
348 */
349 if (isset($aColumns[SQM_COL_ATTACHMENT])) {
29997535 350 $sValue = getAttachmentIcon($aColumns[SQM_COL_ATTACHMENT]['value'], $icon_theme_path);
49db257d 351 $aColumns[SQM_COL_ATTACHMENT]['value'] = $sValue;
352 }
353
02def6a1 354 $class = (($checkall || in_array($iUid, $preselected)) && $javascript_on && $fancy_index_highlite ? 'clicked_even' : 'even');
e0a6645e 355 $non_clicked_class = 'even';
356
49db257d 357 /**
e3812cb2 358 * If alternating row colors is set, adapt the CSS class
49db257d 359 */
360 if (isset($alt_index_colors) && $alt_index_colors) {
361 if (!($i % 2)) {
02def6a1 362 $class = (($checkall || in_array($iUid, $preselected)) && $javascript_on && $fancy_index_highlite ? 'clicked_odd' : 'odd');
e0a6645e 363 $non_clicked_class = 'odd';
49db257d 364 }
365
366 }
9c928f05 367
368 /**
369 * Message Highlighting Functionality
370 */
e3812cb2 371 if (isset($aMsg['row']['color']))
372 {
02def6a1 373 if (($checkall || in_array($iUid, $preselected)) && $javascript_on && $fancy_index_highlite) {
9c928f05 374//FIXME: would be best not to use $color directly here; want to move this to be a CSS style-defined value only, but the problem is that this CSS class is being defined on the fly right here
375 $bgcolor = $color[16];
376 $class = 'clicked_misc'.$i;
377 } else {
378 $bgcolor = $aMsg['row']['color'];
379 $class = 'misc'.$i;
380 }
381 $non_clicked_class = 'misc'.$i;
382 $non_clicked_bgcolor = $aMsg['row']['color'];
383 }
384 else
385 {
386 $bgcolor = '';
387 $non_clicked_bgcolor = '';
e3812cb2 388 }
49db257d 389
390 $row_extra = '';
391
392 // this stuff does the auto row highlighting on mouseover
393 //
394 if ($javascript_on && $fancy_index_highlite) {
e0a6645e 395 $row_extra = ' onmouseover="rowOver(\''.$form_id . '_msg' . $i.'\');" onmouseout="setPointer(this, ' . $i . ', \'out\', \'' . $non_clicked_class . '\', \'mouse_over\', \'clicked\');" onmousedown="setPointer(this, ' . $i . ', \'click\', \'' . $non_clicked_class . '\', \'mouse_over\', \'clicked\');"';
49db257d 396 }
397 // this does the auto-checking of the checkbox no matter
398 // where on the row you click
399 //
400 $javascript_auto_click = '';
109e876c 401 $row_click_extra = '';
402 if (!empty($plugin_output['row_click_extra'])) $row_click_extra = $plugin_output['row_click_extra'];
49db257d 403 if ($javascript_on && $fancy_index_highlite) {
404 // include the form_id in order to show multiple messages lists. Otherwise id isn't unique
109e876c 405 $javascript_auto_click = " onmousedown=\"row_click('$form_id"."_msg$i', event, '$form_name', 'msg[' + $i + ']', '$row_click_extra')\"";
49db257d 406 }
407
9c928f05 408
e3812cb2 409/*
410 * Message Highlighting requires a unique CSS class declaration for proper
411 * mouseover functionality. There is no harm in doing this when the mouseover
412 * functionality is disabled
413 */
e0a6645e 414if ($class != 'even' && $class != 'odd'
9c928f05 415 && $class != 'clicked_even' && $class != 'clicked_odd')
e3812cb2 416{
417?>
418<style type="text/css">
419<!--
420.table_messageList tr.<?php echo $class; ?> { background:<?php echo $bgcolor; ?> }
421-->
422</style>
d7f26e6e 423<?php
e3812cb2 424}
9c928f05 425if ($non_clicked_class != 'even' && $non_clicked_class != 'odd'
426 && $non_clicked_class != 'clicked_even' && $non_clicked_class != 'clicked_odd')
427{
428?>
429<style type="text/css">
430<!--
431.table_messageList tr.<?php echo $non_clicked_class; ?> { background:<?php echo $non_clicked_bgcolor; ?> }
432-->
433</style>
434<?php
435}
436
437
49db257d 438?>
e3812cb2 439<tr <?php echo (empty($class) ? '' : 'class="'.$class.'" '); echo $row_extra;?>>
49db257d 440<?php
441 // flag style mumbo jumbo
442 $sPre = $sEnd = '';
bf9e5efb 443 if (isset($aColumns[SQM_COL_FLAGS])) {
1be82af6 444 if (!in_array('seen',$aFlags) || !$aFlags['seen']) {
e3812cb2 445 $sPre = '<span class="unread">'; $sEnd = '</span>';
f2e2aa7f 446 }
447 if (in_array('deleted',$aFlags) && $aFlags['deleted']) {
e3812cb2 448 $sPre = '<span class="deleted">' . $sPre;
449 $sEnd .= '</span>';
f2e2aa7f 450 } else {
451 if (in_array('flagged',$aFlags) && $aFlags['flagged']) {
e3812cb2 452 $sPre = '<span class="flagged">' . $sPre;
453 $sEnd .= '</span>';
f2e2aa7f 454 }
49db257d 455 }
456 }
457 /**
458 * Because the order of the columns and which columns to show is a user preference
459 * we have to do some php coding to display the columns in the right order
460 */
461 foreach ($aOrder as $iCol) {
6547ab43 462 if (in_array($iCol, $show_label_columns)) {
6d34ad62 463 $sLabelStart = '<label for="'.$form_id."_msg$i\">";
49db257d 464 $sLabelEnd = '</label>';
465 } else {
466 $sLabelStart = '';
467 $sLabelEnd = '';
468 }
02e830bd 469 $aCol = (isset($aColumns[$iCol])) ? $aColumns[$iCol] : array();
470 $title = (isset($aCol['title'])) ? $aCol['title'] : '';
471 $link = (isset($aCol['link'])) ? $aCol['link'] : '';
472 $link_extra = (isset($aCol['link_extra'])) ? $aCol['link_extra'] : '';
473 $onclick = (isset($aCol['onclick'])) ? $aCol['onclick'] : '';
02e830bd 474 $value = (isset($aCol['value'])) ? $aCol['value'] : '';
475 $target = (isset($aCol['target'])) ? $aCol['target'] : '';
969c1e9f 476 if (!$show_personal_names
79af43f5 477 && !empty($title)
969c1e9f 478 && ($iCol == SQM_COL_FROM
479 || $iCol == SQM_COL_TO
480 || $iCol == SQM_COL_CC
481 || $iCol == SQM_COL_BCC)) {
482 // swap title and value
483 $tmp = $title;
484 $title = $value;
485 $value = $tmp;
486 }
49db257d 487 if ($iCol !== SQM_COL_CHECK) {
488 $value = $sLabelStart.$sPre.$value.$sEnd.$sLabelEnd;
489 }
490
491
492 switch ($iCol) {
493 case SQM_COL_CHECK:
02def6a1 494 $checked = (($checkall || in_array($iUid, $preselected)) ? ' checked="checked" ' : '');
ac858073 495 if ($javascript_on) {
496 echo '<td class="col_check"'. $javascript_auto_click. '>' ?>
e0a6645e 497 <input type="checkbox" name="<?php echo "msg[$i]";?>" id="<?php echo $form_id."_msg$i";?>" value="<?php echo $iUid;?>" <?php echo $checkbox_javascript . $checked;?> /></td>
49db257d 498 <?php
ac858073 499 } else {
500 echo '<td class="col_check">';
ac858073 501 echo "<input type=\"checkbox\" name=\"msg[".$i."]\" id=\"".$form_id."_msg$i\" value=\"$iUid\" $checked/></td>";
502 }
49db257d 503 break;
504 case SQM_COL_SUBJ:
505 $indent = $aCol['indent'];
e3812cb2 506 $sText = " <td class=\"col_subject\" $javascript_auto_click>";
49db257d 507 if ($align['left'] == 'left') {
508 $sText .= str_repeat('&nbsp;&nbsp;',$indent);
509 }
510 $sText .= "<a href=\"$link\"";
02e830bd 511 if ($target) { $sText .= " target=\"$target\""; }
512 if ($title) { $sText .= " title=\"$title\""; }
513 if ($onclick) { $sText .= " onclick=\"$onclick\""; }
514 if ($link_extra) { $sText .= " $link_extra"; }
49db257d 515 if ($javascript_on && $fancy_index_highlite) {
109e876c 516 $sText .= " onmousedown=\"row_click('$form_id"."_msg$i', event, '$form_name', 'msg[' + $i + ']', '$row_click_extra'); setPointer(this." . (empty($bold) ? '' : 'parentNode.') .
e0a6645e 517 'parentNode.parentNode, ' . $i . ', \'click\', \''. $non_clicked_class. '\', \'mouse_over\', \'clicked\');"';
49db257d 518 }
3d621333 519 $sText .= ">"
520 . $value . '</a>';
49db257d 521 if ($align['left'] == 'right') {
522 $sText .= str_repeat('&nbsp;&nbsp;',$indent);
523 }
524 echo $sText."</td>\n";
525 break;
526 case SQM_COL_SIZE:
527 case SQM_COL_FLAGS:
3d621333 528 $sText = " <td class=\"col_flags\" $javascript_auto_click>"
529 . "$value</td>\n";
49db257d 530 echo $sText;
531 break;
532 case SQM_COL_INT_DATE:
533 case SQM_COL_DATE:
d72549cb 534 $sText = " <td class=\"col_date\" $javascript_auto_click";
535 if ($title) {$sText .= " title=\"$title\"";}
536 $sText .= ">" . $value. "</td>\n";
49db257d 537 echo $sText;
538 break;
539 default:
e3812cb2 540 $sText = " <td class=\"col_text\" $javascript_auto_click";
49db257d 541 if ($link) {
542 $sText .= "><a href=\"$link\"";
543 if ($target) { $sText .= " target=\"$target\"";}
544 if ($title) { $sText .= " title=\"$title\"" ;}
545 $sText .= ">";
546 } else {
547 if ($title) {$sText .= " title=\"$title\"";}
548 $sText .= ">";
549 }
550 $sText .= $value;
551 if ($link) { $sText .= '</a>';}
552 echo $sText."</td>\n";
553 break;
554 }
555 }
3d621333 556
557 echo '</tr>';
e3812cb2 558 $sLine = "<tr><td colspan=\"$iColCnt\" class=\"spacer\"></td></tr>\n";
49db257d 559 ++$i;
560
561/*
562 * End displaying row part
563 */
564 }
565
566?>
567<!-- Message headers end -->
568 </table>
569 </td>
570 </tr>
571 </table>
572 </td>
573 </tr>
e3812cb2 574 <tr><td class="spacer"></td></tr>
49db257d 575 <tr>
576 <td>
e3812cb2 577 <table class="table_standard" cellspacing="0">
49db257d 578 <tr>
579 <td>
e3812cb2 580 <table class="table_empty" cellspacing="0">
49db257d 581 <tr>
0399a40b 582 <td class="links_paginator"><?php
583 /**
584 * The following line gets the output from a separate
585 * template altogether (called "paginator.tpl").
586 * $this is the Template class object.
587 */
588 $paginator_str = $this->fetch('paginator.tpl');
589 echo $paginator_str;
00d0bdda 590 if (!empty($plugin_output['mailbox_paginator_after'])) echo $plugin_output['mailbox_paginator_after'];
0399a40b 591 ?></td>
e3812cb2 592 <td class="message_count"><?php echo $msg_cnt_str; ?></td>
49db257d 593 </tr>
594 </table>
595 </td>
596 </tr>
597 </table>
598 </td>
599 </tr>
600 <tr>
0ab04626 601 <td align="right">
3d621333 602<?php if (!empty($plugin_output['mailbox_index_after'])) echo $plugin_output['mailbox_index_after']; ?>
49db257d 603 </td>
604 </tr>
605 </table>
cd0a9317 606</form>
e3812cb2 607</div>
e6e2e7fd 608
609<?php if (!$hide_sm_attributions): ?>
aff09f80 610<p class="sqm_squirrelcopyright">&copy; <?php echo SM_COPYRIGHT ?> The SquirrelMail Project Team - <a href="about.php">About SquirrelMail</a></p>
e6e2e7fd 611<?php endif; ?>