You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.7 KiB
77 lines
2.7 KiB
YUI.add('moodle-mod_quiz-questionchooser', function (Y, NAME) {
|
|
|
|
var CSS = {
|
|
ADDNEWQUESTIONBUTTONS: '.menu [data-action="addquestion"]',
|
|
CREATENEWQUESTION: 'div.createnewquestion',
|
|
CHOOSERDIALOGUE: 'div.chooserdialoguebody',
|
|
CHOOSERHEADER: 'div.choosertitle'
|
|
};
|
|
|
|
/**
|
|
* The questionchooser class is responsible for instantiating and displaying the question chooser
|
|
* when viewing a quiz in editing mode.
|
|
*
|
|
* @class questionchooser
|
|
* @constructor
|
|
* @protected
|
|
* @extends M.core.chooserdialogue
|
|
*/
|
|
var QUESTIONCHOOSER = function() {
|
|
QUESTIONCHOOSER.superclass.constructor.apply(this, arguments);
|
|
};
|
|
|
|
Y.extend(QUESTIONCHOOSER, M.core.chooserdialogue, {
|
|
initializer: function() {
|
|
Y.one('body').delegate('click', this.display_dialogue, CSS.ADDNEWQUESTIONBUTTONS, this);
|
|
},
|
|
|
|
display_dialogue: function(e) {
|
|
e.preventDefault();
|
|
var dialogue = Y.one(CSS.CREATENEWQUESTION + ' ' + CSS.CHOOSERDIALOGUE),
|
|
header = Y.one(CSS.CREATENEWQUESTION + ' ' + CSS.CHOOSERHEADER);
|
|
|
|
if (this.container === null) {
|
|
// Setup the dialogue, and then prepare the chooser if it's not already been set up.
|
|
this.setup_chooser_dialogue(dialogue, header, {});
|
|
this.prepare_chooser();
|
|
}
|
|
|
|
// Update all of the hidden fields within the questionbank form.
|
|
var parameters = Y.QueryString.parse(e.currentTarget.get('search').substring(1));
|
|
var form = this.container.one('form');
|
|
this.parameters_to_hidden_input(parameters, form, 'returnurl');
|
|
this.parameters_to_hidden_input(parameters, form, 'cmid');
|
|
this.parameters_to_hidden_input(parameters, form, 'category');
|
|
this.parameters_to_hidden_input(parameters, form, 'addonpage');
|
|
this.parameters_to_hidden_input(parameters, form, 'appendqnumstring');
|
|
|
|
// Display the chooser dialogue.
|
|
this.display_chooser(e);
|
|
},
|
|
|
|
parameters_to_hidden_input: function(parameters, form, name) {
|
|
var value;
|
|
if (parameters.hasOwnProperty(name)) {
|
|
value = parameters[name];
|
|
} else {
|
|
value = '';
|
|
}
|
|
var input = form.one('input[name=' + name + ']');
|
|
if (!input) {
|
|
input = form.appendChild('<input type="hidden">');
|
|
input.set('name', name);
|
|
}
|
|
input.set('value', value);
|
|
}
|
|
}, {
|
|
NAME: 'mod_quiz-questionchooser'
|
|
});
|
|
|
|
M.mod_quiz = M.mod_quiz || {};
|
|
M.mod_quiz.init_questionchooser = function() {
|
|
M.mod_quiz.question_chooser = new QUESTIONCHOOSER({});
|
|
return M.mod_quiz.question_chooser;
|
|
};
|
|
|
|
|
|
}, '@VERSION@', {"requires": ["moodle-core-chooserdialogue", "moodle-mod_quiz-util", "querystring-parse"]});
|
|
|