mirror of
https://github.com/moodle/moodle.git
synced 2025-01-19 06:18:28 +01:00
247 lines
8.2 KiB
JavaScript
247 lines
8.2 KiB
JavaScript
/**
|
|
* Toggles the selection checkboxes of all grade items children of the given eid (a category id)
|
|
*/
|
|
function togglecheckboxes(event, args) {
|
|
YUI().use('yui2-dom', 'yui2-element', function (Y) {
|
|
|
|
var rows = Y.YUI2.util.Dom.getElementsByClassName(args.eid);
|
|
|
|
for (var i = 0; i < rows.length; i++) {
|
|
var element = new Y.YUI2.util.Element(rows[i]);
|
|
var checkboxes = element.getElementsByClassName('itemselect');
|
|
if (checkboxes[0]) {
|
|
checkboxes[0].checked=args.check;
|
|
}
|
|
}
|
|
|
|
toggleCategorySelector();
|
|
|
|
});
|
|
}
|
|
|
|
function toggle_advanced_columns() {
|
|
YUI().use('yui2-dom', function (Y) {
|
|
|
|
var advEls = Y.YUI2.util.Dom.getElementsByClassName("advanced");
|
|
var shownAdvEls = Y.YUI2.util.Dom.getElementsByClassName("advancedshown");
|
|
|
|
for (var i = 0; i < advEls.length; i++) {
|
|
Y.YUI2.util.Dom.replaceClass(advEls[i], "advanced", "advancedshown");
|
|
}
|
|
|
|
for (var i = 0; i < shownAdvEls.length; i++) {
|
|
Y.YUI2.util.Dom.replaceClass(shownAdvEls[i], "advancedshown", "advanced");
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Check if any of the grade item checkboxes is ticked. If yes, enable the dropdown. Otherwise, disable it
|
|
*/
|
|
function toggleCategorySelector() {
|
|
YUI().use('yui2-dom', function (Y) {
|
|
|
|
var menumoveafter = document.getElementById('menumoveafter');
|
|
if (!menumoveafter) {
|
|
return;
|
|
}
|
|
|
|
var itemboxes = Y.YUI2.util.Dom.getElementsByClassName('itemselect');
|
|
for (var i = 0; i < itemboxes.length; i++) {
|
|
if (itemboxes[i].checked) {
|
|
menumoveafter.disabled = false;
|
|
return true;
|
|
}
|
|
}
|
|
menumoveafter.disabled = 'disabled';
|
|
|
|
});
|
|
}
|
|
|
|
function submit_bulk_move(e, args) {
|
|
document.getElementById('bulkmoveinput').value = 1;
|
|
document.getElementById('gradetreeform').submit();
|
|
}
|
|
|
|
function update_category_aggregation(e, args) {
|
|
var selectmenu = e.target;
|
|
window.location = 'index.php?id='+args.courseid+'&category='+args.category+'&aggregationtype='+selectmenu.get('value')+'&sesskey='+args.sesskey;
|
|
}
|
|
|
|
|
|
/* TODO: finish and rewrite for YUI3...
|
|
Y.YUI2.namespace('grade_edit_tree');
|
|
|
|
(function() {
|
|
var Dom = Y.YUI2.util.Dom;
|
|
var DDM = Y.YUI2.util.DragDropMgr;
|
|
var Event = Y.YUI2.util.Event;
|
|
var gretree = Y.YUI2.grade_edit_tree;
|
|
|
|
gretree.DDApp = {
|
|
|
|
init: function() {
|
|
|
|
var edit_tree_table = Dom.get('grade_edit_tree_table');
|
|
var i;
|
|
var item_rows = edit_tree_table.getElementsByClassName('item', 'tr');
|
|
var category_rows = edit_tree_table.getElementsByClassName('category', 'tr');
|
|
|
|
new Y.YUI2.util.DDTarget('grade_edit_tree_table');
|
|
|
|
for (i = 0; i < item_rows.length; i++) {
|
|
if (!Dom.hasClass(item_rows[i],'categoryitem')) {
|
|
new gretree.DDList(item_rows[i]);
|
|
}
|
|
}
|
|
|
|
for (i = 0; i < category_rows.length; i++) {
|
|
if (!Dom.hasClass(category_rows[i],'coursecategory')) {
|
|
// Find the cell that spans rows for this category
|
|
var rowspancell = category_rows[i].getElementsByClassName('name', 'td');
|
|
var rowspan = parseInt(rowspancell[0].previousSibling.rowSpan) + 1;
|
|
var rows = Array(rowspan);
|
|
var lastRow = category_rows[i];
|
|
|
|
for (var j = 0; j < rowspan; j++) {
|
|
rows[j] = lastRow;
|
|
lastRow = lastRow.nextSibling;
|
|
}
|
|
|
|
new gretree.DDList(rows);
|
|
}
|
|
}
|
|
|
|
Y.YUI2.util.Event.on("showButton", "click", this.showOrder);
|
|
Y.YUI2.util.Event.on("switchButton", "click", this.switchStyles);
|
|
},
|
|
|
|
showOrder: function() {
|
|
var parseTable = function(table, title) {
|
|
var items = table.getElementsByTagName('tr');
|
|
var out = title + ": ";
|
|
|
|
for (i = 0; i < items.length; i++) {
|
|
out += items[i].id + ' ';
|
|
}
|
|
return out;
|
|
};
|
|
|
|
var table = Dom.get('grade_edit_tree_table');
|
|
alert(parseTable(table, "Grade edit tree table"));
|
|
},
|
|
|
|
switchStyles: function() {
|
|
Dom.get('grade_edit_tree_table').className = 'draglist_alt';
|
|
}
|
|
};
|
|
|
|
gretree.DDList = function(id, sGroup, config) {
|
|
|
|
gretree.DDList.superclass.constructor.call(this, id, sGroup, config);
|
|
this.logger = this.logger || Y.YUI2;
|
|
var el = this.getDragEl();
|
|
Dom.setStyle(el, 'opacity', 0.67);
|
|
|
|
this.goingUp = false;
|
|
this.lastY = 0;
|
|
};
|
|
|
|
Y.YUI2.extend(gretree.DDList, Y.YUI2.util.DDProxy, {
|
|
|
|
startDrag: function(x, y) {
|
|
this.logger.log(this.id + ' startDrag');
|
|
|
|
// Make the proxy look like the source element
|
|
var dragEl = this.getDragEl();
|
|
var clickEl = this.getEl();
|
|
|
|
Dom.setStyle(clickEl, 'visibility', 'hidden');
|
|
|
|
dragEl.innerHTML = clickEl.innerHTML;
|
|
|
|
Dom.setStyle(dragEl, 'color', Dom.getStyle(clickEl, 'color'));
|
|
Dom.setStyle(dragEl, 'backgroundColor', Dom.getStyle(clickEl, 'backgroundColor'));
|
|
Dom.setStyle(dragEl, 'border', '2px solid gray');
|
|
},
|
|
|
|
endDrag: function(e) {
|
|
this.logger.log(this.id + ' endDrag');
|
|
var srcEl = this.getEl();
|
|
var proxy = this.getDragEl();
|
|
|
|
// Show the proxy element and adnimate it to the src element's location
|
|
Dom.setStyle(proxy, 'visibility', '');
|
|
var a = new Y.YUI2.util.Motion(proxy, { points: { to: Dom.getXY(srcEl) } }, 0.2, Y.YUI2.util.Easing.easeOut);
|
|
var proxyid = proxy.id;
|
|
var thisid = this.id;
|
|
|
|
// Hide the proxy and show the source element when finished with the animation
|
|
a.onComplete.subscribe(function() {
|
|
Dom.setStyle(proxyid, 'visibility', 'hidden');
|
|
Dom.setStyle(thisid, 'visibility', '');
|
|
});
|
|
|
|
a.animate();
|
|
},
|
|
|
|
onDragDrop: function(e, id) {
|
|
this.logger.log(this.id + ' dragDrop');
|
|
|
|
// If there is one drop interaction, the tr was dropped either on the table, or it was dropped on the current location of the source element
|
|
|
|
if (DDM.interactionInfo.drop.length === 1) {
|
|
// The position of the cursor at the time of the drop (Y.YUI2.util.Point)
|
|
var pt = DDM.interactionInfo.point;
|
|
|
|
// The region occupied by the source element at the time of the drop
|
|
var region = DDM.interactionInfo.sourceRegion;
|
|
|
|
// Check to see if we are over the source element's location. We will append to the bottom of the list once we are sure it was a drop in the negative space
|
|
if (!region.intersect(pt)) {
|
|
var destEl = Dom.get(id);
|
|
var destDD = DDM.getDDById(id);
|
|
destEl.appendChild(this.getEl());
|
|
destDD.isEmpty = false;
|
|
DDM.refreshCache();
|
|
}
|
|
}
|
|
},
|
|
|
|
onDrag: function(e) {
|
|
|
|
// Keep track of the direction of the drag for use during onDragOver
|
|
var y = Event.getPageY(e);
|
|
|
|
if (y < this.lastY) {
|
|
this.goingUp = true;
|
|
} else if (y > this.lastY) {
|
|
this.goingUp = false;
|
|
}
|
|
|
|
this.lastY = y;
|
|
},
|
|
|
|
onDragOver: function(e, id) {
|
|
var srcEl = this.getEl();
|
|
var destEl = Dom.get(id);
|
|
|
|
// We are only concerned with tr items, we ignore the dragover notifications for the table
|
|
if (destEl.nodeName.toLowerCase() == 'tr') {
|
|
var orig_p = srcEl.parentNode;
|
|
var p = destEl.parentNode;
|
|
|
|
if (this.goingup) {
|
|
p.insertBefore(srcEl, destEl); // insert above
|
|
} else {
|
|
p.insertBefore(srcEl, destEl.nextSibling); // insert below
|
|
}
|
|
|
|
DDM.refreshCache();
|
|
}
|
|
}
|
|
});
|
|
// Y.YUI2.util.Event.onDOMReady(gretree.DDApp.init, gretree.DDApp, true); // Uncomment this line when dragdrop is fully implemented
|
|
})();
|
|
*/ |