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 @@
<ion-item-divider color="light">
<h2>{{ 'addon.block_activitymodules.pluginname' | translate }}</h2>
</ion-item-divider>
<core-loading [hideUntil]="loaded" class="core-loading-center">
<ion-item-divider color="light">
<h2>{{ 'addon.block_activitymodules.pluginname' | translate }}</h2>
</ion-item-divider>
<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">
<core-format-text [text]="entry.name"></core-format-text>

View File

@ -13,28 +13,20 @@
// limitations under the License.
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 { CoreBlockBaseHandler } from '@core/block/classes/base-block-handler';
/**
* Course nav handler.
* Block handler.
*/
@Injectable()
export class AddonBlockActivityModulesHandler implements CoreBlockHandler {
name = 'AddonBlockActivityModulesHandler';
export class AddonBlockActivityModulesHandler extends CoreBlockBaseHandler {
name = 'AddonBlockActivityModules';
blockName = 'activity_modules';
constructor() {
// Nothing to do.
}
/**
* 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;
super();
}
/**

View File

@ -1,14 +1,14 @@
<!-- Buttons to add to the header. -->
<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>
</button>
</core-navbar-buttons>
<ion-item-divider color="light">
<h2>{{ 'addon.block_myoverview.pluginname' | translate }}</h2>
</ion-item-divider>
<core-loading [hideUntil]="loaded" class="core-loading-center">
<ion-item-divider color="light">
<h2>{{ 'addon.block_myoverview.pluginname' | translate }}</h2>
</ion-item-divider>
<div padding ion-row justify-content-end [hidden]="showFilter">
<!-- "Time" selector. -->
<ion-col [hidden]="!showSelectorFilter">

View File

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

View File

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

View File

@ -13,28 +13,20 @@
// limitations under the License.
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 { CoreBlockBaseHandler } from '@core/block/classes/base-block-handler';
/**
* Course nav handler.
* Block handler.
*/
@Injectable()
export class AddonBlockSiteMainMenuHandler implements CoreBlockHandler {
name = 'AddonBlockSiteMainMenuHandler';
export class AddonBlockSiteMainMenuHandler extends CoreBlockBaseHandler {
name = 'AddonBlockSiteMainMenu';
blockName = 'site_main_menu';
constructor() {
// Nothing to do.
}
/**
* 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;
super();
}
/**

View File

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

View File

@ -13,20 +13,25 @@
// limitations under the License.
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 { AddonBlockTimelineComponent } from '../components/timeline/timeline';
import { CoreBlockBaseHandler } from '@core/block/classes/base-block-handler';
/**
* Course nav handler.
* Block handler.
*/
@Injectable()
export class AddonBlockTimelineHandler implements CoreBlockHandler {
name = 'AddonBlockTimelineHandler';
export class AddonBlockTimelineHandler extends CoreBlockBaseHandler {
name = 'AddonBlockTimeline';
blockName = 'timeline';
constructor(private timelineProvider: AddonBlockTimelineProvider) {
// Nothing to do.
constructor(private timelineProvider: AddonBlockTimelineProvider, private coursesProvider: CoreCoursesProvider,
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.
*/
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()
export class CoreBlockDefaultHandler extends CoreBlockBaseHandler {
name = 'CoreBlockDefault';
type = 'default';
blockName = 'default';
constructor() {
super();

View File

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