Merge pull request #2161 from crazyserver/MOBILE-3190
MOBILE-3190 block_myoverview: Add 3.8 course filters except custommain
commit
c35f9311d7
|
@ -39,6 +39,7 @@
|
||||||
"addon.block_glossaryrandom.pluginname": "block_glossary_random",
|
"addon.block_glossaryrandom.pluginname": "block_glossary_random",
|
||||||
"addon.block_learningplans.pluginname": "block_lp",
|
"addon.block_learningplans.pluginname": "block_lp",
|
||||||
"addon.block_myoverview.all": "block_myoverview",
|
"addon.block_myoverview.all": "block_myoverview",
|
||||||
|
"addon.block_myoverview.allincludinghidden": "block_myoverview",
|
||||||
"addon.block_myoverview.favourites": "block_myoverview",
|
"addon.block_myoverview.favourites": "block_myoverview",
|
||||||
"addon.block_myoverview.future": "block_myoverview",
|
"addon.block_myoverview.future": "block_myoverview",
|
||||||
"addon.block_myoverview.hiddencourses": "block_myoverview",
|
"addon.block_myoverview.hiddencourses": "block_myoverview",
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import { Component, OnInit, Injector, Input } from '@angular/core';
|
import { Component, OnInit, Injector, Input } from '@angular/core';
|
||||||
import { CoreUtilsProvider } from '@providers/utils/utils';
|
|
||||||
import { CoreCourseProvider } from '@core/course/providers/course';
|
import { CoreCourseProvider } from '@core/course/providers/course';
|
||||||
import { CoreCourseModuleDelegate } from '@core/course/providers/module-delegate';
|
import { CoreCourseModuleDelegate } from '@core/course/providers/module-delegate';
|
||||||
import { CoreBlockBaseComponent } from '@core/block/classes/base-block-component';
|
import { CoreBlockBaseComponent } from '@core/block/classes/base-block-component';
|
||||||
|
@ -36,7 +35,7 @@ export class AddonBlockActivityModulesComponent extends CoreBlockBaseComponent i
|
||||||
|
|
||||||
protected fetchContentDefaultError = 'Error getting activity modules data.';
|
protected fetchContentDefaultError = 'Error getting activity modules data.';
|
||||||
|
|
||||||
constructor(injector: Injector, protected utils: CoreUtilsProvider, protected courseProvider: CoreCourseProvider,
|
constructor(injector: Injector, protected courseProvider: CoreCourseProvider,
|
||||||
protected translate: TranslateService, protected moduleDelegate: CoreCourseModuleDelegate) {
|
protected translate: TranslateService, protected moduleDelegate: CoreCourseModuleDelegate) {
|
||||||
|
|
||||||
super(injector, 'AddonBlockActivityModulesComponent');
|
super(injector, 'AddonBlockActivityModulesComponent');
|
||||||
|
|
|
@ -18,12 +18,13 @@
|
||||||
<div padding [hidden]="showFilter || !showSelectorFilter" class="safe-padding-horizontal">
|
<div padding [hidden]="showFilter || !showSelectorFilter" class="safe-padding-horizontal">
|
||||||
<!-- "Time" selector. -->
|
<!-- "Time" selector. -->
|
||||||
<ion-select text-start [title]="'core.show' | translate" [(ngModel)]="selectedFilter" (ngModelChange)="selectedChanged()" interface="popover" class="core-button-select">
|
<ion-select text-start [title]="'core.show' | translate" [(ngModel)]="selectedFilter" (ngModelChange)="selectedChanged()" interface="popover" class="core-button-select">
|
||||||
<ion-option value="all">{{ 'addon.block_myoverview.all' | translate }}</ion-option>∫
|
<ion-option value="allincludinghidden" *ngIf="showFilters.allincludinghidden != 'hidden'">{{ 'addon.block_myoverview.allincludinghidden' | translate }}</ion-option>
|
||||||
<ion-option value="inprogress" [disabled]="disableInProgress">{{ 'addon.block_myoverview.inprogress' | translate }}</ion-option>
|
<ion-option value="all" *ngIf="showFilters.all != 'hidden'">{{ 'addon.block_myoverview.all' | translate }}</ion-option>
|
||||||
<ion-option value="future" [disabled]="disableFuture">{{ 'addon.block_myoverview.future' | translate }}</ion-option>
|
<ion-option value="inprogress" *ngIf="showFilters.inprogress != 'hidden'" [disabled]="showFilters.inprogress == 'disabled'">{{ 'addon.block_myoverview.inprogress' | translate }}</ion-option>
|
||||||
<ion-option value="past" [disabled]="disablePast">{{ 'addon.block_myoverview.past' | translate }}</ion-option>
|
<ion-option value="future" *ngIf="showFilters.future != 'hidden'" [disabled]="showFilters.future == 'disabled'">{{ 'addon.block_myoverview.future' | translate }}</ion-option>
|
||||||
<ion-option value="favourite" *ngIf="showFavourite" [disabled]="disableFavourite">{{ 'addon.block_myoverview.favourites' | translate }}</ion-option>
|
<ion-option value="past" *ngIf="showFilters.past != 'hidden'" [disabled]="showFilters.past == 'disabled'">{{ 'addon.block_myoverview.past' | translate }}</ion-option>
|
||||||
<ion-option value="hidden" *ngIf="showHidden" [disabled]="disableHidden">{{ 'addon.block_myoverview.hiddencourses' | translate }}</ion-option>
|
<ion-option value="favourite" *ngIf="showFilters.favourite != 'hidden'" [disabled]="showFilters.favourite == 'disabled'">{{ 'addon.block_myoverview.favourites' | translate }}</ion-option>
|
||||||
|
<ion-option value="hidden" *ngIf="showFilters.hidden != 'hidden'" [disabled]="showFilters.hidden == 'disabled'">{{ 'addon.block_myoverview.hiddencourses' | translate }}</ion-option>
|
||||||
</ion-select>
|
</ion-select>
|
||||||
</div>
|
</div>
|
||||||
<core-empty-box *ngIf="courses[selectedFilter].length == 0" image="assets/img/icons/courses.svg" [message]="'addon.block_myoverview.nocourses' | translate"></core-empty-box>
|
<core-empty-box *ngIf="courses[selectedFilter].length == 0" image="assets/img/icons/courses.svg" [message]="'addon.block_myoverview.nocourses' | translate"></core-empty-box>
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
import { Component, OnInit, Input, OnDestroy, ViewChild, Injector, OnChanges, SimpleChange } from '@angular/core';
|
import { Component, OnInit, Input, OnDestroy, ViewChild, Injector, OnChanges, SimpleChange } from '@angular/core';
|
||||||
import { Searchbar } from 'ionic-angular';
|
import { Searchbar } from 'ionic-angular';
|
||||||
import { CoreEventsProvider } from '@providers/events';
|
import { CoreEventsProvider } from '@providers/events';
|
||||||
import { CoreUtilsProvider } from '@providers/utils/utils';
|
|
||||||
import { CoreTimeUtilsProvider } from '@providers/utils/time';
|
import { CoreTimeUtilsProvider } from '@providers/utils/time';
|
||||||
import { CoreSitesProvider } from '@providers/sites';
|
import { CoreSitesProvider } from '@providers/sites';
|
||||||
import { CoreCoursesProvider } from '@core/courses/providers/courses';
|
import { CoreCoursesProvider } from '@core/courses/providers/courses';
|
||||||
|
@ -39,6 +38,7 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
|
||||||
courses = {
|
courses = {
|
||||||
filter: '',
|
filter: '',
|
||||||
all: [],
|
all: [],
|
||||||
|
allincludinghidden: [],
|
||||||
past: [],
|
past: [],
|
||||||
inprogress: [],
|
inprogress: [],
|
||||||
future: [],
|
future: [],
|
||||||
|
@ -51,24 +51,27 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
|
||||||
filteredCourses: any[];
|
filteredCourses: any[];
|
||||||
prefetchCoursesData = {
|
prefetchCoursesData = {
|
||||||
all: {},
|
all: {},
|
||||||
|
allincludinghidden: {},
|
||||||
inprogress: {},
|
inprogress: {},
|
||||||
past: {},
|
past: {},
|
||||||
future: {},
|
future: {},
|
||||||
favourite: {},
|
favourite: {},
|
||||||
hidden: {}
|
hidden: {}
|
||||||
};
|
};
|
||||||
|
showFilters = { // Options are show, disabled, hidden.
|
||||||
|
all: 'show',
|
||||||
|
allincludinghidden: 'show',
|
||||||
|
past: 'show',
|
||||||
|
inprogress: 'show',
|
||||||
|
future: 'show',
|
||||||
|
favourite: 'show',
|
||||||
|
hidden: 'show'
|
||||||
|
};
|
||||||
showFilter = false;
|
showFilter = false;
|
||||||
showFavourite = false;
|
|
||||||
showHidden = false;
|
|
||||||
showSelectorFilter = false;
|
showSelectorFilter = false;
|
||||||
showSortFilter = false;
|
showSortFilter = false;
|
||||||
downloadCourseEnabled: boolean;
|
downloadCourseEnabled: boolean;
|
||||||
downloadCoursesEnabled: boolean;
|
downloadCoursesEnabled: boolean;
|
||||||
disableInProgress = false;
|
|
||||||
disablePast = false;
|
|
||||||
disableFuture = false;
|
|
||||||
disableFavourite = false;
|
|
||||||
disableHidden = false;
|
|
||||||
|
|
||||||
protected prefetchIconsInitialized = false;
|
protected prefetchIconsInitialized = false;
|
||||||
protected isDestroyed;
|
protected isDestroyed;
|
||||||
|
@ -79,7 +82,7 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
|
||||||
|
|
||||||
constructor(injector: Injector, private coursesProvider: CoreCoursesProvider,
|
constructor(injector: Injector, private coursesProvider: CoreCoursesProvider,
|
||||||
private courseCompletionProvider: AddonCourseCompletionProvider, private eventsProvider: CoreEventsProvider,
|
private courseCompletionProvider: AddonCourseCompletionProvider, private eventsProvider: CoreEventsProvider,
|
||||||
private courseHelper: CoreCourseHelperProvider, private utils: CoreUtilsProvider,
|
private courseHelper: CoreCourseHelperProvider,
|
||||||
private courseOptionsDelegate: CoreCourseOptionsDelegate, private coursesHelper: CoreCoursesHelperProvider,
|
private courseOptionsDelegate: CoreCourseOptionsDelegate, private coursesHelper: CoreCoursesHelperProvider,
|
||||||
private sitesProvider: CoreSitesProvider, private timeUtils: CoreTimeUtilsProvider) {
|
private sitesProvider: CoreSitesProvider, private timeUtils: CoreTimeUtilsProvider) {
|
||||||
|
|
||||||
|
@ -173,18 +176,49 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
|
||||||
|
|
||||||
this.initCourseFilters(courses);
|
this.initCourseFilters(courses);
|
||||||
|
|
||||||
this.courses.filter = '';
|
const config = this.block.configs;
|
||||||
this.showFilter = false;
|
|
||||||
this.disableInProgress = this.courses.inprogress.length === 0;
|
|
||||||
this.disablePast = this.courses.past.length === 0;
|
|
||||||
this.disableFuture = this.courses.future.length === 0;
|
|
||||||
this.showSelectorFilter = courses.length > 0 && (this.courses.past.length > 0 || this.courses.future.length > 0 ||
|
this.showSelectorFilter = courses.length > 0 && (this.courses.past.length > 0 || this.courses.future.length > 0 ||
|
||||||
typeof courses[0].enddate != 'undefined');
|
typeof courses[0].enddate != 'undefined');
|
||||||
this.showHidden = this.showSelectorFilter && typeof courses[0].hidden != 'undefined';
|
|
||||||
this.disableHidden = this.courses.hidden.length === 0;
|
this.courses.filter = '';
|
||||||
this.showFavourite = this.showSelectorFilter && typeof courses[0].isfavourite != 'undefined';
|
this.showFilter = false;
|
||||||
this.disableFavourite = this.courses.favourite.length === 0;
|
|
||||||
if (!this.showSelectorFilter || (this.selectedFilter === 'inprogress' && this.disableInProgress)) {
|
this.showFilters.all = this.getShowFilterValue(!config || config.displaygroupingall.value == '1',
|
||||||
|
this.courses.all.length === 0);
|
||||||
|
// Do not show allincludinghiddenif config it's not present (before 3.8).
|
||||||
|
this.showFilters.allincludinghidden =
|
||||||
|
this.getShowFilterValue(config && config.displaygroupingallincludinghidden.value == '1',
|
||||||
|
this.courses.allincludinghidden.length === 0);
|
||||||
|
|
||||||
|
this.showFilters.inprogress = this.getShowFilterValue(!config || config.displaygroupinginprogress.value == '1',
|
||||||
|
this.courses.inprogress.length === 0);
|
||||||
|
this.showFilters.past = this.getShowFilterValue(!config || config.displaygroupingpast.value == '1',
|
||||||
|
this.courses.past.length === 0);
|
||||||
|
this.showFilters.future = this.getShowFilterValue(!config || config.displaygroupingfuture.value == '1',
|
||||||
|
this.courses.future.length === 0);
|
||||||
|
|
||||||
|
this.showSelectorFilter = courses.length > 0 && (this.courses.past.length > 0 || this.courses.future.length > 0 ||
|
||||||
|
typeof courses[0].enddate != 'undefined');
|
||||||
|
|
||||||
|
this.showFilters.hidden = this.getShowFilterValue(
|
||||||
|
this.showSelectorFilter && typeof courses[0].hidden != 'undefined' &&
|
||||||
|
(!config || config.displaygroupinghidden.value == '1'),
|
||||||
|
this.courses.hidden.length === 0);
|
||||||
|
|
||||||
|
this.showFilters.favourite = this.getShowFilterValue(
|
||||||
|
this.showSelectorFilter && typeof courses[0].isfavourite != 'undefined' &&
|
||||||
|
(!config || config.displaygroupingstarred.value == '1'),
|
||||||
|
this.courses.favourite.length === 0);
|
||||||
|
|
||||||
|
if (this.showSelectorFilter) {
|
||||||
|
// Check if any selector is shown and not disabled.
|
||||||
|
this.showSelectorFilter = Object.keys(this.showFilters).some((key) => {
|
||||||
|
return this.showFilters[key] == 'show';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.showSelectorFilter || (this.selectedFilter === 'inprogress' && this.showFilters.inprogress == 'disabled')) {
|
||||||
// No selector, or the default option is disabled, show all.
|
// No selector, or the default option is disabled, show all.
|
||||||
this.selectedFilter = 'all';
|
this.selectedFilter = 'all';
|
||||||
}
|
}
|
||||||
|
@ -194,6 +228,17 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper function to help with filter values.
|
||||||
|
*
|
||||||
|
* @param showCondition If true, filter will be shown.
|
||||||
|
* @param disabledCondition If true, and showCondition is also met, it will be shown as disabled.
|
||||||
|
* @return show / disabled / hidden value.
|
||||||
|
*/
|
||||||
|
protected getShowFilterValue(showCondition: boolean, disabledCondition: boolean): string {
|
||||||
|
return showCondition ? (disabledCondition ? 'disabled' : 'show') : 'hidden';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The filter has changed.
|
* The filter has changed.
|
||||||
*
|
*
|
||||||
|
@ -283,6 +328,7 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
|
||||||
}
|
}
|
||||||
|
|
||||||
this.courses.all = [];
|
this.courses.all = [];
|
||||||
|
this.courses.allincludinghidden = [];
|
||||||
this.courses.past = [];
|
this.courses.past = [];
|
||||||
this.courses.inprogress = [];
|
this.courses.inprogress = [];
|
||||||
this.courses.future = [];
|
this.courses.future = [];
|
||||||
|
@ -291,6 +337,7 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
|
||||||
|
|
||||||
const today = this.timeUtils.timestamp();
|
const today = this.timeUtils.timestamp();
|
||||||
courses.forEach((course) => {
|
courses.forEach((course) => {
|
||||||
|
this.courses.allincludinghidden.push(course);
|
||||||
if (course.hidden) {
|
if (course.hidden) {
|
||||||
this.courses.hidden.push(course);
|
this.courses.hidden.push(course);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"allincludinghidden": "All",
|
||||||
"all": "All (except hidden)",
|
"all": "All (except hidden)",
|
||||||
"favourites": "Starred",
|
"favourites": "Starred",
|
||||||
"future": "Future",
|
"future": "Future",
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
import { Component, OnInit, OnDestroy, Injector, Input, OnChanges, SimpleChange } from '@angular/core';
|
import { Component, OnInit, OnDestroy, Injector, Input, OnChanges, SimpleChange } from '@angular/core';
|
||||||
import { CoreEventsProvider } from '@providers/events';
|
import { CoreEventsProvider } from '@providers/events';
|
||||||
import { CoreUtilsProvider } from '@providers/utils/utils';
|
|
||||||
import { CoreSitesProvider } from '@providers/sites';
|
import { CoreSitesProvider } from '@providers/sites';
|
||||||
import { CoreCoursesProvider } from '@core/courses/providers/courses';
|
import { CoreCoursesProvider } from '@core/courses/providers/courses';
|
||||||
import { CoreCoursesHelperProvider } from '@core/courses/providers/helper';
|
import { CoreCoursesHelperProvider } from '@core/courses/providers/helper';
|
||||||
|
@ -47,7 +46,7 @@ export class AddonBlockRecentlyAccessedCoursesComponent extends CoreBlockBaseCom
|
||||||
|
|
||||||
constructor(injector: Injector, private coursesProvider: CoreCoursesProvider,
|
constructor(injector: Injector, private coursesProvider: CoreCoursesProvider,
|
||||||
private courseCompletionProvider: AddonCourseCompletionProvider, private eventsProvider: CoreEventsProvider,
|
private courseCompletionProvider: AddonCourseCompletionProvider, private eventsProvider: CoreEventsProvider,
|
||||||
private courseHelper: CoreCourseHelperProvider, private utils: CoreUtilsProvider,
|
private courseHelper: CoreCourseHelperProvider,
|
||||||
private courseOptionsDelegate: CoreCourseOptionsDelegate, private coursesHelper: CoreCoursesHelperProvider,
|
private courseOptionsDelegate: CoreCourseOptionsDelegate, private coursesHelper: CoreCoursesHelperProvider,
|
||||||
private sitesProvider: CoreSitesProvider) {
|
private sitesProvider: CoreSitesProvider) {
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,6 @@ import { CoreBlockBaseComponent } from '@core/block/classes/base-block-component
|
||||||
import {
|
import {
|
||||||
AddonBlockRecentlyAccessedItemsProvider, AddonBlockRecentlyAccessedItemsItem
|
AddonBlockRecentlyAccessedItemsProvider, AddonBlockRecentlyAccessedItemsItem
|
||||||
} from '../../providers/recentlyaccesseditems';
|
} from '../../providers/recentlyaccesseditems';
|
||||||
import { CoreTextUtilsProvider } from '@providers/utils/text';
|
|
||||||
import { CoreContentLinksHelperProvider } from '@core/contentlinks/providers/helper';
|
import { CoreContentLinksHelperProvider } from '@core/contentlinks/providers/helper';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -35,7 +34,7 @@ export class AddonBlockRecentlyAccessedItemsComponent extends CoreBlockBaseCompo
|
||||||
protected fetchContentDefaultError = 'Error getting recently accessed items data.';
|
protected fetchContentDefaultError = 'Error getting recently accessed items data.';
|
||||||
|
|
||||||
constructor(injector: Injector, @Optional() private navCtrl: NavController,
|
constructor(injector: Injector, @Optional() private navCtrl: NavController,
|
||||||
private sitesProvider: CoreSitesProvider, private textUtils: CoreTextUtilsProvider,
|
private sitesProvider: CoreSitesProvider,
|
||||||
private recentItemsProvider: AddonBlockRecentlyAccessedItemsProvider,
|
private recentItemsProvider: AddonBlockRecentlyAccessedItemsProvider,
|
||||||
private contentLinksHelper: CoreContentLinksHelperProvider) {
|
private contentLinksHelper: CoreContentLinksHelperProvider) {
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
import { Component, OnInit, OnDestroy, Injector, Input, OnChanges, SimpleChange } from '@angular/core';
|
import { Component, OnInit, OnDestroy, Injector, Input, OnChanges, SimpleChange } from '@angular/core';
|
||||||
import { CoreEventsProvider } from '@providers/events';
|
import { CoreEventsProvider } from '@providers/events';
|
||||||
import { CoreUtilsProvider } from '@providers/utils/utils';
|
|
||||||
import { CoreSitesProvider } from '@providers/sites';
|
import { CoreSitesProvider } from '@providers/sites';
|
||||||
import { CoreCoursesProvider } from '@core/courses/providers/courses';
|
import { CoreCoursesProvider } from '@core/courses/providers/courses';
|
||||||
import { CoreCoursesHelperProvider } from '@core/courses/providers/helper';
|
import { CoreCoursesHelperProvider } from '@core/courses/providers/helper';
|
||||||
|
@ -47,7 +46,7 @@ export class AddonBlockStarredCoursesComponent extends CoreBlockBaseComponent im
|
||||||
|
|
||||||
constructor(injector: Injector, private coursesProvider: CoreCoursesProvider,
|
constructor(injector: Injector, private coursesProvider: CoreCoursesProvider,
|
||||||
private courseCompletionProvider: AddonCourseCompletionProvider, private eventsProvider: CoreEventsProvider,
|
private courseCompletionProvider: AddonCourseCompletionProvider, private eventsProvider: CoreEventsProvider,
|
||||||
private courseHelper: CoreCourseHelperProvider, private utils: CoreUtilsProvider,
|
private courseHelper: CoreCourseHelperProvider,
|
||||||
private courseOptionsDelegate: CoreCourseOptionsDelegate, private coursesHelper: CoreCoursesHelperProvider,
|
private courseOptionsDelegate: CoreCourseOptionsDelegate, private coursesHelper: CoreCoursesHelperProvider,
|
||||||
private sitesProvider: CoreSitesProvider) {
|
private sitesProvider: CoreSitesProvider) {
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import { Component, OnInit, Injector } from '@angular/core';
|
import { Component, OnInit, Injector } from '@angular/core';
|
||||||
import { CoreUtilsProvider } from '@providers/utils/utils';
|
|
||||||
import { CoreTimeUtilsProvider } from '@providers/utils/time';
|
import { CoreTimeUtilsProvider } from '@providers/utils/time';
|
||||||
import { CoreSitesProvider } from '@providers/sites';
|
import { CoreSitesProvider } from '@providers/sites';
|
||||||
import { CoreCoursesProvider } from '@core/courses/providers/courses';
|
import { CoreCoursesProvider } from '@core/courses/providers/courses';
|
||||||
|
@ -50,7 +49,7 @@ export class AddonBlockTimelineComponent extends CoreBlockBaseComponent implemen
|
||||||
protected courseIds = [];
|
protected courseIds = [];
|
||||||
protected fetchContentDefaultError = 'Error getting timeline data.';
|
protected fetchContentDefaultError = 'Error getting timeline data.';
|
||||||
|
|
||||||
constructor(injector: Injector, private coursesProvider: CoreCoursesProvider, private utils: CoreUtilsProvider,
|
constructor(injector: Injector, private coursesProvider: CoreCoursesProvider,
|
||||||
private timelineProvider: AddonBlockTimelineProvider, private courseOptionsDelegate: CoreCourseOptionsDelegate,
|
private timelineProvider: AddonBlockTimelineProvider, private courseOptionsDelegate: CoreCourseOptionsDelegate,
|
||||||
private coursesHelper: CoreCoursesHelperProvider, private sitesProvider: CoreSitesProvider,
|
private coursesHelper: CoreCoursesHelperProvider, private sitesProvider: CoreSitesProvider,
|
||||||
private timeUtils: CoreTimeUtilsProvider) {
|
private timeUtils: CoreTimeUtilsProvider) {
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
"addon.block_glossaryrandom.pluginname": "Random glossary entry",
|
"addon.block_glossaryrandom.pluginname": "Random glossary entry",
|
||||||
"addon.block_learningplans.pluginname": "Learning plans",
|
"addon.block_learningplans.pluginname": "Learning plans",
|
||||||
"addon.block_myoverview.all": "All (except hidden)",
|
"addon.block_myoverview.all": "All (except hidden)",
|
||||||
|
"addon.block_myoverview.allincludinghidden": "All",
|
||||||
"addon.block_myoverview.favourites": "Starred",
|
"addon.block_myoverview.favourites": "Starred",
|
||||||
"addon.block_myoverview.future": "Future",
|
"addon.block_myoverview.future": "Future",
|
||||||
"addon.block_myoverview.hiddencourses": "Hidden",
|
"addon.block_myoverview.hiddencourses": "Hidden",
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
import { Injector, OnInit, Input } from '@angular/core';
|
import { Injector, OnInit, Input } from '@angular/core';
|
||||||
import { CoreLoggerProvider } from '@providers/logger';
|
import { CoreLoggerProvider } from '@providers/logger';
|
||||||
import { CoreDomUtilsProvider } from '@providers/utils/dom';
|
import { CoreDomUtilsProvider } from '@providers/utils/dom';
|
||||||
|
import { CoreUtilsProvider } from '@providers/utils/utils';
|
||||||
|
import { CoreTextUtilsProvider } from '@providers/utils/text';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Template class to easily create components for blocks.
|
* Template class to easily create components for blocks.
|
||||||
|
@ -31,10 +33,14 @@ export class CoreBlockBaseComponent implements OnInit {
|
||||||
protected fetchContentDefaultError: string; // Default error to show when loading contents.
|
protected fetchContentDefaultError: string; // Default error to show when loading contents.
|
||||||
|
|
||||||
protected domUtils: CoreDomUtilsProvider;
|
protected domUtils: CoreDomUtilsProvider;
|
||||||
|
protected textUtils: CoreTextUtilsProvider;
|
||||||
|
protected utils: CoreUtilsProvider;
|
||||||
protected logger;
|
protected logger;
|
||||||
|
|
||||||
constructor(injector: Injector, loggerName: string = 'AddonBlockComponent') {
|
constructor(injector: Injector, loggerName: string = 'AddonBlockComponent') {
|
||||||
this.domUtils = injector.get(CoreDomUtilsProvider);
|
this.domUtils = injector.get(CoreDomUtilsProvider);
|
||||||
|
this.utils = injector.get(CoreUtilsProvider);
|
||||||
|
this.textUtils = injector.get(CoreTextUtilsProvider);
|
||||||
const loggerProvider = injector.get(CoreLoggerProvider);
|
const loggerProvider = injector.get(CoreLoggerProvider);
|
||||||
this.logger = loggerProvider.getInstance(loggerName);
|
this.logger = loggerProvider.getInstance(loggerName);
|
||||||
}
|
}
|
||||||
|
@ -43,6 +49,16 @@ export class CoreBlockBaseComponent implements OnInit {
|
||||||
*/
|
*/
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
this.loaded = false;
|
this.loaded = false;
|
||||||
|
if (this.block.configs && this.block.configs.length > 0) {
|
||||||
|
this.block.configs.map((config) => {
|
||||||
|
config.value = this.textUtils.parseJSON(config.value);
|
||||||
|
|
||||||
|
return config;
|
||||||
|
});
|
||||||
|
|
||||||
|
this.block.configs = this.utils.arrayToObject(this.block.configs, 'name');
|
||||||
|
}
|
||||||
|
|
||||||
this.loadContent();
|
this.loadContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue