From d18faba0c3f598aa44cd261685bfa2a873e5f2f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Thu, 4 Mar 2021 10:34:06 +0100 Subject: [PATCH] MOBILE-3642 course: Add main activity index template page --- src/addons/mod/assign/pages/index/index.html | 2 +- .../mod/assign/pages/index/index.page.ts | 46 ++----------- src/addons/mod/book/book-lazy.module.ts | 14 +++- src/addons/mod/book/pages/index/index.html | 2 +- .../mod/book/pages/index/index.module.ts | 40 ----------- .../pages/index/{index.ts => index.page.ts} | 24 ++----- src/addons/mod/forum/forum-lazy.module.ts | 2 +- src/addons/mod/forum/pages/index/index.html | 2 +- .../mod/forum/pages/index/index.page.ts | 28 ++++++++ .../components/menu-modal/menu-modal.ts | 2 +- src/addons/mod/lesson/lesson-lazy.module.ts | 16 ++++- src/addons/mod/lesson/pages/index/index.html | 4 +- .../mod/lesson/pages/index/index.module.ts | 40 ----------- .../pages/index/{index.ts => index.page.ts} | 38 ++-------- .../mod/lesson/pages/player/player.module.ts | 2 +- .../player/{player.ts => player.page.ts} | 0 .../pages/user-retake/user-retake.module.ts | 2 +- .../{user-retake.ts => user-retake.page.ts} | 0 src/addons/mod/page/page-lazy.module.ts | 15 +++- src/addons/mod/page/pages/index/index.html | 2 +- .../mod/page/pages/index/index.module.ts | 40 ----------- src/addons/mod/page/pages/index/index.page.ts | 30 ++++++++ src/addons/mod/page/pages/index/index.ts | 54 --------------- .../mod/quiz/pages/attempt/attempt.module.ts | 2 +- .../attempt/{attempt.ts => attempt.page.ts} | 0 src/addons/mod/quiz/pages/index/index.html | 2 +- .../mod/quiz/pages/index/index.module.ts | 40 ----------- src/addons/mod/quiz/pages/index/index.page.ts | 30 ++++++++ src/addons/mod/quiz/pages/index/index.ts | 69 ------------------- .../mod/quiz/pages/player/player.module.ts | 2 +- .../player/{player.ts => player.page.ts} | 0 .../mod/quiz/pages/review/review.module.ts | 2 +- .../review/{review.ts => review.page.ts} | 0 src/addons/mod/quiz/quiz-lazy.module.ts | 16 ++++- .../course/classes/main-activity-page.ts} | 41 ++++++++--- 35 files changed, 197 insertions(+), 412 deletions(-) delete mode 100644 src/addons/mod/book/pages/index/index.module.ts rename src/addons/mod/book/pages/index/{index.ts => index.page.ts} (59%) create mode 100644 src/addons/mod/forum/pages/index/index.page.ts delete mode 100644 src/addons/mod/lesson/pages/index/index.module.ts rename src/addons/mod/lesson/pages/index/{index.ts => index.page.ts} (54%) rename src/addons/mod/lesson/pages/player/{player.ts => player.page.ts} (100%) rename src/addons/mod/lesson/pages/user-retake/{user-retake.ts => user-retake.page.ts} (100%) delete mode 100644 src/addons/mod/page/pages/index/index.module.ts create mode 100644 src/addons/mod/page/pages/index/index.page.ts delete mode 100644 src/addons/mod/page/pages/index/index.ts rename src/addons/mod/quiz/pages/attempt/{attempt.ts => attempt.page.ts} (100%) delete mode 100644 src/addons/mod/quiz/pages/index/index.module.ts create mode 100644 src/addons/mod/quiz/pages/index/index.page.ts delete mode 100644 src/addons/mod/quiz/pages/index/index.ts rename src/addons/mod/quiz/pages/player/{player.ts => player.page.ts} (100%) rename src/addons/mod/quiz/pages/review/{review.ts => review.page.ts} (100%) rename src/{addons/mod/forum/pages/index/index.ts => core/features/course/classes/main-activity-page.ts} (53%) diff --git a/src/addons/mod/assign/pages/index/index.html b/src/addons/mod/assign/pages/index/index.html index 4a3c8499d..457b6f8d0 100644 --- a/src/addons/mod/assign/pages/index/index.html +++ b/src/addons/mod/assign/pages/index/index.html @@ -14,7 +14,7 @@ - + diff --git a/src/addons/mod/assign/pages/index/index.page.ts b/src/addons/mod/assign/pages/index/index.page.ts index e1e59f9fe..1d4321208 100644 --- a/src/addons/mod/assign/pages/index/index.page.ts +++ b/src/addons/mod/assign/pages/index/index.page.ts @@ -12,11 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { Component, OnInit, ViewChild } from '@angular/core'; -import { CoreCourseWSModule } from '@features/course/services/course'; -import { CoreNavigator } from '@services/navigator'; +import { Component, ViewChild } from '@angular/core'; +import { CoreCourseModuleMainActivityPage } from '@features/course/classes/main-activity-page'; import { AddonModAssignIndexComponent } from '../../components/index/index'; -import { AddonModAssignAssign } from '../../services/assign'; /** * Page that displays an assign. @@ -25,44 +23,8 @@ import { AddonModAssignAssign } from '../../services/assign'; selector: 'page-addon-mod-assign-index', templateUrl: 'index.html', }) -export class AddonModAssignIndexPage implements OnInit { +export class AddonModAssignIndexPage extends CoreCourseModuleMainActivityPage { - @ViewChild(AddonModAssignIndexComponent) assignComponent?: AddonModAssignIndexComponent; - - title?: string; - module?: CoreCourseWSModule; - courseId?: number; - - /** - * Component being initialized. - */ - ngOnInit(): void { - this.module = CoreNavigator.getRouteParam('module'); - this.courseId = CoreNavigator.getRouteNumberParam('courseId'); - this.title = this.module?.name; - } - - /** - * Update some data based on the assign instance. - * - * @param assign Assign instance. - */ - updateData(assign: AddonModAssignAssign): void { - this.title = assign.name || this.title; - } - - /** - * User entered the page. - */ - ionViewDidEnter(): void { - this.assignComponent?.ionViewDidEnter(); - } - - /** - * User left the page. - */ - ionViewDidLeave(): void { - this.assignComponent?.ionViewDidLeave(); - } + @ViewChild(AddonModAssignIndexComponent) activityComponent?: AddonModAssignIndexComponent; } diff --git a/src/addons/mod/book/book-lazy.module.ts b/src/addons/mod/book/book-lazy.module.ts index 3a59b499f..974dce981 100644 --- a/src/addons/mod/book/book-lazy.module.ts +++ b/src/addons/mod/book/book-lazy.module.ts @@ -14,15 +14,25 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; +import { CoreSharedModule } from '@/core/shared.module'; +import { AddonModBookComponentsModule } from './components/components.module'; +import { AddonModBookIndexPage } from './pages/index/index.page'; const routes: Routes = [ { path: ':courseId/:cmId', - loadChildren: () => import('./pages/index/index.module').then( m => m.AddonModBookIndexPageModule), + component: AddonModBookIndexPage, }, ]; @NgModule({ - imports: [RouterModule.forChild(routes)], + imports: [ + RouterModule.forChild(routes), + CoreSharedModule, + AddonModBookComponentsModule, + ], + declarations: [ + AddonModBookIndexPage, + ], }) export class AddonModBookLazyModule {} diff --git a/src/addons/mod/book/pages/index/index.html b/src/addons/mod/book/pages/index/index.html index afea617fb..fd3fa778d 100644 --- a/src/addons/mod/book/pages/index/index.html +++ b/src/addons/mod/book/pages/index/index.html @@ -13,7 +13,7 @@ - + diff --git a/src/addons/mod/book/pages/index/index.module.ts b/src/addons/mod/book/pages/index/index.module.ts deleted file mode 100644 index 98761d47d..000000000 --- a/src/addons/mod/book/pages/index/index.module.ts +++ /dev/null @@ -1,40 +0,0 @@ -// (C) Copyright 2015 Moodle Pty Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { CoreSharedModule } from '@/core/shared.module'; -import { AddonModBookComponentsModule } from '../../components/components.module'; -import { AddonModBookIndexPage } from './index'; - -const routes: Routes = [ - { - path: '', - component: AddonModBookIndexPage, - }, -]; - -@NgModule({ - imports: [ - RouterModule.forChild(routes), - CoreSharedModule, - AddonModBookComponentsModule, - ], - declarations: [ - AddonModBookIndexPage, - ], - exports: [RouterModule], -}) -export class AddonModBookIndexPageModule {} diff --git a/src/addons/mod/book/pages/index/index.ts b/src/addons/mod/book/pages/index/index.page.ts similarity index 59% rename from src/addons/mod/book/pages/index/index.ts rename to src/addons/mod/book/pages/index/index.page.ts index abd59810e..e361ca8ba 100644 --- a/src/addons/mod/book/pages/index/index.ts +++ b/src/addons/mod/book/pages/index/index.page.ts @@ -13,10 +13,9 @@ // limitations under the License. import { Component, OnInit, ViewChild } from '@angular/core'; -import { CoreCourseWSModule } from '@features/course/services/course'; +import { CoreCourseModuleMainActivityPage } from '@features/course/classes/main-activity-page'; import { CoreNavigator } from '@services/navigator'; import { AddonModBookIndexComponent } from '../../components/index/index'; -import { AddonModBookBookWSData } from '../../services/book'; /** * Page that displays a book. @@ -25,33 +24,18 @@ import { AddonModBookBookWSData } from '../../services/book'; selector: 'page-addon-mod-book-index', templateUrl: 'index.html', }) -export class AddonModBookIndexPage implements OnInit { +export class AddonModBookIndexPage extends CoreCourseModuleMainActivityPage implements OnInit { - @ViewChild(AddonModBookIndexComponent) bookComponent?: AddonModBookIndexComponent; + @ViewChild(AddonModBookIndexComponent) activityComponent?: AddonModBookIndexComponent; - title?: string; - module?: CoreCourseWSModule; - courseId?: number; chapterId?: number; - /** * Component being initialized. */ ngOnInit(): void { - this.module = CoreNavigator.getRouteParam('module'); - this.courseId = CoreNavigator.getRouteNumberParam('courseId'); + super.ngOnInit(); this.chapterId = CoreNavigator.getRouteNumberParam('chapterId'); - this.title = this.module?.name; - } - - /** - * Update some data based on the book instance. - * - * @param book Book instance. - */ - updateData(book: AddonModBookBookWSData): void { - this.title = book.name || this.title; } } diff --git a/src/addons/mod/forum/forum-lazy.module.ts b/src/addons/mod/forum/forum-lazy.module.ts index 5d7301643..a911348cf 100644 --- a/src/addons/mod/forum/forum-lazy.module.ts +++ b/src/addons/mod/forum/forum-lazy.module.ts @@ -20,7 +20,7 @@ import { CoreScreen } from '@services/screen'; import { CoreSharedModule } from '@/core/shared.module'; import { AddonModForumComponentsModule } from './components/components.module'; -import { AddonModForumIndexPage } from './pages/index'; +import { AddonModForumIndexPage } from './pages/index/index.page'; const mobileRoutes: Routes = [ { diff --git a/src/addons/mod/forum/pages/index/index.html b/src/addons/mod/forum/pages/index/index.html index ffcd6cfa7..903687fd6 100644 --- a/src/addons/mod/forum/pages/index/index.html +++ b/src/addons/mod/forum/pages/index/index.html @@ -4,7 +4,7 @@ - + diff --git a/src/addons/mod/forum/pages/index/index.page.ts b/src/addons/mod/forum/pages/index/index.page.ts new file mode 100644 index 000000000..e930a0ae3 --- /dev/null +++ b/src/addons/mod/forum/pages/index/index.page.ts @@ -0,0 +1,28 @@ +// (C) Copyright 2015 Moodle Pty Ltd. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { Component, ViewChild } from '@angular/core'; + +import { CoreCourseModuleMainActivityPage } from '@features/course/classes/main-activity-page'; +import { AddonModForumIndexComponent } from '../../components/index'; + +@Component({ + selector: 'page-addon-mod-forum-index', + templateUrl: 'index.html', +}) +export class AddonModForumIndexPage extends CoreCourseModuleMainActivityPage { + + @ViewChild(AddonModForumIndexComponent) activityComponent?: AddonModForumIndexComponent; + +} diff --git a/src/addons/mod/lesson/components/menu-modal/menu-modal.ts b/src/addons/mod/lesson/components/menu-modal/menu-modal.ts index 73b257e79..a5c31b8d2 100644 --- a/src/addons/mod/lesson/components/menu-modal/menu-modal.ts +++ b/src/addons/mod/lesson/components/menu-modal/menu-modal.ts @@ -15,7 +15,7 @@ import { Component, Input } from '@angular/core'; import { ModalController } from '@singletons'; -import { AddonModLessonPlayerPage } from '../../pages/player/player'; +import { AddonModLessonPlayerPage } from '../../pages/player/player.page'; /** * Modal that renders the lesson menu and media file. diff --git a/src/addons/mod/lesson/lesson-lazy.module.ts b/src/addons/mod/lesson/lesson-lazy.module.ts index 9670c4132..87d4eb6cb 100644 --- a/src/addons/mod/lesson/lesson-lazy.module.ts +++ b/src/addons/mod/lesson/lesson-lazy.module.ts @@ -15,10 +15,15 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; +import { CoreSharedModule } from '@/core/shared.module'; +import { AddonModLessonComponentsModule } from './components/components.module'; + +import { AddonModLessonIndexPage } from './pages/index/index.page'; + const routes: Routes = [ { path: ':courseId/:cmId', - loadChildren: () => import('./pages/index/index.module').then( m => m.AddonModLessonIndexPageModule), + component: AddonModLessonIndexPage, }, { path: 'player/:courseId/:lessonId', @@ -31,6 +36,13 @@ const routes: Routes = [ ]; @NgModule({ - imports: [RouterModule.forChild(routes)], + imports: [ + RouterModule.forChild(routes), + CoreSharedModule, + AddonModLessonComponentsModule, + ], + declarations: [ + AddonModLessonIndexPage, + ], }) export class AddonModLessonLazyModule {} diff --git a/src/addons/mod/lesson/pages/index/index.html b/src/addons/mod/lesson/pages/index/index.html index 25eef8568..a245910fa 100644 --- a/src/addons/mod/lesson/pages/index/index.html +++ b/src/addons/mod/lesson/pages/index/index.html @@ -13,11 +13,11 @@ - + - \ No newline at end of file + diff --git a/src/addons/mod/lesson/pages/index/index.module.ts b/src/addons/mod/lesson/pages/index/index.module.ts deleted file mode 100644 index bc55210c6..000000000 --- a/src/addons/mod/lesson/pages/index/index.module.ts +++ /dev/null @@ -1,40 +0,0 @@ -// (C) Copyright 2015 Moodle Pty Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { CoreSharedModule } from '@/core/shared.module'; -import { AddonModLessonComponentsModule } from '../../components/components.module'; -import { AddonModLessonIndexPage } from './index'; - -const routes: Routes = [ - { - path: '', - component: AddonModLessonIndexPage, - }, -]; - -@NgModule({ - imports: [ - RouterModule.forChild(routes), - CoreSharedModule, - AddonModLessonComponentsModule, - ], - declarations: [ - AddonModLessonIndexPage, - ], - exports: [RouterModule], -}) -export class AddonModLessonIndexPageModule {} diff --git a/src/addons/mod/lesson/pages/index/index.ts b/src/addons/mod/lesson/pages/index/index.page.ts similarity index 54% rename from src/addons/mod/lesson/pages/index/index.ts rename to src/addons/mod/lesson/pages/index/index.page.ts index 983bdda98..bfb308b25 100644 --- a/src/addons/mod/lesson/pages/index/index.ts +++ b/src/addons/mod/lesson/pages/index/index.page.ts @@ -13,11 +13,9 @@ // limitations under the License. import { Component, OnInit, ViewChild } from '@angular/core'; - -import { CoreCourseWSModule } from '@features/course/services/course'; +import { CoreCourseModuleMainActivityPage } from '@features/course/classes/main-activity-page'; import { CoreNavigator } from '@services/navigator'; import { AddonModLessonIndexComponent } from '../../components/index/index'; -import { AddonModLessonLessonWSData } from '../../services/lesson'; /** * Page that displays the lesson entry page. @@ -26,13 +24,10 @@ import { AddonModLessonLessonWSData } from '../../services/lesson'; selector: 'page-addon-mod-lesson-index', templateUrl: 'index.html', }) -export class AddonModLessonIndexPage implements OnInit { +export class AddonModLessonIndexPage extends CoreCourseModuleMainActivityPage implements OnInit { - @ViewChild(AddonModLessonIndexComponent) lessonComponent?: AddonModLessonIndexComponent; + @ViewChild(AddonModLessonIndexComponent) activityComponent?: AddonModLessonIndexComponent; - title?: string; - module?: CoreCourseWSModule; - courseId?: number; group?: number; // The group to display. action?: string; // The "action" to display first. @@ -40,34 +35,9 @@ export class AddonModLessonIndexPage implements OnInit { * Component being initialized. */ ngOnInit(): void { - this.module = CoreNavigator.getRouteParam('module'); - this.courseId = CoreNavigator.getRouteNumberParam('courseId'); + super.ngOnInit(); this.group = CoreNavigator.getRouteNumberParam('group'); this.action = CoreNavigator.getRouteParam('action'); - this.title = this.module?.name; - } - - /** - * Update some data based on the lesson instance. - * - * @param lesson Lesson instance. - */ - updateData(lesson: AddonModLessonLessonWSData): void { - this.title = lesson.name || this.title; - } - - /** - * User entered the page. - */ - ionViewDidEnter(): void { - this.lessonComponent?.ionViewDidEnter(); - } - - /** - * User left the page. - */ - ionViewDidLeave(): void { - this.lessonComponent?.ionViewDidLeave(); } } diff --git a/src/addons/mod/lesson/pages/player/player.module.ts b/src/addons/mod/lesson/pages/player/player.module.ts index 926fd8ac9..f70555e98 100644 --- a/src/addons/mod/lesson/pages/player/player.module.ts +++ b/src/addons/mod/lesson/pages/player/player.module.ts @@ -16,7 +16,7 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { CoreSharedModule } from '@/core/shared.module'; -import { AddonModLessonPlayerPage } from './player'; +import { AddonModLessonPlayerPage } from './player.page'; import { CoreEditorComponentsModule } from '@features/editor/components/components.module'; import { CanLeaveGuard } from '@guards/can-leave'; diff --git a/src/addons/mod/lesson/pages/player/player.ts b/src/addons/mod/lesson/pages/player/player.page.ts similarity index 100% rename from src/addons/mod/lesson/pages/player/player.ts rename to src/addons/mod/lesson/pages/player/player.page.ts diff --git a/src/addons/mod/lesson/pages/user-retake/user-retake.module.ts b/src/addons/mod/lesson/pages/user-retake/user-retake.module.ts index 0f2fe481e..198b8c222 100644 --- a/src/addons/mod/lesson/pages/user-retake/user-retake.module.ts +++ b/src/addons/mod/lesson/pages/user-retake/user-retake.module.ts @@ -16,7 +16,7 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { CoreSharedModule } from '@/core/shared.module'; -import { AddonModLessonUserRetakePage } from './user-retake'; +import { AddonModLessonUserRetakePage } from './user-retake.page'; const routes: Routes = [ { diff --git a/src/addons/mod/lesson/pages/user-retake/user-retake.ts b/src/addons/mod/lesson/pages/user-retake/user-retake.page.ts similarity index 100% rename from src/addons/mod/lesson/pages/user-retake/user-retake.ts rename to src/addons/mod/lesson/pages/user-retake/user-retake.page.ts diff --git a/src/addons/mod/page/page-lazy.module.ts b/src/addons/mod/page/page-lazy.module.ts index a52103771..1174401e2 100644 --- a/src/addons/mod/page/page-lazy.module.ts +++ b/src/addons/mod/page/page-lazy.module.ts @@ -15,14 +15,25 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; +import { CoreSharedModule } from '@/core/shared.module'; +import { AddonModPageComponentsModule } from './components/components.module'; +import { AddonModPageIndexPage } from './pages/index/index.page'; + const routes: Routes = [ { path: ':courseId/:cmId', - loadChildren: () => import('./pages/index/index.module').then( m => m.AddonModPageIndexPageModule), + component: AddonModPageIndexPage, }, ]; @NgModule({ - imports: [RouterModule.forChild(routes)], + imports: [ + RouterModule.forChild(routes), + CoreSharedModule, + AddonModPageComponentsModule, + ], + declarations: [ + AddonModPageIndexPage, + ], }) export class AddonModPageLazyModule {} diff --git a/src/addons/mod/page/pages/index/index.html b/src/addons/mod/page/pages/index/index.html index e52bddb1e..1547156df 100644 --- a/src/addons/mod/page/pages/index/index.html +++ b/src/addons/mod/page/pages/index/index.html @@ -13,7 +13,7 @@ - + diff --git a/src/addons/mod/page/pages/index/index.module.ts b/src/addons/mod/page/pages/index/index.module.ts deleted file mode 100644 index 2d2d9262e..000000000 --- a/src/addons/mod/page/pages/index/index.module.ts +++ /dev/null @@ -1,40 +0,0 @@ -// (C) Copyright 2015 Moodle Pty Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { CoreSharedModule } from '@/core/shared.module'; -import { AddonModPageComponentsModule } from '../../components/components.module'; -import { AddonModPageIndexPage } from './index'; - -const routes: Routes = [ - { - path: '', - component: AddonModPageIndexPage, - }, -]; - -@NgModule({ - imports: [ - RouterModule.forChild(routes), - CoreSharedModule, - AddonModPageComponentsModule, - ], - declarations: [ - AddonModPageIndexPage, - ], - exports: [RouterModule], -}) -export class AddonModPageIndexPageModule {} diff --git a/src/addons/mod/page/pages/index/index.page.ts b/src/addons/mod/page/pages/index/index.page.ts new file mode 100644 index 000000000..67c513525 --- /dev/null +++ b/src/addons/mod/page/pages/index/index.page.ts @@ -0,0 +1,30 @@ +// (C) Copyright 2015 Moodle Pty Ltd. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { Component, ViewChild } from '@angular/core'; +import { CoreCourseModuleMainActivityPage } from '@features/course/classes/main-activity-page'; +import { AddonModPageIndexComponent } from '../../components/index/index'; + +/** + * Page that displays a page. + */ +@Component({ + selector: 'page-addon-mod-page-index', + templateUrl: 'index.html', +}) +export class AddonModPageIndexPage extends CoreCourseModuleMainActivityPage { + + @ViewChild(AddonModPageIndexComponent) activityComponent?: AddonModPageIndexComponent; + +} diff --git a/src/addons/mod/page/pages/index/index.ts b/src/addons/mod/page/pages/index/index.ts deleted file mode 100644 index 729250f56..000000000 --- a/src/addons/mod/page/pages/index/index.ts +++ /dev/null @@ -1,54 +0,0 @@ -// (C) Copyright 2015 Moodle Pty Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import { Component, OnInit, ViewChild } from '@angular/core'; -import { CoreCourseWSModule } from '@features/course/services/course'; -import { CoreNavigator } from '@services/navigator'; -import { AddonModPageIndexComponent } from '../../components/index/index'; -import { AddonModPagePage } from '../../services/page'; - -/** - * Page that displays a page. - */ -@Component({ - selector: 'page-addon-mod-page-index', - templateUrl: 'index.html', -}) -export class AddonModPageIndexPage implements OnInit { - - @ViewChild(AddonModPageIndexComponent) pageComponent?: AddonModPageIndexComponent; - - title?: string; - module?: CoreCourseWSModule; - courseId?: number; - - /** - * Component being initialized. - */ - ngOnInit(): void { - this.module = CoreNavigator.getRouteParam('module'); - this.courseId = CoreNavigator.getRouteNumberParam('courseId'); - this.title = this.module?.name; - } - - /** - * Update some data based on the page instance. - * - * @param page Page instance. - */ - updateData(page: CoreCourseWSModule | AddonModPagePage): void { - this.title = 'name' in page ? page.name : this.title; - } - -} diff --git a/src/addons/mod/quiz/pages/attempt/attempt.module.ts b/src/addons/mod/quiz/pages/attempt/attempt.module.ts index 0e03e43f8..c59d872db 100644 --- a/src/addons/mod/quiz/pages/attempt/attempt.module.ts +++ b/src/addons/mod/quiz/pages/attempt/attempt.module.ts @@ -16,7 +16,7 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { CoreSharedModule } from '@/core/shared.module'; -import { AddonModQuizAttemptPage } from './attempt'; +import { AddonModQuizAttemptPage } from './attempt.page'; const routes: Routes = [ { diff --git a/src/addons/mod/quiz/pages/attempt/attempt.ts b/src/addons/mod/quiz/pages/attempt/attempt.page.ts similarity index 100% rename from src/addons/mod/quiz/pages/attempt/attempt.ts rename to src/addons/mod/quiz/pages/attempt/attempt.page.ts diff --git a/src/addons/mod/quiz/pages/index/index.html b/src/addons/mod/quiz/pages/index/index.html index 51d75b733..3b85aa282 100644 --- a/src/addons/mod/quiz/pages/index/index.html +++ b/src/addons/mod/quiz/pages/index/index.html @@ -14,7 +14,7 @@ - + diff --git a/src/addons/mod/quiz/pages/index/index.module.ts b/src/addons/mod/quiz/pages/index/index.module.ts deleted file mode 100644 index 6cf37c942..000000000 --- a/src/addons/mod/quiz/pages/index/index.module.ts +++ /dev/null @@ -1,40 +0,0 @@ -// (C) Copyright 2015 Moodle Pty Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { CoreSharedModule } from '@/core/shared.module'; -import { AddonModQuizComponentsModule } from '../../components/components.module'; -import { AddonModQuizIndexPage } from './index'; - -const routes: Routes = [ - { - path: '', - component: AddonModQuizIndexPage, - }, -]; - -@NgModule({ - imports: [ - RouterModule.forChild(routes), - CoreSharedModule, - AddonModQuizComponentsModule, - ], - declarations: [ - AddonModQuizIndexPage, - ], - exports: [RouterModule], -}) -export class AddonModQuizIndexPageModule {} diff --git a/src/addons/mod/quiz/pages/index/index.page.ts b/src/addons/mod/quiz/pages/index/index.page.ts new file mode 100644 index 000000000..c62d32e1b --- /dev/null +++ b/src/addons/mod/quiz/pages/index/index.page.ts @@ -0,0 +1,30 @@ +// (C) Copyright 2015 Moodle Pty Ltd. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { Component, ViewChild } from '@angular/core'; +import { CoreCourseModuleMainActivityPage } from '@features/course/classes/main-activity-page'; +import { AddonModQuizIndexComponent } from '../../components/index/index'; + +/** + * Page that displays the quiz entry page. + */ +@Component({ + selector: 'page-addon-mod-quiz-index', + templateUrl: 'index.html', +}) +export class AddonModQuizIndexPage extends CoreCourseModuleMainActivityPage { + + @ViewChild(AddonModQuizIndexComponent) activityComponent?: AddonModQuizIndexComponent; + +} diff --git a/src/addons/mod/quiz/pages/index/index.ts b/src/addons/mod/quiz/pages/index/index.ts deleted file mode 100644 index 6ecbdb4f5..000000000 --- a/src/addons/mod/quiz/pages/index/index.ts +++ /dev/null @@ -1,69 +0,0 @@ -// (C) Copyright 2015 Moodle Pty Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import { Component, OnInit, ViewChild } from '@angular/core'; - -import { CoreCourseWSModule } from '@features/course/services/course'; -import { CoreNavigator } from '@services/navigator'; -import { AddonModQuizIndexComponent } from '../../components/index'; -import { AddonModQuizQuizWSData } from '../../services/quiz'; - -/** - * Page that displays the quiz entry page. - */ -@Component({ - selector: 'page-addon-mod-quiz-index', - templateUrl: 'index.html', -}) -export class AddonModQuizIndexPage implements OnInit { - - @ViewChild(AddonModQuizIndexComponent) quizComponent?: AddonModQuizIndexComponent; - - title?: string; - module?: CoreCourseWSModule; - courseId?: number; - - /** - * Component being initialized. - */ - ngOnInit(): void { - this.module = CoreNavigator.getRouteParam('module'); - this.courseId = CoreNavigator.getRouteNumberParam('courseId'); - this.title = this.module?.name; - } - - /** - * Update some data based on the quiz instance. - * - * @param quiz Quiz instance. - */ - updateData(quiz: AddonModQuizQuizWSData): void { - this.title = quiz.name || this.title; - } - - /** - * User entered the page. - */ - ionViewDidEnter(): void { - this.quizComponent?.ionViewDidEnter(); - } - - /** - * User left the page. - */ - ionViewDidLeave(): void { - this.quizComponent?.ionViewDidLeave(); - } - -} diff --git a/src/addons/mod/quiz/pages/player/player.module.ts b/src/addons/mod/quiz/pages/player/player.module.ts index 603555962..1273a9f42 100644 --- a/src/addons/mod/quiz/pages/player/player.module.ts +++ b/src/addons/mod/quiz/pages/player/player.module.ts @@ -18,7 +18,7 @@ import { RouterModule, Routes } from '@angular/router'; import { CoreQuestionComponentsModule } from '@features/question/components/components.module'; import { CanLeaveGuard } from '@guards/can-leave'; -import { AddonModQuizPlayerPage } from './player'; +import { AddonModQuizPlayerPage } from './player.page'; const routes: Routes = [ { diff --git a/src/addons/mod/quiz/pages/player/player.ts b/src/addons/mod/quiz/pages/player/player.page.ts similarity index 100% rename from src/addons/mod/quiz/pages/player/player.ts rename to src/addons/mod/quiz/pages/player/player.page.ts diff --git a/src/addons/mod/quiz/pages/review/review.module.ts b/src/addons/mod/quiz/pages/review/review.module.ts index afb547520..da7740455 100644 --- a/src/addons/mod/quiz/pages/review/review.module.ts +++ b/src/addons/mod/quiz/pages/review/review.module.ts @@ -17,7 +17,7 @@ import { RouterModule, Routes } from '@angular/router'; import { CoreSharedModule } from '@/core/shared.module'; import { CoreQuestionComponentsModule } from '@features/question/components/components.module'; -import { AddonModQuizReviewPage } from './review'; +import { AddonModQuizReviewPage } from './review.page'; const routes: Routes = [ { diff --git a/src/addons/mod/quiz/pages/review/review.ts b/src/addons/mod/quiz/pages/review/review.page.ts similarity index 100% rename from src/addons/mod/quiz/pages/review/review.ts rename to src/addons/mod/quiz/pages/review/review.page.ts diff --git a/src/addons/mod/quiz/quiz-lazy.module.ts b/src/addons/mod/quiz/quiz-lazy.module.ts index 691bfff63..f239a0c04 100644 --- a/src/addons/mod/quiz/quiz-lazy.module.ts +++ b/src/addons/mod/quiz/quiz-lazy.module.ts @@ -15,10 +15,15 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; +import { CoreSharedModule } from '@/core/shared.module'; +import { AddonModQuizComponentsModule } from './components/components.module'; + +import { AddonModQuizIndexPage } from './pages/index/index.page'; + const routes: Routes = [ { path: ':courseId/:cmId', - loadChildren: () => import('./pages/index/index.module').then( m => m.AddonModQuizIndexPageModule), + component: AddonModQuizIndexPage, }, { path: ':courseId/:cmId/player', @@ -35,6 +40,13 @@ const routes: Routes = [ ]; @NgModule({ - imports: [RouterModule.forChild(routes)], + imports: [ + RouterModule.forChild(routes), + CoreSharedModule, + AddonModQuizComponentsModule, + ], + declarations: [ + AddonModQuizIndexPage, + ], }) export class AddonModQuizLazyModule {} diff --git a/src/addons/mod/forum/pages/index/index.ts b/src/core/features/course/classes/main-activity-page.ts similarity index 53% rename from src/addons/mod/forum/pages/index/index.ts rename to src/core/features/course/classes/main-activity-page.ts index c36a76073..544b8b461 100644 --- a/src/addons/mod/forum/pages/index/index.ts +++ b/src/core/features/course/classes/main-activity-page.ts @@ -13,23 +13,28 @@ // limitations under the License. import { Component, OnInit } from '@angular/core'; - -import { AddonModForumData } from '@addons/mod/forum/services/forum'; -import { CoreCourseAnyModuleData } from '@features/course/services/course'; import { CoreNavigator } from '@services/navigator'; +import { CoreCourseAnyModuleData } from '../services/course'; +import { CoreCourseModuleMainResourceComponent } from './main-resource-component'; +/** +/** + * Template class to easily create CoreCourseModuleMainComponent of resources (or activities without syncing). + */ @Component({ - selector: 'page-addon-mod-forum-index', - templateUrl: 'index.html', + template: '', }) -export class AddonModForumIndexPage implements OnInit { +export class CoreCourseModuleMainActivityPage implements OnInit { + + activityComponent?: ActivityType; title!: string; module!: CoreCourseAnyModuleData; courseId!: number; + /** - * @inheritdoc + * Component being initialized. */ ngOnInit(): void { this.module = CoreNavigator.getRouteParam('module')!; @@ -38,12 +43,26 @@ export class AddonModForumIndexPage implements OnInit { } /** - * Update some data based on the forum instance. + * Update some data based on the activity instance. * - * @param forum Forum instance. + * @param activity Activity instance. */ - updateData(forum: AddonModForumData): void { - this.title = forum.name || this.title; + updateData(activity: { name: string}): void { + this.title = activity.name || this.title; + } + + /** + * User entered the page. + */ + ionViewDidEnter(): void { + this.activityComponent?.ionViewDidEnter(); + } + + /** + * User left the page. + */ + ionViewDidLeave(): void { + this.activityComponent?.ionViewDidLeave(); } }