mirror of
https://github.com/moodle/moodle.git
synced 2025-01-18 05:58:34 +01:00
MDL-70753 report: Provide a separate page for course report
Provide page for the reports in the course administration. The page has a drop down to navigate to different reports. The navigation is remembered just like the grade reports in the course. Signed-off-by: Sujith Haridasan <sujith@moodle.com>
This commit is contained in:
parent
a5f0b354e7
commit
686bd2681e
@ -22,6 +22,8 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
use core\report_helper;
|
||||
|
||||
require_once(__DIR__ . '/../../../config.php');
|
||||
require_once($CFG->libdir.'/adminlib.php');
|
||||
|
||||
@ -111,6 +113,12 @@ if (!empty($action) && $ruleid) {
|
||||
echo $OUTPUT->header();
|
||||
}
|
||||
|
||||
report_helper::save_selected_report($courseid, $manageurl);
|
||||
|
||||
// Print the selected dropdown.
|
||||
$managerules = get_string('managerules', 'tool_monitor');
|
||||
report_helper::print_report_selector($managerules);
|
||||
|
||||
echo $OUTPUT->heading(get_string('managerules', 'tool_monitor'));
|
||||
$status = get_config('tool_monitor', 'enablemonitor');
|
||||
$help = new help_icon('enablehelp', 'tool_monitor');
|
||||
|
28
admin/tool/monitor/tests/behat/course_report_monitor.feature
Normal file
28
admin/tool/monitor/tests/behat/course_report_monitor.feature
Normal file
@ -0,0 +1,28 @@
|
||||
@tool @tool_monitor
|
||||
Feature: In a course administration page, navigate through report page, test for course event monitor page
|
||||
In order to navigate through report page
|
||||
As an admin
|
||||
Go to course administration -> reports -> Event monitoring rules
|
||||
|
||||
Background:
|
||||
Given the following "courses" exist:
|
||||
| fullname | shortname | category | groupmode | enablecompletion |
|
||||
| Course 1 | C1 | 0 | 1 | 1 |
|
||||
And the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
| student1 | Student | 1 | student1@example.com |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| admin | C1 | editingteacher |
|
||||
| student1 | C1 | student |
|
||||
|
||||
@javascript
|
||||
Scenario: Selector should be available in the course event monitoring page
|
||||
Given I log in as "admin"
|
||||
And I navigate to "Reports > Event monitoring rules" in site administration
|
||||
And I click on "Enable" "link"
|
||||
And I am on "Course 1" course homepage
|
||||
When I navigate to "Reports > Event monitoring rules" in current page administration
|
||||
Then "Report" "field" should exist
|
||||
And the "Report" select box should contain "Event monitoring rules"
|
||||
And the field "Report" matches value "Event monitoring rules"
|
88
lib/classes/report_helper.php
Normal file
88
lib/classes/report_helper.php
Normal file
@ -0,0 +1,88 @@
|
||||
<?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/>.
|
||||
|
||||
/**
|
||||
* Report plugins helper class
|
||||
*
|
||||
* @package core
|
||||
* @subpackage report
|
||||
* @copyright 2021 Sujith Haridasan
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace core;
|
||||
use moodle_url;
|
||||
use url_select;
|
||||
|
||||
/**
|
||||
* A helper class with static methods to help report plugins
|
||||
*
|
||||
* @package core
|
||||
* @copyright 2021 Sujith Haridasan
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class report_helper {
|
||||
/**
|
||||
* Print the selector dropdown
|
||||
*
|
||||
* @param string $pluginname The report plugin where the header is modified
|
||||
* @return void
|
||||
*/
|
||||
public static function print_report_selector(string $pluginname):void {
|
||||
global $OUTPUT, $PAGE;
|
||||
|
||||
if ($reportnode = $PAGE->settingsnav->find('coursereports', \navigation_node::TYPE_CONTAINER)) {
|
||||
if ($children = $reportnode->children) {
|
||||
// Menu to select report pages to navigate.
|
||||
$activeurl = '';
|
||||
foreach ($children as $key => $node) {
|
||||
$name = $node->text;
|
||||
|
||||
$url = $node->action()->out(false);
|
||||
$menu[$url] = $name;
|
||||
if ($name === $pluginname) {
|
||||
$activeurl = $url;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($menu)) {
|
||||
$select = new url_select($menu, $activeurl, null, 'choosecoursereport');
|
||||
$select->set_label(get_string('report'), ['class' => 'accesshide']);
|
||||
$select->attributes['style'] = "margin-bottom: 1.5rem";
|
||||
$select->class .= " mb-4";
|
||||
echo $OUTPUT->render($select);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the last selected report in the session
|
||||
*
|
||||
* @param int $id The course id
|
||||
* @param moodle_url $url The moodle url
|
||||
* @return void
|
||||
*/
|
||||
public static function save_selected_report(int $id, moodle_url $url):void {
|
||||
global $USER;
|
||||
|
||||
// Last selected report.
|
||||
if (!isset($USER->course_last_report)) {
|
||||
$USER->course_last_report = [];
|
||||
}
|
||||
$USER->course_last_report[$id] = $url;
|
||||
}
|
||||
}
|
@ -4491,8 +4491,9 @@ class settings_navigation extends navigation_node {
|
||||
|
||||
// View course reports.
|
||||
if ($adminoptions->reports) {
|
||||
$reportnav = $coursenode->add(get_string('reports'), null, self::TYPE_CONTAINER, null, 'coursereports',
|
||||
new pix_icon('i/stats', ''));
|
||||
$reportnav = $coursenode->add(get_string('reports'),
|
||||
new moodle_url('/report/view.php', ['courseid' => $coursecontext->instanceid]),
|
||||
self::TYPE_CONTAINER, null, 'coursereports', new pix_icon('i/stats', ''));
|
||||
$coursereports = core_component::get_plugin_list('coursereport');
|
||||
foreach ($coursereports as $report => $dir) {
|
||||
$libfile = $CFG->dirroot.'/course/report/'.$report.'/lib.php';
|
||||
|
112
lib/tests/report_helper_test.php
Normal file
112
lib/tests/report_helper_test.php
Normal file
@ -0,0 +1,112 @@
|
||||
<?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/>.
|
||||
|
||||
/**
|
||||
* Tests for report_helper.
|
||||
*
|
||||
* @package core
|
||||
* @category test
|
||||
* @copyright 2021 Sujith Haridasan
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace core;
|
||||
|
||||
use moodle_url;
|
||||
use core\report_helper;
|
||||
|
||||
/**
|
||||
* Tests the functions for report_helper class.
|
||||
*/
|
||||
class report_helper_test extends \advanced_testcase {
|
||||
/**
|
||||
* Data provider for testing selected report for same and different courses
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function data_selected_report():array {
|
||||
return [
|
||||
['course_url_id' => [
|
||||
['url' => '/test', 'id' => 1],
|
||||
['url' => '/foo', 'id' => 1]]
|
||||
],
|
||||
['course_url_id' => [
|
||||
['url' => '/test', 'id' => 1],
|
||||
['url' => '/foo/bar', 'id' => 2]]
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Testing selected report saved in $USER session.
|
||||
*
|
||||
* @dataProvider data_selected_report
|
||||
* @param array $courseurlid The array has both course url and course id
|
||||
*/
|
||||
public function test_save_selected_report(array $courseurlid):void {
|
||||
global $USER;
|
||||
|
||||
$url1 = new moodle_url($courseurlid[0]['url']);
|
||||
$courseid1 = $courseurlid[0]['id'];
|
||||
report_helper::save_selected_report($courseid1, $url1);
|
||||
|
||||
$this->assertEquals($USER->course_last_report[$courseid1], $url1);
|
||||
|
||||
$url2 = new moodle_url($courseurlid[1]['url']);
|
||||
$courseid2 = $courseurlid[1]['id'];
|
||||
report_helper::save_selected_report($courseid2, $url2);
|
||||
|
||||
$this->assertEquals($USER->course_last_report[$courseid2], $url2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Testing the report selector dropdown shown.
|
||||
*
|
||||
* Verify that the dropdowns have the pages to be displayed.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function test_print_report_selector():void {
|
||||
global $PAGE;
|
||||
|
||||
$this->resetAfterTest();
|
||||
|
||||
$user = $this->getDataGenerator()->create_user();
|
||||
|
||||
$PAGE->set_url('/');
|
||||
|
||||
$course = $this->getDataGenerator()->create_course();
|
||||
$PAGE->set_course($course);
|
||||
|
||||
$this->getDataGenerator()->enrol_user($user->id, $course->id, 'teacher');
|
||||
|
||||
$this->setUser($user);
|
||||
|
||||
ob_start();
|
||||
report_helper::print_report_selector('Logs');
|
||||
$output = $this->getActualOutput();
|
||||
ob_end_clean();
|
||||
|
||||
$log = '<option value="/report/log/index.php?id=' . $course->id .'" selected>Logs</option>';
|
||||
$competency = '<option value="/report/competency/index.php?id=' . $course->id . '" >Competency breakdown</option>';
|
||||
$loglive = '<option value="/report/loglive/index.php?id=' . $course->id . '" >Live logs</option>';
|
||||
$participation = '<option value="/report/participation/index.php?id=' . $course->id . '" >Course participation</option>';
|
||||
$this->assertStringContainsString($log, $output);
|
||||
$this->assertStringContainsString($competency, $output);
|
||||
$this->assertStringContainsString($loglive, $output);
|
||||
$this->assertStringContainsString($participation, $output);
|
||||
}
|
||||
}
|
@ -22,6 +22,8 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
use core\report_helper;
|
||||
|
||||
require_once(__DIR__ . '/../../config.php');
|
||||
|
||||
$id = required_param('id', PARAM_INT);
|
||||
@ -71,9 +73,14 @@ $PAGE->set_title($title);
|
||||
$PAGE->set_heading($coursename);
|
||||
$PAGE->set_pagelayout('incourse');
|
||||
|
||||
report_helper::save_selected_report($id, $navurl);
|
||||
|
||||
$output = $PAGE->get_renderer('report_competency');
|
||||
|
||||
echo $output->header();
|
||||
$pluginname = get_string('pluginname', 'report_competency');
|
||||
report_helper::print_report_selector($pluginname);
|
||||
|
||||
$baseurl = new moodle_url('/report/competency/index.php');
|
||||
$nav = new \report_competency\output\user_course_navigation($currentuser, $course->id, $baseurl, $currentmodule);
|
||||
$top = $output->render($nav);
|
||||
|
@ -0,0 +1,26 @@
|
||||
@report @report_competency
|
||||
Feature: In a course administration page, navigate through report page, test for course competency page
|
||||
In order to navigate through report page
|
||||
As an admin
|
||||
Go to course administration -> reports -> competency breackdown
|
||||
|
||||
Background:
|
||||
Given the following "courses" exist:
|
||||
| fullname | shortname | category | groupmode |
|
||||
| Course 1 | C1 | 0 | 1 |
|
||||
And the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
| student1 | Student | 1 | student1@example.com |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| admin | C1 | editingteacher |
|
||||
| student1 | C1 | student |
|
||||
|
||||
@javascript
|
||||
Scenario: Selector should be available in the course competency page
|
||||
Given I log in as "admin"
|
||||
And I am on "Course 1" course homepage
|
||||
When I navigate to "Reports > Competency breakdown" in current page administration
|
||||
Then "Report" "field" should exist
|
||||
And the "Report" select box should contain "Competency breakdown"
|
||||
And the field "Report" matches value "Competency breakdown"
|
@ -24,6 +24,8 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
use core\report_helper;
|
||||
|
||||
require_once(__DIR__.'/../../config.php');
|
||||
require_once("{$CFG->libdir}/completionlib.php");
|
||||
|
||||
@ -113,6 +115,8 @@ foreach ($completion->get_criteria() as $criterion) {
|
||||
}
|
||||
}
|
||||
|
||||
report_helper::save_selected_report($courseid, $url);
|
||||
|
||||
// Can logged in user mark users as complete?
|
||||
// (if the logged in user has a role defined in the role criteria)
|
||||
$allow_marking = false;
|
||||
@ -156,6 +160,9 @@ if ($csv) {
|
||||
$PAGE->set_heading($course->fullname);
|
||||
|
||||
echo $OUTPUT->header();
|
||||
// Print the selected dropdown.
|
||||
$pluginname = get_string('pluginname', 'report_completion');
|
||||
report_helper::print_report_selector($pluginname);
|
||||
|
||||
// Handle groups (if enabled)
|
||||
groups_print_course_menu($course, $CFG->wwwroot.'/report/completion/index.php?course='.$course->id);
|
||||
|
@ -0,0 +1,32 @@
|
||||
@report @report_completion
|
||||
Feature: In a course administration page, navigate through report page, test for course completion page
|
||||
In order to navigate through report page
|
||||
As an admin
|
||||
Go to course administration -> reports -> course completion
|
||||
|
||||
Background:
|
||||
Given the following "courses" exist:
|
||||
| fullname | shortname | category | groupmode | enablecompletion |
|
||||
| Course 1 | C1 | 0 | 1 | 1 |
|
||||
And the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
| student1 | Student | 1 | student1@example.com |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| admin | C1 | editingteacher |
|
||||
| student1 | C1 | student |
|
||||
|
||||
@javascript
|
||||
Scenario: Selector should be available in the course completion page
|
||||
Given I log in as "admin"
|
||||
And I am on "Course 1" course homepage with editing mode on
|
||||
And I navigate to "Course completion" in current page administration
|
||||
And I expand all fieldsets
|
||||
And I set the following fields to these values:
|
||||
| id_criteria_self | 1 |
|
||||
And I press "Save changes"
|
||||
And I am on "Course 1" course homepage
|
||||
When I navigate to "Reports > Course completion" in current page administration
|
||||
Then "Report" "field" should exist
|
||||
And the "Report" select box should contain "Course completion"
|
||||
And the field "Report" matches value "Course completion"
|
@ -22,6 +22,8 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
use core\report_helper;
|
||||
|
||||
require_once(__DIR__ . '/../../config.php');
|
||||
require_once($CFG->libdir . '/adminlib.php');
|
||||
|
||||
@ -152,8 +154,16 @@ if ($model->get_analyser()::one_sample_per_analysable()) {
|
||||
redirect($redirecturl);
|
||||
}
|
||||
}
|
||||
|
||||
echo $OUTPUT->header();
|
||||
|
||||
if ($course) {
|
||||
report_helper::save_selected_report($course->id, $url);
|
||||
// Print selected drop down.
|
||||
$pluginname = get_string('pluginname', 'report_insights');
|
||||
report_helper::print_report_selector($pluginname);
|
||||
}
|
||||
|
||||
$renderable = new \report_insights\output\insights_list($model, $context, $othermodels, $page, $perpage);
|
||||
echo $renderer->render($renderable);
|
||||
|
||||
|
@ -22,6 +22,8 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
use core\report_helper;
|
||||
|
||||
require('../../config.php');
|
||||
require_once($CFG->dirroot.'/course/lib.php');
|
||||
require_once($CFG->dirroot.'/report/log/locallib.php');
|
||||
@ -103,6 +105,8 @@ $url = new moodle_url("/report/log/index.php", $params);
|
||||
$PAGE->set_url('/report/log/index.php', array('id' => $id));
|
||||
$PAGE->set_pagelayout('report');
|
||||
|
||||
report_helper::save_selected_report($id, $url);
|
||||
|
||||
// Get course details.
|
||||
$course = null;
|
||||
if ($id) {
|
||||
@ -163,6 +167,9 @@ if (empty($readers)) {
|
||||
|
||||
if (empty($logformat)) {
|
||||
echo $output->header();
|
||||
// Print selector dropdown.
|
||||
$pluginname = get_string('pluginname', 'report_log');
|
||||
report_helper::print_report_selector($pluginname);
|
||||
$userinfo = get_string('allparticipants');
|
||||
$dateinfo = get_string('alldays');
|
||||
|
||||
@ -184,6 +191,9 @@ if (empty($readers)) {
|
||||
}
|
||||
} else {
|
||||
echo $output->header();
|
||||
// Print selector dropdown.
|
||||
$pluginname = get_string('pluginname', 'report_log');
|
||||
report_helper::print_report_selector($pluginname);
|
||||
echo $output->heading(get_string('chooselogs') .':');
|
||||
echo $output->render($reportlog);
|
||||
}
|
||||
|
53
report/log/tests/behat/course_report_log.feature
Normal file
53
report/log/tests/behat/course_report_log.feature
Normal file
@ -0,0 +1,53 @@
|
||||
@report @report_log
|
||||
Feature: In a course administration page, navigate through report page, test for report log page
|
||||
In order to navigate through report page
|
||||
As an admin
|
||||
Go to course administration -> reports
|
||||
The reports page by default points to logs page
|
||||
|
||||
Background:
|
||||
Given the following "courses" exist:
|
||||
| fullname | shortname | category | groupmode |
|
||||
| Course 1 | C1 | 0 | 1 |
|
||||
| Course 2 | C2 | 0 | 1 |
|
||||
| Course 3 | C3 | 0 | 1 |
|
||||
And the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
| student1 | Student | 1 | student1@example.com |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| admin | C1 | editingteacher |
|
||||
| student1 | C1 | student |
|
||||
| admin | C2 | editingteacher |
|
||||
| student1 | C2 | student |
|
||||
| admin | C3 | editingteacher |
|
||||
| student1 | C3 | student |
|
||||
|
||||
@javascript
|
||||
Scenario: Default page accessed for Report is log page
|
||||
Given I log in as "admin"
|
||||
And I am on "Course 1" course homepage
|
||||
When I navigate to "Reports" in current page administration
|
||||
Then "Report" "field" should exist
|
||||
And the "Report" select box should contain "Logs"
|
||||
And the field "Report" matches value "Logs"
|
||||
|
||||
@javascript
|
||||
Scenario: Verify the session setting is saved for different courses
|
||||
Given I log in as "admin"
|
||||
And I am on "Course 1" course homepage
|
||||
And I navigate to "Reports" in current page administration
|
||||
And "Report" "field" should exist
|
||||
And the "Report" select box should contain "Logs"
|
||||
And the field "Report" matches value "Logs"
|
||||
# Now select the Live logs for Course 2
|
||||
And I am on "Course 2" course homepage
|
||||
And I navigate to "Reports > Live logs" in current page administration
|
||||
# now come back to course 1 and see if the default is logs page or not
|
||||
And I am on "Course 1" course homepage
|
||||
And I navigate to "Reports" in current page administration
|
||||
And the "Report" select box should contain "Logs"
|
||||
# Now come back again to Course 2
|
||||
And I am on "Course 2" course homepage
|
||||
When I navigate to "Reports" in current page administration
|
||||
Then the field "Report" matches value "Live logs"
|
@ -24,6 +24,8 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
use core\report_helper;
|
||||
|
||||
require('../../config.php');
|
||||
require_once($CFG->libdir.'/adminlib.php');
|
||||
require_once($CFG->dirroot.'/course/lib.php');
|
||||
@ -59,6 +61,8 @@ $url = new moodle_url("/report/loglive/index.php", $params);
|
||||
$PAGE->set_url($url);
|
||||
$PAGE->set_pagelayout('report');
|
||||
|
||||
report_helper::save_selected_report($id, $url);
|
||||
|
||||
$renderable = new report_loglive_renderable($logreader, $id, $url, 0, $page);
|
||||
$refresh = $renderable->get_refresh_rate();
|
||||
$logreader = $renderable->selectedlogreader;
|
||||
@ -83,6 +87,10 @@ $PAGE->set_heading("$coursename: $strlivelogs ($strupdatesevery)");
|
||||
|
||||
$output = $PAGE->get_renderer('report_loglive');
|
||||
echo $output->header();
|
||||
|
||||
// Print selector dropdown.
|
||||
$pluginname = get_string('pluginname', 'report_loglive');
|
||||
report_helper::print_report_selector($pluginname);
|
||||
echo $output->reader_selector($renderable);
|
||||
echo $output->toggle_liveupdate_button($renderable);
|
||||
echo $output->render($renderable);
|
||||
|
26
report/loglive/tests/behat/course_report_loglive.feature
Normal file
26
report/loglive/tests/behat/course_report_loglive.feature
Normal file
@ -0,0 +1,26 @@
|
||||
@report @report_loglive
|
||||
Feature: In a course administration page, navigate through report page, test for report live log page
|
||||
In order to navigate through report page
|
||||
As an admin
|
||||
Go to the course administration -> reports -> live logs
|
||||
|
||||
Background:
|
||||
Given the following "courses" exist:
|
||||
| fullname | shortname | category | groupmode |
|
||||
| Course 1 | C1 | 0 | 1 |
|
||||
And the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
| student1 | Student | 1 | student1@example.com |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| admin | C1 | editingteacher |
|
||||
| student1 | C1 | student |
|
||||
|
||||
@javascript
|
||||
Scenario: Selector should be available in live logs page
|
||||
Given I log in as "admin"
|
||||
And I am on "Course 1" course homepage
|
||||
When I navigate to "Reports > Live logs" in current page administration
|
||||
Then "Report" "field" should exist
|
||||
And the "Report" select box should contain "Live logs"
|
||||
And the field "Report" matches value "Live logs"
|
@ -23,6 +23,8 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
use core\report_helper;
|
||||
|
||||
require('../../config.php');
|
||||
require_once($CFG->dirroot.'/report/outline/locallib.php');
|
||||
|
||||
@ -47,6 +49,9 @@ require_login($course);
|
||||
$context = context_course::instance($course->id);
|
||||
require_capability('report/outline:view', $context);
|
||||
|
||||
$url = new moodle_url('/report/outline/index.php', ['id' => $id]);
|
||||
report_helper::save_selected_report($id, $url);
|
||||
|
||||
// Handle form to filter access logs by date.
|
||||
$filterform = new \report_outline\filter_form();
|
||||
$filterform->set_data(['id' => $course->id, 'filterstartdate' => $startdate, 'filterenddate' => $enddate]);
|
||||
@ -87,6 +92,10 @@ $strrelatedblogentries = get_string('relatedblogentries', 'blog');
|
||||
$PAGE->set_title($course->shortname .': '. $stractivityreport);
|
||||
$PAGE->set_heading($course->fullname);
|
||||
echo $OUTPUT->header();
|
||||
|
||||
// Print selector drop down.
|
||||
$pluginname = get_string('pluginname', 'report_outline');
|
||||
report_helper::print_report_selector($pluginname);
|
||||
echo $OUTPUT->heading(format_string($course->fullname));
|
||||
|
||||
list($uselegacyreader, $useinternalreader, $minloginternalreader, $logtable) = report_outline_get_common_log_variables();
|
||||
|
26
report/outline/tests/behat/course_report_outline.feature
Normal file
26
report/outline/tests/behat/course_report_outline.feature
Normal file
@ -0,0 +1,26 @@
|
||||
@report @report_outline
|
||||
Feature: In a course administration page, navigate through report page, test for activity report page
|
||||
In order to navigate through report page
|
||||
As an admin
|
||||
Go to course administration -> Reports -> Activity report
|
||||
|
||||
Background:
|
||||
Given the following "courses" exist:
|
||||
| fullname | shortname | category | groupmode |
|
||||
| Course 1 | C1 | 0 | 1 |
|
||||
And the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
| student1 | Student | 1 | student1@example.com |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| admin | C1 | editingteacher |
|
||||
| student1 | C1 | student |
|
||||
|
||||
@javascript
|
||||
Scenario: Selector should be available in course activiy report page
|
||||
Given I log in as "admin"
|
||||
And I am on "Course 1" course homepage
|
||||
When I navigate to "Reports > Activity report" in current page administration
|
||||
Then "Report" "field" should exist
|
||||
And the "Report" select box should contain "Activity report"
|
||||
And the field "Report" matches value "Activity report"
|
@ -23,6 +23,8 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
use core\report_helper;
|
||||
|
||||
require('../../config.php');
|
||||
require_once($CFG->dirroot.'/lib/tablelib.php');
|
||||
require_once($CFG->dirroot.'/notes/lib.php');
|
||||
@ -31,9 +33,6 @@ require_once($CFG->dirroot.'/report/participation/locallib.php');
|
||||
define('DEFAULT_PAGE_SIZE', 20);
|
||||
define('SHOW_ALL_PAGE_SIZE', 5000);
|
||||
|
||||
// Release session lock.
|
||||
\core\session\manager::write_close();
|
||||
|
||||
$id = required_param('id', PARAM_INT); // course id.
|
||||
$roleid = optional_param('roleid', 0, PARAM_INT); // which role to show
|
||||
$instanceid = optional_param('instanceid', 0, PARAM_INT); // instance we're looking at.
|
||||
@ -69,6 +68,8 @@ require_login($course);
|
||||
$context = context_course::instance($course->id);
|
||||
require_capability('report/participation:view', $context);
|
||||
|
||||
report_helper::save_selected_report($id, $url);
|
||||
|
||||
$strparticipation = get_string('participationreport');
|
||||
$strviews = get_string('views');
|
||||
$strposts = get_string('posts');
|
||||
@ -83,6 +84,12 @@ $PAGE->set_title(format_string($course->shortname, true, array('context' => $con
|
||||
$PAGE->set_heading(format_string($course->fullname, true, array('context' => $context)));
|
||||
echo $OUTPUT->header();
|
||||
|
||||
// Print the selector dropdown.
|
||||
$pluginname = get_string('pluginname', 'report_participation');
|
||||
report_helper::print_report_selector($pluginname);
|
||||
// Release session lock.
|
||||
\core\session\manager::write_close();
|
||||
|
||||
// Logs will not have been recorded before the course timecreated time.
|
||||
$minlog = $course->timecreated;
|
||||
$onlyuselegacyreader = false; // Use only legacy log table to aggregate records.
|
||||
|
@ -0,0 +1,26 @@
|
||||
@report @report_participation
|
||||
Feature: In a course administration page, navigate through report page, test for course participation page
|
||||
In order to navigate through report page
|
||||
As an admin
|
||||
Go to course administration -> Reports -> Course participation
|
||||
|
||||
Background:
|
||||
Given the following "courses" exist:
|
||||
| fullname | shortname | category | groupmode |
|
||||
| Course 1 | C1 | 0 | 1 |
|
||||
And the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
| student1 | Student | 1 | student1@example.com |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| admin | C1 | editingteacher |
|
||||
| student1 | C1 | student |
|
||||
|
||||
@javascript
|
||||
Scenario: Selector should be available in the course participation page
|
||||
Given I log in as "admin"
|
||||
And I am on "Course 1" course homepage
|
||||
When I navigate to "Reports > Course participation" in current page administration
|
||||
Then "Report" "field" should exist
|
||||
And the "Report" select box should contain "Course participation"
|
||||
And the field "Report" matches value "Course participation"
|
@ -23,11 +23,12 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
use core\report_helper;
|
||||
use \report_progress\local\helper;
|
||||
|
||||
require('../../config.php');
|
||||
require_once($CFG->libdir . '/completionlib.php');
|
||||
|
||||
use \report_progress\local\helper;
|
||||
|
||||
// Get course
|
||||
$id = required_param('course',PARAM_INT);
|
||||
$course = $DB->get_record('course',array('id'=>$id));
|
||||
@ -155,6 +156,8 @@ $grandtotal = $completion->get_num_tracked_users('', array(), $group);
|
||||
// Get user data
|
||||
$progress = array();
|
||||
|
||||
report_helper::save_selected_report($id, $url);
|
||||
|
||||
if ($total) {
|
||||
$progress = $completion->get_progress_all(
|
||||
implode(' AND ', $where),
|
||||
@ -192,6 +195,10 @@ if ($csv && $grandtotal && count($activities)>0) { // Only show CSV if there are
|
||||
$PAGE->set_title($strcompletion);
|
||||
$PAGE->set_heading($course->fullname);
|
||||
echo $OUTPUT->header();
|
||||
|
||||
// Print the selected dropdown.
|
||||
$pluginname = get_string('pluginname', 'report_progress');
|
||||
report_helper::print_report_selector($pluginname);
|
||||
$PAGE->requires->js_call_amd('report_progress/completion_override', 'init', [fullname($USER)]);
|
||||
|
||||
// Handle groups (if enabled).
|
||||
|
32
report/progress/tests/behat/course_report_progress.feature
Normal file
32
report/progress/tests/behat/course_report_progress.feature
Normal file
@ -0,0 +1,32 @@
|
||||
@report @report_progress
|
||||
Feature: In a course administration page, navigate through report page, test for selector in activity completion
|
||||
In order to view and override a student's activity completion status
|
||||
As a teacher
|
||||
Go to course administration -> Reports -> Activity completion
|
||||
|
||||
Background:
|
||||
Given the following "courses" exist:
|
||||
| fullname | shortname | format | enablecompletion |
|
||||
| Course 1 | C1 | topics | 1 |
|
||||
And the following "activities" exist:
|
||||
| activity | name | intro | course | idnumber | section | completion | completionview | completionusegrade | assignsubmission_onlinetext_enabled | submissiondrafts |
|
||||
| assign | my assignment | A1 desc | C1 | assign1 | 0 | 1 | 0 | | 0 | 0 |
|
||||
| assign | my assignment 2 | A2 desc | C1 | assign2 | 0 | 2 | 1 | | 0 | 0 |
|
||||
| assign | my assignment 3 | A3 desc | C1 | assign3 | 0 | 2 | 1 | 1 | 1 | 0 |
|
||||
And the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
| teacher1 | Teacher | One | teacher1@example.com |
|
||||
| student1 | Student | One | student1@example.com |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| teacher1 | C1 | editingteacher |
|
||||
| student1 | C1 | student |
|
||||
|
||||
@javascript
|
||||
Scenario: Selector should be available in the course acitivity completion page
|
||||
Given I log in as "admin"
|
||||
And I am on "Course 1" course homepage
|
||||
When I navigate to "Reports > Activity completion" in current page administration
|
||||
Then "Report" "field" should exist
|
||||
And the "Report" select box should contain "Activity completion"
|
||||
And the field "Report" matches value "Activity completion"
|
@ -23,6 +23,8 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
use core\report_helper;
|
||||
|
||||
require_once('../../config.php');
|
||||
require_once($CFG->dirroot.'/report/stats/locallib.php');
|
||||
require_once($CFG->libdir.'/adminlib.php');
|
||||
@ -74,6 +76,9 @@ $event = \report_stats\event\report_viewed::create(array('context' => $context,
|
||||
$event->trigger();
|
||||
stats_check_uptodate($course->id);
|
||||
|
||||
$url = new moodle_url('/report/stats/index.php', ['course' => $course->id]);
|
||||
report_helper::save_selected_report($courseid, $url);
|
||||
|
||||
if ($course->id == SITEID) {
|
||||
admin_externalpage_setup('reportstats', '', null, '', array('pagelayout'=>'report'));
|
||||
echo $OUTPUT->header();
|
||||
@ -86,6 +91,10 @@ if ($course->id == SITEID) {
|
||||
$PAGE->set_pagelayout('report');
|
||||
$PAGE->set_headingmenu(report_stats_mode_menu($course, $mode, $time, "$CFG->wwwroot/report/stats/index.php"));
|
||||
echo $OUTPUT->header();
|
||||
|
||||
// Print the selected dropdown.
|
||||
$pluginname = get_string('pluginname', 'report_stats');
|
||||
report_helper::print_report_selector($pluginname);
|
||||
}
|
||||
|
||||
report_stats_report($course, $report, $mode, $user, $roleid, $time);
|
||||
|
@ -1,6 +1,14 @@
|
||||
This files describes API changes in /report/* - plugins,
|
||||
information provided here is intended especially for developers.
|
||||
|
||||
=== 3.11 ===
|
||||
|
||||
* The new report plugin's can have drop down, which can be included by calling static
|
||||
methods save_selected_report and print_report_selector in lib/classes/report_helper.php.
|
||||
The save_selected_report helps to remember the most recently accessed report plugin.
|
||||
print_report_selector would help to show the dropdown, on the report page. Make sure
|
||||
to call print_report_selector after the header is printed/echoed.
|
||||
|
||||
=== 3.6 ===
|
||||
|
||||
* The final deprecation of xxx_delete_course callback means that this function will no longer be called.
|
||||
|
46
report/view.php
Normal file
46
report/view.php
Normal file
@ -0,0 +1,46 @@
|
||||
<?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/>.
|
||||
|
||||
/**
|
||||
* Page to view the course reports
|
||||
*
|
||||
* @package core
|
||||
* @subpackage report
|
||||
* @copyright 2021 Sujith Haridasan
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
require_once(__DIR__ . '/../config.php');
|
||||
|
||||
// Course id.
|
||||
$courseid = required_param('courseid', PARAM_INT);
|
||||
|
||||
$PAGE->set_url(new moodle_url('/report/view.php', array('courseid' => $courseid)));
|
||||
|
||||
// Basic access checks.
|
||||
if (!$course = $DB->get_record('course', array('id' => $courseid))) {
|
||||
print_error('invalidcourseid');
|
||||
}
|
||||
require_login($course);
|
||||
|
||||
// Get the last viewed Page.
|
||||
if (!isset($USER->course_last_report[$courseid])) {
|
||||
$lasturl = new moodle_url('/report/log/index.php', ['id' => $courseid]);
|
||||
} else {
|
||||
$lasturl = $USER->course_last_report[$courseid];
|
||||
}
|
||||
|
||||
redirect($lasturl);
|
Loading…
x
Reference in New Issue
Block a user