X-Git-Url: https://svn.cri.ensmp.fr/git/Portfolio.git/blobdiff_plain/011a53d5681ad1f5fa88a534ec041c93d3e7be95..8c870898f8c5b34896619b4f33be97f0eeb228b6:/skins/photo_lightbox_viewer.js?ds=sidebyside diff --git a/skins/photo_lightbox_viewer.js b/skins/photo_lightbox_viewer.js index 5146b99..f7afe84 100644 --- a/skins/photo_lightbox_viewer.js +++ b/skins/photo_lightbox_viewer.js @@ -1,9 +1,7 @@ /* -* © 2008 Benoît Pin – Centre de recherche en informatique – École des mines de Paris +* 2008-2014 Benoit Pin - MINES ParisTech * http://plinn.org * Licence Creative Commons http://creativecommons.org/licenses/by-nc/2.0/ -* $Id: photo_lightbox_viewer.js 1006 2009-05-16 16:20:20Z pin $ -* $URL: http://svn.luxia.fr/svn/labo/projects/zope/Portfolio/trunk/skins/photo_lightbox_viewer.js $ */ @@ -15,28 +13,30 @@ var reSelected = /.*selected.*/; Lightbox = function(grid) { this.grid = grid; + this.lastCBChecked = undefined; thisLightbox = this; addListener(this.grid, 'click', function(evt){thisLightbox.mouseClickHandler(evt);}); if (!browser.isGecko){ addListener(this.grid, 'mouseover', function(evt){thisLightbox.mouseOverHandler(evt);}); addListener(this.grid, 'mouseout', function(evt){thisLightbox.mouseOutHandler(evt);}); } -} +}; Lightbox.prototype.mouseClickHandler = function(evt) { var target = getTargetedObject(evt); - if (target.tagName == 'IMG') { + if (target.tagName === 'IMG') { var img = target; var link = target.parentNode; var button = link.parentNode; var slide = button.parentNode; - if (link.tagName == 'A') { + var req, url; + if (link.tagName === 'A') { switch(link.getAttribute('name')) { case 'add_to_selection': disableDefault(evt); link.blur(); - var req = new XMLHttpRequest(); - var url = link.href; + req = new XMLHttpRequest(); + url = link.href; req.open("POST", url, true); req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); req.send("ajax=1"); @@ -52,8 +52,8 @@ Lightbox.prototype.mouseClickHandler = function(evt) { case 'remove_to_selection': disableDefault(evt); link.blur(); - var req = new XMLHttpRequest(); - var url = link.href; + req = new XMLHttpRequest(); + url = link.href; req.open("POST", url, true); req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); req.send("ajax=1"); @@ -72,8 +72,8 @@ Lightbox.prototype.mouseClickHandler = function(evt) { case 'hide_for_anonymous': disableDefault(evt); link.blur(); - var req = new XMLHttpRequest(); - var url = link.href; + req = new XMLHttpRequest(); + url = link.href; req.open("POST", url, true); req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); req.send(null); @@ -87,8 +87,8 @@ Lightbox.prototype.mouseClickHandler = function(evt) { case 'show_for_anonymous': disableDefault(evt); link.blur(); - var req = new XMLHttpRequest(); - var url = link.href; + req = new XMLHttpRequest(); + url = link.href; req.open("POST", url, true); req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); req.send(null); @@ -100,43 +100,94 @@ Lightbox.prototype.mouseClickHandler = function(evt) { break; } } + } else if(target.tagName === 'INPUT' && target.type === 'checkbox') { + var cb = target; + if (cb.checked) { + cb.setAttribute('checked', 'checked'); + } + else { + cb.removeAttribute('checked'); + } + this.selectCBRange(evt); } }; Lightbox.prototype.mouseOverHandler = function(evt) { var target = getTargetedObject(evt); - if (target.tagName=='AREA') { + if (target.tagName==='AREA') { var slide = target.parentNode.parentNode; - if(reSelected.test(slide.className)) - slide.className = 'slide_over_selected'; - else - slide.className = 'slide_over'; + if(reSelected.test(slide.className)) { + slide.className = 'slide_over_selected';} + else { + slide.className = 'slide_over';} } }; Lightbox.prototype.mouseOutHandler = function(evt) { var target = getTargetedObject(evt); - if (target.tagName=='AREA') { + if (target.tagName==='AREA') { var slide = target.parentNode.parentNode; - if(reSelected.test(slide.className)) - slide.className = 'selected'; - else - slide.className = undefined; + if(reSelected.test(slide.className)) { + slide.className = 'selected';} + else { + slide.className = undefined;} + } +}; + +Lightbox.prototype.getCBIndex = function(cb) { + if (!this.cbIndex) { + // build checkbox index + this.cbIndex = []; + var i, node, c; + var nodes = this.grid.childNodes; + for (i=0 ; i