Type hint against LinkTarget in WatchedItemStore
[lhc/web/wiklou.git] / resources / src / mediawiki.special.userlogin.signup.js
index 8a61afb..fff2d4e 100644 (file)
@@ -1,7 +1,7 @@
 /*!
  * JavaScript for signup form.
  */
-( function ( mw, $ ) {
+( function () {
        // When sending password by email, hide the password input fields.
        $( function () {
                // Always required if checked, otherwise it depends, so we use the original
@@ -30,7 +30,7 @@
                updateForCheckbox();
        } );
 
-       // Check if the username is invalid or already taken
+       // Check if the username is invalid or already taken; show username normalisation warning
        mw.hook( 'htmlform.enhance' ).add( function ( $root ) {
                var $usernameInput = $root.find( '#wpName2' ),
                        $passwordInput = $root.find( '#wpPassword2' ),
                        // We could just use .then() if we didn't have to pass on .abort()…
                        var d, apiPromise;
 
+                       // Leading/trailing/multiple whitespace characters are always stripped in usernames,
+                       // this should not require a warning. We do warn about underscores.
+                       username = username.replace( / +/g, ' ' ).trim();
+
                        d = $.Deferred();
                        apiPromise = api.get( {
                                action: 'query',
                                                                return m.html;
                                                        } ) : []
                                                } );
+                                       } else if ( userinfo.name !== username ) {
+                                               d.resolve( { valid: true, messages: [
+                                                       mw.message( 'createacct-normalization', username, userinfo.name ).parseDom()
+                                               ] } );
                                        } else {
                                                d.resolve( { valid: true, messages: [] } );
                                        }
                passwordChecker = new mw.htmlform.Checker( $passwordInput, checkPassword );
                passwordChecker.attach( $usernameInput.add( $emailInput ).add( $realNameInput ) );
        } );
-}( mediaWiki, jQuery ) );
+}() );