Files
Phraseanet/www/scripts/apps/login/home/register.js
2013-07-03 18:34:34 +02:00

139 lines
4.7 KiB
JavaScript

/*
* This file is part of Phraseanet
*
* (c) 2005-2013 Alchemy
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
// launch application
require([
"jquery",
"i18n",
"apps/login/home/common",
"common/forms/views/formType/passwordSetter",
"jqueryui",
"jquery.geocompleter"
], function($, i18n, Common, RegisterForm) {
var fieldsConfiguration = [];
$.when.apply($, [
$.ajax({
url: '/login/registration-fields/',
success: function(config) {
fieldsConfiguration = config;
}
})
]).done(function(){
i18n.init({
resGetPath: Common.languagePath,
useLocalStorage: true
}, function() {
Common.initialize();
var rules = [{
name: "email",
rules: "required",
message: i18n.t("validation_blank")
},{
name: "email",
rules: "valid_email",
message: i18n.t("validation_email")
},{
name: "password[password]",
rules: "required",
message: i18n.t("validation_blank")
},{
name: "password[password]",
rules: "min_length[5]",
message: i18n.t("validation_length_min", {
postProcess: "sprintf",
sprintf: ["5"]
})
},{
name: "password[confirm]",
rules: "matches[password[password]]",
message: i18n.t("password_match")
},{
name: "accept-tou",
rules: "required",
message: i18n.t("accept_tou"),
type: "checkbox"
},{
name: "collections[]",
rules: "min_length[1]",
message: i18n.t("validation_choice_min", {
postProcess: "sprintf",
sprintf: ["1"]
}),
type: "multiple"
}];
_.each(fieldsConfiguration, function(field) {
if (field.required) {
var rule = {
"name": field.name,
"rules": "required",
"message": i18n.t("validation_blank")
};
rules.push(rule);
}
});
var $form = $("form[name=registerForm]");
new RegisterForm({
el : $form,
rules: rules
});
var geocompleter = $("#geonameid").geocompleter({
"server": $form.data("geonames-server-adress"),
"limit": 40
});
// Positioning menu below input
geocompleter.geocompleter("autocompleter", "option", "position", {
"of": geocompleter.closest(".input-table"),
"my": "left top",
"at": "left bottom"
});
// On focus add select-state
geocompleter.geocompleter("autocompleter", "on", "autocompletefocus", function(event, ui) {
$("li", $(event.originalEvent.target)).closest("li").removeClass("selected");
$("a.ui-state-active, a.ui-state-hover, a.ui-state-focus", $(event.originalEvent.target)).closest("li").addClass("selected");
});
// On search request add loading-state
geocompleter.geocompleter("autocompleter", "on", "autocompletesearch", function(event, ui) {
$(this).addClass('input-loading');
$(this).removeClass('input-error');
});
// On open menu calculate max-width
geocompleter.geocompleter("autocompleter", "on", "autocompleteopen", function(event, ui) {
$(this).autocomplete("widget").css("min-width", geocompleter.closest(".input-table").outerWidth());
});
// On response remove loading-state
geocompleter.geocompleter("autocompleter", "on", "autocompleteresponse", function(event, ui) {
$(this).removeClass('input-loading');
});
// On close menu remove loading-state
geocompleter.geocompleter("autocompleter", "on", "autocompleteclose", function(event, ui) {
$(this).removeClass('input-loading');
});
// On request error add error-state
geocompleter.geocompleter("autocompleter", "on", "geotocompleter.request.error", function(jqXhr, status, error) {
$(this).removeClass('input-loading');
$(this).addClass('input-error');
});
});
});
});