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 1999-2012 The SquirrelMail Project Team
  9.  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  10.  * @version $Id: display.php 14329 2012-07-01 19:10:00Z pdontthink $
  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.        // FIXME: our form is named "f" - why? let's use something better
  121.        $onLoadScript 'document.f.new_js_autodetect_results.value = \'' SMPREF_JS_ON '\'';
  122.     else
  123.        $onLoadScript '';
  124.  
  125.     $optvals[SMOPT_GRP_GENERAL][array(
  126.         'name'    => 'js_autodetect_results',
  127.         'caption' => '',
  128.         'type'    => SMOPT_TYPE_HIDDEN,
  129.         'refresh' => SMOPT_REFRESH_NONE,
  130.         //'post_script' => $js_autodetect_script,
  131.         'save'    => 'save_option_javascript_autodetect'
  132.     );
  133.  
  134.     /*** Load the General Options into the array ***/
  135.     $optgrps[SMOPT_GRP_MAILBOX_("Mailbox Display Options");
  136.     $optvals[SMOPT_GRP_MAILBOXarray();
  137.  
  138.     $optvals[SMOPT_GRP_MAILBOX][array(
  139.         'name'    => 'show_num',
  140.         'caption' => _("Number of Messages per Page"),
  141.         'type'    => SMOPT_TYPE_INTEGER,
  142.         'refresh' => SMOPT_REFRESH_NONE,
  143.         'size'    => SMOPT_SIZE_TINY
  144.     );
  145.  
  146.     $optvals[SMOPT_GRP_MAILBOX][array(
  147.         'name'    => 'alt_index_colors',
  148.         'caption' => _("Enable Alternating Row Colors"),
  149.         'type'    => SMOPT_TYPE_BOOLEAN,
  150.         'refresh' => SMOPT_REFRESH_NONE
  151.     );
  152.  
  153.     $optvals[SMOPT_GRP_MAILBOX][array(
  154.         'name'    => 'page_selector',
  155.         'caption' => _("Enable Page Selector"),
  156.         'type'    => SMOPT_TYPE_BOOLEAN,
  157.         'refresh' => SMOPT_REFRESH_NONE
  158.     );
  159.  
  160.     $optvals[SMOPT_GRP_MAILBOX][array(
  161.         'name'    => 'page_selector_max',
  162.         'caption' => _("Maximum Number of Pages to Show"),
  163.         'type'    => SMOPT_TYPE_INTEGER,
  164.         'refresh' => SMOPT_REFRESH_NONE,
  165.         'size'    => SMOPT_SIZE_TINY
  166.     );
  167.  
  168.     $optvals[SMOPT_GRP_MAILBOX][array(
  169.         'name'    => 'show_full_date',
  170.         'caption' => _("Always Show Full Date"),
  171.         'type'    => SMOPT_TYPE_BOOLEAN,
  172.         'refresh' => SMOPT_REFRESH_NONE
  173.     );
  174.  
  175.     $optvals[SMOPT_GRP_MAILBOX][array(
  176.         'name'    => 'truncate_sender',
  177.         'caption' => _("Length of From/To Field (0 for full)"),
  178.         'type'    => SMOPT_TYPE_INTEGER,
  179.         'refresh' => SMOPT_REFRESH_NONE,
  180.         'size'    => SMOPT_SIZE_TINY,
  181.         'initial_value' => 55
  182.     );
  183.  
  184.     $optvals[SMOPT_GRP_MAILBOX][array(
  185.         'name'    => 'truncate_subject',
  186.         'caption' => _("Length of Subject Field (0 for full)"),
  187.         'type'    => SMOPT_TYPE_INTEGER,
  188.         'refresh' => SMOPT_REFRESH_NONE,
  189.         'size'    => SMOPT_SIZE_TINY,
  190.         'initial_value' => 55
  191.     );
  192.  
  193.     /*** Load the General Options into the array ***/
  194.     $optgrps[SMOPT_GRP_MESSAGE_("Message Display and Composition");
  195.     $optvals[SMOPT_GRP_MESSAGEarray();
  196.  
  197.     $optvals[SMOPT_GRP_MESSAGE][array(
  198.         'name'    => 'wrap_at',
  199.         'caption' => _("Wrap Incoming Text At"),
  200.         'type'    => SMOPT_TYPE_INTEGER,
  201.         'refresh' => SMOPT_REFRESH_NONE,
  202.         'size'    => SMOPT_SIZE_TINY
  203.     );
  204.  
  205.     $optvals[SMOPT_GRP_MESSAGE][array(
  206.         'name'    => 'editor_size',
  207.         'caption' => _("Width of Editor Window"),
  208.         'type'    => SMOPT_TYPE_INTEGER,
  209.         'refresh' => SMOPT_REFRESH_NONE,
  210.         'size'    => SMOPT_SIZE_TINY
  211.     );
  212.  
  213.     $optvals[SMOPT_GRP_MESSAGE][array(
  214.         'name'    => 'editor_height',
  215.         'caption' => _("Height of Editor Window"),
  216.         'type'    => SMOPT_TYPE_INTEGER,
  217.         'refresh' => SMOPT_REFRESH_NONE,
  218.         'size'    => SMOPT_SIZE_TINY
  219.     );
  220.  
  221.     $optvals[SMOPT_GRP_MESSAGE][array(
  222.         'name'    => 'location_of_buttons',
  223.         'caption' => _("Location of Buttons when Composing"),
  224.         'type'    => SMOPT_TYPE_STRLIST,
  225.         'refresh' => SMOPT_REFRESH_NONE,
  226.         'posvals' => array(SMPREF_LOC_TOP     => _("Before headers"),
  227.                            SMPREF_LOC_BETWEEN => _("Between headers and message body"),
  228.                            SMPREF_LOC_BOTTOM  => _("After message body"))
  229.     );
  230.  
  231.  
  232.     $optvals[SMOPT_GRP_MESSAGE][array(
  233.         'name'    => 'use_javascript_addr_book',
  234.         'caption' => _("Address Book Display Format"),
  235.         'type'    => SMOPT_TYPE_STRLIST,
  236.         'refresh' => SMOPT_REFRESH_NONE,
  237.         'posvals' => array('1' => _("Javascript"),
  238.                            '0' => _("HTML"))
  239.     );
  240.  
  241.     $optvals[SMOPT_GRP_MESSAGE][array(
  242.         'name'    => 'addrsrch_fullname',
  243.         'caption' => _("Format of Addresses Added From Address Book"),
  244.         'type'    => SMOPT_TYPE_STRLIST,
  245.         'refresh' => SMOPT_REFRESH_NONE,
  246.         'posvals' => array('noprefix' => _("No prefix/Address only"),
  247.                            'nickname' => _("Nickname and address"),
  248.                            'fullname' => _("Full name and address"))
  249.     );
  250.  
  251.     $optvals[SMOPT_GRP_MESSAGE][array(
  252.         'name'    => 'show_html_default',
  253.         'caption' => _("Show HTML Version by Default"),
  254.         'type'    => SMOPT_TYPE_BOOLEAN,
  255.         'refresh' => SMOPT_REFRESH_NONE
  256.     );
  257.  
  258.     $optvals[SMOPT_GRP_MESSAGE][array(
  259.         'name'    => 'enable_forward_as_attachment',
  260.         'caption' => _("Enable Forward as Attachment"),
  261.         'type'    => SMOPT_TYPE_BOOLEAN,
  262.         'refresh' => SMOPT_REFRESH_NONE
  263.     );
  264.  
  265.     $optvals[SMOPT_GRP_MESSAGE][array(
  266.         'name'    => 'do_not_reply_to_self',
  267.         'caption' => _("Send Replies To My Own Messages To Previous Recipient"),
  268.         'type'    => SMOPT_TYPE_BOOLEAN,
  269.         'refresh' => SMOPT_REFRESH_NONE
  270.     );
  271.  
  272.     $optvals[SMOPT_GRP_MESSAGE][array(
  273.         'name'    => 'include_self_reply_all',
  274.         'caption' => _("Include Me in CC when I Reply All"),
  275.         'type'    => SMOPT_TYPE_BOOLEAN,
  276.         'refresh' => SMOPT_REFRESH_NONE
  277.     );
  278.  
  279.     $optvals[SMOPT_GRP_MESSAGE][array(
  280.         'name'    => 'show_xmailer_default',
  281.         'caption' => _("Enable Mailer Display"),
  282.         'type'    => SMOPT_TYPE_BOOLEAN,
  283.         'refresh' => SMOPT_REFRESH_NONE
  284.     );
  285.  
  286.     $optvals[SMOPT_GRP_MESSAGE][array(
  287.         'name'    => 'attachment_common_show_images',
  288.         'caption' => _("Display Attached Images with Message"),
  289.         'type'    => SMOPT_TYPE_BOOLEAN,
  290.         'refresh' => SMOPT_REFRESH_NONE
  291.     );
  292.  
  293.     $optvals[SMOPT_GRP_MESSAGE][array(
  294.         'name'    => 'pf_cleandisplay',
  295.         'caption' => _("Enable Printer Friendly Clean Display"),
  296.         'type'    => SMOPT_TYPE_BOOLEAN,
  297.         'refresh' => SMOPT_REFRESH_NONE
  298.     );
  299.  
  300.     if ($default_use_mdn{
  301.         $optvals[SMOPT_GRP_MESSAGE][array(
  302.             'name'    => 'mdn_user_support',
  303.             'caption' => _("Enable Mail Delivery Notification"),
  304.             'type'    => SMOPT_TYPE_BOOLEAN,
  305.             'refresh' => SMOPT_REFRESH_NONE
  306.         );
  307.     }
  308.  
  309.     $optvals[SMOPT_GRP_MESSAGE][array(
  310.         'name'    => 'compose_new_win',
  311.         'caption' => _("Compose Messages in New Window"),
  312.         'type'    => SMOPT_TYPE_BOOLEAN,
  313.         'refresh' => SMOPT_REFRESH_ALL
  314.     );
  315.  
  316.     $optvals[SMOPT_GRP_MESSAGE][array(
  317.         'name'    => 'compose_width',
  318.         'caption' => _("Width of Compose Window"),
  319.         'type'    => SMOPT_TYPE_INTEGER,
  320.         'refresh' => SMOPT_REFRESH_ALL,
  321.         'size'    => SMOPT_SIZE_TINY
  322.     );
  323.  
  324.     $optvals[SMOPT_GRP_MESSAGE][array(
  325.         'name'    => 'compose_height',
  326.         'caption' => _("Height of Compose Window"),
  327.         'type'    => SMOPT_TYPE_INTEGER,
  328.         'refresh' => SMOPT_REFRESH_ALL,
  329.         'size'    => SMOPT_SIZE_TINY
  330.     );
  331.  
  332.     $optvals[SMOPT_GRP_MESSAGE][array(
  333.         'name'    => 'sig_first',
  334.         'caption' => _("Prepend Signature before Reply/Forward Text"),
  335.         'type'    => SMOPT_TYPE_BOOLEAN,
  336.         'refresh' => SMOPT_REFRESH_NONE
  337.     );
  338.  
  339.     $optvals[SMOPT_GRP_MESSAGE][array(
  340.         'name'    => 'strip_sigs',
  341.         'caption' => _("Strip signature when replying"),
  342.         'type'    => SMOPT_TYPE_BOOLEAN,
  343.         'refresh' => SMOPT_REFRESH_NONE
  344.     );
  345.  
  346.     $optvals[SMOPT_GRP_MESSAGE][array(
  347.         'name'    => 'body_quote',
  348.         'caption' => _("Prefix for Original Message when Replying"),
  349.         'type'    => SMOPT_TYPE_STRING,
  350.         'refresh' => SMOPT_REFRESH_NONE,
  351.         'size'    => SMOPT_SIZE_TINY,
  352.         'save'    => 'save_option_reply_prefix'
  353.     );
  354.  
  355.     $optvals[SMOPT_GRP_MESSAGE][array(
  356.         'name'    => 'reply_focus',
  357.         'caption' => _("Cursor Position when Replying"),
  358.         'type'    => SMOPT_TYPE_STRLIST,
  359.         'refresh' => SMOPT_REFRESH_NONE,
  360.         'posvals' => array('' => _("To: field"),
  361.                            'focus' => _("Focus in body"),
  362.                            'select' => _("Select body"),
  363.                            'none' => _("No focus"))
  364.     );
  365.  
  366.     $optvals[SMOPT_GRP_MESSAGE][array(
  367.         'name'          => 'internal_date_sort',
  368.         'caption'       => _("Sort by Received Date"),
  369.         'type'          => SMOPT_TYPE_BOOLEAN,
  370.         'refresh'       => SMOPT_REFRESH_ALL,
  371.         'initial_value' => SMPREF_ON
  372.     );
  373.     if ($allow_thread_sort == TRUE{
  374.         $optvals[SMOPT_GRP_MESSAGE][array(
  375.             'name'    => 'sort_by_ref',
  376.             'caption' => _("Enable Thread Sort by References Header"),
  377.             'type'    => SMOPT_TYPE_BOOLEAN,
  378.             'refresh' => SMOPT_REFRESH_ALL
  379.         );
  380.     }
  381.     /* Assemble all this together and return it as our result. */
  382.     $result array(
  383.         'grps' => $optgrps,
  384.         'vals' => $optvals,
  385.         'xtra' => $onLoadScript
  386.     );
  387.     return ($result);
  388. }
  389.  
  390. /******************************************************************/
  391. /** Define any specialized save functions for this option page. ***/
  392. /******************************************************************/
  393.  
  394. /**
  395.  * This function saves a new theme setting.
  396.  * It updates the theme array.
  397.  */
  398. function save_option_theme($option{
  399.     global $theme;
  400.  
  401.     /* Do checking to make sure $new_theme is in the array. */
  402.     $theme_in_array false;
  403.     for ($i 0$i count($theme)++$i{
  404.         if ($theme[$i]['PATH'== $option->new_value{
  405.             $theme_in_array true;
  406.             break;
  407.         }
  408.     }
  409.  
  410.     if (!$theme_in_array{
  411.         $option->new_value '';
  412.     }
  413.  
  414.     /* Save the option like normal. */
  415.     save_option($option);
  416. }
  417.  
  418. /**
  419.  * This function saves the javascript detection option.
  420.  */
  421. function save_option_javascript_autodetect($option{
  422.     global $data_dir$username;
  423.  
  424.     sqGetGlobalVar('new_javascript_setting'$new_javascript_setting);
  425.  
  426.     // Set javascript either on or off.
  427.     if ($new_javascript_setting == SMPREF_JS_AUTODETECT{
  428.         if ($option->new_value == SMPREF_JS_ON{
  429.             setPref($data_dir$username'javascript_on'SMPREF_JS_ON);
  430.         else {
  431.             setPref($data_dir$username'javascript_on'SMPREF_JS_OFF);
  432.         }
  433.     else {
  434.         setPref($data_dir$username'javascript_on'$new_javascript_setting);
  435.     }
  436. }
  437.  
  438. function save_option_reply_prefix($option{
  439.     global $data_dir$username$new_javascript_setting;
  440.  
  441.     // save as "NONE" if it was blanked out
  442.     //
  443.     if (empty($option->new_value)) $option->new_value 'NONE';
  444.  
  445.  
  446.     // Save the option like normal.
  447.     //
  448.     save_option($option);
  449.  
  450. }

Documentation generated on Tue, 18 Jun 2013 04:21:23 +0200 by phpDocumentor 1.4.3