Rewrote placeholder substitution mechanism in custom forms to use jquery element data.

This commit is contained in:
rjy7 2010-09-03 21:06:30 +00:00
parent fde6fc116d
commit 1d71a7ccc6
2 changed files with 28 additions and 20 deletions

View file

@ -15,12 +15,12 @@ var addAuthorForm = {
}, },
disableFormInUnsupportedBrowsers: function() { disableFormInUnsupportedBrowsers: function() {
this.disableWrapper = $('#ie67DisableWrapper'); var disableWrapper = $('#ie67DisableWrapper');
// Check for unsupported browsers only if the element exists on the page // Check for unsupported browsers only if the element exists on the page
if (this.disableWrapper.length) { if (disableWrapper.length) {
if (vitro.browserUtils.isIELessThan8()) { if (vitro.browserUtils.isIELessThan8()) {
this.disableWrapper.show(); disableWrapper.show();
$('.noIE67').hide(); $('.noIE67').hide();
return true; return true;
} }

View file

@ -15,12 +15,12 @@ var customForm = {
}, },
disableFormInUnsupportedBrowsers: function() { disableFormInUnsupportedBrowsers: function() {
this.disableWrapper = $('#ie67DisableWrapper'); var disableWrapper = $('#ie67DisableWrapper');
// Check for unsupported browsers only if the element exists on the page // Check for unsupported browsers only if the element exists on the page
if (this.disableWrapper.length) { if (disableWrapper.length) {
if (vitro.browserUtils.isIELessThan8()) { if (vitro.browserUtils.isIELessThan8()) {
this.disableWrapper.show(); disableWrapper.show();
$('.noIE67').hide(); $('.noIE67').hide();
return true; return true;
} }
@ -43,7 +43,6 @@ var customForm = {
this.form = $('#content form'); this.form = $('#content form');
this.fullViewOnly = $('.fullViewOnly'); this.fullViewOnly = $('.fullViewOnly');
this.button = $('#submit'); this.button = $('#submit');
this.baseButtonText = this.button.val();
this.requiredLegend = $('#requiredLegend'); this.requiredLegend = $('#requiredLegend');
this.typeSelector = this.form.find('#typeSelector'); this.typeSelector = this.form.find('#typeSelector');
@ -55,7 +54,6 @@ var customForm = {
this.acUriReceiver = this.form.find('.acUriReceiver'); this.acUriReceiver = this.form.find('.acUriReceiver');
//this.acLabelReceiver = this.form.find('.acLabelReceiver'); //this.acLabelReceiver = this.form.find('.acLabelReceiver');
this.verifyMatch = this.form.find('.verifyMatch'); this.verifyMatch = this.form.find('.verifyMatch');
this.verifyMatchBaseHref = this.verifyMatch.attr('href');
this.acSelectorWrapper = this.acSelector.parent(); this.acSelectorWrapper = this.acSelector.parent();
this.or = $('span.or'); this.or = $('span.or');
@ -83,7 +81,7 @@ var customForm = {
this.initAutocomplete(); this.initAutocomplete();
this.initPlaceholderData(); this.initElementData();
this.initFormView(); this.initFormView();
@ -241,15 +239,23 @@ var customForm = {
}); });
}, },
initPlaceholderData: function() { // Store original or base text with elements that will have text substitutions.
// Generally the substitution cannot be made on the current value, since that value
// may have changed from the original. So we store the original text with the element to
// use as a base for substitutions.
initElementData: function() {
this.placeholderText = '###'; this.placeholderText = '###';
this.labelsWithPlaceholders = this.form.find('label, .label').filter(function() { this.labelsWithPlaceholders = this.form.find('label, .label').filter(function() {
return $(this).html().match(customForm.placeholderText); return $(this).html().match(customForm.placeholderText);
}); });
this.labelsWithPlaceholders.each(function(){ this.labelsWithPlaceholders.each(function(){
$(this).data('originalLabel', $(this).html()); $(this).data('baseText', $(this).html());
}); });
this.button.data('baseText', this.button.val());
this.verifyMatch.data('baseHref', this.verifyMatch.attr('href'));
}, },
getAcFilter: function() { getAcFilter: function() {
@ -335,7 +341,7 @@ var customForm = {
this.acUriReceiver.val(uri); this.acUriReceiver.val(uri);
this.acSelector.val(label); this.acSelector.val(label);
this.acSelectionInfo.html(label); this.acSelectionInfo.html(label);
this.verifyMatch.attr('href', this.verifyMatchBaseHref + uri); this.verifyMatch.attr('href', this.verifyMatch.data('baseHref') + uri);
this.setButtonText('existing'); this.setButtonText('existing');
@ -356,7 +362,7 @@ var customForm = {
this.acSelector.val(''); this.acSelector.val('');
this.acUriReceiver.val(''); this.acUriReceiver.val('');
this.acSelectionInfo.html(''); this.acSelectionInfo.html('');
this.verifyMatch.attr('href', this.verifyMatchBaseHref); this.verifyMatch.attr('href', this.verifyMatch.data('baseHref'));
if (this.formSteps > 1) { if (this.formSteps > 1) {
this.acSelection.find('label').html('Selected '); this.acSelection.find('label').html('Selected ');
@ -394,7 +400,7 @@ var customForm = {
var typeName = this.getTypeNameForLabels(); var typeName = this.getTypeNameForLabels();
this.labelsWithPlaceholders.each(function() { this.labelsWithPlaceholders.each(function() {
var newLabel = $(this).data('originalLabel').replace(customForm.placeholderText, typeName); var newLabel = $(this).data('baseText').replace(customForm.placeholderText, typeName);
$(this).html(newLabel); $(this).html(newLabel);
}); });
@ -404,7 +410,9 @@ var customForm = {
// or a new related individual. Called when setting up full view of form, and after // or a new related individual. Called when setting up full view of form, and after
// an autocomplete selection. // an autocomplete selection.
setButtonText: function(newOrExisting) { setButtonText: function(newOrExisting) {
var typeText, buttonText; var typeText,
buttonText,
baseButtonText = this.button.data('baseText');
// Edit mode button doesn't change, so it's specified in the jsp // Edit mode button doesn't change, so it's specified in the jsp
if (this.editMode === 'edit') { if (this.editMode === 'edit') {
@ -417,16 +425,16 @@ var customForm = {
if (newOrExisting === 'new') { if (newOrExisting === 'new') {
if (this.submitButtonTextType == 'compound') { // use == to tolerate nulls if (this.submitButtonTextType == 'compound') { // use == to tolerate nulls
// e.g., 'Create Grant & Principal Investigator' // e.g., 'Create Grant & Principal Investigator'
buttonText = 'Create ' + typeText + ' & ' + this.baseButtonText; buttonText = 'Create ' + typeText + ' & ' + baseButtonText;
} else { } else {
// e.g., 'Create Publication' // e.g., 'Create Publication'
buttonText = 'Create ' + this.baseButtonText; buttonText = 'Create ' + baseButtonText;
} }
} }
// Using existing related individual // Using existing related individual
else { else {
// In repair mode, baseButtonText is "Edit X". Keep that for this case. // In repair mode, baseButtonText is "Edit X". Keep that for this case.
buttonText = this.editMode == 'repair' ? this.baseButtonText : 'Add ' + this.baseButtonText; buttonText = this.editMode == 'repair' ? baseButtonText : 'Add ' + baseButtonText;
} }
this.button.val(buttonText); this.button.val(buttonText);