mirror of
https://github.com/moodle/moodle.git
synced 2025-04-13 12:32:08 +02:00
Merge branch 'MDL-80745-main' of https://github.com/rezaies/moodle
This commit is contained in:
commit
72f0d10e11
23
.upgradenotes/MDL-80745-2024060602320785.yml
Normal file
23
.upgradenotes/MDL-80745-2024060602320785.yml
Normal file
@ -0,0 +1,23 @@
|
||||
issueNumber: MDL-80745
|
||||
notes:
|
||||
core_grades:
|
||||
- message: >
|
||||
The `core_grades_renderer::group_selector()` method has been deprecated.
|
||||
Please use `\core_course\output\actionbar\renderer` to render a
|
||||
`group_selector` renderable instead.
|
||||
type: deprecated
|
||||
gradereport_grader:
|
||||
- message: >
|
||||
The `gradereport_grader/group` ESM has been deprecated. Please use
|
||||
`core_course/actionbar/group` instead.
|
||||
type: deprecated
|
||||
gradereport_singleview:
|
||||
- message: >
|
||||
The `gradereport_singleview/group` ESM has been deprecated. Please use
|
||||
`core_course/actionbar/group` instead.
|
||||
type: deprecated
|
||||
gradereport_user:
|
||||
- message: >
|
||||
The `gradereport_user/group` ESM has been deprecated. Please use
|
||||
`core_course/actionbar/group` instead.
|
||||
type: deprecated
|
11
course/amd/build/actionbar/group.min.js
vendored
Normal file
11
course/amd/build/actionbar/group.min.js
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
define("core_course/actionbar/group",["exports","core_group/comboboxsearch/group"],(function(_exports,_group){var obj;Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_group=(obj=_group)&&obj.__esModule?obj:{default:obj};
|
||||
/**
|
||||
* Allow the user to search for groups in the action bar.
|
||||
*
|
||||
* @module core_course/actionbar/group
|
||||
* @copyright 2024 Shamim Rezaie <shamim@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class Group extends _group.default{constructor(baseUrl){super(),function(obj,key,value){key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value}(this,"baseUrl",void 0),this.baseUrl=baseUrl}static init(baseUrl){return new Group(baseUrl)}selectOneLink(groupID){const url=new URL(this.baseUrl);return url.searchParams.set("groupsearchvalue",this.getSearchTerm()),url.searchParams.set("group",groupID),url.toString()}}return _exports.default=Group,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=group.min.js.map
|
1
course/amd/build/actionbar/group.min.js.map
Normal file
1
course/amd/build/actionbar/group.min.js.map
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"group.min.js","sources":["../../src/actionbar/group.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\nimport GroupSearch from 'core_group/comboboxsearch/group';\n\n/**\n * Allow the user to search for groups in the action bar.\n *\n * @module core_course/actionbar/group\n * @copyright 2024 Shamim Rezaie <shamim@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\nexport default class Group extends GroupSearch {\n\n baseUrl;\n\n /**\n * Construct the class.\n * @param {string} baseUrl The base URL for the page.\n */\n constructor(baseUrl) {\n super();\n this.baseUrl = baseUrl;\n }\n\n /**\n * Allow the class to be invoked via PHP.\n *\n * @param {string} baseUrl The base URL for the page.\n * @returns {Group}\n */\n static init(baseUrl) {\n return new Group(baseUrl);\n }\n\n /**\n * Build up the link that is dedicated to a particular result.\n *\n * @param {Number} groupID The ID of the group selected.\n * @returns {string}\n */\n selectOneLink(groupID) {\n const url = new URL(this.baseUrl);\n url.searchParams.set('groupsearchvalue', this.getSearchTerm());\n url.searchParams.set('group', groupID);\n\n return url.toString();\n }\n}\n"],"names":["Group","GroupSearch","constructor","baseUrl","selectOneLink","groupID","url","URL","this","searchParams","set","getSearchTerm","toString"],"mappings":";;;;;;;;MAwBqBA,cAAcC,eAQ/BC,YAAYC,uLAEHA,QAAUA,oBASPA,gBACD,IAAIH,MAAMG,SASrBC,cAAcC,eACJC,IAAM,IAAIC,IAAIC,KAAKL,gBACzBG,IAAIG,aAAaC,IAAI,mBAAoBF,KAAKG,iBAC9CL,IAAIG,aAAaC,IAAI,QAASL,SAEvBC,IAAIM"}
|
61
course/amd/src/actionbar/group.js
Normal file
61
course/amd/src/actionbar/group.js
Normal file
@ -0,0 +1,61 @@
|
||||
// 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/>.
|
||||
|
||||
import GroupSearch from 'core_group/comboboxsearch/group';
|
||||
|
||||
/**
|
||||
* Allow the user to search for groups in the action bar.
|
||||
*
|
||||
* @module core_course/actionbar/group
|
||||
* @copyright 2024 Shamim Rezaie <shamim@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
export default class Group extends GroupSearch {
|
||||
|
||||
baseUrl;
|
||||
|
||||
/**
|
||||
* Construct the class.
|
||||
* @param {string} baseUrl The base URL for the page.
|
||||
*/
|
||||
constructor(baseUrl) {
|
||||
super();
|
||||
this.baseUrl = baseUrl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow the class to be invoked via PHP.
|
||||
*
|
||||
* @param {string} baseUrl The base URL for the page.
|
||||
* @returns {Group}
|
||||
*/
|
||||
static init(baseUrl) {
|
||||
return new Group(baseUrl);
|
||||
}
|
||||
|
||||
/**
|
||||
* Build up the link that is dedicated to a particular result.
|
||||
*
|
||||
* @param {Number} groupID The ID of the group selected.
|
||||
* @returns {string}
|
||||
*/
|
||||
selectOneLink(groupID) {
|
||||
const url = new URL(this.baseUrl);
|
||||
url.searchParams.set('groupsearchvalue', this.getSearchTerm());
|
||||
url.searchParams.set('group', groupID);
|
||||
|
||||
return url.toString();
|
||||
}
|
||||
}
|
113
course/classes/output/actionbar/group_selector.php
Normal file
113
course/classes/output/actionbar/group_selector.php
Normal file
@ -0,0 +1,113 @@
|
||||
<?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_course\output\actionbar;
|
||||
|
||||
use core\output\comboboxsearch;
|
||||
use renderable;
|
||||
use renderer_base;
|
||||
use stdClass;
|
||||
use templatable;
|
||||
|
||||
/**
|
||||
* Renderable class for the group selector element in the action bar.
|
||||
*
|
||||
* @package core_course
|
||||
* @copyright 2024 Shamim Rezaie <shamim@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class group_selector implements renderable, templatable {
|
||||
|
||||
/**
|
||||
* @var stdClass The course object.
|
||||
*/
|
||||
protected $course;
|
||||
|
||||
/**
|
||||
* The class constructor.
|
||||
*
|
||||
* @param stdClass $course The course object.
|
||||
*/
|
||||
public function __construct(stdClass $course) {
|
||||
$this->course = $course;
|
||||
}
|
||||
|
||||
/**
|
||||
* Export the data for the mustache template.
|
||||
*
|
||||
* @param renderer_base $output The renderer that will be used to render the output.
|
||||
* @return array
|
||||
*/
|
||||
public function export_for_template(renderer_base $output) {
|
||||
global $USER, $OUTPUT;
|
||||
|
||||
$course = $this->course;
|
||||
$groupmode = $course->groupmode;
|
||||
|
||||
$sbody = $OUTPUT->render_from_template('core_group/comboboxsearch/searchbody', [
|
||||
'courseid' => $course->id,
|
||||
'currentvalue' => optional_param('groupsearchvalue', '', PARAM_NOTAGS),
|
||||
'instance' => rand(),
|
||||
]);
|
||||
|
||||
$label = $groupmode == VISIBLEGROUPS ? get_string('selectgroupsvisible') : get_string('selectgroupsseparate');
|
||||
|
||||
$buttondata = ['label' => $label];
|
||||
|
||||
$context = \context_course::instance($course->id);
|
||||
|
||||
if ($groupmode == VISIBLEGROUPS || has_capability('moodle/site:accessallgroups', $context)) {
|
||||
$allowedgroups = groups_get_all_groups($course->id, 0, $course->defaultgroupingid);
|
||||
} else {
|
||||
$allowedgroups = groups_get_all_groups($course->id, $USER->id, $course->defaultgroupingid);
|
||||
}
|
||||
|
||||
$activegroup = groups_get_course_group($course, true, $allowedgroups);
|
||||
$buttondata['group'] = $activegroup;
|
||||
|
||||
if ($activegroup) {
|
||||
$group = groups_get_group($activegroup);
|
||||
$buttondata['selectedgroup'] = format_string($group->name, true, ['context' => $context]);
|
||||
} else if ($activegroup === 0) {
|
||||
$buttondata['selectedgroup'] = get_string('allparticipants');
|
||||
}
|
||||
|
||||
$groupdropdown = new comboboxsearch(
|
||||
false,
|
||||
$OUTPUT->render_from_template('core_group/comboboxsearch/group_selector', $buttondata),
|
||||
$sbody,
|
||||
'group-search',
|
||||
'groupsearchwidget',
|
||||
'groupsearchdropdown overflow-auto',
|
||||
null,
|
||||
true,
|
||||
$label,
|
||||
'group',
|
||||
$activegroup
|
||||
);
|
||||
|
||||
return $groupdropdown->export_for_template($OUTPUT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the template for the group selector.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_template(): string {
|
||||
return 'core/comboboxsearch';
|
||||
}
|
||||
}
|
38
course/classes/output/actionbar/renderer.php
Normal file
38
course/classes/output/actionbar/renderer.php
Normal file
@ -0,0 +1,38 @@
|
||||
<?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_course\output\actionbar;
|
||||
|
||||
/**
|
||||
* Renderer class for the action bar.
|
||||
*
|
||||
* @package core_course
|
||||
* @copyright 2024 Shamim Rezaie <shamim@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class renderer extends \plugin_renderer_base {
|
||||
|
||||
/**
|
||||
* Renders the group selector trigger element in the action bar.
|
||||
*
|
||||
* @param group_selector $groupselector The group selector object.
|
||||
* @return string The HTML output.
|
||||
*/
|
||||
protected function render_group_selector(group_selector $groupselector) {
|
||||
$data = $groupselector->export_for_template($this);
|
||||
return parent::render_from_template($groupselector->get_template(), $data);
|
||||
}
|
||||
}
|
@ -47,10 +47,19 @@ class core_grades_renderer extends plugin_renderer_base {
|
||||
* @param object $course The course object.
|
||||
* @param string|null $groupactionbaseurl This parameter has been deprecated since 4.4 and should not be used anymore.
|
||||
* @return string|null The raw HTML to render.
|
||||
* @deprecated since 4.5. Use \core_course\output\actionbar\renderer' instead.
|
||||
* @todo Final deprecation in Moodle 6.0. See MDL-82116.
|
||||
*/
|
||||
#[\core\attribute\deprecated(
|
||||
replacement: null,
|
||||
since: '4.5',
|
||||
reason: 'Moved to \core_course\output\actionbar\renderer.'
|
||||
)]
|
||||
public function group_selector(object $course, ?string $groupactionbaseurl = null): ?string {
|
||||
global $USER;
|
||||
|
||||
\core\deprecation::emit_deprecation_if_present([$this, __FUNCTION__]);
|
||||
|
||||
if ($groupactionbaseurl !== null) {
|
||||
debugging(
|
||||
'The $groupactionbaseurl argument has been deprecated. Please remove it from your method calls.',
|
||||
|
2
grade/report/grader/amd/build/group.min.js
vendored
2
grade/report/grader/amd/build/group.min.js
vendored
@ -1,3 +1,3 @@
|
||||
define("gradereport_grader/group",["exports","core_group/comboboxsearch/group","core/url"],(function(_exports,_group,_url){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_group=_interopRequireDefault(_group),_url=_interopRequireDefault(_url);class Group extends _group.default{constructor(){var obj,key,value;super(),value=void 0,(key="courseID")in(obj=this)?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,this.selectors={...this.selectors,courseid:'[data-region="courseid"]'};const component=document.querySelector(this.componentSelector());this.courseID=component.querySelector(this.selectors.courseid).dataset.courseid}static init(){return new Group}selectOneLink(groupID){return _url.default.relativeUrl("/grade/report/grader/index.php",{id:this.courseID,groupsearchvalue:this.getSearchTerm(),group:groupID},!1)}}return _exports.default=Group,_exports.default}));
|
||||
define("gradereport_grader/group",["exports","core_group/comboboxsearch/group","core/url"],(function(_exports,_group,_url){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_group=_interopRequireDefault(_group),_url=_interopRequireDefault(_url);class Group extends _group.default{constructor(){var obj,key,value;window.console.warn("The gradereport_grader/group module has been deprecated since Moodle 4.5. Please use core_course/actionbar/group instead."),super(),value=void 0,(key="courseID")in(obj=this)?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,this.selectors={...this.selectors,courseid:'[data-region="courseid"]'};const component=document.querySelector(this.componentSelector());this.courseID=component.querySelector(this.selectors.courseid).dataset.courseid}static init(){return new Group}selectOneLink(groupID){return _url.default.relativeUrl("/grade/report/grader/index.php",{id:this.courseID,groupsearchvalue:this.getSearchTerm(),group:groupID},!1)}}return _exports.default=Group,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=group.min.js.map
|
@ -1 +1 @@
|
||||
{"version":3,"file":"group.min.js","sources":["../src/group.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Allow the user to search for groups within the grader report.\n *\n * @module gradereport_grader/group\n * @copyright 2023 Mathew May <mathew.solutions>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\nimport GroupSearch from 'core_group/comboboxsearch/group';\nimport Url from 'core/url';\n\nexport default class Group extends GroupSearch {\n\n courseID;\n\n constructor() {\n super();\n\n // Define our standard lookups.\n this.selectors = {...this.selectors,\n courseid: '[data-region=\"courseid\"]',\n };\n const component = document.querySelector(this.componentSelector());\n this.courseID = component.querySelector(this.selectors.courseid).dataset.courseid;\n }\n\n static init() {\n return new Group();\n }\n\n /**\n * Build up the link that is dedicated to a particular result.\n *\n * @param {Number} groupID The ID of the group selected.\n * @returns {string|*}\n */\n selectOneLink(groupID) {\n return Url.relativeUrl('/grade/report/grader/index.php', {\n id: this.courseID,\n groupsearchvalue: this.getSearchTerm(),\n group: groupID,\n }, false);\n }\n}\n"],"names":["Group","GroupSearch","constructor","selectors","this","courseid","component","document","querySelector","componentSelector","courseID","dataset","selectOneLink","groupID","Url","relativeUrl","id","groupsearchvalue","getSearchTerm","group"],"mappings":"2WAyBqBA,cAAcC,eAI/BC,6LAISC,UAAY,IAAIC,KAAKD,UACtBE,SAAU,kCAERC,UAAYC,SAASC,cAAcJ,KAAKK,0BACzCC,SAAWJ,UAAUE,cAAcJ,KAAKD,UAAUE,UAAUM,QAAQN,8BAIlE,IAAIL,MASfY,cAAcC,gBACHC,aAAIC,YAAY,iCAAkC,CACrDC,GAAIZ,KAAKM,SACTO,iBAAkBb,KAAKc,gBACvBC,MAAON,UACR"}
|
||||
{"version":3,"file":"group.min.js","sources":["../src/group.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Allow the user to search for groups within the grader report.\n *\n * @module gradereport_grader/group\n * @copyright 2023 Mathew May <mathew.solutions>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @deprecated since Moodle 4.5 - please use core_course/actionbar/group instead.\n * @todo Final deprecation in Moodle 6.0. See MDL-82116.\n */\nimport GroupSearch from 'core_group/comboboxsearch/group';\nimport Url from 'core/url';\n\nexport default class Group extends GroupSearch {\n\n courseID;\n\n constructor() {\n window.console.warn(\n 'The gradereport_grader/group module has been deprecated since Moodle 4.5.' +\n ' Please use core_course/actionbar/group instead.',\n );\n\n super();\n\n // Define our standard lookups.\n this.selectors = {...this.selectors,\n courseid: '[data-region=\"courseid\"]',\n };\n const component = document.querySelector(this.componentSelector());\n this.courseID = component.querySelector(this.selectors.courseid).dataset.courseid;\n }\n\n static init() {\n return new Group();\n }\n\n /**\n * Build up the link that is dedicated to a particular result.\n *\n * @param {Number} groupID The ID of the group selected.\n * @returns {string|*}\n */\n selectOneLink(groupID) {\n return Url.relativeUrl('/grade/report/grader/index.php', {\n id: this.courseID,\n groupsearchvalue: this.getSearchTerm(),\n group: groupID,\n }, false);\n }\n}\n"],"names":["Group","GroupSearch","constructor","window","console","warn","selectors","this","courseid","component","document","querySelector","componentSelector","courseID","dataset","selectOneLink","groupID","Url","relativeUrl","id","groupsearchvalue","getSearchTerm","group"],"mappings":"2WA2BqBA,cAAcC,eAI/BC,gCACIC,OAAOC,QAAQC,KACX,0RAOCC,UAAY,IAAIC,KAAKD,UACtBE,SAAU,kCAERC,UAAYC,SAASC,cAAcJ,KAAKK,0BACzCC,SAAWJ,UAAUE,cAAcJ,KAAKD,UAAUE,UAAUM,QAAQN,8BAIlE,IAAIR,MASfe,cAAcC,gBACHC,aAAIC,YAAY,iCAAkC,CACrDC,GAAIZ,KAAKM,SACTO,iBAAkBb,KAAKc,gBACvBC,MAAON,UACR"}
|
@ -19,6 +19,8 @@
|
||||
* @module gradereport_grader/group
|
||||
* @copyright 2023 Mathew May <mathew.solutions>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @deprecated since Moodle 4.5 - please use core_course/actionbar/group instead.
|
||||
* @todo Final deprecation in Moodle 6.0. See MDL-82116.
|
||||
*/
|
||||
import GroupSearch from 'core_group/comboboxsearch/group';
|
||||
import Url from 'core/url';
|
||||
@ -28,6 +30,11 @@ export default class Group extends GroupSearch {
|
||||
courseID;
|
||||
|
||||
constructor() {
|
||||
window.console.warn(
|
||||
'The gradereport_grader/group module has been deprecated since Moodle 4.5.' +
|
||||
' Please use core_course/actionbar/group instead.',
|
||||
);
|
||||
|
||||
super();
|
||||
|
||||
// Define our standard lookups.
|
||||
|
@ -110,7 +110,11 @@ class action_bar extends \core_grades\output\action_bar {
|
||||
])
|
||||
);
|
||||
$data['initialselector'] = $initialselector->export_for_template($output);
|
||||
$data['groupselector'] = $gradesrenderer->group_selector($course);
|
||||
|
||||
if ($course->groupmode) {
|
||||
$actionbarrenderer = $PAGE->get_renderer('core_course', 'actionbar');
|
||||
$data['groupselector'] = $actionbarrenderer->render(new \core_course\output\actionbar\group_selector($course));
|
||||
}
|
||||
|
||||
$resetlink = new moodle_url('/grade/report/grader/index.php', ['id' => $courseid]);
|
||||
$searchinput = $OUTPUT->render_from_template('core_user/comboboxsearch/user_selector', [
|
||||
|
@ -60,7 +60,8 @@ if (!$course = $DB->get_record('course', array('id' => $courseid))) {
|
||||
|
||||
// Conditionally add the group JS if we have groups enabled.
|
||||
if ($course->groupmode) {
|
||||
$PAGE->requires->js_call_amd('gradereport_grader/group', 'init');
|
||||
$baseurl = new moodle_url('/grade/report/grader/index.php', ['id' => $courseid]);
|
||||
$PAGE->requires->js_call_amd('core_course/actionbar/group', 'init', [$baseurl->out(false)]);
|
||||
}
|
||||
|
||||
require_login($course);
|
||||
|
@ -24,7 +24,6 @@
|
||||
*/
|
||||
|
||||
$string['aria:dropdowncolumns'] = 'Collapsed columns found';
|
||||
$string['clearall'] = 'Clear all';
|
||||
$string['clearsearch'] = 'Clear searched users';
|
||||
$string['collapsedcolumns'] = 'Collapsed columns <span class="badge rounded-pill bg-primary text-white ml-1" data-collapse="count">{$a}</span>';
|
||||
$string['editingmode_title'] = 'Editing the grader report';
|
||||
|
@ -93,7 +93,7 @@
|
||||
{{/initialselector}}
|
||||
{{#pagereset}}
|
||||
<div class="navitem align-self-center">
|
||||
<a href="{{{.}}}" class="btn btn-link">{{#str}}clearall, gradereport_grader{{/str}}</a>
|
||||
<a href="{{{.}}}" class="btn btn-link">{{#str}}clearall, core{{/str}}</a>
|
||||
</div>
|
||||
<div class="navitem-divider"></div>
|
||||
{{/pagereset}}
|
||||
|
@ -1,3 +1,3 @@
|
||||
define("gradereport_singleview/group",["exports","core_group/comboboxsearch/group","core/url"],(function(_exports,_group,_url){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_group=_interopRequireDefault(_group),_url=_interopRequireDefault(_url);class Group extends _group.default{constructor(item){super(),_defineProperty(this,"courseID",void 0),_defineProperty(this,"item",null),this.item=item,this.selectors={...this.selectors,courseid:'[data-region="courseid"]'};const component=document.querySelector(this.componentSelector());this.courseID=component.querySelector(this.selectors.courseid).dataset.courseid}static init(item){return new Group(item)}selectOneLink(groupID){return _url.default.relativeUrl("/grade/report/singleview/index.php",{id:this.courseID,groupsearchvalue:this.getSearchTerm(),group:groupID,item:this.item},!1)}}return _exports.default=Group,_exports.default}));
|
||||
define("gradereport_singleview/group",["exports","core_group/comboboxsearch/group","core/url"],(function(_exports,_group,_url){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_group=_interopRequireDefault(_group),_url=_interopRequireDefault(_url);class Group extends _group.default{constructor(item){window.console.warn("The gradereport_singleview/group module has been deprecated since Moodle 4.5. Please use core_course/actionbar/group instead."),super(),_defineProperty(this,"courseID",void 0),_defineProperty(this,"item",null),this.item=item,this.selectors={...this.selectors,courseid:'[data-region="courseid"]'};const component=document.querySelector(this.componentSelector());this.courseID=component.querySelector(this.selectors.courseid).dataset.courseid}static init(item){return new Group(item)}selectOneLink(groupID){return _url.default.relativeUrl("/grade/report/singleview/index.php",{id:this.courseID,groupsearchvalue:this.getSearchTerm(),group:groupID,item:this.item},!1)}}return _exports.default=Group,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=group.min.js.map
|
@ -1 +1 @@
|
||||
{"version":3,"file":"group.min.js","sources":["../src/group.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Allow the user to search for groups within the singleview report.\n *\n * @module gradereport_singleview/group\n * @copyright 2023 Mathew May <mathew.solutions>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\nimport GroupSearch from 'core_group/comboboxsearch/group';\nimport Url from 'core/url';\n\nexport default class Group extends GroupSearch {\n\n courseID;\n\n item = null;\n\n /**\n * Construct the class.\n *\n * @param {string} item The page type we are currently on.\n */\n constructor(item) {\n super();\n this.item = item;\n\n // Define our standard lookups.\n this.selectors = {...this.selectors,\n courseid: '[data-region=\"courseid\"]',\n };\n const component = document.querySelector(this.componentSelector());\n this.courseID = component.querySelector(this.selectors.courseid).dataset.courseid;\n }\n\n /**\n * Allow the class to be invoked via PHP.\n *\n * @param {string} item The page type we are currently on.\n * @returns {Group}\n */\n static init(item) {\n return new Group(item);\n }\n\n /**\n * Build up the link that is dedicated to a particular result.\n *\n * @param {Number} groupID The ID of the group selected.\n * @returns {string|*}\n */\n selectOneLink(groupID) {\n return Url.relativeUrl('/grade/report/singleview/index.php', {\n id: this.courseID,\n groupsearchvalue: this.getSearchTerm(),\n group: groupID,\n item: this.item\n }, false);\n }\n}\n"],"names":["Group","GroupSearch","constructor","item","selectors","this","courseid","component","document","querySelector","componentSelector","courseID","dataset","selectOneLink","groupID","Url","relativeUrl","id","groupsearchvalue","getSearchTerm","group"],"mappings":"mhBAyBqBA,cAAcC,eAW/BC,YAAYC,kFAPL,WASEA,KAAOA,UAGPC,UAAY,IAAIC,KAAKD,UACtBE,SAAU,kCAERC,UAAYC,SAASC,cAAcJ,KAAKK,0BACzCC,SAAWJ,UAAUE,cAAcJ,KAAKD,UAAUE,UAAUM,QAAQN,qBASjEH,aACD,IAAIH,MAAMG,MASrBU,cAAcC,gBACHC,aAAIC,YAAY,qCAAsC,CACzDC,GAAIZ,KAAKM,SACTO,iBAAkBb,KAAKc,gBACvBC,MAAON,QACPX,KAAME,KAAKF,OACZ"}
|
||||
{"version":3,"file":"group.min.js","sources":["../src/group.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Allow the user to search for groups within the singleview report.\n *\n * @module gradereport_singleview/group\n * @copyright 2023 Mathew May <mathew.solutions>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @deprecated since Moodle 4.5 - please use core_course/actionbar/group instead.\n * @todo Final deprecation in Moodle 6.0. See MDL-82116.\n */\nimport GroupSearch from 'core_group/comboboxsearch/group';\nimport Url from 'core/url';\n\nexport default class Group extends GroupSearch {\n\n courseID;\n\n item = null;\n\n /**\n * Construct the class.\n *\n * @param {string} item The page type we are currently on.\n */\n constructor(item) {\n window.console.warn(\n 'The gradereport_singleview/group module has been deprecated since Moodle 4.5.' +\n ' Please use core_course/actionbar/group instead.',\n );\n\n super();\n this.item = item;\n\n // Define our standard lookups.\n this.selectors = {...this.selectors,\n courseid: '[data-region=\"courseid\"]',\n };\n const component = document.querySelector(this.componentSelector());\n this.courseID = component.querySelector(this.selectors.courseid).dataset.courseid;\n }\n\n /**\n * Allow the class to be invoked via PHP.\n *\n * @param {string} item The page type we are currently on.\n * @returns {Group}\n */\n static init(item) {\n return new Group(item);\n }\n\n /**\n * Build up the link that is dedicated to a particular result.\n *\n * @param {Number} groupID The ID of the group selected.\n * @returns {string|*}\n */\n selectOneLink(groupID) {\n return Url.relativeUrl('/grade/report/singleview/index.php', {\n id: this.courseID,\n groupsearchvalue: this.getSearchTerm(),\n group: groupID,\n item: this.item\n }, false);\n }\n}\n"],"names":["Group","GroupSearch","constructor","item","window","console","warn","selectors","this","courseid","component","document","querySelector","componentSelector","courseID","dataset","selectOneLink","groupID","Url","relativeUrl","id","groupsearchvalue","getSearchTerm","group"],"mappings":"mhBA2BqBA,cAAcC,eAW/BC,YAAYC,MACRC,OAAOC,QAAQC,KACX,6MATD,WAcEH,KAAOA,UAGPI,UAAY,IAAIC,KAAKD,UACtBE,SAAU,kCAERC,UAAYC,SAASC,cAAcJ,KAAKK,0BACzCC,SAAWJ,UAAUE,cAAcJ,KAAKD,UAAUE,UAAUM,QAAQN,qBASjEN,aACD,IAAIH,MAAMG,MASrBa,cAAcC,gBACHC,aAAIC,YAAY,qCAAsC,CACzDC,GAAIZ,KAAKM,SACTO,iBAAkBb,KAAKc,gBACvBC,MAAON,QACPd,KAAMK,KAAKL,OACZ"}
|
@ -19,6 +19,8 @@
|
||||
* @module gradereport_singleview/group
|
||||
* @copyright 2023 Mathew May <mathew.solutions>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @deprecated since Moodle 4.5 - please use core_course/actionbar/group instead.
|
||||
* @todo Final deprecation in Moodle 6.0. See MDL-82116.
|
||||
*/
|
||||
import GroupSearch from 'core_group/comboboxsearch/group';
|
||||
import Url from 'core/url';
|
||||
@ -35,6 +37,11 @@ export default class Group extends GroupSearch {
|
||||
* @param {string} item The page type we are currently on.
|
||||
*/
|
||||
constructor(item) {
|
||||
window.console.warn(
|
||||
'The gradereport_singleview/group module has been deprecated since Moodle 4.5.' +
|
||||
' Please use core_course/actionbar/group instead.',
|
||||
);
|
||||
|
||||
super();
|
||||
this.item = item;
|
||||
|
||||
|
@ -131,7 +131,9 @@ class singleview extends grade_report {
|
||||
|
||||
protected function setup_groups() {
|
||||
parent::setup_groups();
|
||||
$this->group_selector = static::groups_course_menu($this->course);
|
||||
if ($this->groupmode) {
|
||||
$this->group_selector = static::groups_course_menu($this->course);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -144,8 +146,8 @@ class singleview extends grade_report {
|
||||
protected static function groups_course_menu(stdClass $course) {
|
||||
global $PAGE;
|
||||
|
||||
$renderer = $PAGE->get_renderer('core_grades');
|
||||
return $renderer->group_selector($course);
|
||||
$renderer = $PAGE->get_renderer('core_course', 'actionbar');
|
||||
return $renderer->render(new \core_course\output\actionbar\group_selector($course));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -175,7 +175,8 @@ if ($itemtype == 'user' || $itemtype == 'user_select') {
|
||||
['id' => $courseid]), 'report', 'singleview');
|
||||
}
|
||||
if ($course->groupmode && $itemtype !== 'select') {
|
||||
$PAGE->requires->js_call_amd('gradereport_singleview/group', 'init', [$itemtype]);
|
||||
$baseurl = new moodle_url('/grade/report/singleview/index.php', ['id' => $courseid, 'item' => $itemtype]);
|
||||
$PAGE->requires->js_call_amd('core_course/actionbar/group', 'init', [$baseurl->out(false)]);
|
||||
}
|
||||
|
||||
if ($itemtype == 'user') {
|
||||
|
2
grade/report/user/amd/build/group.min.js
vendored
2
grade/report/user/amd/build/group.min.js
vendored
@ -1,3 +1,3 @@
|
||||
define("gradereport_user/group",["exports","core_group/comboboxsearch/group","core/url"],(function(_exports,_group,_url){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_group=_interopRequireDefault(_group),_url=_interopRequireDefault(_url);class Group extends _group.default{constructor(){var obj,key,value;super(),value=void 0,(key="courseID")in(obj=this)?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,this.selectors={...this.selectors,courseid:'[data-region="courseid"]'};const component=document.querySelector(this.componentSelector());this.courseID=component.querySelector(this.selectors.courseid).dataset.courseid}static init(){return new Group}selectOneLink(groupID){return _url.default.relativeUrl("/grade/report/user/index.php",{id:this.courseID,groupsearchvalue:this.getSearchTerm(),group:groupID},!1)}}return _exports.default=Group,_exports.default}));
|
||||
define("gradereport_user/group",["exports","core_group/comboboxsearch/group","core/url"],(function(_exports,_group,_url){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_group=_interopRequireDefault(_group),_url=_interopRequireDefault(_url);class Group extends _group.default{constructor(){var obj,key,value;window.console.warn("The gradereport_user/group module has been deprecated since Moodle 4.5. Please use core_course/actionbar/group instead."),super(),value=void 0,(key="courseID")in(obj=this)?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,this.selectors={...this.selectors,courseid:'[data-region="courseid"]'};const component=document.querySelector(this.componentSelector());this.courseID=component.querySelector(this.selectors.courseid).dataset.courseid}static init(){return new Group}selectOneLink(groupID){return _url.default.relativeUrl("/grade/report/user/index.php",{id:this.courseID,groupsearchvalue:this.getSearchTerm(),group:groupID},!1)}}return _exports.default=Group,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=group.min.js.map
|
@ -1 +1 @@
|
||||
{"version":3,"file":"group.min.js","sources":["../src/group.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Allow the user to search for groups within the user report.\n *\n * @module gradereport_user/group\n * @copyright 2023 Mathew May <mathew.solutions>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\nimport GroupSearch from 'core_group/comboboxsearch/group';\nimport Url from 'core/url';\n\nexport default class Group extends GroupSearch {\n\n courseID;\n\n constructor() {\n super();\n\n // Define our standard lookups.\n this.selectors = {...this.selectors,\n courseid: '[data-region=\"courseid\"]',\n };\n const component = document.querySelector(this.componentSelector());\n this.courseID = component.querySelector(this.selectors.courseid).dataset.courseid;\n }\n\n static init() {\n return new Group();\n }\n\n /**\n * Build up the link that is dedicated to a particular result.\n *\n * @param {Number} groupID The ID of the group selected.\n * @returns {string|*}\n */\n selectOneLink(groupID) {\n return Url.relativeUrl('/grade/report/user/index.php', {\n id: this.courseID,\n groupsearchvalue: this.getSearchTerm(),\n group: groupID,\n }, false);\n }\n}\n"],"names":["Group","GroupSearch","constructor","selectors","this","courseid","component","document","querySelector","componentSelector","courseID","dataset","selectOneLink","groupID","Url","relativeUrl","id","groupsearchvalue","getSearchTerm","group"],"mappings":"yWAyBqBA,cAAcC,eAI/BC,6LAISC,UAAY,IAAIC,KAAKD,UACtBE,SAAU,kCAERC,UAAYC,SAASC,cAAcJ,KAAKK,0BACzCC,SAAWJ,UAAUE,cAAcJ,KAAKD,UAAUE,UAAUM,QAAQN,8BAIlE,IAAIL,MASfY,cAAcC,gBACHC,aAAIC,YAAY,+BAAgC,CACnDC,GAAIZ,KAAKM,SACTO,iBAAkBb,KAAKc,gBACvBC,MAAON,UACR"}
|
||||
{"version":3,"file":"group.min.js","sources":["../src/group.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Allow the user to search for groups within the user report.\n *\n * @module gradereport_user/group\n * @copyright 2023 Mathew May <mathew.solutions>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @deprecated since Moodle 4.5 - please use core_course/actionbar/group instead.\n * @todo Final deprecation in Moodle 6.0. See MDL-82116.\n */\nimport GroupSearch from 'core_group/comboboxsearch/group';\nimport Url from 'core/url';\n\nexport default class Group extends GroupSearch {\n\n courseID;\n\n constructor() {\n window.console.warn(\n 'The gradereport_user/group module has been deprecated since Moodle 4.5.' +\n ' Please use core_course/actionbar/group instead.',\n );\n\n super();\n\n // Define our standard lookups.\n this.selectors = {...this.selectors,\n courseid: '[data-region=\"courseid\"]',\n };\n const component = document.querySelector(this.componentSelector());\n this.courseID = component.querySelector(this.selectors.courseid).dataset.courseid;\n }\n\n static init() {\n return new Group();\n }\n\n /**\n * Build up the link that is dedicated to a particular result.\n *\n * @param {Number} groupID The ID of the group selected.\n * @returns {string|*}\n */\n selectOneLink(groupID) {\n return Url.relativeUrl('/grade/report/user/index.php', {\n id: this.courseID,\n groupsearchvalue: this.getSearchTerm(),\n group: groupID,\n }, false);\n }\n}\n"],"names":["Group","GroupSearch","constructor","window","console","warn","selectors","this","courseid","component","document","querySelector","componentSelector","courseID","dataset","selectOneLink","groupID","Url","relativeUrl","id","groupsearchvalue","getSearchTerm","group"],"mappings":"yWA2BqBA,cAAcC,eAI/BC,gCACIC,OAAOC,QAAQC,KACX,wRAOCC,UAAY,IAAIC,KAAKD,UACtBE,SAAU,kCAERC,UAAYC,SAASC,cAAcJ,KAAKK,0BACzCC,SAAWJ,UAAUE,cAAcJ,KAAKD,UAAUE,UAAUM,QAAQN,8BAIlE,IAAIR,MASfe,cAAcC,gBACHC,aAAIC,YAAY,+BAAgC,CACnDC,GAAIZ,KAAKM,SACTO,iBAAkBb,KAAKc,gBACvBC,MAAON,UACR"}
|
@ -19,6 +19,8 @@
|
||||
* @module gradereport_user/group
|
||||
* @copyright 2023 Mathew May <mathew.solutions>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @deprecated since Moodle 4.5 - please use core_course/actionbar/group instead.
|
||||
* @todo Final deprecation in Moodle 6.0. See MDL-82116.
|
||||
*/
|
||||
import GroupSearch from 'core_group/comboboxsearch/group';
|
||||
import Url from 'core/url';
|
||||
@ -28,6 +30,11 @@ export default class Group extends GroupSearch {
|
||||
courseID;
|
||||
|
||||
constructor() {
|
||||
window.console.warn(
|
||||
'The gradereport_user/group module has been deprecated since Moodle 4.5.' +
|
||||
' Please use core_course/actionbar/group instead.',
|
||||
);
|
||||
|
||||
super();
|
||||
|
||||
// Define our standard lookups.
|
||||
|
@ -81,7 +81,11 @@ class action_bar extends \core_grades\output\action_bar {
|
||||
// and the view mode selector (if applicable).
|
||||
if (has_capability('moodle/grade:viewall', $this->context)) {
|
||||
$userreportrenderer = $PAGE->get_renderer('gradereport_user');
|
||||
$data['groupselector'] = $PAGE->get_renderer('core_grades')->group_selector(get_course($courseid));
|
||||
$course = get_course($courseid);
|
||||
if ($course->groupmode) {
|
||||
$groupselector = new \core_course\output\actionbar\group_selector($course);
|
||||
$data['groupselector'] = $PAGE->get_renderer('core_course', 'actionbar')->render($groupselector);
|
||||
}
|
||||
$data['userselector'] = [
|
||||
'courseid' => $courseid,
|
||||
'content' => $userreportrenderer->users_selector(get_course($courseid), $this->userid, $this->currentgroupid)
|
||||
|
@ -95,7 +95,8 @@ if (has_capability('moodle/grade:viewall', $context)) {
|
||||
$currentgroup = $gpr->groupid;
|
||||
// Conditionally add the group JS if we have groups enabled.
|
||||
if ($groupmode) {
|
||||
$PAGE->requires->js_call_amd('gradereport_user/group', 'init');
|
||||
$baseurl = new moodle_url('/grade/report/user/index.php', ['id' => $courseid]);
|
||||
$PAGE->requires->js_call_amd('core_course/actionbar/group', 'init', [$baseurl->out(false)]);
|
||||
}
|
||||
|
||||
// To make some other functions work better later.
|
||||
|
@ -262,6 +262,7 @@ $string['changesmadereallygoaway'] = 'You have made changes. Are you sure you wa
|
||||
$string['city'] = 'City/town';
|
||||
$string['cleaningtempdata'] = 'Cleaning temp data';
|
||||
$string['clear'] = 'Clear';
|
||||
$string['clearall'] = 'Clear all';
|
||||
$string['clearfilterrow'] = 'Remove filter row';
|
||||
$string['clearfilters'] = 'Clear filters';
|
||||
$string['clearsearch'] = 'Clear search input';
|
||||
|
@ -66,12 +66,31 @@ class grading_actionmenu implements templatable, renderable {
|
||||
* @return array Data to render.
|
||||
*/
|
||||
public function export_for_template(\renderer_base $output): array {
|
||||
$downloadall = '';
|
||||
global $PAGE;
|
||||
|
||||
$course = $PAGE->course;
|
||||
$data = [];
|
||||
|
||||
if ($this->submissionpluginenabled && $this->submissioncount) {
|
||||
$downloadall = (new moodle_url('/mod/assign/view.php', ['id' => $this->cmid, 'action' => 'downloadall']))->out(false);
|
||||
$data['downloadall'] = (
|
||||
new moodle_url('/mod/assign/view.php', ['id' => $this->cmid, 'action' => 'downloadall'])
|
||||
)->out(false);
|
||||
}
|
||||
return [
|
||||
'downloadall' => $downloadall
|
||||
];
|
||||
|
||||
if ($course->groupmode) {
|
||||
$actionbarrenderer = $PAGE->get_renderer('core_course', 'actionbar');
|
||||
$data['groupselector'] = $actionbarrenderer->render(new \core_course\output\actionbar\group_selector($course));
|
||||
}
|
||||
|
||||
if (groups_get_course_group($course)) {
|
||||
$reset = new moodle_url('/mod/assign/view.php', [
|
||||
'id' => $this->cmid,
|
||||
'action' => 'grading',
|
||||
'group' => 0,
|
||||
]);
|
||||
$data['pagereset'] = $reset->out(false);
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
@ -4567,9 +4567,13 @@ class assign {
|
||||
$buttons = new \mod_assign\output\grading_actionmenu($this->get_course_module()->id,
|
||||
$this->is_any_submission_plugin_enabled(), $this->count_submissions());
|
||||
$actionformtext = $this->get_renderer()->render($buttons);
|
||||
$currenturl = new moodle_url('/mod/assign/view.php', ['id' => $this->get_course_module()->id, 'action' => 'grading']);
|
||||
$PAGE->activityheader->set_attrs(['hidecompletion' => true]);
|
||||
|
||||
$currenturl = new moodle_url('/mod/assign/view.php', ['id' => $this->get_course_module()->id, 'action' => 'grading']);
|
||||
// Conditionally add the group JS if we have groups enabled.
|
||||
if ($this->get_course()->groupmode) {
|
||||
$PAGE->requires->js_call_amd('core_course/actionbar/group', 'init', [$currenturl->out(false)]);
|
||||
}
|
||||
|
||||
$header = new assign_header($this->get_instance(),
|
||||
$this->get_context(),
|
||||
@ -4583,11 +4587,8 @@ class assign {
|
||||
|
||||
$o .= $actionformtext;
|
||||
|
||||
$o .= $this->get_renderer()->heading(get_string('gradeitem:submissions', 'mod_assign'), 2);
|
||||
$o .= $this->get_renderer()->render($gradingactions);
|
||||
|
||||
$o .= groups_print_activity_menu($this->get_course_module(), $currenturl, true);
|
||||
|
||||
// Plagiarism update status apearring in the grading book.
|
||||
if (!empty($CFG->enableplagiarism)) {
|
||||
require_once($CFG->libdir . '/plagiarismlib.php');
|
||||
|
@ -23,16 +23,34 @@
|
||||
* none
|
||||
|
||||
Context variables required for this template:
|
||||
* see mod/lesson/classes/output/grading_actionmenu.php
|
||||
* groupselector - (optional) HTML that outputs the group selector
|
||||
|
||||
Example context (json):
|
||||
{
|
||||
"groupselector": "<div class='group-selector'></div>",
|
||||
"pagereset": "http://moodle.local/mod/assign/view.php?id=2&action=grading&group=0",
|
||||
"downloadall": "https://moodle.org"
|
||||
}
|
||||
|
||||
}}
|
||||
<div class="container-fluid tertiary-navigation">
|
||||
<div class="container-fluid tertiary-navigation full-width-bottom-border">
|
||||
<div class="row">
|
||||
<div class="navitem">
|
||||
<h2>{{#str}}gradeitem:submissions, mod_assign{{/str}}</h2>
|
||||
</div>
|
||||
<div class="navitem-divider d-none d-sm-flex"></div>
|
||||
{{#groupselector}}
|
||||
<div class="navitem">
|
||||
{{{.}}}
|
||||
</div>
|
||||
<div class="navitem-divider d-none d-sm-flex"></div>
|
||||
{{/groupselector}}
|
||||
{{#pagereset}}
|
||||
<div class="navitem align-self-center">
|
||||
<a href="{{{.}}}" class="btn btn-link">{{#str}}clearall, core{{/str}}</a>
|
||||
</div>
|
||||
<div class="navitem-divider"></div>
|
||||
{{/pagereset}}
|
||||
{{#downloadall}}
|
||||
<div class="navitem ml-sm-auto">
|
||||
<a class="btn btn-secondary" href="{{downloadall}}">{{#str}}downloadall, mod_assign{{/str}}</a>
|
||||
|
@ -97,11 +97,11 @@ Feature: Group assignment submissions
|
||||
| student1 | G1 |
|
||||
And I am on the "Test assignment name" "assign activity" page
|
||||
And I follow "View all submissions"
|
||||
And I set the field "Separate groups" to "Group 1"
|
||||
And I click on "Group 1" in the "group" search widget
|
||||
And I should see "Group 1" in the "Student 0" "table_row"
|
||||
And I should see "Group 1" in the "Student 1" "table_row"
|
||||
And I should not see "Student 2"
|
||||
And I set the field "Separate groups" to "All participants"
|
||||
And I click on "All participants" in the "group" search widget
|
||||
And I should see "Group 1" in the "Student 0" "table_row"
|
||||
And I should see "Group 1" in the "Student 1" "table_row"
|
||||
And I should see "Default group" in the "Student 2" "table_row"
|
||||
|
@ -49,6 +49,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.4rem;
|
||||
font-weight: bold;
|
||||
margin: 0;
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.navitem:not(:last-child),
|
||||
.navitem-divider:not(:last-child) {
|
||||
margin-right: 20px;
|
||||
|
@ -38502,6 +38502,12 @@ div.editor_atto_toolbar button .icon {
|
||||
font-size: 1.4rem;
|
||||
font-weight: bold;
|
||||
}
|
||||
.tertiary-navigation h2 {
|
||||
font-size: 1.4rem;
|
||||
font-weight: bold;
|
||||
margin: 0;
|
||||
align-self: center;
|
||||
}
|
||||
.tertiary-navigation .navitem:not(:last-child),
|
||||
.tertiary-navigation .navitem-divider:not(:last-child) {
|
||||
margin-right: 20px;
|
||||
|
@ -38436,6 +38436,12 @@ div.editor_atto_toolbar button .icon {
|
||||
font-size: 1.4rem;
|
||||
font-weight: bold;
|
||||
}
|
||||
.tertiary-navigation h2 {
|
||||
font-size: 1.4rem;
|
||||
font-weight: bold;
|
||||
margin: 0;
|
||||
align-self: center;
|
||||
}
|
||||
.tertiary-navigation .navitem:not(:last-child),
|
||||
.tertiary-navigation .navitem-divider:not(:last-child) {
|
||||
margin-right: 20px;
|
||||
|
Loading…
x
Reference in New Issue
Block a user