X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=htdocs%2Fjavascript%2Fxorg.js;h=d804403d8b0876ae66b4a10562dfc43a1bd9910d;hb=6a686adb39d65e4472497f4ce69f0314085cead3;hp=3e6779ad857d9f662daaac19220d473bcb660644;hpb=fb813fb52d5ab65ca9a5b92b5cb9089523380d79;p=platal.git diff --git a/htdocs/javascript/xorg.js b/htdocs/javascript/xorg.js index 3e6779a..d804403 100644 --- a/htdocs/javascript/xorg.js +++ b/htdocs/javascript/xorg.js @@ -21,23 +21,29 @@ var is_IE = $.browser.msie; // {{{ function getNow() +var days = ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi']; +var months = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', + 'août', 'septembre', 'octobre', 'novembre', 'décembre'] function getNow() { - dt = new Date(); - dy = dt.getDay(); - mh = dt.getMonth(); - wd = dt.getDate(); - yr = dt.getYear(); + var dt = new Date(); + var dy = dt.getDay(); + var mh = dt.getMonth(); + var wd = dt.getDate(); + var yr = dt.getYear(); if (yr<1000) yr += 1900; - hr = dt.getHours(); - mi = dt.getMinutes(); - - time = (mi < 10) ? hr +':0'+mi : hr+':'+mi; - days = ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi']; - months = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', - 'août', 'septembre', 'octobre', 'novembre', 'décembre'] + var hr = dt.getHours(); + var mi = dt.getMinutes(); + if (mi < 10) { + mi = '0' + mi; + } + var se = dt.getSeconds(); + if (se < 10) { + se = '0' + se; + } - return days[dy]+' '+wd+' '+months[mh]+' '+yr+'
'+time; + $(".date-heure").html(days[dy] + ' ' + wd + ' ' + months[mh] + ' ' + yr + '
' + + hr + ':' + mi + ':' + se); } // }}} @@ -205,10 +211,10 @@ function goodiesPopup(node, goodies) { // {{{ function auto_links() 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); + var url = document.URL; + var fqdn = url.replace(/^https?:\/\/([^\/]*)\/.*$/,'$1'); + var light = (url.indexOf('display=light') > url.indexOf('?')); + var resource_page = (url.indexOf('rss') > -1 || url.indexOf('ical') > -1); $("a,link").each( function(i) { @@ -252,7 +258,6 @@ function auto_links() { // }}} - /*************************************************************************** * Password check */ @@ -271,27 +276,42 @@ function getType(c) { } } -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) { @@ -299,11 +319,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; @@ -320,7 +348,7 @@ function checkPassword(box, okLabel) { .parent().stop() .animate({ backgroundColor: bgcolor }, 750); var submitButton = $(":submit[name='" + passwordprompt_submit + "']"); - if (ok && pass.length >= 6) { + if (ok && password.length >= 6 && differentTypes(password)) { submitButton.attr("value", okLabel); submitButton.removeAttr("disabled"); } else { @@ -330,12 +358,135 @@ function checkPassword(box, okLabel) { } // }}} +// {{{ jQuery object extension + +(function($) { + $.xget = function(source, type, onSuccess, onError) { + function ajaxHandler(data, textStatus) { + if (textStatus == 'success') { + if (onSuccess) { + onSuccess(data); + } + } else if (textStatus == 'error') { + if (onError) { + onError(data); + } else { + alert("Une error s'est produite lors du traitement de la requête.\n" + + "Ta session a peut-être expiré"); + } + } + } + $.get(source, ajaxHandler, type); + return false; + } + + $.fn.tmpMessage = function(message, success) { + if (success) { + this.html(" " + message) + .css('color', 'green'); + } else { + this.html(" " + message) + .css('color', 'red'); + } + return this.css('fontWeight', 'bold') + .show() + .delay(1000) + .fadeOut(500); + } + + $.fn.updateHtml = function(source, callback) { + var elements = this; + function handler(data) { + elements.html(data); + if (callback) { + callback(data); + } + } + $.xget(source, 'text', handler); + return this; + } + + $.fn.successMessage = function(source, message) { + var elements = this; + $.xget(source, 'text', function() { + elements.tmpMessage(message, true); + }); + return this; + } + + $.fn.wiki = function(text, withTitle) { + if (text == '') { + return this.html(''); + } + var url = 'wiki_preview'; + if (!withTitle) { + url += '/notitile'; + } + var $this = this; + $.post(url, { text: text }, + function (data) { + $this.html(data); + }, 'text'); + return this; + } +})(jQuery); + +// }}} +// {{{ preview wiki + +function previewWiki(idFrom, idTo, withTitle, idShow) +{ + $('#' + idTo).wiki($('#' + idFrom).val(), withTitle); + if (idShow != null) { + $('#' + idShow).show(); + } +} + +// }}} +// {{{ send test email + +function sendTestEmail(token, hruid) +{ + var url = 'emails/test'; + var msg = "Un email a été envoyé avec succès"; + if (hruid != null) { + url += '/' + hruid; + msg += " sur l'adresse de " + hruid + "."; + } else { + msg += " sur ton addresse."; + } + $('#mail_sent').successMessage($url + '?token=' + token, msg); + return false; +} + +// }}} /*************************************************************************** * The real OnLoad */ -$(document).ready(auto_links); +$(document).ready(function() { + auto_links(); + getNow(); + setInterval(getNow, 1000); + $("#quick") + .focus(function() { + if ($(this).val() === 'Recherche dans l\'annuaire') { + $(this).val(''); + } + $("#quick_button").show(); + }) + .blur(function() { + $("#quick_button").hide(); + }); + $("#quick_button").click(function() { + if ($("#quick").val() === 'Recherche dans l\'annuaire' + || $("#quick").val() === '') { + return false; + } + return true; + }); +}); // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: