<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul, pre { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[15782] trunk: first pass at strength indicator on password reset.</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.wordpress.org/changeset/15782">15782</a></dd>
<dt>Author</dt> <dd>scribu</dd>
<dt>Date</dt> <dd>2010-10-12 21:37:01 +0000 (Tue, 12 Oct 2010)</dd>
</dl>

<h3>Log Message</h3>
<pre>first pass at strength indicator on password reset. see <a href="http://trac.wordpress.org/ticket/5919">#5919</a></pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkwpadmincsslogincss">trunk/wp-admin/css/login.css</a></li>
<li><a href="#trunkwpadmincsslogindevcss">trunk/wp-admin/css/login.dev.css</a></li>
<li><a href="#trunkwpincludesscriptloaderphp">trunk/wp-includes/script-loader.php</a></li>
<li><a href="#trunkwploginphp">trunk/wp-login.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkwpadmincsslogincss"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/css/login.css (15781 => 15782)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/css/login.css        2010-10-12 20:32:41 UTC (rev 15781)
+++ trunk/wp-admin/css/login.css        2010-10-12 21:37:01 UTC (rev 15782)
</span><span class="lines">@@ -1 +1 @@
</span><del>-*{margin:0;padding:0;}body{padding-top:30px;font:11px &quot;Lucida Grande&quot;,Verdana,Arial,&quot;Bitstream Vera Sans&quot;,sans-serif;}form{margin-left:8px;padding:16px 16px 40px 16px;font-weight:normal;-moz-border-radius:11px;-khtml-border-radius:11px;-webkit-border-radius:11px;border-radius:11px;background:#fff;border:1px solid #e5e5e5;-moz-box-shadow:rgba(200,200,200,1) 0 4px 18px;-webkit-box-shadow:rgba(200,200,200,1) 0 4px 18px;-khtml-box-shadow:rgba(200,200,200,1) 0 4px 18px;box-shadow:rgba(200,200,200,1) 0 4px 18px;}form .forgetmenot{font-weight:normal;float:left;margin-bottom:0;}.button-primary{font-family:&quot;Lucida Grande&quot;,Verdana,Arial,&quot;Bitstream Vera Sans&quot;,sans-serif;padding:3px 10px;border:none;font-size:12px;border-width:1px;border-style:solid;-moz-border-radius:11px;-khtml-border-radius:11px;-webkit-border-radius:11px;border-radius:11px;cursor:pointer;text-decoration:none;margin-top:-3px;}#login form p{margin-bottom:0;}label{color:#777;font-size:13px;}form .forgetmenot label{font-size:11px;line-height:19px;}form .submit,.alignright{float:right;}form p{margin-bottom:24px;}h1 a{background:url(../images/logo-login.gif) no-repeat top center;width:326px;height:67px;text-indent:-9999px;overflow:hidden;padding-bottom:15px;display:block;}#nav{text-shadow:rgba(255,255,255,1) 0 1px 0;}#backtoblog{position:absolute;top:0;left:0;border-bottom:#c6c6c6 1px solid;background:#d9d9d9;background:-moz-linear-gradient(bottom,#d7d7d7,#e4e4e4);background:-webkit-gradient(linear,left bottom,left top,from(#d7d7d7),to(#e4e4e4));height:30px;width:100%;}#backtoblog a{text-decoration:none;display:block;padding:8px 0 0 15px;}#login{width:320px;margin:7em auto;}#login_error,.message{margin:0 0 16px 8px;border-width:1px;border-style:solid;padding:12px;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}#nav{margin:0 0 0 8px;padding:16px;}body form .input{font-size:24px;width:97%;padding:3px;margin-top:2px;margin-right:6px;margin-bottom:16px;border:1px solid #e5e5e5;background:#fbfbfb;}input{color:#555;}.clear{clear:both;}
</del><span class="cx">\ No newline at end of file
</span><ins>+*{margin:0;padding:0;}body{padding-top:30px;font:11px &quot;Lucida Grande&quot;,Verdana,Arial,&quot;Bitstream Vera Sans&quot;,sans-serif;}form{margin-left:8px;padding:16px 16px 40px 16px;font-weight:normal;-moz-border-radius:11px;-khtml-border-radius:11px;-webkit-border-radius:11px;border-radius:11px;background:#fff;border:1px solid #e5e5e5;-moz-box-shadow:rgba(200,200,200,1) 0 4px 18px;-webkit-box-shadow:rgba(200,200,200,1) 0 4px 18px;-khtml-box-shadow:rgba(200,200,200,1) 0 4px 18px;box-shadow:rgba(200,200,200,1) 0 4px 18px;}form .forgetmenot{font-weight:normal;float:left;margin-bottom:0;}.button-primary{font-family:&quot;Lucida Grande&quot;,Verdana,Arial,&quot;Bitstream Vera Sans&quot;,sans-serif;padding:3px 10px;border:none;font-size:12px;border-width:1px;border-style:solid;-moz-border-radius:11px;-khtml-border-radius:11px;-webkit-border-radius:11px;border-radius:11px;cursor:pointer;text-decoration:none;margin-top:-3px;}#login form p{margin-bottom:0;}label{color:#777;font-size:13px;}form .forgetmenot label{font-size:11px;line-height:19px;}form .submit,.alignright{float:right;}form p{margin-bottom:24px;}h1 a{background:url(../images/logo-login.gif) no-repeat top center;width:326px;height:67px;text-indent:-9999px;overflow:hidden;padding-bottom:15px;display:block;}#nav{text-shadow:rgba(255,255,255,1) 0 1px 0;}#backtoblog{position:absolute;top:0;left:0;border-bottom:#c6c6c6 1px solid;background:#d9d9d9;background:-moz-linear-gradient(bottom,#d7d7d7,#e4e4e4);background:-webkit-gradient(linear,left bottom,left top,from(#d7d7d7),to(#e4e4e4));height:30px;width:100%;}#backtoblog a{text-decoration:none;display:block;padding:8px 0 0 15px;}#login{width:320px;margin:7em auto;}#login_error,.message{margin:0 0 16px 8px;border-width:1px;border-style:solid;padding:12px;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}#nav{margin:0 0 0 8px;padding:16px;}body form .input{font-size:24px;width:97%;padding:3px;margin-top:2px;margin-right:6px;margin-bottom:16px;border:1px solid #e5e5e5;background:#fbfbfb;}input{color:#555;}.clear{clear:both;}#pass-strength-result{font-weight:bold;border-style:solid;border-width:1px;margin:12px 0 6px;padding:6px 5px;text-align:center;}
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpadmincsslogindevcss"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/css/login.dev.css (15781 => 15782)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/css/login.dev.css        2010-10-12 20:32:41 UTC (rev 15781)
+++ trunk/wp-admin/css/login.dev.css        2010-10-12 21:37:01 UTC (rev 15782)
</span><span class="lines">@@ -135,3 +135,13 @@
</span><span class="cx"> .clear {
</span><span class="cx">         clear: both;
</span><span class="cx"> }
</span><ins>+
+#pass-strength-result {
+        font-weight: bold;
+        border-style: solid;
+        border-width: 1px;
+        margin: 12px 0 6px;
+        padding: 6px 5px;
+        text-align: center;
+}
+
</ins></span></pre></div>
<a id="trunkwpincludesscriptloaderphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/script-loader.php (15781 => 15782)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/script-loader.php        2010-10-12 20:32:41 UTC (rev 15781)
+++ trunk/wp-includes/script-loader.php        2010-10-12 21:37:01 UTC (rev 15782)
</span><span class="lines">@@ -477,7 +477,7 @@
</span><span class="cx">         $styles-&gt;add( 'theme-editor', &quot;/wp-admin/css/theme-editor$suffix.css&quot;, array(), '20100514' );
</span><span class="cx">         $styles-&gt;add( 'press-this', &quot;/wp-admin/css/press-this$suffix.css&quot;, array(), '20100424' );
</span><span class="cx">         $styles-&gt;add( 'thickbox', '/wp-includes/js/thickbox/thickbox.css', array(), '20090514' );
</span><del>-        $styles-&gt;add( 'login', &quot;/wp-admin/css/login$suffix.css&quot;, array(), '20100922' );
</del><ins>+        $styles-&gt;add( 'login', &quot;/wp-admin/css/login$suffix.css&quot;, array(), '20101012' );
</ins><span class="cx">         $styles-&gt;add( 'plugin-install', &quot;/wp-admin/css/plugin-install$suffix.css&quot;, array(), '20100402' );
</span><span class="cx">         $styles-&gt;add( 'theme-install', &quot;/wp-admin/css/theme-install$suffix.css&quot;, array(), '20100523' );
</span><span class="cx">         $styles-&gt;add( 'farbtastic', '/wp-admin/css/farbtastic.css', array(), '1.2' );
</span></span></pre></div>
<a id="trunkwploginphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-login.php (15781 => 15782)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-login.php        2010-10-12 20:32:41 UTC (rev 15781)
+++ trunk/wp-login.php        2010-10-12 21:37:01 UTC (rev 15782)
</span><span class="lines">@@ -334,6 +334,28 @@
</span><span class="cx">         return $user_id;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+// TODO: Eliminate duplicated code from wp_default_scripts()
+function load_password_strength_meter() {
+        if ( !$guessurl = site_url() )
+                $guessurl = wp_guess_url();
+
+        $suffix = defined('SCRIPT_DEBUG') &amp;&amp; SCRIPT_DEBUG ? '.dev' : '';
+
+        wp_enqueue_script( 'user-profile', $guessurl . &quot;/wp-admin/js/user-profile$suffix.js&quot;, array('jquery'), '20100331' );
+        wp_localize_script( 'user-profile', 'pwsL10n', array(
+                'empty' =&gt; __('Strength indicator'),
+                'short' =&gt; __('Very weak'),
+                'bad' =&gt; __('Weak'),
+                /* translators: password strength */
+                'good' =&gt; _x('Medium', 'password strength'),
+                'strong' =&gt; __('Strong'),
+                'mismatch' =&gt; __('Mismatch'),
+                'l10n_print_after' =&gt; 'try{convertEntities(pwsL10n);}catch(e){};'
+        ) );
+
+        wp_print_scripts( array('user-profile') );
+}
+
</ins><span class="cx"> //
</span><span class="cx"> // Main
</span><span class="cx"> //
</span><span class="lines">@@ -445,19 +467,26 @@
</span><span class="cx">                 exit;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        login_header(__('Reset Password'), '&lt;p class=&quot;message reset-pass&quot;&gt;' . __('Reset your password') . '&lt;/p&gt;', $errors );
</del><ins>+        login_header(__('Reset Password'), '&lt;p class=&quot;message reset-pass&quot;&gt;' . __('Enter your new password below.') . '&lt;/p&gt;', $errors );
</ins><span class="cx"> 
</span><ins>+        load_password_strength_meter();
+
</ins><span class="cx"> ?&gt;
</span><span class="cx"> &lt;form name=&quot;resetpassform&quot; id=&quot;resetpassform&quot; action=&quot;&lt;?php echo site_url('wp-login.php?action=resetpass&amp;key=' . urlencode($_GET['key']) . '&amp;login=' . urlencode($_GET['login']), 'login_post') ?&gt;&quot; method=&quot;post&quot;&gt;
</span><ins>+        &lt;input type=&quot;hidden&quot; id=&quot;user_login&quot; value=&quot;&lt;?php echo esc_attr( $_GET['login'] ); ?&gt;&quot; autocomplete=&quot;off&quot; /&gt;
+
</ins><span class="cx">         &lt;p&gt;
</span><del>-                &lt;label&gt;&lt;?php _e('New Password') ?&gt;&lt;br /&gt;
-                &lt;input type=&quot;password&quot; name=&quot;pass1&quot; id=&quot;user_pass&quot; class=&quot;input&quot; size=&quot;20&quot; value=&quot;&quot; autocomplete=&quot;off&quot; /&gt;&lt;/label&gt;
</del><ins>+                &lt;label&gt;&lt;?php _e('New password') ?&gt;&lt;br /&gt;
+                &lt;input type=&quot;password&quot; name=&quot;pass1&quot; id=&quot;pass1&quot; class=&quot;input&quot; size=&quot;20&quot; value=&quot;&quot; autocomplete=&quot;off&quot; /&gt;&lt;/label&gt;
</ins><span class="cx">         &lt;/p&gt;
</span><span class="cx">         &lt;p&gt;
</span><del>-                &lt;label&gt;&lt;?php _e('New Password Again') ?&gt;&lt;br /&gt;
-                &lt;input type=&quot;password&quot; name=&quot;pass2&quot; id=&quot;user_pass&quot; class=&quot;input&quot; size=&quot;20&quot; value=&quot;&quot; autocomplete=&quot;off&quot; /&gt;&lt;/label&gt;
</del><ins>+                &lt;label&gt;&lt;?php _e('Confirm new password') ?&gt;&lt;br /&gt;
+                &lt;input type=&quot;password&quot; name=&quot;pass2&quot; id=&quot;pass2&quot; class=&quot;input&quot; size=&quot;20&quot; value=&quot;&quot; autocomplete=&quot;off&quot; /&gt;&lt;/label&gt;
</ins><span class="cx">         &lt;/p&gt;
</span><span class="cx"> 
</span><ins>+        &lt;div id=&quot;pass-strength-result&quot; class=&quot;hide-if-no-js&quot;&gt;&lt;?php _e('Strength indicator'); ?&gt;&lt;/div&gt;
+        &lt;p class=&quot;description indicator-hint&quot;&gt;&lt;?php _e('Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! &quot; ? $ % ^ &amp;amp; ).'); ?&gt;&lt;/p&gt;
+
</ins><span class="cx">         &lt;br class=&quot;clear&quot; /&gt;
</span><span class="cx">         &lt;p class=&quot;submit&quot;&gt;&lt;input type=&quot;submit&quot; name=&quot;wp-submit&quot; id=&quot;wp-submit&quot; class=&quot;button-primary&quot; value=&quot;&lt;?php esc_attr_e('Reset Password'); ?&gt;&quot; tabindex=&quot;100&quot; /&gt;&lt;/p&gt;
</span><span class="cx"> &lt;/form&gt;
</span></span></pre>
</div>
</div>

</body>
</html>