107 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <ion-header>
 | |
|     <ion-toolbar>
 | |
|         <ion-buttons slot="start">
 | |
|             <ion-back-button [attr.aria-label]="'core.back' | translate"></ion-back-button>
 | |
|         </ion-buttons>
 | |
|         <ion-title *ngIf="startingPost">
 | |
|             <core-format-text contextLevel="module" [text]="startingPost.subject" [contextInstanceId]="cmId" [courseId]="courseId">
 | |
|             </core-format-text>
 | |
|         </ion-title>
 | |
|         <ion-buttons slot="end">
 | |
|             <!-- The context menu will be added in here. -->
 | |
|         </ion-buttons>
 | |
|     </ion-toolbar>
 | |
| </ion-header>
 | |
| <core-navbar-buttons slot="end">
 | |
|     <core-context-menu>
 | |
|         <core-context-menu-item [priority]="650" *ngIf="discussionLoaded && !postHasOffline && isOnline" [content]="'addon.mod_forum.refreshposts' | translate" (action)="doRefresh(null, $event)" [iconAction]="refreshIcon" [closeOnClick]="false"></core-context-menu-item>
 | |
|         <core-context-menu-item [priority]="550" *ngIf="discussionLoaded && isMobile && postHasOffline && isOnline" [content]="'core.settings.synchronizenow' | translate" (action)="doRefresh(null, $event, true)" [iconAction]="syncIcon" [closeOnClick]="false"></core-context-menu-item>
 | |
|         <core-context-menu-item [hidden]="sort == 'flat-oldest'" [priority]="500" [content]="'addon.mod_forum.modeflatoldestfirst' | translate" (action)="changeSort('flat-oldest')" iconAction="arrow-round-down"></core-context-menu-item>
 | |
|         <core-context-menu-item [hidden]="sort == 'flat-newest'" [priority]="450" [content]="'addon.mod_forum.modeflatnewestfirst' | translate" (action)="changeSort('flat-newest')" iconAction="arrow-round-up"></core-context-menu-item>
 | |
|         <core-context-menu-item [hidden]="sort == 'nested'" [priority]="400" [content]="'addon.mod_forum.modenested' | translate" (action)="changeSort('nested')" iconAction="swap"></core-context-menu-item>
 | |
|         <core-context-menu-item [hidden]="!discussion || !discussion.canlock || discussion.locked" [priority]="300" [content]="'addon.mod_forum.lockdiscussion' | translate" (action)="setLockState(true)" iconAction="fa-lock"></core-context-menu-item>
 | |
|         <core-context-menu-item [hidden]="!discussion || !discussion.canlock || !discussion.locked" [priority]="300" [content]="'addon.mod_forum.unlockdiscussion' | translate" (action)="setLockState(false)" iconAction="fa-unlock"></core-context-menu-item>
 | |
|         <core-context-menu-item [hidden]="!discussion || !canPin || discussion.pinned" [priority]="250" [content]="'addon.mod_forum.pindiscussion' | translate" (action)="setPinState(true)" iconAction="fa-map-pin"></core-context-menu-item>
 | |
|         <core-context-menu-item [hidden]="!discussion || !canPin || !discussion.pinned" [priority]="250" [content]="'addon.mod_forum.unpindiscussion' | translate" (action)="setPinState(false)" iconAction="fa-map-pin" [iconSlash]="true"></core-context-menu-item>
 | |
|         <core-context-menu-item [hidden]="!discussion || !discussion.canfavourite || discussion.starred" [priority]="200" [content]="'addon.mod_forum.addtofavourites' | translate" (action)="toggleFavouriteState(true)" iconAction="fa-star"></core-context-menu-item>
 | |
|         <core-context-menu-item [hidden]="!discussion || !discussion.canfavourite || !discussion.starred" [priority]="200" [content]="'addon.mod_forum.removefromfavourites' | translate" (action)="toggleFavouriteState(false)" iconAction="fa-star" [iconSlash]="true"></core-context-menu-item>
 | |
|     </core-context-menu>
 | |
| </core-navbar-buttons>
 | |
| <ion-content>
 | |
|     <ion-refresher slot="fixed" [disabled]="!discussionLoaded" (ionRefresh)="doRefresh($event)">
 | |
|         <ion-refresher-content pullingText="{{ 'core.pulltorefresh' | translate }}"></ion-refresher-content>
 | |
|     </ion-refresher>
 | |
