39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
/**
|
|
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
|
*/
|
|
|
|
/**
|
|
* JavaScript behavior to allow shift select in administrator grids
|
|
*/
|
|
(function() {
|
|
Joomla = Joomla || {};
|
|
|
|
Joomla.JMultiSelect = new Class({
|
|
initialize : function(table) {
|
|
this.table = document.id(table);
|
|
if (this.table) {
|
|
this.boxes = this.table.getElements('input[type=checkbox]');
|
|
this.boxes.addEvent('click', function(e){
|
|
this.doselect(e);
|
|
}.bind(this));
|
|
}
|
|
},
|
|
|
|
doselect: function(e) {
|
|
var current = document.id(e.target);
|
|
if (e.shift && typeOf(this.last) !== 'null') {
|
|
var checked = current.getProperty('checked') ? 'checked' : '';
|
|
var range = [this.boxes.indexOf(current), this.boxes.indexOf(this.last)].sort(function(a, b) {
|
|
//Shorthand to make sort() sort numerical instead of lexicographic
|
|
return a-b;
|
|
});
|
|
for (var i=range[0]; i <= range[1]; i++) {
|
|
this.boxes[i].setProperty('checked', checked);
|
|
}
|
|
}
|
|
this.last = current;
|
|
}
|
|
});
|
|
})();
|