mirror of
https://github.com/moodle/moodle.git
synced 2025-08-06 01:16:44 +02:00
MDL-70801 core_my: Add a new courses page
This commit is contained in:
parent
c69c33b14d
commit
6ca9c2154a
33 changed files with 417 additions and 51 deletions
|
@ -60,6 +60,7 @@ $PAGE->blocks->add_custom_regions_for_pagetype($pagetype);
|
|||
$pagetype = explode('-', $pagetype);
|
||||
switch ($pagetype[0]) {
|
||||
case 'my':
|
||||
case 'mycourses':
|
||||
$PAGE->set_blocks_editing_capability('moodle/my:manageblocks');
|
||||
break;
|
||||
case 'user':
|
||||
|
|
|
@ -2647,7 +2647,30 @@ function blocks_add_default_system_blocks() {
|
|||
$subpagepattern = null;
|
||||
}
|
||||
|
||||
$newblocks = array('timeline', 'private_files', 'badges', 'calendar_month');
|
||||
$newcontent = array('myoverview');
|
||||
$page->blocks->add_blocks(array(BLOCK_POS_RIGHT => $newblocks, 'content' => $newcontent), 'my-index', $subpagepattern);
|
||||
if ($defaultmycoursespage = $DB->get_record('my_pages', array('userid' => null, 'name' => '__courses', 'private' => 0))) {
|
||||
$mycoursesubpagepattern = $defaultmycoursespage->id;
|
||||
} else {
|
||||
$mycoursesubpagepattern = null;
|
||||
}
|
||||
|
||||
$page->blocks->add_blocks([
|
||||
BLOCK_POS_RIGHT => [
|
||||
'private_files',
|
||||
'badges',
|
||||
],
|
||||
'content' => [
|
||||
'timeline',
|
||||
'calendar_month',
|
||||
]],
|
||||
'my-index',
|
||||
$subpagepattern
|
||||
);
|
||||
|
||||
$page->blocks->add_blocks([
|
||||
'content' => [
|
||||
'myoverview'
|
||||
]],
|
||||
'my-index',
|
||||
$mycoursesubpagepattern
|
||||
);
|
||||
}
|
||||
|
|
58
lib/classes/event/mycourses_viewed.php
Normal file
58
lib/classes/event/mycourses_viewed.php
Normal file
|
@ -0,0 +1,58 @@
|
|||
<?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\event;
|
||||
|
||||
/**
|
||||
* My courses viewed event class.
|
||||
*
|
||||
* Class for event to be triggered when a user views their My courses page.
|
||||
*
|
||||
* @package core
|
||||
* @copyright 2021 Mathew May <mathew.solutions>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class mycourses_viewed extends base {
|
||||
|
||||
/**
|
||||
* Init method.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function init(): void {
|
||||
$this->data['crud'] = 'r';
|
||||
$this->data['edulevel'] = self::LEVEL_OTHER;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns description of what happened.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_description(): string {
|
||||
return "The user with id '$this->userid' has viewed their my courses page";
|
||||
}
|
||||
|
||||
/**
|
||||
* Return localised event name.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_name(): string {
|
||||
return get_string('eventmycoursesviewed', 'core');
|
||||
}
|
||||
|
||||
}
|
|
@ -57,8 +57,8 @@ class primary extends view {
|
|||
}
|
||||
}
|
||||
|
||||
// Add a dummy mycourse link to a mycourses page.
|
||||
$this->add(get_string('mycourses'), new \moodle_url('/course/index.php'), self::TYPE_ROOTNODE, null, 'courses');
|
||||
// Add the mycourses link.
|
||||
$this->add(get_string('mycourses'), new \moodle_url('/my/courses.php'), self::TYPE_ROOTNODE, null, 'courses');
|
||||
|
||||
// Add the site admin node. We are using the settingsnav so as to avoid rechecking permissions again.
|
||||
$settingsnav = $this->page->settingsnav;
|
||||
|
|
|
@ -310,6 +310,13 @@ function xmldb_main_install() {
|
|||
$mypage->private = 1;
|
||||
$DB->insert_record('my_pages', $mypage);
|
||||
|
||||
$mycoursespage = new stdClass();
|
||||
$mycoursespage->userid = null;
|
||||
$mycoursespage->name = '__courses';
|
||||
$mycoursespage->private = 0;
|
||||
$mycoursespage->sortorder = 0;
|
||||
$DB->insert_record('my_pages', $mycoursespage);
|
||||
|
||||
// Set a sensible default sort order for the most-used question types.
|
||||
set_config('multichoice_sortorder', 1, 'question');
|
||||
set_config('truefalse_sortorder', 2, 'question');
|
||||
|
|
|
@ -3145,5 +3145,17 @@ function xmldb_main_upgrade($oldversion) {
|
|||
upgrade_main_savepoint(true, 2021110800.03);
|
||||
}
|
||||
|
||||
if ($oldversion < 2021111200.01) {
|
||||
|
||||
$mycoursespage = new stdClass();
|
||||
$mycoursespage->userid = null;
|
||||
$mycoursespage->name = '__courses';
|
||||
$mycoursespage->private = 0;
|
||||
$mycoursespage->sortorder = 0;
|
||||
$DB->insert_record('my_pages', $mycoursespage);
|
||||
|
||||
upgrade_main_savepoint(true, 2021111200.01);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -1328,7 +1328,14 @@ class global_navigation extends navigation_node {
|
|||
$this->rootnodes['site'] = $this->add_course($SITE);
|
||||
$this->rootnodes['myprofile'] = $this->add(get_string('profile'), null, self::TYPE_USER, null, 'myprofile');
|
||||
$this->rootnodes['currentcourse'] = $this->add(get_string('currentcourse'), null, self::TYPE_ROOTNODE, null, 'currentcourse');
|
||||
$this->rootnodes['mycourses'] = $this->add(get_string('mycourses'), null, self::TYPE_ROOTNODE, null, 'mycourses', new pix_icon('i/course', ''));
|
||||
$this->rootnodes['mycourses'] = $this->add(
|
||||
get_string('mycourses'),
|
||||
new moodle_url('/my/courses.php'),
|
||||
self::TYPE_ROOTNODE,
|
||||
null,
|
||||
'mycourses',
|
||||
new pix_icon('i/course', '')
|
||||
);
|
||||
$this->rootnodes['courses'] = $this->add(get_string('courses'), new moodle_url('/course/index.php'), self::TYPE_ROOTNODE, null, 'courses');
|
||||
if (!core_course_category::user_top()) {
|
||||
$this->rootnodes['courses']->hide();
|
||||
|
@ -1521,7 +1528,7 @@ class global_navigation extends navigation_node {
|
|||
foreach ($this->rootnodes as $node) {
|
||||
// Dont remove the home node
|
||||
/** @var navigation_node $node */
|
||||
if (!in_array($node->key, ['home', 'myhome']) && !$node->has_children() && !$node->isactive) {
|
||||
if (!in_array($node->key, ['home', 'mycourses', 'myhome']) && !$node->has_children() && !$node->isactive) {
|
||||
$node->remove();
|
||||
}
|
||||
}
|
||||
|
@ -2880,6 +2887,9 @@ class global_navigation extends navigation_node {
|
|||
// This required as there are not other guaranteed nodes that may be loaded.
|
||||
$coursenode->add('frontpageloaded', null, self::TYPE_CUSTOM, null, 'frontpageloaded')->display = false;
|
||||
|
||||
// Add My courses to the site pages within the navigation structure so the block can read it.
|
||||
$coursenode->add(get_string('mycourses'), new moodle_url('/my/courses.php'), self::TYPE_CUSTOM, null, 'mycourses');
|
||||
|
||||
// Participants.
|
||||
if ($navoptions->participants) {
|
||||
$coursenode->add(get_string('participants'), new moodle_url('/user/index.php?id='.$course->id), self::TYPE_CUSTOM, get_string('participants'), 'participants');
|
||||
|
|
|
@ -4372,7 +4372,8 @@ EOD;
|
|||
$pagetype = $this->page->pagetype;
|
||||
$homepage = get_home_page();
|
||||
$homepagetype = null;
|
||||
if ($homepage == HOMEPAGE_MY) {
|
||||
// Add a special case since /my/courses is a part of the /my subsystem.
|
||||
if ($homepage == HOMEPAGE_MY && $this->page->title !== get_string('mycourses')) {
|
||||
$homepagetype = 'my-index';
|
||||
} else if ($homepage == HOMEPAGE_SITE) {
|
||||
$homepagetype = 'site-index';
|
||||
|
|
|
@ -717,6 +717,9 @@ class behat_navigation extends behat_base {
|
|||
case 'Homepage':
|
||||
return new moodle_url('/');
|
||||
|
||||
case 'My courses':
|
||||
return new moodle_url('/my/courses.php');
|
||||
|
||||
case 'Admin notifications':
|
||||
return new moodle_url('/admin/');
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue