forked from CIT/Vmeda.Online
		
	Merge pull request #2782 from NoelDeMartin/MOBILE-3751
MOBILE-3751: Headings a11y
This commit is contained in:
		
						commit
						f0155f9121
					
				
							
								
								
									
										2
									
								
								.vscode/moodle.code-snippets
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.vscode/moodle.code-snippets
									
									
									
									
										vendored
									
									
								
							@ -7,7 +7,7 @@
 | 
				
			|||||||
            "",
 | 
					            "",
 | 
				
			||||||
            "@Component({",
 | 
					            "@Component({",
 | 
				
			||||||
            "    selector: '$2${TM_FILENAME_BASE}',",
 | 
					            "    selector: '$2${TM_FILENAME_BASE}',",
 | 
				
			||||||
            "    templateUrl: '${TM_FILENAME_BASE}.html',",
 | 
					            "    templateUrl: '$2${TM_FILENAME_BASE}.html',",
 | 
				
			||||||
            "})",
 | 
					            "})",
 | 
				
			||||||
            "export class ${1:${TM_FILENAME_BASE}}Component {",
 | 
					            "export class ${1:${TM_FILENAME_BASE}}Component {",
 | 
				
			||||||
            "",
 | 
					            "",
 | 
				
			||||||
 | 
				
			|||||||
@ -3,8 +3,8 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title *ngIf="badge">{{ badge.name }}</ion-title>
 | 
					        <h1 *ngIf="badge">{{ badge.name }}</h1>
 | 
				
			||||||
        <ion-title *ngIf="!badge">{{ 'addon.badges.badges' | translate }}</ion-title>
 | 
					        <h1 *ngIf="!badge">{{ 'addon.badges.badges' | translate }}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.badges.badges' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.badges.badges' | translate }}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
@ -23,7 +23,7 @@
 | 
				
			|||||||
                        <img [src]="badge.badgeurl" [alt]="badge.name" core-external-content>
 | 
					                        <img [src]="badge.badgeurl" [alt]="badge.name" core-external-content>
 | 
				
			||||||
                    </ion-avatar>
 | 
					                    </ion-avatar>
 | 
				
			||||||
                    <ion-label>
 | 
					                    <ion-label>
 | 
				
			||||||
                        <h2>{{ badge.name }}</h2>
 | 
					                        <p class="item-heading">{{ badge.name }}</p>
 | 
				
			||||||
                        <p>{{ badge.dateissued * 1000 | coreFormatDate :'strftimedatetimeshort' }}</p>
 | 
					                        <p>{{ badge.dateissued * 1000 | coreFormatDate :'strftimedatetimeshort' }}</p>
 | 
				
			||||||
                    </ion-label>
 | 
					                    </ion-label>
 | 
				
			||||||
                    <ion-badge slot="end" color="danger" *ngIf="badge.dateexpire && currentTime >= badge.dateexpire">
 | 
					                    <ion-badge slot="end" color="danger" *ngIf="badge.dateexpire && currentTime >= badge.dateexpire">
 | 
				
			||||||
 | 
				
			|||||||
@ -21,10 +21,10 @@
 | 
				
			|||||||
                        <ion-label>
 | 
					                        <ion-label>
 | 
				
			||||||
                            <!-- Add the icon title so accessibility tools read it. -->
 | 
					                            <!-- Add the icon title so accessibility tools read it. -->
 | 
				
			||||||
                            <span class="sr-only" *ngIf="item.iconTitle">{{ item.iconTitle }}</span>
 | 
					                            <span class="sr-only" *ngIf="item.iconTitle">{{ item.iconTitle }}</span>
 | 
				
			||||||
                            <h2>
 | 
					                            <p class="item-heading">
 | 
				
			||||||
                                <core-format-text [text]="item.name" contextLevel="module" [contextInstanceId]="item.cmid"
 | 
					                                <core-format-text [text]="item.name" contextLevel="module" [contextInstanceId]="item.cmid"
 | 
				
			||||||
                                    [courseId]="item.courseid"></core-format-text>
 | 
					                                    [courseId]="item.courseid"></core-format-text>
 | 
				
			||||||
                            </h2>
 | 
					                            </p>
 | 
				
			||||||
                            <p>
 | 
					                            <p>
 | 
				
			||||||
                                <core-format-text [text]="item.coursename" contextLevel="course" [contextInstanceId]="item.courseid">
 | 
					                                <core-format-text [text]="item.coursename" contextLevel="course" [contextInstanceId]="item.courseid">
 | 
				
			||||||
                                </core-format-text>
 | 
					                                </core-format-text>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
<ion-item-group *ngFor="let dayEvents of filteredEvents">
 | 
					<ion-item-group *ngFor="let dayEvents of filteredEvents">
 | 
				
			||||||
    <ion-item-divider [color]="dayEvents.color">
 | 
					    <ion-item-divider [color]="dayEvents.color">
 | 
				
			||||||
        <ion-label><h2>{{ dayEvents.dayTimestamp * 1000 | coreFormatDate:"strftimedayshort" }}</h2></ion-label>
 | 
					        <ion-label><h3>{{ dayEvents.dayTimestamp * 1000 | coreFormatDate:"strftimedayshort" }}</h3></ion-label>
 | 
				
			||||||
    </ion-item-divider>
 | 
					    </ion-item-divider>
 | 
				
			||||||
    <ng-container *ngFor="let event of dayEvents.events">
 | 
					    <ng-container *ngFor="let event of dayEvents.events">
 | 
				
			||||||
        <ion-item class="ion-text-wrap core-course-module-handler item-media" detail="false" (click)="action($event, event.url)"
 | 
					        <ion-item class="ion-text-wrap core-course-module-handler item-media" detail="false" (click)="action($event, event.url)"
 | 
				
			||||||
@ -9,11 +9,11 @@
 | 
				
			|||||||
            <ion-label>
 | 
					            <ion-label>
 | 
				
			||||||
                <!-- Add the icon title so accessibility tools read it. -->
 | 
					                <!-- Add the icon title so accessibility tools read it. -->
 | 
				
			||||||
                <span class="sr-only" *ngIf="event.iconTitle">{{ event.iconTitle }}</span>
 | 
					                <span class="sr-only" *ngIf="event.iconTitle">{{ event.iconTitle }}</span>
 | 
				
			||||||
                <h2>
 | 
					                <p class="item-heading">
 | 
				
			||||||
                    <core-format-text [text]="event.name" contextLevel="module" [contextInstanceId]="event.id"
 | 
					                    <core-format-text [text]="event.name" contextLevel="module" [contextInstanceId]="event.id"
 | 
				
			||||||
                        [courseId]="event.course && event.course.id">
 | 
					                        [courseId]="event.course && event.course.id">
 | 
				
			||||||
                    </core-format-text>
 | 
					                    </core-format-text>
 | 
				
			||||||
                </h2>
 | 
					                </p>
 | 
				
			||||||
                <p *ngIf="showCourse && event.course">
 | 
					                <p *ngIf="showCourse && event.course">
 | 
				
			||||||
                    <core-format-text [text]="event.course.fullnamedisplay" contextLevel="course"
 | 
					                    <core-format-text [text]="event.course.fullnamedisplay" contextLevel="course"
 | 
				
			||||||
                        [contextInstanceId]="event.course.id">
 | 
					                        [contextInstanceId]="event.course.id">
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ title | translate }}</ion-title>
 | 
					        <h1>{{ title | translate }}</h1>
 | 
				
			||||||
        <ion-buttons slot="end"></ion-buttons>
 | 
					        <ion-buttons slot="end"></ion-buttons>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
@ -24,14 +24,14 @@
 | 
				
			|||||||
                <ion-item class="ion-text-wrap">
 | 
					                <ion-item class="ion-text-wrap">
 | 
				
			||||||
                    <core-user-avatar [user]="entry.user" slot="start" [courseId]="entry.courseid"></core-user-avatar>
 | 
					                    <core-user-avatar [user]="entry.user" slot="start" [courseId]="entry.courseid"></core-user-avatar>
 | 
				
			||||||
                    <ion-label>
 | 
					                    <ion-label>
 | 
				
			||||||
                        <h2>
 | 
					                        <p class="item-heading">
 | 
				
			||||||
                            <core-format-text [text]="entry.subject" [contextLevel]="contextLevel"
 | 
					                            <core-format-text [text]="entry.subject" [contextLevel]="contextLevel"
 | 
				
			||||||
                                [contextInstanceId]="contextInstanceId">
 | 
					                                [contextInstanceId]="contextInstanceId">
 | 
				
			||||||
                            </core-format-text>
 | 
					                            </core-format-text>
 | 
				
			||||||
                            <ion-note class="ion-float-end ion-padding-left ion-text-end">
 | 
					                            <ion-note class="ion-float-end ion-padding-left ion-text-end">
 | 
				
			||||||
                                {{ 'addon.blog.' + entry.publishTranslated! | translate}}
 | 
					                                {{ 'addon.blog.' + entry.publishTranslated! | translate}}
 | 
				
			||||||
                            </ion-note>
 | 
					                            </ion-note>
 | 
				
			||||||
                        </h2>
 | 
					                        </p>
 | 
				
			||||||
                        <p>
 | 
					                        <p>
 | 
				
			||||||
                            <ion-note class="ion-float-end ion-padding-left ion-text-end">
 | 
					                            <ion-note class="ion-float-end ion-padding-left ion-text-end">
 | 
				
			||||||
                                {{entry.created | coreDateDayOrTime}}
 | 
					                                {{entry.created | coreDateDayOrTime}}
 | 
				
			||||||
 | 
				
			|||||||
@ -18,7 +18,7 @@
 | 
				
			|||||||
                </ion-button>
 | 
					                </ion-button>
 | 
				
			||||||
            </ion-col>
 | 
					            </ion-col>
 | 
				
			||||||
            <ion-col class="ion-text-center addon-calendar-period">
 | 
					            <ion-col class="ion-text-center addon-calendar-period">
 | 
				
			||||||
                <h3 id="addon-calendar-monthname">{{ periodName }}</h3>
 | 
					                <h2 id="addon-calendar-monthname">{{ periodName }}</h2>
 | 
				
			||||||
            </ion-col>
 | 
					            </ion-col>
 | 
				
			||||||
            <ion-col class="ion-text-end" *ngIf="canNavigate">
 | 
					            <ion-col class="ion-text-end" *ngIf="canNavigate">
 | 
				
			||||||
                <ion-button fill="clear" (click)="loadNext()" [attr.aria-label]="'core.next' | translate">
 | 
					                <ion-button fill="clear" (click)="loadNext()" [attr.aria-label]="'core.next' | translate">
 | 
				
			||||||
 | 
				
			|||||||
