diff --git a/core/css/fixes.css b/core/css/fixes.css index 71cb09cae7..b660cd47aa 100644 --- a/core/css/fixes.css +++ b/core/css/fixes.css @@ -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 { diff --git a/core/css/styles.css b/core/css/styles.css index 5ed2238321..4a25247d23 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -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 */ diff --git a/core/js/setup.js b/core/js/setup.js index cb29959745..96760e8ae6 100644 --- a/core/js/setup.js +++ b/core/js/setup.js @@ -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 diff --git a/core/templates/installation.php b/core/templates/installation.php index 191acf0b85..d3001f8287 100644 --- a/core/templates/installation.php +++ b/core/templates/installation.php @@ -52,7 +52,6 @@ script('core', [ -

diff --git a/core/vendor/strengthify/.bower.json b/core/vendor/strengthify/.bower.json index d0baec6ed7..4da982f240 100644 --- a/core/vendor/strengthify/.bower.json +++ b/core/vendor/strengthify/.bower.json @@ -1,6 +1,6 @@ { "name": "strengthify", - "version": "0.4.2", + "version": "0.5.1", "homepage": "https://github.com/MorrisJobke/strengthify", "authors": [ "Morris Jobke " @@ -8,13 +8,13 @@ "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" } \ No newline at end of file diff --git a/core/vendor/strengthify/jquery.strengthify.js b/core/vendor/strengthify/jquery.strengthify.js index 26d06a5d30..1019aab297 100644 --- a/core/vendor/strengthify/jquery.strengthify.js +++ b/core/vendor/strengthify/jquery.strengthify.js @@ -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 + * Copyright (c) 2013-2016 Morris Jobke * * 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 @@ -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'); +(function($) { + $.fn.strengthify = function(paramOptions) { + "use strict"; - $wrapper.children().css( - 'opacity', - opacity - ).css( - '-ms-filter', - '"progid:DXImageTransform.Microsoft.Alpha(Opacity=' + opacity * 100 + ')"' - ); + var defaults = { + zxcvbn: 'zxcvbn/zxcvbn.js', + titles: [ + 'Weakest', + 'Weak', + 'So-so', + 'Good', + 'Perfect' + ], + tilesOptions:{ + tooltip: true, + element: false + }, + drawTitles: false, + drawMessage: false, + drawBars: true + }; - // 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; - } + return this.each(function() { + var options = $.extend(defaults, paramOptions); - $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) + '%' - ); + if (!options.drawTitles + && !options.drawMessage + && !options.drawBars) + console.warn("expect at least one of 'drawTitles', 'drawMessage', or 'drawBars' to be true"); - // set a title for the wrapper - $wrapper.attr( - 'title', - options.titles[result.score] - ).tooltip({ - placement: 'bottom', - trigger: 'manual', - }).tooltip( - 'show' - ); + function getWrapperFor(id) { + return $('div[data-strengthifyFor="' + id + '"]'); + }; - if(opacity === 0) { - $wrapper.tooltip( - 'hide' - ); - } + 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]'); - // reset state for empty string password - if(password === '') { - $container.css('width', 0); - } - }; + $wrapper.children() + .css('opacity', opacity) + .css('-ms-filter', + '"progid:DXImageTransform.Microsoft.Alpha(Opacity=' + opacity * 100 + ')"' + ); - // add elements - $('.strengthify-wrapper') - .append('
') - .append('
') - .append('
') - .append('
') - .append('
'); + // 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('
') : ""; + break; + case 2: + bsLevel = 'warning'; + message = result.feedback ? result.feedback.suggestions.join('
') : ""; + 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; + } - me.parents().on('scroll', drawStrengthify); + if ($message) { + $message.removeAttr('class'); + $message.addClass('bg-' + bsLevel); - $.ajax({ - cache: true, - dataType: 'script', - url: options.zxcvbn - }).done(function() { - me.bind('keyup input change', drawStrengthify); - }); + // 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) + '%' + ); - return me; - }; + // reset state for empty string password + if (password === '') { + $container.css('width', 0); + } + } -}(jQuery)); + 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('
'); + + if (options.drawBars) { + getWrapperFor(elemId) + .append('
') + .append('
') + .append('
') + .append('
') + .append('
'); + } + + if (options.drawMessage) { + getWrapperFor(elemId).append('
'); + } + + if (options.drawTitles && options.tilesOptions) { + getWrapperFor(elemId).append('
'); + } + + $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)); diff --git a/core/vendor/strengthify/strengthify.css b/core/vendor/strengthify/strengthify.css index 5555cbdf33..e8486fb088 100644 --- a/core/vendor/strengthify/strengthify.css +++ b/core/vendor/strengthify/strengthify.css @@ -1,11 +1,15 @@ /** * Strengthify - show the weakness of a password (uses zxcvbn for this) * https://github.com/MorrisJobke/strengthify - * Version: 0.4.2 + * Version: 0.5.1 * License: The MIT License (MIT) - * Copyright (c) 2013 Morris Jobke + * Copyright (c) 2013-2016 Morris Jobke */ +.strengthify-wrapper { + position: relative; +} + .strengthify-wrapper > * { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); @@ -15,7 +19,7 @@ transition:all .5s ease-in-out; } -.strengthify-bg, .strengthify-container, .strengthify-wrapper, .strengthify-separator { +.strengthify-bg, .strengthify-container, .strengthify-separator { height: 3px; } @@ -46,3 +50,11 @@ .password-good { background-color: #3C3; } + +div[data-strengthifyMessage] { + padding: 3px 8px; +} + +.strengthify-tiles{ + float: right; +} diff --git a/settings/css/settings.css b/settings/css/settings.css index 2e7b6d213a..db6cced618 100644 --- a/settings/css/settings.css +++ b/settings/css/settings.css @@ -488,9 +488,9 @@ span.indeterminate { } /* PASSWORD */ -.strengthify-wrapper { +#passwordform .strengthify-wrapper { position: absolute; - left: 189px; + left: 186px; width: 131px; margin-top: -7px; } diff --git a/settings/js/personal.js b/settings/js/personal.js index bd13b7fd25..93820c49ff 100644 --- a/settings/js/personal.js +++ b/settings/js/personal.js @@ -336,7 +336,8 @@ $(document).ready(function () { t('core', 'So-so password'), t('core', 'Good password'), t('core', 'Strong password') - ] + ], + drawTitles: true, }); // does the user have a custom avatar? if he does show #removeavatar diff --git a/settings/templates/personal.php b/settings/templates/personal.php index 70b7cfd083..ee79ac2392 100644 --- a/settings/templates/personal.php +++ b/settings/templates/personal.php @@ -133,7 +133,6 @@ if($_['passwordChangeSupported']) {
-