You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

125 lines
4.6 KiB

$(document).ready(function() {
var dlg_msg = $('#dialog-message');
$('form', '#dialogs').each(function() {
var form = $(this);
var options = {
dataType: 'json',
timeout: 30000,
beforeSubmit: function() {
$('input', form).attr('disabled', 'disabled');
$('button', form).attr('disabled', 'disabled');
},
complete: function(data) {
$('input', form).removeAttr('disabled');
$('button', form).removeAttr('disabled');
},
/*beforeSend: function() {
$('.errors-layout', form).html('').hide();
},*/
success: function(data) {
clear_form_errors(form);
if (data.success) {
if (form[0].id == 'client-edit-form') {
var autocomplete = $('#id_client_text').yourlabsAutocomplete();
$('#id_client_text').val(data.name);
var choices = autocomplete.box.find(autocomplete.choiceSelector);
autocomplete.refresh();
autocomplete.show = function(html) {
yourlabs.Autocomplete.prototype.show.call(this, html)
var choices = this.box.find(this.choiceSelector);
if (choices.length == 1) {
this.input.trigger('selectChoice', [choices, this]);
}
}
}
form.dialog('close');
form.clearForm();
if (data.message) {
if (dlg_msg) {
dlg_msg.dialog({title: data.message['title']}).html(data.message['msg']);
if (data.reload)
dlg_msg.one('dialogbeforeclose', function(){window.location.reload(true);});
dlg_msg.dialog('open');
}
}
else if (data.reload) {
window.location.reload(true);
}
}
else {
// process form errors
if (data.form_errors) {
var errors = $('.errors-layout', form);
var html = '<ul>';
for (var err in data.form_errors) {
if (data.form_errors.hasOwnProperty(err)) {
html += '<li>' + data.form_errors[err] + '</li>';
}
}
html += '</ul>';
errors.append(html).show();
}
// process fields errors
for (var key in data.field_errors) {
if (data.field_errors.hasOwnProperty(key)) {
var value = data.field_errors[key];
var input = $('[name^='+key+'],[field^='+key+']', form);
input.addClass('ui-state-error'); // highlight field
}
}
}
}
};
form.ajaxForm(options);
form
.ajaxStart(function(){
$.blockUI.defaults.overlayCSS = {};
$.blockUI.defaults.css = {};
$.blockUI({message: '<h1>Пожалуйста, подождите...</h1>', baseZ: '9999'});
})
.ajaxStop(function(){
$.unblockUI();
});
});
dlg_msg.dialog({
modal: true,
autoOpen: false,
//resizable: false,
//width: 310,
buttons: {
'Закрыть': function() {
$(this).dialog('close');
}
}
});
});
function clear_form_errors(form) {
$('.errors-layout', form).html('').hide();
form.find(':input').each(function() {
$(this).removeClass('ui-state-error'); // remove fields highlight
});
}
function update_form_fields(form, obj_values) {
for (var key in obj_values)
if (obj_values.hasOwnProperty(key)) {
var value = obj_values[key];
var input = $('input[name="' + key + '"]', form);
if (input) {
var input_type = input.attr('type');
if (input_type == 'checkbox' || input_type == 'radio')
input.attr('checked', value);
else
input.val(value);
}
}
}