lib/client lib/kolab_client_task.php public_html/js

Aleksander Machniak machniak at kolabsys.com
Fri Mar 16 09:39:21 CET 2012


 lib/client/kolab_client_task_user.php |    2 +-
 lib/kolab_client_task.php             |   19 ++++++++++++++++---
 public_html/js/kolab_admin.js         |   10 +++++-----
 3 files changed, 22 insertions(+), 9 deletions(-)

New commits:
commit fcfcc465d4c7a80b4d5b9c765f778c434e492000
Author: Aleksander Machniak <alec at alec.pl>
Date:   Fri Mar 16 09:38:21 2012 +0100

    Fix handling of disabled (auto-generated) fields (#635)

diff --git a/lib/client/kolab_client_task_user.php b/lib/client/kolab_client_task_user.php
index df9d9df..d53318d 100644
--- a/lib/client/kolab_client_task_user.php
+++ b/lib/client/kolab_client_task_user.php
@@ -245,7 +245,7 @@ class kolab_client_task_user extends kolab_client_task
         );
 
         // Prepare fields
-        list($fields, $types, $type) = $this->form_prepare('user', $data);
+        list($fields, $types, $type) = $this->form_prepare('user', $data, array('userpassword2'));
 
         $add_mode  = empty($data['user']);
         $accttypes = array();
diff --git a/lib/kolab_client_task.php b/lib/kolab_client_task.php
index cc9dcea..4e1c90c 100644
--- a/lib/kolab_client_task.php
+++ b/lib/kolab_client_task.php
@@ -629,12 +629,13 @@ class kolab_client_task
     /**
      * HTML Form elements preparation.
      *
-     * @param string $name        Object name (user, group, etc.)
-     * @param array  $data        Object data
+     * @param string $name         Object name (user, group, etc.)
+     * @param array  $data         Object data
+     * @param array  $extra_fields Extra field names
      *
      * @return array Fields list, Object types list, Current type ID
      */
-    protected function form_prepare($name, &$data)
+    protected function form_prepare($name, &$data, $extra_fields = array())
     {
         $types        = (array) $this->{$name . '_types'}();
         $form_id      = $attribs['id'];
@@ -646,6 +647,8 @@ class kolab_client_task
         $fields       = array();
         $auto_attribs = array();
 
+        $extra_fields = array_flip($extra_fields);
+
         // Selected account type
         if (!empty($data[$name . '_type_id'])) {
             $type = $data[$name . '_type_id'];
@@ -662,6 +665,7 @@ class kolab_client_task
         // Mark automatically generated fields as read-only, etc.
         foreach ($auto_fields as $idx => $field) {
             if (!is_array($field)) {
+                unset($auto_fields[$idx]);
                 continue;
             }
             // merge with field definition from
@@ -678,6 +682,8 @@ class kolab_client_task
             $fields[$idx]['readonly'] = true;
             $fields[$idx]['disabled'] = true;
 
+            $extra_fields[$idx] = true;
+
             // build auto_attribs and event_fields lists
             $is_data = 0;
             if (!empty($field['data'])) {
@@ -693,6 +699,7 @@ class kolab_client_task
             }
             else {
                 $auto_attribs[] = $idx;
+                unset($auto_fields[$idx]);
             }
         }
 
@@ -702,6 +709,9 @@ class kolab_client_task
                 $field['name'] = $idx;
                 $fields[$idx] = $this->form_element_type($field);
             }
+            else {
+                unset($extra_fields[$idx]);
+            }
 //            $fields[$idx]['required'] = true;
             $fields[$idx]['readonly'] = false;
             $fields[$idx]['disabled'] = false;
@@ -714,7 +724,10 @@ class kolab_client_task
             }
         }
 
+        // Register list of auto-generated fields
         $this->output->set_env('auto_fields', $auto_fields);
+        // Register list of disabled fields
+        $this->output->set_env('extra_fields', array_keys($extra_fields));
 
         // (Re-|Pre-)populate auto_form_fields
         if ($add_mode) {
diff --git a/public_html/js/kolab_admin.js b/public_html/js/kolab_admin.js
index 26f1c10..69bab51 100644
--- a/public_html/js/kolab_admin.js
+++ b/public_html/js/kolab_admin.js
@@ -421,15 +421,15 @@ function kolab_admin()
     var i, v, json = {},
       form = $(id),
       query = form.serializeArray(),
-      disabled = this.env.auto_fields;
+      extra = this.env.extra_fields;
 
     for (i in query)
       json[query[i].name] = query[i].value;
 
-    // read disabled fields too
-    for (i in disabled)
-      if (v = $('[name="'+i+'"]', form).val())
-        json[i] = v;
+    // read extra (disabled) fields
+    for (i=0; i<extra.length; i++)
+      if (v = $('[name="'+extra[i]+'"]', form).val())
+        json[extra[i]] = v;
 
     this.trigger_event('form-serialize', {id: id, json: json});
 





More information about the commits mailing list