File: /home/iestorre/moodleAW/moodle310/question/yui/src/qbankmanager/js/qbankmanager.js
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/*
* Question Bank Management.
*
* @package question
* @copyright 2014 Andrew Nicols
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* Questionbank Management.
*
* @module moodle-question-qbankmanager
*/
/**
* Question Bank Management.
*
* @class M.question.qbankmanager
*/
var manager = {
/**
* A reference to the header checkbox.
*
* @property _header
* @type Node
* @private
*/
_header: null,
/**
* A reference to the add to quiz button.
*
* @property _addbutton
* @type Node
* @private
*/
_addbutton: null,
/**
* The ID of the first checkbox on the page.
*
* @property _firstCheckbox
* @type Node
* @private
*/
_firstCheckbox: null,
/**
* Set up the Question Bank Manager.
*
* @method init
*/
init: function() {
// Find the header checkbox, and set the initial values.
this._header = Y.one('#qbheadercheckbox');
if (!this._header) {
return;
}
this._header.setAttrs({
disabled: false,
title: M.util.get_string('selectall', 'moodle')
});
this._header.on('click', this._headerClick, this);
this._addbutton = Y.one('.modulespecificbuttonscontainer input[name="add"]');
// input[name="add"] is not always available.
if (this._addbutton) {
this._addbutton.setAttrs({
disabled: true
});
this._header.on('click', this._questionClick, this);
Y.one('.categoryquestionscontainer').delegate('change', this._questionClick,
'td.checkbox input[type="checkbox"]', this);
}
// Store the first checkbox details.
var table = this._header.ancestor('table');
this._firstCheckbox = table.one('tbody tr td.checkbox input');
},
/**
* Handle toggling of the header checkbox.
*
* @method _headerClick
* @private
*/
_headerClick: function() {
// Get the list of questions we affect.
var categoryQuestions = Y.one('#categoryquestions')
.all('[type=checkbox],[type=radio]');
// We base the state of all of the questions on the state of the first.
if (this._firstCheckbox.get('checked')) {
categoryQuestions.set('checked', false);
this._header.setAttribute('title', M.util.get_string('selectall', 'moodle'));
} else {
categoryQuestions.set('checked', true);
this._header.setAttribute('title', M.util.get_string('deselectall', 'moodle'));
}
this._header.set('checked', false);
},
/**
* Handle toggling of a question checkbox.
*
* @method _questionClick
* @private
*/
_questionClick: function() {
var areChecked = Y.all('td.checkbox input[type="checkbox"]:checked').size();
this._addbutton.setAttrs({
disabled: (areChecked === 0)
});
}
};
M.question = M.question || {};
M.question.qbankmanager = M.question.qbankmanager || manager;