X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=htdocs%2Fjavascript%2Fxorg.js;h=db3a502d60a76bd3ae5af6e7d0f66a2939c96953;hb=92e805609fe9c4306542a0c9fde30606aec6fca4;hp=71d3daee97ffa20c4d8f54daf1cdb7b5523e96f0;hpb=39fd8f508829b3b5b27a1bd580e2dd1857602294;p=platal.git diff --git a/htdocs/javascript/xorg.js b/htdocs/javascript/xorg.js index 71d3dae..db3a502 100644 --- a/htdocs/javascript/xorg.js +++ b/htdocs/javascript/xorg.js @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2003-2007 Polytechnique.org * + * Copyright (C) 2003-2008 Polytechnique.org * * http://opensource.polytechnique.org/ * * * * This program is free software; you can redistribute it and/or modify * @@ -35,26 +35,42 @@ function getNow() { 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'] + months = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', + 'août', 'septembre', 'octobre', 'novembre', 'décembre'] return days[dy]+' '+wd+' '+months[mh]+' '+yr+'
'+time; } // }}} -// {{{ Firefox +// {{{ Search Engine -function addFirefoxEngine() { +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; +} + +function addSearchEngine() +{ + var searchURI = "http://www.polytechnique.org/xorg.opensearch.xml"; if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) { window.sidebar.addSearchEngine( - "http://www.polytechnique.org/xorg.src", + searchURI, "http://www.polytechnique.org/images/xorg.png", - "Recherche rapide X.org", + "Annuaire Polytechnique.org", "Academic"); - } else { alert("Impossible d'installer la barre de recherche Firefox"); } + } else { + try { + window.external.AddSearchProvider(searchURI); + } catch(e) { + alert("Impossible d'installer la barre de recherche"); + } + } } - // }}} // {{{ Events @@ -109,6 +125,23 @@ function dynpostkv(action, k, v) } // }}} +// {{{ function RegExp.escape() + +RegExp.escape = function(text) { + if (!arguments.callee.sRE) { + var specials = [ + '/', '.', '*', '+', '?', '|', + '(', ')', '[', ']', '{', '}', + '\\', '^' , '$' + ]; + arguments.callee.sRE = new RegExp( + '(\\' + specials.join('|\\') + ')', 'g' + ); + } + return text.replace(arguments.callee.sRE, '\\$1'); +} + +// }}} /*************************************************************************** * POPUP THINGS @@ -118,29 +151,49 @@ function dynpostkv(action, k, v) 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); } // }}} // {{{ function auto_links() function auto_links() { - nodes = document.getElementsByTagName('a'); - fqdn = document.URL; - fqdn = fqdn.replace(/^https?:\/\/([^\/]*)\/.*$/,'$1'); - for(var i=0; i -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.className == 'popup2') { - node.onclick = function () { popWin(this,840,600); 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; }; - } + 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; + } + } + 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; }; + } } } @@ -158,3 +211,4 @@ if (!attachEvent(window, 'load', auto_links)) { // }}} +// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: