Happy New Year
[squirrelmail.git] / templates / default / options.tpl
index d6ed9eb7839fa2cf372e827f08e0e059dd172419..c0cd1b2b3f957f2f0f665b0b3060fde3c805d740 100644 (file)
@@ -3,8 +3,15 @@
  * options.tpl
  *
  * Template for rendering the options page
+ * 
+ * The following variables are available to this template:
+ *      $option_groups - array of option groups and their options as
+ *                       built by SquirrelMail.  Important fields
+ *                       in this array include (but are not limited to):
+ *                       ['name']     - The name of the option group
+ *                       ['options']  - array of squirrelOption objects
  *
- * @copyright © 1999-2006 The SquirrelMail Project Team
+ * @copyright 1999-2018 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
  * @package squirrelmail
 
 /** add required includes */
 
-
 /** extract variables */
 extract($t);
 
 
-$optpage_title = _("Options");
-if (isset($optpage_name) && ($optpage_name != '')) {
-    $optpage_title .= " - $optpage_name";
+if ( !empty($topmessage) ) {
+       echo "<div id=\"optionMessage\">\n$topmessage\n</div>\n\n";
 }
+?>
 
-/***************************************************************/
-/* Finally, display whatever page we are supposed to show now. */
-/***************************************************************/
-
-displayPageHeader($color, 'None', (isset($optpage_data['xtra']) ? $optpage_data['xtra'] : ''));
-
-echo html_tag( 'table', '', 'center', $color[0], 'width="95%" cellpadding="1" cellspacing="0" border="0"' ) . "\n" .
-        html_tag( 'tr' ) . "\n" .
-            html_tag( 'td', '', 'center' ) .
-                "<b>$optpage_title</b><br />\n".
-                html_tag( 'table', '', '', '', 'width="100%" cellpadding="5" cellspacing="0" border="0"' ) . "\n" .
-                    html_tag( 'tr' ) . "\n" .
-                        html_tag( 'td', '', 'center', $color[4] ) . "\n";
-
-/*
- * The main option page has a different layout then the rest of the option
- * pages. Therefore, we create it here first, then the others below.
- */
-if ($optpage == SMOPT_PAGE_MAIN) {
-    /**********************************************************/
-    /* First, display the results of a submission, if needed. */
-    /**********************************************************/
-    if ($optmode == SMOPT_MODE_SUBMIT) {
-        if (!isset($frame_top)) {
-            $frame_top = '_top';
-        }
-
-        if (isset($optpage_save_error) && $optpage_save_error!=array()) {
-            echo "<font color=\"$color[2]\"><b>" . _("Error(s) occurred while saving your options") . "</b></font><br />\n";
-            echo "<ul>\n";
-            foreach ($optpage_save_error as $error_message) {
-                echo '<li><small>' . $error_message . "</small></li>\n";
-            }
-            echo "</ul>\n";
-            echo '<b>' . _("Some of your preference changes were not applied.") . "</b><br />\n";
-        } else {
-            /* Display a message indicating a successful save. */
-            echo '<b>' . _("Successfully Saved Options") . ": $optpage_name</b><br />\n";
-        }
-
-        /* If $max_refresh != SMOPT_REFRESH_NONE, provide a refresh link. */
-        if ( !isset( $max_refresh ) ) {
-        } else if ($max_refresh == SMOPT_REFRESH_FOLDERLIST) {
-            echo '<a href="../src/left_main.php" target="left">' . _("Refresh Folder List") . '</a><br />';
-        } else if ($max_refresh) {
-            echo '<a href="../src/webmail.php?right_frame=options.php" target="' . $frame_top . '">' . _("Refresh Page") . '</a><br />';
-        }
+<div id="optionDisplay">
+<?php
+foreach ($option_groups as $option) {
+    echo "<table cellspacing=\"0\">\n";
+
+    if (!empty($option['name'])) {
+        echo " <tr>\n" .
+             "  <td class=\"header1\" colspan=\"2\">\n" .
+             "   ".$option['name']."\n" .
+             "  </td>\n" .
+             " </tr>\n";
     }
-    /******************************************/
-    /* Build our array of Option Page Blocks. */
-    /******************************************/
-    $optpage_blocks = array();
-
-    /* Build a section for Personal Options. */
-    $optpage_blocks[] = array(
-        'name' => _("Personal Information"),
-        'url'  => 'options.php?optpage=' . SMOPT_PAGE_PERSONAL,
-        'desc' => _("This contains personal information about yourself such as your name, your email address, etc."),
-        'js'   => false
-    );
 
-    /* Build a section for Display Options. */
-    $optpage_blocks[] = array(
-        'name' => _("Display Preferences"),
-        'url'  => 'options.php?optpage=' . SMOPT_PAGE_DISPLAY,
-        'desc' => _("You can change the way that SquirrelMail looks and displays information to you, such as the colors, the language, and other settings."),
-        'js'   => false
-    );
-
-    /* Build a section for Message Highlighting Options. */
-    $optpage_blocks[] = array(
-        'name' =>_("Message Highlighting"),
-        'url'  => 'options_highlight.php',
-        'desc' =>_("Based upon given criteria, incoming messages can have different background colors in the message list. This helps to easily distinguish who the messages are from, especially for mailing lists."),
-        'js'   => false
-    );
-
-    /* Build a section for Folder Options. */
-    $optpage_blocks[] = array(
-        'name' => _("Folder Preferences"),
-        'url'  => 'options.php?optpage=' . SMOPT_PAGE_FOLDER,
-        'desc' => _("These settings change the way your folders are displayed and manipulated."),
-        'js'   => false
-    );
-
-    /* Build a section for Index Order Options. */
-    $optpage_blocks[] = array(
-        'name' => _("Index Order"),
-        'url'  => 'options_order.php',
-        'desc' => _("The order of the message index can be rearranged and changed to contain the headers in any order you want."),
-        'js'   => false
-    );
-
-    /* Build a section for Compose Options. */
-    $optpage_blocks[] = array(
-        'name' => _("Compose Preferences"),
-        'url'  => 'options.php?optpage=' . SMOPT_PAGE_COMPOSE,
-        'desc' => _("Control the behaviour and layout of writing new mail messages, replying to and forwarding messages."),
-        'js'   => false
-    );
-
-    /* Build a section for plugins wanting to register an optionpage. */
-    do_hook('optpage_register_block');
-
-    /*****************************************************/
-    /* Let's sort Javascript Option Pages to the bottom. */
-    /*****************************************************/
-    $js_optpage_blocks = array();
-    $reg_optpage_blocks = array();
-    foreach ($optpage_blocks as $cur_optpage) {
-        if (!isset($cur_optpage['js']) || !$cur_optpage['js']) {
-            $reg_optpage_blocks[] = $cur_optpage;
-        } else if ($javascript_on == SMPREF_JS_ON) {
-            $js_optpage_blocks[] = $cur_optpage;
-        }
-    }
-    $optpage_blocks = array_merge($reg_optpage_blocks, $js_optpage_blocks);
+    $hidden_widgets = '';
+    foreach ($option['options'] as $opt) {
+        if ($opt->type == SMOPT_TYPE_INFO) {
+            echo "<tr>\n"
+               . " <td colspan=\"2\">\n"
+               . "  <table class=\"optionInfo\">\n"
+               . "   <tr>\n"
+               . "    <td>\n"
+               . $opt->createWidget() . "\n"
+               . "    </td>\n"
+               . "   </tr>\n"
+               . "  </table>\n"
+               . " </td>\n"
+               . "</tr>\n";
+
+        } else if ($opt->type != SMOPT_TYPE_HIDDEN) {
+            echo   "<tr>\n" .
+                   " <td class=\"optionName\"" . ($opt->caption_wrap ? '' : ' style="white-space:nowrap"') . ">\n  ";
+
+            echo '<label for="new_' . $opt->name . '">' . $opt->caption;
+            if ($opt->type == SMOPT_TYPE_TEXTAREA && !empty($opt->trailing_text)) {
+// TODO: Is trailing_text already sanitized here? (sm_encode_html_special_chars())  Either way, we want to have an option to sanitize or not depending on $opt->trailing_text_is_html ---- note that this question may already be taken care of in functions/options.php and irrelevant here, but I'm not sure about that yet.... after looking a little, it does appear this is a problem, though where to solve it is not clear
+                echo '<br /><small>' . $opt->trailing_text . '</small>';
+            }
+            echo '</label>';
 
-    /********************************************/
-    /* Now, print out each option page section. */
-    /********************************************/
-    $first_optpage = false;
-    echo html_tag( 'table', '', '', $color[4], 'width="100%" cellpadding="0" cellspacing="5" border="0"' ) . "\n" .
-                html_tag( 'tr' ) . "\n" .
-                    html_tag( 'td', '', 'left', '', 'valign="top"' ) .
-                        html_tag( 'table', '', '', $color[4], 'width="100%" cellpadding="3" cellspacing="0" border="0"' ) . "\n" .
-                            html_tag( 'tr' ) . "\n" .
-                                html_tag( 'td', '', 'left' );
-    foreach ($optpage_blocks as $next_optpage) {
-        if ($first_optpage == false) {
-            $first_optpage = $next_optpage;
+            echo   "\n </td>\n" .
+                   " <td class=\"optionValue\">\n" .
+                   "  ".$opt->createWidget()."\n" .
+                   " </td>\n" .
+                   "</tr>\n";
         } else {
-            print_optionpages_row($first_optpage, $next_optpage);
-            $first_optpage = false;
+            $hidden_widgets .= $opt->createWidget();
         }
     }
 
-    if ($first_optpage != false) {
-        print_optionpages_row($first_optpage);
-    }
-
-    echo "</td></tr></table></td></tr></table>\n";
-
-    do_hook('options_link_and_description');
-
-
-/*************************************************************************/
-/* If we are not looking at the main option page, display the page here. */
-/*************************************************************************/
-} else {
-    echo addForm('options.php', 'post', 'f')
-       . create_optpage_element($optpage)
-       . create_optmode_element(SMOPT_MODE_SUBMIT)
-       . html_tag( 'table', '', '', '', 'width="100%" cellpadding="2" cellspacing="0" border="0"' ) . "\n";
-
-    /* Output the option groups for this page. */
-    print_option_groups($optpage_data['options']);
-
-    /* Set the inside_hook_name and submit_name. */
-    switch ($optpage) {
-        case SMOPT_PAGE_PERSONAL:
-            $inside_hook_name = 'options_personal_inside';
-            $bottom_hook_name = 'options_personal_bottom';
-            $submit_name = 'submit_personal';
-            break;
-        case SMOPT_PAGE_DISPLAY:
-            $inside_hook_name = 'options_display_inside';
-            $bottom_hook_name = 'options_display_bottom';
-            $submit_name = 'submit_display';
-            break;
-        case SMOPT_PAGE_COMPOSE:
-            $inside_hook_name = 'options_compose_inside';
-            $bottom_hook_name = 'options_compose_bottom';
-            $submit_name = 'submit_compose';
-            break;
-        case SMOPT_PAGE_HIGHLIGHT:
-            $inside_hook_name = 'options_highlight_inside';
-            $bottom_hook_name = 'options_highlight_bottom';
-            $submit_name = 'submit_highlight';
-            break;
-        case SMOPT_PAGE_FOLDER:
-            $inside_hook_name = 'options_folder_inside';
-            $bottom_hook_name = 'options_folder_bottom';
-            $submit_name = 'submit_folder';
-            break;
-        case SMOPT_PAGE_ORDER:
-            $inside_hook_name = 'options_order_inside';
-            $bottom_hook_name = 'options_order_bottom';
-            $submit_name = 'submit_order';
-            break;
-        default:
-            $inside_hook_name = '';
-            $bottom_hook_name = '';
-            $submit_name = 'submit';
-    }
-
-    /* If it is not empty, trigger the inside hook. */
-    if ($inside_hook_name != '') {
-        do_hook($inside_hook_name);
-    }
-
-    /* Spit out a submit button. */
-    OptionSubmit($submit_name);
-    echo '</table></form>';
+    echo " <tr>\n  <td colspan=\"2\" align=\"right\">\n"
+       . $hidden_widgets . "   <input type=\"submit\" value=\"" . _("Submit") 
+       . "\" name=\"" . $submit_name . "\" />&nbsp;&nbsp;&nbsp;&nbsp;\n  </td>\n </tr>\n";
 
-    /* If it is not empty, trigger the bottom hook. */
-    if ($bottom_hook_name != '') {
-        do_hook($bottom_hook_name);
-    }
+    echo "</table>\n";
 }
-
 ?>
-</td></tr>
-</table>
-</td></tr>
-</table>
-<?php
-
-
-
-
-
-
-
-
-
-
-
-/**
- * This function prints out an option page row.
- */
-function print_optionpages_row($leftopt, $rightopt = false) {
-    global $color;
-
-    if ($rightopt) {
-        $rightopt_name = html_tag( 'td', '<a href="' . $rightopt['url'] . '">' . $rightopt['name'] . '</a>', 'left', $color[9], 'valign="top" width="49%"' );
-        $rightopt_desc = html_tag( 'td', $rightopt['desc'], 'left', $color[0], 'valign="top" width="49%"' );
-    } else {
-        $rightopt_name = html_tag( 'td', '&nbsp;', 'left', $color[4], 'valign="top" width="49%"' );
-        $rightopt_desc = html_tag( 'td', '&nbsp;', 'left', $color[4], 'valign="top" width="49%"' );
-    }
-
-    echo
-    html_tag( 'table', "\n" .
-        html_tag( 'tr', "\n" .
-            html_tag( 'td', "\n" .
-                html_tag( 'table', "\n" .
-                    html_tag( 'tr', "\n" .
-                        html_tag( 'td',
-                            '<a href="' . $leftopt['url'] . '">' . $leftopt['name'] . '</a>' ,
-                        'left', $color[9], 'valign="top" width="49%"' ) .
-                        html_tag( 'td',
-                            '&nbsp;' ,
-                        'left', $color[4], 'valign="top" width="2%"' ) . "\n" .
-                        $rightopt_name
-                    ) . "\n" .
-                    html_tag( 'tr', "\n" .
-                        html_tag( 'td',
-                            $leftopt['desc'] ,
-                        'left', $color[0], 'valign="top" width="49%"' ) .
-                        html_tag( 'td',
-                            '&nbsp;' ,
-                        'left', $color[4], 'valign="top" width="2%"' ) . "\n" .
-                        $rightopt_desc
-                    ) ,
-                '', '', 'width="100%" cellpadding="2" cellspacing="0" border="0"' ) ,
-            'left', '', 'valign="top"' )
-        ) ,
-    '', $color[4], 'width="100%" cellpadding="0" cellspacing="5" border="0"' );
-}
-
-
-/**
- * $Log$
- * Revision 1.1  2006/07/09 22:22:31  vanmer
- * - initial revision of a template for options output
- *
- *
-**/
-?>
\ No newline at end of file
+</div>