MOBILE-3686 courses: Move my courses to a main menu tab
parent
3bc40c88fe
commit
6e2bfc5286
|
@ -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);
|
||||
|
|
|
@ -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 });
|
||||
},
|
||||
}];
|
||||
|
|
|
@ -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);
|
Loading…
Reference in New Issue