MOBILE-3806 course: Fix and improve course list item
parent
84e97ef5cf
commit
dc08698aac
|
@ -10,27 +10,7 @@
|
||||||
<ion-label>
|
<ion-label>
|
||||||
<ion-row>
|
<ion-row>
|
||||||
<ion-col class="ion-align-self-center">
|
<ion-col class="ion-align-self-center">
|
||||||
<p *ngIf="course.categoryname || (course.displayname && course.shortname && course.fullname != course.displayname)"
|
<ng-container *ngTemplateOutlet="mainInfo"></ng-container>
|
||||||
class="core-course-additional-info">
|
|
||||||
<span *ngIf="course.categoryname" class="core-course-category">
|
|
||||||
<core-format-text [text]="course.categoryname"></core-format-text>
|
|
||||||
</span>
|
|
||||||
<span *ngIf="course.categoryname && course.displayname && course.shortname && course.fullname != course.displayname"
|
|
||||||
class="core-course-category"> | </span>
|
|
||||||
<span *ngIf="course.displayname && course.shortname && course.fullname != course.displayname"
|
|
||||||
class="core-course-shortname">
|
|
||||||
<core-format-text [text]="course.shortname" contextLevel="course" [contextInstanceId]="course.id">
|
|
||||||
</core-format-text>
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
<p class="item-heading">
|
|
||||||
<ion-icon name="fas-star" *ngIf="course.isfavourite" [attr.aria-label]="'core.courses.favourite' | translate">
|
|
||||||
</ion-icon>
|
|
||||||
<span class="sr-only" *ngIf="course.isfavourite">{{ 'core.courses.aria:favourite' | translate }}</span>
|
|
||||||
<span class="sr-only">{{ 'core.courses.aria:coursename' | translate }}</span>
|
|
||||||
<core-format-text [text]="course.fullname" contextLevel="course" [contextInstanceId]="course.id">
|
|
||||||
</core-format-text>
|
|
||||||
</p>
|
|
||||||
</ion-col>
|
</ion-col>
|
||||||
<ion-col size="auto" class="ion-align-self-center">
|
<ion-col size="auto" class="ion-align-self-center">
|
||||||
<ng-container *ngIf="!isEnrolled">
|
<ng-container *ngIf="!isEnrolled">
|
||||||
|
@ -47,11 +27,10 @@
|
||||||
<core-progress-bar [progress]="progress" a11yText="core.courses.aria:courseprogress"></core-progress-bar>
|
<core-progress-bar [progress]="progress" a11yText="core.courses.aria:courseprogress"></core-progress-bar>
|
||||||
</p>
|
</p>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
|
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
||||||
<ion-card [attr.course-color]="course.color ? null : course.colorNumber" *ngIf="layout == 'card' || layout == 'summarycard'"
|
<ion-card [attr.course-color]="course.color ? null : course.colorNumber" *ngIf="layout == 'card' || layout == 'summarycard'"
|
||||||
class="core-course-list-card" [class.item-dimmed]="course.hidden">
|
class="core-course-list-card" [class.item-dimmed]="course.hidden" [attr.aria-label]="course.displayname || course.fullname">
|
||||||
<div (click)="openCourse()" class="core-course-thumb" [class.core-course-color-img]="course.courseImage"
|
<div (click)="openCourse()" class="core-course-thumb" [class.core-course-color-img]="course.courseImage"
|
||||||
[style.background-color]="course.color">
|
[style.background-color]="course.color">
|
||||||
<img *ngIf="course.courseImage" [src]="course.courseImage" core-external-content alt="" />
|
<img *ngIf="course.courseImage" [src]="course.courseImage" core-external-content alt="" />
|
||||||
|
@ -62,28 +41,7 @@
|
||||||
<ion-label class="ion-text-wrap core-course-title">
|
<ion-label class="ion-text-wrap core-course-title">
|
||||||
<ion-row>
|
<ion-row>
|
||||||
<ion-col>
|
<ion-col>
|
||||||
<p *ngIf="course.categoryname || (course.displayname && course.shortname && course.fullname != course.displayname)"
|
<ng-container *ngTemplateOutlet="mainInfo"></ng-container>
|
||||||
class="core-course-additional-info">
|
|
||||||
<span class="sr-only">{{ 'core.courses.aria:coursecategory' | translate }}</span>
|
|
||||||
<span *ngIf="course.categoryname" class="core-course-category">
|
|
||||||
<core-format-text [text]="course.categoryname"></core-format-text>
|
|
||||||
</span>
|
|
||||||
<span *ngIf="course.categoryname && course.displayname && course.shortname && course.fullname != course.displayname"
|
|
||||||
class="core-course-category"> | </span>
|
|
||||||
<span *ngIf="course.displayname && course.shortname && course.fullname != course.displayname"
|
|
||||||
class="core-course-shortname">
|
|
||||||
<core-format-text [text]="course.shortname" contextLevel="course" [contextInstanceId]="course.id">
|
|
||||||
</core-format-text>
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
<p class="item-heading">
|
|
||||||
<ion-icon name="fas-star" *ngIf="course.isfavourite" [attr.aria-label]="'core.courses.favourite' | translate">
|
|
||||||
</ion-icon>
|
|
||||||
<span class="sr-only" *ngIf="course.isfavourite">{{ 'core.courses.aria:favourite' | translate }}</span>
|
|
||||||
<span class="sr-only">{{ 'core.courses.aria:coursename' | translate }}</span>
|
|
||||||
<core-format-text [text]="course.fullname" contextLevel="course" [contextInstanceId]="course.id">
|
|
||||||
</core-format-text>
|
|
||||||
</p>
|
|
||||||
</ion-col>
|
</ion-col>
|
||||||
<ion-col size="auto"
|
<ion-col size="auto"
|
||||||
*ngIf="isEnrolled && ((downloadCourseEnabled && !courseOptionMenuEnabled && showDownload) || courseOptionMenuEnabled)">
|
*ngIf="isEnrolled && ((downloadCourseEnabled && !courseOptionMenuEnabled && showDownload) || courseOptionMenuEnabled)">
|
||||||
|
@ -122,3 +80,27 @@
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</div>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
|
||||||
|
<ng-template #mainInfo>
|
||||||
|
<p *ngIf="course.categoryname || (course.displayname && course.shortname && course.fullname != course.displayname)"
|
||||||
|
class="core-course-additional-info">
|
||||||
|
<span *ngIf="course.categoryname" class="core-course-category">
|
||||||
|
<span class="sr-only">{{ 'core.courses.aria:coursecategory' | translate }}</span>
|
||||||
|
<core-format-text [text]="course.categoryname"></core-format-text>
|
||||||
|
</span>
|
||||||
|
<span *ngIf="course.categoryname && course.displayname && course.shortname && course.fullname != course.displayname"
|
||||||
|
class="core-course-category"> | </span>
|
||||||
|
<span *ngIf="course.displayname && course.shortname && course.fullname != course.displayname" class="core-course-shortname">
|
||||||
|
<core-format-text [text]="course.shortname" contextLevel="course" [contextInstanceId]="course.id">
|
||||||
|
</core-format-text>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
<p class="item-heading">
|
||||||
|
<ion-icon name="fas-star" *ngIf="course.isfavourite" [attr.aria-label]="'core.courses.favourite' | translate">
|
||||||
|
</ion-icon>
|
||||||
|
<span class="sr-only" *ngIf="course.isfavourite">{{ 'core.courses.aria:favourite' | translate }}</span>
|
||||||
|
<span class="sr-only">{{ 'core.courses.aria:coursename' | translate }}</span>
|
||||||
|
<core-format-text [text]="course.fullname" contextLevel="course" [contextInstanceId]="course.id">
|
||||||
|
</core-format-text>
|
||||||
|
</p>
|
||||||
|
</ng-template>
|
||||||
|
|
|
@ -250,13 +250,13 @@ export class CoreCoursesCourseListItemComponent implements OnInit, OnDestroy, On
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete the course.
|
* Delete course stored data.
|
||||||
*/
|
*/
|
||||||
async deleteCourse(): Promise<void> {
|
async deleteCourseStoredData(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
await CoreDomUtils.showDeleteConfirm('core.course.confirmdeletestoreddata');
|
await CoreDomUtils.showDeleteConfirm('core.course.confirmdeletestoreddata');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (CoreDomUtils.isCanceledError(error)) {
|
if (!CoreDomUtils.isCanceledError(error)) {
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -299,8 +299,8 @@ export class CoreCoursesCourseListItemComponent implements OnInit, OnDestroy, On
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'delete':
|
case 'delete':
|
||||||
if (this.courseStatus == 'downloaded' || this.courseStatus == 'outdated') {
|
if (this.courseStatus == CoreConstants.DOWNLOADED || this.courseStatus == CoreConstants.OUTDATED) {
|
||||||
this.deleteCourse();
|
this.deleteCourseStoredData();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'hide':
|
case 'hide':
|
||||||
|
|
|
@ -35,6 +35,8 @@ import { CoreUser } from '@features/user/services/user';
|
||||||
*
|
*
|
||||||
* <core-courses-course-progress [course]="course">
|
* <core-courses-course-progress [course]="course">
|
||||||
* </core-courses-course-progress>
|
* </core-courses-course-progress>
|
||||||
|
*
|
||||||
|
* @deprecated since 4.0 Use core-courses-course-list-item instead.
|
||||||
*/
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'core-courses-course-progress',
|
selector: 'core-courses-course-progress',
|
||||||
|
@ -175,7 +177,7 @@ export class CoreCoursesCourseProgressComponent implements OnInit, OnDestroy, On
|
||||||
try {
|
try {
|
||||||
await CoreDomUtils.showDeleteConfirm('core.course.confirmdeletestoreddata');
|
await CoreDomUtils.showDeleteConfirm('core.course.confirmdeletestoreddata');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (CoreDomUtils.isCanceledError(error)) {
|
if (!CoreDomUtils.isCanceledError(error)) {
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,7 +235,7 @@ export class CoreCoursesCourseProgressComponent implements OnInit, OnDestroy, On
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'delete':
|
case 'delete':
|
||||||
if (this.courseStatus == 'downloaded' || this.courseStatus == 'outdated') {
|
if (this.courseStatus == CoreConstants.DOWNLOADED || this.courseStatus == CoreConstants.OUTDATED) {
|
||||||
this.deleteCourse();
|
this.deleteCourse();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue