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 { APP_INITIALIZER, NgModule, Type } from '@angular/core';
|
||||||
import { Routes } from '@angular/router';
|
import { Routes } from '@angular/router';
|
||||||
import { CoreContentLinksDelegate } from '@features/contentlinks/services/contentlinks-delegate';
|
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 { CoreMainMenuHomeRoutingModule } from '@features/mainmenu/pages/home/home-routing.module';
|
||||||
import { CoreMainMenuHomeDelegate } from '@features/mainmenu/services/home-delegate';
|
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 { CorePushNotificationsDelegate } from '@features/pushnotifications/services/push-delegate';
|
||||||
import { CoreCoursesProvider } from './services/courses';
|
import { CoreCoursesProvider } from './services/courses';
|
||||||
import { CoreCoursesHelperProvider } from './services/courses-helper';
|
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 { CoreDashboardHomeHandler, CoreDashboardHomeHandlerService } from './services/handlers/dashboard-home';
|
||||||
import { CoreCoursesDashboardLinkHandler } from './services/handlers/dashboard-link';
|
import { CoreCoursesDashboardLinkHandler } from './services/handlers/dashboard-link';
|
||||||
import { CoreCoursesEnrolPushClickHandler } from './services/handlers/enrol-push-click';
|
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';
|
import { CoreCoursesRequestPushClickHandler } from './services/handlers/request-push-click';
|
||||||
|
|
||||||
export const CORE_COURSES_SERVICES: Type<unknown>[] = [
|
export const CORE_COURSES_SERVICES: Type<unknown>[] = [
|
||||||
|
@ -42,10 +48,6 @@ const mainMenuHomeChildrenRoutes: Routes = [
|
||||||
path: CoreDashboardHomeHandlerService.PAGE_NAME,
|
path: CoreDashboardHomeHandlerService.PAGE_NAME,
|
||||||
loadChildren: () => import('./pages/dashboard/dashboard.module').then(m => m.CoreCoursesDashboardPageModule),
|
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 = [
|
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({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
CoreMainMenuHomeRoutingModule.forChild({
|
CoreMainMenuHomeRoutingModule.forChild({
|
||||||
children: mainMenuHomeChildrenRoutes,
|
children: mainMenuHomeChildrenRoutes,
|
||||||
siblings: mainMenuHomeSiblingRoutes,
|
siblings: mainMenuHomeSiblingRoutes,
|
||||||
}),
|
}),
|
||||||
|
CoreMainMenuRoutingModule.forChild({ children: mainMenuTabRoutes }),
|
||||||
|
CoreMainMenuTabRoutingModule.forChild(mainMenuTabRoutes),
|
||||||
],
|
],
|
||||||
|
exports: [CoreMainMenuRoutingModule],
|
||||||
providers: [
|
providers: [
|
||||||
{
|
{
|
||||||
provide: APP_INITIALIZER,
|
provide: APP_INITIALIZER,
|
||||||
multi: true,
|
multi: true,
|
||||||
useValue: () => {
|
useValue: () => {
|
||||||
CoreMainMenuHomeDelegate.registerHandler(CoreDashboardHomeHandler.instance);
|
CoreMainMenuHomeDelegate.registerHandler(CoreDashboardHomeHandler.instance);
|
||||||
CoreMainMenuHomeDelegate.registerHandler(CoreCoursesMyCoursesHomeHandler.instance);
|
CoreMainMenuDelegate.registerHandler(CoreCoursesMyCoursesHomeHandler.instance);
|
||||||
CoreContentLinksDelegate.registerHandler(CoreCoursesCourseLinkHandler.instance);
|
CoreContentLinksDelegate.registerHandler(CoreCoursesCourseLinkHandler.instance);
|
||||||
CoreContentLinksDelegate.registerHandler(CoreCoursesIndexLinkHandler.instance);
|
CoreContentLinksDelegate.registerHandler(CoreCoursesIndexLinkHandler.instance);
|
||||||
CoreContentLinksDelegate.registerHandler(CoreCoursesDashboardLinkHandler.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 { CoreContentLinksAction } from '@features/contentlinks/services/contentlinks-delegate';
|
||||||
import { CoreNavigator } from '@services/navigator';
|
import { CoreNavigator } from '@services/navigator';
|
||||||
import { makeSingleton } from '@singletons';
|
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).
|
* Handler to treat links to course index (list of courses).
|
||||||
|
@ -31,17 +31,12 @@ export class CoreCoursesIndexLinkHandlerService extends CoreContentLinksHandlerB
|
||||||
pattern = /\/course\/?(index\.php.*)?$/;
|
pattern = /\/course\/?(index\.php.*)?$/;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of actions for a link (url).
|
* @inheritdoc
|
||||||
*
|
|
||||||
* @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.
|
|
||||||
*/
|
*/
|
||||||
getActions(siteIds: string[], url: string, params: Params): CoreContentLinksAction[] {
|
getActions(siteIds: string[], url: string, params: Params): CoreContentLinksAction[] {
|
||||||
return [{
|
return [{
|
||||||
action: (siteId): void => {
|
action: (siteId): void => {
|
||||||
let pageName = CoreCoursesMyCoursesHomeHandlerService.PAGE_NAME;
|
let pageName = CoreCoursesMyCoursesMainMenuHandlerService.PAGE_NAME;
|
||||||
const pageParams: Params = {};
|
const pageParams: Params = {};
|
||||||
|
|
||||||
if (params.categoryid) {
|
if (params.categoryid) {
|
||||||
|
@ -51,7 +46,6 @@ export class CoreCoursesIndexLinkHandlerService extends CoreContentLinksHandlerB
|
||||||
pageParams.mode = 'all';
|
pageParams.mode = 'all';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CoreNavigator.navigateToSitePath(pageName, { params: pageParams, siteId });
|
CoreNavigator.navigateToSitePath(pageName, { params: pageParams, siteId });
|
||||||
},
|
},
|
||||||
}];
|
}];
|
||||||
|
|
|
@ -13,39 +13,29 @@
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import { Injectable } from '@angular/core';
|
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 { CoreSiteHomeHomeHandler } from '@features/sitehome/services/handlers/sitehome-home';
|
||||||
|
import { CoreSites } from '@services/sites';
|
||||||
import { makeSingleton } from '@singletons';
|
import { makeSingleton } from '@singletons';
|
||||||
import { CoreCourses } from '../courses';
|
import { CoreCourses } from '../courses';
|
||||||
import { CoreDashboardHomeHandler } from './dashboard-home';
|
import { CoreDashboardHomeHandler } from './dashboard-home';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handler to add my courses into home page.
|
* Handler to add my courses into main menu.
|
||||||
*/
|
*/
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class CoreCoursesMyCoursesHomeHandlerService implements CoreMainMenuHomeHandler {
|
export class CoreCoursesMyCoursesMainMenuHandlerService implements CoreMainMenuHandler {
|
||||||
|
|
||||||
static readonly PAGE_NAME = 'courses';
|
static readonly PAGE_NAME = 'courses';
|
||||||
|
|
||||||
name = 'CoreCoursesMyCourses';
|
name = 'CoreCoursesMyCourses';
|
||||||
priority = 900;
|
priority = 850;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the handler is enabled on a site level.
|
* @inheritdoc
|
||||||
*
|
|
||||||
* @return Whether or not the handler is enabled on a site level.
|
|
||||||
*/
|
*/
|
||||||
isEnabled(): Promise<boolean> {
|
async isEnabled(): Promise<boolean> {
|
||||||
return this.isEnabledForSite();
|
const siteId = CoreSites.getCurrentSiteId();
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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> {
|
|
||||||
const disabled = await CoreCourses.isMyCoursesDisabled(siteId);
|
const disabled = await CoreCourses.isMyCoursesDisabled(siteId);
|
||||||
|
|
||||||
if (disabled) {
|
if (disabled) {
|
||||||
|
@ -59,20 +49,17 @@ export class CoreCoursesMyCoursesHomeHandlerService implements CoreMainMenuHomeH
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the data needed to render the handler.
|
* @inheritdoc
|
||||||
*
|
|
||||||
* @return Data needed to render the handler.
|
|
||||||
*/
|
*/
|
||||||
getDisplayData(): CoreMainMenuHomeHandlerToDisplay {
|
getDisplayData(): CoreMainMenuHandlerData {
|
||||||
return {
|
return {
|
||||||
title: 'core.courses.mycourses',
|
title: 'core.courses.mycourses',
|
||||||
page: CoreCoursesMyCoursesHomeHandlerService.PAGE_NAME,
|
page: CoreCoursesMyCoursesMainMenuHandlerService.PAGE_NAME,
|
||||||
class: 'core-courses-my-courses-handler',
|
class: 'core-courses-my-courses-handler',
|
||||||
icon: 'fas-graduation-cap',
|
icon: 'fas-graduation-cap',
|
||||||
selectPriority: 900,
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const CoreCoursesMyCoursesHomeHandler = makeSingleton(CoreCoursesMyCoursesHomeHandlerService);
|
export const CoreCoursesMyCoursesHomeHandler = makeSingleton(CoreCoursesMyCoursesMainMenuHandlerService);
|
Loading…
Reference in New Issue