Fix #1187 Add client side check on field name validity

This commit is contained in:
Nicolas Le Goff
2013-05-29 20:21:48 +02:00
parent 08529cd594
commit ed13878758
2 changed files with 10 additions and 5 deletions

View File

@@ -133,6 +133,7 @@ class Fields implements ControllerProviderInterface
'are_you_sure_delete' => _('Do you really want to delete the field %s ?'), 'are_you_sure_delete' => _('Do you really want to delete the field %s ?'),
'validation_blank' => _('Field can not be blank.'), 'validation_blank' => _('Field can not be blank.'),
'validation_name_exists' => _('Field name already exists.'), 'validation_name_exists' => _('Field name already exists.'),
'validation_name_invalid' => _('Field name is not valid.'),
'validation_tag_invalid' => _('Field source is not valid.'), 'validation_tag_invalid' => _('Field source is not valid.'),
'field_error' => _('Field %s contains errors.'), 'field_error' => _('Field %s contains errors.'),
'fields_save' => _('Your configuration has been successfuly saved.'), 'fields_save' => _('Your configuration has been successfuly saved.'),

View File

@@ -106,10 +106,14 @@ define([
var fieldNameId = fieldName.attr("id"); var fieldNameId = fieldName.attr("id");
var fieldNameValue = fieldName.val(); var fieldNameValue = fieldName.val();
// check for empty or duplicate field name var nameExists = ("undefined" !== typeof AdminFieldApp.fieldListView.collection.find(function(model) {
var notValid = "" === fieldNameValue || "undefined" !== typeof AdminFieldApp.fieldListView.collection.find(function(model) {
return model.get("name").toLowerCase() === fieldNameValue.toLowerCase() && self.model.get("id") !== model.get("id"); return model.get("name").toLowerCase() === fieldNameValue.toLowerCase() && self.model.get("id") !== model.get("id");
}); }));
var nameValid = /^[a-zA-Z]([a-zA-Z0-9]+)$/i.test(fieldNameValue);
// check for empty or duplicate field name
var notValid = "" === fieldNameValue || nameExists || !nameValid;
if (notValid) { if (notValid) {
fieldName fieldName
@@ -117,10 +121,10 @@ define([
.addClass("error") .addClass("error")
.find(".help-block") .find(".help-block")
.empty() .empty()
.append(i18n.t("validation_name_exists")); .append(i18n.t("" === fieldNameValue ? "validation_blank" : (nameExists ? "validation_name_exists" : "validation_name_invalid")));
// add error // add error
AdminFieldApp.errorManager.addModelFieldError(new Error( AdminFieldApp.errorManager.addModelFieldError(new Error(
self.model, fieldNameId, i18n.t("" === fieldNameValue ? "validation_blank" : "validation_name_exists") self.model, fieldNameId, i18n.t("" === fieldNameValue ? "validation_blank" : (nameExists ? "validation_name_exists" : "validation_name_invalid"))
)); ));
} else if (fieldName.closest(".control-group").hasClass("error")) { } else if (fieldName.closest(".control-group").hasClass("error")) {
fieldName fieldName