@ -16,8 +16,10 @@
 | 
				
			|||||||
                        {{ 'addon.calendar.type' + event.formattedType | translate }}
 | 
					                        {{ 'addon.calendar.type' + event.formattedType | translate }}
 | 
				
			||||||
                        <span class="sr-only" *ngIf="event.moduleIcon && event.iconTitle">{{ event.iconTitle }}</span>
 | 
					                        <span class="sr-only" *ngIf="event.moduleIcon && event.iconTitle">{{ event.iconTitle }}</span>
 | 
				
			||||||
                    </span>
 | 
					                    </span>
 | 
				
			||||||
                    <h2><core-format-text [text]="event.name" [contextLevel]="event.contextLevel"
 | 
					                    <p class="item-heading">
 | 
				
			||||||
                        [contextInstanceId]="event.contextInstanceId"></core-format-text></h2>
 | 
					                        <core-format-text [text]="event.name" [contextLevel]="event.contextLevel"
 | 
				
			||||||
 | 
					                        [contextInstanceId]="event.contextInstanceId"></core-format-text>
 | 
				
			||||||
 | 
					                    </p>
 | 
				
			||||||
                    <p [innerHTML]="event.formattedtime"></p>
 | 
					                    <p [innerHTML]="event.formattedtime"></p>
 | 
				
			||||||
                </ion-label>
 | 
					                </ion-label>
 | 
				
			||||||
                <ion-note *ngIf="event.offline && !event.deleted" slot="end">
 | 
					                <ion-note *ngIf="event.offline && !event.deleted" slot="end">
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.calendar.calendarevents' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.calendar.calendarevents' | translate }}</h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="openFilter($event)" [attr.aria-label]="'core.filter' | translate">
 | 
					            <ion-button fill="clear" (click)="openFilter($event)" [attr.aria-label]="'core.filter' | translate">
 | 
				
			||||||
                <ion-icon slot="icon-only" name="fas-filter" aria-hidden="true"></ion-icon>
 | 
					                <ion-icon slot="icon-only" name="fas-filter" aria-hidden="true"></ion-icon>
 | 
				
			||||||
@ -71,8 +71,10 @@
 | 
				
			|||||||
                            {{ 'addon.calendar.type' + event.formattedType | translate }}
 | 
					                            {{ 'addon.calendar.type' + event.formattedType | translate }}
 | 
				
			||||||
                            <span class="sr-only" *ngIf="event.moduleIcon && event.iconTitle">{{ event.iconTitle }}</span>
 | 
					                            <span class="sr-only" *ngIf="event.moduleIcon && event.iconTitle">{{ event.iconTitle }}</span>
 | 
				
			||||||
                        </span>
 | 
					                        </span>
 | 
				
			||||||
                        <h2><core-format-text [text]="event.name" [contextLevel]="event.contextLevel"
 | 
					                        <p class="item-heading">
 | 
				
			||||||
                            [contextInstanceId]="event.contextInstanceId"></core-format-text></h2>
 | 
					                            <core-format-text [text]="event.name" [contextLevel]="event.contextLevel"
 | 
				
			||||||
 | 
					                            [contextInstanceId]="event.contextInstanceId"></core-format-text>
 | 
				
			||||||
 | 
					                        </p>
 | 
				
			||||||
                        <p [innerHTML]="event.formattedtime"></p>
 | 
					                        <p [innerHTML]="event.formattedtime"></p>
 | 
				
			||||||
                    </ion-label>
 | 
					                    </ion-label>
 | 
				
			||||||
                    <ion-note *ngIf="event.offline && !event.deleted" slot="end">
 | 
					                    <ion-note *ngIf="event.offline && !event.deleted" slot="end">
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ title | translate }}</ion-title>
 | 
					        <h1>{{ title | translate }}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title *ngIf="event">
 | 
					        <h1 *ngIf="event">
 | 
				
			||||||
            <img *ngIf="event.moduleIcon" src="{{event.moduleIcon}}" alt="" role="presentation" class="core-module-icon">
 | 
					            <img *ngIf="event.moduleIcon" src="{{event.moduleIcon}}" alt="" role="presentation" class="core-module-icon">
 | 
				
			||||||
            <ion-icon *ngIf="event.eventIcon && !event.moduleIcon" [name]="event.eventIcon" aria-hidden="true"></ion-icon>
 | 
					            <ion-icon *ngIf="event.eventIcon && !event.moduleIcon" [name]="event.eventIcon" aria-hidden="true"></ion-icon>
 | 
				
			||||||
            <!-- Add the icon title so accessibility tools read it. -->
 | 
					            <!-- Add the icon title so accessibility tools read it. -->
 | 
				
			||||||
@ -13,7 +13,7 @@
 | 
				
			|||||||
            </span>
 | 
					            </span>
 | 
				
			||||||
            <core-format-text [text]="event.name" [contextLevel]="event.contextLevel"
 | 
					            <core-format-text [text]="event.name" [contextLevel]="event.contextLevel"
 | 
				
			||||||
                [contextInstanceId]="event.contextInstanceId"></core-format-text>
 | 
					                [contextInstanceId]="event.contextInstanceId"></core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The context menu will be added in here. -->
 | 
					            <!-- The context menu will be added in here. -->
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
 | 
				
			|||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
    ion-card ion-note {
 | 
					    ion-card ion-note {
 | 
				
			||||||
        font-size: 1.6rem;
 | 
					        font-size: 1.6rem;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    ion-title ion-icon, ion-title img {
 | 
					    h1 ion-icon, h1 img {
 | 
				
			||||||
        margin-left: 10px;
 | 
					        margin-left: 10px;
 | 
				
			||||||
        margin-right: 10px;
 | 
					        margin-right: 10px;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ (showCalendar ? 'addon.calendar.calendarevents' : 'addon.calendar.upcomingevents') | translate }}</ion-title>
 | 
					        <h1>{{ (showCalendar ? 'addon.calendar.calendarevents' : 'addon.calendar.upcomingevents') | translate }}</h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="openFilter($event)" [attr.aria-label]="'core.filter' | translate">
 | 
					            <ion-button fill="clear" (click)="openFilter($event)" [attr.aria-label]="'core.filter' | translate">
 | 
				
			||||||
                <ion-icon slot="icon-only" name="fas-filter" aria-hidden="true"></ion-icon>
 | 
					                <ion-icon slot="icon-only" name="fas-filter" aria-hidden="true"></ion-icon>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.calendar.calendarevents' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.calendar.calendarevents' | translate }}</h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="openFilter($event)" [attr.aria-label]="'core.filter' | translate">
 | 
					            <ion-button fill="clear" (click)="openFilter($event)" [attr.aria-label]="'core.filter' | translate">
 | 
				
			||||||
                <ion-icon slot="icon-only" name="fas-filter" aria-hidden="true"></ion-icon>
 | 
					                <ion-icon slot="icon-only" name="fas-filter" aria-hidden="true"></ion-icon>
 | 
				
			||||||
@ -40,7 +40,7 @@
 | 
				
			|||||||
            <ion-list *ngIf="filteredEvents && filteredEvents.length" class="ion-no-margin">
 | 
					            <ion-list *ngIf="filteredEvents && filteredEvents.length" class="ion-no-margin">
 | 
				
			||||||
                <ng-container *ngFor="let event of filteredEvents">
 | 
					                <ng-container *ngFor="let event of filteredEvents">
 | 
				
			||||||
                    <ion-item-divider *ngIf="event.showDate">
 | 
					                    <ion-item-divider *ngIf="event.showDate">
 | 
				
			||||||
                        <ion-label><h2>{{ event.timestart * 1000 | coreFormatDate: "strftimedayshort" }}</h2></ion-label>
 | 
					                        <ion-label><p class="item-heading">{{ event.timestart * 1000 | coreFormatDate: "strftimedayshort" }}</p></ion-label>
 | 
				
			||||||
                    </ion-item-divider>
 | 
					                    </ion-item-divider>
 | 
				
			||||||
                    <ion-item class="addon-calendar-event ion-text-wrap" [attr.aria-label]="event.name" (click)="gotoEvent(event.id)"
 | 
					                    <ion-item class="addon-calendar-event ion-text-wrap" [attr.aria-label]="event.name" (click)="gotoEvent(event.id)"
 | 
				
			||||||
                        [attr.aria-current]="event.id == eventId ? 'page' : 'false'"
 | 
					                        [attr.aria-current]="event.id == eventId ? 'page' : 'false'"
 | 
				
			||||||
@ -51,7 +51,7 @@
 | 
				
			|||||||
                            aria-hidden="true">
 | 
					                            aria-hidden="true">
 | 
				
			||||||
                        </ion-icon>
 | 
					                        </ion-icon>
 | 
				
			||||||
                        <ion-label>
 | 
					                        <ion-label>
 | 
				
			||||||
                            <h2>
 | 
					                            <p class="item-heading">
 | 
				
			||||||
                                <!-- Add the icon title so accessibility tools read it. -->
 | 
					                                <!-- Add the icon title so accessibility tools read it. -->
 | 
				
			||||||
                                <span class="sr-only">
 | 
					                                <span class="sr-only">
 | 
				
			||||||
                                    {{ 'addon.calendar.type' + event.formattedType | translate }}
 | 
					                                    {{ 'addon.calendar.type' + event.formattedType | translate }}
 | 
				
			||||||
@ -60,7 +60,7 @@
 | 
				
			|||||||
                                <core-format-text [text]="event.name" [contextLevel]="event.contextLevel"
 | 
					                                <core-format-text [text]="event.name" [contextLevel]="event.contextLevel"
 | 
				
			||||||
                                    [contextInstanceId]="event.contextInstanceId">
 | 
					                                    [contextInstanceId]="event.contextInstanceId">
 | 
				
			||||||
                                </core-format-text>
 | 
					                                </core-format-text>
 | 
				
			||||||
                            </h2>
 | 
					                            </p>
 | 
				
			||||||
                            <p>
 | 
					                            <p>
 | 
				
			||||||
                                {{ event.timestart * 1000 | coreFormatDate: "strftimetime" }}
 | 
					                                {{ event.timestart * 1000 | coreFormatDate: "strftimetime" }}
 | 
				
			||||||
                                <span *ngIf="event.timeduration && event.endsSameDay">
 | 
					                                <span *ngIf="event.timeduration && event.endsSameDay">
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'core.settings.settings' | translate }}</ion-title>
 | 
					        <h1>{{ 'core.settings.settings' | translate }}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ title }}</ion-title>
 | 
					        <h1>{{ title }}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
@ -17,7 +17,7 @@
 | 
				
			|||||||
                    [attr.aria-label]="competency.competency.shortname" (click)="competencies.select(competency)"
 | 
					                    [attr.aria-label]="competency.competency.shortname" (click)="competencies.select(competency)"
 | 
				
			||||||
                    [attr.aria-current]="competencies.getItemAriaCurrent(competency)" button>
 | 
					                    [attr.aria-current]="competencies.getItemAriaCurrent(competency)" button>
 | 
				
			||||||
                    <ion-label>
 | 
					                    <ion-label>
 | 
				
			||||||
                        <h2>{{ competency.competency.shortname }} <em>{{competency.competency.idnumber}}</em></h2>
 | 
					                        <p class="item-heading">{{ competency.competency.shortname }} <em>{{competency.competency.idnumber}}</em></p>
 | 
				
			||||||
                    </ion-label>
 | 
					                    </ion-label>
 | 
				
			||||||
                    <ion-badge slot="end" *ngIf="competency.usercompetency"
 | 
					                    <ion-badge slot="end" *ngIf="competency.usercompetency"
 | 
				
			||||||
                        [color]="competency.usercompetency.proficiency ? 'success' : 'danger'">
 | 
					                        [color]="competency.usercompetency.proficiency ? 'success' : 'danger'">
 | 
				
			||||||
 | 
				
			|||||||
@ -3,9 +3,9 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title *ngIf="competency">
 | 
					        <h1 *ngIf="competency">
 | 
				
			||||||
            {{ competency.competency.competency.shortname }} <small>{{ competency.competency.competency.idnumber }}</small>
 | 
					            {{ competency.competency.competency.shortname }} <small>{{ competency.competency.competency.idnumber }}</small>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
