diff --git a/src/core/components/tabs/core-tabs.html b/src/core/components/tabs/core-tabs.html index a1cb8137a..815137ca6 100644 --- a/src/core/components/tabs/core-tabs.html +++ b/src/core/components/tabs/core-tabs.html @@ -1,5 +1,5 @@ - + diff --git a/src/core/features/course/components/unsupported-module/core-course-unsupported-module.html b/src/core/features/course/components/unsupported-module/core-course-unsupported-module.html index 4afcc17da..2344ab316 100644 --- a/src/core/features/course/components/unsupported-module/core-course-unsupported-module.html +++ b/src/core/features/course/components/unsupported-module/core-course-unsupported-module.html @@ -19,7 +19,7 @@

{{ 'core.course.useactivityonbrowser' | translate }}

{{ 'core.openinbrowser' | translate }} - + \ No newline at end of file diff --git a/src/core/features/course/course-lazy.module.ts b/src/core/features/course/course-lazy.module.ts index 6431088a2..b78a3f30c 100644 --- a/src/core/features/course/course-lazy.module.ts +++ b/src/core/features/course/course-lazy.module.ts @@ -25,6 +25,11 @@ const routes: Routes = [ path: 'index', loadChildren: () => import('./pages/index/index.module').then( m => m.CoreCourseIndexPageModule), }, + { + path: 'unsupported-module', + loadChildren: () => import('./pages/unsupported-module/unsupported-module.module') + .then( m => m.CoreCourseUnsupportedModulePageModule), + }, ]; @NgModule({ diff --git a/src/core/features/course/pages/unsupported-module/unsupported-module.html b/src/core/features/course/pages/unsupported-module/unsupported-module.html new file mode 100644 index 000000000..976173620 --- /dev/null +++ b/src/core/features/course/pages/unsupported-module/unsupported-module.html @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file 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 new file mode 100644 index 000000000..6a5c9cfdd --- /dev/null +++ b/src/core/features/course/pages/unsupported-module/unsupported-module.module.ts @@ -0,0 +1,46 @@ +// (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 { CommonModule } from '@angular/common'; +import { RouterModule, Routes } from '@angular/router'; +import { IonicModule } from '@ionic/angular'; +import { TranslateModule } from '@ngx-translate/core'; + +import { CoreSharedModule } from '@/core/shared.module'; +import { CoreCourseUnsupportedModulePage } from './unsupported-module'; +import { CoreCourseComponentsModule } from '@features/course/components/components.module'; + +const routes: Routes = [ + { + path: '', + component: CoreCourseUnsupportedModulePage, + }, +]; + +@NgModule({ + imports: [ + RouterModule.forChild(routes), + CommonModule, + IonicModule, + TranslateModule.forChild(), + CoreSharedModule, + CoreCourseComponentsModule, + ], + declarations: [ + CoreCourseUnsupportedModulePage, + ], + exports: [RouterModule], +}) +export class CoreCourseUnsupportedModulePageModule {} diff --git a/src/core/features/course/pages/unsupported-module/unsupported-module.ts b/src/core/features/course/pages/unsupported-module/unsupported-module.ts new file mode 100644 index 000000000..b52fbc313 --- /dev/null +++ b/src/core/features/course/pages/unsupported-module/unsupported-module.ts @@ -0,0 +1,54 @@ +// (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 } from '@angular/core'; + +import { CoreCourseWSModule } from '@features/course/services/course'; +import { CoreNavigator } from '@services/navigator'; +import { CoreTextUtils } from '@services/utils/text'; +import { Translate } from '@singletons'; + +/** + * Page that displays info about an unsupported module. + */ +@Component({ + selector: 'page-core-course-unsupported-module', + templateUrl: 'unsupported-module.html', +}) +export class CoreCourseUnsupportedModulePage implements OnInit { + + module?: CoreCourseWSModule; + courseId?: number; + + /** + * @inheritDoc + */ + ngOnInit(): void { + this.module = CoreNavigator.instance.getRouteParam('module'); + this.courseId = CoreNavigator.instance.getRouteParam('courseId'); + } + + /** + * Expand the description. + */ + expandDescription(): void { + CoreTextUtils.instance.viewText(Translate.instance.instant('core.description'), this.module!.description!, { + filter: true, + contextLevel: 'module', + instanceId: this.module!.id, + courseId: this.courseId, + }); + } + +} diff --git a/src/core/features/course/services/handlers/default-module.ts b/src/core/features/course/services/handlers/default-module.ts index 313ae3f70..b764f7d1c 100644 --- a/src/core/features/course/services/handlers/default-module.ts +++ b/src/core/features/course/services/handlers/default-module.ts @@ -13,7 +13,6 @@ // limitations under the License. import { Injectable, Type } from '@angular/core'; -import { NavigationOptions } from '@ionic/angular/providers/nav-controller'; import { CoreSites } from '@services/sites'; import { CoreCourseModuleHandler, CoreCourseModuleHandlerData } from '../module-delegate'; @@ -21,6 +20,7 @@ import { CoreCourse, CoreCourseModuleBasicInfo, CoreCourseWSModule } from '../co import { CoreCourseAnyCourseData } from '@features/courses/services/courses'; import { CoreCourseModule } from '../course-helper'; import { CoreCourseUnsupportedModuleComponent } from '@features/course/components/unsupported-module/unsupported-module'; +import { CoreNavigationOptions, CoreNavigator } from '@services/navigator'; /** * Default handler used when the module doesn't have a specific implementation. @@ -59,12 +59,14 @@ export class CoreCourseModuleDefaultHandler implements CoreCourseModuleHandler { icon: CoreCourse.instance.getModuleIconSrc(module.modname, 'modicon' in module ? module.modicon : undefined), title: module.name, class: 'core-course-default-handler core-course-module-' + module.modname + '-handler', - // eslint-disable-next-line @typescript-eslint/no-unused-vars - action: (event: Event, module: CoreCourseModule, courseId: number, options?: NavigationOptions): void => { + action: (event: Event, module: CoreCourseModule, courseId: number, options?: CoreNavigationOptions): void => { event.preventDefault(); event.stopPropagation(); - // @todo navCtrl.push('CoreCourseUnsupportedModulePage', { module: module, courseId: courseId }, options); + options = options || {}; + options.params = { module, courseId }; + + CoreNavigator.instance.navigateToSitePath('course/unsupported-module', options); }, };