Ticket #42888: 42888.4.diff
File 42888.4.diff, 17.8 KB (added by , 5 years ago) |
---|
-
src/js/_enqueues/admin/user-profile.js
7 7 var updateLock = false, 8 8 9 9 $pass1Row, 10 $pass1Wrap,11 10 $pass1, 12 $pass1Text,13 $pass1Label,14 11 $pass2, 15 12 $weakRow, 16 13 $weakCheckbox, … … 36 33 } 37 34 38 35 if ( 1 !== parseInt( $toggleButton.data( 'start-masked' ), 10 ) ) { 39 $pass1 Wrap.addClass( 'show-password' );36 $pass1.attr( 'type', 'text' ); 40 37 } else { 41 38 $toggleButton.trigger( 'click' ); 42 39 } … … 48 45 function bindPass1() { 49 46 currentPass = $pass1.val(); 50 47 51 $pass1Wrap = $pass1.parent();52 53 $pass1Text = $( '<input type="text"/>' )54 .attr( {55 'id': 'pass1-text',56 'name': 'pass1-text',57 'autocomplete': 'off'58 } )59 .addClass( $pass1[0].className )60 .data( 'pw', $pass1.data( 'pw' ) )61 .val( $pass1.val() )62 .on( 'input', function () {63 if ( $pass1Text.val() === currentPass ) {64 return;65 }66 $pass2.val( $pass1Text.val() );67 $pass1.val( $pass1Text.val() ).trigger( 'pwupdate' );68 currentPass = $pass1Text.val();69 } );70 71 $pass1.after( $pass1Text );72 73 48 if ( 1 === parseInt( $pass1.data( 'reveal' ), 10 ) ) { 74 49 generatePassword(); 75 50 } … … 80 55 } 81 56 82 57 currentPass = $pass1.val(); 83 if ( $pass1Text.val() !== currentPass ) { 84 $pass1Text.val( currentPass ); 85 } 86 $pass1.add( $pass1Text ).removeClass( 'short bad good strong' ); 58 59 $pass1.removeClass( 'short bad good strong' ); 87 60 showOrHideWeakPasswordCheckbox(); 88 61 } ); 89 62 } 90 63 91 function resetToggle( ) {64 function resetToggle( show ) { 92 65 $toggleButton 93 .data( 'toggle', 0 )94 66 .attr({ 95 'aria-label': userProfileL10n.ariaHide67 'aria-label': show ? userProfileL10n.ariaShow : userProfileL10n.ariaHide 96 68 }) 97 69 .find( '.text' ) 98 .text( userProfileL10n.hide )70 .text( show ? userProfileL10n.show : userProfileL10n.hide ) 99 71 .end() 100 72 .find( '.dashicons' ) 101 .removeClass( 'dashicons-visibility' ) 102 .addClass( 'dashicons-hidden' ); 103 104 $pass1Text.focus(); 105 106 $pass1Label.attr( 'for', 'pass1-text' ); 73 .removeClass( show ? 'dashicons-hidden' : 'dashicons-visibility' ) 74 .addClass( show ? 'dashicons-visibility' : 'dashicons-hidden' ); 107 75 } 108 76 109 77 function bindToggleButton() { 110 78 $toggleButton = $pass1Row.find('.wp-hide-pw'); 111 79 $toggleButton.show().on( 'click', function () { 112 if ( 1 === parseInt( $toggleButton.data( 'toggle' ), 10 ) ) { 113 $pass1Wrap.addClass( 'show-password' ); 114 115 resetToggle(); 116 117 if ( ! _.isUndefined( $pass1Text[0].setSelectionRange ) ) { 118 $pass1Text[0].setSelectionRange( 0, 100 ); 119 } 80 if ( 'password' === $pass1.attr( 'type' ) ) { 81 $pass1.attr( 'type', 'text' ); 82 resetToggle( false ); 120 83 } else { 121 $pass1Wrap.removeClass( 'show-password' ); 122 $toggleButton 123 .data( 'toggle', 1 ) 124 .attr({ 125 'aria-label': userProfileL10n.ariaShow 126 }) 127 .find( '.text' ) 128 .text( userProfileL10n.show ) 129 .end() 130 .find( '.dashicons' ) 131 .removeClass('dashicons-hidden') 132 .addClass('dashicons-visibility'); 84 $pass1.attr( 'type', 'password' ); 85 resetToggle( true ); 86 } 133 87 134 88 $pass1.focus(); 135 89 136 $pass1Label.attr( 'for', 'pass1' ); 137 138 if ( ! _.isUndefined( $pass1[0].setSelectionRange ) ) { 139 $pass1[0].setSelectionRange( 0, 100 ); 140 } 90 if ( ! _.isUndefined( $pass1[0].setSelectionRange ) ) { 91 $pass1[0].setSelectionRange( 0, 100 ); 141 92 } 142 93 }); 143 94 } … … 147 98 $generateButton, 148 99 $cancelButton; 149 100 150 $pass1Row = $('.user-pass1-wrap'); 151 $pass1Label = $pass1Row.find('th label').attr( 'for', 'pass1-text' ); 101 $pass1Row = $( '.user-pass1-wrap, .user-pass-wrap' ); 152 102 153 // hide this103 // Hide the confirm password field when JavaScript support is enabled. 154 104 $('.user-pass2-wrap').hide(); 155 105 156 106 $submitButton = $( '#submit, #wp-submit' ).on( 'click', function () { … … 168 118 $pass1 = $('#pass1'); 169 119 if ( $pass1.length ) { 170 120 bindPass1(); 121 } else { 122 // Password field for the login form. 123 $pass1 = $( '#user_pass' ); 171 124 } 172 125 173 126 /** … … 189 142 if ( $pass1.is( ':hidden' ) ) { 190 143 $pass1.prop( 'disabled', true ); 191 144 $pass2.prop( 'disabled', true ); 192 $pass1Text.prop( 'disabled', true );193 145 } 194 146 195 147 $passwordWrapper = $pass1Row.find( '.wp-pwd' ); … … 211 163 // Enable the inputs when showing. 212 164 $pass1.attr( 'disabled', false ); 213 165 $pass2.attr( 'disabled', false ); 214 $pass1Text.attr( 'disabled', false );215 166 216 if ( $pass1 Text.val().length === 0 ) {167 if ( $pass1.val().length === 0 ) { 217 168 generatePassword(); 218 169 } 219 220 _.defer( function() {221 $pass1Text.focus();222 if ( ! _.isUndefined( $pass1Text[0].setSelectionRange ) ) {223 $pass1Text[0].setSelectionRange( 0, 100 );224 }225 }, 0 );226 170 } ); 227 171 228 172 $cancelButton = $pass1Row.find( 'button.wp-cancel-pw' ); … … 230 174 updateLock = false; 231 175 232 176 // Clear any entered password. 233 $pass1 Text.val( '' );177 $pass1.val( '' ); 234 178 235 179 // Generate a new password. 236 180 wp.ajax.post( 'generate-password' ) … … 248 192 // Disable the inputs when hiding to prevent autofill and submission. 249 193 $pass1.prop( 'disabled', true ); 250 194 $pass2.prop( 'disabled', true ); 251 $pass1Text.prop( 'disabled', true );252 195 253 resetToggle( );196 resetToggle( false ); 254 197 255 198 if ( $pass1Row.closest( 'form' ).is( '#your-profile' ) ) { 256 199 // Clear password field to prevent update … … 265 208 $pass1.prop( 'disabled', false ); 266 209 $pass2.prop( 'disabled', false ); 267 210 $pass2.val( $pass1.val() ); 268 $pass1Wrap.removeClass( 'show-password' );269 211 }); 270 212 } 271 213 … … 305 247 var passStrength = $('#pass-strength-result')[0]; 306 248 307 249 if ( passStrength.className ) { 308 $pass1.add ( $pass1Text ).addClass( passStrength.className );250 $pass1.addClass( passStrength.className ); 309 251 if ( $( passStrength ).is( '.short, .bad' ) ) { 310 252 if ( ! $weakCheckbox.prop( 'checked' ) ) { 311 253 $submitButtons.prop( 'disabled', true ); -
src/wp-admin/css/forms.css
1475 1475 position: relative; 1476 1476 } 1477 1477 1478 .wp-pwd [type="text"],1479 .wp-pwd [type="password"]{1480 padding-right: 88px;1478 /* Needs higher specificity than normal input type text and password. */ 1479 #profile-page .form-table #pass1 { 1480 padding-right: 90px; 1481 1481 } 1482 1482 1483 1483 .wp-pwd button.button { -
src/wp-admin/css/install.css
301 301 box-sizing: border-box; 302 302 } 303 303 304 .wp-pwd #pass1 { 305 padding-right: 50px; 306 } 307 308 .wp-pwd .button.wp-hide-pw { 309 right: 0; 310 } 311 312 #pass-strength-result { 313 width: 100%; 314 } 304 315 } 305 316 306 317 body.language-chooser { -
src/wp-admin/css/login.css
37 37 0 0 2px 1px rgba(30, 140, 190, 0.8); 38 38 } 39 39 40 .ie8 a:focus {41 outline: #5b9dd9 solid 1px;42 }43 44 40 p { 45 41 line-height: 1.5; 46 42 } … … 75 71 padding: 0; 76 72 } 77 73 78 .login .password-input-wrapper {79 position: relative;80 }81 82 .login .input.password-input {83 margin: 0;84 }85 86 74 .login .input::-ms-clear { 87 75 display: none; 88 76 } … … 102 90 padding: 5px 9px; 103 91 position: absolute; 104 92 right: 0; 105 top: 0;93 top: 3px; 106 94 } 107 95 108 96 .login .button.button-secondary:hover { … … 121 109 transform: none; 122 110 } 123 111 112 .login .wp-pwd { 113 position: relative; 114 } 115 116 .no-js .hide-if-no-js { 117 display: none; 118 } 119 124 120 .login form { 125 121 margin-top: 20px; 126 122 margin-left: 0; … … 195 191 font-size: 14px; 196 192 } 197 193 198 .login form .forgetmenot label { 199 font-size: 12px; 200 line-height: 1.58333333; 194 .login .forgetmenot label, 195 .login .pw-weak label { 196 line-height: 1.5; 197 vertical-align: baseline; 201 198 } 202 199 203 200 .login h1 { … … 270 267 } 271 268 272 269 .login form .input, 273 .login input[type="text"] { 270 .login input[type="text"], 271 .login input[type="password"] { 274 272 font-size: 24px; 275 273 width: 100%; 276 274 padding: 5px; 277 margin: 2px 6px 16px 0;275 margin: 3px 6px 16px 0; 278 276 } 279 277 278 .login input[type="password"], 280 279 .login-action-rp form .input, 281 280 .login-action-rp input[type="text"] { 282 281 padding: 5px 45px 5px 5px; … … 288 287 background: #fbfbfb; 289 288 } 290 289 291 .ie7 .login form .input, 292 .ie8 .login form .input { 293 font-family: sans-serif; 294 } 295 296 .login-action-rp input[type="text"] { 290 .login-action-rp input[type="text"], 291 .login-action-rp input[type="password"] { 297 292 box-shadow: none; 298 margin : 0;293 margin-bottom: 0; 299 294 } 300 295 301 296 .login #pass-strength-result { -
src/wp-login.php
190 190 191 191 ?> 192 192 </head> 193 <body class="login <?php echo esc_attr( implode( ' ', $classes ) ); ?>"> 193 <body class="login no-js <?php echo esc_attr( implode( ' ', $classes ) ); ?>"> 194 <script type="text/javascript"> 195 document.body.className = document.body.className.replace( 'no-js', 'js' ); 196 </script> 194 197 <?php 195 198 /** 196 199 * Fires in the login page header after the body tag is opened. … … 827 830 ?> 828 831 829 832 <form name="lostpasswordform" id="lostpasswordform" action="<?php echo esc_url( network_site_url( 'wp-login.php?action=lostpassword', 'login_post' ) ); ?>" method="post"> 830 <p> 831 <label for="user_login" ><?php _e( 'Username or Email Address' ); ?><br /> 832 <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" /></label> 833 </p> 833 834 <label for="user_login"><?php _e( 'Username or Email Address' ); ?></label> 835 <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" /> 834 836 <?php 835 837 836 838 /** … … 842 844 843 845 ?> 844 846 <input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" /> 845 < pclass="submit">847 <div class="submit"> 846 848 <input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Get New Password' ); ?>" /> 847 </ p>849 </div> 848 850 </form> 849 851 850 < pid="nav">852 <div id="nav"> 851 853 <a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a> 852 854 <?php 853 855 … … 861 863 } 862 864 863 865 ?> 864 </ p>866 </div> 865 867 <?php 866 868 867 869 login_footer( 'user_login' ); … … 938 940 <input type="hidden" id="user_login" value="<?php echo esc_attr( $rp_login ); ?>" autocomplete="off" /> 939 941 940 942 <div class="user-pass1-wrap"> 941 <p>942 <label for="pass1"><?php _e( 'New password' ); ?></label>943 </p>944 943 944 <label for="pass1"><?php _e( 'New password' ); ?></label> 945 945 946 <div class="wp-pwd"> 946 <div class="password-input-wrapper"> 947 <input type="password" data-reveal="1" data-pw="<?php echo esc_attr( wp_generate_password( 16 ) ); ?>" name="pass1" id="pass1" class="input password-input" size="24" value="" autocomplete="off" aria-describedby="pass-strength-result" /> 948 <button type="button" class="button button-secondary wp-hide-pw hide-if-no-js"> 949 <span class="dashicons dashicons-hidden" aria-hidden="true"></span> 950 </button> 951 </div> 947 <input type="password" data-reveal="1" data-pw="<?php echo esc_attr( wp_generate_password( 16 ) ); ?>" name="pass1" id="pass1" class="input password-input" size="24" value="" autocomplete="off" aria-describedby="pass-strength-result" /> 948 949 <button type="button" class="button button-secondary wp-hide-pw hide-if-no-js" data-toggle="0" aria-label="<?php esc_attr_e( 'Hide password' ); ?>"> 950 <span class="dashicons dashicons-hidden" aria-hidden="true"></span> 951 </button> 952 952 <div id="pass-strength-result" class="hide-if-no-js" aria-live="polite"><?php _e( 'Strength indicator' ); ?></div> 953 953 </div> 954 954 <div class="pw-weak"> 955 <label> 956 <input type="checkbox" name="pw_weak" class="pw-checkbox" /> 957 <?php _e( 'Confirm use of weak password' ); ?> 958 </label> 955 <input type="checkbox" name="pw_weak" id="pw-weak" class="pw-checkbox" /> 956 <label for="pw-weak"><?php _e( 'Confirm use of weak password' ); ?></label> 959 957 </div> 960 958 </div> 961 959 962 < pclass="user-pass2-wrap">963 <label for="pass2"><?php _e( 'Confirm new password' ); ?></label> <br />960 <div class="user-pass2-wrap"> 961 <label for="pass2"><?php _e( 'Confirm new password' ); ?></label> 964 962 <input type="password" name="pass2" id="pass2" class="input" size="20" value="" autocomplete="off" /> 965 </ p>963 </div> 966 964 967 965 <p class="description indicator-hint"><?php echo wp_get_password_hint(); ?></p> 968 966 <br class="clear" /> … … 980 978 981 979 ?> 982 980 <input type="hidden" name="rp_key" value="<?php echo esc_attr( $rp_key ); ?>" /> 983 < pclass="submit">981 <div class="submit"> 984 982 <input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Reset Password' ); ?>" /> 985 </ p>983 </div> 986 984 </form> 987 985 988 < pid="nav">986 <div id="nav"> 989 987 <a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a> 990 988 <?php 991 989 … … 999 997 } 1000 998 1001 999 ?> 1002 </ p>1000 </div> 1003 1001 <?php 1004 1002 1005 1003 login_footer( 'user_pass' ); … … 1059 1057 1060 1058 ?> 1061 1059 <form name="registerform" id="registerform" action="<?php echo esc_url( site_url( 'wp-login.php?action=register', 'login_post' ) ); ?>" method="post" novalidate="novalidate"> 1062 < p>1063 <label for="user_login"><?php _e( 'Username' ); ?>< br />1064 <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( wp_unslash( $user_login ) ); ?>" size="20" autocapitalize="off" /> </label>1065 </ p>1066 < p>1067 <label for="user_email"><?php _e( 'Email' ); ?>< br />1068 <input type="email" name="user_email" id="user_email" class="input" value="<?php echo esc_attr( wp_unslash( $user_email ) ); ?>" size="25" /> </label>1069 </ p>1060 <div> 1061 <label for="user_login"><?php _e( 'Username' ); ?></label> 1062 <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( wp_unslash( $user_login ) ); ?>" size="20" autocapitalize="off" /> 1063 </div> 1064 <div> 1065 <label for="user_email"><?php _e( 'Email' ); ?></label> 1066 <input type="email" name="user_email" id="user_email" class="input" value="<?php echo esc_attr( wp_unslash( $user_email ) ); ?>" size="25" /> 1067 </div> 1070 1068 <?php 1071 1069 1072 1070 /** … … 1082 1080 </p> 1083 1081 <br class="clear" /> 1084 1082 <input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" /> 1085 < pclass="submit">1083 <div class="submit"> 1086 1084 <input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Register' ); ?>" /> 1087 </ p>1085 </div> 1088 1086 </form> 1089 1087 1090 < pid="nav">1088 <div id="nav"> 1091 1089 <a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a> 1092 1090 <?php echo esc_html( $login_link_separator ); ?> 1093 1091 <a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php _e( 'Lost your password?' ); ?></a> 1094 </ p>1092 </div> 1095 1093 <?php 1096 1094 1097 1095 login_footer( 'user_login' ); … … 1331 1329 $aria_describedby_error = ''; 1332 1330 } 1333 1331 1332 wp_enqueue_script( 'user-profile' ); 1334 1333 ?> 1335 1334 1336 1335 <form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post"> 1337 <p> 1338 <label for="user_login"><?php _e( 'Username or Email Address' ); ?><br /> 1339 <input type="text" name="log" id="user_login"<?php echo $aria_describedby_error; ?> class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" /></label> 1340 </p> 1341 <p> 1342 <label for="user_pass"><?php _e( 'Password' ); ?><br /> 1343 <input type="password" name="pwd" id="user_pass"<?php echo $aria_describedby_error; ?> class="input" value="" size="20" /></label> 1344 </p> 1336 <label for="user_login"><?php _e( 'Username or Email Address' ); ?></label> 1337 <input type="text" name="log" id="user_login"<?php echo $aria_describedby_error; ?> class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" /> 1338 1339 <div class="user-pass-wrap"> 1340 <label for="user_pass"><?php _e( 'Password' ); ?></label> 1341 <div class="wp-pwd"> 1342 <input type="password" name="pwd" id="user_pass"<?php echo $aria_describedby_error; ?> class="input password-input" value="" size="20" /> 1343 <button type="button" class="button button-secondary wp-hide-pw hide-if-no-js" data-toggle="0" aria-label="<?php esc_attr_e( 'Show password' ); ?>"> 1344 <span class="dashicons dashicons-visibility" aria-hidden="true"></span> 1345 </button> 1346 </div> 1347 </div> 1345 1348 <?php 1346 1349 1347 1350 /** … … 1352 1355 do_action( 'login_form' ); 1353 1356 1354 1357 ?> 1355 < p class="forgetmenot"><label for="rememberme"><input name="rememberme" type="checkbox" id="rememberme" value="forever" <?php checked( $rememberme ); ?> /> <?php esc_html_e( 'Remember Me' ); ?></label></p>1356 < pclass="submit">1358 <div class="forgetmenot"><input name="rememberme" type="checkbox" id="rememberme" value="forever" <?php checked( $rememberme ); ?> /> <label for="rememberme"><?php esc_html_e( 'Remember Me' ); ?></label></div> 1359 <div class="submit"> 1357 1360 <input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Log In' ); ?>" /> 1358 1361 <?php 1359 1362 … … 1375 1378 1376 1379 ?> 1377 1380 <input type="hidden" name="testcookie" value="1" /> 1378 </ p>1381 </div> 1379 1382 </form> 1380 1383 1381 1384 <?php … … 1382 1385 1383 1386 if ( ! $interim_login ) { 1384 1387 ?> 1385 < pid="nav">1388 <div id="nav"> 1386 1389 <?php 1387 1390 1388 1391 if ( ! isset( $_GET['checkemail'] ) || ! in_array( $_GET['checkemail'], array( 'confirm', 'newpass' ), true ) ) { … … 1401 1404 } 1402 1405 1403 1406 ?> 1404 </ p>1407 </div> 1405 1408 <?php 1406 1409 } 1407 1410