Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[stable9] Fix strengthify issues #118

Merged
merged 3 commits into from
Jun 15, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions core/css/fixes.css
Original file line number Diff line number Diff line change
Expand Up @@ -108,12 +108,6 @@ select {
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#4c320000', endColorstr='#4c320000');
}

/* IE8 doesn't have rounded corners, so the strengthify bar should be wider */
.lte8 #body-login .strengthify-wrapper {
width: 271px;
left: 6px;
}

/* fix background of navigation popup in IE8 */
.ie8 #navigation,
.ie8 #expanddiv {
Expand Down
4 changes: 2 additions & 2 deletions core/css/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -335,8 +335,8 @@ body {
display: inline-block;
position: relative;
left: 15px;
top: -21px;
width: 252px;
top: -23px;
width: 250px;
}

/* tipsy for the strengthify wrapper looks better with following font settings */
Expand Down
3 changes: 2 additions & 1 deletion core/js/setup.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,8 @@ $(document).ready(function() {
t('core', 'So-so password'),
t('core', 'Good password'),
t('core', 'Strong password')
]
],
drawTitles: true,
});

// centers the database chooser if it is too wide
Expand Down
1 change: 0 additions & 1 deletion core/templates/installation.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@
<label for="adminpass" class="infield"><?php p($l->t( 'Password' )); ?></label>
<input type="checkbox" id="show" name="show">
<label for="show" class="svg"></label>
<div class="strengthify-wrapper"></div>
</p>
</fieldset>

Expand Down
10 changes: 5 additions & 5 deletions core/vendor/strengthify/.bower.json
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
{
"name": "strengthify",
"version": "0.4.2",
"version": "0.5.1",
"homepage": "https://github.com/MorrisJobke/strengthify",
"authors": [
"Morris Jobke <hey@morrisjobke.de>"
],
"description": "Combine jQuery and zxcvbn to create a password strength meter.",
"main": "jquery.strengthify.js",
"license": "MIT",
"_release": "0.4.2",
"_release": "0.5.1",
"_resolution": {
"type": "version",
"tag": "v0.4.2",
"commit": "b3df9344d829063564cdced3c6328b001bc4bad1"
"tag": "0.5.1",
"commit": "fd8bc41992bb37e16495a8e4c266951b93f8467d"
},
"_source": "git://github.com/MorrisJobke/strengthify.git",
"_target": "0.4.2",
"_target": "0.5.1",
"_originalSource": "strengthify"
}
293 changes: 185 additions & 108 deletions core/vendor/strengthify/jquery.strengthify.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@
* Strengthify - show the weakness of a password (uses zxcvbn for this)
* https://github.com/MorrisJobke/strengthify
*
* Version: 0.4.2
* Author: Morris Jobke (github.com/MorrisJobke)
* Version: 0.5.1
* Author: Morris Jobke (github.com/MorrisJobke) - original
* Eve Ragins @ Eve Corp (github.com/eve-corp)
*
*
* License:
*
* The MIT License (MIT)
*
* Copyright (c) 2013-2015 Morris Jobke <morris.jobke@gmail.com>
* Copyright (c) 2013-2016 Morris Jobke <morris.jobke@gmail.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
Expand All @@ -30,108 +32,183 @@
*/

