X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=htdocs%2Fjavascript%2Fxorg.js;h=0e5f5d0f016d3501768204a444c140eb26873d52;hb=ff95a30266c7194bdff34f749121d43130f08b65;hp=721ec59b9067f8cd8659e27fa749e663eb26d357;hpb=a27c6df82cc462aedf70ffeced99c8e187faa9e4;p=platal.git
diff --git a/htdocs/javascript/xorg.js b/htdocs/javascript/xorg.js
index 721ec59..0e5f5d0 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 *
@@ -125,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
@@ -134,29 +151,116 @@ 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 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_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'}
+];
+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!'}
+];
+
+function __goodies_popupText(url, sites) {
+ 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);
+
+ text += '
';
+ }
+ text += '
Plus de bonus ...
'
+ return text;
+}
+
+function __goodies_popup(node, sites, default_title) {
+ var mouseover_cb = function() {
+ 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();
+ }
+
+ node.onmouseover = mouseover_cb;
+ node.onmouseout = mouseout_cb;
}
// }}}
// {{{ 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.nodeName.toLowerCase() == 'a') {
+ goodiesPopup(node);
+ }
+ }
+ 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; };
+ }
}
}