112 lines
No EOL
2.8 KiB
JavaScript
112 lines
No EOL
2.8 KiB
JavaScript
define([
|
|
"form_validation_conf",
|
|
"ajax_conf",
|
|
|
|
"constants",
|
|
"error_messages",
|
|
|
|
"text!template/validation.html",
|
|
"text!conf/validators.txt",
|
|
|
|
"jquery",
|
|
"underscore",
|
|
"backbone",
|
|
"jquery.validate",
|
|
],
|
|
function(form_validation_conf, ajax_conf,
|
|
constants, error_messages,
|
|
tmpl_validation, validators){
|
|
|
|
/**
|
|
* Manage the validation modal window and the ldap connection for validator.
|
|
*/
|
|
var ValidationView = Backbone.View.extend({
|
|
|
|
el: "#validation_content",
|
|
|
|
model: undefined,
|
|
|
|
validator_login: [],
|
|
|
|
$validation_modal: [],
|
|
$validation_form: [],
|
|
|
|
/**
|
|
* See Backbone documentation.
|
|
*
|
|
* @param model - the changelist model
|
|
*/
|
|
initialize: function(){
|
|
this.render();
|
|
|
|
//form validation: add submit handler dynamically to modify changelist model
|
|
this.$validation_form.validate(form_validation_conf.validation_process);
|
|
this.$validation_form.validate().settings.submitHandler = $.proxy(this.validationProcessSubmitHandler, this);
|
|
},
|
|
|
|
render: function(){
|
|
var validators_tab = validators.split("\n").sort();
|
|
|
|
for(var i = 0, length = validators_tab.length ; i < length ; i++){
|
|
this.validator_login.push($.trim(validators_tab[i]));
|
|
}
|
|
|
|
var template = _.template(tmpl_validation, {
|
|
validator_login: this.validator_login,
|
|
});
|
|
|
|
this.$el.html(template);
|
|
|
|
this.$validation_modal = this.$("#validation_modal");
|
|
this.$validation_form = this.$("#validation_form");
|
|
},
|
|
|
|
/**
|
|
* Display view like a modal window with bootstrap animation
|
|
*/
|
|
show: function(){
|
|
this.$validation_modal.modal("show");
|
|
},
|
|
|
|
/**
|
|
* Hide view with bootstrap animation
|
|
*/
|
|
hide: function(){
|
|
this.$validation_modal.modal("hide");
|
|
},
|
|
|
|
/**
|
|
* Submit handler for validation form (login & password).
|
|
* Send form to ldap connection script with AJAX request.
|
|
*/
|
|
validationProcessSubmitHandler: function(){
|
|
var data = this.$validation_form.serialize();
|
|
|
|
$.ajax(ajax_conf.ldapRequest($.proxy(this.onRequestSuccess, this),
|
|
$.proxy(this.onRequestError, this), data));
|
|
},
|
|
|
|
/**
|
|
* Ajax request onSuccess callback.
|
|
* Set the validator in the model.
|
|
* Trigger event to notify parent view.
|
|
*/
|
|
onRequestSuccess: function(){
|
|
var validator = this.$validation_form.find("#validator_login").val();
|
|
this.model.set("validator", validator);
|
|
this.model.trigger(constants.event_success_validation, [validator]);
|
|
},
|
|
|
|
/**
|
|
* Ajax request onError callback.
|
|
* Display error.
|
|
*
|
|
* @param jqXHR - the XMLHTTPRequest object.
|
|
*/
|
|
onRequestError: function(jqXHR){
|
|
alert(error_messages.validationError(jqXHR));
|
|
},
|
|
});
|
|
|
|
return ValidationView;
|
|
}) |