diff --git a/src/core/components/tabs/core-tabs.html b/src/core/components/tabs/core-tabs.html index 17b75c825..6e2a54fac 100644 --- a/src/core/components/tabs/core-tabs.html +++ b/src/core/components/tabs/core-tabs.html @@ -1,4 +1,4 @@ - + diff --git a/src/core/features/courses/courses.module.ts b/src/core/features/courses/courses.module.ts index 81d147123..fd53773b2 100644 --- a/src/core/features/courses/courses.module.ts +++ b/src/core/features/courses/courses.module.ts @@ -17,6 +17,7 @@ import { RouterModule, Routes } from '@angular/router'; import { CoreHomeRoutingModule } from '../mainmenu/pages/home/home-routing.module'; import { CoreHomeDelegate } from '../mainmenu/services/home.delegate'; import { CoreDashboardHomeHandler } from './services/handlers/dashboard.home'; +import { CoreCoursesMyCoursesHomeHandler } from './services/handlers/my-courses.home'; const homeRoutes: Routes = [ { @@ -24,6 +25,12 @@ const homeRoutes: Routes = [ loadChildren: () => import('@features/courses/pages/dashboard/dashboard.page.module').then(m => m.CoreCoursesDashboardPageModule), }, + { + path: 'courses/my', + loadChildren: () => + import('@features/courses/pages/my-courses/my-courses.page.module') + .then(m => m.CoreCoursesMyCoursesPageModule), + }, ]; const routes: Routes = [ @@ -43,7 +50,8 @@ const routes: Routes = [ { path: 'categories/:id', loadChildren: () => - import('@features/courses/pages/categories/categories.page.module').then(m => m.CoreCoursesCategoriesPageModule), + import('@features/courses/pages/categories/categories.page.module') + .then(m => m.CoreCoursesCategoriesPageModule), }, { path: 'all', @@ -84,6 +92,7 @@ const routes: Routes = [ ], providers: [ CoreDashboardHomeHandler, + CoreCoursesMyCoursesHomeHandler, ], }) export class CoreCoursesModule { @@ -91,8 +100,10 @@ export class CoreCoursesModule { constructor( homeDelegate: CoreHomeDelegate, coursesDashboardHandler: CoreDashboardHomeHandler, + coursesMyCoursesHandler: CoreCoursesMyCoursesHomeHandler, ) { homeDelegate.registerHandler(coursesDashboardHandler); + homeDelegate.registerHandler(coursesMyCoursesHandler); } } diff --git a/src/core/features/courses/pages/my-courses/my-courses.html b/src/core/features/courses/pages/my-courses/my-courses.html index 718968fd2..b2fcc7e56 100644 --- a/src/core/features/courses/pages/my-courses/my-courses.html +++ b/src/core/features/courses/pages/my-courses/my-courses.html @@ -6,19 +6,21 @@ {{ 'core.courses.mycourses' | translate }} - - - - - - + + + - - {{downloadAllCoursesBadge}} - + + + + + + {{downloadAllCoursesBadge}} + + diff --git a/src/core/features/courses/services/handlers/dashboard.home.ts b/src/core/features/courses/services/handlers/dashboard.home.ts index 3c9505e2f..76dc61175 100644 --- a/src/core/features/courses/services/handlers/dashboard.home.ts +++ b/src/core/features/courses/services/handlers/dashboard.home.ts @@ -16,7 +16,7 @@ import { Injectable } from '@angular/core'; import { CoreHomeHandler, CoreHomeHandlerToDisplay } from '@features/mainmenu/services/home.delegate'; /** - * Handler to add Home into main menu. + * Handler to add dashboard into home page. */ Injectable(); export class CoreDashboardHomeHandler implements CoreHomeHandler { @@ -41,7 +41,7 @@ export class CoreDashboardHomeHandler implements CoreHomeHandler { */ // eslint-disable-next-line @typescript-eslint/no-unused-vars async isEnabledForSite(siteId?: string): Promise { - // @todo + // @todo return this.blockDelegate.hasSupportedBlock(this.blocks); return true; } diff --git a/src/core/features/courses/services/handlers/my-courses.home.ts b/src/core/features/courses/services/handlers/my-courses.home.ts new file mode 100644 index 000000000..f43c134c2 --- /dev/null +++ b/src/core/features/courses/services/handlers/my-courses.home.ts @@ -0,0 +1,63 @@ +// (C) Copyright 2015 Moodle Pty Ltd. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { Injectable } from '@angular/core'; +import { CoreHomeHandler, CoreHomeHandlerToDisplay } from '@features/mainmenu/services/home.delegate'; + +/** + * Handler to add my courses into home page. + */ +Injectable(); +export class CoreCoursesMyCoursesHomeHandler implements CoreHomeHandler { + + name = 'CoreCoursesMyCourses'; + priority = 900; + + /** + * Check if the handler is enabled on a site level. + * + * @return Whether or not the handler is enabled on a site level. + */ + isEnabled(): Promise { + return this.isEnabledForSite(); + } + + /** + * Check if the handler is enabled on a certain site. + * + * @param siteId Site ID. If not defined, current site. + * @return Whether or not the handler is enabled on a site level. + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + async isEnabledForSite(siteId?: string): Promise { + // @todo return !this.blockDelegate.hasSupportedBlock(this.blocks) && !CoreSiteHome.instance.isAvailable(siteId); + return true; + } + + /** + * Returns the data needed to render the handler. + * + * @return Data needed to render the handler. + */ + getDisplayData(): CoreHomeHandlerToDisplay { + return { + title: 'core.courses.mycourses', + page: 'courses/my', + class: 'core-courses-my-courses-handler', + icon: 'fas-graduation-cap', + selectPriority: 900, + }; + } + +} diff --git a/src/core/features/sitehome/services/handlers/sitehome.home.ts b/src/core/features/sitehome/services/handlers/sitehome.home.ts index ae53ae5a1..3848f7b55 100644 --- a/src/core/features/sitehome/services/handlers/sitehome.home.ts +++ b/src/core/features/sitehome/services/handlers/sitehome.home.ts @@ -18,7 +18,7 @@ import { CoreHomeHandler, CoreHomeHandlerToDisplay } from '@features/mainmenu/se import { CoreSiteHome } from '../sitehome'; /** - * Handler to add Home into main menu. + * Handler to add site home into home page. */ Injectable(); export class CoreSiteHomeHomeHandler implements CoreHomeHandler {