forked from CIT/Vmeda.Online
		
	MOBILE-4279 fonts: Update Font-awesome names to 6.3
This commit is contained in:
		
							parent
							
								
									8ad85b0f15
								
							
						
					
					
						commit
						902288dd0f
					
				@ -75,7 +75,7 @@
 | 
			
		||||
        </ion-col>
 | 
			
		||||
        <ion-col size="auto" *ngIf="sort.enabled">
 | 
			
		||||
            <core-combobox [label]="'core.sortby' | translate" [selection]="sort.selected" (onChange)="sortCourses($event)"
 | 
			
		||||
                icon="fas-sort-amount-down-alt">
 | 
			
		||||
                icon="fas-arrow-down-short-wide">
 | 
			
		||||
                <ion-select-option class="ion-text-wrap" value="fullname">
 | 
			
		||||
                    {{'addon.block_myoverview.title' | translate}}
 | 
			
		||||
                </ion-select-option>
 | 
			
		||||
@ -94,7 +94,7 @@
 | 
			
		||||
            </ion-button>
 | 
			
		||||
            <ion-button *ngIf="layout == 'list'" fill="outline" (click)="toggleLayout('card')"
 | 
			
		||||
                [attr.aria-label]="'addon.block_myoverview.aria:card' | translate">
 | 
			
		||||
                <ion-icon slot="icon-only" name="fas-th" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon slot="icon-only" name="fas-table-cells-large" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-col>
 | 
			
		||||
    </ion-row>
 | 
			
		||||
@ -114,7 +114,7 @@
 | 
			
		||||
                {{'addon.block_myoverview.nocoursesenrolleddescription' | translate}}
 | 
			
		||||
            </p>
 | 
			
		||||
            <ion-button (click)="openSearch()" fill="outline">
 | 
			
		||||
                <ion-icon name="fas-search" slot="start" aria-hidden="true">
 | 
			
		||||
                <ion-icon name="fas-magnifying-glass" slot="start" aria-hidden="true">
 | 
			
		||||
                </ion-icon>
 | 
			
		||||
                {{'addon.block_myoverview.browseallcourses' | translate}}
 | 
			
		||||
            </ion-button>
 | 
			
		||||
 | 
			
		||||
@ -35,7 +35,7 @@
 | 
			
		||||
        </ion-col>
 | 
			
		||||
        <ion-col size="auto">
 | 
			
		||||
            <core-combobox [label]="'core.sortby' | translate" [formControl]="sort" (onChange)="sortChanged($event)"
 | 
			
		||||
                icon="fas-sort-amount-down-alt">
 | 
			
		||||
                icon="fas-arrow-down-short-wide">
 | 
			
		||||
                <ion-select-option *ngFor="let option of sortOptions" class="ion-text-wrap" [value]="option.value">
 | 
			
		||||
                    {{ option.name | translate }}
 | 
			
		||||
                </ion-select-option>
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@
 | 
			
		||||
    <ion-toolbar>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" slot="icon-only" aria-hidden=true></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
 | 
			
		||||
@ -54,7 +54,7 @@
 | 
			
		||||
                        <!-- There is data to be synchronized -->
 | 
			
		||||
                        <ion-card class="core-warning-card list-item-limited-width" *ngIf="day.hasOffline">
 | 
			
		||||
                            <ion-item>
 | 
			
		||||
                                <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                                <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                                <ion-label>{{ 'core.hasdatatosync' | translate:{$a: 'core.day' | translate} }}</ion-label>
 | 
			
		||||
                            </ion-item>
 | 
			
		||||
                        </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -16,12 +16,12 @@
 | 
			
		||||
                    [iconAction]="syncIcon" [closeOnClick]="false">
 | 
			
		||||
                </core-context-menu-item>
 | 
			
		||||
                <core-context-menu-item [hidden]="!event || !event.canedit || event.deleted || (!canEdit && event.id > 0)" [priority]="300"
 | 
			
		||||
                    [content]="'core.edit' | translate" (action)="openEdit()" iconAction="fas-edit">
 | 
			
		||||
                    [content]="'core.edit' | translate" (action)="openEdit()" iconAction="fas-pen-to-square">
 | 
			
		||||
                </core-context-menu-item>
 | 
			
		||||
                <core-context-menu-item [hidden]="!event || !event.candelete || event.deleted" [priority]="200"
 | 
			
		||||
                    [content]="'core.delete' | translate" (action)="deleteEvent()" iconAction="fas-trash"></core-context-menu-item>
 | 
			
		||||
                <core-context-menu-item [hidden]="!event || !event.deleted" [priority]="200" [content]="'core.restore' | translate"
 | 
			
		||||
                    (action)="undoDelete()" iconAction="fas-undo-alt"></core-context-menu-item>
 | 
			
		||||
                    (action)="undoDelete()" iconAction="fas-rotate-left"></core-context-menu-item>
 | 
			
		||||
            </core-context-menu>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
@ -34,7 +34,7 @@
 | 
			
		||||
        <!-- There is data to be synchronized -->
 | 
			
		||||
        <ion-card class="core-warning-card" *ngIf="hasOffline || (event && event.deleted)">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ 'core.hasdatatosync' | translate:{$a: 'addon.calendar.calendarevent' | translate} }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -12,11 +12,11 @@
 | 
			
		||||
            </ion-button>
 | 
			
		||||
            <core-context-menu>
 | 
			
		||||
                <core-context-menu-item *ngIf="showCalendar" [priority]="800" [content]="'addon.calendar.upcomingevents' | translate"
 | 
			
		||||
                    iconAction="fas-th-list" (action)="toggleDisplay()"></core-context-menu-item>
 | 
			
		||||
                    iconAction="fas-table-list" (action)="toggleDisplay()"></core-context-menu-item>
 | 
			
		||||
                <core-context-menu-item *ngIf="!showCalendar" [priority]="800" [content]="'addon.calendar.monthlyview' | translate"
 | 
			
		||||
                    iconAction="fas-calendar-alt" (action)="toggleDisplay()"></core-context-menu-item>
 | 
			
		||||
                    iconAction="fas-calendar-days" (action)="toggleDisplay()"></core-context-menu-item>
 | 
			
		||||
                <core-context-menu-item [priority]="600" [content]="'core.settings.settings' | translate" (action)="openSettings()"
 | 
			
		||||
                    iconAction="fas-cogs">
 | 
			
		||||
                    iconAction="fas-gears">
 | 
			
		||||
                </core-context-menu-item>
 | 
			
		||||
                <core-context-menu-item [hidden]="!loaded || !hasOffline || !isOnline" [priority]="400"
 | 
			
		||||
                    [content]="'core.settings.synchronizenow' | translate" (action)="doRefresh(undefined, $event, true)"
 | 
			
		||||
