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
- or + or