Merge branch 'MDL-61010-master' of git://github.com/andrewnicols/moodle
[moodle.git] / question / yui / build / moodle-question-qbankmanager / moodle-question-qbankmanager.js
1 YUI.add('moodle-question-qbankmanager', function (Y, NAME) {
3 // This file is part of Moodle - http://moodle.org/
4 //
5 // Moodle is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // Moodle is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
18 /*
19  * Question Bank Management.
20  *
21  * @package    question
22  * @copyright  2014 Andrew Nicols
23  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  */
26 /**
27  * Questionbank Management.
28  *
29  * @module moodle-question-qbankmanager
30  */
32 /**
33  * Question Bank Management.
34  *
35  * @class M.question.qbankmanager
36  */
38 var manager = {
39     /**
40      * A reference to the header checkbox.
41      *
42      * @property _header
43      * @type Node
44      * @private
45      */
46     _header: null,
48     /**
49      * A reference to the add to quiz button.
50      *
51      * @property _addbutton
52      * @type Node
53      * @private
54      */
55     _addbutton: null,
57     /**
58      * The ID of the first checkbox on the page.
59      *
60      * @property _firstCheckbox
61      * @type Node
62      * @private
63      */
64     _firstCheckbox: null,
66     /**
67      * Set up the Question Bank Manager.
68      *
69      * @method init
70      */
71     init: function() {
72         // Find the header checkbox, and set the initial values.
73         this._header = Y.one('#qbheadercheckbox');
74         if (!this._header) {
75             return;
76         }
77         this._header.setAttrs({
78             disabled: false,
79             title: M.util.get_string('selectall', 'moodle')
80         });
82         this._header.on('click', this._headerClick, this);
84         this._addbutton = Y.one('.modulespecificbuttonscontainer input[name="add"]');
85         // input[name="add"] is not always available.
86         if (this._addbutton) {
87             this._addbutton.setAttrs({
88                 disabled: true
89             });
91             this._header.on('click', this._questionClick, this);
92             Y.one('.categoryquestionscontainer').delegate('change', this._questionClick,
93                 'td.checkbox input[type="checkbox"]', this);
94         }
96         // Store the first checkbox details.
97         var table = this._header.ancestor('table');
98         this._firstCheckbox = table.one('tbody tr td.checkbox input');
99     },
101     /**
102      * Handle toggling of the header checkbox.
103      *
104      * @method _headerClick
105      * @private
106      */
107     _headerClick: function() {
108         // Get the list of questions we affect.
109         var categoryQuestions = Y.one('#categoryquestions')
110                 .all('[type=checkbox],[type=radio]');
112         // We base the state of all of the questions on the state of the first.
113         if (this._firstCheckbox.get('checked')) {
114             categoryQuestions.set('checked', false);
115             this._header.setAttribute('title', M.util.get_string('selectall', 'moodle'));
116         } else {
117             categoryQuestions.set('checked', true);
118             this._header.setAttribute('title', M.util.get_string('deselectall', 'moodle'));
119         }
121         this._header.set('checked', false);
122     },
124     /**
125      * Handle toggling of a question checkbox.
126      *
127      * @method _questionClick
128      * @private
129      */
130     _questionClick: function() {
131         var areChecked = Y.all('td.checkbox input[type="checkbox"]:checked').size();
132         this._addbutton.setAttrs({
133             disabled: (areChecked === 0)
134         });
135     }
136 };
138 M.question = M.question || {};
139 M.question.qbankmanager = M.question.qbankmanager || manager;
142 }, '@VERSION@', {"requires": ["node", "selector-css3"]});