/* global jQuery */
(function ($) {
$.fn.strengthify = function(paramOptions) {
var me = this,
defaults = {
zxcvbn: 'zxcvbn/zxcvbn.js',
titles: [
'Weakest',
'Weak',
'So-so',
'Good',
'Perfect'
]
},
options = $.extend(defaults, paramOptions),
drawStrengthify = function() {
var password = $(me).val(),
// hide strengthigy if no input is provided
opacity = (password === '') ? 0 : 1,
// calculate result
result = zxcvbn(password),
css = '',
// cache jQuery selections
$container = $('.strengthify-container'),
$wrapper = $('.strengthify-wrapper');

$wrapper.children().css(
'opacity',
opacity
).css(
'-ms-filter',
'"progid:DXImageTransform.Microsoft.Alpha(Opacity=' + opacity * 100 + ')"'
);

// style strengthify bar
// possible scores: 0-4
switch(result.score) {
case 0:
case 1:
css = 'password-bad';
break;
case 2:
css = 'password-medium';
break;
case 3:
case 4:
css = 'password-good';
break;
}

$container
.attr('class', css + ' strengthify-container')
// possible scores: 0-4
.css(
'width',
// if score is '0' it will be changed to '1' to
// not hide strengthify if the password is extremely weak
((result.score === 0 ? 1 : result.score) * 25) + '%'
);

// set a title for the wrapper
$wrapper.attr(
'title',
options.titles[result.score]
).tooltip({
placement: 'bottom',
trigger: 'manual',
}).tooltip(
'show'
);

if(opacity === 0) {
$wrapper.tooltip(
'hide'
);
}

// reset state for empty string password
if(password === '') {
$container.css('width', 0);
}

};

// add elements
$('.strengthify-wrapper')
.append('<div class="strengthify-bg" />')
.append('<div class="strengthify-container" />')
.append('<div class="strengthify-separator" style="left: 25%" />')
.append('<div class="strengthify-separator" style="left: 50%" />')
.append('<div class="strengthify-separator" style="left: 75%" />');

me.parents().on('scroll', drawStrengthify);

$.ajax({
cache: true,
dataType: 'script',
url: options.zxcvbn
}).done(function() {
me.bind('keyup input change', drawStrengthify);
});

return me;
};

}(jQuery));
(function($) {
$.fn.strengthify = function(paramOptions) {
"use strict";

var defaults = {
zxcvbn: 'zxcvbn/zxcvbn.js',
titles: [
'Weakest',
'Weak',
'So-so',
'Good',
'Perfect'
],
tilesOptions:{
tooltip: true,
element: false
},
drawTitles: false,
drawMessage: false,
drawBars: true
};

return this.each(function() {
var options = $.extend(defaults, paramOptions);

if (!options.drawTitles
&& !options.drawMessage
&& !options.drawBars)
console.warn("expect at least one of 'drawTitles', 'drawMessage', or 'drawBars' to be true");

function getWrapperFor(id) {
return $('div[data-strengthifyFor="' + id + '"]');
};

function drawStrengthify() {
var password = $(this).val(),
elemId = $(this).attr('id'),
// hide strengthify if no input is provided
opacity = (password === '') ? 0 : 1,
// calculate result
result = zxcvbn(password),
// setup some vars for later
css = '',
bsLevel = '',
message = '',
// cache jQuery selections
$wrapper = getWrapperFor(elemId),
$container = $wrapper.find('.strengthify-container'),
$message = $wrapper.find('[data-strengthifyMessage]');


$wrapper.children()
.css('opacity', opacity)
.css('-ms-filter',
'"progid:DXImageTransform.Microsoft.Alpha(Opacity=' + opacity * 100 + ')"'
);

// style strengthify bar
// possible scores: 0-4
switch (result.score) {
case 0:
case 1:
css = 'password-bad';
bsLevel = 'danger';
message = result.feedback ? result.feedback.suggestions.join('<br/>') : "";
break;
case 2:
bsLevel = 'warning';
message = result.feedback ? result.feedback.suggestions.join('<br/>') : "";
css = 'password-medium';
break;
case 3:
css = 'password-good';
bsLevel = 'info';
message = "Getting better.";
case 4:
css = 'password-good';
bsLevel = 'success';
message = "Looks good.";
break;
}

if ($message) {
$message.removeAttr('class');
$message.addClass('bg-' + bsLevel);

// reset state for empty string password
if (password === '') {
message = '';
}
$message.html(message);
}
if ($container) {
$container
.attr('class', css + ' strengthify-container')
// possible scores: 0-4
.css(
'width',
// if score is '0' it will be changed to '1' to
// not hide strengthify if the password is extremely weak
((result.score === 0 ? 1 : result.score) * 25) + '%'
);

// reset state for empty string password
if (password === '') {
$container.css('width', 0);
}
}

if (options.drawTitles) {
// set a title for the wrapper
if(options.tilesOptions.tooltip){
$wrapper.attr(
'title',
options.titles[result.score]
).tooltip({
placement: 'bottom',
trigger: 'manual',
}).tooltip(
'fixTitle'
).tooltip(
'show'
);

if (opacity === 0) {
$wrapper.tooltip(
'hide'
);
}
}

if(options.tilesOptions.element){
$wrapper.find(".strengthify-tiles").text(options.titles[result.score]);
}
}
};

function init() {
var $elem = $(this),
elemId = $elem.attr('id');
var drawSelf = drawStrengthify.bind(this);

// add elements
$elem.after('<div class="strengthify-wrapper" data-strengthifyFor="' + $elem.attr('id') + '"></div>');

if (options.drawBars) {
getWrapperFor(elemId)
.append('<div class="strengthify-bg" />')
.append('<div class="strengthify-container" />')
.append('<div class="strengthify-separator" style="left: 25%" />')
.append('<div class="strengthify-separator" style="left: 50%" />')
.append('<div class="strengthify-separator" style="left: 75%" />');
}

if (options.drawMessage) {
getWrapperFor(elemId).append('<div data-strengthifyMessage></div>');
}

if (options.drawTitles && options.tilesOptions) {
getWrapperFor(elemId).append('<div class="strengthify-tiles"></div>');
}

$elem.parent().on('scroll', drawSelf);

$.ajax({
cache: true,
dataType: 'script',
url: options.zxcvbn
}).done(function() {
$elem.bind('keyup input change', drawSelf);
});
};

init.call(this);

//return me;
});
};

} (jQuery));
Loading