mirror of
https://github.com/moodle/moodle.git
synced 2025-07-26 00:31:35 +02:00
This commit implements version selection in the comment modal to allow users to change the version of question using that dropdown.
92 lines
3.3 KiB
PHP
92 lines
3.3 KiB
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/>.
|
|
|
|
namespace core_question\output;
|
|
|
|
use renderer_base;
|
|
use templatable;
|
|
use renderable;
|
|
use question_bank;
|
|
|
|
require_once($CFG->dirroot . '/question/engine/bank.php');
|
|
|
|
/**
|
|
* A UI widget to select other versions of a particular question.
|
|
*
|
|
* It will help plugins to enable version selection in locations like modal, page etc.
|
|
*
|
|
* @package core_question
|
|
* @copyright 2022 Catalyst IT Australia Pty Ltd
|
|
* @author Safat Shahin <safatshahin@catalyst-au.net>
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
class question_version_selection implements templatable, renderable {
|
|
|
|
/** @var string */
|
|
private $uniqueidentifier;
|
|
|
|
/** @var int */
|
|
private $currentselectedquestionid = null;
|
|
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @param string $uniqueidentifier unique identifier for the api usage.
|
|
* @param int $currentlyselectedquestionid selected question id in dropdown.
|
|
*/
|
|
protected function __construct(string $uniqueidentifier, int $currentlyselectedquestionid) {
|
|
$this->uniqueidentifier = $uniqueidentifier;
|
|
$this->currentselectedquestionid = $currentlyselectedquestionid;
|
|
}
|
|
|
|
/**
|
|
* Set the selected question id for the currently selected question.
|
|
*
|
|
* @param string $uniqueidentifier unique identifier for the api usage.
|
|
* @param int $currentlyselectedquestionid selected question id in dropdown.
|
|
* @return self an instance of this UI widget for the given question.
|
|
*/
|
|
public static function make_for_question(string $uniqueidentifier, int $currentlyselectedquestionid): self {
|
|
return new self($uniqueidentifier, $currentlyselectedquestionid);
|
|
}
|
|
|
|
/**
|
|
* Export the data for version selection mustache.
|
|
*
|
|
* @param renderer_base $output renderer of the output
|
|
* @return array
|
|
*/
|
|
public function export_for_template(renderer_base $output): array {
|
|
$displaydata = [];
|
|
$versionsoptions = question_bank::get_all_versions_of_question($this->currentselectedquestionid);
|
|
foreach ($versionsoptions as $versionsoption) {
|
|
$versionsoption->selected = false;
|
|
$a = new \stdClass();
|
|
$a->version = $versionsoption->version;
|
|
$versionsoption->name = get_string('version_selection', 'core_question', $a);
|
|
if ($versionsoption->questionid == $this->currentselectedquestionid) {
|
|
$versionsoption->selected = true;
|
|
}
|
|
$displaydata[] = $versionsoption;
|
|
}
|
|
|
|
return [
|
|
'options' => $displaydata,
|
|
'uniqueidentifier' => $this->uniqueidentifier,
|
|
];
|
|
}
|
|
}
|