From 34061ad5abb76c2a06211a05e229e27802ecd97c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Thu, 9 May 2019 14:25:27 +0200 Subject: [PATCH] MOBILE-3002 block: Support for pre rendered block type --- .../block/components/components.module.ts | 4 ++ .../core-block-pre-rendered.html | 11 +++++ .../pre-rendered-block/pre-rendered-block.ts | 40 +++++++++++++++++++ .../block/providers/course-option-handler.ts | 4 +- src/core/course/providers/course.ts | 3 +- src/core/courses/providers/dashboard.ts | 1 + 6 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 src/core/block/components/pre-rendered-block/core-block-pre-rendered.html create mode 100644 src/core/block/components/pre-rendered-block/pre-rendered-block.ts diff --git a/src/core/block/components/components.module.ts b/src/core/block/components/components.module.ts index 33c80abcf..70627f6bf 100644 --- a/src/core/block/components/components.module.ts +++ b/src/core/block/components/components.module.ts @@ -19,6 +19,7 @@ import { TranslateModule } from '@ngx-translate/core'; import { CoreDirectivesModule } from '@directives/directives.module'; import { CoreBlockComponent } from './block/block'; import { CoreBlockOnlyTitleComponent } from './only-title-block/only-title-block'; +import { CoreBlockPreRenderedComponent } from './pre-rendered-block/pre-rendered-block'; import { CoreBlockCourseBlocksComponent } from './course-blocks/course-blocks'; import { CoreComponentsModule } from '@components/components.module'; @@ -26,6 +27,7 @@ import { CoreComponentsModule } from '@components/components.module'; declarations: [ CoreBlockComponent, CoreBlockOnlyTitleComponent, + CoreBlockPreRenderedComponent, CoreBlockCourseBlocksComponent ], imports: [ @@ -40,10 +42,12 @@ import { CoreComponentsModule } from '@components/components.module'; exports: [ CoreBlockComponent, CoreBlockOnlyTitleComponent, + CoreBlockPreRenderedComponent, CoreBlockCourseBlocksComponent ], entryComponents: [ CoreBlockOnlyTitleComponent, + CoreBlockPreRenderedComponent, CoreBlockCourseBlocksComponent ] }) diff --git a/src/core/block/components/pre-rendered-block/core-block-pre-rendered.html b/src/core/block/components/pre-rendered-block/core-block-pre-rendered.html new file mode 100644 index 000000000..84780cabb --- /dev/null +++ b/src/core/block/components/pre-rendered-block/core-block-pre-rendered.html @@ -0,0 +1,11 @@ + +

+
+ + + + + + + + diff --git a/src/core/block/components/pre-rendered-block/pre-rendered-block.ts b/src/core/block/components/pre-rendered-block/pre-rendered-block.ts new file mode 100644 index 000000000..0acd1712f --- /dev/null +++ b/src/core/block/components/pre-rendered-block/pre-rendered-block.ts @@ -0,0 +1,40 @@ +// (C) Copyright 2015 Martin Dougiamas +// +// 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 { Injector, OnInit, Component } from '@angular/core'; +import { CoreBlockBaseComponent } from '../../classes/base-block-component'; + +/** + * Component to render blocks with pre-rendered HTML. + */ +@Component({ + selector: 'core-block-pre-rendered', + templateUrl: 'core-block-pre-rendered.html' +}) +export class CoreBlockPreRenderedComponent extends CoreBlockBaseComponent implements OnInit { + + constructor(injector: Injector) { + super(injector, 'CoreBlockPreRenderedComponent'); + } + + /** + * Component being initialized. + */ + ngOnInit(): void { + super.ngOnInit(); + + this.fetchContentDefaultError = 'Error getting ' + this.block.contents.title + ' data.'; + } + +} diff --git a/src/core/block/providers/course-option-handler.ts b/src/core/block/providers/course-option-handler.ts index c7e298c9c..7e38227f5 100644 --- a/src/core/block/providers/course-option-handler.ts +++ b/src/core/block/providers/course-option-handler.ts @@ -58,7 +58,9 @@ export class CoreBlockCourseBlocksCourseOptionHandler implements CoreCourseOptio * @return {boolean|Promise} True or promise resolved with true if enabled. */ isEnabledForCourse(courseId: number, accessData: any, navOptions?: any, admOptions?: any): boolean | Promise { - return true; + return this.courseProvider.getCourseBlocks(courseId).then((blocks) => { + return blocks && blocks.length > 0; + }); } /** diff --git a/src/core/course/providers/course.ts b/src/core/course/providers/course.ts index bb4a55c5a..3131fc869 100644 --- a/src/core/course/providers/course.ts +++ b/src/core/course/providers/course.ts @@ -255,7 +255,8 @@ export class CoreCourseProvider { getCourseBlocks(courseId: number, siteId?: string): Promise { return this.sitesProvider.getSite(siteId).then((site) => { const params = { - courseid: courseId + courseid: courseId, + returncontents: 1 }, preSets: CoreSiteWSPreSets = { cacheKey: this.getCourseBlocksCacheKey(courseId), diff --git a/src/core/courses/providers/dashboard.ts b/src/core/courses/providers/dashboard.ts index 24ac80e2c..beb6204d0 100644 --- a/src/core/courses/providers/dashboard.ts +++ b/src/core/courses/providers/dashboard.ts @@ -47,6 +47,7 @@ export class CoreCoursesDashboardProvider { getDashboardBlocks(userId?: number, siteId?: string): Promise { return this.sitesProvider.getSite(siteId).then((site) => { const params = { + returncontents: 1 }, preSets = { cacheKey: this.getDashboardBlocksCacheKey(userId),