MOBILE-2700 blocks: Check if blocks are disabled in site

This commit is contained in:
Pau Ferrer Ocaña 2018-10-25 11:15:30 +02:00
parent cd52cfaf6d
commit 6ffefb606a
10 changed files with 51 additions and 56 deletions

View File

@ -1,7 +1,7 @@
<core-loading [hideUntil]="loaded" class="core-loading-center"> <ion-item-divider color="light">
<ion-item-divider color="light">
<h2>{{ 'addon.block_activitymodules.pluginname' | translate }}</h2> <h2>{{ 'addon.block_activitymodules.pluginname' | translate }}</h2>
</ion-item-divider> </ion-item-divider>
<core-loading [hideUntil]="loaded" class="core-loading-center">
<a ion-item text-wrap *ngFor="let entry of entries" class="item-media" detail-none [navPush]="'CoreCourseListModTypePage'" [navParams]="{title: entry.name, courseId: instanceId, modName: entry.modName}"> <a ion-item text-wrap *ngFor="let entry of entries" class="item-media" detail-none [navPush]="'CoreCourseListModTypePage'" [navParams]="{title: entry.name, courseId: instanceId, modName: entry.modName}">
<img item-start [src]="entry.icon" alt="" role="presentation" class="core-module-icon"> <img item-start [src]="entry.icon" alt="" role="presentation" class="core-module-icon">
<core-format-text [text]="entry.name"></core-format-text> <core-format-text [text]="entry.name"></core-format-text>

View File

