From 3f727ea05aae7e2b69274046075b4d13feba2223 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= <benoit.pin@gmail.com> Date: Sun, 8 Dec 2013 20:44:11 +0100 Subject: [PATCH] =?utf8?q?Impl=C3=A9mentation=20de=20la=20s=C3=A9lection?= =?utf8?q?=20par=20range=20des=20cases=20=C3=A0=20cocher.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- skins/ajax_scripts/folder_contents_script.js | 32 +++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/skins/ajax_scripts/folder_contents_script.js b/skins/ajax_scripts/folder_contents_script.js index 800a746..7edda7d 100644 --- a/skins/ajax_scripts/folder_contents_script.js +++ b/skins/ajax_scripts/folder_contents_script.js @@ -27,6 +27,7 @@ FolderDDropControler = function(listing, firstItemPos) { this.listing = listing; this.firstItemPos = firstItemPos; this._updatePositions(); + this.lastCBChecked = undefined; var thisControler = this; this.listing.onmousedown = function(evt) {thisControler.drag(evt);}; this.listing.onmouseover = function(evt) {thisControler.moveRow(evt);}; @@ -120,7 +121,7 @@ FolderDDropControler.prototype.drop = function(evt){ String(this.lastOverPosition - 1 + trim); // reinitialize positions - this._updatePositions() + this._updatePositions(); // send request var req = new XMLHttpRequest(); @@ -142,8 +143,37 @@ FolderDDropControler.prototype.disableClickAfterDrop = function(evt) { }; FolderDDropControler.prototype.selectCBRange = function(evt) { + var target = getTargetedObject(evt); + if (target.tagName === 'INPUT' && target.type === 'checkbox') { + evt = getEventObject(evt); + var shift = evt.shiftKey; + if (shift && this.lastCBChecked) { + var from = this.getCBIndex(this.lastCBChecked); + var to = this.getCBIndex(target); + var rows = this.listing.getElementsByTagName('TR'); + var start = Math.min(from, to); + var stop = Math.max(from, to); + var i; + for (i=start ; i<stop ; i++ ) { + rows[i].getElementsByTagName('INPUT')[0].checked = true; + } + } + else if (target.checked) { + this.lastCBChecked = target; + } + else { + this.lastCBChecked = undefined; + } + } }; +FolderDDropControler.prototype.getCBIndex = function(cb) { + var row = cb.parentNode; + while(row.tagName !== 'TR') { + row = row.parentNode; + } + return row.pos - this.firstItemPos; +}; FolderDDropControler.prototype.reset = function() { this.targetRow = null; -- 2.20.1