X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=htdocs%2Fjavascript%2Fxorg.js;h=ccc9c0b2217f08c51f8091249f44520b51bc8036;hb=ed92ea696e042eb9b2d0efcc4731fdf89fb17924;hp=959ad408614547581f97c77de73b7c06e319a621;hpb=350ba5ac3ceb17ec0668d97e46d6ecefcda7c657;p=platal.git diff --git a/htdocs/javascript/xorg.js b/htdocs/javascript/xorg.js index 959ad40..ccc9c0b 100644 --- a/htdocs/javascript/xorg.js +++ b/htdocs/javascript/xorg.js @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * + * Copyright (C) 2003-2010 Polytechnique.org * * http://opensource.polytechnique.org/ * * * * This program is free software; you can redistribute it and/or modify * @@ -79,7 +79,7 @@ function dynpost(action, values) form.action = action; form.method = 'post'; - $('body').appendChild(form); + $('body').get(0).appendChild(form); for (var k in values) { var input = document.createElement('input'); @@ -167,11 +167,7 @@ var __goodies_rss = { {'url_prefix': 'http://add.my.yahoo.com/content?.intl=fr&url=', 'img': 'images/goodies/add-yahoo.gif', 'alt': 'Add to My Yahoo!', - 'title': 'Ajouter à My Yahoo!'}, - {'url_prefix': 'http://www.newsgator.com/ngs/subscriber/subext.aspx?url=', - 'img': 'images/goodies/add-newsgator.gif', - 'alt': 'Subscribe in NewsGator Online', - 'title': 'Ajouter à Newsgator'} + 'title': 'Ajouter à My Yahoo!'} ] }; @@ -212,6 +208,7 @@ function auto_links() { url = document.URL; fqdn = url.replace(/^https?:\/\/([^\/]*)\/.*$/,'$1'); light = (url.indexOf('display=light') > url.indexOf('?')); + resource_page = (url.indexOf('rss') > -1 || url.indexOf('ical') > -1); $("a,link").each( function(i) { @@ -221,7 +218,7 @@ function auto_links() { || href.indexOf('mailto:') > -1 || href.indexOf('javascript:') > -1) { return; } - if (href.indexOf(fqdn) < 0 || node.hasClass('popup')) { + if ((href.indexOf(fqdn) < 0 && this.className.indexOf('popup') < 0) || node.hasClass('popup')) { node.click(function () { window.open(this.href); return false; }); } if (href.indexOf(fqdn) > -1 && light) { @@ -235,7 +232,7 @@ function auto_links() { href = 'http://' + fqdn + '/' + href; } } - if (this.nodeName.toLowerCase() == 'a') { + if (this.nodeName.toLowerCase() == 'a' && !resource_page) { if (rss && href.indexOf('prefs/rss') < 0 && (href.indexOf('xml') > -1 || href.indexOf('hash'))) { goodiesPopup(this, __goodies_rss); } else if (ical) { @@ -262,39 +259,54 @@ function auto_links() { // {{{ function checkPassword -function getType(char) { - if (char >= 'a' && char <= 'z') { +function getType(c) { + if (c >= 'a' && c <= 'z') { return 1; - } else if (char >= 'A' && char <= 'Z') { + } else if (c >= 'A' && c <= 'Z') { return 2; - } else if (char >= '0' && char <= '9') { + } else if (c >= '0' && c <= '9') { return 3; } else { return 4; } } -function checkPassword(box, okLabel) { +function differentTypes(password) { var prev = 0; + + for (i = 0 ; i < password.length ; ++i) { + var type = getType(password.charAt(i)); + if (prev != 0 && prev != type) { + return true; + } + prev = type; + } + return false; +} + +function passwordStrength(password) { var prop = 0; - var pass = box.value; - var types = Array(0, 0, 0, 0, 0); + var prev = 0; var firstType = true; - for (i = 0 ; i < pass.length ; ++i) { - type = getType(pass.charAt(i)); + var types = Array(0, 0, 0, 0, 0); + + for (i = 0 ; i < password.length ; ++i) { + var type = getType(password.charAt(i)); if (prev != 0 && prev != type) { prop += 5; + firstType = false; } prop += i; if (types[type] == 0 && !firstType) { prop += 15; - } else { - firstType = false; } types[type]++; prev = type; } - if (pass.length < 6) { + if (password.length < 6) { + prop *= 0.75; + } + if (firstType) { prop *= 0.75; } if (prop > 100) { @@ -302,11 +314,19 @@ function checkPassword(box, okLabel) { } else if (prop < 0) { prop = 0; } + + return prop; +} + +function checkPassword(box, okLabel) { + var password = box.value; + var prop = passwordStrength(password); + if (prop >= 60) { color = "#4f4"; bgcolor = "#050"; ok = true; - } else if (prop >= 40) { + } else if (prop >= 35) { color = "#ff4"; bgcolor = "#750"; ok = true; @@ -322,8 +342,8 @@ function checkPassword(box, okLabel) { }, 750) .parent().stop() .animate({ backgroundColor: bgcolor }, 750); - var submitButton = $(":submit[@name='" + passwordprompt_submit + "']"); - if (ok && pass.length >= 6) { + var submitButton = $(":submit[name='" + passwordprompt_submit + "']"); + if (ok && password.length >= 6 && differentTypes(password)) { submitButton.attr("value", okLabel); submitButton.removeAttr("disabled"); } else {