Add ability to turn off edit list delete checkbox
authorpdontthink <pdontthink@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Thu, 26 Jun 2008 00:09:22 +0000 (00:09 +0000)
committerpdontthink <pdontthink@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Thu, 26 Jun 2008 00:09:22 +0000 (00:09 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@13197 7612ce4b-ef26-0410-bec9-ea0150e637f0

functions/options.php
templates/default/edit_list_widget.tpl
templates/default/edit_list_widget_list_style.tpl

index d7d8b62..61ddf02 100644 (file)
@@ -134,6 +134,13 @@ class SquirrelOption {
      */
     var $use_add_widget;
     /**
      */
     var $use_add_widget;
     /**
+     * Indicates if the Delete widget should be included
+     * with edit lists.
+     *
+     * @var boolean
+     */
+    var $use_delete_widget;
+    /**
      * text displayed to the user
      *
      * Used with SMOPT_TYPE_COMMENT options
      * text displayed to the user
      *
      * Used with SMOPT_TYPE_COMMENT options
@@ -223,6 +230,7 @@ class SquirrelOption {
         $this->comment = '';
         $this->layout_type = 0;
         $this->use_add_widget = TRUE;
         $this->comment = '';
         $this->layout_type = 0;
         $this->use_add_widget = TRUE;
+        $this->use_delete_widget = TRUE;
         $this->aExtraAttribs = array();
         $this->post_script = '';
 
         $this->aExtraAttribs = array();
         $this->post_script = '';
 
@@ -309,6 +317,11 @@ class SquirrelOption {
         $this->use_add_widget = $use_add_widget;
     }
 
         $this->use_add_widget = $use_add_widget;
     }
 
+    /* Set the "use delete widget" value for this option. */
+    function setUseDeleteWidget($use_delete_widget) {
+        $this->use_delete_widget = $use_delete_widget;
+    }
+
     /**
      * Set the layout type for this option.
      * @param int $layout_type
     /**
      * Set the layout type for this option.
      * @param int $layout_type
@@ -754,6 +767,7 @@ 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);
 //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('use_delete_widget', $this->use_delete_widget);
 
         $oTemplate->assign('trailing_text', $this->trailing_text);
         $oTemplate->assign('possible_values', $this->possible_values);
 
         $oTemplate->assign('trailing_text', $this->trailing_text);
         $oTemplate->assign('possible_values', $this->possible_values);
@@ -844,7 +858,8 @@ function save_option($option) {
         
         // delete selected elements if needed
         //
         
         // delete selected elements if needed
         //
-        if (is_array($option->new_value)
+        if ((isset($option->use_delete_widget) && $option->use_delete_widget)
+         && is_array($option->new_value)
          && sqGetGlobalVar('delete_' . $option->name, $ignore, SQ_POST))
             $option->possible_values = array_diff($option->possible_values, $option->new_value);
 
          && sqGetGlobalVar('delete_' . $option->name, $ignore, SQ_POST))
             $option->possible_values = array_diff($option->possible_values, $option->new_value);
 
@@ -967,6 +982,11 @@ function create_option_groups($optgrps, $optvals) {
                 $next_option->setUseAddWidget($optset['use_add_widget']);
             }
 
                 $next_option->setUseAddWidget($optset['use_add_widget']);
             }
 
+            /* If provided, set the use_delete_widget value for this option. */
+            if (isset($optset['use_delete_widget'])) {
+                $next_option->setUseDeleteWidget($optset['use_delete_widget']);
+            }
+
             /* If provided, set the comment for this option. */
             if (isset($optset['comment'])) {
                 $next_option->setComment($optset['comment']);
             /* If provided, set the comment for this option. */
             if (isset($optset['comment'])) {
                 $next_option->setComment($optset['comment']);
index 9c48bb2..1d78039 100644 (file)
   * 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   $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
+  * boolean  $use_delete_widget Whether or not to present the $checkbox_widget
+  * string   $select_widget     A preconstructed select widget containing
+  *                             all the elements in the list
+  * string   $checkbox_widget   A preconstructed checkbox used for deleting
+  *                             elements from the edit list
   * 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,
   * 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,
@@ -35,6 +38,8 @@ extract($t);
 if ($use_input_widget) 
     echo _("Add") . '&nbsp;' . $input_widget . '<br />';
 
 if ($use_input_widget) 
     echo _("Add") . '&nbsp;' . $input_widget . '<br />';
 
-echo $select_widget 
-   . '<br />' . $checkbox_widget . '&nbsp;<label for="delete_' . $name . '">' 
-   . _("Delete Selected") . '</label>';
+echo $select_widget;
+
+if (!empty($possible_values) && $use_delete_widget)
+   echo '<br />' . $checkbox_widget . '&nbsp;<label for="delete_' . $name . '">' 
+      . _("Delete Selected") . '</label>';
index 53e547b..6fefc20 100644 (file)
   * 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   $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
+  * boolean  $use_delete_widget Whether or not to present the $checkbox_widget
+  * string   $select_widget     A preconstructed select widget containing
+  *                             all the elements in the list
+  * string   $checkbox_widget   A preconstructed checkbox used for deleting
+  *                             elements from the edit list
   * 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,
   * 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,
@@ -56,7 +59,7 @@ foreach ($possible_values as $key => $value) {
 
 echo '</table>';
 
 
 echo '</table>';
 
-if (!empty($possible_values))
+if (!empty($possible_values) && $use_delete_widget)
     echo $checkbox_widget . '&nbsp;<label for="delete_' . $name . '">' 
        . _("Delete Selected") . '</label>';
 
     echo $checkbox_widget . '&nbsp;<label for="delete_' . $name . '">' 
        . _("Delete Selected") . '</label>';