Source for file display.php
Documentation is available at display.php
* Displays all optinos about display preferences
* @copyright © 1999-2006 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id: display.php,v 1.73 2006/10/03 15:30:52 stevetruckstuff Exp $
/** Define the group constants for the display options page. */
define('SMOPT_GRP_GENERAL', 0);
define('SMOPT_GRP_MAILBOX', 1);
define('SMOPT_GRP_MESSAGE', 2);
if (! isset
($use_iframe)) $use_iframe=
false;
* This function builds an array with all the information about
* the options available to the user, and returns it. The options
* are grouped by the groups in which they are displayed.
* For each option, the following information is stored:
* - name: the internal (variable) name
* - caption: the description of the option in the UI
* - type: one of SMOPT_TYPE_*
* - refresh: one of SMOPT_REFRESH_*
* - size: one of SMOPT_SIZE_*
* - save: the name of a function to call when saving this option
* @return array all option information
$sTemplateID, $oTemplate,
/* Build a simple array into which we will build options. */
/******************************************************/
/* LOAD EACH GROUP OF OPTIONS INTO THE OPTIONS ARRAY. */
/******************************************************/
/*** Load the General Options into the array ***/
/* load the template set option */
$templateset_values =
array();
foreach ($aTemplateSet as $sKey =>
$aTemplateSetAttributes) {
$templateset_values[$aTemplateSetAttributes['NAME']] =
$aTemplateSetAttributes['ID'];
ksort($templateset_values);
$templateset_values =
array_flip($templateset_values);
// display template options only when there is more than one template
if (count($templateset_values)>
1) {
'posvals' =>
$templateset_values,
'save' =>
'save_option_template'
/* Load the theme option. */
* User themes start with a 'u_', template themes start with a 't_' to
* differentiate which is which. This seems kind of hackish, but we can
* come up with a better solution later.
PL: No need for the prefixes. Just use full paths, no?
SB: Don't think so. If the user chooses a template theme than changes the
path to the template, it would error out, right? Or should we worry about
// Always provide the template default first.
$theme_values['none'] =
'Template Default Theme';
// List alternate themes provided by templates first
$template_themes =
$oTemplate->get_alternative_stylesheets();
foreach ($template_themes as $sheet=>
$name) {
// Next, list user-provided styles
foreach ($user_themes as $style) {
if ($style['PATH'] ==
'none')
$theme_values['u_'.
$style['PATH']] =
'User Theme - '.
htmlspecialchars($style['NAME']);
if (count($user_themes) +
count($template_themes) >
1) {
'name' =>
'chosen_theme',
'posvals' =>
$theme_values,
'save' =>
'css_theme_save'
/* Icon theme selection */
global $icon_themes, $icon_theme;
for ($count =
0; $count <
sizeof($icon_themes); $count++
) {
$temp[$icon_themes[$count]['PATH']] =
$icon_themes[$count]['NAME'];
if (sizeof($icon_themes) >
0) {
'caption' =>
_("Icon Theme"),
'save' =>
'icon_theme_save'
$fontset_values =
array();
if (!empty($fontsets) &&
is_array($fontsets)) {
$fontset_list[$fontset_key]=
$fontset_key;
if (count($fontset_list) >
1) {
$fontset_list =
array_merge(array('' =>
_("Default font style")), $fontset_list);
'name' =>
'chosen_fontset',
'caption' =>
_("Font style"),
'posvals' =>
$fontset_list
'name' =>
'chosen_fontsize',
'caption' =>
_("Font size"),
'posvals' =>
array('' =>
_("Default font size"),
$language_values =
array();
foreach ($languages as $lang_key =>
$lang_attributes) {
if (isset
($lang_attributes['NAME'])) {
$language_values[$lang_key] =
$lang_attributes['NAME'];
if ( isset
($show_alternative_names) &&
$show_alternative_names &&
isset
($lang_attributes['ALTNAME']) ) {
$language_values[$lang_key] .=
" / " .
$lang_attributes['ALTNAME'];
$language =
$squirrelmail_language;
// add language selection only when more than 2 languages are available
// (default, English and some other)
if (count($language_values)>
2) {
'caption' =>
_("Language"),
'posvals' =>
$language_values,
/* Set values for the "use javascript" option. */
'name' =>
'javascript_setting',
'caption' =>
_("Use Javascript"),
'save' =>
'save_option_javascript_autodetect',
'script' =>
'onclick="document.forms[0].new_js_autodetect_results.value = \'' .
SMPREF_JS_ON .
'\';"'
'name' =>
'js_autodetect_results',
//'post_script' => $js_autodetect_script,
'caption' =>
_("Hour Format"),
/*** Load the General Options into the array ***/
'caption' =>
_("Number of Messages per Page"),
'name' =>
'alt_index_colors',
'caption' =>
_("Enable Alternating Row Colors"),
'name' =>
'fancy_index_highlite',
'caption' =>
_("Enable Fancy Row Mouseover Highlighting"),
'name' =>
'show_flag_buttons',
'caption' =>
_("Show Flag / Unflag Buttons"),
'name' =>
'show_copy_buttons',
'caption' =>
_("Enable Message Copy Buttons"),
'name' =>
'page_selector',
'caption' =>
_("Enable Page Selector"),
'name' =>
'compact_paginator',
'caption' =>
_("Use Compact Page Selector"),
'name' =>
'page_selector_max',
'caption' =>
_("Maximum Number of Pages to Show"),
'name' =>
'show_full_date',
'caption' =>
_("Always Show Full Date"),
'name' =>
'truncate_sender',
'caption' =>
_("Length of From/To Field (0 for full)"),
'name' =>
'truncate_subject',
'caption' =>
_("Length of Subject Field (0 for full)"),
disabled because the template doesn't support it (yet?)
$optvals[SMOPT_GRP_MAILBOX][] = array(
'name' => 'show_recipient_instead',
'caption' => _("Show recipient name if the message is from your default identity"),
'type' => SMOPT_TYPE_BOOLEAN,
'refresh' => SMOPT_REFRESH_NONE,
'size' => SMOPT_SIZE_TINY
if ($allow_thread_sort ==
TRUE) {
'caption' =>
_("Enable Thread Sort by References Header"),
/*** Load the General Options into the array ***/
'caption' =>
_("Wrap Incoming Text At"),
'name' =>
'show_html_default',
'caption' =>
_("Show HTML Version by Default"),
// Type is set to string in order to be able to use 100%.
'name' =>
'iframe_height',
'caption' =>
_("Height of inline frame"),
'name' =>
'enable_forward_as_attachment',
'caption' =>
_("Enable Forward as Attachment"),
'name' =>
'show_xmailer_default',
'caption' =>
_("Enable Mailer Display"),
'name' =>
'attachment_common_show_images',
'caption' =>
_("Display Attached Images with Message"),
'name' =>
'mdn_user_support',
'caption' =>
_("Enable Mail Delivery Notification"),
'name' =>
'delete_prev_next_display',
'caption' =>
_("Show 'Delete & Prev/Next' Links"),
/* Assemble all this together and return it as our result. */
/******************************************************************/
/** Define any specialized save functions for this option page. ***/
/******************************************************************/
* This function saves a new template setting.
* It updates the template array.
/* Do checking to make sure new template is in the available templates array. */
$templateset_in_array =
false;
for ($i =
0; $i <
count($aTemplateSet); ++
$i) {
if ($aTemplateSet[$i]['ID'] ==
$option->new_value) {
$templateset_in_array =
true;
if (!$templateset_in_array) {
// clear template cache when changing template sets
// (in order to do so, we have to change the global
// template set ID now... should not be a problem --
// in fact, if we don't do it now, very anomalous
$sTemplateID =
$option->new_value;
/* Save the option like normal. */
* This function saves the javascript detection option.
* This function saves the user's icon theme setting
// Don't assume the new value is there, double check
// and only save if found
while (!$found &&
(list
($index, $data) =
each($icon_themes))) {
if ($data['PATH'] ==
$option->new_value)
$option->new_value =
'none';
// Don't assume the new value is there, double check
// and only save if found
while (!$found &&
(list
($index, $data) =
each($user_themes))) {
if ('u_'.
$data['PATH'] ==
$option->new_value)
$template_themes =
$oTemplate->get_alternative_stylesheets();
foreach ($template_themes as $path=>
$name) {
if ('t_'.
$path ==
$option->new_value)
$option->new_value =
'none';
Documentation generated on Sat, 07 Oct 2006 16:10:44 +0300 by phpDocumentor 1.3.0RC6