mirror of
https://github.com/moodle/moodle.git
synced 2025-08-06 17:36:38 +02:00
MDL-73233 admin: Add enabledashboard setting
The $CFG->enabledashboard setting has been added to Appearance > Navigation, to let admins disable the "Dashboard" option from the primary navigation. This commit also changes the behaviour of get_home_page(), to take into account this setting and adds a new method, get_default_home_page(), to return the expected default home page (that wil be used when current default page is not defined or valid).
This commit is contained in:
parent
9344149aba
commit
5349861e69
6 changed files with 196 additions and 14 deletions
|
@ -10367,17 +10367,40 @@ function get_home_page() {
|
|||
global $CFG;
|
||||
|
||||
if (isloggedin() && !isguestuser() && !empty($CFG->defaulthomepage)) {
|
||||
// If dashboard is disabled, home will be set to default page.
|
||||
$defaultpage = get_default_home_page();
|
||||
if ($CFG->defaulthomepage == HOMEPAGE_MY) {
|
||||
return HOMEPAGE_MY;
|
||||
if (!empty($CFG->enabledashboard)) {
|
||||
return HOMEPAGE_MY;
|
||||
} else {
|
||||
return $defaultpage;
|
||||
}
|
||||
} else if ($CFG->defaulthomepage == HOMEPAGE_MYCOURSES) {
|
||||
return HOMEPAGE_MYCOURSES;
|
||||
} else {
|
||||
return (int)get_user_preferences('user_home_page_preference', HOMEPAGE_MY);
|
||||
$userhomepage = (int) get_user_preferences('user_home_page_preference', $defaultpage);
|
||||
if (empty($CFG->enabledashboard) && $userhomepage == HOMEPAGE_MY) {
|
||||
// If the user was using the dashboard but it's disabled, return the default home page.
|
||||
$userhomepage = $defaultpage;
|
||||
}
|
||||
return $userhomepage;
|
||||
}
|
||||
}
|
||||
return HOMEPAGE_SITE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default home page to display if current one is not defined or can't be applied.
|
||||
* The default behaviour is to return Dashboard if it's enabled or My courses page if it isn't.
|
||||
*
|
||||
* @return int The default home page.
|
||||
*/
|
||||
function get_default_home_page(): int {
|
||||
global $CFG;
|
||||
|
||||
return !empty($CFG->enabledashboard) ? HOMEPAGE_MY : HOMEPAGE_MYCOURSES;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name of a course to be displayed when showing a list of courses.
|
||||
* By default this is just $course->fullname but user can configure it. The
|
||||
|
|
|
@ -5196,4 +5196,143 @@ EOF;
|
|||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Test get_home_page() method.
|
||||
*
|
||||
* @dataProvider get_home_page_provider
|
||||
* @param string $user Whether the user is logged, guest or not logged.
|
||||
* @param int $expected Expected value after calling the get_home_page method.
|
||||
* @param int $defaulthomepage The $CFG->defaulthomepage setting value.
|
||||
* @param int $enabledashboard Whether the dashboard should be enabled or not.
|
||||
* @param int $userpreference User preference for the home page setting.
|
||||
* @covers ::get_home_page
|
||||
*/
|
||||
public function test_get_home_page(string $user, int $expected, ?int $defaulthomepage = null, ?int $enabledashboard = null,
|
||||
?int $userpreference = null) {
|
||||
global $CFG, $USER;
|
||||
|
||||
$this->resetAfterTest();
|
||||
|
||||
if ($user == 'guest') {
|
||||
$this->setGuestUser();
|
||||
} else if ($user == 'logged') {
|
||||
$this->setUser($this->getDataGenerator()->create_user());
|
||||
}
|
||||
|
||||
if (isset($defaulthomepage)) {
|
||||
$CFG->defaulthomepage = $defaulthomepage;
|
||||
}
|
||||
if (isset($enabledashboard)) {
|
||||
$CFG->enabledashboard = $enabledashboard;
|
||||
}
|
||||
|
||||
if ($USER) {
|
||||
set_user_preferences(['user_home_page_preference' => $userpreference], $USER->id);
|
||||
}
|
||||
|
||||
$homepage = get_home_page();
|
||||
$this->assertEquals($expected, $homepage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for get_home_page checks.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function get_home_page_provider(): array {
|
||||
return [
|
||||
'No logged user' => [
|
||||
'user' => 'nologged',
|
||||
'expected' => HOMEPAGE_SITE,
|
||||
],
|
||||
'Guest user' => [
|
||||
'user' => 'guest',
|
||||
'expected' => HOMEPAGE_SITE,
|
||||
],
|
||||
'Logged user. Dashboard set as default home page and enabled' => [
|
||||
'user' => 'logged',
|
||||
'expected' => HOMEPAGE_MY,
|
||||
'defaulthomepage' => HOMEPAGE_MY,
|
||||
'enabledashboard' => 1,
|
||||
],
|
||||
'Logged user. Dashboard set as default home page but disabled' => [
|
||||
'user' => 'logged',
|
||||
'expected' => HOMEPAGE_MYCOURSES,
|
||||
'defaulthomepage' => HOMEPAGE_MY,
|
||||
'enabledashboard' => 0,
|
||||
],
|
||||
'Logged user. My courses set as default home page with dashboard enabled' => [
|
||||
'user' => 'logged',
|
||||
'expected' => HOMEPAGE_MYCOURSES,
|
||||
'defaulthomepage' => HOMEPAGE_MYCOURSES,
|
||||
'enabledashboard' => 1,
|
||||
],
|
||||
'Logged user. My courses set as default home page with dashboard disabled' => [
|
||||
'user' => 'logged',
|
||||
'expected' => HOMEPAGE_MYCOURSES,
|
||||
'defaulthomepage' => HOMEPAGE_MYCOURSES,
|
||||
'enabledashboard' => 0,
|
||||
],
|
||||
'Logged user. Site set as default home page with dashboard enabled' => [
|
||||
'user' => 'logged',
|
||||
'expected' => HOMEPAGE_SITE,
|
||||
'defaulthomepage' => HOMEPAGE_SITE,
|
||||
'enabledashboard' => 1,
|
||||
],
|
||||
'Logged user. Site set as default home page with dashboard disabled' => [
|
||||
'user' => 'logged',
|
||||
'expected' => HOMEPAGE_SITE,
|
||||
'defaulthomepage' => HOMEPAGE_SITE,
|
||||
'enabledashboard' => 0,
|
||||
],
|
||||
'Logged user. User preference set as default page with dashboard enabled and user preference set to dashboard' => [
|
||||
'user' => 'logged',
|
||||
'expected' => HOMEPAGE_MY,
|
||||
'defaulthomepage' => HOMEPAGE_USER,
|
||||
'enabledashboard' => 1,
|
||||
'userpreference' => HOMEPAGE_MY,
|
||||
],
|
||||
'Logged user. User preference set as default page with dashboard disabled and user preference set to dashboard' => [
|
||||
'user' => 'logged',
|
||||
'expected' => HOMEPAGE_MYCOURSES,
|
||||
'defaulthomepage' => HOMEPAGE_USER,
|
||||
'enabledashboard' => 0,
|
||||
'userpreference' => HOMEPAGE_MY,
|
||||
],
|
||||
'Logged user. User preference set as default page with dashboard enabled and user preference set to my courses' => [
|
||||
'user' => 'logged',
|
||||
'expected' => HOMEPAGE_MYCOURSES,
|
||||
'defaulthomepage' => HOMEPAGE_USER,
|
||||
'enabledashboard' => 1,
|
||||
'userpreference' => HOMEPAGE_MYCOURSES,
|
||||
],
|
||||
'Logged user. User preference set as default page with dashboard disabled and user preference set to my courses' => [
|
||||
'user' => 'logged',
|
||||
'expected' => HOMEPAGE_MYCOURSES,
|
||||
'defaulthomepage' => HOMEPAGE_USER,
|
||||
'enabledashboard' => 0,
|
||||
'userpreference' => HOMEPAGE_MYCOURSES,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Test get_default_home_page() method.
|
||||
*
|
||||
* @covers ::get_default_home_page
|
||||
*/
|
||||
public function test_get_default_home_page() {
|
||||
global $CFG;
|
||||
|
||||
$this->resetAfterTest();
|
||||
|
||||
$CFG->enabledashboard = 1;
|
||||
$default = get_default_home_page();
|
||||
$this->assertEquals(HOMEPAGE_MY, $default);
|
||||
|
||||
$CFG->enabledashboard = 0;
|
||||
$default = get_default_home_page();
|
||||
$this->assertEquals(HOMEPAGE_MYCOURSES, $default);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -247,6 +247,8 @@ value to get the list of blocks that won't be displayed for a theme.
|
|||
`get_template_name(\renderer_base): string` function which will inform the default render() function with a template
|
||||
name.
|
||||
* The parameter $modinfo of the get_data method in completion_info class has been deprecated and is not used anymore.
|
||||
* A new method, get_default_home_page(), has been added to moodlelib to get the default home page to display if current one is not
|
||||
defined or can't be applied.
|
||||
|
||||
=== 3.11.4 ===
|
||||
* A new option dontforcesvgdownload has been added to the $options parameter of the send_file() function.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue