diff --git a/productMods/edit/forms/js/customForm.js b/productMods/edit/forms/js/customForm.js
index 0f4f38db..f439a99c 100644
--- a/productMods/edit/forms/js/customForm.js
+++ b/productMods/edit/forms/js/customForm.js
@@ -1,7 +1,450 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
-/* Contains utility methods for all custom form types. */
+/* RY In a later iteration of the custom form Javascript, we'll create a customForm object
+ * with subclasses for one-step and two-step forms. The parent object will contain
+ * the utilities used by all form types.
+ */
-/* RY In a later iteration of the custom form Javascript, this will be the parent object, and all the custom form types
- * are subclasses.
- */
\ No newline at end of file
+/* Two-step custom form workflow:
+ *
+ * ADD new property form
+ * Step 1: Initial step, with choice to select existing or add new secondary individual.
+ * Displays:
+ * - On page load, unless there are validation error messages in the form
+ * - if there are validation error messages in the form, we are returning from a failed
+ * submission, and will go directly to view 2 to display the error messages.
+ * - After cancelling out of step 2
+ *
+ * Step 2: Main data entry step
+ * Displays:
+ * - On page load after an attempted submission that fails validation
+ * - After clicking button or add new link in view 1
+ * Has three view variations:
+ * - Select an existing secondary individual view
+ * - Add new secondary individual view
+ * - Combined view, if we are returning from a failed validation and can't determine
+ * which variant of view 2 we had submitted the form from. Contains the select
+ * existing element plus the add new link.
+ *
+ * EDIT existing property form
+ * Looks like add form step 2 except shows add new link
+ * Has same three view variants as step 2 add form
+ *
+ *
+ * We're jerry-rigging one-step forms into the two-step form process due to time constraints.
+ * In a later iteration of the custom form Javascript, we'll create a customForm object
+ * with subclasses for one-step and two-step forms. The parent object will contain
+ * the utilities used by all form types.
+ *
+ * One-step custom form workflow:
+ *
+ * Has three view variations:
+ * - Select an existing secondary individual view
+ * - Add new secondary individual view
+ * - Combined view, if we are returning from a failed validation and can't determine
+ * which variant of the view we had submitted the form from. Contains the select
+ * existing element plus the add new link.
+ */
+
+
+var customForm = {
+
+ onLoad: function() {
+
+ this.initObjects();
+ this.adjustForJs();
+ this.initForm();
+ },
+
+ // On page load, create references within the customForm scope to DOM elements.
+ // NB These must be assigned after the elements have been loaded onto the page.
+ initObjects: function() {
+
+ this.form = $('#content form');
+ this.button = $('#submit');
+ this.requiredLegend = $('#requiredLegend');
+
+ // These may need to be changed to classes rather than ids, if there are
+ // multiple sets of divs to show/hide during the workflow.
+ this.addNewLink = $('.addNewLink');
+ this.existing = $('.existing');
+ this.addNew = $('.new');
+ this.entry = $('.entry');
+ this.existingOrNew = $('.existingOrNew');
+
+ this.cancel = this.form.find('.cancel');
+ this.requiredHints = this.form.find('.requiredHint');
+
+ this.close = this.form.find('.close');
+
+ // Read values used to control display
+ this.editType = $("input[name='editType']").val();
+ this.entryType = $("input[name='entryType']").val().capitalizeWords();
+ this.secondaryType = $("input[name='secondaryType']").val().capitalizeWords();
+ this.formSteps = $("input[name='steps']").val();
+
+ },
+
+ // On page load, make changes to the non-Javascript version for the Javascript version.
+ // These are features that will NOT CHANGE throughout the workflow of the Javascript version..
+ adjustForJs: function() {
+
+ var selectExistingLabel = $('.existing label');
+ selectExistingLabel.html(selectExistingLabel.html().replace(/Select (Existing )?/, ''));
+
+ this.existingOrNew.hide();
+ },
+
+ initForm: function() {
+
+ //Adding a new entry
+ if (this.editType == 'add') {
+ this.initAddForm();
+ // Editing an existing entry
+ } else {
+ this.initEditForm();
+ }
+ },
+
+ /***** ADD form *****/
+
+ // Set up add form on page load, or when returning to initial state from step 2
+ initAddForm: function() {
+
+ this.defaultButtonText = 'Create ' + this.entryType;
+ this.addNewButtonText = 'Create ' + this.secondaryType + ' & ' + this.entryType;
+
+ // If there are validation errors on the page, we're returning from
+ // an attempted submission that failed validation, and we need to go
+ // directly to step 2.
+ if (this.findValidationErrors()) {
+ this.doAddFormStep2();
+ } else {
+ this.doAddFormStep1();
+ }
+ },
+
+ // Reset add form to initial state (step 1) after cancelling out of step 2
+ resetAddFormToStep1: function() {
+
+ customForm.resetForm();
+ customForm.doAddFormStep1();
+ },
+
+ // Set up the add form for step 1
+ doAddFormStep1: function() {
+
+ if (this.formSteps == 1) {
+ customForm.doAddFormStep2();
+ return;
+ }
+
+ customForm.existing.show();
+ customForm.addNewLink.show();
+ customForm.addNew.hide();
+ customForm.entry.hide();
+ customForm.requiredLegend.hide();
+ customForm.button.val('Continue');
+
+ // Assign event listeners
+ customForm.button.bind('click', function() {
+ customForm.doAddFormStep2SelectExisting();
+ return false;
+ });
+
+ customForm.addNewLink.bind('click', function() {
+ customForm.doAddFormStep2AddNew();
+ });
+ },
+
+ // Set up form when returning directly to step 2, such as after validation errors
+ // on the form submission.
+ doAddFormStep2: function() {
+
+ var view = customForm.getPreviousViewFromFormData();
+
+ switch (view) {
+ case "existing": { fn = this.doAddFormStep2SelectExisting; break; }
+ case "addNew": { fn = this.doAddFormStep2AddNew; break; }
+ default: { fn = this.doAddFormStep2Combined; break; }
+ }
+
+ fn.call();
+ },
+
+ // Most methods below use 'customForm' rather than 'this', because 'this' doesn't reference
+ // customForm when the method is called from an event listener. Only if the method never
+ // gets called from an event listener can we use the 'this' reference.
+
+ // Step 2: selecting an existing individual
+ doAddFormStep2SelectExisting: function() {
+
+ customForm.showSelectExistingFields();
+ customForm.doButtonForStep2(customForm.defaultButtonText);
+ customForm.doCancelForStep2();
+ },
+
+ // Step 2: adding a new individual
+ doAddFormStep2AddNew: function() {
+
+ customForm.showAddNewFields();
+ customForm.doButtonForStep2(customForm.addNewButtonText);
+ customForm.doCancelForStep2();
+ },
+
+ // Step 2: combined view, when we are returning from validation errors and we
+ // can't determine which view of the form we had been on.
+ doAddFormStep2Combined: function() {
+
+ customForm.showCombinedFields();
+ customForm.doAddNewLink(customForm.addNewButtonText);
+ customForm.doButtonForStep2(customForm.defaultButtonText);
+ customForm.doCancelForStep2();
+ },
+
+
+ /***** Edit form *****/
+
+ initEditForm: function() {
+
+ var view;
+
+ this.defaultButtonText = 'Save Changes';
+ this.addNewButtonText = 'Create ' + this.secondaryType + ' & Save Changes';
+
+ // If there are validation errors on the page, we're returning from
+ // an attempted submission that failed validation, and we need to go
+ // directly to step 2.
+ if (this.findValidationErrors()) {
+ view = this.getPreviousViewFromFormData();
+
+ switch (view) {
+ case "existing": { fn = this.doEditFormSelectExisting; break; }
+ case "addNew": { fn = this.doEditFormAddNew; break; }
+ default: { fn = this.doEditFormDefaultView; break; }
+ }
+ } else {
+ fn = this.doEditFormDefaultView;
+ }
+ fn.call(customForm);
+ },
+
+ doEditFormSelectExisting: function() {
+ this.showSelectExistingFields();
+ this.button.val(this.defaultButtonText);
+ },
+
+ doEditFormAddNew: function() {
+ this.showAddNewFields();
+ this.button.val(this.addNewButtonText);
+ },
+
+ doEditFormDefaultView: function() {
+ this.showCombinedFields();
+ this.button.val(this.defaultButtonText);
+ this.doAddNewLink(this.addNewButtonText);
+ },
+
+ /***** Utilities *****/
+
+ unbindEventListeners: function() {
+ customForm.cancel.unbind('click');
+ customForm.button.unbind('click');
+ customForm.addNewLink.unbind('click');
+ },
+
+ clearFormData: function() {
+ customForm.clearFields(customForm.form);
+ },
+
+ // Clear data from form elements in element el
+ clearFields: function(el) {
+ el.find(':input[type!="hidden"][type!="submit"][type!="button"]').val('');
+
+ // For now we can remove the error elements. Later we may include them in
+ // the markup, for customized positioning, in which case we will empty them
+ // but not remove them here. See findValidationErrors().
+ //this.form.find('.validationError').text('');
+ el.find('.validationError').remove();
+ },
+
+ // Add required hints to required fields in a list of elements.
+ // Use when the non-Javascript version should not show the required hint,
+ // because the field is not required in that version (e.g., it's one of two
+ // fields, where one of the two must be filled in but neither one is required).
+ // Arguments: action = 'add' or 'remove'
+ // Varargs: element(s)
+ toggleRequiredHints: function(action /* elements */) {
+
+ var labelText,
+ newLabelText,
+ requiredHintText = ' *',
+ numArgs = arguments.length;
+
+ for (var i = 1; i < numArgs; i++) {
+ arguments[i].find('label.required').each(function() {
+ labelText = $(this).html();
+ newLabelText = action == 'add' ? labelText + requiredHintText :
+ labelText.replace(requiredHintText, '');
+ $(this).html(newLabelText);
+ });
+ }
+ },
+
+ showFields: function(el) {
+ el.show();
+ customForm.toggleRequiredHints('add', el);
+ },
+
+ hideFields: function(el) {
+ // Clear any input, so if we reshow the element the input won't still be there.
+ customForm.clearFields(el);
+ el.hide();
+ },
+
+ // Add event listener to the submit button in step 2
+ doButtonForStep2: function(text) {
+ customForm.button.unbind('click');
+ customForm.button.val(text);
+ },
+
+ // Add event listener to the cancel link in step 2
+ doCancelForStep2: function() {
+
+ if (customForm.formSteps == 1) { return; }
+
+ customForm.cancel.unbind('click');
+ customForm.cancel.bind('click', function() {
+ customForm.resetAddFormToStep1();
+ return false;
+ });
+ },
+
+ doAddNewLink: function(buttonText) {
+
+ customForm.addNewLink.unbind('click');
+ customForm.addNewLink.bind('click', function() {
+ $(this).hide();
+ // Make sure to clear out what's in the existing select element,
+ // else it could be submitted even when hidden.
+ customForm.hideFields(customForm.existing);
+ customForm.showFields(customForm.addNew);
+
+ if (buttonText) {
+ customForm.button.val(buttonText);
+ }
+ });
+ },
+
+ // Return true iff there are validation errors on the form
+ findValidationErrors: function() {
+
+ return customForm.form.find('.validationError').length > 0;
+
+// RY For now, we just need to look for the presence of the error elements.
+// Later, however, we may generate empty error messages in the markup, for
+// customized positioning, in which case we need to look for whether they have
+// content. See clearFormData().
+// var foundErrors = false,
+// errors = this.form.find('.validationError'),
+// numErrors = errors.length,
+// i,
+// error;
+//
+// for (i = 0; foundErrors == false && i < numErrors; i++) {
+// error = errors[i];
+// if (error.html() != '') {
+// foundErrors = true;
+// }
+// }
+//
+// return foundErrors;
+ },
+
+ resetForm: function() {
+
+ // Clear all form data and error messages
+ customForm.clearFormData();
+
+ // Remove previously bound event handlers
+ customForm.unbindEventListeners();
+
+ // Remove required field hints
+ customForm.toggleRequiredHints('remove', customForm.addNew, customForm.existing);
+ },
+
+ showSelectExistingFields: function() {
+
+ customForm.showFields(customForm.existing);
+ customForm.addNewLink.hide();
+ customForm.addNew.hide();
+ customForm.showFieldsForAllViews();
+ },
+
+ showAddNewFields: function() {
+
+ customForm.existing.hide();
+ customForm.addNewLink.hide();
+ customForm.showFields(customForm.addNew);
+ customForm.showFieldsForAllViews();
+ },
+
+ // This version of the form shows both the existing select and add new link.
+ // Used when loading edit form, and when returning from failed submission
+ // of add form when we can't determine which view was being used to make
+ // the submission.
+ showCombinedFields: function() {
+
+ customForm.showFields(customForm.existing);
+ customForm.addNewLink.show();
+ customForm.addNew.hide();
+ customForm.showFieldsForAllViews();
+ },
+
+ // Show fields that appear in all views for add form step 2 and edit form
+ showFieldsForAllViews: function() {
+ customForm.entry.show();
+ customForm.requiredLegend.show();
+ },
+
+ // When returning to the add/edit form after a failed form submission (due to
+ // validation errors), attempt to determine which view the form was on when
+ // submitted, based on the form data present.
+ getPreviousViewFromFormData: function() {
+
+ // NB ':input' selector includes select elements
+ var existingInputs = this.existing.find(':input'),
+ existingInputsLen = existingInputs.length,
+ addNewInputs = this.addNew.find(':input'),
+ addNewInputsLen = addNewInputs.length,
+ input,
+ i,
+ view = null;
+
+ // If a value was entered in the addNew section, go back to the addNew view
+ for (i = 0; i < addNewInputsLen; i++) {
+ input = $(addNewInputs[i]);
+ if (input.val() != '') {
+ view = "addNew";
+ break;
+ }
+ }
+
+ // If a value was selected in the existing section, go back to the existing view
+ if (view === null) {
+ for (i = 0; i < existingInputsLen; i++) {
+ input = $(existingInputs[i]);
+ if (input.val() != '') {
+ view = "existing";
+ break;
+ }
+ }
+ }
+ return view;
+ }
+
+};
+
+$(document).ready(function(){
+ customForm.onLoad();
+});
diff --git a/productMods/edit/forms/js/customFormOneStep.js b/productMods/edit/forms/js/customFormOneStep.js
index ea9eb9e7..586e32d0 100644
--- a/productMods/edit/forms/js/customFormOneStep.js
+++ b/productMods/edit/forms/js/customFormOneStep.js
@@ -31,11 +31,11 @@ var customFormOneStep = {
// These may need to be changed to classes rather than ids, if there are
// multiple sets of divs to show/hide during the workflow.
- this.addNewLink = $('#addNewLink');
- this.existing = $('#existing');
- this.addNew = $('#new');
+ this.addNewLink = $('.addNewLink');
+ this.existing = $('.existing');
+ this.addNew = $('.new');
this.entry = $('.entry');
- this.existingOrNew = $('#existingOrNew');
+ this.existingOrNew = $('.existingOrNew');
this.cancel = this.form.find('.cancel');
this.requiredHints = this.form.find('.requiredHint');
@@ -53,7 +53,7 @@ var customFormOneStep = {
// These are features that will NOT CHANGE throughout the workflow of the Javascript version..
adjustForJs: function() {
- var selectExistingLabel = $('#existing label');
+ var selectExistingLabel = $('.existing label');
selectExistingLabel.html(selectExistingLabel.html().replace(/Select (Existing )?/, ''));
this.existingOrNew.hide();
@@ -82,7 +82,7 @@ var customFormOneStep = {
// an attempted submission that failed validation, and we need to go
// directly to step 2.
if (this.findValidationErrors()) {
- this.doAddFormStep2();
+ this.doAddFormStep2();
} else {
this.doAddFormStep1();
}
diff --git a/productMods/edit/forms/js/customFormTwoStep.js b/productMods/edit/forms/js/customFormTwoStep.js
index de3e1518..3aff90ff 100644
--- a/productMods/edit/forms/js/customFormTwoStep.js
+++ b/productMods/edit/forms/js/customFormTwoStep.js
@@ -1,6 +1,9 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
-/* RY In a later iteration of the custom form Javascript, this will subclass the customForm object. */
+/* RY In a later iteration of the custom form Javascript, we'll create a customForm object
+ * with subclasses for one-step and two-step forms. The parent object will contain
+ * the utilities used by all form types.
+ */
/* Two-step custom form workflow:
*
@@ -27,9 +30,19 @@
* Looks like add form step 2 except shows add new link
* Has same three view variants as step 2 add form
*
+ *
+ * One-step custom form workflow:
+ *
+ * Has three view variations:
+ * - Select an existing secondary individual view
+ * - Add new secondary individual view
+ * - Combined view, if we are returning from a failed validation and can't determine
+ * which variant of the view we had submitted the form from. Contains the select
+ * existing element plus the add new link.
*/
+
-var customFormTwoStep = {
+var customForm = {
onLoad: function() {
@@ -38,7 +51,7 @@ var customFormTwoStep = {
this.initForm();
},
- // On page load, create references within the customFormTwoStep scope to DOM elements.
+ // On page load, create references within the customForm scope to DOM elements.
// NB These must be assigned after the elements have been loaded onto the page.
initObjects: function() {
@@ -57,10 +70,13 @@ var customFormTwoStep = {
this.cancel = this.form.find('.cancel');
this.requiredHints = this.form.find('.requiredHint');
+ this.close = this.form.find('.close');
+
// Read values used to control display
this.editType = $("input[name='editType']").val();
this.entryType = $("input[name='entryType']").val().capitalizeWords();
this.secondaryType = $("input[name='secondaryType']").val().capitalizeWords();
+ this.formSteps = $("input[name='steps']").val();
},
@@ -96,7 +112,7 @@ var customFormTwoStep = {
// If there are validation errors on the page, we're returning from
// an attempted submission that failed validation, and we need to go
// directly to step 2.
- if (this.findValidationErrors()) {
+ if (this.formSteps == 1 || this.findValidationErrors()) {
this.doAddFormStep2();
} else {
this.doAddFormStep1();
@@ -106,30 +122,30 @@ var customFormTwoStep = {
// Reset add form to initial state (step 1) after cancelling out of step 2
resetAddFormToStep1: function() {
- customFormTwoStep.resetForm();
- customFormTwoStep.doAddFormStep1();
+ customForm.resetForm();
+ customForm.doAddFormStep1();
},
// Set up the add form for step 1
doAddFormStep1: function() {
- customFormTwoStep.existing.show();
- customFormTwoStep.addNewLink.show();
- customFormTwoStep.addNew.hide();
- customFormTwoStep.entry.hide();
- customFormTwoStep.requiredLegend.hide();
- customFormTwoStep.button.val('Continue');
+ customForm.existing.show();
+ customForm.addNewLink.show();
+ customForm.addNew.hide();
+ customForm.entry.hide();
+ customForm.requiredLegend.hide();
+ customForm.button.val('Continue');
// Assign event listeners
//this.button.unbind('click'); // RY *** Don't need this if we've done a reset
- customFormTwoStep.button.bind('click', function() {
- customFormTwoStep.doAddFormStep2SelectExisting();
+ customForm.button.bind('click', function() {
+ customForm.doAddFormStep2SelectExisting();
return false;
});
//this.addNewLink.unbind('click'); // RY *** Don't need this if we've done a reset
- customFormTwoStep.addNewLink.bind('click', function() {
- customFormTwoStep.doAddFormStep2AddNew();
+ customForm.addNewLink.bind('click', function() {
+ customForm.doAddFormStep2AddNew();
});
},
@@ -137,7 +153,7 @@ var customFormTwoStep = {
// on the form submission.
doAddFormStep2: function() {
- var view = customFormTwoStep.getPreviousViewFromFormData();
+ var view = customForm.getPreviousViewFromFormData();
switch (view) {
case "existing": { fn = this.doAddFormStep2SelectExisting; break; }
@@ -148,34 +164,34 @@ var customFormTwoStep = {
fn.call();
},
- // Most methods below use 'customFormTwoStep' rather than 'this', because 'this' doesn't reference
- // customFormTwoStep when the method is called from an event listener. Only if the method never
+ // Most methods below use 'customForm' rather than 'this', because 'this' doesn't reference
+ // customForm when the method is called from an event listener. Only if the method never
// gets called from an event listener can we use the 'this' reference.
// Step 2: selecting an existing individual
doAddFormStep2SelectExisting: function() {
- customFormTwoStep.showSelectExistingFields();
- customFormTwoStep.doButtonForStep2(customFormTwoStep.defaultButtonText);
- customFormTwoStep.doCancelForStep2();
+ customForm.showSelectExistingFields();
+ customForm.doButtonForStep2(customForm.defaultButtonText);
+ customForm.doCancelForStep2();
},
// Step 2: adding a new individual
doAddFormStep2AddNew: function() {
- customFormTwoStep.showAddNewFields();
- customFormTwoStep.doButtonForStep2(customFormTwoStep.addNewButtonText);
- customFormTwoStep.doCancelForStep2();
+ customForm.showAddNewFields();
+ customForm.doButtonForStep2(customForm.addNewButtonText);
+ customForm.doCancelForStep2();
},
// Step 2: combined view, when we are returning from validation errors and we
// can't determine which view of the form we had been on.
doAddFormStep2Combined: function() {
- customFormTwoStep.showCombinedFields();
- customFormTwoStep.doAddNewLink(customFormTwoStep.addNewButtonText);
- customFormTwoStep.doButtonForStep2(customFormTwoStep.defaultButtonText);
- customFormTwoStep.doCancelForStep2();
+ customForm.showCombinedFields();
+ customForm.doAddNewLink(customForm.addNewButtonText);
+ customForm.doButtonForStep2(customForm.defaultButtonText);
+ customForm.doCancelForStep2();
},
@@ -202,7 +218,7 @@ var customFormTwoStep = {
} else {
fn = this.doEditFormDefaultView;
}
- fn.call(customFormTwoStep);
+ fn.call(customForm);
},
doEditFormSelectExisting: function() {
@@ -224,13 +240,13 @@ var customFormTwoStep = {
/***** Utilities *****/
unbindEventListeners: function() {
- customFormTwoStep.cancel.unbind('click');
- customFormTwoStep.button.unbind('click');
- customFormTwoStep.addNewLink.unbind('click');
+ customForm.cancel.unbind('click');
+ customForm.button.unbind('click');
+ customForm.addNewLink.unbind('click');
},
clearFormData: function() {
- customFormTwoStep.clearFields(customFormTwoStep.form);
+ customForm.clearFields(customForm.form);
},
// Clear data from form elements in element el
@@ -269,43 +285,43 @@ var customFormTwoStep = {
showFields: function(el) {
el.show();
- customFormTwoStep.toggleRequiredHints('add', el);
+ customForm.toggleRequiredHints('add', el);
},
hideFields: function(el) {
// Clear any input, so if we reshow the element the input won't still be there.
- customFormTwoStep.clearFields(el);
+ customForm.clearFields(el);
el.hide();
},
// Add event listener to the submit button in step 2
doButtonForStep2: function(text) {
- customFormTwoStep.button.unbind('click');
- customFormTwoStep.button.val(text);
+ customForm.button.unbind('click');
+ customForm.button.val(text);
},
// Add event listener to the cancel link in step 2
doCancelForStep2: function() {
- customFormTwoStep.cancel.unbind('click');
- customFormTwoStep.cancel.bind('click', function() {
- customFormTwoStep.resetAddFormToStep1();
+ customForm.cancel.unbind('click');
+ customForm.cancel.bind('click', function() {
+ customForm.resetAddFormToStep1();
return false;
});
},
doAddNewLink: function(buttonText) {
- customFormTwoStep.addNewLink.unbind('click');
- customFormTwoStep.addNewLink.bind('click', function() {
+ customForm.addNewLink.unbind('click');
+ customForm.addNewLink.bind('click', function() {
$(this).hide();
// Make sure to clear out what's in the existing select element,
// else it could be submitted even when hidden.
- customFormTwoStep.hideFields(customFormTwoStep.existing);
- customFormTwoStep.showFields(customFormTwoStep.addNew);
+ customForm.hideFields(customForm.existing);
+ customForm.showFields(customForm.addNew);
if (buttonText) {
- customFormTwoStep.button.val(buttonText);
+ customForm.button.val(buttonText);
}
});
},
@@ -313,7 +329,7 @@ var customFormTwoStep = {
// Return true iff there are validation errors on the form
findValidationErrors: function() {
- return customFormTwoStep.form.find('.validationError').length > 0;
+ return customForm.form.find('.validationError').length > 0;
// RY For now, we just need to look for the presence of the error elements.
// Later, however, we may generate empty error messages in the markup, for
@@ -338,29 +354,29 @@ var customFormTwoStep = {
resetForm: function() {
// Clear all form data and error messages
- customFormTwoStep.clearFormData();
+ customForm.clearFormData();
// Remove previously bound event handlers
- customFormTwoStep.unbindEventListeners();
+ customForm.unbindEventListeners();
// Remove required field hints
- customFormTwoStep.toggleRequiredHints('remove', customFormTwoStep.addNew, customFormTwoStep.existing);
+ customForm.toggleRequiredHints('remove', customForm.addNew, customForm.existing);
},
showSelectExistingFields: function() {
- customFormTwoStep.showFields(customFormTwoStep.existing);
- customFormTwoStep.addNewLink.hide();
- customFormTwoStep.addNew.hide();
- customFormTwoStep.showFieldsForAllViews();
+ customForm.showFields(customForm.existing);
+ customForm.addNewLink.hide();
+ customForm.addNew.hide();
+ customForm.showFieldsForAllViews();
},
showAddNewFields: function() {
- customFormTwoStep.existing.hide();
- customFormTwoStep.addNewLink.hide();
- customFormTwoStep.showFields(customFormTwoStep.addNew);
- customFormTwoStep.showFieldsForAllViews();
+ customForm.existing.hide();
+ customForm.addNewLink.hide();
+ customForm.showFields(customForm.addNew);
+ customForm.showFieldsForAllViews();
},
// This version of the form shows both the existing select and add new link.
@@ -369,16 +385,16 @@ var customFormTwoStep = {
// the submission.
showCombinedFields: function() {
- customFormTwoStep.showFields(customFormTwoStep.existing);
- customFormTwoStep.addNewLink.show();
- customFormTwoStep.addNew.hide();
- customFormTwoStep.showFieldsForAllViews();
+ customForm.showFields(customForm.existing);
+ customForm.addNewLink.show();
+ customForm.addNew.hide();
+ customForm.showFieldsForAllViews();
},
// Show fields that appear in all views for add form step 2 and edit form
showFieldsForAllViews: function() {
- customFormTwoStep.entry.show();
- customFormTwoStep.requiredLegend.show();
+ customForm.entry.show();
+ customForm.requiredLegend.show();
},
// When returning to the add/edit form after a failed form submission (due to
@@ -420,5 +436,5 @@ var customFormTwoStep = {
};
$(document).ready(function(){
- customFormTwoStep.onLoad();
+ customForm.onLoad();
});
diff --git a/productMods/edit/forms/personHasEducationalBackground.jsp b/productMods/edit/forms/personHasEducationalBackground.jsp
index 4c213130..c088d668 100644
--- a/productMods/edit/forms/personHasEducationalBackground.jsp
+++ b/productMods/edit/forms/personHasEducationalBackground.jsp
@@ -131,7 +131,7 @@ core:organizationGrantingDegree (EducationalBackground : Organization) - no inve
?edBackgroundUri <${hasDegree}> ?existingDegreeUri }
- ?educationalBackgroundUri <${hasDegree}> ?degreeUri .
+ ?edBackgroundUri <${hasDegree}> ?degreeUri .
?degreeUri <${degreeFor}> ?edBackgroundUri .
@@ -193,11 +193,11 @@ core:organizationGrantingDegree (EducationalBackground : Organization) - no inve
"predicate" : ["predicate", "${predicateUriJson}" ],
"object" : ["edBackgroundUri", "${objectUriJson}", "URI" ],
- "n3required" : [ "${n3ForStmtToPerson}", "${degreeAssertion}", "${majorFieldAssertion}", "${yearAssertion}" ],
+ "n3required" : [ "${n3ForStmtToPerson}", "${majorFieldAssertion}", "${yearAssertion}" ],
"n3optional" : [ "${organizationUriAssertion}",
"${n3ForNewOrg}", "${newOrgNameAssertion}", "${newOrgTypeAssertion}",
- "${deptAssertion}", "${infoAssertion}" ],
+ "${deptAssertion}", "${infoAssertion}", "${degreeAssertion}" ],
"newResources" : { "edBackgroundUri" : "${defaultNamespace}",
"newOrg" : "${defaultNamespace}" },
@@ -222,7 +222,7 @@ core:organizationGrantingDegree (EducationalBackground : Organization) - no inve
"fields" : {
"degreeUri" : {
"newResource" : "false",
- "validators" : [ "nonempty" ],
+ "validators" : [ ],
"optionsType" : "INDIVIDUALS_VIA_VCLASS",
"literalOptions" : [ "Select one" ],
"predicateUri" : "",
@@ -348,8 +348,8 @@ core:organizationGrantingDegree (EducationalBackground : Organization) - no inve
<% }
- List customJs = new ArrayList(Arrays.asList("forms/js/customFormOneStep.js"
- //, "forms/js/customForm.js"
+ List customJs = new ArrayList(Arrays.asList("forms/js/customForm.js"
+ //, "forms/js/customFormOneStep.js"
));
request.setAttribute("customJs", customJs);
@@ -375,7 +375,7 @@ core:organizationGrantingDegree (EducationalBackground : Organization) - no inve