mirror of
https://github.com/owncloudarchive/contacts.git
synced 2024-11-29 11:24:11 +01:00
108 lines
2.9 KiB
JavaScript
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;
|
|
}
|
|
}
|
|
}
|
|
};
|