@ -121,7 +121,7 @@
 | 
				
			|||||||
                    [courseId]="courseId">
 | 
					                    [courseId]="courseId">
 | 
				
			||||||
                    <core-user-avatar [user]="evidence.actionuser" slot="start"></core-user-avatar>
 | 
					                    <core-user-avatar [user]="evidence.actionuser" slot="start"></core-user-avatar>
 | 
				
			||||||
                    <ion-label>
 | 
					                    <ion-label>
 | 
				
			||||||
                        <h2>{{ evidence.actionuser.fullname }}</h2>
 | 
					                        <p class="item-heading">{{ evidence.actionuser.fullname }}</p>
 | 
				
			||||||
                        <p>{{ evidence.timemodified * 1000 | coreFormatDate }}</p>
 | 
					                        <p>{{ evidence.timemodified * 1000 | coreFormatDate }}</p>
 | 
				
			||||||
                    </ion-label>
 | 
					                    </ion-label>
 | 
				
			||||||
                </ion-item>
 | 
					                </ion-item>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,9 +3,9 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title *ngIf="competency">
 | 
					        <h1 *ngIf="competency">
 | 
				
			||||||
            {{ competency.competency.shortname }} <small>{{ competency.competency.idnumber }}</small>
 | 
					            {{ competency.competency.shortname }} <small>{{ competency.competency.idnumber }}</small>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.competency.coursecompetencies' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.competency.coursecompetencies' | translate }}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
@ -44,9 +44,9 @@
 | 
				
			|||||||
            </ion-item>
 | 
					            </ion-item>
 | 
				
			||||||
        </ion-card>
 | 
					        </ion-card>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <h3 class="ion-margin-horizontal" *ngIf="competencies && competencies.statistics.competencycount > 0">
 | 
					        <h2 class="ion-margin-horizontal" *ngIf="competencies && competencies.statistics.competencycount > 0">
 | 
				
			||||||
            {{ 'addon.competency.coursecompetencies' | translate }}
 | 
					            {{ 'addon.competency.coursecompetencies' | translate }}
 | 
				
			||||||
        </h3>
 | 
					        </h2>
 | 
				
			||||||
        <ion-card *ngIf="user">
 | 
					        <ion-card *ngIf="user">
 | 
				
			||||||
             <ion-item class="ion-text-wrap">
 | 
					             <ion-item class="ion-text-wrap">
 | 
				
			||||||
                <core-user-avatar [user]="user" slot="start"></core-user-avatar>
 | 
					                <core-user-avatar [user]="user" slot="start"></core-user-avatar>
 | 
				
			||||||
@ -62,7 +62,9 @@
 | 
				
			|||||||
                <ion-item class="ion-text-wrap" (click)="openCompetency(competency.competency.id)"
 | 
					                <ion-item class="ion-text-wrap" (click)="openCompetency(competency.competency.id)"
 | 
				
			||||||
                    [attr.aria-label]="competency.competency.shortname" detail="true" button>
 | 
					                    [attr.aria-label]="competency.competency.shortname" detail="true" button>
 | 
				
			||||||
                    <ion-label>
 | 
					                    <ion-label>
 | 
				
			||||||
                        <h2><strong>{{competency.competency.shortname}} <em>{{competency.competency.idnumber}}</em></strong></h2>
 | 
					                        <p class="item-heading">
 | 
				
			||||||
 | 
					                            <strong>{{competency.competency.shortname}} <em>{{competency.competency.idnumber}}</em></strong>
 | 
				
			||||||
 | 
					                        </p>
 | 
				
			||||||
                    </ion-label>
 | 
					                    </ion-label>
 | 
				
			||||||
                    <ion-badge slot="end" *ngIf="competency.usercompetencycourse && competency.usercompetencycourse.gradename"
 | 
					                    <ion-badge slot="end" *ngIf="competency.usercompetencycourse && competency.usercompetencycourse.gradename"
 | 
				
			||||||
                        [color]="competency.usercompetencycourse.proficiency ? 'success' : 'danger'">
 | 
					                        [color]="competency.usercompetencycourse.proficiency ? 'success' : 'danger'">
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title *ngIf="plan">{{plan.plan.name}}</ion-title>
 | 
					        <h1 *ngIf="plan">{{plan.plan.name}}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
@ -78,7 +78,9 @@
 | 
				
			|||||||
                <ion-item class="ion-text-wrap" *ngFor="let competency of plan.competencies"
 | 
					                <ion-item class="ion-text-wrap" *ngFor="let competency of plan.competencies"
 | 
				
			||||||
                    (click)="openCompetency(competency.competency.id)"
 | 
					                    (click)="openCompetency(competency.competency.id)"
 | 
				
			||||||
                    [attr.aria-label]="competency.competency.shortname" detail="true" button>
 | 
					                    [attr.aria-label]="competency.competency.shortname" detail="true" button>
 | 
				
			||||||
                    <ion-label><h2>{{competency.competency.shortname}} <em>{{competency.competency.idnumber}}</em></h2></ion-label>
 | 
					                    <ion-label>
 | 
				
			||||||
 | 
					                        <p class="item-heading">{{competency.competency.shortname}} <em>{{competency.competency.idnumber}}</em></p>
 | 
				
			||||||
 | 
					                    </ion-label>
 | 
				
			||||||
                    <ion-badge *ngIf="competency.usercompetencyplan" slot="end"
 | 
					                    <ion-badge *ngIf="competency.usercompetencyplan" slot="end"
 | 
				
			||||||
                        [color]="competency.usercompetencyplan.proficiency ? 'success' : 'danger'">
 | 
					                        [color]="competency.usercompetencyplan.proficiency ? 'success' : 'danger'">
 | 
				
			||||||
                            {{ competency.usercompetencyplan.gradename }}
 | 
					                            {{ competency.usercompetencyplan.gradename }}
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.competency.userplans' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.competency.userplans' | translate }}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
@ -19,7 +19,7 @@
 | 
				
			|||||||
                <ion-item class="ion-text-wrap" *ngFor="let plan of plans.items" [attr.aria-label]="plan.name"
 | 
					                <ion-item class="ion-text-wrap" *ngFor="let plan of plans.items" [attr.aria-label]="plan.name"
 | 
				
			||||||
                    (click)="plans.select(plan)" [attr.aria-current]="plans.getItemAriaCurrent(plan)" button>
 | 
					                    (click)="plans.select(plan)" [attr.aria-current]="plans.getItemAriaCurrent(plan)" button>
 | 
				
			||||||
                    <ion-label>
 | 
					                    <ion-label>
 | 
				
			||||||
                        <h2>{{ plan.name }}</h2>
 | 
					                        <p class="item-heading">{{ plan.name }}</p>
 | 
				
			||||||
                        <p *ngIf="plan.duedate > 0">
 | 
					                        <p *ngIf="plan.duedate > 0">
 | 
				
			||||||
                            {{ 'addon.competency.duedate' | translate }}: 
 | 
					                            {{ 'addon.competency.duedate' | translate }}: 
 | 
				
			||||||
                            {{ plan.duedate * 1000 | coreFormatDate :'strftimedatetimeshort' }}
 | 
					                            {{ plan.duedate * 1000 | coreFormatDate :'strftimedatetimeshort' }}
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.coursecompletion.coursecompletion' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.coursecompletion.coursecompletion' | translate }}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
@ -32,7 +32,9 @@
 | 
				
			|||||||
            </ion-item-divider>
 | 
					            </ion-item-divider>
 | 
				
			||||||
            <ion-item class="ion-hide-md-up ion-text-wrap" *ngFor="let criteria of completion.completions">
 | 
					            <ion-item class="ion-hide-md-up ion-text-wrap" *ngFor="let criteria of completion.completions">
 | 
				
			||||||
                <ion-label>
 | 
					                <ion-label>
 | 
				
			||||||
                    <h2><core-format-text clean="true" [text]="criteria.details.criteria" [filter]="false"></core-format-text></h2>
 | 
					                    <p class="item-heading">
 | 
				
			||||||
 | 
					                        <core-format-text clean="true" [text]="criteria.details.criteria" [filter]="false"></core-format-text>
 | 
				
			||||||
 | 
					                    </p>
 | 
				
			||||||
                    <p><core-format-text clean="true" [text]="criteria.details.requirement" [filter]="false"></core-format-text></p>
 | 
					                    <p><core-format-text clean="true" [text]="criteria.details.requirement" [filter]="false"></core-format-text></p>
 | 
				
			||||||
                </ion-label>
 | 
					                </ion-label>
 | 
				
			||||||
                <strong slot="end">{{ criteria.status }}</strong>
 | 
					                <strong slot="end">{{ criteria.status }}</strong>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.messageoutput_airnotifier.processorsettingsdesc' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.messageoutput_airnotifier.processorsettingsdesc' | translate }}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
<ion-header>
 | 
					<ion-header>
 | 
				
			||||||
    <ion-toolbar>
 | 
					    <ion-toolbar>
 | 
				
			||||||
        <ion-title>{{ 'addon.messages.groupinfo' | translate }}</ion-title>
 | 
					        <h2>{{ 'addon.messages.groupinfo' | translate }}</h2>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
					            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
				
			||||||
                <ion-icon name="fas-times" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
					                <ion-icon name="fas-times" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
				
			||||||
