X7ROOT File Manager
Current Path:
/home/cbholdings/pasukulu/question/type/match
home
/
cbholdings
/
pasukulu
/
question
/
type
/
match
/
📁
..
📁
backup
📁
classes
📁
db
📄
edit_match_form.php
(5.54 KB)
📁
lang
📄
lib.php
(1.65 KB)
📁
pix
📄
question.php
(15.66 KB)
📄
questiontype.php
(8.25 KB)
📄
renderer.php
(5.41 KB)
📄
styles.css
(590 B)
📁
tests
📄
version.php
(1.08 KB)
Editing: renderer.php
<?php // 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/>. /** * Matching question renderer class. * * @package qtype_match * @copyright 2009 The Open University * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); /** * Generates the output for matching questions. * * @copyright 2009 The Open University * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class qtype_match_renderer extends qtype_with_combined_feedback_renderer { public function formulation_and_controls(question_attempt $qa, question_display_options $options) { $question = $qa->get_question(); $stemorder = $question->get_stem_order(); $response = $qa->get_last_qt_data(); $choices = $this->format_choices($question); $result = ''; $result .= html_writer::tag('div', $question->format_questiontext($qa), array('class' => 'qtext')); $result .= html_writer::start_tag('div', array('class' => 'ablock')); $result .= html_writer::start_tag('table', array('class' => 'answer')); $result .= html_writer::start_tag('tbody'); $parity = 0; $i = 1; foreach ($stemorder as $key => $stemid) { $result .= html_writer::start_tag('tr', array('class' => 'r' . $parity)); $fieldname = 'sub' . $key; $result .= html_writer::tag('td', $this->format_stem_text($qa, $stemid), array('class' => 'text')); $classes = 'control'; $feedbackimage = ''; if (array_key_exists($fieldname, $response)) { $selected = $response[$fieldname]; } else { $selected = 0; } $fraction = (int) ($selected && $selected == $question->get_right_choice_for($stemid)); if ($options->correctness && $selected) { $classes .= ' ' . $this->feedback_class($fraction); $feedbackimage = $this->feedback_image($fraction); } $labeltext = $options->add_question_identifier_to_label(get_string('answer', 'qtype_match', $i)); $result .= html_writer::tag('td', html_writer::label($labeltext, 'menu' . $qa->get_qt_field_name('sub' . $key), false, array('class' => 'accesshide')) . html_writer::select($choices, $qa->get_qt_field_name('sub' . $key), $selected, array('0' => 'choose'), array('disabled' => $options->readonly, 'class' => 'custom-select ml-1')) . ' ' . $feedbackimage, array('class' => $classes)); $result .= html_writer::end_tag('tr'); $parity = 1 - $parity; $i++; } $result .= html_writer::end_tag('tbody'); $result .= html_writer::end_tag('table'); $result .= html_writer::end_tag('div'); // Closes <div class="ablock">. if ($qa->get_state() == question_state::$invalid) { $result .= html_writer::nonempty_tag('div', $question->get_validation_error($response), array('class' => 'validationerror')); } return $result; } public function specific_feedback(question_attempt $qa) { return $this->combined_feedback($qa); } /** * Format each question stem. Overwritten by randomsamatch renderer. * * @param question_attempt $qa * @param integer $stemid stem index * @return string */ public function format_stem_text($qa, $stemid) { $question = $qa->get_question(); return $question->format_text( $question->stems[$stemid], $question->stemformat[$stemid], $qa, 'qtype_match', 'subquestion', $stemid); } protected function format_choices($question) { $choices = array(); foreach ($question->get_choice_order() as $key => $choiceid) { $choices[$key] = format_string($question->choices[$choiceid]); } return $choices; } public function correct_response(question_attempt $qa) { $question = $qa->get_question(); $stemorder = $question->get_stem_order(); $choices = $this->format_choices($question); $right = array(); foreach ($stemorder as $key => $stemid) { if (!isset($choices[$question->get_right_choice_for($stemid)])) { continue; } $right[] = $question->make_html_inline($this->format_stem_text($qa, $stemid)) . ' → ' . $choices[$question->get_right_choice_for($stemid)]; } if (!empty($right)) { return get_string('correctansweris', 'qtype_match', implode(', ', $right)); } } }
Upload File
Create Folder