MOBILE-3833 mycourses: Display side blocks in my courses
parent
b0f090061b
commit
cc24b2c7ff
|
@ -33,6 +33,7 @@ export class CoreBlockSideBlocksButtonComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
@Input() contextLevel!: string;
|
@Input() contextLevel!: string;
|
||||||
@Input() instanceId!: number;
|
@Input() instanceId!: number;
|
||||||
|
@Input() myDashboardPage?: string;
|
||||||
|
|
||||||
userTour: CoreUserTourDirectiveOptions = {
|
userTour: CoreUserTourDirectiveOptions = {
|
||||||
id: 'side-blocks-button',
|
id: 'side-blocks-button',
|
||||||
|
@ -69,6 +70,7 @@ export class CoreBlockSideBlocksButtonComponent implements OnInit, OnDestroy {
|
||||||
componentProps: {
|
componentProps: {
|
||||||
contextLevel: this.contextLevel,
|
contextLevel: this.contextLevel,
|
||||||
instanceId: this.instanceId,
|
instanceId: this.instanceId,
|
||||||
|
myDashboardPage: this.myDashboardPage,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,7 @@ export class CoreBlockSideBlocksComponent implements OnInit {
|
||||||
|
|
||||||
@Input() contextLevel!: string;
|
@Input() contextLevel!: string;
|
||||||
@Input() instanceId!: number;
|
@Input() instanceId!: number;
|
||||||
|
@Input() myDashboardPage?: string;
|
||||||
|
|
||||||
@ViewChildren(CoreBlockComponent) blocksComponents?: QueryList<CoreBlockComponent>;
|
@ViewChildren(CoreBlockComponent) blocksComponents?: QueryList<CoreBlockComponent>;
|
||||||
|
|
||||||
|
@ -83,7 +84,7 @@ export class CoreBlockSideBlocksComponent implements OnInit {
|
||||||
if (this.contextLevel === 'course') {
|
if (this.contextLevel === 'course') {
|
||||||
this.blocks = await CoreBlockHelper.getCourseBlocks(this.instanceId);
|
this.blocks = await CoreBlockHelper.getCourseBlocks(this.instanceId);
|
||||||
} else {
|
} else {
|
||||||
const blocks = await CoreCoursesDashboard.getDashboardBlocks();
|
const blocks = await CoreCoursesDashboard.getDashboardBlocks(undefined, undefined, this.myDashboardPage);
|
||||||
|
|
||||||
this.blocks = blocks.sideBlocks;
|
this.blocks = blocks.sideBlocks;
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,6 +49,10 @@
|
||||||
<core-block *ngIf="loadedBlock?.visible" [block]="loadedBlock" contextLevel="user" [instanceId]="userId"></core-block>
|
<core-block *ngIf="loadedBlock?.visible" [block]="loadedBlock" contextLevel="user" [instanceId]="userId"></core-block>
|
||||||
</ion-list>
|
</ion-list>
|
||||||
|
|
||||||
|
<core-block-side-blocks-button slot="fixed" *ngIf="hasSideBlocks" contextLevel="user" [instanceId]="userId"
|
||||||
|
[myDashboardPage]="myPageCourses">
|
||||||
|
</core-block-side-blocks-button>
|
||||||
|
|
||||||
<core-empty-box *ngIf="!loadedBlock" icon="fas-cubes" [message]="'core.course.nocontentavailable' | translate">
|
<core-empty-box *ngIf="!loadedBlock" icon="fas-cubes" [message]="'core.course.nocontentavailable' | translate">
|
||||||
</core-empty-box>
|
</core-empty-box>
|
||||||
</core-loading>
|
</core-loading>
|
||||||
|
|
|
@ -42,6 +42,8 @@ export class CoreCoursesMyCoursesPage implements OnInit, OnDestroy {
|
||||||
loadedBlock?: Partial<CoreCourseBlock>;
|
loadedBlock?: Partial<CoreCourseBlock>;
|
||||||
myOverviewBlock?: AddonBlockMyOverviewComponent;
|
myOverviewBlock?: AddonBlockMyOverviewComponent;
|
||||||
loaded = false;
|
loaded = false;
|
||||||
|
myPageCourses = CoreCoursesDashboardProvider.MY_PAGE_COURSES;
|
||||||
|
hasSideBlocks = false;
|
||||||
|
|
||||||
protected updateSiteObserver: CoreEventObserver;
|
protected updateSiteObserver: CoreEventObserver;
|
||||||
|
|
||||||
|
@ -79,9 +81,11 @@ export class CoreCoursesMyCoursesPage implements OnInit, OnDestroy {
|
||||||
|
|
||||||
if (available && !disabled) {
|
if (available && !disabled) {
|
||||||
try {
|
try {
|
||||||
const blocks = await CoreCoursesDashboard.getDashboardBlocksFromWS(CoreCoursesDashboardProvider.MY_PAGE_COURSES);
|
const blocks = await CoreCoursesDashboard.getDashboardBlocks(undefined, undefined, this.myPageCourses);
|
||||||
|
|
||||||
this.loadedBlock = blocks.find((block) => block.name == 'myoverview');
|
// My overview block should always be in main blocks, but check side blocks too just in case.
|
||||||
|
this.loadedBlock = blocks.mainBlocks.concat(blocks.sideBlocks).find((block) => block.name == 'myoverview');
|
||||||
|
this.hasSideBlocks = blocks.sideBlocks.length > 0;
|
||||||
|
|
||||||
await CoreUtils.nextTicks(2);
|
await CoreUtils.nextTicks(2);
|
||||||
|
|
||||||
|
|
|
@ -92,10 +92,15 @@ export class CoreCoursesDashboardProvider {
|
||||||
*
|
*
|
||||||
* @param userId User ID. Default, current user.
|
* @param userId User ID. Default, current user.
|
||||||
* @param siteId Site ID. If not defined, current site.
|
* @param siteId Site ID. If not defined, current site.
|
||||||
|
* @param myPage What my page to return blocks of. Default MY_PAGE_DEFAULT.
|
||||||
* @return Promise resolved with the list of blocks.
|
* @return Promise resolved with the list of blocks.
|
||||||
*/
|
*/
|
||||||
async getDashboardBlocks(userId?: number, siteId?: string): Promise<CoreCoursesDashboardBlocks> {
|
async getDashboardBlocks(
|
||||||
const blocks = await this.getDashboardBlocksFromWS(CoreCoursesDashboardProvider.MY_PAGE_DEFAULT, userId, siteId);
|
userId?: number,
|
||||||
|
siteId?: string,
|
||||||
|
myPage = CoreCoursesDashboardProvider.MY_PAGE_DEFAULT,
|
||||||
|
): Promise<CoreCoursesDashboardBlocks> {
|
||||||
|
const blocks = await this.getDashboardBlocksFromWS(myPage, userId, siteId);
|
||||||
|
|
||||||
let mainBlocks: CoreCourseBlock[] = [];
|
let mainBlocks: CoreCourseBlock[] = [];
|
||||||
let sideBlocks: CoreCourseBlock[] = [];
|
let sideBlocks: CoreCourseBlock[] = [];
|
||||||
|
|
Loading…
Reference in New Issue