@ -34,7 +34,7 @@
 | 
			
		||||
    <!-- There is data to be synchronized -->
 | 
			
		||||
    <ion-card class="core-warning-card" *ngIf="hasOffline">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label>{{ 'core.hasdatatosync' | translate:{$a: 'addon.calendar.calendar' | translate} }}</ion-label>
 | 
			
		||||
        </ion-item>
 | 
			
		||||
    </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -101,7 +101,7 @@
 | 
			
		||||
 | 
			
		||||
        <ion-card class="core-warning-card" *ngIf="!tracked">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ 'addon.coursecompletion.nottracked' | translate }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -65,7 +65,7 @@ export class AddonCourseCompletionUserHandlerService implements CoreUserProfileH
 | 
			
		||||
     */
 | 
			
		||||
    getDisplayData(): CoreUserProfileHandlerData {
 | 
			
		||||
        return {
 | 
			
		||||
            icon: 'fas-tasks',
 | 
			
		||||
            icon: 'fas-list-check',
 | 
			
		||||
            title: 'addon.coursecompletion.coursecompletion',
 | 
			
		||||
            class: 'addon-coursecompletion-handler',
 | 
			
		||||
            action: (event, user, context, contextId): void => {
 | 
			
		||||
 | 
			
		||||
@ -48,7 +48,7 @@ export class AddonMessageOutputAirnotifierHandlerService implements AddonMessage
 | 
			
		||||
        return {
 | 
			
		||||
            priority: 600,
 | 
			
		||||
            label: 'addon.messageoutput_airnotifier.processorsettingsdesc',
 | 
			
		||||
            icon: 'fas-cog',
 | 
			
		||||
            icon: 'fas-gear',
 | 
			
		||||
            page: AddonMessageOutputAirnotifierHandlerService.PAGE_NAME,
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
 | 
			
		||||
@ -8,7 +8,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-magnifying-glass" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
            <!-- Add an empty context menu so split view pages can add items, otherwise the menu disappears in some cases. -->
 | 
			
		||||
            <core-context-menu></core-context-menu>
 | 
			
		||||
 | 
			
		||||
@ -24,9 +24,9 @@
 | 
			
		||||
    <core-navbar-buttons slot="end">
 | 
			
		||||
        <core-context-menu [attr.aria-label]="'addon.messages.conversationactions' | translate">
 | 
			
		||||
            <core-context-menu-item [hidden]="isSelf || !showInfo || isGroup" [priority]="1000"
 | 
			
		||||
                [content]="'addon.messages.info' | translate" (action)="viewInfo()" iconAction="fas-info-circle"></core-context-menu-item>
 | 
			
		||||
                [content]="'addon.messages.info' | translate" (action)="viewInfo()" iconAction="fas-circle-info"></core-context-menu-item>
 | 
			
		||||
            <core-context-menu-item [hidden]="isSelf || !showInfo || !isGroup" [priority]="1000"
 | 
			
		||||
                [content]="'addon.messages.groupinfo' | translate" (action)="viewInfo()" iconAction="fas-info-circle">
 | 
			
		||||
                [content]="'addon.messages.groupinfo' | translate" (action)="viewInfo()" iconAction="fas-circle-info">
 | 
			
		||||
            </core-context-menu-item>
 | 
			
		||||
            <core-context-menu-item [hidden]="!groupMessagingEnabled || !conversation" [priority]="800" (action)="changeFavourite($event)"
 | 
			
		||||
                [closeOnClick]="false" [content]="(conversation && conversation.isfavourite ? 'addon.messages.removefromfavourites' :
 | 
			
		||||
 | 
			
		||||
@ -89,7 +89,7 @@
 | 
			
		||||
            <core-empty-box *ngIf="(!discussions || discussions.length <= 0) && !search.showResults" icon="far-comments"
 | 
			
		||||
                [message]="'addon.messages.nomessagesfound' | translate"></core-empty-box>
 | 
			
		||||
 | 
			
		||||
            <core-empty-box *ngIf="(!search.results || search.results.length <= 0) && search.showResults" icon="fas-search"
 | 
			
		||||
            <core-empty-box *ngIf="(!search.results || search.results.length <= 0) && search.showResults" icon="fas-magnifying-glass"
 | 
			
		||||
                [message]="'core.noresults' | translate"></core-empty-box>
 | 
			
		||||
        </core-loading>
 | 
			
		||||
    </core-split-view>
 | 
			
		||||
 | 
			
		||||
@ -8,10 +8,10 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-magnifying-glass" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
            <ion-button (click)="gotoSettings()" [attr.aria-label]="'addon.messages.messagepreferences' | translate">
 | 
			
		||||
                <ion-icon name="fas-cog" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-gear" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
            <!-- Add an empty context menu so split view pages can add items, otherwise the menu disappears in some cases. -->
 | 
			
		||||
            <core-context-menu></core-context-menu>
 | 
			
		||||
@ -169,7 +169,7 @@
 | 
			
		||||
                    <core-format-text [text]="conversation.name" contextLevel="system" [contextInstanceId]="0"></core-format-text>
 | 
			
		||||
                    <ion-icon name="fas-user-slash" *ngIf="conversation.isblocked" [title]="'addon.messages.contactblocked' | translate">
 | 
			
		||||
                    </ion-icon>
 | 
			
		||||
                    <ion-icon *ngIf="conversation.ismuted" name="fas-volume-mute" [title]="'addon.messages.mutedconversation' | translate">
 | 
			
		||||
                    <ion-icon *ngIf="conversation.ismuted" name="fas-volume-xmark" [title]="'addon.messages.mutedconversation' | translate">
 | 
			
		||||
                    </ion-icon>
 | 
			
		||||
                </p>
 | 
			
		||||
                <ion-note *ngIf="conversation.lastmessagedate > 0 || conversation.unreadcount">
 | 
			
		||||
 | 
			
		||||
@ -28,7 +28,7 @@
 | 
			
		||||
            </ion-list>
 | 
			
		||||
 | 
			
		||||
            <core-empty-box *ngIf="displayResults && !contacts.results.length && !nonContacts.results.length && !messages.results.length"
 | 
			
		||||
                icon="fas-search" [message]="'core.noresults' | translate">
 | 
			
		||||
                icon="fas-magnifying-glass" [message]="'core.noresults' | translate">
 | 
			
		||||
            </core-empty-box>
 | 
			
		||||
        </core-loading>
 | 
			
		||||
    </core-split-view>
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
@ -113,7 +113,7 @@
 | 
			
		||||
        <!-- Ungrouped users. -->
 | 
			
		||||
        <ion-card *ngIf="assign.teamsubmission && summary && summary.warnofungroupedusers" class="core-info-card">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-question-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-circle-question" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ 'addon.mod_assign.'+summary.warnofungroupedusers | translate }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@
 | 
			
		||||
        <!-- Time limit is over. -->
 | 
			
		||||
        <ion-card *ngIf="timeLimitFinished" class="core-danger-card">
 | 
			
		||||
            <ion-item class="ion-text-wrap">
 | 
			
		||||
                <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>
 | 
			
		||||
                    <p>{{ 'addon.mod_assign.caneditsubmission' | translate }}</p>
 | 
			
		||||
                </ion-label>
 | 
			
		||||
@ -264,7 +264,7 @@
 | 
			
		||||
                        </ion-label>
 | 
			
		||||
                        <ion-button slot="end" *ngIf="feedback!.advancedgrade" (click)="showAdvancedGrade()"
 | 
			
		||||
                            [attr.aria-label]="'core.showadvanced' |translate">
 | 
			
		||||
                            <ion-icon name="fas-search" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                            <ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        </ion-button>
 | 
			
		||||
                    </ion-item>
 | 
			
		||||
 | 
			
		||||
@ -393,12 +393,12 @@
 | 
			
		||||
                    <!-- Warning message if cannot save grades. -->
 | 
			
		||||
                    <ion-card *ngIf="isGrading && !canSaveGrades" class="core-warning-card">
 | 
			
		||||
                        <ion-item>
 | 
			
		||||
                            <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                            <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                            <ion-label>
 | 
			
		||||
                                <p>{{ 'addon.mod_assign.cannotgradefromapp' | translate }}</p>
 | 
			
		||||
                                <ion-button expand="block" *ngIf="gradeUrl" [href]="gradeUrl" core-link [showBrowserWarning]="false">
 | 
			
		||||
                                    {{ 'core.openinbrowser' | translate }}
 | 
			
		||||
                                    <ion-icon name="fas-external-link-alt" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
                                    <ion-icon name="fas-up-right-from-square" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
                                </ion-button>
 | 
			
		||||
                            </ion-label>
 | 
			
		||||
                        </ion-item>
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
@ -77,7 +77,7 @@
 | 
			
		||||
 | 
			
		||||
        <ion-card *ngIf="!meetingInfo.canjoin" class="core-warning-card">
 | 
			
		||||
            <ion-item class="ion-text-wrap">
 | 
			
		||||
                <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ meetingInfo.statusmessage }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
@ -102,7 +102,7 @@
 | 
			
		||||
                </ion-label>
 | 
			
		||||
                <ion-button slot="end" fill="clear" (click)="playRecording($event, recording)"
 | 
			
		||||
                    [attr.aria-label]="'addon.mod_bigbluebuttonbn.view_recording_list_action_play' | translate">
 | 
			
		||||
                    <ion-icon name="fas-play-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-icon name="fas-circle-play" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                </ion-button>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
            <div [hidden]="!recording.expanded" class="addon-mod_bbb-recording-details">
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" slot="icon-only" aria-hidden=true></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
 | 
			
		||||
@ -25,7 +25,7 @@
 | 
			
		||||
        <div class="safe-area-padding-horizontal core-swipe-slides-container">
 | 
			
		||||
            <ion-card class="core-warning-card" *ngIf="warning">
 | 
			
		||||
                <ion-item>
 | 
			
		||||
                    <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-label><span [innerHTML]="warning"></span></ion-label>
 | 
			
		||||
                </ion-item>
 | 
			
		||||
            </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
 | 
			
		||||
@ -28,7 +28,7 @@
 | 
			
		||||
                <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'">
 | 
			
		||||
                        <span>
 | 
			
		||||
                            <ion-icon name="fas-sign-in-alt" aria-hidden="true"></ion-icon>
 | 
			
		||||
                            <ion-icon name="fas-right-to-bracket" aria-hidden="true"></ion-icon>
 | 
			
		||||
                            {{ message.timestamp * 1000 | coreFormatDate:"strftimetime" }}
 | 
			
		||||
                            {{ 'addon.mod_chat.messageenter' | translate:{$a: message.userfullname} }}
 | 
			
		||||
                        </span>
 | 
			
		||||
@ -36,7 +36,7 @@
 | 
			
		||||
 | 
			
		||||
                    <ion-badge class="ion-text-wrap" color="danger" *ngIf="message.system && message.message == 'exit'">
 | 
			
		||||
                        <span>
 | 
			
		||||
                            <ion-icon name="fas-sign-out-alt" aria-hidden="true"></ion-icon>
 | 
			
		||||
                            <ion-icon name="fas-right-from-bracket" aria-hidden="true"></ion-icon>
 | 
			
		||||
                            {{ message.timestamp * 1000 | coreFormatDate:"strftimetime" }}
 | 
			
		||||
                            {{ 'addon.mod_chat.messageexit' | translate:{$a: message.userfullname} }}
 | 
			
		||||
                        </span>
 | 
			
		||||
 | 
			
		||||
@ -23,7 +23,7 @@
 | 
			
		||||
                <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'">
 | 
			
		||||
                        <span>
 | 
			
		||||
                            <ion-icon name="fas-sign-in-alt" aria-hidden="true"></ion-icon>
 | 
			
		||||
                            <ion-icon name="fas-right-to-bracket" aria-hidden="true"></ion-icon>
 | 
			
		||||
                            {{ message.timestamp * 1000 | coreFormatDate:"strftimetime" }}
 | 
			
		||||
                            {{ 'addon.mod_chat.messageenter' | translate:{$a: message.userfullname} }}
 | 
			
		||||
                        </span>
 | 
			
		||||
@ -31,7 +31,7 @@
 | 
			
		||||
 | 
			
		||||
                    <ion-badge class="ion-text-wrap" color="danger" *ngIf="message.issystem && message.message == 'exit'">
 | 
			
		||||
                        <span>
 | 
			
		||||
                            <ion-icon name="fas-sign-out-alt" aria-hidden="true"></ion-icon>
 | 
			
		||||
                            <ion-icon name="fas-right-from-bracket" aria-hidden="true"></ion-icon>
 | 
			
		||||
                            {{ message.timestamp * 1000 | coreFormatDate:"strftimetime" }}
 | 
			
		||||
                            {{ 'addon.mod_chat.messageexit' | translate:{$a: message.userfullname} }}
 | 
			
		||||
                        </span>
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,7 @@
 | 
			
		||||
    <!-- Activity availability messages -->
 | 
			
		||||
    <ion-card class="core-info-card" *ngIf="choiceNotOpenYet">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label>
 | 
			
		||||
                <p *ngIf="options.length">{{ 'addon.mod_choice.previewonly' | translate:{$a: openTimeReadable} }}</p>
 | 
			
		||||
                <p *ngIf="!options.length">{{ 'addon.mod_choice.notopenyet' | translate:{$a: openTimeReadable} }}</p>
 | 
			
		||||
@ -25,7 +25,7 @@
 | 
			
		||||
 | 
			
		||||
    <ion-card class="core-info-card" *ngIf="choiceClosed">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label>
 | 
			
		||||
                <p *ngIf="options.length">
 | 
			
		||||
                    {{ 'addon.mod_choice.yourselection' | translate }}
 | 
			
		||||
@ -40,7 +40,7 @@
 | 
			
		||||
    <!-- Inform what will happen with the choices. -->
 | 
			
		||||
    <ion-card class="core-info-card" *ngIf="canEdit && publishInfo && options.length">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label>{{ publishInfo | translate }}</ion-label>
 | 
			
		||||
        </ion-item>
 | 
			
		||||
    </ion-card>
 | 
			
		||||
@ -75,7 +75,7 @@
 | 
			
		||||
            <ion-row>
 | 
			
		||||
                <ion-col size="12" size-lg="5">
 | 
			
		||||
                    <ion-item class="ion-text-wrap core-warning-item" *ngIf="hasOffline">
 | 
			
		||||
                        <ion-icon slot="start" name="fas-exclamation-triangle" color="warning" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        <ion-icon slot="start" name="fas-triangle-exclamation" color="warning" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        <ion-label>{{ 'addon.mod_choice.resultsnotsynced' | translate }}</ion-label>
 | 
			
		||||
                    </ion-item>
 | 
			
		||||
                    <ion-item>
 | 
			
		||||
@ -125,7 +125,7 @@
 | 
			
		||||
 | 
			
		||||
    <ion-card class="core-info-card" *ngIf="!canSeeResults && !choiceNotOpenYet">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label>
 | 
			
		||||
                <p>{{ 'addon.mod_choice.noresultsviewable' | translate }}</p>
 | 
			
		||||
            </ion-label>
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,9 @@
 | 
			
		||||
<ion-button size="small" *ngIf="action == 'more'" fill="clear" (click)="viewEntry()" [attr.aria-label]="'addon.mod_data.more' | translate">
 | 
			
		||||
    <ion-icon name="fas-search-plus" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    <ion-icon name="fas-magnifying-glass-plus" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
</ion-button>
 | 
			
		||||
 | 
			
		||||
<ion-button size="small" *ngIf="action == 'edit'" fill="clear" (click)="editEntry()" [attr.aria-label]="'core.edit' | translate">
 | 
			
		||||
    <ion-icon name="fas-cog" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    <ion-icon name="fas-gear" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
</ion-button>
 | 
			
		||||
 | 
			
		||||
<ion-button size="small" *ngIf="action == 'delete' && !entry.deleted" fill="clear" color="danger" (click)="deleteEntry()"
 | 
			
		||||
@ -13,7 +13,7 @@
 | 
			
		||||
 | 
			
		||||
<ion-button size="small" *ngIf="action == 'delete' && entry.deleted" fill="clear" color="danger" (click)="undoDelete()"
 | 
			
		||||
    [attr.aria-label]="'core.restore' | translate">
 | 
			
		||||
    <ion-icon name="fas-undo-alt" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    <ion-icon name="fas-rotate-left" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
</ion-button>
 | 
			
		||||
 | 
			
		||||
<ion-button size="small" *ngIf="action == 'approve'" fill="clear" (click)="approveEntry()"
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button *ngIf="canSearch" (click)="showSearch()" [attr.aria-label]="'addon.mod_data.search' | translate">
 | 
			
		||||
        <ion-icon name="fas-search" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
    <core-context-menu>
 | 
			
		||||
        <core-context-menu-item [priority]="500" *ngIf="canAdd" [content]="'addon.mod_data.addentries' | translate" iconAction="fas-plus"
 | 
			
		||||
@ -13,7 +13,7 @@
 | 
			
		||||
    </core-context-menu>
 | 
			
		||||
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
@ -30,21 +30,21 @@
 | 
			
		||||
 | 
			
		||||
    <ion-card class="core-info-card" *ngIf="!access?.timeavailable && timeAvailableFrom">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label>{{ 'addon.mod_data.notopenyet' | translate:{$a: timeAvailableFromReadable} }}</ion-label>
 | 
			
		||||
        </ion-item>
 | 
			
		||||
    </ion-card>
 | 
			
		||||
 | 
			
		||||
    <ion-card class="core-info-card" *ngIf="!access?.timeavailable && timeAvailableTo">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label>{{ 'addon.mod_data.expired' | translate:{$a: timeAvailableToReadable} }}</ion-label>
 | 
			
		||||
        </ion-item>
 | 
			
		||||
    </ion-card>
 | 
			
		||||
 | 
			
		||||
    <ion-card class="core-info-card" *ngIf="access && access.entrieslefttoview">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label>
 | 
			
		||||
                {{ 'addon.mod_data.entrieslefttoaddtoview' | translate:{$a: {entrieslefttoview: access.entrieslefttoview} } }}
 | 
			
		||||
            </ion-label>
 | 
			
		||||
@ -53,7 +53,7 @@
 | 
			
		||||
 | 
			
		||||
    <ion-card class="core-info-card" *ngIf="access && access.entrieslefttoadd">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label>
 | 
			
		||||
                {{ 'addon.mod_data.entrieslefttoadd' | translate:{$a: {entriesleft: access.entrieslefttoadd} } }}
 | 
			
		||||
            </ion-label>
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" slot="icon-only" aria-hidden=true></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
@ -59,7 +59,7 @@
 | 
			
		||||
        </ion-list>
 | 
			
		||||
        <div class="ion-padding">
 | 
			
		||||
            <ion-button expand="block" type="submit">
 | 
			
		||||
                <ion-icon name="fas-search" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-magnifying-glass" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                {{ 'addon.mod_data.search' | translate }}
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
@ -20,7 +20,7 @@
 | 
			
		||||
        <!-- Database entries found to be synchronized -->
 | 
			
		||||
        <ion-card class="core-warning-card" *ngIf="entry && entry.hasOffline">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ 'core.hasdatatosync' | translate: {$a: moduleName} }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
@ -39,7 +39,7 @@
 | 
			
		||||
            *ngIf="access && (access.canedititems || access.canviewreports || !access.isempty)">
 | 
			
		||||
            <ion-button *ngIf="access.canedititems || access.canviewreports" expand="block" fill="outline"
 | 
			
		||||
                (click)="gotoAnswerQuestions(true)" class="ion-margin ion-text-wrap">
 | 
			
		||||
                <ion-icon name="fas-search" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-magnifying-glass" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                {{ 'addon.mod_feedback.preview' | translate }}
 | 
			
		||||
            </ion-button>
 | 
			
		||||
            <ion-button *ngIf="access.cancomplete && access.cansubmit && access.isopen" expand="block" (click)="gotoAnswerQuestions()"
 | 
			
		||||
@ -101,7 +101,7 @@
 | 
			
		||||
 | 
			
		||||
        <ion-card class="core-info-card" *ngIf="access && access.cancomplete && !access.isopen">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-question-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-circle-question" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ 'addon.mod_feedback.feedback_is_not_open' | translate }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
@ -155,7 +155,7 @@
 | 
			
		||||
        <ng-container *ngIf="access && (access.canedititems || !access.isempty)">
 | 
			
		||||
            <ion-card class="core-info-card" *ngIf="warning">
 | 
			
		||||
                <ion-item>
 | 
			
		||||
                    <ion-icon name="fas-question-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-icon name="fas-circle-question" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-label>{{ warning }}</ion-label>
 | 
			
		||||
                </ion-item>
 | 
			
		||||
            </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -102,7 +102,7 @@
 | 
			
		||||
                            </core-recaptcha>
 | 
			
		||||
                            <div *ngIf="!preview && (!item.captcha || offline)" class="core-warning-card">
 | 
			
		||||
                                <ion-item>
 | 
			
		||||
                                    <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                                    <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                                    <ion-label>{{ 'addon.mod_feedback.captchaofflinewarning' | translate }}</ion-label>
 | 
			
		||||
                                </ion-item>
 | 
			
		||||
                            </div>
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
    <!-- Add an empty context menu so split view pages can add items, otherwise the menu disappears in some cases. -->
 | 
			
		||||
    <core-context-menu></core-context-menu>
 | 
			
		||||
@ -31,7 +31,7 @@
 | 
			
		||||
        <!-- Cut-off date or due date message -->
 | 
			
		||||
        <ion-card class="core-info-card" *ngIf="availabilityMessage">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ availabilityMessage }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
@ -39,7 +39,7 @@
 | 
			
		||||
        <!-- Q&A message. -->
 | 
			
		||||
        <ion-card class="core-info-card" *ngIf="showQAMessage">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ 'addon.mod_forum.qandanotify' | translate }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
