+
diff --git a/src/core/features/courses/pages/course-preview/course-preview.module.ts b/src/core/features/course/pages/preview/preview.module.ts
similarity index 75%
rename from src/core/features/courses/pages/course-preview/course-preview.module.ts
rename to src/core/features/course/pages/preview/preview.module.ts
index d8e0a8879..168aed845 100644
--- a/src/core/features/courses/pages/course-preview/course-preview.module.ts
+++ b/src/core/features/course/pages/preview/preview.module.ts
@@ -16,13 +16,12 @@ import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { CoreSharedModule } from '@/core/shared.module';
-import { CoreCoursesCoursePreviewPage } from './course-preview';
-import { CoreCoursesComponentsModule } from '../../components/components.module';
+import { CoreCoursePreviewPage } from './preview.page';
const routes: Routes = [
{
path: '',
- component: CoreCoursesCoursePreviewPage,
+ component: CoreCoursePreviewPage,
},
];
@@ -30,11 +29,10 @@ const routes: Routes = [
imports: [
RouterModule.forChild(routes),
CoreSharedModule,
- CoreCoursesComponentsModule,
],
declarations: [
- CoreCoursesCoursePreviewPage,
+ CoreCoursePreviewPage,
],
exports: [RouterModule],
})
-export class CoreCoursesCoursePreviewPageModule { }
+export class CoreCoursePreviewPageModule { }
diff --git a/src/core/features/courses/pages/course-preview/course-preview.ts b/src/core/features/course/pages/preview/preview.page.ts
similarity index 97%
rename from src/core/features/courses/pages/course-preview/course-preview.ts
rename to src/core/features/course/pages/preview/preview.page.ts
index 0b95eb3bc..ef7569fd2 100644
--- a/src/core/features/courses/pages/course-preview/course-preview.ts
+++ b/src/core/features/course/pages/preview/preview.page.ts
@@ -15,7 +15,7 @@
import { Component, OnDestroy, NgZone, OnInit } from '@angular/core';
import { ModalController, IonRefresher } from '@ionic/angular';
import { CoreApp } from '@services/app';
-import { CoreEventCourseStatusChanged, CoreEventObserver, CoreEvents } from '@singletons/events';
+import { CoreEventObserver, CoreEvents } from '@singletons/events';
import { CoreSites } from '@services/sites';
import { CoreDomUtils } from '@services/utils/dom';
import { CoreTextUtils } from '@services/utils/text';
@@ -32,18 +32,18 @@ import { CoreCourse, CoreCourseProvider } from '@features/course/services/course
import { CoreCourseHelper, CorePrefetchStatusInfo } from '@features/course/services/course-helper';
import { Translate } from '@singletons';
import { CoreConstants } from '@/core/constants';
-import { CoreCoursesSelfEnrolPasswordComponent } from '../../components/self-enrol-password/self-enrol-password';
+import { CoreCoursesSelfEnrolPasswordComponent } from '../../../courses/components/self-enrol-password/self-enrol-password';
import { CoreNavigator } from '@services/navigator';
/**
* Page that allows "previewing" a course and enrolling in it if enabled and not enrolled.
*/
@Component({
- selector: 'page-core-courses-course-preview',
- templateUrl: 'course-preview.html',
- styleUrls: ['course-preview.scss'],
+ selector: 'page-core-course-preview',
+ templateUrl: 'preview.html',
+ styleUrls: ['preview.scss'],
})
-export class CoreCoursesCoursePreviewPage implements OnInit, OnDestroy {
+export class CoreCoursePreviewPage implements OnInit, OnDestroy {
course?: CoreCourseSearchedData;
isEnrolled = false;
@@ -84,7 +84,7 @@ export class CoreCoursesCoursePreviewPage implements OnInit, OnDestroy {
if (this.downloadCourseEnabled) {
// Listen for status change in course.
- this.courseStatusObserver = CoreEvents.on(CoreEvents.COURSE_STATUS_CHANGED, (data: CoreEventCourseStatusChanged) => {
+ this.courseStatusObserver = CoreEvents.on(CoreEvents.COURSE_STATUS_CHANGED, (data) => {
if (data.courseId == this.course!.id || data.courseId == CoreCourseProvider.ALL_COURSES_CLEARED) {
this.updateCourseStatus(data.status);
}
diff --git a/src/core/features/courses/pages/course-preview/course-preview.scss b/src/core/features/course/pages/preview/preview.scss
similarity index 100%
rename from src/core/features/courses/pages/course-preview/course-preview.scss
rename to src/core/features/course/pages/preview/preview.scss
diff --git a/src/core/features/course/pages/unsupported-module/unsupported-module.module.ts b/src/core/features/course/pages/unsupported-module/unsupported-module.module.ts
index 82a9e5afd..596d96650 100644
--- a/src/core/features/course/pages/unsupported-module/unsupported-module.module.ts
+++ b/src/core/features/course/pages/unsupported-module/unsupported-module.module.ts
@@ -16,7 +16,7 @@ import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { CoreSharedModule } from '@/core/shared.module';
-import { CoreCourseUnsupportedModulePage } from './unsupported-module';
+import { CoreCourseUnsupportedModulePage } from './unsupported-module.page';
import { CoreCourseComponentsModule } from '@features/course/components/components.module';
const routes: Routes = [
diff --git a/src/core/features/course/pages/unsupported-module/unsupported-module.ts b/src/core/features/course/pages/unsupported-module/unsupported-module.page.ts
similarity index 100%
rename from src/core/features/course/pages/unsupported-module/unsupported-module.ts
rename to src/core/features/course/pages/unsupported-module/unsupported-module.page.ts
diff --git a/src/core/features/course/services/course-helper.ts b/src/core/features/course/services/course-helper.ts
index 88d7bbb4b..2fbc9701f 100644
--- a/src/core/features/course/services/course-helper.ts
+++ b/src/core/features/course/services/course-helper.ts
@@ -1848,7 +1848,7 @@ export class CoreCourseHelperProvider {
params = params || {};
Object.assign(params, { course: course });
- await CoreNavigator.navigateToSitePath('course', { siteId, params });
+ await CoreNavigator.navigateToSitePath('course/' + course.id, { siteId, params });
}
}
diff --git a/src/core/features/course/services/handlers/default-format.ts b/src/core/features/course/services/handlers/default-format.ts
index 35c02270e..d0e800932 100644
--- a/src/core/features/course/services/handlers/default-format.ts
+++ b/src/core/features/course/services/handlers/default-format.ts
@@ -177,7 +177,7 @@ export class CoreCourseFormatDefaultHandler implements CoreCourseFormatHandler {
Object.assign(params, { course: course });
// Don't return the .push promise, we don't want to display a loading modal during the page transition.
- CoreNavigator.navigateToSitePath('course', { params });
+ CoreNavigator.navigateToSitePath('course/' + course.id, { params });
}
/**
diff --git a/src/core/features/course/services/handlers/default-module.ts b/src/core/features/course/services/handlers/default-module.ts
index 483c3cb5c..052878766 100644
--- a/src/core/features/course/services/handlers/default-module.ts
+++ b/src/core/features/course/services/handlers/default-module.ts
@@ -64,9 +64,9 @@ export class CoreCourseModuleDefaultHandler implements CoreCourseModuleHandler {
event.stopPropagation();
options = options || {};
- options.params = { module, courseId };
+ options.params = { module };
- CoreNavigator.navigateToSitePath('course/unsupported-module', options);
+ CoreNavigator.navigateToSitePath('course/' + courseId + '/unsupported-module', options);
},
};
diff --git a/src/core/features/courses/components/course-list-item/course-list-item.ts b/src/core/features/courses/components/course-list-item/course-list-item.ts
index c3d92b871..5f3ef4cb7 100644
--- a/src/core/features/courses/components/course-list-item/course-list-item.ts
+++ b/src/core/features/courses/components/course-list-item/course-list-item.ts
@@ -94,7 +94,10 @@ export class CoreCoursesCourseListItemComponent implements OnInit {
if (this.isEnrolled) {
CoreCourseHelper.openCourse(this.course);
} else {
- CoreNavigator.navigate('courses/preview', { params: { course: this.course } });
+ CoreNavigator.navigate(
+ '/course/' + this.course.id + '/preview',
+ { params: { course: this.course } },
+ );
}
}
diff --git a/src/core/features/courses/courses-lazy.module.ts b/src/core/features/courses/courses-lazy.module.ts
index 09095bed1..0fa55f3fb 100644
--- a/src/core/features/courses/courses-lazy.module.ts
+++ b/src/core/features/courses/courses-lazy.module.ts
@@ -50,12 +50,6 @@ const routes: Routes = [
import('./pages/my-courses/my-courses.module')
.then(m => m.CoreCoursesMyCoursesPageModule),
},
- {
- path: 'preview',
- loadChildren: () =>
- import('./pages/course-preview/course-preview.module')
- .then(m => m.CoreCoursesCoursePreviewPageModule),
- },
];
@NgModule({
diff --git a/src/core/features/courses/services/handlers/enrol-push-click.ts b/src/core/features/courses/services/handlers/enrol-push-click.ts
index 0731e2463..c606d3384 100644
--- a/src/core/features/courses/services/handlers/enrol-push-click.ts
+++ b/src/core/features/courses/services/handlers/enrol-push-click.ts
@@ -59,18 +59,14 @@ export class CoreCoursesEnrolPushClickHandlerService implements CorePushNotifica
const params: Params = {
course: result.course,
};
- let page: string;
+ let page = 'course/' + courseId;
if (notification.contexturl?.indexOf('user/index.php') != -1) {
// Open the participants tab.
- page = 'course';
- params.selectedTab = 'user_participants'; // @todo: Set this when participants is done.
- } else if (result.enrolled) {
- // User is still enrolled, open the course.
- page = 'course';
- } else {
+ params.selectedTab = 'participants'; // @todo: Set this when participants is done.
+ } else if (!result.enrolled) {
// User not enrolled anymore, open the preview page.
- page = 'courses/preview';;
+ page += '/preview';
}
await CoreNavigator.navigateToSitePath(page, { params, siteId: notification.site });
diff --git a/src/core/features/courses/services/handlers/request-push-click.ts b/src/core/features/courses/services/handlers/request-push-click.ts
index e361fc0ee..92fdea4fc 100644
--- a/src/core/features/courses/services/handlers/request-push-click.ts
+++ b/src/core/features/courses/services/handlers/request-push-click.ts
@@ -75,14 +75,11 @@ export class CoreCoursesRequestPushClickHandlerService implements CorePushNotifi
const params: Params = {
course: result.course,
};
- let page: string;
+ let page = 'course/' + courseId;
- if (result.enrolled) {
- // User is still enrolled, open the course.
- page = 'course';
- } else {
+ if (!result.enrolled) {
// User not enrolled (shouldn't happen), open the preview page.
- page = 'courses/preview';
+ page += '/preview';
}
await CoreNavigator.navigateToSitePath(page, { params, siteId: notification.site });
diff --git a/src/core/features/grades/grades-lazy.module.ts b/src/core/features/grades/grades-lazy.module.ts
index f97dfa538..64d960301 100644
--- a/src/core/features/grades/grades-lazy.module.ts
+++ b/src/core/features/grades/grades-lazy.module.ts
@@ -21,8 +21,8 @@ import { CoreSharedModule } from '@/core/shared.module';
import { CoreGradesCoursePage } from './pages/course/course.page';
import { CoreGradesCoursePageModule } from './pages/course/course.module';
-import { CoreGradesCoursesPage } from './pages/courses/courses';
-import { CoreGradesGradePage } from './pages/grade/grade';
+import { CoreGradesCoursesPage } from './pages/courses/courses.page';
+import { CoreGradesGradePage } from './pages/grade/grade.page';
const mobileRoutes: Routes = [
{
diff --git a/src/core/features/grades/pages/courses/courses.ts b/src/core/features/grades/pages/courses/courses.page.ts
similarity index 84%
rename from src/core/features/grades/pages/courses/courses.ts
rename to src/core/features/grades/pages/courses/courses.page.ts
index df98d2033..603253f58 100644
--- a/src/core/features/grades/pages/courses/courses.ts
+++ b/src/core/features/grades/pages/courses/courses.page.ts
@@ -16,10 +16,11 @@ import { AfterViewInit, Component, OnDestroy, ViewChild } from '@angular/core';
import { ActivatedRouteSnapshot } from '@angular/router';
import { CorePageItemsListManager } from '@classes/page-items-list-manager';
-import { CoreSplitViewComponent } from '@components/split-view/split-view';
+import { CoreSplitViewComponent, CoreSplitViewMode } from '@components/split-view/split-view';
import { CoreGrades } from '@features/grades/services/grades';
import { CoreGradesGradeOverviewWithCourseData, CoreGradesHelper } from '@features/grades/services/grades-helper';
import { IonRefresher } from '@ionic/angular';
+import { CoreNavigator } from '@services/navigator';
import { CoreDomUtils } from '@services/utils/dom';
import { CoreUtils } from '@services/utils/utils';
@@ -33,13 +34,27 @@ import { CoreUtils } from '@services/utils/utils';
export class CoreGradesCoursesPage implements OnDestroy, AfterViewInit {
courses: CoreGradesCoursesManager = new CoreGradesCoursesManager(CoreGradesCoursesPage);
+ splitViewMode?: CoreSplitViewMode;
@ViewChild(CoreSplitViewComponent) splitView!: CoreSplitViewComponent;
+ constructor() {
+ const userId = CoreNavigator.getRouteNumberParam('userId');
+ const courseId = CoreNavigator.getRouteNumberParam('courseId');
+
+ // If courseId and userId is set, show only the content page.
+ this.splitViewMode = courseId && userId ? undefined : CoreSplitViewMode.ContentOnly;
+ }
+
/**
* @inheritdoc
*/
async ngAfterViewInit(): Promise
{
+ if (this.splitViewMode) {
+ // Won't be shown, do nothing.
+ return;
+ }
+
await this.fetchInitialCourses();
this.courses.start(this.splitView);
diff --git a/src/core/features/grades/pages/grade/grade.html b/src/core/features/grades/pages/grade/grade.html
index 3e9993a8a..db2e2ee0e 100644
--- a/src/core/features/grades/pages/grade/grade.html
+++ b/src/core/features/grades/pages/grade/grade.html
@@ -11,7 +11,7 @@
-
+