@ -13,28 +13,20 @@
// limitations under the License. // limitations under the License.
import { Injectable, Injector } from '@angular/core'; import { Injectable, Injector } from '@angular/core';
import { CoreBlockHandler, CoreBlockHandlerData } from '@core/block/providers/delegate'; import { CoreBlockHandlerData } from '@core/block/providers/delegate';
import { AddonBlockActivityModulesComponent } from '../components/activitymodules/activitymodules'; import { AddonBlockActivityModulesComponent } from '../components/activitymodules/activitymodules';
import { CoreBlockBaseHandler } from '@core/block/classes/base-block-handler';
/** /**
* Course nav handler. * Block handler.
*/ */
@Injectable() @Injectable()
export class AddonBlockActivityModulesHandler implements CoreBlockHandler { export class AddonBlockActivityModulesHandler extends CoreBlockBaseHandler {
name = 'AddonBlockActivityModulesHandler'; name = 'AddonBlockActivityModules';
blockName = 'activity_modules'; blockName = 'activity_modules';
constructor() { constructor() {
// Nothing to do. super();
}
/**
* Check if the handler is enabled on a site level.
*
* @return {boolean} Whether or not the handler is enabled on a site level.
*/
isEnabled(): boolean | Promise<boolean> {
return true;
} }
/** /**

View File

@ -1,14 +1,14 @@
<!-- Buttons to add to the header. --> <!-- Buttons to add to the header. -->
<core-navbar-buttons end> <core-navbar-buttons end>
<button [hidden]="!showFilterSwitchButton()" ion-button icon-only [attr.aria-label]="'core.courses.filtermycourses' | translate" (click)="switchFilter()"> <button [hidden]="!loaded || !showFilterSwitchButton()" ion-button icon-only [attr.aria-label]="'core.courses.filtermycourses' | translate" (click)="switchFilter()">
<ion-icon name="funnel"></ion-icon> <ion-icon name="funnel"></ion-icon>
</button> </button>
</core-navbar-buttons> </core-navbar-buttons>
<core-loading [hideUntil]="loaded" class="core-loading-center"> <ion-item-divider color="light">
<ion-item-divider color="light">
<h2>{{ 'addon.block_myoverview.pluginname' | translate }}</h2> <h2>{{ 'addon.block_myoverview.pluginname' | translate }}</h2>
</ion-item-divider> </ion-item-divider>
<core-loading [hideUntil]="loaded" class="core-loading-center">
<div padding ion-row justify-content-end [hidden]="showFilter"> <div padding ion-row justify-content-end [hidden]="showFilter">
<!-- "Time" selector. --> <!-- "Time" selector. -->
<ion-col [hidden]="!showSelectorFilter"> <ion-col [hidden]="!showSelectorFilter">

View File

@ -13,20 +13,22 @@
// limitations under the License. // limitations under the License.
import { Injectable, Injector } from '@angular/core'; import { Injectable, Injector } from '@angular/core';
import { CoreBlockHandler, CoreBlockHandlerData } from '@core/block/providers/delegate'; import { CoreSitesProvider } from '@providers/sites';
import { CoreBlockHandlerData } from '@core/block/providers/delegate';
import { CoreCoursesProvider } from '@core/courses/providers/courses'; import { CoreCoursesProvider } from '@core/courses/providers/courses';
import { AddonBlockMyOverviewComponent } from '../components/myoverview/myoverview'; import { AddonBlockMyOverviewComponent } from '../components/myoverview/myoverview';
import { CoreBlockBaseHandler } from '@core/block/classes/base-block-handler';
/** /**
* Course nav handler. * Block handler.
*/ */
@Injectable() @Injectable()
export class AddonBlockMyOverviewHandler implements CoreBlockHandler { export class AddonBlockMyOverviewHandler extends CoreBlockBaseHandler {
name = 'AddonBlockMyOverviewHandler'; name = 'AddonBlockMyOverview';
blockName = 'myoverview'; blockName = 'myoverview';
constructor(private coursesProvider: CoreCoursesProvider) { constructor(private coursesProvider: CoreCoursesProvider, private sitesProvider: CoreSitesProvider) {
// Nothing to do. super();
} }
/** /**
@ -35,7 +37,8 @@ export class AddonBlockMyOverviewHandler implements CoreBlockHandler {
* @return {boolean} Whether or not the handler is enabled on a site level. * @return {boolean} Whether or not the handler is enabled on a site level.
*/ */
isEnabled(): boolean | Promise<boolean> { isEnabled(): boolean | Promise<boolean> {
return !this.coursesProvider.isMyCoursesDisabledInSite(); return this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.6') ||
!this.coursesProvider.isMyCoursesDisabledInSite();
} }
/** /**

View File

@ -1,7 +1,7 @@
<core-loading [hideUntil]="loaded" class="core-loading-center"> <ion-item-divider color="light">
<ion-item-divider color="light">
<h2>{{ 'addon.block_sitemainmenu.pluginname' | translate }}</h2> <h2>{{ 'addon.block_sitemainmenu.pluginname' | translate }}</h2>
</ion-item-divider> </ion-item-divider>
<core-loading [hideUntil]="loaded" class="core-loading-center">
<ion-item text-wrap *ngIf="block.summary"> <ion-item text-wrap *ngIf="block.summary">
<core-format-text [text]="block.summary"></core-format-text> <core-format-text [text]="block.summary"></core-format-text>
</ion-item> </ion-item>

View File

@ -13,28 +13,20 @@
// limitations under the License. // limitations under the License.
import { Injectable, Injector } from '@angular/core'; import { Injectable, Injector } from '@angular/core';
import { CoreBlockHandler, CoreBlockHandlerData } from '@core/block/providers/delegate'; import { CoreBlockHandlerData } from '@core/block/providers/delegate';
import { AddonBlockSiteMainMenuComponent } from '../components/sitemainmenu/sitemainmenu'; import { AddonBlockSiteMainMenuComponent } from '../components/sitemainmenu/sitemainmenu';
import { CoreBlockBaseHandler } from '@core/block/classes/base-block-handler';
/** /**
* Course nav handler. * Block handler.
*/ */
@Injectable() @Injectable()
export class AddonBlockSiteMainMenuHandler implements CoreBlockHandler { export class AddonBlockSiteMainMenuHandler extends CoreBlockBaseHandler {
name = 'AddonBlockSiteMainMenuHandler'; name = 'AddonBlockSiteMainMenu';
blockName = 'site_main_menu'; blockName = 'site_main_menu';
constructor() { constructor() {
// Nothing to do. super();
}
/**
* Check if the handler is enabled on a site level.
*
* @return {boolean} Whether or not the handler is enabled on a site level.
*/
isEnabled(): boolean | Promise<boolean> {
return true;
} }
/** /**

View File

@ -1,7 +1,7 @@
<core-loading [hideUntil]="loaded" class="core-loading-center"> <ion-item-divider color="light">
<ion-item-divider color="light">
<h2>{{ 'addon.block_timeline.pluginname' | translate }}</h2> <h2>{{ 'addon.block_timeline.pluginname' | translate }}</h2>
</ion-item-divider> </ion-item-divider>
<core-loading [hideUntil]="loaded" class="core-loading-center">
<div padding ion-row> <div padding ion-row>
<ion-col> <ion-col>
<ion-select text-start [(ngModel)]="filter" (ngModelChange)="switchFilter()" interface="popover" class="core-button-select"> <ion-select text-start [(ngModel)]="filter" (ngModelChange)="switchFilter()" interface="popover" class="core-button-select">

View File

@ -13,20 +13,25 @@
// limitations under the License. // limitations under the License.
import { Injectable, Injector } from '@angular/core'; import { Injectable, Injector } from '@angular/core';
import { CoreBlockHandler, CoreBlockHandlerData } from '@core/block/providers/delegate'; import { CoreSitesProvider } from '@providers/sites';
import { CoreBlockHandlerData } from '@core/block/providers/delegate';
import { CoreCoursesProvider } from '@core/courses/providers/courses';
import { AddonBlockTimelineProvider } from '@addon/block/timeline/providers/timeline'; import { AddonBlockTimelineProvider } from '@addon/block/timeline/providers/timeline';
import { AddonBlockTimelineComponent } from '../components/timeline/timeline'; import { AddonBlockTimelineComponent } from '../components/timeline/timeline';
import { CoreBlockBaseHandler } from '@core/block/classes/base-block-handler';
/** /**
* Course nav handler. * Block handler.
*/ */
@Injectable() @Injectable()
export class AddonBlockTimelineHandler implements CoreBlockHandler { export class AddonBlockTimelineHandler extends CoreBlockBaseHandler {
name = 'AddonBlockTimelineHandler'; name = 'AddonBlockTimeline';
blockName = 'timeline'; blockName = 'timeline';
constructor(private timelineProvider: AddonBlockTimelineProvider) { constructor(private timelineProvider: AddonBlockTimelineProvider, private coursesProvider: CoreCoursesProvider,
// Nothing to do. private sitesProvider: CoreSitesProvider) {
super();
} }
/** /**
@ -35,7 +40,8 @@ export class AddonBlockTimelineHandler implements CoreBlockHandler {
* @return {boolean} Whether or not the handler is enabled on a site level. * @return {boolean} Whether or not the handler is enabled on a site level.
*/ */
isEnabled(): boolean | Promise<boolean> { isEnabled(): boolean | Promise<boolean> {
return this.timelineProvider.isAvailable(); return this.timelineProvider.isAvailable() && (this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.6') ||
!this.coursesProvider.isMyCoursesDisabledInSite());
} }
/** /**

View File

@ -21,7 +21,7 @@ import { CoreBlockBaseHandler } from '../classes/base-block-handler';
@Injectable() @Injectable()
export class CoreBlockDefaultHandler extends CoreBlockBaseHandler { export class CoreBlockDefaultHandler extends CoreBlockBaseHandler {
name = 'CoreBlockDefault'; name = 'CoreBlockDefault';
type = 'default'; blockName = 'default';
constructor() { constructor() {
super(); super();

View File

@ -80,6 +80,8 @@ export class CoreBlockDelegate extends CoreDelegate {
protected handlerNameProperty = 'blockName'; protected handlerNameProperty = 'blockName';
protected featurePrefix = 'CoreBlockDelegate_';
constructor(logger: CoreLoggerProvider, sitesProvider: CoreSitesProvider, eventsProvider: CoreEventsProvider, constructor(logger: CoreLoggerProvider, sitesProvider: CoreSitesProvider, eventsProvider: CoreEventsProvider,
protected defaultHandler: CoreBlockDefaultHandler) { protected defaultHandler: CoreBlockDefaultHandler) {
super('CoreBlockDelegate', logger, sitesProvider, eventsProvider); super('CoreBlockDelegate', logger, sitesProvider, eventsProvider);