summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Young <ayoung@redhat.com>2011-06-27 15:57:40 -0400
committerAdam Young <ayoung@redhat.com>2011-06-27 20:15:56 -0400
commit6e967d8fe709150d44b9af8df7312641a8747acf (patch)
tree829f50ece4af03d10a9965dcc778da9f6a29949d
parentd2d5278c52650cb90f1d77ac748f0a73f401bf5a (diff)
downloadfreeipa-6e967d8fe709150d44b9af8df7312641a8747acf.zip
freeipa-6e967d8fe709150d44b9af8df7312641a8747acf.tar.gz
freeipa-6e967d8fe709150d44b9af8df7312641a8747acf.tar.xz
validate required fields https://fedorahosted.org/freeipa/ticket/1329
overides required with optional.
-rw-r--r--install/ui/add.js4
-rw-r--r--install/ui/dialog.js2
-rw-r--r--install/ui/widget.js8
3 files changed, 12 insertions, 2 deletions
diff --git a/install/ui/add.js b/install/ui/add.js
index eb44843..50b6124 100644
--- a/install/ui/add.js
+++ b/install/ui/add.js
@@ -116,6 +116,10 @@ IPA.add_dialog = function (spec) {
var fields = that.fields.values;
for (var i=0; i<fields.length; i++) {
+ fields[i].validate();
+ }
+
+ for (i=0; i<fields.length; i++) {
field = fields[i];
if (!field.valid) return;
diff --git a/install/ui/dialog.js b/install/ui/dialog.js
index f4aa718..4ca38a9 100644
--- a/install/ui/dialog.js
+++ b/install/ui/dialog.js
@@ -344,8 +344,6 @@ IPA.dialog = function(spec) {
var factory = field_spec.factory || IPA.text_widget;
field = factory(field_spec);
- field.optional = field_spec.optional || false;
-
/* This is a bit of a hack, and is here to support ACI
permissions. The target section is a group of several
widgets together. It makes more sense to do them as a
diff --git a/install/ui/widget.js b/install/ui/widget.js
index 38826ee..344d701 100644
--- a/install/ui/widget.js
+++ b/install/ui/widget.js
@@ -39,6 +39,8 @@ IPA.widget = function(spec) {
that.disabled = spec.disabled;
that.hidden = spec.hidden;
that.conditional = spec.conditional;
+ that.optional = spec.optional || false;
+
// read_only is set during initialization
that.read_only = spec.read_only;
@@ -79,6 +81,12 @@ IPA.widget = function(spec) {
var values = that.save();
if (!values || !values.length) {
+ if (that.param_info &&
+ that.param_info.required &&
+ !that.optional) {
+ that.valid = false;
+ that.show_error('required field');
+ }
return;
}