@ -47,7 +47,7 @@
 | 
			
		||||
        <!-- Cannot add discussion to group messages. -->
 | 
			
		||||
        <ion-card class="core-info-card" *ngIf="usesGroups && canAddDiscussion && !canAddDiscussionToGroup">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>
 | 
			
		||||
                    <span *ngIf="groupId <= 0">{{ 'addon.mod_forum.cannotadddiscussionall' | translate }}</span>
 | 
			
		||||
                    <span *ngIf="groupId > 0">{{ 'addon.mod_forum.cannotadddiscussion' | translate }}</span>
 | 
			
		||||
@ -67,7 +67,7 @@
 | 
			
		||||
                [message]="'addon.mod_forum.forumnodiscussionsyet' | translate">
 | 
			
		||||
            </core-empty-box>
 | 
			
		||||
 | 
			
		||||
            <core-empty-box *ngIf="errorLoadingDiscussions" icon="fas-exclamation-triangle"
 | 
			
		||||
            <core-empty-box *ngIf="errorLoadingDiscussions" icon="fas-triangle-exclamation"
 | 
			
		||||
                [message]="'addon.mod_forum.errorloadingsortingorder' | translate">
 | 
			
		||||
                <p>{{ 'addon.mod_forum.errorloadingsortingorderdetails' | translate }}</p>
 | 
			
		||||
            </core-empty-box>
 | 
			
		||||
 | 
			
		||||
@ -13,7 +13,7 @@
 | 
			
		||||
        </ion-label>
 | 
			
		||||
    </ion-item>
 | 
			
		||||
    <ion-item class="ion-text-wrap" [href]="url" *ngIf="url" core-link capture="false" button detail="false" [showBrowserWarning]="false">
 | 
			
		||||
        <ion-icon name="fas-external-link-alt" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-up-right-from-square" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-label>
 | 
			
		||||
            <p class="item-heading">{{ 'core.openinbrowser' | translate }}</p>
 | 
			
		||||
        </ion-label>
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
 | 
			
		||||
@ -31,7 +31,7 @@
 | 
			
		||||
            [content]="'addon.mod_forum.modeflatnewestfirst' | translate" iconAction="fas-arrow-up" (action)="changeSort('flat-newest')">
 | 
			
		||||
        </core-context-menu-item>
 | 
			
		||||
        <core-context-menu-item [hidden]="sort == 'nested'" [priority]="400" [content]="'addon.mod_forum.modenested' | translate"
 | 
			
		||||
            iconAction="fas-exchange-alt" (action)="changeSort('nested')">
 | 
			
		||||
            iconAction="fas-right-left" (action)="changeSort('nested')">
 | 
			
		||||
        </core-context-menu-item>
 | 
			
		||||
        <core-context-menu-item [hidden]="!discussion || !discussion.canlock || discussion.locked" [priority]="300"
 | 
			
		||||
            [content]="'addon.mod_forum.lockdiscussion' | translate" iconAction="fas-lock" (action)="setLockState(true)">
 | 
			
		||||
@ -54,7 +54,7 @@
 | 
			
		||||
            (action)="toggleFavouriteState(false)">
 | 
			
		||||
        </core-context-menu-item>
 | 
			
		||||
        <core-context-menu-item [hidden]="!externalUrl" [priority]="100" [content]="'core.openinbrowser' | translate" [href]="externalUrl"
 | 
			
		||||
            iconAction="fas-external-link-alt" [showBrowserWarning]="false"></core-context-menu-item>
 | 
			
		||||
            iconAction="fas-up-right-from-square" [showBrowserWarning]="false"></core-context-menu-item>
 | 
			
		||||
    </core-context-menu>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
<ion-content [core-swipe-navigation]="discussions" class="limited-width">
 | 
			
		||||
@ -66,7 +66,7 @@
 | 
			
		||||
        <!-- Discussion replies found to be synchronized -->
 | 
			
		||||
        <ion-card class="core-warning-card" *ngIf="postHasOffline || hasOfflineRatings">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ 'core.hasdatatosync' | translate:{$a: discussionStr} }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
@ -74,7 +74,7 @@
 | 
			
		||||
        <!-- Cut-off date or due date message -->
 | 
			
		||||
        <ion-card class="core-info-card" *ngIf="availabilityMessage">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ availabilityMessage }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
@ -89,7 +89,7 @@
 | 
			
		||||
        <!-- Q&A message. -->
 | 
			
		||||
        <ion-card class="core-info-card" *ngIf="showQAMessage">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ 'addon.mod_forum.qandanotify' | translate }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -67,7 +67,7 @@
 | 
			
		||||
                </core-attachments>
 | 
			
		||||
            </div>
 | 
			
		||||
            <ion-item *ngIf="showGroups && groupName && !newDiscussion.postToAllGroups" class="addon-forum-group-info">
 | 
			
		||||
                <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ 'addon.mod_forum.postingroup' | translate:{groupname: groupName} }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
            <ion-item class="addon-forum-new-discussion-buttons">
 | 
			
		||||
 | 
			
		||||
@ -6,12 +6,12 @@
 | 
			
		||||
    </ion-button>
 | 
			
		||||
 | 
			
		||||
    <ion-button *ngIf="!showLoading && glossary" (click)="toggleSearch()" [attr.aria-label]="'addon.mod_glossary.bysearch' | translate">
 | 
			
		||||
        <ion-icon name="fas-search" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
 | 
			
		||||
    <ion-button *ngIf="!showLoading" fill="clear" (click)="openModuleSummary()" aria-haspopup="true"
 | 
			
		||||
        [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@
 | 
			
		||||
    </core-context-menu>
 | 
			
		||||
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
@ -26,7 +26,7 @@
 | 
			
		||||
    <!-- Offline disabled. -->
 | 
			
		||||
    <ion-card class="core-warning-card" *ngIf="!siteCanDownload && playing">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label>
 | 
			
		||||
                {{ 'core.h5p.offlinedisabled' | translate }} {{ 'addon.mod_h5pactivity.offlinedisabledwarning' | translate }}
 | 
			
		||||
            </ion-label>
 | 
			
		||||
@ -36,7 +36,7 @@
 | 
			
		||||
    <!-- Preview mode. -->
 | 
			
		||||
    <ion-card class="core-warning-card" *ngIf="accessInfo && !trackComponent">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label>
 | 
			
		||||
                {{ 'addon.mod_h5pactivity.previewmode' | translate }}
 | 
			
		||||
            </ion-label>
 | 
			
		||||
 | 
			
		||||
@ -65,7 +65,7 @@
 | 
			
		||||
                        <ion-label>
 | 
			
		||||
                            <p class="item-heading">{{ 'addon.mod_h5pactivity.outcome' | translate }}</p>
 | 
			
		||||
                            <p *ngIf="attempt.success !== null && attempt.success">
 | 
			
		||||
                                <ion-icon name="fas-check-circle" aria-hidden="true"></ion-icon>
 | 
			
		||||
                                <ion-icon name="fas-circle-check" aria-hidden="true"></ion-icon>
 | 
			
		||||
                                {{ 'addon.mod_h5pactivity.attempt_success_pass' | translate }}
 | 
			
		||||
                            </p>
 | 
			
		||||
                            <p *ngIf="attempt.success !== null && !attempt.success">
 | 
			
		||||
@ -152,7 +152,7 @@
 | 
			
		||||
 | 
			
		||||
                    <!-- Result doesn't support tracking. -->
 | 
			
		||||
                    <ion-item class="ion-text-wrap core-warning-item" *ngIf="!result.track">
 | 
			
		||||
                        <ion-icon slot="start" name="fas-exclamation-triangle" color="warning" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        <ion-icon slot="start" name="fas-triangle-exclamation" color="warning" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        <ion-label>
 | 
			
		||||
                            {{ 'addon.mod_h5pactivity.no_compatible_track' | translate:{$a: result.interactiontype} }}
 | 
			
		||||
                        </ion-label>
 | 
			
		||||
@ -171,7 +171,7 @@
 | 
			
		||||
        {{ answer.answer }}
 | 
			
		||||
    </p>
 | 
			
		||||
    <p *ngIf="answer.incorrect">
 | 
			
		||||
        <ion-icon name="fas-times" [attr.aria-label]="'addon.mod_h5pactivity.answer_incorrect' | translate" color="danger">
 | 
			
		||||
        <ion-icon name="fas-xmark" [attr.aria-label]="'addon.mod_h5pactivity.answer_incorrect' | translate" color="danger">
 | 
			
		||||
        </ion-icon>
 | 
			
		||||
        {{ answer.answer }}
 | 
			
		||||
    </p>
 | 
			
		||||
@ -179,7 +179,7 @@
 | 
			
		||||
        {{ answer.answer }}
 | 
			
		||||
    </p>
 | 
			
		||||
    <p *ngIf="answer.checked">
 | 
			
		||||
        <ion-icon name="fas-check-circle" [attr.aria-label]="'addon.mod_h5pactivity.answer_checked' | translate">
 | 
			
		||||
        <ion-icon name="fas-circle-check" [attr.aria-label]="'addon.mod_h5pactivity.answer_checked' | translate">
 | 
			
		||||
        </ion-icon>
 | 
			
		||||
    </p>
 | 
			
		||||
    <p *ngIf="answer.pass">
 | 
			
		||||
@ -187,7 +187,7 @@
 | 
			
		||||
        </ion-icon>
 | 
			
		||||
    </p>
 | 
			
		||||
    <p *ngIf="answer.fail">
 | 
			
		||||
        <ion-icon name="fas-times" [attr.aria-label]="'addon.mod_h5pactivity.answer_fail' | translate" color="danger">
 | 
			
		||||
        <ion-icon name="fas-xmark" [attr.aria-label]="'addon.mod_h5pactivity.answer_fail' | translate" color="danger">
 | 
			
		||||
        </ion-icon>
 | 
			
		||||
    </p>
 | 
			
		||||
</ng-template>
 | 
			
		||||
 | 
			
		||||
@ -101,7 +101,7 @@
 | 
			
		||||
                        [alt]="'addon.mod_h5pactivity.attempt_completion_no' | translate">
 | 
			
		||||
                </ion-col>
 | 
			
		||||
                <ion-col class="ion-text-center addon-mod_h5pactivity-table-success-col">
 | 
			
		||||
                    <ion-icon *ngIf="attempt.success !== null && attempt.success" name="fas-check-circle"
 | 
			
		||||
                    <ion-icon *ngIf="attempt.success !== null && attempt.success" name="fas-circle-check"
 | 
			
		||||
                        [attr.aria-label]="'addon.mod_h5pactivity.attempt_success_pass' | translate">
 | 
			
		||||
                    </ion-icon>
 | 
			
		||||
                    <ion-icon *ngIf="attempt.success !== null && !attempt.success" name="far-circle"
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" slot="icon-only" aria-hidden=true></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
 | 
			
		||||
@ -23,7 +23,7 @@
 | 
			
		||||
 | 
			
		||||
        <ion-card class="core-warning-card" *ngIf="warning">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label><span [innerHTML]="warning"></span></ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
@ -20,7 +20,7 @@
 | 
			
		||||
                <!-- Prevent access messages. Only show the first one. -->
 | 
			
		||||
                <ion-card class="core-info-card" *ngIf="lesson && preventReasons.length">
 | 
			
		||||
                    <ion-item>
 | 
			
		||||
                        <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        <ion-label [innerHTML]="preventReasons[0].message"></ion-label>
 | 
			
		||||
                    </ion-item>
 | 
			
		||||
                </ion-card>
 | 
			
		||||
@ -263,7 +263,7 @@
 | 
			
		||||
                {{ 'core.start' | translate }}
 | 
			
		||||
            </ion-button>
 | 
			
		||||
            <ion-button class="ion-text-wrap ion-margin" expand="block" fill="outline" *ngIf="canManage" (click)="start(false)">
 | 
			
		||||
                <ion-icon name="fas-search" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-magnifying-glass" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                {{ 'addon.mod_lesson.preview' | translate }}
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ng-container>
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,7 @@
 | 
			
		||||
        <!-- Info messages. Only show the first one. -->
 | 
			
		||||
        <ion-card class="core-info-card" *ngIf="lesson && messages?.length">
 | 
			
		||||
            <ion-item class="ion-text-wrap">
 | 
			
		||||
                <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ messages[0].message }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
@ -183,7 +183,7 @@
 | 
			
		||||
                </ion-item>
 | 
			
		||||
                <ion-card class="core-info-card" *ngIf="lesson?.progressbar && canManage">
 | 
			
		||||
                    <ion-item class="ion-text-wrap">
 | 
			
		||||
                        <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        <ion-label>{{ 'addon.mod_lesson.progressbarteacherwarning2' | translate }}</ion-label>
 | 
			
		||||
                    </ion-item>
 | 
			
		||||
                </ion-card>
 | 
			
		||||
@ -192,7 +192,7 @@
 | 
			
		||||
            <!-- End of lesson reached. -->
 | 
			
		||||
            <ion-card class="core-warning-card" *ngIf="eolData && !processData && eolData.offline?.value">
 | 
			
		||||
                <ion-item>
 | 
			
		||||
                    <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-label>{{ 'addon.mod_lesson.finishretakeoffline' | translate }}</ion-label>
 | 
			
		||||
                </ion-item>
 | 
			
		||||
            </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
