Source for file display.php

Documentation is available at display.php

  1. <?php
  2.  
  3. /**
  4.  * options_display.php
  5.  *
  6.  * Displays all optinos about display preferences
  7.  *
  8.  * @copyright &copy; 1999-2006 The SquirrelMail Project Team
  9.  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  10.  * @version $Id: display.php,v 1.4.2.25 2006/05/06 11:50:46 kink Exp $
  11.  * @package squirrelmail
  12.  */
  13.  
  14. /** Define the group constants for the display options page. */
  15. define('SMOPT_GRP_GENERAL'0);
  16. define('SMOPT_GRP_MAILBOX'1);
  17. define('SMOPT_GRP_MESSAGE'2);
  18.  
  19. /**
  20.  * This function builds an array with all the information about
  21.  * the options available to the user, and returns it. The options
  22.  * are grouped by the groups in which they are displayed.
  23.  * For each option, the following information is stored:
  24.  * - name: the internal (variable) name
  25.  * - caption: the description of the option in the UI
  26.  * - type: one of SMOPT_TYPE_*
  27.  * - refresh: one of SMOPT_REFRESH_*
  28.  * - size: one of SMOPT_SIZE_*
  29.  * - save: the name of a function to call when saving this option
  30.  * @return array all option information
  31.  */
  32.     global $theme$language$languages$js_autodetect_results,
  33.     $compose_new_win$default_use_mdn$squirrelmail_language$allow_thread_sort,
  34.     $optmode;
  35.  
  36.     /* Build a simple array into which we will build options. */
  37.     $optgrps array();
  38.     $optvals array();
  39.  
  40.     /******************************************************/
  41.     /* LOAD EACH GROUP OF OPTIONS INTO THE OPTIONS ARRAY. */
  42.     /******************************************************/
  43.  
  44.     /*** Load the General Options into the array ***/
  45.     $optgrps[SMOPT_GRP_GENERAL_("General Display Options");
  46.     $optvals[SMOPT_GRP_GENERALarray();
  47.  
  48.     /* Load the theme option. */
  49.     $theme_values array();
  50.     foreach ($theme as $theme_key => $theme_attributes{
  51.         $theme_values[$theme_attributes['NAME']] $theme_attributes['PATH'];
  52.     }
  53.     ksort($theme_values);
  54.     $theme_values array_flip($theme_values);
  55.     $optvals[SMOPT_GRP_GENERAL][array(
  56.         'name'    => 'chosen_theme',
  57.         'caption' => _("Theme"),
  58.         'type'    => SMOPT_TYPE_STRLIST,
  59.         'refresh' => SMOPT_REFRESH_ALL,
  60.         'posvals' => $theme_values,
  61.         'save'    => 'save_option_theme'
  62.     );
  63.  
  64.     $css_values array'none' => _("Default" ) );
  65.     $css_dir SM_PATH 'themes/css';
  66.     if (is_readable($css_dir&& is_dir($css_dir)) {
  67.         $handle=opendir($css_dir);
  68.         while ($file readdir($handle) ) {
  69.             if substr$file-== '.css' {
  70.                 $css_values[$filesubstr$file0strlen$file );
  71.             }
  72.         }
  73.         closedir($handle);
  74.     }
  75.  
  76.     if count$css_values {
  77.  
  78.         $optvals[SMOPT_GRP_GENERAL][array(
  79.             'name'    => 'custom_css',
  80.             'caption' => _("Custom Stylesheet"),
  81.             'type'    => SMOPT_TYPE_STRLIST,
  82.             'refresh' => SMOPT_REFRESH_ALL,
  83.             'posvals' => $css_values
  84.         );
  85.  
  86.     }
  87.  
  88.     $language_values array();
  89.     foreach ($languages as $lang_key => $lang_attributes{
  90.         if (isset($lang_attributes['NAME'])) {
  91.             $language_values[$lang_key$lang_attributes['NAME'];
  92.         }
  93.     }
  94.  
  95.     asort($language_values);
  96.     $language_values =
  97.         array_merge(array('' => _("Default"))$language_values);
  98.     $language $squirrelmail_language;
  99.     $optvals[SMOPT_GRP_GENERAL][array(
  100.         'name'    => 'language',
  101.         'caption' => _("Language"),
  102.         'type'    => SMOPT_TYPE_STRLIST,
  103.         'refresh' => SMOPT_REFRESH_ALL,
  104.         'posvals' => $language_values,
  105.         'htmlencoded' => true
  106.     );
  107.  
  108.     /* Set values for the "use javascript" option. */
  109.     $optvals[SMOPT_GRP_GENERAL][array(
  110.         'name'    => 'javascript_setting',
  111.         'caption' => _("Use Javascript"),
  112.         'type'    => SMOPT_TYPE_STRLIST,
  113.         'refresh' => SMOPT_REFRESH_ALL,
  114.         'posvals' => array(SMPREF_JS_AUTODETECT => _("Autodetect"),
  115.                            SMPREF_JS_ON         => _("Always"),
  116.                            SMPREF_JS_OFF        => _("Never"))
  117.     );
  118.  
  119.     if ($optmode != 'submit')
  120.        $onLoadScript 'document.forms[0].new_js_autodetect_results.value = \'' SMPREF_JS_ON '\'';
  121.     else
  122.        $onLoadScript '';
  123.  
  124.     $optvals[SMOPT_GRP_GENERAL][array(
  125.         'name'    => 'js_autodetect_results',
  126.         'caption' => '',
  127.         'type'    => SMOPT_TYPE_HIDDEN,
  128.         'refresh' => SMOPT_REFRESH_NONE,
  129.         //'post_script' => $js_autodetect_script,
  130.         'save'    => 'save_option_javascript_autodetect'
  131.     );
  132.  
  133.     /*** Load the General Options into the array ***/
  134.     $optgrps[SMOPT_GRP_MAILBOX_("Mailbox Display Options");
  135.     $optvals[SMOPT_GRP_MAILBOXarray();
  136.  
  137.     $optvals[SMOPT_GRP_MAILBOX][array(
  138.         'name'    => 'show_num',
  139.         'caption' => _("Number of Messages per Page"),
  140.         'type'    => SMOPT_TYPE_INTEGER,
  141.         'refresh' => SMOPT_REFRESH_NONE,
  142.         'size'    => SMOPT_SIZE_TINY
  143.     );
  144.  
  145.     $optvals[SMOPT_GRP_MAILBOX][array(
  146.         'name'    => 'alt_index_colors',
  147.         'caption' => _("Enable Alternating Row Colors"),
  148.         'type'    => SMOPT_TYPE_BOOLEAN,
  149.         'refresh' => SMOPT_REFRESH_NONE
  150.     );
  151.  
  152.     $optvals[SMOPT_GRP_MAILBOX][array(
  153.         'name'    => 'page_selector',
  154.         'caption' => _("Enable Page Selector"),
  155.         'type'    => SMOPT_TYPE_BOOLEAN,
  156.         'refresh' => SMOPT_REFRESH_NONE
  157.     );
  158.  
  159.     $optvals[SMOPT_GRP_MAILBOX][array(
  160.         'name'    => 'page_selector_max',
  161.         'caption' => _("Maximum Number of Pages to Show"),
  162.         'type'    => SMOPT_TYPE_INTEGER,
  163.         'refresh' => SMOPT_REFRESH_NONE,
  164.         'size'    => SMOPT_SIZE_TINY
  165.     );
  166.  
  167.     $optvals[SMOPT_GRP_MAILBOX][array(
  168.         'name'    => 'show_full_date',
  169.         'caption' => _("Always Show Full Date"),
  170.         'type'    => SMOPT_TYPE_BOOLEAN,
  171.         'refresh' => SMOPT_REFRESH_NONE
  172.     );
  173.  
  174.     $optvals[SMOPT_GRP_MAILBOX][array(
  175.         'name'    => 'truncate_sender',
  176.         'caption' => _("Length of From/To Field (0 for full)"),
  177.         'type'    => SMOPT_TYPE_INTEGER,
  178.         'refresh' => SMOPT_REFRESH_NONE,
  179.         'size'    => SMOPT_SIZE_TINY,
  180.         'initial_value' => 55
  181.     );
  182.  
  183.     $optvals[SMOPT_GRP_MAILBOX][array(
  184.         'name'    => 'truncate_subject',
  185.         'caption' => _("Length of Subject Field (0 for full)"),
  186.         'type'    => SMOPT_TYPE_INTEGER,
  187.         'refresh' => SMOPT_REFRESH_NONE,
  188.         'size'    => SMOPT_SIZE_TINY,
  189.         'initial_value' => 55
  190.     );
  191.  
  192.     /*** Load the General Options into the array ***/
  193.     $optgrps[SMOPT_GRP_MESSAGE_("Message Display and Composition");
  194.     $optvals[SMOPT_GRP_MESSAGEarray();
  195.  
  196.     $optvals[SMOPT_GRP_MESSAGE][array(
  197.         'name'    => 'wrap_at',
  198.         'caption' => _("Wrap Incoming Text At"),
  199.         'type'    => SMOPT_TYPE_INTEGER,
  200.         'refresh' => SMOPT_REFRESH_NONE,
  201.         'size'    => SMOPT_SIZE_TINY
  202.     );
  203.  
  204.     $optvals[SMOPT_GRP_MESSAGE][array(
  205.         'name'    => 'editor_size',
  206.         'caption' => _("Width of Editor Window"),
  207.         'type'    => SMOPT_TYPE_INTEGER,
  208.         'refresh' => SMOPT_REFRESH_NONE,
  209.         'size'    => SMOPT_SIZE_TINY
  210.     );
  211.  
  212.     $optvals[SMOPT_GRP_MESSAGE][array(
  213.         'name'    => 'editor_height',
  214.         'caption' => _("Height of Editor Window"),
  215.         'type'    => SMOPT_TYPE_INTEGER,
  216.         'refresh' => SMOPT_REFRESH_NONE,
  217.         'size'    => SMOPT_SIZE_TINY
  218.     );
  219.  
  220.     $optvals[SMOPT_GRP_MESSAGE][array(
  221.         'name'    => 'location_of_buttons',
  222.         'caption' => _("Location of Buttons when Composing"),
  223.         'type'    => SMOPT_TYPE_STRLIST,
  224.         'refresh' => SMOPT_REFRESH_NONE,
  225.         'posvals' => array(SMPREF_LOC_TOP     => _("Before headers"),
  226.                            SMPREF_LOC_BETWEEN => _("Between headers and message body"),
  227.                            SMPREF_LOC_BOTTOM  => _("After message body"))
  228.     );
  229.  
  230.  
  231.     $optvals[SMOPT_GRP_MESSAGE][array(
  232.         'name'    => 'use_javascript_addr_book',
  233.         'caption' => _("Addressbook Display Format"),
  234.         'type'    => SMOPT_TYPE_STRLIST,
  235.         'refresh' => SMOPT_REFRESH_NONE,
  236.         'posvals' => array('1' => _("Javascript"),
  237.                            '0' => _("HTML"))
  238.     );
  239.  
  240.     $optvals[SMOPT_GRP_MESSAGE][array(
  241.         'name'    => 'show_html_default',
  242.         'caption' => _("Show HTML Version by Default"),
  243.         'type'    => SMOPT_TYPE_BOOLEAN,
  244.         'refresh' => SMOPT_REFRESH_NONE
  245.     );
  246.  
  247.     $optvals[SMOPT_GRP_MESSAGE][array(
  248.         'name'    => 'enable_forward_as_attachment',
  249.         'caption' => _("Enable Forward as Attachment"),
  250.         'type'    => SMOPT_TYPE_BOOLEAN,
  251.         'refresh' => SMOPT_REFRESH_NONE
  252.     );
  253.  
  254.     $optvals[SMOPT_GRP_MESSAGE][array(
  255.         'name'    => 'forward_cc',
  256.         'caption' => _("Include CCs when Forwarding Messages"),
  257.         'type'    => SMOPT_TYPE_BOOLEAN,
  258.         'refresh' => SMOPT_REFRESH_NONE
  259.     );
  260.  
  261.     $optvals[SMOPT_GRP_MESSAGE][array(
  262.         'name'    => 'include_self_reply_all',
  263.         'caption' => _("Include Me in CC when I Reply All"),
  264.         'type'    => SMOPT_TYPE_BOOLEAN,
  265.         'refresh' => SMOPT_REFRESH_NONE
  266.     );
  267.  
  268.     $optvals[SMOPT_GRP_MESSAGE][array(
  269.         'name'    => 'show_xmailer_default',
  270.         'caption' => _("Enable Mailer Display"),
  271.         'type'    => SMOPT_TYPE_BOOLEAN,
  272.         'refresh' => SMOPT_REFRESH_NONE
  273.     );
  274.  
  275.     $optvals[SMOPT_GRP_MESSAGE][array(
  276.         'name'    => 'attachment_common_show_images',
  277.         'caption' => _("Display Attached Images with Message"),
  278.         'type'    => SMOPT_TYPE_BOOLEAN,
  279.         'refresh' => SMOPT_REFRESH_NONE
  280.     );
  281.  
  282.     $optvals[SMOPT_GRP_MESSAGE][array(
  283.         'name'    => 'pf_cleandisplay',
  284.         'caption' => _("Enable Printer Friendly Clean Display"),
  285.         'type'    => SMOPT_TYPE_BOOLEAN,
  286.         'refresh' => SMOPT_REFRESH_NONE
  287.     );
  288.  
  289.     if ($default_use_mdn{
  290.         $optvals[SMOPT_GRP_MESSAGE][array(
  291.             'name'    => 'mdn_user_support',
  292.             'caption' => _("Enable Mail Delivery Notification"),
  293.             'type'    => SMOPT_TYPE_BOOLEAN,
  294.             'refresh' => SMOPT_REFRESH_NONE
  295.         );
  296.     }
  297.  
  298.     $optvals[SMOPT_GRP_MESSAGE][array(
  299.         'name'    => 'compose_new_win',
  300.         'caption' => _("Compose Messages in New Window"),
  301.         'type'    => SMOPT_TYPE_BOOLEAN,
  302.         'refresh' => SMOPT_REFRESH_ALL
  303.     );
  304.  
  305.     $optvals[SMOPT_GRP_MESSAGE][array(
  306.         'name'    => 'compose_width',
  307.         'caption' => _("Width of Compose Window"),
  308.         'type'    => SMOPT_TYPE_INTEGER,
  309.         'refresh' => SMOPT_REFRESH_ALL,
  310.         'size'    => SMOPT_SIZE_TINY
  311.     );
  312.  
  313.     $optvals[SMOPT_GRP_MESSAGE][array(
  314.         'name'    => 'compose_height',
  315.         'caption' => _("Height of Compose Window"),
  316.         'type'    => SMOPT_TYPE_INTEGER,
  317.         'refresh' => SMOPT_REFRESH_ALL,
  318.         'size'    => SMOPT_SIZE_TINY
  319.     );
  320.  
  321.     $optvals[SMOPT_GRP_MESSAGE][array(
  322.         'name'    => 'sig_first',
  323.         'caption' => _("Prepend Signature before Reply/Forward Text"),
  324.         'type'    => SMOPT_TYPE_BOOLEAN,
  325.         'refresh' => SMOPT_REFRESH_NONE
  326.     );
  327.  
  328.     $optvals[SMOPT_GRP_MESSAGE][array(
  329.         'name'    => 'body_quote',
  330.         'caption' => _("Prefix for Original Message when Replying"),
  331.         'type'    => SMOPT_TYPE_STRING,
  332.         'refresh' => SMOPT_REFRESH_NONE,
  333.         'size'    => SMOPT_SIZE_TINY,
  334.         'save'    => 'save_option_reply_prefix'
  335.     );
  336.  
  337.     $optvals[SMOPT_GRP_MESSAGE][array(
  338.         'name'    => 'reply_focus',
  339.         'caption' => _("Cursor Position when Replying"),
  340.         'type'    => SMOPT_TYPE_STRLIST,
  341.         'refresh' => SMOPT_REFRESH_NONE,
  342.         'posvals' => array('' => _("To: field"),
  343.                            'focus' => _("Focus in body"),
  344.                            'select' => _("Select body"),
  345.                            'none' => _("No focus"))
  346.     );
  347.  
  348.     $optvals[SMOPT_GRP_MESSAGE][array(
  349.         'name'          => 'internal_date_sort',
  350.         'caption'       => _("Sort by Received Date"),
  351.         'type'          => SMOPT_TYPE_BOOLEAN,
  352.         'refresh'       => SMOPT_REFRESH_ALL,
  353.         'initial_value' => SMPREF_ON
  354.     );
  355.     if ($allow_thread_sort == TRUE{
  356.         $optvals[SMOPT_GRP_MESSAGE][array(
  357.             'name'    => 'sort_by_ref',
  358.             'caption' => _("Enable Thread Sort by References Header"),
  359.             'type'    => SMOPT_TYPE_BOOLEAN,
  360.             'refresh' => SMOPT_REFRESH_ALL
  361.         );
  362.     }
  363.     /* Assemble all this together and return it as our result. */
  364.     $result array(
  365.         'grps' => $optgrps,
  366.         'vals' => $optvals,
  367.         'xtra' => $onLoadScript
  368.     );
  369.     return ($result);
  370. }
  371.  
  372. /******************************************************************/
  373. /** Define any specialized save functions for this option page. ***/
  374. /******************************************************************/
  375.  
  376. /**
  377.  * This function saves a new theme setting.
  378.  * It updates the theme array.
  379.  */
  380. function save_option_theme($option{
  381.     global $theme;
  382.  
  383.     /* Do checking to make sure $new_theme is in the array. */
  384.     $theme_in_array false;
  385.     for ($i 0$i count($theme)++$i{
  386.         if ($theme[$i]['PATH'== $option->new_value{
  387.             $theme_in_array true;
  388.             break;
  389.         }
  390.     }
  391.  
  392.     if (!$theme_in_array{
  393.         $option->new_value '';
  394.     }
  395.  
  396.     /* Save the option like normal. */
  397.     save_option($option);
  398. }
  399.  
  400. /**
  401.  * This function saves the javascript detection option.
  402.  */
  403. function save_option_javascript_autodetect($option{
  404.     global $data_dir$username;
  405.  
  406.     sqGetGlobalVar('new_javascript_setting'$new_javascript_setting);
  407.  
  408.     // Set javascript either on or off.
  409.     if ($new_javascript_setting == SMPREF_JS_AUTODETECT{
  410.         if ($option->new_value == SMPREF_JS_ON{
  411.             setPref($data_dir$username'javascript_on'SMPREF_JS_ON);
  412.         else {
  413.             setPref($data_dir$username'javascript_on'SMPREF_JS_OFF);
  414.         }
  415.     else {
  416.         setPref($data_dir$username'javascript_on'$new_javascript_setting);
  417.     }
  418. }
  419.  
  420. function save_option_reply_prefix($option{
  421.     global $data_dir$username$new_javascript_setting;
  422.  
  423.     // save as "NONE" if it was blanked out
  424.     //
  425.     if (empty($option->new_value)) $option->new_value 'NONE';
  426.  
  427.  
  428.     // Save the option like normal.
  429.     //
  430.     save_option($option);
  431.  
  432. }
  433.  
  434. ?>

Documentation generated on Sat, 07 Oct 2006 16:30:59 +0300 by phpDocumentor 1.3.0RC6