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

Reply via email to