| 
 | |
|     <core-loading [hideUntil]="discussionLoaded">
 | |
|         <!-- 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"></ion-icon>
 | |
|                 <ion-label>{{ 'core.hasdatatosync' | translate:{$a: discussionStr} }}</ion-label>
 | |
|             </ion-item>
 | |
|         </ion-card>
 | |
| 
 | |
|         <!-- Cut-off date or due date message -->
 | |
|         <ion-card class="core-info-card" *ngIf="availabilityMessage">
 | |
|             <ion-item>
 | |
|                 <ion-icon name="information-circle" slot="start"></ion-icon>
 | |
|                 <ion-label>{{ availabilityMessage }}</ion-label>
 | |
|             </ion-item>
 | |
|         </ion-card>
 | |
| 
 | |
|         <ion-card class="core-info-card" *ngIf="discussion && discussion.locked">
 | |
|             <ion-item>
 | |
|                 <ion-icon name="fa-lock" slot="start"></ion-icon>
 | |
|                 <ion-label>{{ 'addon.mod_forum.discussionlocked' | translate }}</ion-label>
 | |
|             </ion-item>
 | |
|         </ion-card>
 | |
| 
 | |
|         <div *ngIf="startingPost"  class="ion-margin-bottom">
 | |
|             <addon-mod-forum-post
 | |
|                 [post]="startingPost" [discussion]="discussion" [courseId]="courseId" [highlight]="true"
 | |
|                 [discussionId]="discussionId" [component]="component" [componentId]="cmId"
 | |
|                 [replyData]="replyData" [originalData]="originalData" [forum]="forum" [accessInfo]="accessInfo"
 | |
|                 [trackPosts]="trackPosts" [ratingInfo]="ratingInfo" [leavingPage]="leavingPage"
 | |
|                 (onPostChange)="postListChanged()">
 | |
|             </addon-mod-forum-post>
 | |
|         </div>
 | |
| 
 | |
|         <ion-card *ngIf="sort != 'nested'">
 | |
|             <ng-container *ngFor="let post of posts; first as first">
 | |
|                 <ion-item-divider *ngIf="!first"><ion-label></ion-label></ion-item-divider>
 | |
|                 <addon-mod-forum-post
 | |
|                     [post]="post" [courseId]="courseId" [discussionId]="discussionId"
 | |
|                     [component]="component" [componentId]="cmId" [replyData]="replyData"
 | |
|                     [originalData]="originalData" [parentSubject]="postSubjects[post.parentid]"
 | |
|                     [forum]="forum" [accessInfo]="accessInfo" [trackPosts]="trackPosts" [ratingInfo]="ratingInfo"
 | |
|                     [leavingPage]="leavingPage"
 | |
|                     (onPostChange)="postListChanged()">
 | |
|                 </addon-mod-forum-post>
 | |
|             </ng-container>
 | |
|         </ion-card>
 | |
| 
 | |
|         <ng-container *ngIf="sort == 'nested'">
 | |
|             <ng-container *ngFor="let post of posts">
 | |
|                 <ng-container *ngTemplateOutlet="nestedPosts; context: {post: post}"></ng-container>
 | |
|             </ng-container>
 | |
|         </ng-container>
 | |
| 
 | |
|         <ng-template #nestedPosts let-post="post">
 | |
|             <ion-card>
 | |
|                 <addon-mod-forum-post
 | |
|                     [post]="post" [courseId]="courseId" [discussionId]="discussionId" [component]="component"
 | |
|                     [componentId]="cmId" [replyData]="replyData" [originalData]="originalData"
 | |
|                     [parentSubject]="postSubjects[post.parentid]" [forum]="forum" [accessInfo]="accessInfo"
 | |
|                     [trackPosts]="trackPosts" [ratingInfo]="ratingInfo" [leavingPage]="leavingPage"
 | |
|                     (onPostChange)="postListChanged()">
 | |
|                 </addon-mod-forum-post>
 | |
|             </ion-card>
 | |
|             <div class="ion-padding-left" *ngIf="post.children.length && post.children[0].subject">
 | |
|                 <ng-container *ngFor="let child of post.children">
 | |
|                     <ng-container *ngTemplateOutlet="nestedPosts; context: {post: child}"></ng-container>
 | |
|                 </ng-container>
 | |
|             </div>
 | |
|         </ng-template>
 | |
|     </core-loading>
 | |
| </ion-content>
 |