diff --git a/productMods/edit/forms/js/customForm.js b/productMods/edit/forms/js/customForm.js index 91364ce1..2513c6cb 100644 --- a/productMods/edit/forms/js/customForm.js +++ b/productMods/edit/forms/js/customForm.js @@ -2,7 +2,7 @@ var customForm = { - requiredHintText: ' *', + onLoad: function() { @@ -15,9 +15,9 @@ var customForm = { this.existing = $('#existing'), this.addNew = $('#new'), this.entry = $('#entry'), - this.cancel = this.form.children('.cancel'), + this.cancel = this.form.find('.cancel'), this.requiredLegend = $('#requiredLegend'), - this.requiredHints = $('.requiredHint'), + this.requiredHints = this.form.find('.requiredHint'), // Read values used to control display this.editType = $("input[name='editType']").val(), @@ -32,9 +32,16 @@ var customForm = { } }, - // Restore the form to its initial state when returning to step 1 - resetAddForm: function() { + // Set up add form on page load, or when returning to initial state + // (The latter is not yet implemented, but we are preparing for it. Note + // that initializations to occur ONLY on page load are done in the onLoad() method.) + // RY *** SOME of this will be shared with the edit form - figure out which + initAddForm: function() { + + // Reset form to initial state + // Resetting should only need to be done after we've gone to step 2 and back to step 1, + // but for some reason it can be required on a page reload as well. // Clear all form data and error messages $('input:text').val(''); $('.error').text(''); @@ -43,19 +50,12 @@ var customForm = { this.cancel.unbind('click'); this.button.unbind('click'); - removeRequiredHints(); + // RY Make toggleRequiredHints take multiple args + //this.toggleRequiredHints('remove', this.existing, this.addNew); + this.toggleRequiredHints('remove', this.addNew, this.existing); + //this.toggleRequiredHints('remove', this.addNew); + // end reset - initAddForm(); - - return false; - }, - - // Set up add form on page load, or when returning to initial state - // (The latter is not yet implemented, but we are preparing for it. Note - // that initializations to occur ONLY on page load are done in the onLoad() method.) - // RY *** SOME of this will be shared with the edit form - figure out which - initAddForm: function() { - // Step 1 of the form this.addNewLink.show(); this.existing.show(); @@ -72,12 +72,11 @@ var customForm = { customForm.showFields(customForm.addNew); customForm.entry.show(); customForm.requiredLegend.show(); + customForm.button.val('Create ' + customForm.entryType + ' & ' + customForm.newType); customForm.button.unbind('click'); - // RY This would return us to step 1, but it's not working - //customForm.cancel.unbind('click'); - //customForm.cancel.bind('click', customForm.resetAddForm); + customForm.doCancel(); }); // button => step 2a @@ -86,12 +85,11 @@ var customForm = { customForm.showFields(customForm.existing); customForm.addNewLink.hide(); customForm.requiredLegend.show(); + $(this).val('Create ' + customForm.entryType); $(this).unbind('click'); - // RY This would return us to step 1, but it's not working - //customForm.cancel.unbind('click'); - //customForm.cancel.bind('click', customForm.resetAddForm); + customForm.doCancel(); return false; }); @@ -100,36 +98,41 @@ var customForm = { initEditForm: function() { }, - - // Add required hints to required fields. - // Use when the non-Javascript version should not show the required hint, - // because the field is not required in that version. - addRequiredHints: function(el) { - - var labelText; - - el.children('label.required').each(function() { - labelText = $(this).html(); - $(this).html(labelText + customForm.requiredHintText); - }); - - }, - // We will need to remove some of the required hints when we return to step 1. - // Not used for now. - removeRequiredHints: function(el) { - var labelText; + // Add required hints to required fields in element array elArray. + // Use when the non-Javascript version should not show the required hint, + // because the field is not required in that version. + // Arguments: action = 'add' or 'remove' + // Varargs: element(s) + toggleRequiredHints: function(action /* elements */) { + var labelText, + newLabelText, + requiredHintText = ' *'; + + for (var i = 1; i < arguments.length; i++) { + arguments[i].find('label.required').each(function() { + labelText = $(this).html(); + newLabelText = action == 'add' ? labelText + requiredHintText : + labelText.replace(requiredHintText, ''); + $(this).html(newLabelText); + }); + } - el.children('label.required').each(function() { - labelText = $(this).html(); - $(this).html(labelText.replace(customForm.requiredHintText, '')); - }); }, showFields: function(el) { el.show(); - this.addRequiredHints(el); + this.toggleRequiredHints('add', el); }, + + // Add event listener to the cancel link in step 2 + doCancel: function() { + this.cancel.unbind('click'); + this.cancel.bind('click', function() { + customForm.initAddForm(); + return false; + }); + } }; diff --git a/productMods/edit/forms/personHasPositionHistory.jsp b/productMods/edit/forms/personHasPositionHistory.jsp index 476f4c05..e862ebb0 100644 --- a/productMods/edit/forms/personHasPositionHistory.jsp +++ b/productMods/edit/forms/personHasPositionHistory.jsp @@ -294,8 +294,8 @@ )); request.setAttribute("customJs", customJs); - List customCss = new ArrayList(Arrays.asList("forms/css/customForm.css", - "forms/css/personHasPositionHistory.css" + List customCss = new ArrayList(Arrays.asList("forms/css/customForm.css" + , "forms/css/personHasPositionHistory.css" )); request.setAttribute("customCss", customCss); %>