From: Paul J. T. <th...@us...> - 2001-10-31 06:10:25
|
Update of /cvsroot/squirrelmail/squirrelmail/src In directory usw-pr-cvs1:/tmp/cvs-serv18758/src Modified Files: options.php Log Message: Began rework of options page. Also added 3 plugins (filters, translate, and squirrelspell) into CVS for maintenance with the Squirrelmail core. Please note that these plugins are NOT going to be INTEGRATED with the core, just maintained alongside it here in CVS and packaged as a part of the official Squirrelmail release when we release 1.2. Index: options.php =================================================================== RCS file: /cvsroot/squirrelmail/squirrelmail/src/options.php,v retrieving revision 1.76 retrieving revision 1.77 diff -u -w -r1.76 -r1.77 --- options.php 2001/10/29 13:04:38 1.76 +++ options.php 2001/10/31 06:10:21 1.77 @@ -1,15 +1,15 @@ <?php /** - ** options.php - ** - ** Copyright (c) 1999-2000 The SquirrelMail development team - ** Licensed under the GNU GPL. For full terms see the file COPYING. - ** - ** Displays the options page. Pulls from proper user preference files - ** and config.php. Displays preferences as selected and other options. - ** - ** $Id$ - **/ + * options.php + * + * Copyright (c) 1999-2001 The SquirrelMail Development Team + * Licensed under the GNU GPL. For full terms see the file COPYING. + * + * Displays the options page. Pulls from proper user preference files + * and config.php. Displays preferences as selected and other options. + * + * $Id$ + */ require_once('../src/validate.php'); require_once('../functions/display_messages.php'); @@ -31,7 +31,6 @@ <br> <table bgcolor="<?php echo $color[0] ?>" width="95%" align="center" cellpadding="2" cellspacing="0" border="0"> <tr><td align="center"> - <b><?php echo _("Options") ?></b><br> <table width="100%" border="0" cellpadding="5" cellspacing="0"> @@ -39,7 +38,7 @@ <?php if (isset($submit_personal)) { - # Save personal information + /* Save personal information. */ if (isset($full_name)) { setPref($data_dir, $username, 'full_name', $full_name); } @@ -69,18 +68,17 @@ } else if (isset($submit_display)) { // Do checking to make sure $chosentheme is in the array $in_ary = false; - for ($i=0; $i < count($theme); $i++) - { - if ($theme[$i]['PATH'] == $chosentheme) - { + for ($i=0; $i < count($theme); $i++) { + if ($theme[$i]['PATH'] == $chosentheme) { $in_ary = true; break; } } - if (! $in_ary) + if (! $in_ary) { $chosentheme = ''; + } - # Save display preferences + /* Save display preferences. */ setPref($data_dir, $username, 'chosen_theme', $chosentheme); setPref($data_dir, $username, 'language', $language); setPref($data_dir, $username, 'use_javascript_addr_book', $javascript_abook); @@ -123,7 +121,7 @@ echo '<br><b>'._("Successfully saved display preferences!").'</b><br>'; echo '<a href="../src/webmail.php?right_frame=options.php" target=_top>' . _("Refresh Page") . '</a><br>'; } else if (isset($submit_folder)) { - # Save folder preferences + /* Save folder preferences. */ if ($trash != 'none') { setPref($data_dir, $username, 'move_to_trash', true); setPref($data_dir, $username, 'trash_folder', $trash); @@ -165,84 +163,264 @@ do_hook('options_save'); } + /****************************************/ + /* Now build our array of option pages. */ + /****************************************/ + + /* Build a section for Personal Options. */ + $optionpages[] = array( + 'name' => _("Personal Information"), + 'url' => 'options_personal.php', + 'desc' => _("This contains personal information about yourself such as your name, your email address, etc."), + 'js' => false + ); + + /* Build a section for Display Options. */ + $optionpages[] = array( + 'name' => _("Display Preferences"), + 'url' => 'options_display.php', + '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. */ + $optionpages[] = 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. */ + $optionpages[] = array( + 'name' => _("Folder Preferences"), + 'url' => 'options_folder.php', + 'desc' => _("These settings change the way your folders are displayed and manipulated."), + 'js' => false + ); + + /* Build a section for Index Order Options. */ + $optionpages[] = array( + 'name' => _("Index Order"), + 'url' => 'options_order.php', + 'desc' => _("The order of the message index can be rearanged and changed to contain the headers in any order you want."), + 'js' => false + ); + /* Build a section for plugins wanting to register an optionpage. */ + do_hook('options_register'); + + /*****************************************************/ + /* Let's sort Javascript Option Pages to the bottom. */ + /*****************************************************/ + foreach ($optionpages as $optpage) { + if ($optpage['js']) { + $js_optionpages[] = $optpage; + } else { + $nojs_optionpages[] = $optpage; + } + } + $optionpages = array_merge($nojs_optionpages, $js_optionpages); + + /********************************************/ + /* Now, print out each option page section. */ + /********************************************/ + $first_optpage = false; + foreach ($optionpages as $next_optpage) { + if ($first_optpage == false) { + $first_optpage = $next_optpage; + } else { + print_optionpages_row($first_optpage, $next_optpage); + $first_optpage = false; + } + } + + if ($first_optpage != false) { + print_optionpages_row($first_optpage); + } + + do_hook('options_link_and_description'); + ?> + </td></tr> + </table> -<table bgcolor="<?php echo $color[4] ?>" width="100%" cellpadding="5" cellspacing="0" border="0"> -<tr> - <td width="50%" valign="top"> - <table width="100%" cellpadding="3" cellspacing="0" border="0"> - <tr> - <td bgcolor="<?php echo $color[9] ?>"> - <a href="options_personal.php"><?php echo _("Personal Information"); ?></a> - </td> - </tr> - <tr> - <td bgcolor="<?php echo $color[0] ?>"> - <?php echo _("This contains personal information about yourself such as your name, your email address, etc.") ?> - </td> - </tr> - </table><br> - <table width="100%" cellpadding="3" cellspacing="0" border="0"> - <tr> - <td bgcolor="<?php echo $color[9] ?>"> - <a href="options_highlight.php"><?php echo _("Message Highlighting"); ?></a> - </td> - </tr> - <tr> - <td bgcolor="<?php echo $color[0] ?>"> - <?php echo _("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.") ?> - </td> - </tr> - </table><br> +</td></tr> +</table> + +</body></html> + +<?php + + /*******************************************************************/ + /* Please be warned. The code below this point sucks. This is just */ + /* my first implementation to make the option rows work for both */ + /* Javascript and non-Javascript option chunks. */ + /* */ + /* Please, someone make these better for me. All three functions */ + /* below REALLY do close to the same thing. */ + /* */ + /* This code would be GREATLY improved by a templating system. */ + /* Don't try to implement that now, however. That will come later. */ + /*******************************************************************/ + + /*******************************************************************/ + /* Actually, now that I think about it, don't do anything with */ + /* this code yet. There is ACTUALLY supposed to be a difference */ + /* between the three functions that write the option rows. I just */ + /* have not yet gotten to integrating that yet. */ + /*******************************************************************/ + + /** + * This function prints out an option page row. All it actually + * does is call the three functions below. + */ + function print_optionpages_row($leftopt, $rightopt = false) { + if ($rightopt == false) { + if ($leftopt['js']) { + print_optionpages_row_fulljs($leftopt); + } else { + print_optionpages_row_nojs($leftopt); + } + } else { + if ($leftopt['js']) { + if ($rightopt['js']) { + print_optionpages_row_fulljs($leftopt, $rightopt); + } else { + print_optionpages_row_partjs($leftopt, $rightopt); + } + } else { + print_optionpages_row_nojs($leftopt, $rightopt); + } + } + } + + /** + * This function prints out an option page row: in which the left + * Left: options for functionality that do not require javascript + * Right: options for functionality that do not require javascript + */ + function print_optionpages_row_nojs($leftopt, $rightopt = false) { + global $color; +?> +<table bgcolor="<?php echo $color[4] ?>" width="100%" cellpadding="0" cellspacing="5" border="0"> + <tr><td valign=top> <table width="100%" cellpadding="3" cellspacing="0" border="0"> <tr> - <td bgcolor="<?php echo $color[9] ?>"> - <a href="options_order.php"><?php echo _("Index Order"); ?></a> + <td valign="top" bgcolor="<?php echo $color[9] ?>" width="50%"> + <a href="<?php echo $leftopt['url'] ?>"><?php echo $leftopt['name'] ?></a> </td> + <td valign="top" bgcolor="<?php echo $color[4] ?>"> </td> +<?php if ($rightopt != false) { ?> + <td valign="top" bgcolor="<?php echo $color[9] ?>" width="50%"> + <a href="<?php echo $rightopt['url'] ?>"><?php echo $rightopt['name'] ?></a> + </td> +<?php } else { ?> + <td valign="top" bgcolor="<?php echo $color[4] ?>" width="50%"> </td> +<?php } ?> + </tr> + <tr> + <td valign="top" bgcolor="<?php echo $color[0] ?>"> + <?php echo $leftopt['desc'] ?> + </td> + <td valign="top" bgcolor="<?php echo $color[4] ?>"> </td> +<?php if ($rightopt != false) { ?> + <td valign="top" bgcolor="<?php echo $color[0] ?>"> + <?php echo $rightopt['desc'] ?> + </td> +<?php } else { ?> + <td valign="top" bgcolor="<?php echo $color[4] ?>"> </td> +<?php } ?> </tr> - <tr> - <td bgcolor="<?php echo $color[0] ?>"> - <?php echo _("The order of the message index can be rearanged and changed to contain the headers in any order you want.") ?> - </td> - </tr> - </table><br> - </td> - <td valign="top" width="50%"> + </table> + </td></tr> +</table> +<?php + } + + /** + * This function prints out an option page row: in which the left + * Left: options for functionality that does not require javascript + * Right: options for functionality that are javascript only + */ + function print_optionpages_row_partjs($leftopt, $rightopt = false) { + global $color; +?> +<table bgcolor="<?php echo $color[4] ?>" width="100%" cellpadding="0" cellspacing="5" border="0"> + <tr><td valign=top> <table width="100%" cellpadding="3" cellspacing="0" border="0"> <tr> - <td bgcolor="<?php echo $color[9] ?>"> - <a href="options_display.php"><?php echo _("Display Preferences"); ?></a> + <td valign="top" bgcolor="<?php echo $color[9] ?>" width="50%"> + <a href="<?php echo $leftopt['url'] ?>"><?php echo $leftopt['name'] ?></a> </td> + <td valign="top" bgcolor="<?php echo $color[4] ?>"> </td> +<?php if ($rightopt != false) { ?> + <td valign="top" bgcolor="<?php echo $color[9] ?>" width="50%"> + <a href="<?php echo $rightopt['url'] ?>"><?php echo $rightopt['name'] ?></a> + </td> +<?php } else { ?> + <td valign="top" bgcolor="<?php echo $color[4] ?>" width="50%"> </td> +<?php } ?> + </tr> + <tr> + <td valign="top" bgcolor="<?php echo $color[0] ?>"> + <?php echo $leftopt['desc'] ?> + </td> + <td valign="top" bgcolor="<?php echo $color[4] ?>"> </td> +<?php if ($rightopt != false) { ?> + <td valign="top" bgcolor="<?php echo $color[0] ?>"> + <?php echo $rightopt['desc'] ?> + </td> +<?php } else { ?> + <td valign="top" bgcolor="<?php echo $color[4] ?>"> </td> +<?php } ?> </tr> - <tr> - <td bgcolor="<?php echo $color[0] ?>"> - <?php echo _("You can change the way that SquirrelMail looks and displays information to you, such as the colors, the language, and other settings.") ?> - </td> - </tr> - </table><br> + </table> + </td></tr> +</table> +<?php + } + + /** + * This function prints out an option page row: in which the left + * Left: options for functionality that are javascript only + * Right: options for functionality that are javascript only + */ + function print_optionpages_row_fulljs($leftopt, $rightopt = false) { + global $color; +?> +<table bgcolor="<?php echo $color[4] ?>" width="100%" cellpadding="0" cellspacing="5" border="0"> + <tr><td valign=top> <table width="100%" cellpadding="3" cellspacing="0" border="0"> <tr> - <td bgcolor="<?php echo $color[9] ?>"> - <a href="options_folder.php"><?php echo _("Folder Preferences"); ?></a> - </td> - </tr> - <tr> - <td bgcolor="<?php echo $color[0] ?>"> - <?php echo _("These settings change the way your folders are displayed and manipulated.") ?> - </td> - </tr> - </table><br> + <td valign="top" bgcolor="<?php echo $color[9] ?>" width="50%"> + <a href="<?php echo $leftopt['url'] ?>"><?php echo $leftopt['name'] ?></a> </td> + <td valign="top" bgcolor="<?php echo $color[4] ?>"> </td> +<?php if ($rightopt != false) { ?> + <td valign="top" bgcolor="<?php echo $color[9] ?>" width="50%"> + <a href="<?php echo $rightopt['url'] ?>"><?php echo $rightopt['name'] ?></a> + </td> +<?php } else { ?> + <td valign="top" bgcolor="<?php echo $color[4] ?>" width="50%"> </td> +<?php } ?> + </tr> + <tr> + <td valign="top" bgcolor="<?php echo $color[0] ?>"> + <?php echo $leftopt['desc'] ?> + </td> + <td valign="top" bgcolor="<?php echo $color[4] ?>"> </td> +<?php if ($rightopt != false) { ?> + <td valign="top" bgcolor="<?php echo $color[0] ?>"> + <?php echo $rightopt['desc'] ?> + </td> +<?php } else { ?> + <td valign="top" bgcolor="<?php echo $color[4] ?>"> </td> +<?php } ?> </tr> </table> - - <?php do_hook('options_link_and_description'); ?> - - </td></tr> </table> - -</td></tr> -</table> +<?php + } -</body></html> +?> |