2 commits - lib/api lib/Auth public_html/js
Aleksander Machniak
machniak at kolabsys.com
Thu Feb 27 14:17:30 CET 2014
lib/Auth/LDAP.php | 6
lib/api/kolab_api_service_group.php | 13 +-
lib/api/kolab_api_service_ou.php | 13 +-
lib/api/kolab_api_service_resource.php | 18 +-
lib/api/kolab_api_service_role.php | 19 +--
lib/api/kolab_api_service_sharedfolder.php | 18 +-
lib/api/kolab_api_service_user.php | 15 +-
public_html/js/kolab_admin.js | 180 +++++++----------------------
8 files changed, 106 insertions(+), 176 deletions(-)
New commits:
commit 4a55f2c1d856a3e7d44ab03d31ceca7bee86afda
Author: Aleksander Machniak <machniak at kolabsys.com>
Date: Thu Feb 27 14:17:01 2014 +0100
Return ID (unique attribute) after adding an object (Request #2829)
diff --git a/lib/Auth/LDAP.php b/lib/Auth/LDAP.php
index 5e708cd..898a60d 100644
--- a/lib/Auth/LDAP.php
+++ b/lib/Auth/LDAP.php
@@ -1123,7 +1123,11 @@ class LDAP extends Net_LDAP3 {
{
$this->bind($_SESSION['user']->user_bind_dn, $_SESSION['user']->user_bind_pw);
- return $this->add_entry($entry_dn, $attrs);
+ if ($this->add_entry($entry_dn, $attrs)) {
+ return $entry_dn;
+ }
+
+ return false;
}
/**
diff --git a/lib/api/kolab_api_service_group.php b/lib/api/kolab_api_service_group.php
index b1fc2ad..0e40867 100644
--- a/lib/api/kolab_api_service_group.php
+++ b/lib/api/kolab_api_service_group.php
@@ -76,13 +76,16 @@ class kolab_api_service_group extends kolab_api_service
*/
public function group_add($getdata, $postdata)
{
- $group_attributes = $this->parse_input_attributes('group', $postdata);
-
- $auth = Auth::get_instance();
- $result = $auth->group_add($group_attributes, $postdata['type_id']);
+ $attributes = $this->parse_input_attributes('group', $postdata);
+ $auth = Auth::get_instance();
+ $result = $auth->group_add($attributes, $postdata['type_id']);
if ($result) {
- return $group_attributes;
+ if ($id = $this->unique_attribute_value($result)) {
+ $attributes['id'] = $id;
+ }
+
+ return $attributes;
}
return FALSE;
diff --git a/lib/api/kolab_api_service_ou.php b/lib/api/kolab_api_service_ou.php
index fdfd9ee..015d736 100644
--- a/lib/api/kolab_api_service_ou.php
+++ b/lib/api/kolab_api_service_ou.php
@@ -74,13 +74,16 @@ class kolab_api_service_ou extends kolab_api_service
*/
public function ou_add($getdata, $postdata)
{
- $unit_attributes = $this->parse_input_attributes('ou', $postdata);
-
- $auth = Auth::get_instance();
- $result = $auth->organizationalunit_add($unit_attributes, $postdata['type_id']);
+ $attributes = $this->parse_input_attributes('ou', $postdata);
+ $auth = Auth::get_instance();
+ $result = $auth->organizationalunit_add($attributes, $postdata['type_id']);
if ($result) {
- return $unit_attributes;
+ if ($id = $this->unique_attribute_value($result)) {
+ $attributes['id'] = $id;
+ }
+
+ return $attributes;
}
return FALSE;
diff --git a/lib/api/kolab_api_service_resource.php b/lib/api/kolab_api_service_resource.php
index 149fe57..ac04f3b 100644
--- a/lib/api/kolab_api_service_resource.php
+++ b/lib/api/kolab_api_service_resource.php
@@ -75,18 +75,16 @@ class kolab_api_service_resource extends kolab_api_service
*/
public function resource_add($getdata, $postdata)
{
- //console("resource_add()", $postdata);
-
- $resource_attributes = $this->parse_input_attributes('resource', $postdata);
-
- //console("resource_add()", $resource_attributes);
-
- // TODO: The cn needs to be unique
- $auth = Auth::get_instance();
- $result = $auth->resource_add($resource_attributes, $postdata['type_id']);
+ $attributes = $this->parse_input_attributes('resource', $postdata);
+ $auth = Auth::get_instance();
+ $result = $auth->resource_add($attributes, $postdata['type_id']);
if ($result) {
- return $resource_attributes;
+ if ($id = $this->unique_attribute_value($result)) {
+ $attributes['id'] = $id;
+ }
+
+ return $attributes;
}
return false;
diff --git a/lib/api/kolab_api_service_role.php b/lib/api/kolab_api_service_role.php
index 6ca2231..31c3a8b 100644
--- a/lib/api/kolab_api_service_role.php
+++ b/lib/api/kolab_api_service_role.php
@@ -76,16 +76,19 @@ class kolab_api_service_role extends kolab_api_service
*/
public function role_add($getdata, $postdata)
{
- $role_attributes = $this->parse_input_attributes('role', $postdata);
-
- $auth = Auth::get_instance();
- $result = $auth->role_add($role_attributes, $postdata['type_id']);
+ $attributes = $this->parse_input_attributes('role', $postdata);
+ $auth = Auth::get_instance();
+ $result = $auth->role_add($attributes, $postdata['type_id']);
if ($result) {
- return $role_attributes;
+ if ($id = $this->unique_attribute_value($result)) {
+ $attributes['id'] = $id;
+ }
+
+ return $attributes;
}
- return FALSE;
+ return false;
}
/**
@@ -99,7 +102,7 @@ class kolab_api_service_role extends kolab_api_service
public function role_delete($getdata, $postdata)
{
if (empty($postdata['id'])) {
- return FALSE;
+ return false;
}
// TODO: Input validation
@@ -110,7 +113,7 @@ class kolab_api_service_role extends kolab_api_service
return $result;
}
- return FALSE;
+ return false;
}
public function role_edit($getdata, $postdata)
diff --git a/lib/api/kolab_api_service_sharedfolder.php b/lib/api/kolab_api_service_sharedfolder.php
index 6d3a3dd..23518b3 100644
--- a/lib/api/kolab_api_service_sharedfolder.php
+++ b/lib/api/kolab_api_service_sharedfolder.php
@@ -75,18 +75,16 @@ class kolab_api_service_sharedfolder extends kolab_api_service
*/
public function sharedfolder_add($getdata, $postdata)
{
- //console("sharedfolder_add()", $postdata);
-
- $sharedfolder_attributes = $this->parse_input_attributes('sharedfolder', $postdata);
-
- //console("sharedfolder_add()", $sharedfolder_attributes);
-
- // TODO: The cn needs to be unique
- $auth = Auth::get_instance();
- $result = $auth->sharedfolder_add($sharedfolder_attributes, $postdata['type_id']);
+ $attributes = $this->parse_input_attributes('sharedfolder', $postdata);
+ $auth = Auth::get_instance();
+ $result = $auth->sharedfolder_add($attributes, $postdata['type_id']);
if ($result) {
- return $sharedfolder_attributes;
+ if ($id = $this->unique_attribute_value($result)) {
+ $attributes['id'] = $id;
+ }
+
+ return $attributes;
}
return false;
diff --git a/lib/api/kolab_api_service_user.php b/lib/api/kolab_api_service_user.php
index 4d985bb..6cf4483 100644
--- a/lib/api/kolab_api_service_user.php
+++ b/lib/api/kolab_api_service_user.php
@@ -81,15 +81,19 @@ class kolab_api_service_user extends kolab_api_service
{
Log::trace("user_add()", $postdata);
- $user_attributes = $this->parse_input_attributes('user', $postdata);
+ $attributes = $this->parse_input_attributes('user', $postdata);
- Log::trace("user_add()", $user_attributes);
+ Log::trace("user_add()", $attributes);
- $auth = Auth::get_instance();
- $result = $auth->user_add($user_attributes, $postdata['type_id']);
+ $auth = Auth::get_instance();
+ $result = $auth->user_add($attributes, $postdata['type_id']);
if ($result) {
- return $user_attributes;
+ if ($id = $this->unique_attribute_value($result)) {
+ $attributes['id'] = $id;
+ }
+
+ return $attributes;
}
return false;
@@ -146,6 +150,7 @@ class kolab_api_service_user extends kolab_api_service
{
$auth = Auth::get_instance();
$effective_rights = $auth->list_rights(empty($getdata['id']) ? 'user' : $getdata['id']);
+
return $effective_rights;
}
commit 52e47e63d2c46206dff28a3d1cec782f0d5b1f23
Author: Aleksander Machniak <machniak at kolabsys.com>
Date: Thu Feb 27 14:02:43 2014 +0100
Code unification
diff --git a/public_html/js/kolab_admin.js b/public_html/js/kolab_admin.js
index c9836c8..e4741f2 100644
--- a/public_html/js/kolab_admin.js
+++ b/public_html/js/kolab_admin.js
@@ -1412,24 +1412,7 @@ function kolab_admin()
this.domain_save = function(reload, section)
{
- var data = this.serialize_form('#'+this.env.form_id),
- action = data.id ? 'edit' : 'add';
-
- if (reload) {
- data.section = section;
- this.http_post('domain.' + action, {data: data});
- return;
- }
-
- this.form_error_clear();
-
- if (!this.check_required_fields(data)) {
- this.display_message('form.required.empty', 'error');
- return;
- }
-
- this.set_busy(true, 'saving');
- this.api_post('domain.' + action, data, 'domain_' + action + '_response');
+ this.save_handler('domain', reload, section);
};
this.domain_delete_response = function(response)
@@ -1488,32 +1471,19 @@ function kolab_admin()
this.user_save = function(reload, section)
{
- var data = this.serialize_form('#'+this.env.form_id),
- action = data.id ? 'edit' : 'add';
-
- if (reload) {
- data.section = section;
- this.http_post('user.' + action, {data: data});
- return;
- }
-
- this.form_error_clear();
-
- // check password
- if (data.userpassword != data.userpassword2) {
- this.display_message('user.password.mismatch', 'error');
- this.form_value_error('userpassword2');
- return;
- }
- delete data['userpassword2'];
+ var validate = function(obj, data) {
+ // check password
+ if (data.userpassword != data.userpassword2) {
+ obj.display_message('user.password.mismatch', 'error');
+ obj.form_value_error('userpassword2');
+ return false;
+ }
- if (!this.check_required_fields(data)) {
- this.display_message('form.required.empty', 'error');
- return;
- }
+ delete data['userpassword2'];
+ return data;
+ };
- this.set_busy(true, 'saving');
- this.api_post('user.' + action, data, 'user_' + action + '_response');
+ this.save_handler('user', reload, section, validate);
};
this.user_delete_response = function(response)
@@ -1548,24 +1518,7 @@ function kolab_admin()
this.group_save = function(reload, section)
{
- var data = this.serialize_form('#'+this.env.form_id),
- action = data.id ? 'edit' : 'add';
-
- if (reload) {
- data.section = section;
- this.http_post('group.' + action, {data: data});
- return;
- }
-
- this.form_error_clear();
-
- if (!this.check_required_fields(data)) {
- this.display_message('form.required.empty', 'error');
- return;
- }
-
- this.set_busy(true, 'saving');
- this.api_post('group.' + action, data, 'group_' + action + '_response');
+ this.save_handler('group', reload, section);
};
this.group_delete_response = function(response)
@@ -1600,24 +1553,7 @@ function kolab_admin()
this.ou_save = function(reload, section)
{
- var data = this.serialize_form('#'+this.env.form_id),
- action = data.id ? 'edit' : 'add';
-
- if (reload) {
- data.section = section;
- this.http_post('ou.' + action, {data: data});
- return;
- }
-
- this.form_error_clear();
-
- if (!this.check_required_fields(data)) {
- this.display_message('form.required.empty', 'error');
- return;
- }
-
- this.set_busy(true, 'saving');
- this.api_post('ou.' + action, data, 'ou_' + action + '_response');
+ this.save_handler('ou', reload, section);
};
this.ou_delete_response = function(response)
@@ -1652,24 +1588,7 @@ function kolab_admin()
this.resource_save = function(reload, section)
{
- var data = this.serialize_form('#'+this.env.form_id),
- action = data.id ? 'edit' : 'add';
-
- if (reload) {
- data.section = section;
- this.http_post('resource.' + action, {data: data});
- return;
- }
-
- this.form_error_clear();
-
- if (!this.check_required_fields(data)) {
- this.display_message('form.required.empty', 'error');
- return;
- }
-
- this.set_busy(true, 'saving');
- this.api_post('resource.' + action, data, 'resource_' + action + '_response');
+ this.save_handler('resource', reload, section);
};
this.resource_delete_response = function(response)
@@ -1704,24 +1623,7 @@ function kolab_admin()
this.role_save = function(reload, section)
{
- var data = this.serialize_form('#'+this.env.form_id),
- action = data.id ? 'edit' : 'add';
-
- if (reload) {
- data.section = section;
- this.http_post('role.' + action, {data: data});
- return;
- }
-
- this.form_error_clear();
-
- if (!this.check_required_fields(data)) {
- this.display_message('form.required.empty', 'error');
- return;
- }
-
- this.set_busy(true, 'saving');
- this.api_post('role.' + action, data, 'role_' + action + '_response');
+ this.save_handler('role', reload, section);
};
this.role_delete_response = function(response)
@@ -1756,24 +1658,7 @@ function kolab_admin()
this.sharedfolder_save = function(reload, section)
{
- var data = this.serialize_form('#'+this.env.form_id),
- action = data.id ? 'edit' : 'add';
-
- if (reload) {
- data.section = section;
- this.http_post('sharedfolder.' + action, {data: data});
- return;
- }
-
- this.form_error_clear();
-
- if (!this.check_required_fields(data)) {
- this.display_message('form.required.empty', 'error');
- return;
- }
-
- this.set_busy(true, 'saving');
- this.api_post('sharedfolder.' + action, data, 'sharedfolder_' + action + '_response');
+ this.save_handler('sharedfolder', reload, section);
};
this.sharedfolder_delete_response = function(response)
@@ -1981,6 +1866,37 @@ function kolab_admin()
this.api_post(type + '.delete', {'id': id}, type + '_delete_response');
};
+ // universal form save handler
+ this.save_handler = function(type, reload, section, validation_function)
+ {
+ var data = this.serialize_form('#'+this.env.form_id),
+ action = data.id ? 'edit' : 'add';
+
+ if (reload) {
+ data.section = section;
+ this.http_post(type + '.' + action, {data: data});
+ return false;
+ }
+
+ this.form_error_clear();
+
+ if (validation_function)
+ data = validation_function(this, data);
+
+ if (data === false)
+ return false;
+
+ if (!this.check_required_fields(data)) {
+ this.display_message('form.required.empty', 'error');
+ return false;
+ }
+
+ this.set_busy(true, 'saving');
+ this.api_post(type + '.' + action, data, type + '_' + action + '_response');
+
+ return true;
+ };
+
// Parses object type identifier
this.type_id_parse = function(id)
{
More information about the commits
mailing list