diff rhodecode/public/js/rhodecode.js @ 3715:25dbbdae3ed9 beta

consistent handling of grant/revoke of permissions widgets - use 1 method for users and for users groups - use common JS for ajax revoke - cleanup code
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 08 Apr 2013 23:49:08 +0200
parents e07b07ac9fbe
children 13241a4075e9
line wrap: on
line diff
--- a/rhodecode/public/js/rhodecode.js	Mon Apr 08 22:47:35 2013 +0200
+++ b/rhodecode/public/js/rhodecode.js	Mon Apr 08 23:49:08 2013 +0200
@@ -368,6 +368,20 @@
 }
 
 /**
+ * turns objects into GET query string
+ */
+var toQueryString = function(o) {
+    if(typeof o !== 'object') {
+        return false;
+    }
+    var _p, _qs = [];
+    for(_p in o) {
+        _qs.push(encodeURIComponent(_p) + '=' + encodeURIComponent(o[_p]));
+    }
+    return _qs.join('&');
+};
+
+/**
  * Partial Ajax Implementation
  *
  * @param url: defines url to make partial request
@@ -441,17 +455,6 @@
     // Set special header for ajax == HTTP_X_PARTIAL_XHR
     YUC.initHeader('X-PARTIAL-XHR',true);
 
-    var toQueryString = function(o) {
-        if(typeof o !== 'object') {
-            return false;
-        }
-        var _p, _qs = [];
-        for(_p in o) {
-            _qs.push(encodeURIComponent(_p) + '=' + encodeURIComponent(o[_p]));
-        }
-        return _qs.join('&');
-    };
-
     var sUrl = url;
     var callback = {
         success: success,
@@ -2035,7 +2038,38 @@
        YUD.insertAfter(el, last_node);
     }
 }
+function ajaxActionRevokePermission(url, obj_id, obj_type, field_id, extra_data) {
+    var callback = {
+        success: function (o) {
+            var tr = YUD.get(String(field_id));
+            tr.parentNode.removeChild(tr);
+        },
+        failure: function (o) {
+            alert(_TM['Failed to remoke permission'] + ": " + o.status);
+        },
+    };
+    query_params = {
+        '_method': 'delete'
+    }
+    // put extra data into POST
+    if (extra_data !== undefined && (typeof extra_data === 'object')){
+        for(k in extra_data){
+            query_params[k] = extra_data[k];
+        }
+    }
 
+    if (obj_type=='user'){
+        query_params['user_id'] = obj_id;
+        query_params['obj_type'] = 'user';
+    }
+    else if (obj_type=='user_group'){
+        query_params['user_group_id'] = obj_id;
+        query_params['obj_type'] = 'user_group';
+    }
+
+    var request = YAHOO.util.Connect.asyncRequest('POST', url, callback,
+            toQueryString(query_params));
+};
 /* Multi selectors */
 
 var MultiSelectWidget = function(selected_id, available_id, form_id){