From 65faec66e17d739ff1ee7e85cb5ef792fc79cd7b Mon Sep 17 00:00:00 2001 From: Laurent David Date: Mon, 19 May 2025 11:53:09 +0200 Subject: [PATCH] MDL-83890 mod_choice: Migrate index to course overview * Index page for mod_choice should be consistent with the overview page --- .../local/overview/overviewfactory_test.php | 2 +- .../overview/missingoverviewnotice_test.php | 2 +- mod/choice/index.php | 125 ++++-------------- 3 files changed, 27 insertions(+), 102 deletions(-) diff --git a/course/format/tests/local/overview/overviewfactory_test.php b/course/format/tests/local/overview/overviewfactory_test.php index 9ce98c128f2..90b19a72cef 100644 --- a/course/format/tests/local/overview/overviewfactory_test.php +++ b/course/format/tests/local/overview/overviewfactory_test.php @@ -97,7 +97,7 @@ final class overviewfactory_test extends \advanced_testcase { ], 'choice' => [ 'resourcetype' => 'choice', - 'expected' => resourceoverview::class, + 'expected' => \mod_choice\courseformat\overview::class, ], 'data' => [ 'resourcetype' => 'data', diff --git a/course/format/tests/output/local/overview/missingoverviewnotice_test.php b/course/format/tests/output/local/overview/missingoverviewnotice_test.php index a318dd8f7bf..50ebc0f847f 100644 --- a/course/format/tests/output/local/overview/missingoverviewnotice_test.php +++ b/course/format/tests/output/local/overview/missingoverviewnotice_test.php @@ -66,7 +66,7 @@ final class missingoverviewnotice_test extends \advanced_testcase { 'assign' => ['modname' => 'assign', 'expectempty' => true], 'bigbluebuttonbn' => ['modname' => 'bigbluebuttonbn', 'expectempty' => false], 'book' => ['modname' => 'book', 'expectempty' => false], - 'choice' => ['modname' => 'choice', 'expectempty' => false], + 'choice' => ['modname' => 'choice', 'expectempty' => true], 'data' => ['modname' => 'data', 'expectempty' => true], 'feedback' => ['modname' => 'feedback', 'expectempty' => true], 'folder' => ['modname' => 'folder', 'expectempty' => false], diff --git a/mod/choice/index.php b/mod/choice/index.php index 2ed8ea84621..e9bf33f285c 100644 --- a/mod/choice/index.php +++ b/mod/choice/index.php @@ -1,105 +1,30 @@ . +// For this type of page this is the course id. - require_once("../../config.php"); - require_once("lib.php"); +/** + * Prints the list of all choices in the course + * + * @package mod_choice + * @copyright 2023 Laurent David + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ - $id = required_param('id',PARAM_INT); // course +require_once("../../config.php"); - $PAGE->set_url('/mod/choice/index.php', array('id'=>$id)); +$courseid = required_param('id', PARAM_INT); - if (!$course = $DB->get_record('course', array('id'=>$id))) { - throw new \moodle_exception('invalidcourseid'); - } - - require_course_login($course); - $PAGE->set_pagelayout('incourse'); - - $eventdata = array('context' => context_course::instance($id)); - $event = \mod_choice\event\course_module_instance_list_viewed::create($eventdata); - $event->add_record_snapshot('course', $course); - $event->trigger(); - - $strchoice = get_string("modulename", "choice"); - $strchoices = get_string("modulenameplural", "choice"); - $PAGE->set_title($strchoices); - $PAGE->set_heading($course->fullname); - $PAGE->navbar->add($strchoices); - echo $OUTPUT->header(); - - if (! $choices = get_all_instances_in_course("choice", $course)) { - notice(get_string('thereareno', 'moodle', $strchoices), "../../course/view.php?id=$course->id"); - } - - $usesections = course_format_uses_sections($course->format); - - $sql = "SELECT cha.* - FROM {choice} ch, {choice_answers} cha - WHERE cha.choiceid = ch.id AND - ch.course = ? AND cha.userid = ?"; - - $answers = array () ; - if (isloggedin() and !isguestuser() and $allanswers = $DB->get_records_sql($sql, array($course->id, $USER->id))) { - foreach ($allanswers as $aa) { - $answers[$aa->choiceid] = $aa; - } - unset($allanswers); - } - - - $timenow = time(); - - $table = new html_table(); - - if ($usesections) { - $strsectionname = course_get_format($course)->get_generic_section_name(); - $table->head = array ($strsectionname, get_string("question"), get_string("answer")); - $table->align = array ("center", "left", "left"); - } else { - $table->head = array (get_string("question"), get_string("answer")); - $table->align = array ("left", "left"); - } - - $currentsection = ""; - - foreach ($choices as $choice) { - if (!empty($answers[$choice->id])) { - $answer = $answers[$choice->id]; - } else { - $answer = ""; - } - if (!empty($answer->optionid)) { - $aa = format_string(choice_get_option_text($choice, $answer->optionid)); - } else { - $aa = ""; - } - if ($usesections) { - $printsection = ""; - if ($choice->section !== $currentsection) { - if ($choice->section) { - $printsection = get_section_name($course, $choice->section); - } - if ($currentsection !== "") { - $table->data[] = 'hr'; - } - $currentsection = $choice->section; - } - } - - //Calculate the href - if (!$choice->visible) { - //Show dimmed if the mod is hidden - $tt_href = "coursemodule\">".format_string($choice->name,true).""; - } else { - //Show normal if the mod is visible - $tt_href = "coursemodule\">".format_string($choice->name,true).""; - } - if ($usesections) { - $table->data[] = array ($printsection, $tt_href, $aa); - } else { - $table->data[] = array ($tt_href, $aa); - } - } - echo "
"; - echo html_writer::table($table); - - echo $OUTPUT->footer(); +\core_courseformat\activityoverviewbase::redirect_to_overview_page($courseid, 'choice');