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; })