@ -17,7 +17,7 @@
 | 
			
		||||
        <div class="list-item-limited-width">
 | 
			
		||||
            <ion-button expand="block" (click)="launch()" class="ion-margin ion-text-wrap">
 | 
			
		||||
                {{ 'addon.mod_lti.launchactivity' | translate }}
 | 
			
		||||
                <ion-icon name="fas-external-link-alt" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-up-right-from-square" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -60,7 +60,7 @@ export class AddonModLtiModuleHandlerService extends CoreModuleHandlerBase imple
 | 
			
		||||
        const data = await super.getData(module, courseId, sectionId, forCoursePage);
 | 
			
		||||
        data.showDownloadButton = false;
 | 
			
		||||
        data.buttons = [{
 | 
			
		||||
            icon: 'fas-external-link-alt',
 | 
			
		||||
            icon: 'fas-up-right-from-square',
 | 
			
		||||
            label: 'addon.mod_lti.launchactivity',
 | 
			
		||||
            action: (event: Event, module: CoreCourseModuleData, courseId: number): void => {
 | 
			
		||||
                // Launch the LTI.
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,7 @@
 | 
			
		||||
 | 
			
		||||
    <ion-card class="core-warning-card" *ngIf="warning">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label><span [innerHTML]="warning"></span></ion-label>
 | 
			
		||||
        </ion-item>
 | 
			
		||||
    </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
@ -209,7 +209,7 @@
 | 
			
		||||
                unsupportedRules.length || behaviourSupported === false)" expand="block" [href]="module.url" core-link
 | 
			
		||||
                [showBrowserWarning]="false">
 | 
			
		||||
                {{ 'core.openinbrowser' | translate }}
 | 
			
		||||
                <ion-icon name="fas-external-link-alt" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-up-right-from-square" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
@ -22,18 +22,18 @@
 | 
			
		||||
                    <span *ngIf="!question.number">{{ 'core.question.information' | translate }}</span>
 | 
			
		||||
                </ion-label>
 | 
			
		||||
 | 
			
		||||
                <ion-icon *ngIf="!question.number" name="fas-info-circle" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon *ngIf="question.stateClass == 'core-question-requiresgrading'" name="fas-question-circle"
 | 
			
		||||
                <ion-icon *ngIf="!question.number" name="fas-circle-info" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon *ngIf="question.stateClass == 'core-question-requiresgrading'" name="fas-circle-question"
 | 
			
		||||
                    [attr.aria-label]="question.status" slot="end">
 | 
			
		||||
                </ion-icon>
 | 
			
		||||
                <ion-icon *ngIf="question.stateClass == 'core-question-correct'" name="fas-check" color="success"
 | 
			
		||||
                    [attr.aria-label]="question.status" slot="end">
 | 
			
		||||
                </ion-icon>
 | 
			
		||||
                <ion-icon *ngIf="question.stateClass == 'core-question-partiallycorrect'" name="fas-check-square" color="warning"
 | 
			
		||||
                <ion-icon *ngIf="question.stateClass == 'core-question-partiallycorrect'" name="fas-square-check" color="warning"
 | 
			
		||||
                    [attr.aria-label]="question.status" slot="end">
 | 
			
		||||
                </ion-icon>
 | 
			
		||||
                <ion-icon *ngIf="question.stateClass == 'core-question-incorrect' ||
 | 
			
		||||
                    question.stateClass == 'core-question-notanswered'" name="fas-times" color="danger" [attr.aria-label]="question.status"
 | 
			
		||||
                    question.stateClass == 'core-question-notanswered'" name="fas-xmark" color="danger" [attr.aria-label]="question.status"
 | 
			
		||||
                    slot="end">
 | 
			
		||||
                </ion-icon>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
 | 
			
		||||
@ -64,7 +64,7 @@
 | 
			
		||||
        <div collapsible-footer appearOnBottom *ngIf="loaded && attempt && showReviewColumn && attempt.finished" slot="fixed">
 | 
			
		||||
            <div class="list-item-limited-width">
 | 
			
		||||
                <ion-button class="ion-margin ion-text-wrap" expand="block" (click)="reviewAttempt()">
 | 
			
		||||
                    <ion-icon name="fas-search" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-icon name="fas-magnifying-glass" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    {{ 'addon.mod_quiz.review' | translate }}
 | 
			
		||||
                </ion-button>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,7 @@
 | 
			
		||||
            <ion-button fill="clear" id="addon-mod_quiz-connection-error-button" [hidden]="!autoSaveError"
 | 
			
		||||
                (click)="showConnectionError($event)" [attr.aria-label]="'addon.mod_quiz.connectionerror' | translate"
 | 
			
		||||
                aria-haspopup="dialog">
 | 
			
		||||
                <ion-icon name="fas-exclamation-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-circle-exclamation" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
            <ion-button *ngIf="navigation.length" [attr.aria-label]="'addon.mod_quiz.opentoc' | translate" (click)="openNavigation()">
 | 
			
		||||
                <ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
@ -154,7 +154,7 @@
 | 
			
		||||
                <ion-button *ngIf="preventSubmitMessages.length" expand="block" class="ion-margin ion-text-wrap" [href]="moduleUrl"
 | 
			
		||||
                    core-link [showBrowserWarning]="false">
 | 
			
		||||
                    {{ 'core.openinbrowser' | translate }}
 | 
			
		||||
                    <ion-icon name="fas-external-link-alt" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-icon name="fas-up-right-from-square" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
                </ion-button>
 | 
			
		||||
 | 
			
		||||
                <!-- Button to submit the quiz. -->
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,7 @@
 | 
			
		||||
 | 
			
		||||
    <ion-card class="core-warning-card" *ngIf="warning">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label><span [innerHTML]="warning"></span></ion-label>
 | 
			
		||||
        </ion-item>
 | 
			
		||||
    </ion-card>
 | 
			
		||||
@ -66,7 +66,7 @@
 | 
			
		||||
                        <ion-grid *ngIf="currentStatus === outdatedStatus" class="addon-mod_resource-outdated">
 | 
			
		||||
                            <ion-row class="ion-align-items-center">
 | 
			
		||||
                                <ion-col size="auto">
 | 
			
		||||
                                    <ion-icon color="warning" name="fas-exclamation-triangle" aria-hidden="true"></ion-icon>
 | 
			
		||||
                                    <ion-icon color="warning" name="fas-triangle-exclamation" aria-hidden="true"></ion-icon>
 | 
			
		||||
                                </ion-col>
 | 
			
		||||
                                <ion-col>
 | 
			
		||||
                                    <p><strong>{{ 'addon.mod_resource.resourcestatusoutdated' | translate }}</strong></p>
 | 
			
		||||
@ -83,7 +83,7 @@
 | 
			
		||||
        <div class="list-item-limited-width" *ngIf="mode == 'external'">
 | 
			
		||||
            <ion-button *ngIf="isIOS && (!shouldOpenInBrowser || !isOnline)" expand="block" fill="outline"
 | 
			
		||||
                (click)="open(openFileAction.OPEN_WITH)" class="ion-margin ion-text-wrap">
 | 
			
		||||
                <ion-icon name="far-share-square" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="far-share-from-square" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                {{ 'core.openwith' | translate }}
 | 
			
		||||
            </ion-button>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -83,7 +83,7 @@ export class AddonModResourceModuleHandlerService extends CoreModuleHandlerBase
 | 
			
		||||
        };
 | 
			
		||||
        handlerData.buttons = [{
 | 
			
		||||
            hidden: true,
 | 
			
		||||
            icon: openWithPicker ? 'fas-share-square' : 'fas-file',
 | 
			
		||||
            icon: openWithPicker ? 'fas-share-from-square' : 'fas-file',
 | 
			
		||||
            label: module.name + ': ' + Translate.instant(openWithPicker ? 'core.openwith' : 'addon.mod_resource.openthefile'),
 | 
			
		||||
            action: async (event: Event, module: CoreCourseModuleData, courseId: number): Promise<void> => {
 | 
			
		||||
                const hide = await this.hideOpenButton(module);
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
@ -16,7 +16,7 @@
 | 
			
		||||
    <!-- Warning message. -->
 | 
			
		||||
    <ion-card class="core-info-card" *ngIf="scorm && scorm.warningMessage">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label>{{ scorm.warningMessage }}</ion-label>
 | 
			
		||||
        </ion-item>
 | 
			
		||||
    </ion-card>
 | 
			
		||||
@ -168,7 +168,7 @@
 | 
			
		||||
                </ion-item>
 | 
			
		||||
                <ion-button class="ion-margin ion-text-wrap" expand="block" [href]="module.url" core-link [showBrowserWarning]="false">
 | 
			
		||||
                    {{ 'core.openinbrowser' | translate }}
 | 
			
		||||
                    <ion-icon name="fas-external-link-alt" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-icon name="fas-up-right-from-square" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
                </ion-button>
 | 
			
		||||
            </ng-container>
 | 
			
		||||
 | 
			
		||||
@ -201,7 +201,7 @@
 | 
			
		||||
                        <!-- Open mode (Preview or Normal) -->
 | 
			
		||||
                        <ion-button *ngIf="!scorm.hidebrowse" expand="block" fill="outline" (click)="open($event, true)"
 | 
			
		||||
                            class="ion-text-wrap ion-margin">
 | 
			
		||||
                            <ion-icon name="fas-search" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                            <ion-icon name="fas-magnifying-glass" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                            {{ 'addon.mod_scorm.browse' | translate }}
 | 
			
		||||
                        </ion-button>
 | 
			
		||||
                        <ion-button expand="block" (click)="open($event)" class="ion-text-wrap ion-margin">
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
 | 
			
		||||
@ -49,17 +49,17 @@ const STATUSES = {
 | 
			
		||||
    'n': 'notattempted',
 | 
			
		||||
};
 | 
			
		||||
const STATUS_TO_ICON = {
 | 
			
		||||
    assetc: 'far-file-archive',
 | 
			
		||||
    asset: 'far-file-archive',
 | 
			
		||||
    assetc: 'far-file-zipper',
 | 
			
		||||
    asset: 'far-file-zipper',
 | 
			
		||||
    browsed: 'fas-book',
 | 
			
		||||
    completed: 'far-check-square',
 | 
			
		||||
    failed: 'fas-times',
 | 
			
		||||
    incomplete: 'far-edit',
 | 
			
		||||
    completed: 'far-square-check',
 | 
			
		||||
    failed: 'fas-xmark',
 | 
			
		||||
    incomplete: 'far-pen-to-square',
 | 
			
		||||
    minus: 'fas-minus',
 | 
			
		||||
    notattempted: 'far-square',
 | 
			
		||||
    passed: 'fas-check',
 | 
			
		||||
    plus: 'fas-plus',
 | 
			
		||||
    popdown: 'far-window-close',
 | 
			
		||||
    popdown: 'far-rectangle-xmark',
 | 
			
		||||
    popup: 'fas-window-restore',
 | 
			
		||||
    suspend: 'fas-pause',
 | 
			
		||||
    wait: 'far-clock',
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
@ -120,7 +120,7 @@
 | 
			
		||||
        <div class="list-item-limited-width" *ngIf="survey && (survey.surveydone || (!hasOffline && questions && questions.length))">
 | 
			
		||||
            <ion-button class="ion-text-wrap ion-margin" expand="block" [href]="module.url" core-link *ngIf="survey.surveydone">
 | 
			
		||||
                {{ 'addon.mod_survey.results' | translate }}
 | 
			
		||||
                <ion-icon name="fas-external-link-alt" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-up-right-from-square" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
 | 
			
		||||
            <ion-button expand="block" class="ion-text-wrap ion-margin" (click)="submit()" [disabled]="!isValidResponse()"
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -14,7 +14,7 @@
 | 
			
		||||
 | 
			
		||||
    <core-context-menu>
 | 
			
		||||
        <core-context-menu-item *ngIf="canEdit && (isOnline || pageIsOffline)" [priority]="590" [content]="'core.edit' | translate"
 | 
			
		||||
            iconAction="fas-edit" (action)="goToEditPage()">
 | 
			
		||||
            iconAction="fas-pen-to-square" (action)="goToEditPage()">
 | 
			
		||||
        </core-context-menu-item>
 | 
			
		||||
        <core-context-menu-item *ngIf="canEdit" [priority]="580" [content]="'addon.mod_wiki.createpage' | translate" iconAction="fas-plus"
 | 
			
		||||
            (action)="goToNewPage()">
 | 
			
		||||
@ -22,7 +22,7 @@
 | 
			
		||||
    </core-context-menu>
 | 
			
		||||
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
@ -38,7 +38,7 @@
 | 
			
		||||
        <!-- Wiki has something offline. -->
 | 
			
		||||
        <ion-card class="core-warning-card" *ngIf="pageIsOffline || hasOffline">
 | 
			
		||||
            <ion-item class="ion-text-wrap">
 | 
			
		||||
                <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>
 | 
			
		||||
                    <span *ngIf="pageIsOffline">{{ 'core.hasdatatosync' | translate:{$a: pageStr} }}</span>
 | 
			
		||||
                    <span *ngIf="!pageIsOffline">{{ 'core.hasdatatosync' | translate:{$a: moduleName} }}</span>
 | 
			
		||||
@ -49,7 +49,7 @@
 | 
			
		||||
        <!-- Page warning. -->
 | 
			
		||||
        <ion-card class="core-warning-card" *ngIf="pageWarning">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ pageWarning }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
@ -60,7 +60,7 @@
 | 
			
		||||
            <core-format-text *ngIf="pageContent" [component]="component" [componentId]="componentId" [text]="pageContent"
 | 
			
		||||
                contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
 | 
			
		||||
            </core-format-text>
 | 
			
		||||
            <core-empty-box *ngIf="!pageContent" icon="fas-file-alt" [message]="'addon.mod_wiki.nocontent' | translate">
 | 
			
		||||
            <core-empty-box *ngIf="!pageContent" icon="fas-file-lines" [message]="'addon.mod_wiki.nocontent' | translate">
 | 
			
		||||
            </core-empty-box>
 | 
			
		||||
        </article>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
@ -15,7 +15,7 @@
 | 
			
		||||
        <ion-list>
 | 
			
		||||
            <!-- Go to "home". -->
 | 
			
		||||
            <ion-item class="ion-text-wrap" *ngIf="homeView" (click)="goToWikiHome()" button detail="true">
 | 
			
		||||
                <ion-icon name="fas-home" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-house" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ 'addon.mod_wiki.gowikihome' | translate }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
            <ng-container *ngFor="let letter of map">
 | 
			
		||||
@ -26,7 +26,7 @@
 | 
			
		||||
                </ion-item-divider>
 | 
			
		||||
                <ion-item class="ion-text-wrap" *ngFor="let page of letter.pages" (click)="goToPage(page)"
 | 
			
		||||
                    [attr.aria-current]="selectedTitle == page.title ? 'page' : 'false'" button detail="false">
 | 
			
		||||
                    <ion-icon name="fas-home" slot="start" *ngIf="page.firstpage" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-icon name="fas-house" slot="start" *ngIf="page.firstpage" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-label>
 | 
			
		||||
                        <core-format-text [text]="page.title" contextLevel="module" [contextInstanceId]="moduleId" [courseId]="courseId">
 | 
			
		||||
                        </core-format-text>
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<!-- Buttons to add to the header. -->
 | 
			
		||||
<core-navbar-buttons slot="end">
 | 
			
		||||
    <ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
 | 
			
		||||
        <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
 | 
			
		||||
@ -24,17 +24,17 @@
 | 
			
		||||
            <ion-item button class="ion-text-wrap" *ngFor="let task of phases[workshop!.phase].tasks"
 | 
			
		||||
                [class.item-dimmed]="task.code == 'submit' && !showSubmit" (click)="runTask(task)" detail="false">
 | 
			
		||||
                <ion-icon slot="start" name="far-circle" *ngIf="task.completed == null" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon slot="start" name="fas-times-circle" color="danger" *ngIf="task.completed == ''" aria-hidden="true">
 | 
			
		||||
                <ion-icon slot="start" name="fas-circle-xmark" color="danger" *ngIf="task.completed == ''" aria-hidden="true">
 | 
			
		||||
                </ion-icon>
 | 
			
		||||
                <ion-icon slot="start" name="fas-info-circle" color="info" *ngIf="task.completed == 'info'" aria-hidden="true">
 | 
			
		||||
                <ion-icon slot="start" name="fas-circle-info" color="info" *ngIf="task.completed == 'info'" aria-hidden="true">
 | 
			
		||||
                </ion-icon>
 | 
			
		||||
                <ion-icon slot="start" name="fas-check-circle" color="success" *ngIf="task.completed == '1'" aria-hidden="true">
 | 
			
		||||
                <ion-icon slot="start" name="fas-circle-check" color="success" *ngIf="task.completed == '1'" aria-hidden="true">
 | 
			
		||||
                </ion-icon>
 | 
			
		||||
                <ion-label>
 | 
			
		||||
                    <p class="item-heading">{{task.title}}</p>
 | 
			
		||||
                    <p *ngIf="task.details" [innerHTML]="task.details"></p>
 | 
			
		||||
                </ion-label>
 | 
			
		||||
                <ion-icon slot="end" *ngIf="task.link && task.code != 'submit'" name="fas-external-link-alt" aria-hidden="true">
 | 
			
		||||
                <ion-icon slot="end" *ngIf="task.link && task.code != 'submit'" name="fas-up-right-from-square" aria-hidden="true">
 | 
			
		||||
                </ion-icon>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ng-container>
 | 
			
		||||
@ -220,7 +220,7 @@
 | 
			
		||||
            </ion-button>
 | 
			
		||||
            <ion-button expand="block" *ngIf="access.modifyingsubmissionallowed && submission" (click)="gotoSubmit()"
 | 
			
		||||
                class="ion-text-wrap ion-margin">
 | 
			
		||||
                <ion-icon slot="start" name="fas-edit" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon slot="start" name="fas-pen-to-square" aria-hidden="true"></ion-icon>
 | 
			
		||||
                {{ 'addon.mod_workshop.editsubmission' | translate }}
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" slot="icon-only" aria-hidden=true></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
@ -22,28 +22,28 @@
 | 
			
		||||
                </ion-label>
 | 
			
		||||
            </ion-item-divider>
 | 
			
		||||
            <ion-item class="ion-text-wrap" *ngIf="phase.switchUrl" [href]="phase.switchUrl" detail="false">
 | 
			
		||||
                <ion-icon slot="start" name="fas-exchange-alt" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon slot="start" name="fas-right-left" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>
 | 
			
		||||
                    <p>{{ 'addon.mod_workshop.switchphase' + phase.code | translate }}</p>
 | 
			
		||||
                </ion-label>
 | 
			
		||||
                <ion-icon slot="end" name="fas-external-link-alt" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon slot="end" name="fas-up-right-from-square" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
            <ion-item class="ion-text-wrap" *ngFor="let task of phase.tasks"
 | 
			
		||||
                [class.item-dimmed]="phase.code != workshopPhase || (task.code == 'submit' && !showSubmit)" (click)="runTask(task)"
 | 
			
		||||
                detail="false" button>
 | 
			
		||||
                <ion-icon slot="start" name="far-circle" *ngIf="task.completed == null"
 | 
			
		||||
                    [attr.aria-label]="'addon.mod_workshop.tasktodo' | translate"></ion-icon>
 | 
			
		||||
                <ion-icon slot="start" name="fas-times-circle" color="danger" *ngIf="task.completed == ''"
 | 
			
		||||
                <ion-icon slot="start" name="fas-circle-xmark" color="danger" *ngIf="task.completed == ''"
 | 
			
		||||
                    [attr.aria-label]="'addon.mod_workshop.taskfail' | translate"></ion-icon>
 | 
			
		||||
                <ion-icon slot="start" name="fas-info-circle" color="info" *ngIf="task.completed == 'info'"
 | 
			
		||||
                <ion-icon slot="start" name="fas-circle-info" color="info" *ngIf="task.completed == 'info'"
 | 
			
		||||
                    [attr.aria-label]="'addon.mod_workshop.taskinfo' | translate"></ion-icon>
 | 
			
		||||
                <ion-icon slot="start" name="fas-check-circle" color="success" *ngIf="task.completed == '1'"
 | 
			
		||||
                <ion-icon slot="start" name="fas-circle-check" color="success" *ngIf="task.completed == '1'"
 | 
			
		||||
                    [attr.aria-label]="'addon.mod_workshop.taskdone' | translate"></ion-icon>
 | 
			
		||||
                <ion-label>
 | 
			
		||||
                    <p class="item-heading ion-text-wrap">{{task.title}}</p>
 | 
			
		||||
                    <p *ngIf="task.details" [innerHTML]="task.details"></p>
 | 
			
		||||
                </ion-label>
 | 
			
		||||
                <ion-icon slot="end" *ngIf="task.link && task.code != 'submit'" name="fas-external-link-alt" aria-hidden="true">
 | 
			
		||||
                <ion-icon slot="end" *ngIf="task.link && task.code != 'submit'" name="fas-up-right-from-square" aria-hidden="true">
 | 
			
		||||
                </ion-icon>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ng-container>
 | 
			
		||||
 | 
			
		||||
@ -33,7 +33,7 @@
 | 
			
		||||
            <ion-item class="ion-text-wrap" *ngIf="canEdit || canDelete">
 | 
			
		||||
                <ion-label>
 | 
			
		||||
                    <ion-button expand="block" *ngIf="canEdit" (click)="editSubmission()">
 | 
			
		||||
                        <ion-icon name="fas-edit" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        <ion-icon name="fas-pen-to-square" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        {{ 'addon.mod_workshop.editsubmission' | translate }}
 | 
			
		||||
                    </ion-button>
 | 
			
		||||
                    <ion-button expand="block" *ngIf="!submission.deleted && canDelete" color="danger" (click)="deleteSubmission()">
 | 
			
		||||
@ -42,7 +42,7 @@
 | 
			
		||||
                    </ion-button>
 | 
			
		||||
                    <ion-button expand="block" fill="outline" *ngIf="submission.deleted && canDelete" color="danger"
 | 
			
		||||
                        (click)="undoDeleteSubmission()">
 | 
			
		||||
                        <ion-icon name="fas-undo-alt" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        <ion-icon name="fas-rotate-left" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        {{ 'core.restore' | translate }}
 | 
			
		||||
                    </ion-button>
 | 
			
		||||
                </ion-label>
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" slot="icon-only" aria-hidden=true></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
 | 
			
		||||
@ -52,7 +52,7 @@
 | 
			
		||||
 | 
			
		||||
        <ion-card class="core-warning-card" *ngIf="hasOffline">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>
 | 
			
		||||
                    {{ 'core.thereisdatatosync' | translate:{$a: 'addon.notes.notes' | translate | lowercase } }}
 | 
			
		||||
                </ion-label>
 | 
			
		||||
@ -84,7 +84,7 @@
 | 
			
		||||
                    </p>
 | 
			
		||||
                    <ion-button *ngIf="note.deleted" slot="end" fill="clear" color="danger" (click)="undoDeleteNote($event, note)"
 | 
			
		||||
                        [attr.aria-label]="'core.restore' | translate">
 | 
			
		||||
                        <ion-icon name="fas-undo-alt" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        <ion-icon name="fas-rotate-left" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    </ion-button>
 | 
			
		||||
                    <ion-button *ngIf="showDelete && !note.deleted && (type != 'personal' || note.usermodified == currentUserId)" slot="end"
 | 
			
		||||
                        fill="clear" [@coreSlideInOut]="'fromRight'" color="danger" (click)="deleteNote($event, note)"
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,7 @@
 | 
			
		||||
        <ion-label>
 | 
			
		||||
            <ion-card *ngIf="!question.readOnly" class="core-info-card">
 | 
			
		||||
                <ion-item>
 | 
			
		||||
                    <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-label>{{ 'core.question.howtodraganddrop' | translate }}</ion-label>
 | 
			
		||||
                </ion-item>
 | 
			
		||||
            </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,7 @@
 | 
			
		||||
        <ion-label>
 | 
			
		||||
            <ion-card *ngIf="!question.readOnly" class="core-info-card">
 | 
			
		||||
                <ion-item>
 | 
			
		||||
                    <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <ion-label>{{ 'core.question.howtodraganddrop' | translate }}</ion-label>
 | 
			
		||||
                </ion-item>
 | 
			
		||||
            </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
    <div class="fake-ion-item ion-text-wrap" [hidden]="!question.loaded">
 | 
			
		||||
        <ion-card *ngIf="!question.readOnly" class="core-info-card">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ 'core.question.howtodraganddrop' | translate }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -24,7 +24,7 @@
 | 
			
		||||
        </ion-select>
 | 
			
		||||
        <ion-icon *ngIf="row.isCorrect === 1" class="core-correct-icon" name="fas-check" color="success" slot="end"
 | 
			
		||||
            [attr.aria-label]="'core.question.correct' | translate"></ion-icon>
 | 
			
		||||
        <ion-icon *ngIf="row.isCorrect === 0" class="core-correct-icon" name="fas-times" color="danger" slot="end"
 | 
			
		||||
        <ion-icon *ngIf="row.isCorrect === 0" class="core-correct-icon" name="fas-xmark" color="danger" slot="end"
 | 
			
		||||
            [attr.aria-label]="'core.question.incorrect' | translate"></ion-icon>
 | 
			
		||||
    </ion-item>
 | 
			
		||||
</section>
 | 
			
		||||
 | 
			
		||||
@ -35,7 +35,7 @@
 | 
			
		||||
 | 
			
		||||
            <ion-icon *ngIf="option.isCorrect === 1" class="core-correct-icon" name="fas-check" color="success"
 | 
			
		||||
                [attr.aria-label]="'core.question.correct' | translate"></ion-icon>
 | 
			
		||||
            <ion-icon *ngIf="option.isCorrect === 0" class="core-correct-icon" name="fas-times" color="danger"
 | 
			
		||||
            <ion-icon *ngIf="option.isCorrect === 0" class="core-correct-icon" name="fas-xmark" color="danger"
 | 
			
		||||
                [attr.aria-label]="'core.question.incorrect' | translate"></ion-icon>
 | 
			
		||||
 | 
			
		||||
            <!-- ion-checkbox doesn't use an input. Create a hidden input to hold the value. -->
 | 
			
		||||
@ -63,7 +63,7 @@
 | 
			
		||||
 | 
			
		||||
            <ion-icon *ngIf="option.isCorrect === 1" class="core-correct-icon" name="fas-check" color="success"
 | 
			
		||||
                [attr.aria-label]="'core.question.correct' | translate"></ion-icon>
 | 
			
		||||
            <ion-icon *ngIf="option.isCorrect === 0" class="core-correct-icon" name="fas-times" color="danger"
 | 
			
		||||
            <ion-icon *ngIf="option.isCorrect === 0" class="core-correct-icon" name="fas-xmark" color="danger"
 | 
			
		||||
                [attr.aria-label]="'core.question.incorrect' | translate"></ion-icon>
 | 
			
		||||
        </ion-item>
 | 
			
		||||
        <ion-button *ngIf="!question.disabled" class="ion-text-wrap ion-margin-top" expand="block" fill="outline"
 | 
			
		||||
 | 
			
		||||
@ -40,7 +40,7 @@ export class AddonStorageManagerSettingsHandlerService implements CoreSettingsHa
 | 
			
		||||
     */
 | 
			
		||||
    getDisplayData(): CoreSettingsHandlerData {
 | 
			
		||||
        return {
 | 
			
		||||
            icon: 'fas-archive',
 | 
			
		||||
            icon: 'fas-box-archive',
 | 
			
		||||
            title: 'addon.storagemanager.managedownloads',
 | 
			
		||||
            page: AddonStorageManagerSettingsHandlerService.PAGE_NAME,
 | 
			
		||||
            class: 'addon-storagemanager-settings-handler',
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@
 | 
			
		||||
    <!-- Download button. -->
 | 
			
		||||
    <ion-button *ngIf="status == statusNotDownloaded" fill="clear" (click)="download($event, false)" @coreShowHideAnimation
 | 
			
		||||
        [attr.aria-label]="(statusTranslatable || 'core.download') | translate">
 | 
			
		||||
        <ion-icon slot="icon-only" name="fas-cloud-download-alt" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon slot="icon-only" name="fas-cloud-arrow-down" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
 | 
			
		||||
    <!-- Refresh button. -->
 | 
			
		||||
 | 
			
		||||
@ -89,7 +89,7 @@ export class CoreFileComponent implements OnInit, OnDestroy {
 | 
			
		||||
 | 
			
		||||
        this.isIOS = CorePlatform.isIOS();
 | 
			
		||||
        this.defaultIsOpenWithPicker = CoreFileHelper.defaultIsOpenWithPicker();
 | 
			
		||||
        this.openButtonIcon = this.defaultIsOpenWithPicker ? 'fas-file' : 'fas-share-square';
 | 
			
		||||
        this.openButtonIcon = this.defaultIsOpenWithPicker ? 'fas-file' : 'fas-share-from-square';
 | 
			
		||||
        this.openButtonLabel = this.defaultIsOpenWithPicker ? 'core.openfile' : 'core.openwith';
 | 
			
		||||
 | 
			
		||||
        if (CoreUtils.isTrueOrOne(this.showSize) && this.fileSize && this.fileSize >= 0) {
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<ng-container *ngIf="groupInfo && groupInfo.groups.length > 0 && (groupInfo.separateGroups || groupInfo.visibleGroups)">
 | 
			
		||||
    <ion-card class="core-info-card" *ngIf="multipleGroupsMessage && groupInfo.groups && groupInfo.groups.length > 1">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-question-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-circle-question" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label>{{ multipleGroupsMessage }}</ion-label>
 | 
			
		||||
        </ion-item>
 | 
			
		||||
    </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -85,7 +85,7 @@ export class CoreLocalFileComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
        this.isIOS = CorePlatform.isIOS();
 | 
			
		||||
        this.defaultIsOpenWithPicker = CoreFileHelper.defaultIsOpenWithPicker();
 | 
			
		||||
        this.openButtonIcon = this.defaultIsOpenWithPicker ? 'fas-file' : 'fas-share-square';
 | 
			
		||||
        this.openButtonIcon = this.defaultIsOpenWithPicker ? 'fas-file' : 'fas-share-from-square';
 | 
			
		||||
        this.openButtonLabel = this.defaultIsOpenWithPicker ? 'core.openfile' : 'core.openwith';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -37,7 +37,7 @@
 | 
			
		||||
        </ion-button>
 | 
			
		||||
        <ion-button *ngIf="showDelete && message.deleted" fill="clear" color="danger" (click)="undoDelete($event)"
 | 
			
		||||
            [attr.aria-label]="'core.restore' | translate" class="delete-button">
 | 
			
		||||
            <ion-icon name="fas-undo-alt" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-rotate-left" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        </ion-button>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
<ion-chip class="clickable fab-chip" color="info" (click)="closeModal()">
 | 
			
		||||
    <ion-icon name="fas-sync" aria-hidden="true"></ion-icon>
 | 
			
		||||
    <ion-icon name="fas-arrows-rotate" aria-hidden="true"></ion-icon>
 | 
			
		||||
    {{ 'core.refresh' | translate }}
 | 
			
		||||
</ion-chip>
 | 
			
		||||
 | 
			
		||||
@ -2,5 +2,5 @@
 | 
			
		||||
    <ng-content></ng-content>
 | 
			
		||||
</ion-content>
 | 
			
		||||
<ion-router-outlet class="content-outlet"></ion-router-outlet>
 | 
			
		||||
<core-empty-box class="content-placeholder" icon="fas-arrow-circle-left" [message]="placeholderText | translate" [flipIconRtl]="true">
 | 
			
		||||
<core-empty-box class="content-placeholder" icon="fas-circle-arrow-left" [message]="placeholderText | translate" [flipIconRtl]="true">
 | 
			
		||||
</core-empty-box>
 | 
			
		||||
 | 
			
		||||
@ -96,14 +96,14 @@ export class CoreConstants {
 | 
			
		||||
    // Download / prefetch status icon.
 | 
			
		||||
    static readonly ICON_DOWNLOADED = 'fam-cloud-done';
 | 
			
		||||
    static readonly ICON_DOWNLOADING = 'spinner';
 | 
			
		||||
    static readonly ICON_NOT_DOWNLOADED = 'fas-cloud-download-alt';
 | 
			
		||||
    static readonly ICON_NOT_DOWNLOADED = 'fas-cloud-arrow-down';
 | 
			
		||||
    static readonly ICON_OUTDATED = 'fam-cloud-refresh';
 | 
			
		||||
    static readonly ICON_NOT_DOWNLOADABLE = '';
 | 
			
		||||
 | 
			
		||||
    // General download and sync icons.
 | 
			
		||||
    static readonly ICON_LOADING = 'spinner';
 | 
			
		||||
    static readonly ICON_REFRESH = 'fas-redo-alt';
 | 
			
		||||
    static readonly ICON_SYNC = 'fas-sync-alt';
 | 
			
		||||
    static readonly ICON_REFRESH = 'fas-rotate-right';
 | 
			
		||||
    static readonly ICON_SYNC = 'fas-rotate';
 | 
			
		||||
 | 
			
		||||
    // Constants from Moodle's resourcelib.
 | 
			
		||||
    static readonly RESOURCELIB_DISPLAY_AUTO = 0; // Try the best way.
 | 
			
		||||
 | 
			
		||||
@ -279,7 +279,7 @@ export class CoreFormatTextDirective implements OnChanges, OnDestroy, AsyncDirec
 | 
			
		||||
            button.classList.add('hidden');
 | 
			
		||||
            button.setAttribute('aria-label', label);
 | 
			
		||||
            // Add an ion-icon item to apply the right styles, but the ion-icon component won't be executed.
 | 
			
		||||
            button.innerHTML = '<ion-icon name="fas-expand-alt" aria-hidden="true" \
 | 
			
		||||
            button.innerHTML = '<ion-icon name="fas-up-right-and-down-left-from-center" aria-hidden="true" \
 | 
			
		||||
                src="assets/fonts/font-awesome/solid/expand-alt.svg">\
 | 
			
		||||
            </ion-icon>';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@
 | 
			
		||||
    <ion-toolbar>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" slot="icon-only" aria-hidden=true></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
@ -18,7 +18,7 @@
 | 
			
		||||
            </ng-container>
 | 
			
		||||
        </ion-list>
 | 
			
		||||
 | 
			
		||||
        <core-empty-box *ngIf="blocks.length == 0" icon="fas-th-large" [message]="'core.block.noblocks' | translate">
 | 
			
		||||
        <core-empty-box *ngIf="blocks.length == 0" icon="fas-table-cells-large" [message]="'core.block.noblocks' | translate">
 | 
			
		||||
        </core-empty-box>
 | 
			
		||||
    </core-loading>
 | 
			
		||||
</ion-content>
 | 
			
		||||
 | 
			
		||||
@ -52,7 +52,7 @@
 | 
			
		||||
            </ng-container>
 | 
			
		||||
 | 
			
		||||
            <ion-badge class="ion-text-wrap" color="info" *ngIf="hasOffline">
 | 
			
		||||
                <ion-icon name="fas-exclamation-triangle" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-triangle-exclamation" aria-hidden="true"></ion-icon>
 | 
			
		||||
                {{ 'core.thereisdatatosync' | translate:{$a: 'core.comments.comments' | translate | lowercase } }}
 | 
			
		||||
            </ion-badge>
 | 
			
		||||
            <core-message *ngIf="hasOffline && offlineComment" [message]="offlineComment" [text]="offlineComment.content"
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
<core-navbar-buttons slot="end" prepend>
 | 
			
		||||
    <ion-button fill="clear" (click)="gotoCourseDownloads()" [attr.aria-label]="'addon.storagemanager.coursedownloads' | translate">
 | 
			
		||||
        <ion-icon name="fas-cloud-download-alt" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-cloud-arrow-down" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</core-navbar-buttons>
 | 
			
		||||
<core-dynamic-component [component]="courseFormatComponent" [data]="data">
 | 
			
		||||
@ -11,7 +11,7 @@
 | 
			
		||||
        <div *ngIf="selectedSection && selectedSection.id != allSectionsId">
 | 
			
		||||
            <core-dynamic-component [component]="singleSectionComponent" [data]="data">
 | 
			
		||||
                <ng-container *ngTemplateOutlet="sectionTemplate; context: {section: selectedSection}"></ng-container>
 | 
			
		||||
                <core-empty-box *ngIf="!selectedSection.hasContent" icon="fas-th-large"
 | 
			
		||||
                <core-empty-box *ngIf="!selectedSection.hasContent" icon="fas-table-cells-large"
 | 
			
		||||
                    [message]="'core.course.nocontentavailable' | translate">
 | 
			
		||||
                </core-empty-box>
 | 
			
		||||
            </core-dynamic-component>
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,7 @@
 | 
			
		||||
 | 
			
		||||
                    <ion-chip *ngIf="rule.statuscompletefail" color="danger" role="listitem" [attr.aria-label]="rule.accessibleDescription"
 | 
			
		||||
                        class="completioninfo completion_fail">
 | 
			
		||||
                        <ion-icon name="fas-times" [attr.aria-label]="'core.course.completion_automatic:failed' | translate "></ion-icon>
 | 
			
		||||
                        <ion-icon name="fas-xmark" [attr.aria-label]="'core.course.completion_automatic:failed' | translate "></ion-icon>
 | 
			
		||||
                        <ion-label>
 | 
			
		||||
                            {{ rule.rulevalue.description }}
 | 
			
		||||
                        </ion-label>
 | 
			
		||||
@ -23,7 +23,8 @@
 | 
			
		||||
 | 
			
		||||
                    <ion-chip *ngIf="rule.statusincomplete" color="secondary" role="listitem" [attr.aria-label]="rule.accessibleDescription"
 | 
			
		||||
                        class="completioninfo completion_incomplete">
 | 
			
		||||
                        <ion-icon name="fas-edit" [attr.aria-label]="'core.course.completion_automatic:todo' | translate "></ion-icon>
 | 
			
		||||
                        <ion-icon name="fas-pen-to-square"
 | 
			
		||||
                            [attr.aria-label]="'core.course.completion_automatic:todo' | translate "></ion-icon>
 | 
			
		||||
                        <ion-label>
 | 
			
		||||
                            {{ rule.rulevalue.description }}
 | 
			
		||||
                        </ion-label>
 | 
			
		||||
@ -33,7 +34,7 @@
 | 
			
		||||
 | 
			
		||||
            <ng-container *ngIf="!completion.istrackeduser">
 | 
			
		||||
                <ion-chip *ngFor="let rule of details" role="listitem" class="core-module-completion-todo">
 | 
			
		||||
                    <ion-icon name="fas-edit" [attr.aria-label]="'core.course.completion_automatic:todo' | translate "></ion-icon>
 | 
			
		||||
                    <ion-icon name="fas-pen-to-square" [attr.aria-label]="'core.course.completion_automatic:todo' | translate "></ion-icon>
 | 
			
		||||
                    <ion-label>
 | 
			
		||||
                        {{ rule.rulevalue.description }}
 | 
			
		||||
                    </ion-label>
 | 
			
		||||
@ -43,7 +44,7 @@
 | 
			
		||||
 | 
			
		||||
        <ng-container *ngIf="mode == 'basic' && completion.istrackeduser">
 | 
			
		||||
            <ion-chip class="completioninfo completion_incomplete" *ngIf="completionStatus === 0" color="secondary">
 | 
			
		||||
                <ion-icon name="fas-edit" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-pen-to-square" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>
 | 
			
		||||
                    {{ 'core.course.todo' | translate }}
 | 
			
		||||
                </ion-label>
 | 
			
		||||
@ -53,7 +54,7 @@
 | 
			
		||||
                <ion-label>{{'core.course.done' | translate }}</ion-label>
 | 
			
		||||
            </ion-chip>
 | 
			
		||||
            <ion-chip class="completioninfo completion_fail" *ngIf="completionStatus === 3" color="danger">
 | 
			
		||||
                <ion-icon name="fas-times" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-xmark" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{'core.course.failed' | translate }}</ion-label>
 | 
			
		||||
            </ion-chip>
 | 
			
		||||
        </ng-container>
 | 
			
		||||
 | 
			
		||||
@ -51,7 +51,7 @@
 | 
			
		||||
<!-- Activity has something offline. -->
 | 
			
		||||
<ion-card class="core-warning-card" *ngIf="hasDataToSync">
 | 
			
		||||
    <ion-item>
 | 
			
		||||
        <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-label>{{ 'core.hasdatatosync' | translate: {$a: moduleNameTranslated} }}</ion-label>
 | 
			
		||||
    </ion-item>
 | 
			
		||||
</ion-card>
 | 
			
		||||
 | 
			
		||||
@ -4,14 +4,14 @@
 | 
			
		||||
            class="ion-text-wrap" [class.chip]="mode == 'basic'">
 | 
			
		||||
            <ion-icon name="fas-check" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            {{ 'core.course.completion_manual:done' | translate }}
 | 
			
		||||
            <ion-icon *ngIf="completion?.offline" name="fas-sync" [attr.aria-label]="'core.course.manualcompletionnotsynced' | translate"
 | 
			
		||||
                slot="end"></ion-icon>
 | 
			
		||||
            <ion-icon *ngIf="completion?.offline" name="fas-arrows-rotate"
 | 
			
		||||
                [attr.aria-label]="'core.course.manualcompletionnotsynced' | translate" slot="end"></ion-icon>
 | 
			
		||||
        </ion-button>
 | 
			
		||||
        <ion-button *ngIf="!completion.state" fill="outline" [attr.aria-label]="accessibleDescription" (click)="completionClicked($event)"
 | 
			
		||||
            class="ion-text-wrap" [class.chip]="mode == 'basic'">
 | 
			
		||||
            {{ 'core.course.completion_manual:markdone' | translate }}
 | 
			
		||||
            <ion-icon *ngIf="completion?.offline" name="fas-sync" [attr.aria-label]="'core.course.manualcompletionnotsynced' | translate"
 | 
			
		||||
                slot="end"></ion-icon>
 | 
			
		||||
            <ion-icon *ngIf="completion?.offline" name="fas-arrows-rotate"
 | 
			
		||||
                [attr.aria-label]="'core.course.manualcompletionnotsynced' | translate" slot="end"></ion-icon>
 | 
			
		||||
        </ion-button>
 | 
			
		||||
    </ng-container>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@
 | 
			
		||||
    <ion-toolbar>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <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-xmark" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
@ -26,7 +26,7 @@
 | 
			
		||||
            </ion-label>
 | 
			
		||||
            <ion-button fill="clear" *ngIf="displayOptions.displayOpenInBrowser && externalUrl" [href]="externalUrl" core-link
 | 
			
		||||
                [showBrowserWarning]="false" [attr.aria-label]="'core.openinbrowser' | translate" slot="end">
 | 
			
		||||
                <ion-icon name="fas-external-link-alt" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-up-right-from-square" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-item>
 | 
			
		||||
 | 
			
		||||
@ -159,7 +159,7 @@
 | 
			
		||||
            <ion-item lines="full" class="ion-text-wrap card-header">
 | 
			
		||||
                <ion-label>
 | 
			
		||||
                    <h2>
 | 
			
		||||
                        <ion-icon name="fas-cloud-download-alt" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        <ion-icon name="fas-cloud-arrow-down" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        {{ 'addon.storagemanager.downloads' | translate }}
 | 
			
		||||
                    </h2>
 | 
			
		||||
                </ion-label>
 | 
			
		||||
@ -182,7 +182,7 @@
 | 
			
		||||
            </ion-item>
 | 
			
		||||
            <ion-button fill="outline" expand="block" *ngIf="canPrefetch && displayOptions.displayPrefetch" class="ion-text-wrap"
 | 
			
		||||
                (click)="prefetch()" [disabled]="prefetchDisabled">
 | 
			
		||||
                <ion-icon *ngIf="!prefetchLoading" name="fas-cloud-download-alt" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon *ngIf="!prefetchLoading" name="fas-cloud-arrow-down" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-spinner *ngIf="prefetchLoading" slot="start" aria-hidden="true"></ion-spinner>
 | 
			
		||||
                <ion-label>
 | 
			
		||||
                    {{ 'core.download' | translate }}
 | 
			
		||||
@ -200,14 +200,14 @@
 | 
			
		||||
</ion-content>
 | 
			
		||||
<ion-footer *ngIf="loaded && isOnline && displayOptions.displayRefresh">
 | 
			
		||||
    <ion-button class="ion-margin" *ngIf="!hasOffline" (click)="refresh()" expand="block" fill="outline">
 | 
			
		||||
        <ion-icon name="fas-redo-alt" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-rotate-right" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-label>
 | 
			
		||||
            {{ 'core.refresh' | translate }}
 | 
			
		||||
        </ion-label>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
 | 
			
		||||
    <ion-button class="ion-margin" *ngIf="hasOffline" (click)="sync()" expand="block" fill="outline">
 | 
			
		||||
        <ion-icon name="fas-sync-alt" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-icon name="fas-rotate" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
        <ion-label>
 | 
			
		||||
            {{ 'core.settings.synchronizenow' | translate }}
 | 
			
		||||
        </ion-label>
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<div class="has-spacer">
 | 
			
		||||
    <ion-card class="core-danger-card">
 | 
			
		||||
        <ion-item>
 | 
			
		||||
            <ion-icon name="fas-exclamation-triangle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
            <ion-label>
 | 
			
		||||
                <p><strong>{{ 'core.uhoh' | translate }} </strong>
 | 
			
		||||
                    <ng-container *ngIf="isDisabledInSite">{{ 'core.course.activitydisabled' | translate }}</ng-container>
 | 
			
		||||
@ -18,7 +18,7 @@
 | 
			
		||||
            <p>{{ 'core.course.useactivityonbrowser' | translate }}</p>
 | 
			
		||||
            <ion-button expand="block" [href]="module?.url" core-link [showBrowserWarning]="false">
 | 
			
		||||
                {{ 'core.openinbrowser' | translate }}
 | 
			
		||||
                <ion-icon name="fas-external-link-alt" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-up-right-from-square" slot="end" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-label>
 | 
			
		||||
    </ion-item>
 | 
			
		||||
 | 
			
		||||
@ -7,7 +7,7 @@
 | 
			
		||||
        </ion-title>
 | 
			
		||||
        <ion-buttons slot="end" *ngIf="isModal">
 | 
			
		||||
            <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-xmark" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
@ -47,7 +47,7 @@
 | 
			
		||||
                    </ion-label>
 | 
			
		||||
                    <ion-button fill="clear" [href]="courseUrl" core-link [showBrowserWarning]="false"
 | 
			
		||||
                        [attr.aria-label]="'core.openinbrowser' | translate" slot="end">
 | 
			
		||||
                        <ion-icon name="fas-external-link-alt" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                        <ion-icon name="fas-up-right-from-square" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    </ion-button>
 | 
			
		||||
                </ion-item>
 | 
			
		||||
                <ion-item class="ion-text-wrap" *ngIf="progress !== undefined || course.startdate || course.enddate">
 | 
			
		||||
@ -146,7 +146,7 @@
 | 
			
		||||
 | 
			
		||||
        <ion-card class="core-info-card ion-text-wrap" *ngIf="!isEnrolled && !selfEnrolInstances.length && !otherEnrolments">
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-icon name="fas-info-circle" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-label>{{ 'core.courses.notenrollable' | translate }}</ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-card>
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@
 | 
			
		||||
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <ion-button fill="clear" (click)="openCourseSummary()" [attr.aria-label]="'core.course.coursesummary' | translate">
 | 
			
		||||
                <ion-icon name="fas-info-circle" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
            <!-- Add an empty context menu so tab pages can add items, otherwise the menu disappears in some cases. -->
 | 
			
		||||
            <core-context-menu></core-context-menu>
 | 
			
		||||
 | 
			
		||||
@ -13,7 +13,7 @@
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <ion-button fill="clear" *ngIf="module.url && module.uservisible && !unsupported" [href]="module.url" core-link
 | 
			
		||||
                [showBrowserWarning]="false" [attr.aria-label]="'core.openinbrowser' | translate">
 | 
			
		||||
                <ion-icon name="fas-external-link-alt" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                <ion-icon name="fas-up-right-from-square" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
 | 
			
		||||
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