1
0
mirror of https://github.com/owncloudarchive/contacts.git synced 2024-11-29 11:24:11 +01:00
OwncloudContactsOfficial/js/admin.js
2014-05-09 15:18:44 -04:00

108 lines
2.9 KiB
JavaScript

$(document).ready(function() {
$('#contacts-ldap-enabled').change(function() {
var enabled=$(this).prop('checked')?'true':'false';
$.when(
enableBackend(
'ldap',
enabled
))
.then(function(response) {
if(!response.error) {
console.log('response', response.data);
} else {
console.warn('Error', response.message);
}
}).fail(function(response) {
console.log(response.message);
});
});
});
function requestRoute(route, type, routeParams, params, additionalHeaders) {
var isJSON = (typeof params === 'string');
var contentType = isJSON
? (type === 'PATCH' ? 'application/json-merge-patch' : 'application/json')
: 'application/x-www-form-urlencoded';
var processData = !isJSON;
contentType += '; charset=UTF-8';
var url = OC.generateUrl('apps/contacts/' + route, routeParams);
var headers = {
Accept : 'application/json; charset=utf-8'
};
if(typeof additionalHeaders === 'object') {
headers = $.extend(headers, additionalHeaders);
}
var ajaxParams = {
type: type,
url: url,
dataType: 'json',
headers: headers,
contentType: contentType,
processData: processData,
data: params
};
var defer = $.Deferred();
$.ajax(ajaxParams)
.done(function(response, textStatus, jqXHR) {
console.log(jqXHR);
defer.resolve(new JSONResponse(jqXHR));
})
.fail(function(jqXHR/*, textStatus, error*/) {
console.log(jqXHR);
var response = jqXHR.responseText ? $.parseJSON(jqXHR.responseText) : null;
console.log('response', response);
defer.reject(new JSONResponse(jqXHR));
});
return defer.promise();
}
function enableBackend(backend, enable, params) {
return requestRoute(
'backend/{backend}/{enable}',
'GET',
{backend: backend, enable: enable},
JSON.stringify(params)
);
}
var JSONResponse = function(jqXHR) {
this.getAllResponseHeaders = jqXHR.getAllResponseHeaders;
this.getResponseHeader = jqXHR.getResponseHeader;
this.statusCode = jqXHR.status;
var response = jqXHR.responseJSON;
this.error = false;
console.log('jqXHR', jqXHR);
if (!response) {
// 204 == No content
// 304 == Not modified
if ([204, 304].indexOf(this.statusCode) === -1) {
this.error = true;
}
this.message = jqXHR.statusText;
} else {
// We need to allow for both the 'old' success/error status property
// with the body in the data property, and the newer where we rely
// on the status code, and the entire body is used.
if (response.status === 'error'|| this.statusCode >= 400) {
this.error = true;
if (!response.data || !response.data.message) {
this.message = t('contacts', 'Server error! Please inform system administator');
} else {
console.log('JSONResponse', response);
this.message = (response.data && response.data.message)
? response.data.message
: response;
}
} else {
this.data = response.data || response;
// Kind of a hack
if (response.metadata) {
this.metadata = response.metadata;
}
}
}
};