Added validation logic to multivalued text field

https://fedorahosted.org/freeipa/ticket/1466
This commit is contained in:
Petr Vobornik 2012-01-02 16:41:04 +01:00 committed by Endi S. Dewata
parent 747c069c45
commit 911f396604
2 changed files with 55 additions and 2 deletions

View File

@ -522,7 +522,35 @@ IPA.multivalued_field = function(spec) {
that.widget_value_changed = function() { that.widget_value_changed = function() {
that.set_dirty(that.test_dirty()); that.set_dirty(that.test_dirty());
//that.validate(); disabling validation for now that.validate();
};
that.validate = function() {
that.hide_error();
that.valid = true;
var values = that.save();
if (that.is_empty(values)) {
return that.valid;
}
for (var i=0; i<values.length; i++) {
for (var j=0; j<that.validators.length; j++) {
var validation_result = that.validators[j].validate(values[i], that);
if (!validation_result.valid) {
that.valid = false;
var row_index = that.widget.get_saved_value_row_index(i);
that.widget.show_child_error(row_index, validation_result.message);
break;
}
}
}
return that.valid;
}; };
return that; return that;

View File

@ -351,7 +351,7 @@ IPA.multivalued_text_widget = function(spec) {
for(var i=0; i<that.rows.length; i++) { for(var i=0; i<that.rows.length; i++) {
var row = that.rows[i]; var row = that.rows[i];
row.widget.hide_undo(); row.widget.hide_undo();
if(row.is_new) row.remove_link.show(); row.remove_link.show();
} }
}; };
@ -365,6 +365,31 @@ IPA.multivalued_text_widget = function(spec) {
that.show_undo(); that.show_undo();
}; };
that.hide_error = function() {
that.widget_hide_error();
for (var i=0; i<that.rows.length; i++) {
that.rows[i].widget.hide_error();
}
};
that.show_child_error = function(index, error) {
that.rows[index].widget.show_error(error);
};
that.get_saved_value_row_index = function(index) {
for (var i=0; i<that.rows.length;i++) {
if(that.rows[i].deleted) index++;
if(i === index) return i;
}
return -1; //error state
};
that.save = function() { that.save = function() {
var values = []; var values = [];