2021-02-18 11:49:15 +01:00
|
|
|
<ion-header>
|
|
|
|
<ion-toolbar>
|
|
|
|
<ion-buttons slot="start">
|
2021-04-27 15:21:09 +02:00
|
|
|
<ion-back-button [text]="'core.back' | translate"></ion-back-button>
|
2021-02-18 11:49:15 +01:00
|
|
|
</ion-buttons>
|
2021-11-23 15:06:01 +01:00
|
|
|
<ion-title>
|
|
|
|
<h1 *ngIf="startingPost">
|
|
|
|
<core-format-text contextLevel="module" [text]="startingPost.subject" [contextInstanceId]="cmId" [courseId]="courseId">
|
|
|
|
</core-format-text>
|
|
|
|
</h1>
|
|
|
|
</ion-title>
|
2021-02-18 11:49:15 +01:00
|
|
|
<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>
|
2021-11-23 15:06:01 +01:00
|
|
|
<core-context-menu-item *ngIf="discussionLoaded && !postHasOffline && isOnline" [priority]="650"
|
|
|
|
[content]="'addon.mod_forum.refreshposts' | translate" [iconAction]="refreshIcon" [closeOnClick]="false"
|
2021-03-01 14:47:47 +01:00
|
|
|
(action)="doRefresh(null, $event)">
|
|
|
|
</core-context-menu-item>
|
2021-11-23 15:06:01 +01:00
|
|
|
<core-context-menu-item *ngIf="discussionLoaded && isMobile && postHasOffline && isOnline" [priority]="550"
|
|
|
|
[content]="'core.settings.synchronizenow' | translate" [iconAction]="syncIcon" [closeOnClick]="false"
|
2021-03-01 14:47:47 +01:00
|
|
|
(action)="doRefresh(null, $event, true)">
|
|
|
|
</core-context-menu-item>
|
2021-11-23 15:06:01 +01:00
|
|
|
<core-context-menu-item [hidden]="sort == 'flat-oldest'" [priority]="500"
|
|
|
|
[content]="'addon.mod_forum.modeflatoldestfirst' | translate" iconAction="fas-arrow-down" (action)="changeSort('flat-oldest')">
|
2021-03-01 14:47:47 +01:00
|
|
|
</core-context-menu-item>
|
2021-11-23 15:06:01 +01:00
|
|
|
<core-context-menu-item [hidden]="sort == 'flat-newest'" [priority]="450"
|
|
|
|
[content]="'addon.mod_forum.modeflatnewestfirst' | translate" iconAction="fas-arrow-up" (action)="changeSort('flat-newest')">
|
2021-03-01 14:47:47 +01:00
|
|
|
</core-context-menu-item>
|
2021-11-23 15:06:01 +01:00
|
|
|
<core-context-menu-item [hidden]="sort == 'nested'" [priority]="400" [content]="'addon.mod_forum.modenested' | translate"
|
2023-03-14 14:08:09 +01:00
|
|
|
iconAction="fas-right-left" (action)="changeSort('nested')">
|
2021-03-01 14:47:47 +01:00
|
|
|
</core-context-menu-item>
|
2021-11-23 15:06:01 +01:00
|
|
|
<core-context-menu-item [hidden]="!discussion || !discussion.canlock || discussion.locked" [priority]="300"
|
|
|
|
[content]="'addon.mod_forum.lockdiscussion' | translate" iconAction="fas-lock" (action)="setLockState(true)">
|
2021-03-01 14:47:47 +01:00
|
|
|
</core-context-menu-item>
|
2021-11-23 15:06:01 +01:00
|
|
|
<core-context-menu-item [hidden]="!discussion || !discussion.canlock || !discussion.locked" [priority]="300"
|
|
|
|
[content]="'addon.mod_forum.unlockdiscussion' | translate" iconAction="fas-unlock" (action)="setLockState(false)">
|
2021-03-01 14:47:47 +01:00
|
|
|
</core-context-menu-item>
|
2021-11-23 15:06:01 +01:00
|
|
|
<core-context-menu-item [hidden]="!discussion || !canPin || discussion.pinned" [priority]="250"
|
|
|
|
[content]="'addon.mod_forum.pindiscussion' | translate" iconAction="fas-map-pin" (action)="setPinState(true)">
|
2021-03-01 14:47:47 +01:00
|
|
|
</core-context-menu-item>
|
2021-11-23 15:06:01 +01:00
|
|
|
<core-context-menu-item [hidden]="!discussion || !canPin || !discussion.pinned" [priority]="250"
|
|
|
|
[content]="'addon.mod_forum.unpindiscussion' | translate" [iconSlash]="true" iconAction="fas-map-pin"
|
2021-03-01 14:47:47 +01:00
|
|
|
(action)="setPinState(false)">
|
|
|
|
</core-context-menu-item>
|
2021-11-23 15:06:01 +01:00
|
|
|
<core-context-menu-item [hidden]="!discussion || !discussion.canfavourite || discussion.starred" [priority]="200"
|
|
|
|
[content]="'addon.mod_forum.addtofavourites' | translate" iconAction="fas-star" (action)="toggleFavouriteState(true)">
|
2021-03-01 14:47:47 +01:00
|
|
|
</core-context-menu-item>
|
2021-11-23 15:06:01 +01:00
|
|
|
<core-context-menu-item [hidden]="!discussion || !discussion.canfavourite || !discussion.starred" [priority]="200"
|
|
|
|
[content]="'addon.mod_forum.removefromfavourites' | translate" iconAction="fas-star" [iconSlash]="true"
|
2021-03-01 14:47:47 +01:00
|
|
|
(action)="toggleFavouriteState(false)">
|
|
|
|
</core-context-menu-item>
|
2022-04-20 09:22:16 +02:00
|
|
|
<core-context-menu-item [hidden]="!externalUrl" [priority]="100" [content]="'core.openinbrowser' | translate" [href]="externalUrl"
|
2023-03-14 14:08:09 +01:00
|
|
|
iconAction="fas-up-right-from-square" [showBrowserWarning]="false"></core-context-menu-item>
|
2021-02-18 11:49:15 +01:00
|
|
|
</core-context-menu>
|
|
|
|
</core-navbar-buttons>
|
2022-03-25 10:16:12 +01:00
|
|
|
<ion-content [core-swipe-navigation]="discussions" class="limited-width">
|
2022-01-10 11:58:20 +01:00
|
|
|
<ion-refresher slot="fixed" [disabled]="!discussionLoaded" (ionRefresh)="doRefresh($event.target)">
|
|
|
|
<ion-refresher-content pullingText="{{ 'core.pulltorefresh' | translate }}"></ion-refresher-content>
|
|
|
|
</ion-refresher>
|
2021-02-18 11:49:15 +01:00
|
|
|
|
2022-03-25 10:16:12 +01:00
|
|
|
<core-loading [hideUntil]="discussionLoaded">
|
2022-01-10 11:58:20 +01:00
|
|
|
<!-- Discussion replies found to be synchronized -->
|
|
|
|
<ion-card class="core-warning-card" *ngIf="postHasOffline || hasOfflineRatings">
|
|
|
|
<ion-item>
|
2023-03-14 14:08:09 +01:00
|
|
|
<ion-icon name="fas-triangle-exclamation" slot="start" aria-hidden="true"></ion-icon>
|
2022-01-10 11:58:20 +01:00
|
|
|
<ion-label>{{ 'core.hasdatatosync' | translate:{$a: discussionStr} }}</ion-label>
|
|
|
|
</ion-item>
|
|
|
|
</ion-card>
|
2021-02-18 11:49:15 +01:00
|
|
|
|
2022-01-10 11:58:20 +01:00
|
|
|
<!-- Cut-off date or due date message -->
|
|
|
|
<ion-card class="core-info-card" *ngIf="availabilityMessage">
|
|
|
|
<ion-item>
|
2023-03-14 14:08:09 +01:00
|
|
|
<ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
|
2022-01-10 11:58:20 +01:00
|
|
|
<ion-label>{{ availabilityMessage }}</ion-label>
|
|
|
|
</ion-item>
|
|
|
|
</ion-card>
|
2021-02-18 11:49:15 +01:00
|
|
|
|
2022-01-10 11:58:20 +01:00
|
|
|
<ion-card class="core-info-card" *ngIf="discussion && discussion.locked">
|
|
|
|
<ion-item>
|
|
|
|
<ion-icon name="fas-lock" slot="start" aria-hidden="true"></ion-icon>
|
|
|
|
<ion-label>{{ 'addon.mod_forum.discussionlocked' | translate }}</ion-label>
|
|
|
|
</ion-item>
|
|
|
|
</ion-card>
|
2021-02-18 11:49:15 +01:00
|
|
|
|
2022-04-12 10:37:17 +02:00
|
|
|
<!-- Q&A message. -->
|
|
|
|
<ion-card class="core-info-card" *ngIf="showQAMessage">
|
|
|
|
<ion-item>
|
2023-03-14 14:08:09 +01:00
|
|
|
<ion-icon name="fas-circle-info" slot="start" aria-hidden="true"></ion-icon>
|
2022-04-12 10:37:17 +02:00
|
|
|
<ion-label>{{ 'addon.mod_forum.qandanotify' | translate }}</ion-label>
|
|
|
|
</ion-item>
|
|
|
|
</ion-card>
|
|
|
|
|
2022-01-10 11:58:20 +01:00
|
|
|
<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" [formData]="formData"
|
|
|
|
[originalData]="originalData" [forum]="forum" [accessInfo]="accessInfo" [trackPosts]="trackPosts" [ratingInfo]="ratingInfo"
|
|
|
|
[leavingPage]="leavingPage" (onPostChange)="postListChanged()">
|
|
|
|
</addon-mod-forum-post>
|
|
|
|
</div>
|
2021-02-18 11:49:15 +01:00
|
|
|
|
2022-04-06 16:22:47 +02:00
|
|
|
<ion-card *ngIf="sort != 'nested' && posts.length">
|
2022-01-10 11:58:20 +01:00
|
|
|
<ng-container *ngFor="let post of posts; first as first">
|
|
|
|
<core-spacer *ngIf="!first"></core-spacer>
|
|
|
|
<addon-mod-forum-post [post]="post" [courseId]="courseId" [discussionId]="discussionId" [component]="component"
|
|
|
|
[componentId]="cmId" [formData]="formData" [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>
|
2021-12-01 13:59:19 +01:00
|
|
|
|
2022-04-06 16:22:47 +02:00
|
|
|
<ng-container *ngIf="sort == 'nested' && posts.length">
|
2022-01-10 11:58:20 +01:00
|
|
|
<ng-container *ngFor="let post of posts">
|
|
|
|
<ng-container *ngTemplateOutlet="nestedPosts; context: {post: post}"></ng-container>
|
2021-12-01 13:59:19 +01:00
|
|
|
</ng-container>
|
2022-01-10 11:58:20 +01:00
|
|
|
</ng-container>
|
2021-12-01 13:59:19 +01:00
|
|
|
|
2022-01-10 11:58:20 +01:00
|
|
|
<ng-template #nestedPosts let-post="post">
|
|
|
|
<ion-card>
|
|
|
|
<addon-mod-forum-post [post]="post" [courseId]="courseId" [discussionId]="discussionId" [component]="component"
|
|
|
|
[componentId]="cmId" [formData]="formData" [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-start" *ngIf="post.children && 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>
|
2021-02-18 11:49:15 +01:00
|
|
|
</ion-content>
|