From b6a08d2dbd26a27ecc114fa5dd922f6de03e064d Mon Sep 17 00:00:00 2001 From: pdontthink Date: Wed, 11 Jun 2008 05:55:57 +0000 Subject: [PATCH] Let edit list users turn off the 'add widget'; add submit option type git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@13175 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- functions/options.php | 39 ++++++++++++++++++- templates/default/edit_list_widget.tpl | 26 +++++++------ .../default/edit_list_widget_list_style.tpl | 30 +++++++------- 3 files changed, 70 insertions(+), 25 deletions(-) diff --git a/functions/options.php b/functions/options.php index e05c408e..d7d8b625 100644 --- a/functions/options.php +++ b/functions/options.php @@ -32,6 +32,7 @@ define('SMOPT_TYPE_STRLIST_MULTI', 11); define('SMOPT_TYPE_BOOLEAN_CHECKBOX', 12); define('SMOPT_TYPE_BOOLEAN_RADIO', 13); define('SMOPT_TYPE_STRLIST_RADIO', 14); +define('SMOPT_TYPE_SUBMIT', 15); /* Define constants for the layout scheme for edit lists. */ define('SMOPT_EDIT_LIST_LAYOUT_LIST', 0); @@ -125,6 +126,13 @@ class SquirrelOption { * @var int */ var $layout_type; + /** + * Indicates if the Add widget should be included + * with edit lists. + * + * @var boolean + */ + var $use_add_widget; /** * text displayed to the user * @@ -214,6 +222,7 @@ class SquirrelOption { $this->no_text = ''; $this->comment = ''; $this->layout_type = 0; + $this->use_add_widget = TRUE; $this->aExtraAttribs = array(); $this->post_script = ''; @@ -295,6 +304,11 @@ class SquirrelOption { $this->no_text = $no_text; } + /* Set the "use add widget" value for this option. */ + function setUseAddWidget($use_add_widget) { + $this->use_add_widget = $use_add_widget; + } + /** * Set the layout type for this option. * @param int $layout_type @@ -408,6 +422,9 @@ class SquirrelOption { case SMOPT_TYPE_STRLIST_RADIO: $result = $this->createWidget_StrList(FALSE, TRUE); break; + case SMOPT_TYPE_SUBMIT: + $result = $this->createWidget_Submit(); + break; default: error_box ( sprintf(_("Option Type '%s' Not Found"), $this->type) @@ -736,6 +753,8 @@ class SquirrelOption { //FIXME: $this->aExtraAttribs probably should only be used in one place $oTemplate->assign('input_widget', addInput('add_' . $this->name, '', 38, 0, $this->aExtraAttribs)); + $oTemplate->assign('use_input_widget', $this->use_add_widget); + $oTemplate->assign('trailing_text', $this->trailing_text); $oTemplate->assign('possible_values', $this->possible_values); $oTemplate->assign('select_widget', addSelect('new_' . $this->name, $this->possible_values, $this->value, FALSE, !checkForJavascript() ? $this->aExtraAttribs : array_merge(array('onchange' => 'if (typeof(window.addinput_' . $this->name . ') == \'undefined\') { var f = document.forms.length; var i = 0; var pos = -1; while( pos == -1 && i < f ) { var e = document.forms[i].elements.length; var j = 0; while( pos == -1 && j < e ) { if ( document.forms[i].elements[j].type == \'text\' && document.forms[i].elements[j].name == \'add_' . $this->name . '\' ) { pos = j; } j++; } i++; } if( pos >= 0 ) { window.addinput_' . $this->name . ' = document.forms[i-1].elements[pos]; } } for (x = 0; x < this.length; x++) { if (this.options[x].selected) { window.addinput_' . $this->name . '.value = this.options[x].value; break; } }'), $this->aExtraAttribs), TRUE, $height)); @@ -753,6 +772,18 @@ class SquirrelOption { } + /** + * Creates a submit button + * + * @return string html formated submit button widget + * + */ + function createWidget_Submit() { + + return addSubmit($this->comment, $this->name, $this->aExtraAttribs) . htmlspecialchars($this->trailing_text); + + } + /** * */ @@ -803,7 +834,8 @@ function save_option($option) { // add element if given // - if (sqGetGlobalVar('add_' . $option->name, $new_element, SQ_POST)) { + if ((isset($option->use_add_widget) && $option->use_add_widget) + && sqGetGlobalVar('add_' . $option->name, $new_element, SQ_POST)) { $new_element = trim($new_element); if (!empty($new_element) && !in_array($new_element, $option->possible_values)) @@ -930,6 +962,11 @@ function create_option_groups($optgrps, $optvals) { $next_option->setLayoutType($optset['layout_type']); } + /* If provided, set the use_add_widget value for this option. */ + if (isset($optset['use_add_widget'])) { + $next_option->setUseAddWidget($optset['use_add_widget']); + } + /* If provided, set the comment for this option. */ if (isset($optset['comment'])) { $next_option->setComment($optset['comment']); diff --git a/templates/default/edit_list_widget.tpl b/templates/default/edit_list_widget.tpl index 372e2a6a..9c48bb2a 100644 --- a/templates/default/edit_list_widget.tpl +++ b/templates/default/edit_list_widget.tpl @@ -7,16 +7,17 @@ * * The following variables are available in this template: * - * string $name The name of the edit list - * string $input_widget A preconstructed input text box used - * for adding new elements to the edit list - * string $select_widget A preconstructed input text box used - * string $checkbox_widget A preconstructed input text box used - * string $trailing_text Any text given by the caller to be displayed - * after the edit list input - * array $possible_values The original list of options in the edit list, - * for use constructing layouts alternative to - * the select widget + * string $name The name of the edit list + * string $input_widget A preconstructed input text box used + * for adding new elements to the edit list + * boolean $use_input_widget Whether or not to present the $input_widget + * string $select_widget A preconstructed input text box used + * string $checkbox_widget A preconstructed input text box used + * string $trailing_text Any text given by the caller to be displayed + * after the edit list input + * array $possible_values The original list of options in the edit list, + * for use constructing layouts alternative to + * the select widget * * @copyright © 1999-2008 The SquirrelMail Project Team * @license http://opensource.org/licenses/gpl-license.php GNU Public License @@ -31,6 +32,9 @@ extract($t); -echo _("Add") . ' ' . $input_widget . '
' . $select_widget +if ($use_input_widget) + echo _("Add") . ' ' . $input_widget . '
'; + +echo $select_widget . '
' . $checkbox_widget . ' '; diff --git a/templates/default/edit_list_widget_list_style.tpl b/templates/default/edit_list_widget_list_style.tpl index 7d54d7d7..53e547b0 100644 --- a/templates/default/edit_list_widget_list_style.tpl +++ b/templates/default/edit_list_widget_list_style.tpl @@ -7,16 +7,17 @@ * * The following variables are available in this template: * - * string $name The name of the edit list - * string $input_widget A preconstructed input text box used - * for adding new elements to the edit list - * string $select_widget A preconstructed input text box used - * string $checkbox_widget A preconstructed input text box used - * string $trailing_text Any text given by the caller to be displayed - * after the edit list input - * array $possible_values The original list of options in the edit list, - * for use constructing layouts alternative to - * the select widget + * string $name The name of the edit list + * string $input_widget A preconstructed input text box used + * for adding new elements to the edit list + * boolean $use_input_widget Whether or not to present the $input_widget + * string $select_widget A preconstructed input text box used + * string $checkbox_widget A preconstructed input text box used + * string $trailing_text Any text given by the caller to be displayed + * after the edit list input + * array $possible_values The original list of options in the edit list, + * for use constructing layouts alternative to + * the select widget * * @copyright © 1999-2008 The SquirrelMail Project Team * @license http://opensource.org/licenses/gpl-license.php GNU Public License @@ -31,9 +32,12 @@ extract($t); -echo '
' - . _("Add") . ' ' . $input_widget . '
' - . ''; +echo '
'; + +if ($use_input_widget) + echo _("Add") . ' ' . $input_widget . '
'; + +echo ''; $class = 'even'; $index = 0; -- 2.25.1