moodle/mod/quiz/addrandom.php
tjhunt fa583f5f6e quiz editing: MDL-17285 This is Olli Savolainen's new interface for editing quizzes.
This was started and usability tested as a Finnish Summer of Code project, and then Olli did further work on it in his own time to get it in shape for inclusion in Moodle 2.0. I reviewed all the code. There are a number of minor outstanding issues that will be fixed soon. See the subtasks of MDL-17284 for a list.

The goal of these changes is to:
* help teachers new to Moodle, so when they first see the quiz editing page, they don't go "Huh! What on earth am I supposed to do here?"
* help novice Moodle users understand and learn to use some of the more advanced quiz feature;
* but, without slowing down more experienced quiz users.

Naturally, with ambitous goals like that, we won't have managed to satisy everybody, but I think this change is a big step in the right direction.

There is extensive documentation on this project at http://docs.moodle.org/en/Development:Quiz_UI_redesign.
2008-11-20 06:59:11 +00:00

73 lines
3.0 KiB
PHP

<?php // $Id$
/**
* Fallback page of /mod/quiz/edit.php add random question dialog,
* for users who do not use javascript.
*
* @author Olli Savolainen, as a part of the Quiz UI Redesign project in Summer 2008
* {@link http://docs.moodle.org/en/Development:Quiz_UI_redesign}.
* @license http://www.gnu.org/copyleft/gpl.html GNU Public License
* @package quiz
*/
require_once("../../config.php");
require_once($CFG->dirroot.'/mod/quiz/editlib.php');
require_once($CFG->dirroot."/question/category_class.php");
list($thispageurl, $contexts, $cmid, $cm, $quiz, $pagevars) = question_edit_setup('editq', true);
$defaultcategoryobj = question_make_default_categories($contexts->all());
$defaultcategoryid=$defaultcategoryobj->id;
$defaultcategorycontext=$defaultcategoryobj->contextid;
$defaultcategory="$defaultcategoryid,$defaultcategorycontext";
$qcobject = new question_category_object(
$pagevars['cpage'],
$thispageurl,
$contexts->having_one_edit_tab_cap('categories'),
$defaultcategoryid,
$defaultcategory,
null,
$contexts->having_cap('moodle/question:add'));
//setting the second parameter of process_randomquestion_formdata to true causes it to redirect on success
//TODO: process if returns false?
quiz_process_randomquestion_formdata($qcobject,true, $cmid);
//these params are only passed from page request to request while we stay on this page
//otherwise they would go in question_edit_setup
$quiz_page = optional_param('quiz_page', 0, PARAM_SEQUENCE);
$returnurl = optional_param('returnurl', 0, PARAM_LOCALURL);
$strquizzes = get_string('modulenameplural', 'quiz');
$strquiz = get_string('modulename', 'quiz');
$streditingquestions = get_string('editquestions', "quiz");
$streditingquiz = get_string('editinga', 'moodle', $strquiz);
// Get the course object and related bits.
if (! $course = $DB->get_record("course", array("id"=> $quiz->course))) {
error("This course doesn't exist");
}
// TODO: Log this visit.
/*
add_to_log($cm->course, 'quiz', 'editquestions',
"view.php?id=$cm->id", "$quiz->id", $cm->id);
*/
//you need mod/quiz:manage in addition to question capabilities to access this page.
require_capability('mod/quiz:manage', $contexts->lowest());
// Print basic page layout.
$strupdatemodule = has_capability('moodle/course:manageactivities', $contexts->lowest())
? update_module_button($cm->id, $course->id, get_string('modulename', 'quiz'))
: "";
$navigation = build_navigation($streditingquiz, $cm);
print_header_simple($streditingquiz, '', $navigation, "", "", true, $strupdatemodule);
if (!$quizname = $DB->get_field($cm->modname, 'name', array('id'=> $cm->instance))) {
error('Cannot get the module name in build navigation.');
}
print_heading(get_string("addrandomquestiontoquiz","quiz",$quizname), 'left', 2);
$qcobject->display_randomquestion_user_interface();
print_footer($course);
?>