MOBILE-3934 grades: Refactor routes
parent
7265611dda
commit
803ad32ec8
|
@ -23,14 +23,10 @@ import { CoreGradesCoursePage } from './pages/course/course.page';
|
||||||
import { CoreGradesCoursePageModule } from './pages/course/course.module';
|
import { CoreGradesCoursePageModule } from './pages/course/course.module';
|
||||||
import { CoreGradesCoursesPage } from './pages/courses/courses.page';
|
import { CoreGradesCoursesPage } from './pages/courses/courses.page';
|
||||||
import { CoreGradesGradePage } from './pages/grade/grade.page';
|
import { CoreGradesGradePage } from './pages/grade/grade.page';
|
||||||
import { CoreGradesUserHandlerService } from './services/handlers/user';
|
|
||||||
|
|
||||||
const mobileRoutes: Routes = [
|
const mobileRoutes: Routes = [
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
data: {
|
|
||||||
mainMenuTabRoot: CoreGradesUserHandlerService.PAGE_NAME,
|
|
||||||
},
|
|
||||||
component: CoreGradesCoursesPage,
|
component: CoreGradesCoursesPage,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -46,9 +42,6 @@ const mobileRoutes: Routes = [
|
||||||
const tabletRoutes: Routes = [
|
const tabletRoutes: Routes = [
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
data: {
|
|
||||||
mainMenuTabRoot: CoreGradesUserHandlerService.PAGE_NAME,
|
|
||||||
},
|
|
||||||
component: CoreGradesCoursesPage,
|
component: CoreGradesCoursesPage,
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
|
@ -85,4 +78,4 @@ const routes: Routes = [
|
||||||
CoreGradesGradePage,
|
CoreGradesGradePage,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class CoreGradesLazyModule {}
|
export class CoreGradesCoursesLazyModule {}
|
|
@ -15,16 +15,17 @@
|
||||||
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 { COURSE_PAGE_NAME } from '@features/course/course.module';
|
||||||
import { CoreCourseIndexRoutingModule } from '@features/course/pages/index/index-routing.module';
|
import { CoreCourseIndexRoutingModule } from '@features/course/pages/index/index-routing.module';
|
||||||
import { CoreCourseOptionsDelegate } from '@features/course/services/course-options-delegate';
|
import { CoreCourseOptionsDelegate } from '@features/course/services/course-options-delegate';
|
||||||
import { CoreMainMenuRoutingModule } from '@features/mainmenu/mainmenu-routing.module';
|
|
||||||
import { CoreMainMenuTabRoutingModule } from '@features/mainmenu/mainmenu-tab-routing.module';
|
import { CoreMainMenuTabRoutingModule } from '@features/mainmenu/mainmenu-tab-routing.module';
|
||||||
import { CoreUserDelegate } from '@features/user/services/user-delegate';
|
import { CoreUserDelegate } from '@features/user/services/user-delegate';
|
||||||
|
import { PARTICIPANTS_PAGE_NAME } from '@features/user/user.module';
|
||||||
import { CoreGradesProvider } from './services/grades';
|
import { CoreGradesProvider } from './services/grades';
|
||||||
import { CoreGradesHelperProvider } from './services/grades-helper';
|
import { CoreGradesHelperProvider } from './services/grades-helper';
|
||||||
import { CoreGradesCourseOptionHandler } from './services/handlers/course-option';
|
import { CoreGradesCourseOptionHandler } from './services/handlers/course-option';
|
||||||
import { CoreGradesOverviewLinkHandler } from './services/handlers/overview-link';
|
import { CoreGradesOverviewLinkHandler } from './services/handlers/overview-link';
|
||||||
import { CoreGradesUserHandler, CoreGradesUserHandlerService } from './services/handlers/user';
|
import { CoreGradesUserHandler } from './services/handlers/user';
|
||||||
import { CoreGradesUserLinkHandler } from './services/handlers/user-link';
|
import { CoreGradesUserLinkHandler } from './services/handlers/user-link';
|
||||||
|
|
||||||
export const CORE_GRADES_SERVICES: Type<unknown>[] = [
|
export const CORE_GRADES_SERVICES: Type<unknown>[] = [
|
||||||
|
@ -32,28 +33,29 @@ export const CORE_GRADES_SERVICES: Type<unknown>[] = [
|
||||||
CoreGradesHelperProvider,
|
CoreGradesHelperProvider,
|
||||||
];
|
];
|
||||||
|
|
||||||
const routes: Routes = [
|
export const GRADES_PAGE_NAME = 'grades';
|
||||||
|
|
||||||
|
const mainMenuChildrenRoutes: Routes = [
|
||||||
{
|
{
|
||||||
path: CoreGradesUserHandlerService.PAGE_NAME,
|
path: GRADES_PAGE_NAME,
|
||||||
loadChildren: () => import('@features/grades/grades-lazy.module').then(m => m.CoreGradesLazyModule),
|
loadChildren: () => import('./grades-courses-lazy.module').then(m => m.CoreGradesCoursesLazyModule),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'user-grades/:courseId',
|
path: `${COURSE_PAGE_NAME}/:courseId/${PARTICIPANTS_PAGE_NAME}/:userId/${GRADES_PAGE_NAME}`,
|
||||||
loadChildren: () => import('@features/grades/grades-course-lazy.module').then(m => m.CoreGradesCourseLazyModule),
|
loadChildren: () => import('./grades-course-lazy.module').then(m => m.CoreGradesCourseLazyModule),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const courseIndexRoutes: Routes = [
|
const courseIndexRoutes: Routes = [
|
||||||
{
|
{
|
||||||
path: 'grades',
|
path: GRADES_PAGE_NAME,
|
||||||
loadChildren: () => import('@features/grades/grades-course-lazy.module').then(m => m.CoreGradesCourseLazyModule),
|
loadChildren: () => import('./grades-course-lazy.module').then(m => m.CoreGradesCourseLazyModule),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
CoreMainMenuTabRoutingModule.forChild(routes),
|
CoreMainMenuTabRoutingModule.forChild(mainMenuChildrenRoutes),
|
||||||
CoreMainMenuRoutingModule.forChild({ children: routes }),
|
|
||||||
CoreCourseIndexRoutingModule.forChild({ children: courseIndexRoutes }),
|
CoreCourseIndexRoutingModule.forChild({ children: courseIndexRoutes }),
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
|
|
|
@ -159,7 +159,11 @@ class CoreGradesCourseManager extends CorePageItemsListManager<CoreGradesFormatt
|
||||||
*/
|
*/
|
||||||
async select(row: CoreGradesFormattedTableRowFilled): Promise<void> {
|
async select(row: CoreGradesFormattedTableRowFilled): Promise<void> {
|
||||||
if (this.outsideGradesTab) {
|
if (this.outsideGradesTab) {
|
||||||
await CoreNavigator.navigateToSitePath(`/grades/${this.courseId}/${row.id}`);
|
await CoreNavigator.navigateToSitePath(`/grades/${this.courseId}/${row.id}`, {
|
||||||
|
params: {
|
||||||
|
userId: this.userId,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,7 @@ import { CoreNavigator } from '@services/navigator';
|
||||||
import { makeSingleton, Translate } from '@singletons';
|
import { makeSingleton, Translate } from '@singletons';
|
||||||
import { CoreError } from '@classes/errors/error';
|
import { CoreError } from '@classes/errors/error';
|
||||||
import { CoreCourseHelper } from '@features/course/services/course-helper';
|
import { CoreCourseHelper } from '@features/course/services/course-helper';
|
||||||
|
import { GRADES_PAGE_NAME } from '../grades.module';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service that provides some features regarding grades information.
|
* Service that provides some features regarding grades information.
|
||||||
|
@ -472,10 +473,7 @@ export class CoreGradesHelperProvider {
|
||||||
const gradeId = item.id;
|
const gradeId = item.id;
|
||||||
|
|
||||||
await CoreUtils.ignoreErrors(
|
await CoreUtils.ignoreErrors(
|
||||||
CoreNavigator.navigateToSitePath(`/grades/${courseId}/${gradeId}`, {
|
CoreNavigator.navigateToSitePath(`/${GRADES_PAGE_NAME}/${courseId}/${gradeId}`, { siteId }),
|
||||||
siteId,
|
|
||||||
params: { userId },
|
|
||||||
}),
|
|
||||||
);
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
try {
|
try {
|
||||||
|
@ -483,10 +481,7 @@ export class CoreGradesHelperProvider {
|
||||||
if (userId && userId != currentUserId) {
|
if (userId && userId != currentUserId) {
|
||||||
// View another user grades. Open the grades page directly.
|
// View another user grades. Open the grades page directly.
|
||||||
await CoreUtils.ignoreErrors(
|
await CoreUtils.ignoreErrors(
|
||||||
CoreNavigator.navigateToSitePath(`/grades/${courseId}`, {
|
CoreNavigator.navigateToSitePath(`/${GRADES_PAGE_NAME}/${courseId}`, { siteId }),
|
||||||
siteId,
|
|
||||||
params: { userId },
|
|
||||||
}),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -502,7 +497,7 @@ export class CoreGradesHelperProvider {
|
||||||
await CoreCourseHelper.getAndOpenCourse(courseId, { selectedTab: 'CoreGrades' }, siteId);
|
await CoreCourseHelper.getAndOpenCourse(courseId, { selectedTab: 'CoreGrades' }, siteId);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// Cannot get course for some reason, just open the grades page.
|
// Cannot get course for some reason, just open the grades page.
|
||||||
await CoreNavigator.navigateToSitePath(`/grades/${courseId}`, { siteId });
|
await CoreNavigator.navigateToSitePath(`/${GRADES_PAGE_NAME}/${courseId}`, { siteId });
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
modal.dismiss();
|
modal.dismiss();
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { CoreContentLinksHandlerBase } from '@features/contentlinks/classes/base-handler';
|
import { CoreContentLinksHandlerBase } from '@features/contentlinks/classes/base-handler';
|
||||||
import { CoreContentLinksAction } from '@features/contentlinks/services/contentlinks-delegate';
|
import { CoreContentLinksAction } from '@features/contentlinks/services/contentlinks-delegate';
|
||||||
|
import { GRADES_PAGE_NAME } from '@features/grades/grades.module';
|
||||||
import { CoreNavigator } from '@services/navigator';
|
import { CoreNavigator } from '@services/navigator';
|
||||||
import { makeSingleton } from '@singletons';
|
import { makeSingleton } from '@singletons';
|
||||||
import { CoreGrades } from '../grades';
|
import { CoreGrades } from '../grades';
|
||||||
|
@ -36,10 +37,7 @@ export class CoreGradesOverviewLinkHandlerService extends CoreContentLinksHandle
|
||||||
getActions(): CoreContentLinksAction[] | Promise<CoreContentLinksAction[]> {
|
getActions(): CoreContentLinksAction[] | Promise<CoreContentLinksAction[]> {
|
||||||
return [{
|
return [{
|
||||||
action: siteId => {
|
action: siteId => {
|
||||||
CoreNavigator.navigateToSitePath('/grades', {
|
CoreNavigator.navigateToSitePath(GRADES_PAGE_NAME, { siteId });
|
||||||
siteId,
|
|
||||||
preferCurrentTab: false,
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
|
import { COURSE_PAGE_NAME } from '@features/course/course.module';
|
||||||
|
import { GRADES_PAGE_NAME } from '@features/grades/grades.module';
|
||||||
|
|
||||||
import { CoreGrades } from '@features/grades/services/grades';
|
import { CoreGrades } from '@features/grades/services/grades';
|
||||||
import { CoreUserProfile } from '@features/user/services/user';
|
import { CoreUserProfile } from '@features/user/services/user';
|
||||||
|
@ -21,6 +23,7 @@ import {
|
||||||
CoreUserProfileHandler,
|
CoreUserProfileHandler,
|
||||||
CoreUserProfileHandlerData,
|
CoreUserProfileHandlerData,
|
||||||
} from '@features/user/services/user-delegate';
|
} from '@features/user/services/user-delegate';
|
||||||
|
import { PARTICIPANTS_PAGE_NAME } from '@features/user/user.module';
|
||||||
import { CoreNavigator } from '@services/navigator';
|
import { CoreNavigator } from '@services/navigator';
|
||||||
import { CoreSites } from '@services/sites';
|
import { CoreSites } from '@services/sites';
|
||||||
import { CoreUtils } from '@services/utils/utils';
|
import { CoreUtils } from '@services/utils/utils';
|
||||||
|
@ -32,8 +35,6 @@ import { makeSingleton } from '@singletons';
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class CoreGradesUserHandlerService implements CoreUserProfileHandler {
|
export class CoreGradesUserHandlerService implements CoreUserProfileHandler {
|
||||||
|
|
||||||
static readonly PAGE_NAME = 'grades';
|
|
||||||
|
|
||||||
name = 'CoreGrades:viewGrades';
|
name = 'CoreGrades:viewGrades';
|
||||||
priority = 400;
|
priority = 400;
|
||||||
type = CoreUserDelegateService.TYPE_NEW_PAGE;
|
type = CoreUserDelegateService.TYPE_NEW_PAGE;
|
||||||
|
@ -81,9 +82,9 @@ export class CoreGradesUserHandlerService implements CoreUserProfileHandler {
|
||||||
action: (event, user, courseId): void => {
|
action: (event, user, courseId): void => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
CoreNavigator.navigateToSitePath(`/user-grades/${courseId}`, {
|
CoreNavigator.navigateToSitePath(
|
||||||
params: { userId: user.id },
|
[COURSE_PAGE_NAME, courseId, PARTICIPANTS_PAGE_NAME, user.id, GRADES_PAGE_NAME].join('/'),
|
||||||
});
|
);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
|
@ -94,7 +95,7 @@ export class CoreGradesUserHandlerService implements CoreUserProfileHandler {
|
||||||
action: (event): void => {
|
action: (event): void => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
CoreNavigator.navigateToSitePath(CoreGradesUserHandlerService.PAGE_NAME);
|
CoreNavigator.navigateToSitePath(GRADES_PAGE_NAME);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue