web/wp-admin/js/user-profile.dev.js
changeset 194 32102edaa81b
parent 136 bde1974c263b
--- a/web/wp-admin/js/user-profile.dev.js	Thu Sep 16 15:45:36 2010 +0000
+++ b/web/wp-admin/js/user-profile.dev.js	Mon Nov 19 18:26:13 2012 +0100
@@ -1,15 +1,15 @@
 (function($){
 
 	function check_pass_strength() {
-		var pass = $('#pass1').val(), user = $('#user_login').val(), strength;
+		var pass1 = $('#pass1').val(), user = $('#user_login').val(), pass2 = $('#pass2').val(), strength;
 
 		$('#pass-strength-result').removeClass('short bad good strong');
-		if ( ! pass ) {
+		if ( ! pass1 ) {
 			$('#pass-strength-result').html( pwsL10n.empty );
 			return;
 		}
 
-		strength = passwordStrength(pass, user);
+		strength = passwordStrength(pass1, user, pass2);
 
 		switch ( strength ) {
 			case 2:
@@ -21,32 +21,58 @@
 			case 4:
 				$('#pass-strength-result').addClass('strong').html( pwsL10n['strong'] );
 				break;
+			case 5:
+				$('#pass-strength-result').addClass('short').html( pwsL10n['mismatch'] );
+				break;
 			default:
 				$('#pass-strength-result').addClass('short').html( pwsL10n['short'] );
 		}
 	}
 
 	$(document).ready( function() {
+		var select = $('#display_name');
+
 		$('#pass1').val('').keyup( check_pass_strength );
-		$('.color-palette').click(function(){$(this).siblings('input[name=admin_color]').attr('checked', 'checked')});
-		$('#nickname').blur(function(){
-			var str = $(this).val() || $('#user_login').val();
-			$('#display_name #display_nickname').val(str).html(str);
+		$('#pass2').val('').keyup( check_pass_strength );
+		$('#pass-strength-result').show();
+		$('.color-palette').click( function() {
+			$(this).siblings('input[name="admin_color"]').prop('checked', true);
 		});
-		$('#first_name, #last_name').blur(function(){
-			var first = $('#first_name').val(), last = $('#last_name').val();
-			$('#display_firstname, #display_lastname, #display_firstlast, #display_lastfirst').remove();
-			if ( first && last ) {
-				$('#display_name').append('<option id="display_firstname" value="' + first + '">' + first + '</option>' +
-					'<option id="display_lastname" value="' + last + '">' + last + '</option>' +
-					'<option id="display_firstlast" value="' + first + ' ' + last + '">' + first + ' ' + last + '</option>' +
-					'<option id="display_lastfirst" value="' + last + ' ' + first + '">' + last + ' ' + first + '</option>');
-			} else if ( first && !last ) {
-				$('#display_name').append('<option id="display_firstname" value="' + first + '">' + first + '</option>');
-			} else if ( !first && last ) {
-				$('#display_name').append('<option id="display_lastname" value="' + last + '">' + last + '</option>');
-			}
-		});
-    });
+
+		if ( select.length ) {
+			$('#first_name, #last_name, #nickname').bind( 'blur.user_profile', function() {
+				var dub = [],
+					inputs = {
+						display_nickname  : $('#nickname').val() || '',
+						display_username  : $('#user_login').val() || '',
+						display_firstname : $('#first_name').val() || '',
+						display_lastname  : $('#last_name').val() || ''
+					};
+
+				if ( inputs.display_firstname && inputs.display_lastname ) {
+					inputs['display_firstlast'] = inputs.display_firstname + ' ' + inputs.display_lastname;
+					inputs['display_lastfirst'] = inputs.display_lastname + ' ' + inputs.display_firstname;
+				}
+
+				$.each( $('option', select), function( i, el ){
+					dub.push( el.value );
+				});
+
+				$.each(inputs, function( id, value ) {
+					if ( ! value )
+						return;
+
+					var val = value.replace(/<\/?[a-z][^>]*>/gi, '');
+
+					if ( inputs[id].length && $.inArray( val, dub ) == -1 ) {
+						dub.push(val);
+						$('<option />', {
+							'text': val
+						}).appendTo( select );
+					}
+				});
+			});
+		}
+	});
 
 })(jQuery);