Ejegg has uploaded a new change for review. https://gerrit.wikimedia.org/r/284627
Change subject: DRY up validate_personal ...................................................................... DRY up validate_personal It's got way nicer behavior than validate_form. Start grooming it for use with mustache forms to get them off popup alerts. Bug: T107363 Change-Id: I944246c74eb90b00cf59b0ddbfd2018d2d2b0de2 --- M modules/validate_input.js 1 file changed, 48 insertions(+), 49 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/DonationInterface refs/changes/27/284627/1 diff --git a/modules/validate_input.js b/modules/validate_input.js index ae282e6..1a6e700 100644 --- a/modules/validate_input.js +++ b/modules/validate_input.js @@ -101,17 +101,31 @@ var value, stateField, selectedState, countryField, $emailAdd, invalid, apos, dotpos, domain, errorsPresent = false, currField = '', - i = 0, + i, fields = [ 'fname', 'lname', 'street', 'city', 'zip', 'emailAdd' ], - msgFields = [ 'fnameMsg', 'lnameMsg', 'streetMsg', 'cityMsg', 'zipMsg', 'emailAddMsg' ], + errorTemplate = mediaWiki.msg( 'donate_interface-error-msg' ), numFields = fields.length, invalids = [ '..', '/', '\\', ',', '<', '>' ]; + function clearError( field ) { + $( '#' + field ).removeClass( 'errorHighlight' ); + $( '#' + field + 'Msg' ) + .removeClass( 'errorMsg' ) + .addClass( 'errorMsgHide' ); + } + + function setError( field, message ) { + errorsPresent = true; + $( '#' + field ).addClass( 'errorHighlight' ); + $( '#' + field + 'Msg' ) + .removeClass( 'errorMsgHide' ) + .addClass( 'errorMsg' ) + .text( message ); + } + for ( i = 0; i < numFields; i++ ) { if ( $( '#' + fields[ i ] ).length > 0 ) { // Make sure field exists - $( '#' + msgFields[ i ] ).removeClass( 'errorMsg' ); - $( '#' + msgFields[ i ] ).addClass( 'errorMsgHide' ); - $( '#' + fields[ i ] ).removeClass( 'errorHighlight' ); + clearError( fields[ i ] ); // See if the field is empty or equal to the placeholder value = document.getElementById( fields[ i ] ).value; if ( @@ -122,11 +136,10 @@ ) ) { currField = mediaWiki.msg( 'donate_interface-error-msg-' + fields[ i ] ); - errorsPresent = true; - $( '#' + fields[ i ] ).addClass( 'errorHighlight' ); - $( '#' + msgFields[ i ] ).removeClass( 'errorMsgHide' ); - $( '#' + msgFields[ i ] ).addClass( 'errorMsg' ); - $( '#' + msgFields[ i ] ).text( mediaWiki.msg( 'donate_interface-error-msg' ).replace( '$1', currField ) ); + setError( + fields[ i ], + errorTemplate.replace( '$1', currField ) + ); } } } @@ -135,42 +148,34 @@ if ( stateField && stateField.type === 'select-one' ) { // state is a dropdown select selectedState = stateField.options[ stateField.selectedIndex ].value; if ( selectedState === 'YY' || !$.trim( selectedState ) ) { - errorsPresent = true; - $( '#state' ).addClass( 'errorHighlight' ); - $( '#stateMsg' ).removeClass( 'errorMsgHide' ); - $( '#stateMsg' ).addClass( 'errorMsg' ); - $( '#stateMsg' ).text( mediaWiki.msg( 'donate_interface-error-msg' ).replace( '$1', mediaWiki.msg( 'donate_interface-state-province' ) ) ); + setError( + 'state', + errorTemplate.replace( '$1', mediaWiki.msg( 'donate_interface-state-province' ) ) + ); } else { - $( '#state' ).removeClass( 'errorHighlight' ); - $( '#stateMsg' ).removeClass( 'errorMsg' ); - $( '#stateMsg' ).addClass( 'errorMsgHide' ); + clearError( 'state' ); } } + // FIXME: wouldn't $( '#country' ).val() work for both types? countryField = document.getElementById( 'country' ); if ( countryField && countryField.type === 'select-one' ) { // country is a dropdown select if ( !$.trim( countryField.options[ countryField.selectedIndex ].value ) ) { - errorsPresent = true; - $( '#country' ).addClass( 'errorHighlight' ); - $( '#countryMsg' ).removeClass( 'errorMsgHide' ); - $( '#countryMsg' ).addClass( 'errorMsg' ); - $( '#countryMsg' ).text( mediaWiki.msg( 'donate_interface-error-msg-country' ) ); + setError( + 'country', + mediaWiki.msg( 'donate_interface-error-msg-country' ) + ); } else { - $( '#country' ).removeClass( 'errorHighlight' ); - $( '#countryMsg' ).removeClass( 'errorMsg' ); - $( '#countryMsg' ).addClass( 'errorMsgHide' ); + clearError( 'country' ); } } else { // country is a hidden or text input if ( !$.trim( countryField.value ) ) { - errorsPresent = true; - $( '#country' ).addClass( 'errorHighlight' ); - $( '#countryMsg' ).removeClass( 'errorMsgHide' ); - $( '#countryMsg' ).addClass( 'errorMsg' ); - $( '#countryMsg' ).text( mediaWiki.msg( 'donate_interface-error-msg-country' ) ); + setError( + 'country', + mediaWiki.msg( 'donate_interface-error-msg-country' ) + ); } else { - $( '#country' ).removeClass( 'errorHighlight' ); - $( '#countryMsg' ).removeClass( 'errorMsg' ); - $( '#countryMsg' ).addClass( 'errorMsgHide' ); + clearError( 'country' ); } } @@ -186,11 +191,10 @@ dotpos = $emailAdd.value.lastIndexOf( '.' ); if ( apos < 1 || dotpos - apos < 2 ) { - errorsPresent = true; - $( '#emailAdd' ).addClass( 'errorHighlight' ); - $( '#emailAddMsg' ).removeClass( 'errorMsgHide' ); - $( '#emailAddMsg' ).addClass( 'errorMsg' ); - $( '#emailAddMsg' ).text( mediaWiki.msg( 'donate_interface-error-msg-email' ) ); + setError( + 'emailAdd', + mediaWiki.msg( 'donate_interface-error-msg-email' ) + ); invalid = true; } @@ -198,11 +202,10 @@ for ( i = 0; i < invalids.length && !invalid; i++ ) { if ( domain.indexOf( invalids[ i ] ) !== -1 ) { - errorsPresent = true; - $( '#emailAdd' ).addClass( 'errorHighlight' ); - $( '#emailAddMsg' ).removeClass( 'errorMsgHide' ); - $( '#emailAddMsg' ).addClass( 'errorMsg' ); - $( '#emailAddMsg' ).text( mediaWiki.msg( 'donate_interface-error-msg-email' ) ); + setError( + 'emailAdd', + mediaWiki.msg( 'donate_interface-error-msg-email' ) + ); invalid = true; break; } @@ -220,11 +223,7 @@ $( '#cookieMsg' ).text( mediaWiki.msg( 'donate_interface-error-msg-cookies' ) ); } - if ( errorsPresent ) { - return false; - } - - return true; + return !errorsPresent; }; window.validate_form = function ( form ) { -- To view, visit https://gerrit.wikimedia.org/r/284627 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I944246c74eb90b00cf59b0ddbfd2018d2d2b0de2 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/DonationInterface Gerrit-Branch: master Gerrit-Owner: Ejegg <eeggles...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits