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