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