X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=htdocs%2Fjavascript%2Fxorg.js;h=3ea7bec1c7b0f810917ed99f7c19541a04148196;hb=79b8b816945bb0c6fb25b13e5e117e155d04dd8d;hp=c013d19e60b1d6ee71e1b12e7e4526b6eace9ca9;hpb=01ab5780ddaab6adf864c576205905ac37dfbe65;p=platal.git diff --git a/htdocs/javascript/xorg.js b/htdocs/javascript/xorg.js index c013d19..3ea7bec 100644 --- a/htdocs/javascript/xorg.js +++ b/htdocs/javascript/xorg.js @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * + * Copyright (C) 2003-2009 Polytechnique.org * * http://opensource.polytechnique.org/ * * * * This program is free software; you can redistribute it and/or modify * @@ -18,8 +18,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ***************************************************************************/ -var is_netscape = (navigator.appName.substring(0,8) == "Netscape"); -var is_IE = (navigator.appName.substring(0,9) == "Microsoft"); +var is_IE = $.browser.msie; // {{{ function getNow() @@ -46,51 +45,29 @@ function getNow() { function canAddSearchEngine() { - if (((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) - || ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function"))) { - return true; - } - return false; + if (((typeof window.sidebar == "object") && $.isFunction(window.sidebar.addSearchEngine)) + || ((typeof window.external == "object") && $.isFunction(window.external.AddSearchProvider))) { + return true; + } + return false; } function addSearchEngine() { - var searchURI = "http://www.polytechnique.org/xorg.opensearch.xml"; - if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) { - window.sidebar.addSearchEngine( - searchURI, - "http://www.polytechnique.org/images/xorg.png", - "Annuaire Polytechnique.org", - "Academic"); - } else { - try { - window.external.AddSearchProvider(searchURI); - } catch(e) { - alert("Impossible d'installer la barre de recherche"); - } - } -} - -// }}} -// {{{ Events - -function eventClosure(obj, methodName) { - return (function(e) { - e = e || window.event; - return obj[methodName](e); - }); -} - -function attachEvent(obj, evt, f, useCapture) { - if (!useCapture) useCapture = false; - - if (obj.addEventListener) { - obj.addEventListener(evt, f, useCapture); - return true; - } else if (obj.attachEvent) { - return obj.attachEvent("on"+evt, f); + var searchURI = "http://www.polytechnique.org/xorg.opensearch.xml"; + if ((typeof window.sidebar == "object") && $.isFunction(window.sidebar.addSearchEngine)) { + window.sidebar.addSearchEngine( + searchURI, + "http://www.polytechnique.org/images/xorg.png", + "Annuaire Polytechnique.org", + "Academic"); + } else { + try { + window.external.AddSearchProvider(searchURI); + } catch(e) { + alert("Impossible d'installer la barre de recherche"); + } } - return false; } // }}} @@ -98,13 +75,11 @@ function attachEvent(obj, evt, f, useCapture) { function dynpost(action, values) { - var body = document.getElementsByTagName('body')[0]; - var form = document.createElement('form'); form.action = action; form.method = 'post'; - body.appendChild(form); + $('body').get(0).appendChild(form); for (var k in values) { var input = document.createElement('input'); @@ -117,6 +92,7 @@ function dynpost(action, values) form.submit(); } + function dynpostkv(action, k, v) { var dict = {}; @@ -149,135 +125,135 @@ RegExp.escape = function(text) { // {{{ function popWin() -function popWin(theNode,w,h) { +function popWin(theNode, w, h) { window.open(theNode.href, '_blank', - 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width='+w+',height='+h); + 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width='+w+',height='+h); + return false; } // }}} // {{{ function goodiesPopup() -function goodiesPopup(node) { - if (node.href.indexOf('ical') > -1) { - __goodies_popup(node, __goodies_ical_sites, 'Calendrier iCal'); - } else if (node.href.indexOf('rss') > -1 && (node.href.indexOf('xml') > -1 || node.href.indexOf('hash'))) { - __goodies_popup(node, __goodies_rss_sites, 'Fil rss'); - } -} +var __goodies_active = true; + +var __goodies_ical = { + default_title: 'Calendrier iCal', + sites: [ + {'url_prefix': '', + 'img': 'images/icons/calendar_view_day.gif', + 'title': 'Calendrier iCal'}, + {'url_prefix': 'http://www.google.com/calendar/render?cid=', + 'img': 'images/goodies/add-google-calendar.gif', + 'title': 'Ajouter à Google Calendar'}, + {'url_prefix': 'https://www.google.com/calendar/hosted/polytechnique.org/render?cid=', + 'img': 'images/goodies/add-google-calendar.gif', + 'title': 'Ajouter à Google Apps / Calendar'} + ] +}; + +var __goodies_rss = { + default_title: 'Fils RSS', + sites: [ + {'url_prefix': '', + 'img': 'images/icons/feed.gif', + 'title': 'Fil rss'}, + {'url_prefix': 'http://fusion.google.com/add?feedurl=', + 'img': 'images/goodies/add-google.gif', + 'alt': 'Add to Google', + 'title': 'Ajouter à iGoogle/Google Reader'}, + {'url_prefix': 'http://www.netvibes.com/subscribe.php?url=', + 'img': 'images/goodies/add-netvibes.gif', + 'title': 'Ajouter à Netvibes'}, + {'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'} + ] +}; function disableGoodiesPopups() { __goodies_active = false; } -var __goodies_active = true; -var __goodies_ical_sites = [ - {'url_prefix': '', - 'img': 'images/icons/calendar_view_day.gif', - 'title': 'Calendrier iCal'}, - {'url_prefix': 'http://www.google.com/calendar/render?cid=', - 'img': 'images/goodies/add-google-calendar.gif', - 'title': 'Ajouter à Google Calendar'}, - {'url_prefix': 'https://www.google.com/calendar/hosted/polytechnique.org/render?cid=', - 'img': 'images/goodies/add-google-calendar.gif', - 'title': 'Ajouter à Google Apps / Calendar'} -]; -var __goodies_rss_sites = [ - {'url_prefix': '', - 'img': 'images/icons/feed.gif', - 'title': 'Fil rss'}, - {'url_prefix': 'http://fusion.google.com/add?feedurl=', - 'img': 'images/goodies/add-google.gif', - 'alt': 'Add to Google', - 'title': 'Ajouter à iGoogle/Google Reader'}, - {'url_prefix': 'http://www.netvibes.com/subscribe.php?url=', - 'img': 'images/goodies/add-netvibes.gif', - 'title': 'Ajouter à Netvibes'}, - {'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'} -]; - -function __goodies_popupText(url, sites) { +function goodiesPopup(node, goodies) { var text = '
'; - for (var site in sites) { - var s_alt = (sites[site]["alt"] ? sites[site]["alt"] : ""); - var s_img = sites[site]["img"]; - var s_title = (sites[site]["title"] ? sites[site]["title"] : ""); - var s_url = (sites[site]["url_prefix"].length > 0 ? sites[site]["url_prefix"] + escape(url) : url); + for (var site in goodies.sites) { + var entry = goodies.sites[site]; + var s_alt = entry["alt"] ? entry["alt"] : ""; + var s_img = entry["img"]; + var s_title = entry["title"] ? entry["title"] : ""; + var s_url = entry["url_prefix"].length > 0 ? entry["url_prefix"] + escape(this.href) : this.href; text += '' + s_alt + '
'; } - text += 'Plus de bonus ...
' - return text; -} + text += 'Plus de bonus ...'; -function __goodies_popup(node, sites, default_title) { - var mouseover_cb = function() { - if (__goodies_active) { - var rss_text = __goodies_popupText(node.href, sites); - var rss_title = (node.title ? node.title : default_title); - return overlib(rss_text, CAPTION, rss_title, CLOSETEXT, 'Fermer', DELAY, 800, STICKY, WIDTH, 150); - } - } - var mouseout_cb = function() { - nd(); - } + var title = node.title ? node.title : goodies.default_title; - node.onmouseover = mouseover_cb; - node.onmouseout = mouseout_cb; + $(node) + .mouseover( + function() { + if (__goodies_active) { + return overlib(text, CAPTION, title, CLOSETEXT, 'Fermer', DELAY, 800, STICKY, WIDTH, 150); + } + } + ) + .mouseout(nd); } // }}} // {{{ function auto_links() function auto_links() { - auto_links_nodes(document.getElementsByTagName('a')); - auto_links_nodes(document.getElementsByTagName('link')); -} - -function auto_links_nodes(nodes) { url = document.URL; fqdn = url.replace(/^https?:\/\/([^\/]*)\/.*$/,'$1'); light = (url.indexOf('display=light') > url.indexOf('?')); - for(var i=0; i < nodes.length; i++) { - node = nodes[i]; - if(!node.href || node.className == 'xdx' - || node.href.indexOf('mailto:') > -1 || node.href.indexOf('javascript:') > -1) - continue; - if (node.href.indexOf(fqdn) < 0 || node.className == 'popup') { - node.onclick = function () { window.open(this.href); return false; }; - } - if (node.href.indexOf(fqdn) > -1 && light) { - node.href = node.href.replace(/([^\#\?]*)\??([^\#]*)(\#.*)?/, - "$1?display=light&$2$3"); - } - if (node.href.indexOf('rss') > -1 || node.href.indexOf('ical') > -1) { - node.href = node.href.replace(/https/, 'http'); - if (node.href.indexOf('http') < 0) { - node.href = 'http://' + fqdn + '/' + node.href; + resource_page = (url.indexOf('rss') > -1 || url.indexOf('ical') > -1); + + $("a,link").each( + function(i) { + node = $(this); + href = this.href; + if(!href || node.hasClass('xdx') + || href.indexOf('mailto:') > -1 || href.indexOf('javascript:') > -1) { + return; } - if (node.nodeName.toLowerCase() == 'a') { - goodiesPopup(node); + 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) { + href = href.replace(/([^\#\?]*)\??([^\#]*)(\#.*)?/, "$1?display=light&$2$3"); + this.href = href; + } + rss = href.indexOf('rss') > -1; + ical = href.indexOf('ical') > -1; + if (rss || ical) { + if (href.indexOf('http') < 0) { + href = 'http://' + fqdn + '/' + href; + } + } + 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) { + goodiesPopup(this, __goodies_ical); + } + } + if(matches = (/^popup_([0-9]*)x([0-9]*)$/).exec(this.className)) { + var w = matches[1], h = matches[2]; + node.click(function() { return popWin(this, w, h); }); } } - if(node.className == 'popup2') { - node.onclick = function () { popWin(this,840,600); return false; }; - } - if(node.className == 'popup3') { - node.onclick = function () { popWin(this, 640, 800); return false; }; - } - if(matches = (/^popup_([0-9]*)x([0-9]*)$/).exec(node.className)) { - var w = matches[1], h = matches[2]; - node.onclick = function () { popWin(this,w,h); return false; }; - } - } + ); + $('.popup2').click(function() { return popWin(this, 840, 600); }); + $('.popup3').click(function() { return popWin(this, 640, 800); }); } + // }}} @@ -292,14 +268,14 @@ function getType(char) { return 1; } else if (char >= 'A' && char <= 'Z') { return 2; - } else if (char >= '0' && char <= '9') { + } else if (char >= '0' && char <= '9') { return 3; } else { return 4; } } -function checkPassword(box) { +function checkPassword(box, okLabel) { var prev = 0; var prop = 0; var pass = box.value; @@ -334,7 +310,7 @@ function checkPassword(box) { } else if (prop >= 40) { color = "#ff4"; bgcolor = "#750"; - ok = false; + ok = true; } else { color = "#f20"; bgcolor = "#700"; @@ -348,9 +324,11 @@ function checkPassword(box) { .parent().stop() .animate({ backgroundColor: bgcolor }, 750); var submitButton = $(":submit[@name='" + passwordprompt_submit + "']"); - if (ok) { + if (ok && pass.length >= 6) { + submitButton.attr("value", okLabel); submitButton.removeAttr("disabled"); } else { + submitButton.attr("value", "Mot de passe trop faible"); submitButton.attr("disabled", "disabled"); } } @@ -362,12 +340,6 @@ function checkPassword(box) { * The real OnLoad */ -// {{{ function pa_onload - -if (!attachEvent(window, 'load', auto_links)) { - window.onload = auto_links; -} - -// }}} +$(document).ready(auto_links); // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: