X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Foptions.php;h=f70fbf66f252407031ad2425df289cb7f7dac337;hb=3b84e1b10d0800d858a68283bce298d15677ce58;hp=c72aea4828cfea8611b022be6363f0cb7bcfa53f;hpb=4986e4400fdd5c1641f930f34922b2191f554c38;p=squirrelmail.git diff --git a/functions/options.php b/functions/options.php index c72aea48..f70fbf66 100644 --- a/functions/options.php +++ b/functions/options.php @@ -8,7 +8,7 @@ * * Functions needed to display the options pages. * - * $Id$ + * @version $Id$ * @package squirrelmail */ @@ -62,6 +62,7 @@ class SquirrelOption { var $type; var $refresh_level; var $size; + var $trailing_text; var $comment; var $script; var $post_script; @@ -83,6 +84,7 @@ class SquirrelOption { $this->refresh_level = $refresh_level; $this->possible_values = $possible_values; $this->size = SMOPT_SIZE_MEDIUM; + $this->trailing_text = ''; $this->comment = ''; $this->script = ''; $this->post_script = ''; @@ -97,7 +99,7 @@ class SquirrelOption { } /* Check for a new value. */ - if ( !sqgetGlobalVar("new_$name", $this->new_value, SQ_POST ) ) { + if ( !sqgetGlobalVar("new_$name", $this->new_value, SQ_POST ) ) { $this->new_value = ''; } @@ -124,6 +126,11 @@ class SquirrelOption { $this->size = $size; } + /* Set the trailing_text for this option. */ + function setTrailingText($trailing_text) { + $this->trailing_text = $trailing_text; + } + /* Set the comment for this option. */ function setComment($comment) { $this->comment = $comment; @@ -147,6 +154,12 @@ class SquirrelOption { function createHTMLWidget() { global $javascript_on; + // Use new value if available + if (!empty($this->new_value)) { + $tempValue = $this->value; + $this->value = $this->new_value; + } + /* Get the widget for this option type. */ switch ($this->type) { case SMOPT_TYPE_STRING: @@ -184,7 +197,12 @@ class SquirrelOption { /* Add the "post script" for this option. */ $result .= $this->post_script; - + + // put correct value back if need be + if (!empty($this->new_value)) { + $this->value = $tempValue; + } + /* Now, return the created widget. */ return ($result); } @@ -208,33 +226,36 @@ class SquirrelOption { $width = 25; } - $result = "name\" value=\"$this->value\" size=\"$width\" $this->script>"; + $result = "name\" value=\"" . + htmlspecialchars($this->value) . + "\" size=\"$width\" $this->script />$this->trailing_text\n"; return ($result); } function createWidget_StrList() { /* Begin the select tag. */ - $result = "name\" $this->script>\n"; /* Add each possible value to the select list. */ foreach ($this->possible_values as $real_value => $disp_value) { /* Start the next new option string. */ - $new_option = ""; + $new_option .= '>' . htmlspecialchars($disp_value) . "\n"; /* And add the new option string to our select tag. */ $result .= $new_option; } /* Close the select tag and return our happy result. */ - $result .= ''; + $result .= "$this->trailing_text\n"; return ($result); } @@ -242,30 +263,30 @@ class SquirrelOption { $selected = array(strtolower($this->value)); /* Begin the select tag. */ - $result = "name\" $this->script>\n"; /* Add each possible value to the select list. */ foreach ($this->possible_values as $real_value => $disp_value) { - if ( is_array($disp_value) ) { + if ( is_array($disp_value) ) { /* For folder list, we passed in the array of boxes.. */ $new_option = sqimap_mailbox_option_list(0, $selected, 0, $disp_value); } else { /* Start the next new option string. */ - $new_option = ""; + $new_option .= '>' . htmlspecialchars($disp_value) . "\n"; } /* And add the new option string to our select tag. */ $result .= $new_option; - } + } /* Close the select tag and return our happy result. */ - $result .= ''; + $result .= "\n"; return ($result); } @@ -280,7 +301,8 @@ class SquirrelOption { default: $rows = 5; $cols = 50; } $result = ""; + . "cols=\"$cols\" $this->script>" + . htmlspecialchars($this->value) . "\n"; return ($result); } @@ -291,25 +313,25 @@ class SquirrelOption { // add onChange javascript handler to a regular string widget // which will strip out all non-numeric chars if ($javascript_on) - return preg_replace('/>/', ' onChange="origVal=this.value; newVal=\'\'; ' + return preg_replace('/\/>/', ' onChange="origVal=this.value; newVal=\'\'; ' . 'for (i=0;i=\'0\' ' . '&& origVal.charAt(i)<=\'9\') newVal += origVal.charAt(i); } ' - . 'this.value=newVal;">', $this->createWidget_String()); + . 'this.value=newVal;" />', $this->createWidget_String()); else return $this->createWidget_String(); } function createWidget_Float() { - + global $javascript_on; // add onChange javascript handler to a regular string widget - // which will strip out all non-numeric (period also OK) chars + // which will strip out all non-numeric (period also OK) chars if ($javascript_on) - return preg_replace('/>/', ' onChange="origVal=this.value; newVal=\'\'; ' + return preg_replace('/\/>/', ' onChange="origVal=this.value; newVal=\'\'; ' . 'for (i=0;i=\'0\' ' . '&& origVal.charAt(i)<=\'9\') || origVal.charAt(i)==\'.\') ' - . 'newVal += origVal.charAt(i); } this.value=newVal;">' + . 'newVal += origVal.charAt(i); } this.value=newVal;" />' , $this->createWidget_String()); else return $this->createWidget_String(); @@ -318,22 +340,24 @@ class SquirrelOption { function createWidget_Boolean() { /* Do the whole current value thing. */ if ($this->value != SMPREF_NO) { - $yes_chk = ' checked'; + $yes_chk = ' checked="checked"'; $no_chk = ''; } else { $yes_chk = ''; - $no_chk = ' checked'; + $no_chk = ' checked="checked"'; } /* Build the yes choice. */ - $yes_option = 'script> " - . _("Yes"); + $yes_option = 'script . ' /> ' + . ''; /* Build the no choice. */ - $no_option = 'script> " - . _("No"); + $no_option = 'script . ' /> ' + . ''; /* Build and return the combined "boolean widget". */ $result = "$yes_option    $no_option"; @@ -342,7 +366,8 @@ class SquirrelOption { function createWidget_Hidden() { $result = 'script . '>'; + . '" value="' . htmlspecialchars($this->value) + . '" ' . $this->script . ' />'; return ($result); } @@ -385,7 +410,7 @@ function create_optmode_element($optmode) { function create_hidden_element($name, $value) { $result = ''; + . 'value="' . htmlspecialchars($value) . '" />'; return ($result); } @@ -429,6 +454,11 @@ function create_option_groups($optgrps, $optvals) { $next_option->setSize($optset['size']); } + /* If provided, set the trailing_text for this option. */ + if (isset($optset['trailing_text'])) { + $next_option->setTrailingText($optset['trailing_text']); + } + /* If provided, set the comment for this option. */ if (isset($optset['comment'])) { $next_option->setComment($optset['comment']); @@ -491,8 +521,9 @@ function print_option_groups($option_groups) { function OptionSubmit( $name ) { echo html_tag( 'tr', - html_tag( 'td', '    ', 'right', '', 'colspan="2"' ) + html_tag( 'td', '    ', 'right', '', 'colspan="2"' ) ) . "\n"; } -?> +// vim: et ts=4 +?> \ No newline at end of file