@ -37,12 +37,12 @@
 | 
				
			|||||||
            <core-user-avatar [user]="member" [linkProfile]="false" [checkOnline]="member.showonlinestatus" slot="start">
 | 
					            <core-user-avatar [user]="member" [linkProfile]="false" [checkOnline]="member.showonlinestatus" slot="start">
 | 
				
			||||||
            </core-user-avatar>
 | 
					            </core-user-avatar>
 | 
				
			||||||
            <ion-label>
 | 
					            <ion-label>
 | 
				
			||||||
                <h2>
 | 
					                <p class="item-heading">
 | 
				
			||||||
                    {{ member.fullname }}
 | 
					                    {{ member.fullname }}
 | 
				
			||||||
                    <ion-icon name="fas-user-slash" *ngIf="member.isblocked"
 | 
					                    <ion-icon name="fas-user-slash" *ngIf="member.isblocked"
 | 
				
			||||||
                        [attr.aria-label]="'addon.messages.contactblocked' | translate">
 | 
					                        [attr.aria-label]="'addon.messages.contactblocked' | translate">
 | 
				
			||||||
                    </ion-icon>
 | 
					                    </ion-icon>
 | 
				
			||||||
                </h2>
 | 
					                </p>
 | 
				
			||||||
            </ion-label>
 | 
					            </ion-label>
 | 
				
			||||||
        </ion-item>
 | 
					        </ion-item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,7 @@
 | 
				
			|||||||
            margin-left: 0;
 | 
					            margin-left: 0;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        h2 {
 | 
					        .item-heading {
 | 
				
			||||||
            core-format-text {
 | 
					            core-format-text {
 | 
				
			||||||
                font-weight: bold;
 | 
					                font-weight: bold;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -52,7 +52,7 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .addon-message-discussion {
 | 
					    .addon-message-discussion {
 | 
				
			||||||
        h2 {
 | 
					        .item-heading {
 | 
				
			||||||
            margin-top: 10px;
 | 
					            margin-top: 10px;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -66,7 +66,7 @@
 | 
				
			|||||||
:host-context([dir=rtl]) {
 | 
					:host-context([dir=rtl]) {
 | 
				
			||||||
    .addon-messages-conversation-item,
 | 
					    .addon-messages-conversation-item,
 | 
				
			||||||
    .addon-message-discussion {
 | 
					    .addon-message-discussion {
 | 
				
			||||||
        h2 ion-icon {
 | 
					        .item-heading ion-icon {
 | 
				
			||||||
            margin-right: 2px;
 | 
					            margin-right: 2px;
 | 
				
			||||||
            margin-left: 0;
 | 
					            margin-left: 0;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.messages.contacts' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.messages.contacts' | translate }}</h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- Add an empty context menu so discussion page can add items in split view,
 | 
					            <!-- Add an empty context menu so discussion page can add items in split view,
 | 
				
			||||||
                otherwise the menu disappears in some cases. -->
 | 
					                otherwise the menu disappears in some cases. -->
 | 
				
			||||||
@ -31,7 +31,7 @@
 | 
				
			|||||||
            <ion-list *ngFor="let contactType of contactTypes" class="ion-no-margin">
 | 
					            <ion-list *ngFor="let contactType of contactTypes" class="ion-no-margin">
 | 
				
			||||||
                <ng-container *ngIf="contacts[contactType] && (contacts[contactType].length > 0 || contactType === searchType)">
 | 
					                <ng-container *ngIf="contacts[contactType] && (contacts[contactType].length > 0 || contactType === searchType)">
 | 
				
			||||||
                    <ion-item-divider>
 | 
					                    <ion-item-divider>
 | 
				
			||||||
                        <ion-label><h2>{{ 'addon.messages.type_' + contactType | translate }}</h2></ion-label>
 | 
					                        <ion-label><p class="item-heading">{{ 'addon.messages.type_' + contactType | translate }}</p></ion-label>
 | 
				
			||||||
                        <ion-note slot="end" class="ion-padding-end"><ion-badge>{{ contacts[contactType].length }}</ion-badge></ion-note>
 | 
					                        <ion-note slot="end" class="ion-padding-end"><ion-badge>{{ contacts[contactType].length }}</ion-badge></ion-note>
 | 
				
			||||||
                    </ion-item-divider>
 | 
					                    </ion-item-divider>
 | 
				
			||||||
                    <ng-container *ngFor="let contact of contacts[contactType]">
 | 
					                    <ng-container *ngFor="let contact of contacts[contactType]">
 | 
				
			||||||
@ -41,7 +41,7 @@
 | 
				
			|||||||
                            [attr.aria-label]="contact.fullname" (click)="gotoDiscussion(contact.id)" detail="true" button
 | 
					                            [attr.aria-label]="contact.fullname" (click)="gotoDiscussion(contact.id)" detail="true" button
 | 
				
			||||||
                            [attr.aria-current]="contact.id == discussionUserId ? 'page' : 'false'">
 | 
					                            [attr.aria-current]="contact.id == discussionUserId ? 'page' : 'false'">
 | 
				
			||||||
                            <core-user-avatar [user]="contact" slot="start" [checkOnline]="contact.showonlinestatus"></core-user-avatar>
 | 
					                            <core-user-avatar [user]="contact" slot="start" [checkOnline]="contact.showonlinestatus"></core-user-avatar>
 | 
				
			||||||
                            <ion-label><h2>{{ contact.fullname }}</h2></ion-label>
 | 
					                            <ion-label><p class="item-heading">{{ contact.fullname }}</p></ion-label>
 | 
				
			||||||
                        </ion-item>
 | 
					                        </ion-item>
 | 
				
			||||||
                    </ng-container>
 | 
					                    </ng-container>
 | 
				
			||||||
                </ng-container>
 | 
					                </ng-container>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.messages.contacts' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.messages.contacts' | translate }}</h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="gotoSearch()" [attr.aria-label]="'addon.messages.searchcombined' | translate">
 | 
					            <ion-button fill="clear" (click)="gotoSearch()" [attr.aria-label]="'addon.messages.searchcombined' | translate">
 | 
				
			||||||
                <ion-icon name="fas-search" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
					                <ion-icon name="fas-search" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
				
			||||||
@ -33,13 +33,13 @@
 | 
				
			|||||||
                                    [checkOnline]="contact.showonlinestatus" [linkProfile]="false">
 | 
					                                    [checkOnline]="contact.showonlinestatus" [linkProfile]="false">
 | 
				
			||||||
                                </core-user-avatar>
 | 
					                                </core-user-avatar>
 | 
				
			||||||
                                <ion-label>
 | 
					                                <ion-label>
 | 
				
			||||||
                                    <h2>
 | 
					                                    <p class="item-heading">
 | 
				
			||||||
                                        <core-format-text [text]="contact.fullname" contextLevel="system" [contextInstanceId]="0">
 | 
					                                        <core-format-text [text]="contact.fullname" contextLevel="system" [contextInstanceId]="0">
 | 
				
			||||||
                                        </core-format-text>
 | 
					                                        </core-format-text>
 | 
				
			||||||
                                        <ion-icon *ngIf="contact.isblocked" name="fas-user-slash" slot="end"
 | 
					                                        <ion-icon *ngIf="contact.isblocked" name="fas-user-slash" slot="end"
 | 
				
			||||||
                                            [attr.aria-label]="'addon.messages.contactblocked' | translate">
 | 
					                                            [attr.aria-label]="'addon.messages.contactblocked' | translate">
 | 
				
			||||||
                                        </ion-icon>
 | 
					                                        </ion-icon>
 | 
				
			||||||
                                    </h2>
 | 
					                                    </p>
 | 
				
			||||||
                                </ion-label>
 | 
					                                </ion-label>
 | 
				
			||||||
                            </ion-item>
 | 
					                            </ion-item>
 | 
				
			||||||
                        </ion-list>
 | 
					                        </ion-list>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,8 +3,8 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <div class="toolbar-title">
 | 
					            <div class="addon-messages-discussion-title">
 | 
				
			||||||
                <img *ngIf="loaded && !otherMember && conversationImage" class="core-bar-button-image" [src]="conversationImage"
 | 
					                <img *ngIf="loaded && !otherMember && conversationImage" class="core-bar-button-image" [src]="conversationImage"
 | 
				
			||||||
                    alt="" onError="this.src='assets/img/group-avatar.png'" core-external-content role="presentation"
 | 
					                    alt="" onError="this.src='assets/img/group-avatar.png'" core-external-content role="presentation"
 | 
				
			||||||
                    [siteId]="siteId || null">
 | 
					                    [siteId]="siteId || null">
 | 
				
			||||||
@ -20,7 +20,7 @@
 | 
				
			|||||||
                    [attr.aria-label]="'addon.messages.mutedconversation' | translate">
 | 
					                    [attr.aria-label]="'addon.messages.mutedconversation' | translate">
 | 
				
			||||||
                </ion-icon>
 | 
					                </ion-icon>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end"></ion-buttons>
 | 
					        <ion-buttons slot="end"></ion-buttons>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
    <core-navbar-buttons slot="end">
 | 
					    <core-navbar-buttons slot="end">
 | 
				
			||||||
@ -73,12 +73,14 @@
 | 
				
			|||||||
            <p class="ion-text-center"><i>{{ 'addon.messages.selfconversationdefaultmessage' | translate }}</i></p>
 | 
					            <p class="ion-text-center"><i>{{ 'addon.messages.selfconversationdefaultmessage' | translate }}</i></p>
 | 
				
			||||||
        </ng-container>
 | 
					        </ng-container>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <h2 class="sr-only">{{ title }}</h2>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-list class="addon-messages-discussion-container" [class.addon-messages-discussion-group]="isGroup"
 | 
					        <ion-list class="addon-messages-discussion-container" [class.addon-messages-discussion-group]="isGroup"
 | 
				
			||||||
            [attr.aria-live]="'polite'">
 | 
					            [attr.aria-live]="'polite'">
 | 
				
			||||||
            <ng-container *ngFor="let message of messages; index as index; last as last">
 | 
					            <ng-container *ngFor="let message of messages; index as index; last as last">
 | 
				
			||||||
                <h6 class="ion-text-center addon-messages-date" *ngIf="message.showDate">
 | 
					                <h3 class="ion-text-center addon-messages-date" *ngIf="message.showDate">
 | 
				
			||||||
                    {{ message.timecreated | coreFormatDate: "strftimedayshort" }}
 | 
					                    {{ message.timecreated | coreFormatDate: "strftimedayshort" }}
 | 
				
			||||||
                </h6>
 | 
					                </h3>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <ion-chip class="addon-messages-unreadfrom" *ngIf="unreadMessageFrom && message.id == unreadMessageFrom"
 | 
					                <ion-chip class="addon-messages-unreadfrom" *ngIf="unreadMessageFrom && message.id == unreadMessageFrom"
 | 
				
			||||||
                    color="light">
 | 
					                    color="light">
 | 
				
			||||||
@ -93,7 +95,7 @@
 | 
				
			|||||||
                    [@coreSlideInOut]="message.useridfrom == currentUserId ? '' : 'fromLeft'">
 | 
					                    [@coreSlideInOut]="message.useridfrom == currentUserId ? '' : 'fromLeft'">
 | 
				
			||||||
                    <ion-label>
 | 
					                    <ion-label>
 | 
				
			||||||
                        <!-- User data. -->
 | 
					                        <!-- User data. -->
 | 
				
			||||||
                        <h2 class="addon-message-user" [attr.aria-label]="message.useridfrom == currentUserId ?
 | 
					                        <div class="item-heading addon-message-user" [attr.aria-label]="message.useridfrom == currentUserId ?
 | 
				
			||||||
                            ('addon.messages.you' | translate) : members[message.useridfrom].fullname">
 | 
					                            ('addon.messages.you' | translate) : members[message.useridfrom].fullname">
 | 
				
			||||||
                            <core-user-avatar slot="start" [user]="members[message.useridfrom]" [linkProfile]="false"
 | 
					                            <core-user-avatar slot="start" [user]="members[message.useridfrom]" [linkProfile]="false"
 | 
				
			||||||
                                *ngIf="message.showUserData"></core-user-avatar>
 | 
					                                *ngIf="message.showUserData"></core-user-avatar>
 | 
				
			||||||
@ -104,7 +106,7 @@
 | 
				
			|||||||
                            <ion-note *ngIf="message.pending">
 | 
					                            <ion-note *ngIf="message.pending">
 | 
				
			||||||
                                <ion-icon name="fas-clock" [attr.aria-label]="'core.notsent' | translate" role="status"></ion-icon>
 | 
					                                <ion-icon name="fas-clock" [attr.aria-label]="'core.notsent' | translate" role="status"></ion-icon>
 | 
				
			||||||
                            </ion-note>
 | 
					                            </ion-note>
 | 
				
			||||||
                        </h2>
 | 
					                        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        <!-- Some messages have <p> and some others don't. Add a <p> so they all have same styles. -->
 | 
					                        <!-- Some messages have <p> and some others don't. Add a <p> so they all have same styles. -->
 | 
				
			||||||
                        <p class="addon-message-text">
 | 
					                        <p class="addon-message-text">
 | 
				
			||||||
 | 
				
			|||||||
@ -183,7 +183,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    ion-item.addon-message.addon-message-mine + ion-item.addon-message.addon-message-no-user.addon-message-mine,
 | 
					    ion-item.addon-message.addon-message-mine + ion-item.addon-message.addon-message-no-user.addon-message-mine,
 | 
				
			||||||
    ion-item.addon-message.addon-message-not-mine + ion-item.addon-message.addon-message-no-user.addon-message-not-mine {
 | 
					    ion-item.addon-message.addon-message-not-mine + ion-item.addon-message.addon-message-no-user.addon-message-not-mine {
 | 
				
			||||||
        h2 {
 | 
					        .item-heading {
 | 
				
			||||||
            margin-bottom: 0;
 | 
					            margin-bottom: 0;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        margin-top: -8px;
 | 
					        margin-top: -8px;
 | 
				
			||||||
@ -217,7 +217,7 @@
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ion-header ion-toolbar .toolbar-title {
 | 
					    ion-header ion-toolbar .addon-messages-discussion-title {
 | 
				
			||||||
        display: flex;
 | 
					        display: flex;
 | 
				
			||||||
        align-items: center;
 | 
					        align-items: center;
 | 
				
			||||||
        padding: 0;
 | 
					        padding: 0;
 | 
				
			||||||
@ -240,7 +240,7 @@
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:host-context([dir=rtl]) {
 | 
					:host-context([dir=rtl]) {
 | 
				
			||||||
    ion-header ion-toolbar .toolbar-title {
 | 
					    ion-header ion-toolbar .addon-messages-discussion-title {
 | 
				
			||||||
        .core-bar-button-image {
 | 
					        .core-bar-button-image {
 | 
				
			||||||
            margin-left: 6px;
 | 
					            margin-left: 6px;
 | 
				
			||||||
            margin-right: 0;
 | 
					            margin-right: 0;
 | 
				
			||||||
@ -291,7 +291,7 @@
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:host-context(.ios) {
 | 
					:host-context(.ios) {
 | 
				
			||||||
    ion-header ion-toolbar .toolbar-title {
 | 
					    ion-header ion-toolbar .addon-messages-discussion-title {
 | 
				
			||||||
        justify-content: center;
 | 
					        justify-content: center;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.messages.messages' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.messages.messages' | translate }}</h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- Add an empty context menu so discussion page can add items in split view,
 | 
					            <!-- Add an empty context menu so discussion page can add items in split view,
 | 
				
			||||||
                otherwise the menu disappears in some cases. -->
 | 
					                otherwise the menu disappears in some cases. -->
 | 
				
			||||||
@ -43,7 +43,7 @@
 | 
				
			|||||||
                        [attr.aria-current]="result.userid == discussionUserId ? 'page' : 'false'">
 | 
					                        [attr.aria-current]="result.userid == discussionUserId ? 'page' : 'false'">
 | 
				
			||||||
                        <core-user-avatar [user]="result" slot="start" [checkOnline]="result.showonlinestatus"></core-user-avatar>
 | 
					                        <core-user-avatar [user]="result" slot="start" [checkOnline]="result.showonlinestatus"></core-user-avatar>
 | 
				
			||||||
                        <ion-label>
 | 
					                        <ion-label>
 | 
				
			||||||
                                <h2>{{ result.fullname }}</h2>
 | 
					                            <p class="item-heading">{{ result.fullname }}</p>
 | 
				
			||||||
                            <p><core-format-text clean="true" singleLine="true" [text]="result.lastmessage" contextLevel="system"
 | 
					                            <p><core-format-text clean="true" singleLine="true" [text]="result.lastmessage" contextLevel="system"
 | 
				
			||||||
                                [contextInstanceId]="0"></core-format-text></p>
 | 
					                                [contextInstanceId]="0"></core-format-text></p>
 | 
				
			||||||
                        </ion-label>
 | 
					                        </ion-label>
 | 
				
			||||||
@ -56,7 +56,7 @@
 | 
				
			|||||||
                        <core-user-avatar [user]="discussion" slot="start" checkOnline="false"></core-user-avatar>
 | 
					                        <core-user-avatar [user]="discussion" slot="start" checkOnline="false"></core-user-avatar>
 | 
				
			||||||
                        <ion-label>
 | 
					                        <ion-label>
 | 
				
			||||||
                            <div class="flex-row ion-justify-content-between">
 | 
					                            <div class="flex-row ion-justify-content-between">
 | 
				
			||||||
                                <h2>{{ discussion.fullname }}</h2>
 | 
					                                <p class="item-heading">{{ discussion.fullname }}</p>
 | 
				
			||||||
                                <ion-note *ngIf="discussion.message!.timecreated > 0 || discussion.unread">
 | 
					                                <ion-note *ngIf="discussion.message!.timecreated > 0 || discussion.unread">
 | 
				
			||||||
                                    <span *ngIf="discussion.message!.timecreated > 0" class="addon-message-last-message-date">
 | 
					                                    <span *ngIf="discussion.message!.timecreated > 0" class="addon-message-last-message-date">
 | 
				
			||||||
                                        {{discussion.message!.timecreated / 1000 | coreDateDayOrTime}}
 | 
					                                        {{discussion.message!.timecreated / 1000 | coreDateDayOrTime}}
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.messages.messages' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.messages.messages' | translate }}</h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="gotoSearch()" [attr.aria-label]="'addon.messages.searchcombined' | translate">
 | 
					            <ion-button fill="clear" (click)="gotoSearch()" [attr.aria-label]="'addon.messages.searchcombined' | translate">
 | 
				
			||||||
                <ion-icon name="fas-search" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
					                <ion-icon name="fas-search" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
				
			||||||
@ -163,13 +163,13 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        <ion-label>
 | 
					        <ion-label>
 | 
				
			||||||
            <div class="flex-row ion-justify-content-between">
 | 
					            <div class="flex-row ion-justify-content-between">
 | 
				
			||||||
                <h2>
 | 
					                <p class="item-heading">
 | 
				
			||||||
                    <core-format-text [text]="conversation.name" contextLevel="system" [contextInstanceId]="0"></core-format-text>
 | 
					                    <core-format-text [text]="conversation.name" contextLevel="system" [contextInstanceId]="0"></core-format-text>
 | 
				
			||||||
                    <ion-icon name="fas-user-slash" *ngIf="conversation.isblocked"
 | 
					                    <ion-icon name="fas-user-slash" *ngIf="conversation.isblocked"
 | 
				
			||||||
                        [title]="'addon.messages.contactblocked' | translate"></ion-icon>
 | 
					                        [title]="'addon.messages.contactblocked' | translate"></ion-icon>
 | 
				
			||||||
                    <ion-icon *ngIf="conversation.ismuted" name="fas-volume-mute"
 | 
					                    <ion-icon *ngIf="conversation.ismuted" name="fas-volume-mute"
 | 
				
			||||||
                        [title]="'addon.messages.mutedconversation' | translate"></ion-icon>
 | 
					                        [title]="'addon.messages.mutedconversation' | translate"></ion-icon>
 | 
				
			||||||
                </h2>
 | 
					                </p>
 | 
				
			||||||
                <ion-note *ngIf="conversation.lastmessagedate > 0 || conversation.unreadcount">
 | 
					                <ion-note *ngIf="conversation.lastmessagedate > 0 || conversation.unreadcount">
 | 
				
			||||||
                    <span *ngIf="conversation.lastmessagedate > 0" class="addon-message-last-message-date">
 | 
					                    <span *ngIf="conversation.lastmessagedate > 0" class="addon-message-last-message-date">
 | 
				
			||||||
                        {{conversation.lastmessagedate | coreDateDayOrTime}}
 | 
					                        {{conversation.lastmessagedate | coreDateDayOrTime}}
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.messages.searchcombined' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.messages.searchcombined' | translate }}</h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- Add an empty context menu so discussion page can add items in split view,
 | 
					            <!-- Add an empty context menu so discussion page can add items in split view,
 | 
				
			||||||
                otherwise the menu disappears in some cases. -->
 | 
					                otherwise the menu disappears in some cases. -->
 | 
				
			||||||
@ -47,13 +47,13 @@
 | 
				
			|||||||
            button>
 | 
					            button>
 | 
				
			||||||
            <core-user-avatar slot="start" [user]="result" [checkOnline]="true" [linkProfile]="false"></core-user-avatar>
 | 
					            <core-user-avatar slot="start" [user]="result" [checkOnline]="true" [linkProfile]="false"></core-user-avatar>
 | 
				
			||||||
            <ion-label>
 | 
					            <ion-label>
 | 
				
			||||||
                <h2>
 | 
					                <p class="item-heading">
 | 
				
			||||||
                    <core-format-text [text]="result.fullname" [highlight]="result.highlightName" [filter]="false">
 | 
					                    <core-format-text [text]="result.fullname" [highlight]="result.highlightName" [filter]="false">
 | 
				
			||||||
                    </core-format-text>
 | 
					                    </core-format-text>
 | 
				
			||||||
                    <ion-icon name="fa-ban" *ngIf="result.isblocked"
 | 
					                    <ion-icon name="fa-ban" *ngIf="result.isblocked"
 | 
				
			||||||
                        [attr.aria-label]="'addon.messages.contactblocked' | translate">
 | 
					                        [attr.aria-label]="'addon.messages.contactblocked' | translate">
 | 
				
			||||||
                    </ion-icon>
 | 
					                    </ion-icon>
 | 
				
			||||||
                </h2>
 | 
					                </p>
 | 
				
			||||||
                <ion-note *ngIf="result.lastmessagedate > 0">
 | 
					                <ion-note *ngIf="result.lastmessagedate > 0">
 | 
				
			||||||
                    {{result.lastmessagedate | coreDateDayOrTime}}
 | 
					                    {{result.lastmessagedate | coreDateDayOrTime}}
 | 
				
			||||||
                </ion-note>
 | 
					                </ion-note>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.messages.messages' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.messages.messages' | translate }}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
<ion-header>
 | 
					<ion-header>
 | 
				
			||||||
    <ion-toolbar>
 | 
					    <ion-toolbar>
 | 
				
			||||||
        <ion-title>{{ plugin.name }}</ion-title>
 | 
					        <h2>{{ plugin.name }}</h2>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
					            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
				
			||||||
                <ion-icon slot="icon-only" name="fas-times" aria-hidden="true"></ion-icon>
 | 
					                <ion-icon slot="icon-only" name="fas-times" aria-hidden="true"></ion-icon>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="moduleId" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="moduleId" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="save()" [attr.aria-label]="'core.save' | translate">
 | 
					            <ion-button fill="clear" (click)="save()" [attr.aria-label]="'core.save' | translate">
 | 
				
			||||||
                {{ 'core.save' | translate }}
 | 
					                {{ 'core.save' | translate }}
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="moduleId" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="moduleId" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end"></ion-buttons>
 | 
					        <ion-buttons slot="end"></ion-buttons>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
@ -43,10 +43,10 @@
 | 
				
			|||||||
                        [attr.aria-current]="submissions.getItemAriaCurrent(submission)">
 | 
					                        [attr.aria-current]="submissions.getItemAriaCurrent(submission)">
 | 
				
			||||||
                        <core-user-avatar [user]="submission" [linkProfile]="false" slot="start"></core-user-avatar>
 | 
					                        <core-user-avatar [user]="submission" [linkProfile]="false" slot="start"></core-user-avatar>
 | 
				
			||||||
                        <ion-label>
 | 
					                        <ion-label>
 | 
				
			||||||
                            <h2 *ngIf="submission.userfullname">{{submission.userfullname}}</h2>
 | 
					                            <p class="item-heading" *ngIf="submission.userfullname">{{submission.userfullname}}</p>
 | 
				
			||||||
                            <h2 *ngIf="!submission.userfullname">
 | 
					                            <p class="item-heading" *ngIf="!submission.userfullname">
 | 
				
			||||||
                                {{ 'addon.mod_assign.hiddenuser' | translate }}{{submission.blindid}}
 | 
					                                {{ 'addon.mod_assign.hiddenuser' | translate }}{{submission.blindid}}
 | 
				
			||||||
                            </h2>
 | 
					                            </p>
 | 
				
			||||||
                            <p *ngIf="assign && assign!.teamsubmission">
 | 
					                            <p *ngIf="assign && assign!.teamsubmission">
 | 
				
			||||||
                                <span *ngIf="submission.groupname">{{submission.groupname}}</span>
 | 
					                                <span *ngIf="submission.groupname">{{submission.groupname}}</span>
 | 
				
			||||||
                                <span *ngIf="assign!.preventsubmissionnotingroup && !submission.groupname && submission.noGroups
 | 
					                                <span *ngIf="assign!.preventsubmissionnotingroup && !submission.groupname && submission.noGroups
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="moduleId" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="moduleId" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end"></ion-buttons>
 | 
					        <ion-buttons slot="end"></ion-buttons>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
<ion-header>
 | 
					<ion-header>
 | 
				
			||||||
    <ion-toolbar>
 | 
					    <ion-toolbar>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_book.toc' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.mod_book.toc' | translate }}</h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
					            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
				
			||||||
                <ion-icon name="fas-times" slot="icon-only" aria-hidden=true></ion-icon>
 | 
					                <ion-icon name="fas-times" slot="icon-only" aria-hidden=true></ion-icon>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_chat.currentusers' | translate }}</ion-title>
 | 
					        <h2>{{ 'addon.mod_chat.currentusers' | translate }}</h2>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
					            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
				
			||||||
                <ion-icon slot="icon-only" name="fas-times" aria-hidden="true"></ion-icon>
 | 
					                <ion-icon slot="icon-only" name="fas-times" aria-hidden="true"></ion-icon>
 | 
				
			||||||
@ -18,7 +18,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            <core-user-avatar [user]="user" slot="start" [linkProfile]="false"></core-user-avatar>
 | 
					            <core-user-avatar [user]="user" slot="start" [linkProfile]="false"></core-user-avatar>
 | 
				
			||||||
            <ion-label>
 | 
					            <ion-label>
 | 
				
			||||||
                <h2>{{ user.fullname }}</h2>
 | 
					                <p class="item-heading">{{ user.fullname }}</p>
 | 
				
			||||||
                <ng-container *ngIf="currentUserId != user.id && isOnline">
 | 
					                <ng-container *ngIf="currentUserId != user.id && isOnline">
 | 
				
			||||||
                    <ion-button fill="clear" (click)="talkTo(user)">
 | 
					                    <ion-button fill="clear" (click)="talkTo(user)">
 | 
				
			||||||
                        <ion-icon name="fas-comments" slot="start" aria-hidden="true"></ion-icon>
 | 
					                        <ion-icon name="fas-comments" slot="start" aria-hidden="true"></ion-icon>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="cmId" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="cmId" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" *ngIf="loaded" (click)="showChatUsers()" [attr.aria-label]="'core.users' | translate">
 | 
					            <ion-button fill="clear" *ngIf="loaded" (click)="showChatUsers()" [attr.aria-label]="'core.users' | translate">
 | 
				
			||||||
                <ion-icon name="fas-users" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
					                <ion-icon name="fas-users" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
				
			||||||
@ -19,9 +19,9 @@
 | 
				
			|||||||
        <ion-list class="addon-messages-discussion-container" aria-live="polite">
 | 
					        <ion-list class="addon-messages-discussion-container" aria-live="polite">
 | 
				
			||||||
            <ng-container *ngFor="let message of messages; index as index; last as last">
 | 
					            <ng-container *ngFor="let message of messages; index as index; last as last">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <h6 class="ion-text-center addon-messages-date" *ngIf="message.showDate">
 | 
					                <p class="ion-text-center addon-messages-date" *ngIf="message.showDate">
 | 
				
			||||||
                    {{ message.timestamp * 1000 | coreFormatDate: "strftimedayshort" }}
 | 
					                    {{ message.timestamp * 1000 | coreFormatDate: "strftimedayshort" }}
 | 
				
			||||||
                </h6>
 | 
					                </p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <div class="ion-text-center addon-mod_chat-notice" *ngIf="message.special">
 | 
					                <div class="ion-text-center addon-mod_chat-notice" *ngIf="message.special">
 | 
				
			||||||
                    <ion-badge class="ion-text-wrap" color="success" *ngIf="message.system && message.message == 'enter'">
 | 
					                    <ion-badge class="ion-text-wrap" color="success" *ngIf="message.system && message.message == 'enter'">
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_chat.messages' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.mod_chat.messages' | translate }}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
@ -14,9 +14,9 @@
 | 
				
			|||||||
        <ion-list class="addon-messages-discussion-container" aria-live="polite">
 | 
					        <ion-list class="addon-messages-discussion-container" aria-live="polite">
 | 
				
			||||||
            <ng-container *ngFor="let message of messages; index as index;">
 | 
					            <ng-container *ngFor="let message of messages; index as index;">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <h6 class="ion-text-center addon-messages-date" *ngIf="message.showDate">
 | 
					                <div class="ion-text-center addon-messages-date" *ngIf="message.showDate">
 | 
				
			||||||
                    {{ message.timestamp * 1000 | coreFormatDate:"strftimedayshort" }}
 | 
					                    {{ message.timestamp * 1000 | coreFormatDate:"strftimedayshort" }}
 | 
				
			||||||
                </h6>
 | 
					                </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <div class="ion-text-center addon-mod_chat-notice" *ngIf="message.special">
 | 
					                <div class="ion-text-center addon-mod_chat-notice" *ngIf="message.special">
 | 
				
			||||||
                    <ion-badge class="ion-text-wrap" color="success" *ngIf="message.issystem && message.message == 'enter'">
 | 
					                    <ion-badge class="ion-text-wrap" color="success" *ngIf="message.issystem && message.message == 'enter'">
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_chat.chatreport' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.mod_chat.chatreport' | translate }}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
@ -36,7 +36,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                <ion-item class="ion-text-wrap">
 | 
					                <ion-item class="ion-text-wrap">
 | 
				
			||||||
                    <ion-label>
 | 
					                    <ion-label>
 | 
				
			||||||
                        <h2>{{ session.sessionstart * 1000 | coreFormatDate }}</h2>
 | 
					                        <p class="item-heading">{{ session.sessionstart * 1000 | coreFormatDate }}</p>
 | 
				
			||||||
                        <p *ngIf="session.duration">{{ session.duration | coreDuration }}</p>
 | 
					                        <p *ngIf="session.duration">{{ session.duration | coreDuration }}</p>
 | 
				
			||||||
                    </ion-label>
 | 
					                    </ion-label>
 | 
				
			||||||
                </ion-item>
 | 
					                </ion-item>
 | 
				
			||||||
 | 
				
			|||||||
@ -131,11 +131,11 @@
 | 
				
			|||||||
                    <ion-item-group *ngFor="let result of results">
 | 
					                    <ion-item-group *ngFor="let result of results">
 | 
				
			||||||
                        <ion-item-divider class="ion-text-wrap">
 | 
					                        <ion-item-divider class="ion-text-wrap">
 | 
				
			||||||
                            <ion-label>
 | 
					                            <ion-label>
 | 
				
			||||||
                                <h2>
 | 
					                                <h3 class="item-heading">
 | 
				
			||||||
                                    <core-format-text [text]="result.text" contextLevel="module" [contextInstanceId]="module.id"
 | 
					                                    <core-format-text [text]="result.text" contextLevel="module" [contextInstanceId]="module.id"
 | 
				
			||||||
                                        [courseId]="courseId">
 | 
					                                        [courseId]="courseId">
 | 
				
			||||||
                                    </core-format-text>
 | 
					                                    </core-format-text>
 | 
				
			||||||
                                </h2>
 | 
					                                </h3>
 | 
				
			||||||
                                <p>
 | 
					                                <p>
 | 
				
			||||||
                                    {{ 'addon.mod_choice.numberofuser' | translate }}: {{ result.numberofuser }}
 | 
					                                    {{ 'addon.mod_choice.numberofuser' | translate }}: {{ result.numberofuser }}
 | 
				
			||||||
                                    ({{ 'core.percentagenumber' | translate: {$a: result.percentageamountfixed} }})
 | 
					                                    ({{ 'core.percentagenumber' | translate: {$a: result.percentageamountfixed} }})
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_data.search' | translate }}</ion-title>
 | 
					        <h2>{{ 'addon.mod_data.search' | translate }}</h2>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
					            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
				
			||||||
                <ion-icon name="fas-times" slot="icon-only" aria-hidden=true></ion-icon>
 | 
					                <ion-icon name="fas-times" slot="icon-only" aria-hidden=true></ion-icon>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button *ngIf="entry" fill="clear" (click)="save($event)" [attr.aria-label]="'core.save' | translate">
 | 
					            <ion-button *ngIf="entry" fill="clear" (click)="save($event)" [attr.aria-label]="'core.save' | translate">
 | 
				
			||||||
                {{ 'core.save' | translate }}
 | 
					                {{ 'core.save' | translate }}
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
 | 
				
			|||||||
@ -204,11 +204,11 @@
 | 
				
			|||||||
            <ion-list *ngIf="items && items.length">
 | 
					            <ion-list *ngIf="items && items.length">
 | 
				
			||||||
                <ion-item class="ion-text-wrap core-analysis" *ngFor="let item of items">
 | 
					                <ion-item class="ion-text-wrap core-analysis" *ngFor="let item of items">
 | 
				
			||||||
                    <ion-label>
 | 
					                    <ion-label>
 | 
				
			||||||
                        <h2>
 | 
					                        <p class="item-heading">
 | 
				
			||||||
                            {{item.num}}. <core-format-text [component]="component" [componentId]="componentId" [text]="item.name"
 | 
					                            {{item.num}}. <core-format-text [component]="component" [componentId]="componentId" [text]="item.name"
 | 
				
			||||||
                            contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
					                            contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
				
			||||||
                            </core-format-text>
 | 
					                            </core-format-text>
 | 
				
			||||||
                        </h2>
 | 
					                        </p>
 | 
				
			||||||
                        <p>
 | 
					                        <p>
 | 
				
			||||||
                            <core-format-text [component]="component" [componentId]="componentId" [text]="item.label"
 | 
					                            <core-format-text [component]="component" [componentId]="componentId" [text]="item.label"
 | 
				
			||||||
                                contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
					                                contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
				
			||||||
 | 
				
			|||||||
@ -3,12 +3,12 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <ng-container *ngIf="attempt">{{ attempt.fullname }}</ng-container>
 | 
					            <ng-container *ngIf="attempt">{{ attempt.fullname }}</ng-container>
 | 
				
			||||||
            <ng-container *ngIf="anonAttempt">
 | 
					            <ng-container *ngIf="anonAttempt">
 | 
				
			||||||
                {{ 'addon.mod_feedback.response_nr' |translate }}: {{anonAttempt.number}}
 | 
					                {{ 'addon.mod_feedback.response_nr' |translate }}: {{anonAttempt.number}}
 | 
				
			||||||
            </ng-container>
 | 
					            </ng-container>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="cmId" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="cmId" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_feedback.responses' |translate }}</ion-title>
 | 
					        <h1>{{ 'addon.mod_feedback.responses' |translate }}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
@ -32,7 +32,7 @@
 | 
				
			|||||||
                <ion-item *ngFor="let user of users" class="ion-text-wrap">
 | 
					                <ion-item *ngFor="let user of users" class="ion-text-wrap">
 | 
				
			||||||
                    <core-user-avatar [user]="user" slot="start"></core-user-avatar>
 | 
					                    <core-user-avatar [user]="user" slot="start"></core-user-avatar>
 | 
				
			||||||
                    <ion-label>
 | 
					                    <ion-label>
 | 
				
			||||||
                        <h2>{{ user.fullname }}</h2>
 | 
					                        <p class="item-heading">{{ user.fullname }}</p>
 | 
				
			||||||
                        <p>
 | 
					                        <p>
 | 
				
			||||||
                            <ion-badge color="success" *ngIf="user.started">
 | 
					                            <ion-badge color="success" *ngIf="user.started">
 | 
				
			||||||
                                {{ 'addon.mod_feedback.started' | translate}}
 | 
					                                {{ 'addon.mod_feedback.started' | translate}}
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_feedback.responses' |translate }}</ion-title>
 | 
					        <h1>{{ 'addon.mod_feedback.responses' |translate }}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
@ -36,7 +36,7 @@
 | 
				
			|||||||
                        (click)="responses.select(attempt)" [attr.aria-current]="responses.getItemAriaCurrent(attempt)">
 | 
					                        (click)="responses.select(attempt)" [attr.aria-current]="responses.getItemAriaCurrent(attempt)">
 | 
				
			||||||
                        <core-user-avatar [user]="attempt" slot="start"></core-user-avatar>
 | 
					                        <core-user-avatar [user]="attempt" slot="start"></core-user-avatar>
 | 
				
			||||||
                        <ion-label>
 | 
					                        <ion-label>
 | 
				
			||||||
                            <h2>{{ attempt.fullname }}</h2>
 | 
					                            <p class="item-heading">{{ attempt.fullname }}</p>
 | 
				
			||||||
                            <p *ngIf="attempt.timemodified">{{attempt.timemodified * 1000 | coreFormatDate }}</p>
 | 
					                            <p *ngIf="attempt.timemodified">{{attempt.timemodified * 1000 | coreFormatDate }}</p>
 | 
				
			||||||
                        </ion-label>
 | 
					                        </ion-label>
 | 
				
			||||||
                    </ion-item>
 | 
					                    </ion-item>
 | 
				
			||||||
 | 
				
			|||||||
@ -39,7 +39,7 @@
 | 
				
			|||||||
            <ion-item class="item-file" (click)="openFolder(folder)" detail="true" button>
 | 
					            <ion-item class="item-file" (click)="openFolder(folder)" detail="true" button>
 | 
				
			||||||
                <ion-icon name="fas-folder" slot="start" [attr.aria-label]="'core.folder' | translate"></ion-icon>
 | 
					                <ion-icon name="fas-folder" slot="start" [attr.aria-label]="'core.folder' | translate"></ion-icon>
 | 
				
			||||||
                <ion-label>
 | 
					                <ion-label>
 | 
				
			||||||
                    <h2>{{folder.filename}}</h2>
 | 
					                    <p class="item-heading">{{folder.filename}}</p>
 | 
				
			||||||
                </ion-label>
 | 
					                </ion-label>
 | 
				
			||||||
            </ion-item>
 | 
					            </ion-item>
 | 
				
			||||||
        </ng-container>
 | 
					        </ng-container>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
<ion-header>
 | 
					<ion-header>
 | 
				
			||||||
    <ion-toolbar>
 | 
					    <ion-toolbar>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_forum.yourreply' | translate }}</ion-title>
 | 
					        <h2>{{ 'addon.mod_forum.yourreply' | translate }}</h2>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
					            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
				
			||||||
                <ion-icon name="fas-times" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
					                <ion-icon name="fas-times" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
				
			||||||
 | 
				
			|||||||
@ -89,7 +89,7 @@
 | 
				
			|||||||
                (click)="discussions.select(discussion)" button>
 | 
					                (click)="discussions.select(discussion)" button>
 | 
				
			||||||
                <ion-label>
 | 
					                <ion-label>
 | 
				
			||||||
                    <div class="addon-mod-forum-discussion-title">
 | 
					                    <div class="addon-mod-forum-discussion-title">
 | 
				
			||||||
                        <h2 class="ion-text-wrap">
 | 
					                        <p class="ion-text-wrap item-heading">
 | 
				
			||||||
                            <ion-icon name="fa-map-pin" *ngIf="discussion.pinned"
 | 
					                            <ion-icon name="fa-map-pin" *ngIf="discussion.pinned"
 | 
				
			||||||
                                [attr.aria-label]="'addon.mod_forum.discussionpinned' | translate"></ion-icon>
 | 
					                                [attr.aria-label]="'addon.mod_forum.discussionpinned' | translate"></ion-icon>
 | 
				
			||||||
                            <ion-icon name="fa-star" class="addon-forum-star" *ngIf="!discussion.pinned && discussion.starred"
 | 
					                            <ion-icon name="fa-star" class="addon-forum-star" *ngIf="!discussion.pinned && discussion.starred"
 | 
				
			||||||
@ -98,7 +98,7 @@
 | 
				
			|||||||
                                [text]="discussion.subject"
 | 
					                                [text]="discussion.subject"
 | 
				
			||||||
                                contextLevel="module" [contextInstanceId]="module && module.id" [courseId]="courseId">
 | 
					                                contextLevel="module" [contextInstanceId]="module && module.id" [courseId]="courseId">
 | 
				
			||||||
                            </core-format-text>
 | 
					                            </core-format-text>
 | 
				
			||||||
                        </h2>
 | 
					                        </p>
 | 
				
			||||||
                        <ion-button *ngIf="canPin || discussion.canlock || discussion.canfavourite"
 | 
					                        <ion-button *ngIf="canPin || discussion.canlock || discussion.canfavourite"
 | 
				
			||||||
                            fill="clear" color="dark"
 | 
					                            fill="clear" color="dark"
 | 
				
			||||||
                            [attr.aria-label]="('core.displayoptions' | translate)"
 | 
					                            [attr.aria-label]="('core.displayoptions' | translate)"
 | 
				
			||||||
@ -111,7 +111,7 @@
 | 
				
			|||||||
                        <core-user-avatar *ngIf="discussion.userfullname" [user]="discussion" slot="start" [courseId]="courseId">
 | 
					                        <core-user-avatar *ngIf="discussion.userfullname" [user]="discussion" slot="start" [courseId]="courseId">
 | 
				
			||||||
                        </core-user-avatar>
 | 
					                        </core-user-avatar>
 | 
				
			||||||
                        <div class="addon-mod-forum-discussion-author">
 | 
					                        <div class="addon-mod-forum-discussion-author">
 | 
				
			||||||
                            <h3 *ngIf="discussion.userfullname">{{discussion.userfullname}}</h3>
 | 
					                            <span *ngIf="discussion.userfullname">{{discussion.userfullname}}</span>
 | 
				
			||||||
                            <p *ngIf="discussion.groupname">
 | 
					                            <p *ngIf="discussion.groupname">
 | 
				
			||||||
                                <ion-icon name="fas-users" [attr.aria-label]="'addon.mod_forum.group' | translate">
 | 
					                                <ion-icon name="fas-users" [attr.aria-label]="'addon.mod_forum.group' | translate">
 | 
				
			||||||
                                </ion-icon> {{ discussion.groupname }}
 | 
					                                </ion-icon> {{ discussion.groupname }}
 | 
				
			||||||
 | 
				
			|||||||
@ -11,7 +11,7 @@
 | 
				
			|||||||
        ion-label {
 | 
					        ion-label {
 | 
				
			||||||
            margin-top: 4px;
 | 
					            margin-top: 4px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            h2 {
 | 
					            .item-heading {
 | 
				
			||||||
                margin-top: 8px;
 | 
					                margin-top: 8px;
 | 
				
			||||||
                margin-bottom: 8px;
 | 
					                margin-bottom: 8px;
 | 
				
			||||||
                font-weight: bold;
 | 
					                font-weight: bold;
 | 
				
			||||||
@ -36,7 +36,7 @@
 | 
				
			|||||||
            align-items: center;
 | 
					            align-items: center;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        .addon-mod-forum-discussion-title h2,
 | 
					        .addon-mod-forum-discussion-title .item-heading,
 | 
				
			||||||
        .addon-mod-forum-discussion-info .addon-mod-forum-discussion-author {
 | 
					        .addon-mod-forum-discussion-info .addon-mod-forum-discussion-author {
 | 
				
			||||||
            flex-grow: 1;
 | 
					            flex-grow: 1;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -31,7 +31,7 @@
 | 
				
			|||||||
                    <core-user-avatar *ngIf="post.author && post.author.fullname" [user]="post.author" slot="start" [courseId]="courseId">
 | 
					                    <core-user-avatar *ngIf="post.author && post.author.fullname" [user]="post.author" slot="start" [courseId]="courseId">
 | 
				
			||||||
                    </core-user-avatar>
 | 
					                    </core-user-avatar>
 | 
				
			||||||
                    <div class="addon-mod-forum-post-author">
 | 
					                    <div class="addon-mod-forum-post-author">
 | 
				
			||||||
                        <h3 *ngIf="post.author && post.author.fullname">{{post.author.fullname}}</h3>
 | 
					                        <span *ngIf="post.author && post.author.fullname">{{post.author.fullname}}</span>
 | 
				
			||||||
                        <p *ngIf="post.author && post.author.groups">
 | 
					                        <p *ngIf="post.author && post.author.groups">
 | 
				
			||||||
                            <ng-container *ngFor="let group of post.author.groups">
 | 
					                            <ng-container *ngFor="let group of post.author.groups">
 | 
				
			||||||
                                <ion-icon name="fas-users" [attr.aria-label]="'addon.mod_forum.group' | translate">
 | 
					                                <ion-icon name="fas-users" [attr.aria-label]="'addon.mod_forum.group' | translate">
 | 
				
			||||||
 | 
				
			|||||||
@ -50,7 +50,7 @@
 | 
				
			|||||||
            margin-top: 0px;
 | 
					            margin-top: 0px;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        .addon-mod-forum-post-title h2,
 | 
					        .addon-mod-forum-post-title .item-heading,
 | 
				
			||||||
        .addon-mod-forum-post-info .addon-mod-forum-post-author {
 | 
					        .addon-mod-forum-post-info .addon-mod-forum-post-author {
 | 
				
			||||||
            flex-grow: 1;
 | 
					            flex-grow: 1;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
<ion-header>
 | 
					<ion-header>
 | 
				
			||||||
    <ion-toolbar>
 | 
					    <ion-toolbar>
 | 
				
			||||||
        <ion-title id="addon-mod-forum-sort-order-label">{{ 'core.sort' | translate }}</ion-title>
 | 
					        <h2 id="addon-mod-forum-sort-order-label">{{ 'core.sort' | translate }}</h2>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
					            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
				
			||||||
                <ion-icon name="fas-times" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
					                <ion-icon name="fas-times" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title *ngIf="startingPost">
 | 
					        <h1 *ngIf="startingPost">
 | 
				
			||||||
            <core-format-text contextLevel="module" [text]="startingPost.subject" [contextInstanceId]="cmId" [courseId]="courseId">
 | 
					            <core-format-text contextLevel="module" [text]="startingPost.subject" [contextInstanceId]="cmId" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The context menu will be added in here. -->
 | 
					            <!-- The context menu will be added in here. -->
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_forum.addanewdiscussion' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.mod_forum.addanewdiscussion' | translate }}</h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The context menu will be added in here. -->
 | 
					            <!-- The context menu will be added in here. -->
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title *ngIf="glossary">
 | 
					        <h1 *ngIf="glossary">
 | 
				
			||||||
            <core-format-text [text]="glossary.name" contextLevel="module" [contextInstanceId]="cmId" [courseId]="courseId">
 | 
					            <core-format-text [text]="glossary.name" contextLevel="module" [contextInstanceId]="cmId" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title *ngIf="entry">
 | 
					        <h1 *ngIf="entry">
 | 
				
			||||||
            <core-format-text [text]="entry.concept" contextLevel="module" [contextInstanceId]="componentId" [courseId]="courseId">
 | 
					            <core-format-text [text]="entry.concept" contextLevel="module" [contextInstanceId]="componentId" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
            </ion-title>
 | 
					        </h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
@ -30,10 +30,10 @@
 | 
				
			|||||||
            </ion-item>
 | 
					            </ion-item>
 | 
				
			||||||
            <ion-item class="ion-text-wrap" *ngIf="!showAuthor">
 | 
					            <ion-item class="ion-text-wrap" *ngIf="!showAuthor">
 | 
				
			||||||
                <ion-label>
 | 
					                <ion-label>
 | 
				
			||||||
                    <h2>
 | 
					                    <p class="item-heading">
 | 
				
			||||||
                        <core-format-text [text]="entry.concept" contextLevel="module" [contextInstanceId]="componentId">
 | 
					                        <core-format-text [text]="entry.concept" contextLevel="module" [contextInstanceId]="componentId">
 | 
				
			||||||
                        </core-format-text>
 | 
					                        </core-format-text>
 | 
				
			||||||
                    </h2>
 | 
					                    </p>
 | 
				
			||||||
                </ion-label>
 | 
					                </ion-label>
 | 
				
			||||||
                <ion-note slot="end" *ngIf="showDate">{{ entry.timemodified | coreDateDayOrTime }}</ion-note>
 | 
					                <ion-note slot="end" *ngIf="showDate">{{ entry.timemodified | coreDateDayOrTime }}</ion-note>
 | 
				
			||||||
            </ion-item>
 | 
					            </ion-item>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,11 +3,11 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text *ngIf="h5pActivity" [text]="h5pActivity.name" contextLevel="module"
 | 
					            <core-format-text *ngIf="h5pActivity" [text]="h5pActivity.name" contextLevel="module"
 | 
				
			||||||
                [contextInstanceId]="h5pActivity.coursemodule" [courseId]="courseId">
 | 
					                [contextInstanceId]="h5pActivity.coursemodule" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
 | 
				
			|||||||
@ -3,11 +3,11 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text *ngIf="h5pActivity" [text]="h5pActivity.name" contextLevel="module"
 | 
					            <core-format-text *ngIf="h5pActivity" [text]="h5pActivity.name" contextLevel="module"
 | 
				
			||||||
                [contextInstanceId]="h5pActivity.coursemodule" [courseId]="courseId">
 | 
					                [contextInstanceId]="h5pActivity.coursemodule" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
<ion-header>
 | 
					<ion-header>
 | 
				
			||||||
    <ion-toolbar>
 | 
					    <ion-toolbar>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_imscp.toc' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.mod_imscp.toc' | translate }}</h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
					            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
				
			||||||
                <ion-icon name="fas-times" slot="icon-only" aria-hidden=true></ion-icon>
 | 
					                <ion-icon name="fas-times" slot="icon-only" aria-hidden=true></ion-icon>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
 | 
				
			|||||||
@ -300,7 +300,7 @@
 | 
				
			|||||||
                            <core-user-avatar [user]="student" slot="start" [userId]="student.id" [courseId]="courseId">
 | 
					                            <core-user-avatar [user]="student" slot="start" [userId]="student.id" [courseId]="courseId">
 | 
				
			||||||
                            </core-user-avatar>
 | 
					                            </core-user-avatar>
 | 
				
			||||||
                            <ion-label>
 | 
					                            <ion-label>
 | 
				
			||||||
                                <h2>{{ student.fullname }}</h2>
 | 
					                                <p class="item-heading">{{ student.fullname }}</p>
 | 
				
			||||||
                                <core-progress-bar [progress]="student.bestgrade" a11yText="addon.mod_lesson.grade">
 | 
					                                <core-progress-bar [progress]="student.bestgrade" a11yText="addon.mod_lesson.grade">
 | 
				
			||||||
                                </core-progress-bar>
 | 
					                                </core-progress-bar>
 | 
				
			||||||
                            </ion-label>
 | 
					                            </ion-label>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
<ion-header>
 | 
					<ion-header>
 | 
				
			||||||
    <ion-toolbar>
 | 
					    <ion-toolbar>
 | 
				
			||||||
        <ion-title>{{ pageInstance?.lesson?.name }}</ion-title>
 | 
					        <h2>{{ pageInstance?.lesson?.name }}</h2>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
					            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
<ion-header>
 | 
					<ion-header>
 | 
				
			||||||
    <ion-toolbar>
 | 
					    <ion-toolbar>
 | 
				
			||||||
        <ion-title>{{ 'core.login.password' | translate }}</ion-title>
 | 
					        <h2>{{ 'core.login.password' | translate }}</h2>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
					            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,11 +3,11 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="lesson?.coursemodule"
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="lesson?.coursemodule"
 | 
				
			||||||
                [courseId]="courseId">
 | 
					                [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" *ngIf="displayMenu || mediaFile" [attr.aria-label]="'addon.mod_lesson.lessonmenu' | translate"
 | 
					            <ion-button fill="clear" *ngIf="displayMenu || mediaFile" [attr.aria-label]="'addon.mod_lesson.lessonmenu' | translate"
 | 
				
			||||||
                (click)="showMenu()">
 | 
					                (click)="showMenu()">
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_lesson.detailedstats' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.mod_lesson.detailedstats' | translate }}</h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
<ion-header>
 | 
					<ion-header>
 | 
				
			||||||
    <ion-toolbar>
 | 
					    <ion-toolbar>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_quiz.quiznavigation' | translate }}</ion-title>
 | 
					        <h2>{{ 'addon.mod_quiz.quiznavigation' | translate }}</h2>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
					            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
<ion-header>
 | 
					<ion-header>
 | 
				
			||||||
    <ion-toolbar>
 | 
					    <ion-toolbar>
 | 
				
			||||||
        <ion-title>{{ title | translate }}</ion-title>
 | 
					        <h2>{{ title | translate }}</h2>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
					            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
				
			||||||
 | 
				
			|||||||
@ -3,11 +3,11 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text *ngIf="quiz" [text]="quiz.name" contextLevel="module" [contextInstanceId]="quiz.coursemodule"
 | 
					            <core-format-text *ngIf="quiz" [text]="quiz.name" contextLevel="module" [contextInstanceId]="quiz.coursemodule"
 | 
				
			||||||
                [courseId]="courseId">
 | 
					                [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
    </ion-toolbar>
 | 
					    </ion-toolbar>
 | 
				
			||||||
</ion-header>
 | 
					</ion-header>
 | 
				
			||||||
<ion-content>
 | 
					<ion-content>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
 | 
				
			|||||||
@ -3,11 +3,11 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text *ngIf="quiz" [text]="quiz.name" contextLevel="module" [contextInstanceId]="quiz.coursemodule"
 | 
					            <core-format-text *ngIf="quiz" [text]="quiz.name" contextLevel="module" [contextInstanceId]="quiz.coursemodule"
 | 
				
			||||||
                [courseId]="courseId">
 | 
					                [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" id="addon-mod_quiz-connection-error-button" [hidden]="!autoSaveError"
 | 
					            <ion-button fill="clear" id="addon-mod_quiz-connection-error-button" [hidden]="!autoSaveError"
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_quiz.review' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.mod_quiz.review' | translate }}</h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" *ngIf="navigation.length" [attr.aria-label]="'addon.mod_quiz.opentoc' | translate"
 | 
					            <ion-button fill="clear" *ngIf="navigation.length" [attr.aria-label]="'addon.mod_quiz.opentoc' | translate"
 | 
				
			||||||
@ -74,7 +74,7 @@
 | 
				
			|||||||
                </ion-item>
 | 
					                </ion-item>
 | 
				
			||||||
                <ion-item class="ion-text-wrap" *ngFor="let data of additionalData">
 | 
					                <ion-item class="ion-text-wrap" *ngFor="let data of additionalData">
 | 
				
			||||||
                    <ion-label>
 | 
					                    <ion-label>
 | 
				
			||||||
                        <h2>{{ data.title }}</h2>
 | 
					                        <p class="item-heading">{{ data.title }}</p>
 | 
				
			||||||
                        <core-format-text [component]="component" [componentId]="cmId" [text]="data.content"
 | 
					                        <core-format-text [component]="component" [componentId]="cmId" [text]="data.content"
 | 
				
			||||||
                            contextLevel="module" [contextInstanceId]="cmId" [courseId]="courseId">
 | 
					                            contextLevel="module" [contextInstanceId]="cmId" [courseId]="courseId">
 | 
				
			||||||
                        </core-format-text>
 | 
					                        </core-format-text>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
<ion-header>
 | 
					<ion-header>
 | 
				
			||||||
    <ion-toolbar>
 | 
					    <ion-toolbar>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_scorm.toc' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.mod_scorm.toc' | translate }}</h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
					            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
				
			||||||
                <ion-icon slot="icon-only" name="fas-times" aria-hidden="true"></ion-icon>
 | 
					                <ion-icon slot="icon-only" name="fas-times" aria-hidden="true"></ion-icon>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="cmId" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="cmId" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" *ngIf="showToc && !loadingToc && toc.length" (click)="openToc()"
 | 
					            <ion-button fill="clear" *ngIf="showToc && !loadingToc && toc.length" (click)="openToc()"
 | 
				
			||||||
                [attr.aria-label]="'addon.mod_scorm.toc' | translate" aria-haspopup="true">
 | 
					                [attr.aria-label]="'addon.mod_scorm.toc' | translate" aria-haspopup="true">
 | 
				
			||||||
 | 
				
			|||||||
@ -3,9 +3,9 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module.id"></core-format-text>
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module.id"></core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
 | 
				
			|||||||
@ -3,9 +3,9 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id"></core-format-text>
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id"></core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
<ion-header>
 | 
					<ion-header>
 | 
				
			||||||
    <ion-toolbar>
 | 
					    <ion-toolbar>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_wiki.map' | translate }}</ion-title>
 | 
					        <h1>{{ 'addon.mod_wiki.map' | translate }}</h1>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
					            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
				
			||||||
                <ion-icon name="fas-times" aria-hidden="true"></ion-icon>
 | 
					                <ion-icon name="fas-times" aria-hidden="true"></ion-icon>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="cmId" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="cmId" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="save()" [attr.aria-label]="'core.save' | translate">
 | 
					            <ion-button fill="clear" (click)="save()" [attr.aria-label]="'core.save' | translate">
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,10 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>
 | 
					        <h1>
 | 
				
			||||||
            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
					            <core-format-text [text]="title" contextLevel="module" [contextInstanceId]="module?.id" [courseId]="courseId">
 | 
				
			||||||
            </core-format-text>
 | 
					            </core-format-text>
 | 
				
			||||||
        </ion-title>
 | 
					        </h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <!-- The buttons defined by the component will be added in here. -->
 | 
					            <!-- The buttons defined by the component will be added in here. -->
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
        <ion-buttons slot="start">
 | 
					        <ion-buttons slot="start">
 | 
				
			||||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
					            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
				
			||||||
        </ion-buttons>
 | 
					        </ion-buttons>
 | 
				
			||||||
        <ion-title>{{ 'addon.mod_workshop.userplan' | translate }}</ion-title>
 | 
					        <h2>{{ 'addon.mod_workshop.userplan' | translate }}</h2>
 | 
				
			||||||
        <ion-buttons slot="end">
 | 
					        <ion-buttons slot="end">
 | 
				
			||||||
            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
					            <ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
				
			||||||
                <ion-icon name="fas-times" slot="icon-only" aria-hidden=true></ion-icon>
 | 
					                <ion-icon name="fas-times" slot="icon-only" aria-hidden=true></ion-icon>
 | 
				
			||||||
 | 
				
			|||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user