/** * Create an instance of this class representing the structure of a given offlinequiz. * @param \offlinequiz $offlinequizobj the offlinequiz. * @return structure */ public static function create_for_offlinequiz($offlinequizobj) { $structure = self::create(); $structure->offlinequizobj = $offlinequizobj; $structure->populate_structure($offlinequizobj->get_offlinequiz()); return $structure; }
$pageaction = optional_param('action', '', PARAM_ALPHA); // Used to simulate a DELETE command. $maxmark = optional_param('maxmark', '', PARAM_RAW); $page = optional_param('page', '', PARAM_INT); $PAGE->set_url('/mod/offlinequiz/edit-rest.php', array('offlinequizid' => $offlinequizid, 'class' => $class)); require_sesskey(); $offlinequiz = $DB->get_record('offlinequiz', array('id' => $offlinequizid), '*', MUST_EXIST); if ($offlinequizgroup = $DB->get_record('offlinequiz_groups', array('id' => $offlinegroupid))) { $offlinequiz->groupid = $offlinequizgroup->id; } else { print_error('invalidgroupnumber', 'offlinequiz'); } $cm = get_coursemodule_from_instance('offlinequiz', $offlinequiz->id, $offlinequiz->course); $course = $DB->get_record('course', array('id' => $offlinequiz->course), '*', MUST_EXIST); require_login($course, false, $cm); $offlinequizobj = new offlinequiz($offlinequiz, $cm, $course); $structure = $offlinequizobj->get_structure(); $modcontext = context_module::instance($cm->id); echo $OUTPUT->header(); // Send headers. // OK, now let's process the parameters and do stuff // MDL-10221 the DELETE method is not allowed on some web servers, // so we simulate it with the action URL param. $requestmethod = $_SERVER['REQUEST_METHOD']; if ($pageaction == 'DELETE') { $requestmethod = 'DELETE'; } switch ($requestmethod) { case 'POST': case 'GET': // For debugging.
/** * Render the edit grade page * * @param \offlinequiz $offlinequizobj object containing all the offlinequiz settings information. * @param structure $structure object containing the structure of the offlinequiz. * @param \question_edit_contexts $contexts the relevant question bank contexts. * @param \moodle_url $pageurl the canonical URL of this page. * @param array $pagevars the variables from {@link question_edit_setup()}. * @return string HTML to output. */ public function edit_grades_page(\offlinequiz $offlinequizobj, structure $structure, \question_edit_contexts $contexts, \moodle_url $pageurl, array $pagevars, array $groupletters) { $offlinequiz = $offlinequizobj->get_offlinequiz(); $output = ''; // Page title. $output .= $this->heading_with_help(get_string('gradingofflinequizx', 'offlinequiz', format_string($offlinequizobj->get_offlinequiz_name())) . ' (' . get_string('group', 'offlinequiz') . ' ' . $groupletters[$offlinequiz->groupnumber] . ') ', 'editingofflinequiz', 'offlinequiz', '', get_string('basicideasofofflinequiz', 'offlinequiz'), 2); ///echo $OUTPUT->heading(get_string('gradingofflinequiz', 'offlinequiz') . ': ' . $offlinequiz->name. ' (' . // get_string('group', 'offlinequiz') . ' ' . $groupletters[$offlinequiz->groupnumber] . ')'); // Information at the top. $output .= $this->offlinequiz_group_selector($offlinequiz, $pageurl); $output .= $this->offlinequiz_information($structure); $output .= html_writer::div('<br/>', 'clear'); $output .= $this->maximum_grade_input($offlinequiz, $this->page->url); $output .= $this->offlinequiz_state_warnings($structure); $output .= $this->total_marks($offlinequiz); $output .= $this->start_grading_form($offlinequiz, $pageurl); // Show the questions organised into sections and pages. $output .= $this->start_section_list(); // Show the questions in one form for single submit. $sections = $structure->get_offlinequiz_sections(); foreach ($sections as $section) { $output .= $this->start_section($section); $questionhtml = ''; foreach ($structure->get_questions_in_section($section->id) as $question) { $questionhtml .= $this->question_row_for_grading($structure, $question, $contexts, $pagevars, $pageurl); } $output .= html_writer::tag('ul', $questionhtml, array('class' => 'section img-text')); $output .= $this->end_section(); } $output .= $this->end_section_list(); $output .= $this->end_grading_form(); return $output; }
$thispageurl->param('groupnumber', $offlinequiz->groupnumber); // Load the offlinequiz group and set the groupid in the offlinequiz object. if ($offlinequizgroup = offlinequiz_get_group($offlinequiz, $groupnumber)) { $offlinequiz->groupid = $offlinequizgroup->id; $groupquestions = offlinequiz_get_group_question_ids($offlinequiz); $offlinequiz->questions = $groupquestions; } else { print_error('invalidgroupnumber', 'offlinequiz'); } $offlinequiz->sumgrades = $offlinequizgroup->sumgrades; $offlinequizhasattempts = offlinequiz_has_scanned_pages($offlinequiz->id); $docscreated = $offlinequiz->docscreated; $PAGE->set_url($thispageurl); // Get the course object and related bits. $course = $DB->get_record('course', array('id' => $offlinequiz->course), '*', MUST_EXIST); $offlinequizobj = new offlinequiz($offlinequiz, $cm, $course); $structure = $offlinequizobj->get_structure(); if ($warning = optional_param('warning', '', PARAM_TEXT)) { $structure->add_warning(urldecode($warning)); } // You need mod/offlinequiz:manage in addition to question capabilities to access this page. require_capability('mod/offlinequiz:manage', $contexts->lowest()); // Log this visit. $params = array('courseid' => $course->id, 'context' => $contexts->lowest(), 'other' => array('offlinequizid' => $offlinequiz->id)); $event = \mod_offlinequiz\event\edit_page_viewed::create($params); $event->trigger(); // Process commands ============================================================. // Get the list of question ids had their check-boxes ticked. $selectedslots = array(); $params = (array) data_submitted(); foreach ($params as $key => $value) {
* @package mod * @subpackage offlinequiz * @author Juergen Zimmer <*****@*****.**> * @copyright 2015 Academic Moodle Cooperation {@link http://www.academic-moodle-cooperation.org} * @since Moodle 2.8 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once __DIR__ . '/../../config.php'; require_once $CFG->dirroot . '/mod/offlinequiz/locallib.php'; require_once $CFG->dirroot . '/mod/offlinequiz/offlinequiz.class.php'; $cmid = required_param('cmid', PARAM_INT); $offlinequizid = required_param('offlinequizid', PARAM_INT); $offlinegroupid = required_param('offlinegroupid', PARAM_INT); $slotnumber = required_param('slot', PARAM_INT); $repagtype = required_param('repag', PARAM_INT); require_sesskey(); $offlinequizobj = offlinequiz::create($offlinequizid, $offlinegroupid); $group = $DB->get_record('offlinequiz_groups', array('id' => $offlinegroupid)); require_login($offlinequizobj->get_course(), false, $offlinequizobj->get_cm()); require_capability('mod/offlinequiz:manage', $offlinequizobj->get_context()); if (offlinequiz_has_scanned_pages($offlinequizid)) { $reportlink = offlinequiz_attempt_summary_link_to_reports($offlinequizobj->get_offlinequiz(), $offlinequizobj->get_cm(), $offlinequizobj->get_context()); throw new \moodle_exception('cannoteditafterattempts', 'offlinequiz', new moodle_url('/mod/offlinequiz/edit.php', array('cmid' => $cmid)), $reportlink); } $slotnumber++; $repage = new \mod_offlinequiz\repaginate($offlinequizid, $offlinegroupid); $repage->repaginate_slots($slotnumber, $repagtype); offlinequiz_delete_template_usages($offlinequizobj->get_offlinequiz()); $structure = $offlinequizobj->get_structure(); $slots = $structure->refresh_page_numbers_and_update_db($structure->get_offlinequiz()); redirect(new moodle_url('edit.php', array('cmid' => $offlinequizobj->get_cmid(), 'groupnumber' => $group->number)));