}
},
+ isRequired : function() {
+ return (
+ !this.readOnly && (
+ this.idlField.required || (
+ this.dijitArgs && (
+ this.dijitArgs.required || this.dijitArgs.regExp
+ )
+ )
+ )
+ );
+ },
+
build : function(onload) {
if(this.widgetValue == null)
getFieldValue : function(field) {
for(var i in this.fieldList) {
- if(field == this.fieldList[i].name)
- return this.fieldList[i].widget.getFormattedValue();
+ if(field == this.fieldList[i].name) {
+ var val = this.fieldList[i].widget.getFormattedValue();
+ if (val == null && /* XXX stricter check needed? */
+ this.fieldList[i].widget.isRequired()) {
+ throw new Error("req");
+ }
+ return val;
+ }
}
},
var fields = this.getFields();
if(this.mode == 'create')
this.fmObject = new fieldmapper[this.fmClass]();
- for(var idx in fields)
- this.fmObject[fields[idx]](this.getFieldValue(fields[idx]));
+ try {
+ for(var idx in fields) {
+ this.fmObject[fields[idx]](
+ this.getFieldValue(fields[idx])
+ );
+ }
+ } catch (E) {
+ if (E.message == "req") /* req'd field set to null. bail. */
+ return;
+ else /* something else went wrong? */
+ throw E;
+ }
if(this.mode == 'create' && this.fmIDL.pkey_sequence)
this.fmObject[this.fmIDL.pkey](null);
if (typeof(this.onSubmit) == "function") {
fieldOrder="['subscription','label','holding_lib']"
suppressFields="['record_entry','subscription','receive_call_number','bind_call_number','bind_unit_template']"
suppressEditFields="['record_entry','receive_call_number','bind_call_number','bind_unit_template']"
+ requiredFields="['receive_unit_template']"
fmClass="sdist"
query="{id: '*'}"
editOnEnter="true"