MOBILE-3686 courses: Move my courses to a main menu tab

main
Pau Ferrer Ocaña 2021-10-14 15:05:53 +02:00
parent 3bc40c88fe
commit 6e2bfc5286
3 changed files with 33 additions and 40 deletions

View File

@ -15,9 +15,12 @@
import { APP_INITIALIZER, NgModule, Type } from '@angular/core';
import { Routes } from '@angular/router';
import { CoreContentLinksDelegate } from '@features/contentlinks/services/contentlinks-delegate';
import { CoreMainMenuRoutingModule } from '@features/mainmenu/mainmenu-routing.module';
import { CoreMainMenuTabRoutingModule } from '@features/mainmenu/mainmenu-tab-routing.module';
import { CoreMainMenuHomeRoutingModule } from '@features/mainmenu/pages/home/home-routing.module';
import { CoreMainMenuHomeDelegate } from '@features/mainmenu/services/home-delegate';
import { CoreMainMenuDelegate } from '@features/mainmenu/services/mainmenu-delegate';
import { CorePushNotificationsDelegate } from '@features/pushnotifications/services/push-delegate';
import { CoreCoursesProvider } from './services/courses';
import { CoreCoursesHelperProvider } from './services/courses-helper';
@ -28,7 +31,10 @@ import { CoreCoursesIndexLinkHandler } from './services/handlers/courses-index-l
import { CoreDashboardHomeHandler, CoreDashboardHomeHandlerService } from './services/handlers/dashboard-home';
import { CoreCoursesDashboardLinkHandler } from './services/handlers/dashboard-link';
import { CoreCoursesEnrolPushClickHandler } from './services/handlers/enrol-push-click';
import { CoreCoursesMyCoursesHomeHandler, CoreCoursesMyCoursesHomeHandlerService } from './services/handlers/my-courses-home';
import {
CoreCoursesMyCoursesHomeHandler,
CoreCoursesMyCoursesMainMenuHandlerService,
} from './services/handlers/my-courses-mainmenu';
import { CoreCoursesRequestPushClickHandler } from './services/handlers/request-push-click';
export const CORE_COURSES_SERVICES: Type<unknown>[] = [
@ -42,10 +48,6 @@ const mainMenuHomeChildrenRoutes: Routes = [
path: CoreDashboardHomeHandlerService.PAGE_NAME,
loadChildren: () => import('./pages/dashboard/dashboard.module').then(m => m.CoreCoursesDashboardPageModule),
},
{
path: CoreCoursesMyCoursesHomeHandlerService.PAGE_NAME,
loadChildren: () => import('./pages/list/list.module').then(m => m.CoreCoursesListPageModule),
},
];
const mainMenuHomeSiblingRoutes: Routes = [
@ -55,20 +57,30 @@ const mainMenuHomeSiblingRoutes: Routes = [
},
];
const mainMenuTabRoutes: Routes = [
{
path: CoreCoursesMyCoursesMainMenuHandlerService.PAGE_NAME,
loadChildren: () => import('./pages/list/list.module').then(m => m.CoreCoursesListPageModule),
},
];
@NgModule({
imports: [
CoreMainMenuHomeRoutingModule.forChild({
children: mainMenuHomeChildrenRoutes,
siblings: mainMenuHomeSiblingRoutes,
}),
CoreMainMenuRoutingModule.forChild({ children: mainMenuTabRoutes }),
CoreMainMenuTabRoutingModule.forChild(mainMenuTabRoutes),
],
exports: [CoreMainMenuRoutingModule],
providers: [
{
provide: APP_INITIALIZER,
multi: true,
useValue: () => {
CoreMainMenuHomeDelegate.registerHandler(CoreDashboardHomeHandler.instance);
CoreMainMenuHomeDelegate.registerHandler(CoreCoursesMyCoursesHomeHandler.instance);
CoreMainMenuDelegate.registerHandler(CoreCoursesMyCoursesHomeHandler.instance);
CoreContentLinksDelegate.registerHandler(CoreCoursesCourseLinkHandler.instance);
CoreContentLinksDelegate.registerHandler(CoreCoursesIndexLinkHandler.instance);
CoreContentLinksDelegate.registerHandler(CoreCoursesDashboardLinkHandler.instance);

View File

@ -18,7 +18,7 @@ import { CoreContentLinksHandlerBase } from '@features/contentlinks/classes/base
import { CoreContentLinksAction } from '@features/contentlinks/services/contentlinks-delegate';
import { CoreNavigator } from '@services/navigator';
import { makeSingleton } from '@singletons';
import { CoreCoursesMyCoursesHomeHandlerService } from './my-courses-home';
import { CoreCoursesMyCoursesMainMenuHandlerService } from './my-courses-mainmenu';
/**
* Handler to treat links to course index (list of courses).
@ -31,17 +31,12 @@ export class CoreCoursesIndexLinkHandlerService extends CoreContentLinksHandlerB
pattern = /\/course\/?(index\.php.*)?$/;
/**
* Get the list of actions for a link (url).
*
* @param siteIds List of sites the URL belongs to.
* @param url The URL to treat.
* @param params The params of the URL. E.g. 'mysite.com?id=1' -> {id: 1}
* @return List of (or promise resolved with list of) actions.
* @inheritdoc
*/
getActions(siteIds: string[], url: string, params: Params): CoreContentLinksAction[] {
return [{
action: (siteId): void => {
let pageName = CoreCoursesMyCoursesHomeHandlerService.PAGE_NAME;
let pageName = CoreCoursesMyCoursesMainMenuHandlerService.PAGE_NAME;
const pageParams: Params = {};
if (params.categoryid) {
@ -51,7 +46,6 @@ export class CoreCoursesIndexLinkHandlerService extends CoreContentLinksHandlerB
pageParams.mode = 'all';
}
CoreNavigator.navigateToSitePath(pageName, { params: pageParams, siteId });
},
}];

View File

@ -13,39 +13,29 @@
// limitations under the License.
import { Injectable } from '@angular/core';
import { CoreMainMenuHomeHandler, CoreMainMenuHomeHandlerToDisplay } from '@features/mainmenu/services/home-delegate';
import { CoreMainMenuHandler, CoreMainMenuHandlerData } from '@features/mainmenu/services/mainmenu-delegate';
import { CoreSiteHomeHomeHandler } from '@features/sitehome/services/handlers/sitehome-home';
import { CoreSites } from '@services/sites';
import { makeSingleton } from '@singletons';
import { CoreCourses } from '../courses';
import { CoreDashboardHomeHandler } from './dashboard-home';
/**
* Handler to add my courses into home page.
* Handler to add my courses into main menu.
*/
@Injectable({ providedIn: 'root' })
export class CoreCoursesMyCoursesHomeHandlerService implements CoreMainMenuHomeHandler {
export class CoreCoursesMyCoursesMainMenuHandlerService implements CoreMainMenuHandler {
static readonly PAGE_NAME = 'courses';
name = 'CoreCoursesMyCourses';
priority = 900;
priority = 850;
/**
* Check if the handler is enabled on a site level.
*
* @return Whether or not the handler is enabled on a site level.
* @inheritdoc
*/
isEnabled(): Promise<boolean> {
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.
*/
async isEnabledForSite(siteId?: string): Promise<boolean> {
async isEnabled(): Promise<boolean> {
const siteId = CoreSites.getCurrentSiteId();
const disabled = await CoreCourses.isMyCoursesDisabled(siteId);
if (disabled) {
@ -59,20 +49,17 @@ export class CoreCoursesMyCoursesHomeHandlerService implements CoreMainMenuHomeH
}
/**
* Returns the data needed to render the handler.
*
* @return Data needed to render the handler.
* @inheritdoc
*/
getDisplayData(): CoreMainMenuHomeHandlerToDisplay {
getDisplayData(): CoreMainMenuHandlerData {
return {
title: 'core.courses.mycourses',
page: CoreCoursesMyCoursesHomeHandlerService.PAGE_NAME,
page: CoreCoursesMyCoursesMainMenuHandlerService.PAGE_NAME,
class: 'core-courses-my-courses-handler',
icon: 'fas-graduation-cap',
selectPriority: 900,
};
}
}
export const CoreCoursesMyCoursesHomeHandler = makeSingleton(CoreCoursesMyCoursesHomeHandlerService);
export const CoreCoursesMyCoursesHomeHandler = makeSingleton(CoreCoursesMyCoursesMainMenuHandlerService);