367 lines
9.7 KiB
JavaScript
367 lines
9.7 KiB
JavaScript
|
|
|
|
(function( $ ){
|
|
|
|
/* Add csrf token */
|
|
|
|
/* options: url: url to post, loading: dom id, success: func, error_data: func, pre_callback, separated_data:boolean, upload: {progressbar: '#progressbar', 'total_loader': '#total_loader', 'status': '#status'} */
|
|
|
|
$.fn.sendPost = function (options)
|
|
{
|
|
|
|
if(!options.hasOwnProperty("url")) {
|
|
|
|
throw 'Error: you need an url for use sendPost';
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if(!options.hasOwnProperty("loading")) {
|
|
|
|
options['loading']='#loading';
|
|
|
|
}
|
|
|
|
var xhr=false;
|
|
|
|
if(options.hasOwnProperty("upload")) {
|
|
|
|
xhr=function() {
|
|
var myXhr = $.ajaxSettings.xhr();
|
|
if(myXhr.upload){
|
|
|
|
var progressbar=options.upload.progressbar;
|
|
var total_loader=options.upload.total_loader;
|
|
var status=options.upload.status;
|
|
|
|
$(total_loader).html('');
|
|
$(progressbar).attr('value', 0);
|
|
$(status).html('');
|
|
|
|
myXhr.upload.addEventListener('progress',function (event) {
|
|
|
|
$(total_loader).html("Uploaded "+event.loaded+" bytes of "+event.total);
|
|
var percent = (event.loaded / event.total) * 100;
|
|
$(progressbar).attr('value', (Math.round(percent)));
|
|
$(status).html(Math.round(percent)+"% uploaded... please wait");
|
|
|
|
}, false);
|
|
|
|
myXhr.addEventListener("load", function(event) {
|
|
|
|
$(status).html("File loaded successfully!!");
|
|
|
|
}, false);
|
|
}
|
|
return myXhr;
|
|
}
|
|
}
|
|
|
|
$(this).on('submit', function (e) {
|
|
|
|
//Get data of form
|
|
|
|
form=this;
|
|
|
|
if(options.separated_data)
|
|
{
|
|
data[options.separated_data]=new FormData($(this)[0]);
|
|
}
|
|
else
|
|
{
|
|
data=new FormData($(this)[0]);
|
|
}
|
|
|
|
|
|
xhrFields={
|
|
withCredentials: true
|
|
};
|
|
|
|
|
|
if(!data.hasOwnProperty("csrf_token")) {
|
|
|
|
data['csrf_token']=$('#csrf_token_generic').val();
|
|
|
|
}
|
|
|
|
//Hide form and show the time icon
|
|
|
|
$(this).find('.error').hide();
|
|
|
|
$(options.loading).show();
|
|
|
|
if(options.hasOwnProperty("pre_callback")) {
|
|
|
|
options.pre_callback(data);
|
|
|
|
}
|
|
|
|
//Ajax
|
|
|
|
ajax_post={
|
|
type: "POST",
|
|
url: options.url,
|
|
data: data,
|
|
encoding: "UTF-8",
|
|
xhrFields: xhrFields,
|
|
cache:false,
|
|
contentType:false,
|
|
processData: false,
|
|
success: function (data) {
|
|
|
|
$(options.loading).hide();
|
|
|
|
if(data.error) {
|
|
|
|
if(!data.hasOwnProperty("error_csrf"))
|
|
{
|
|
|
|
|
|
if(data.hasOwnProperty("csrf_token"))
|
|
{
|
|
|
|
$('.csrf_token').attr('value', data.csrf_token);
|
|
|
|
}
|
|
|
|
|
|
console.log('Error');
|
|
|
|
if(data.hasOwnProperty('error_form'))
|
|
{
|
|
for(i in data.error_form) {
|
|
|
|
$(i).html(data.error_form[i]);
|
|
$(i).show();
|
|
|
|
}
|
|
}
|
|
else
|
|
if(data.hasOwnProperty('form'))
|
|
{
|
|
|
|
for(i in data.form) {
|
|
|
|
$('#'+i+'_error').html(data.form[i]);
|
|
$('#'+i+'_error').show();
|
|
}
|
|
|
|
}
|
|
|
|
if(options.hasOwnProperty("error_data")) {
|
|
|
|
options.error_data(data);
|
|
}
|
|
|
|
$(form).show();
|
|
}
|
|
else
|
|
{
|
|
|
|
alert('You session expired, the page was reload by security');
|
|
location.reload();
|
|
|
|
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
// If ok then post successful task.
|
|
|
|
if(options.hasOwnProperty("success")) {
|
|
|
|
options.success(data);
|
|
|
|
}
|
|
}
|
|
},
|
|
error: function (data) {
|
|
|
|
//Show the form again
|
|
|
|
if(data.hasOwnProperty("csrf_token"))
|
|
{
|
|
|
|
$('.csrf_token').attr('value', data.csrf_token);
|
|
|
|
}
|
|
|
|
$(options.loading).hide();
|
|
alert('Error: '+data.status+' '+data.statusText);
|
|
|
|
|
|
},
|
|
dataType: 'json'
|
|
};
|
|
|
|
//console.log(xhr);
|
|
|
|
if(xhr!=false) {
|
|
|
|
ajax_post.xhr=xhr;
|
|
|
|
}
|
|
|
|
$.ajax(ajax_post);
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
})( jQuery );
|
|
|
|
function sendGet(element, send_data, loading, success, error_data, pre_callback) {
|
|
|
|
if(element==undefined) {
|
|
|
|
throw 'Error: you need an element for use sendGet';
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if(send_data==undefined) {
|
|
|
|
send_data={};
|
|
|
|
}
|
|
|
|
url=$(element).attr('url');
|
|
|
|
if(pre_callback!=undefined) {
|
|
|
|
options.pre_callback();
|
|
|
|
}
|
|
|
|
$.ajax({
|
|
url: url,
|
|
type: 'GET',
|
|
data: send_data,
|
|
success: function (data) {
|
|
|
|
$(options.loading).hide();
|
|
|
|
if(!data.error) {
|
|
|
|
if(options.hasOwnProperty("success")) {
|
|
|
|
options.success(data);
|
|
|
|
}
|
|
|
|
}
|
|
else {
|
|
|
|
if(options.hasOwnProperty("error_data")) {
|
|
|
|
options.error_data(data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
error: function (data) {
|
|
|
|
$(options.loading).hide();
|
|
|
|
alert('Error: '+data.status+' '+data.statusText);
|
|
|
|
},
|
|
dataType: 'json'
|
|
});
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
(function( $ ){
|
|
|
|
/* Add csrf token */
|
|
|
|
/* url: url to post is getted from object*/
|
|
|
|
/* element_id: element id, options:, loading: dom id, success: func, error_data: func, pre_callback, */
|
|
|
|
$.fn.sendGet = function (options)
|
|
{
|
|
|
|
/*if(!options.hasOwnProperty("url")) {
|
|
|
|
throw 'Error: you need an url for use sendPost';
|
|
|
|
return false;
|
|
|
|
}*/
|
|
|
|
if(!options.hasOwnProperty("loading")) {
|
|
|
|
options['loading']='#loading';
|
|
|
|
}
|
|
|
|
//$(this).click( function (e) {
|
|
$(this).click( function(e) {
|
|
|
|
if(options.hasOwnProperty("pre_callback")) {
|
|
|
|
options.pre_callback();
|
|
|
|
}
|
|
|
|
url=$(this).attr('data-url');
|
|
|
|
$(options.loading).show();
|
|
|
|
$.ajax({
|
|
url: url,
|
|
type: 'GET',
|
|
data: {},
|
|
success: function (data) {
|
|
|
|
$(options.loading).hide();
|
|
|
|
if(!data.error) {
|
|
|
|
if(options.hasOwnProperty("success")) {
|
|
|
|
options.success(data);
|
|
|
|
}
|
|
|
|
}
|
|
else {
|
|
|
|
if(options.hasOwnProperty("error_data")) {
|
|
|
|
options.error_data(data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
error: function (data) {
|
|
|
|
$(options.loading).hide();
|
|
|
|
alert('Error: '+data.status+' '+data.statusText);
|
|
|
|
},
|
|
dataType: 'json'
|
|
});
|
|
|
|
return false;
|
|
|
|
});
|
|
}
|
|
|
|
})( jQuery );
|