diff options
Diffstat (limited to 'client/src/app/videos')
5 files changed, 47 insertions, 27 deletions
diff --git a/client/src/app/videos/+video-edit/shared/video-edit.component.html b/client/src/app/videos/+video-edit/shared/video-edit.component.html index 9acbafcb6..80377933e 100644 --- a/client/src/app/videos/+video-edit/shared/video-edit.component.html +++ b/client/src/app/videos/+video-edit/shared/video-edit.component.html | |||
@@ -99,5 +99,11 @@ | |||
99 | <label for="nsfw">This video contains mature or explicit content</label> | 99 | <label for="nsfw">This video contains mature or explicit content</label> |
100 | </div> | 100 | </div> |
101 | 101 | ||
102 | <div class="form-group form-group-checkbox"> | ||
103 | <input type="checkbox" id="commentsEnabled" formControlName="commentsEnabled" /> | ||
104 | <label for="commentsEnabled"></label> | ||
105 | <label for="commentsEnabled">Enable video comments</label> | ||
106 | </div> | ||
107 | |||
102 | </div> | 108 | </div> |
103 | </div> | 109 | </div> |
diff --git a/client/src/app/videos/+video-edit/shared/video-edit.component.ts b/client/src/app/videos/+video-edit/shared/video-edit.component.ts index 7fe265284..2b307d5fa 100644 --- a/client/src/app/videos/+video-edit/shared/video-edit.component.ts +++ b/client/src/app/videos/+video-edit/shared/video-edit.component.ts | |||
@@ -70,6 +70,7 @@ export class VideoEditComponent implements OnInit { | |||
70 | this.form.addControl('privacy', new FormControl('', VIDEO_PRIVACY.VALIDATORS)) | 70 | this.form.addControl('privacy', new FormControl('', VIDEO_PRIVACY.VALIDATORS)) |
71 | this.form.addControl('channelId', new FormControl({ value: '', disabled: true })) | 71 | this.form.addControl('channelId', new FormControl({ value: '', disabled: true })) |
72 | this.form.addControl('nsfw', new FormControl(false)) | 72 | this.form.addControl('nsfw', new FormControl(false)) |
73 | this.form.addControl('commentsEnabled', new FormControl(true)) | ||
73 | this.form.addControl('category', new FormControl('', VIDEO_CATEGORY.VALIDATORS)) | 74 | this.form.addControl('category', new FormControl('', VIDEO_CATEGORY.VALIDATORS)) |
74 | this.form.addControl('licence', new FormControl('', VIDEO_LICENCE.VALIDATORS)) | 75 | this.form.addControl('licence', new FormControl('', VIDEO_LICENCE.VALIDATORS)) |
75 | this.form.addControl('language', new FormControl('', VIDEO_LANGUAGE.VALIDATORS)) | 76 | this.form.addControl('language', new FormControl('', VIDEO_LANGUAGE.VALIDATORS)) |
diff --git a/client/src/app/videos/+video-edit/video-add.component.ts b/client/src/app/videos/+video-edit/video-add.component.ts index 9bbee58d8..843475647 100644 --- a/client/src/app/videos/+video-edit/video-add.component.ts +++ b/client/src/app/videos/+video-edit/video-add.component.ts | |||
@@ -88,6 +88,7 @@ export class VideoAddComponent extends FormReactive implements OnInit { | |||
88 | const name = videofile.name.replace(/\.[^/.]+$/, '') | 88 | const name = videofile.name.replace(/\.[^/.]+$/, '') |
89 | const privacy = this.firstStepPrivacyId.toString() | 89 | const privacy = this.firstStepPrivacyId.toString() |
90 | const nsfw = false | 90 | const nsfw = false |
91 | const commentsEnabled = true | ||
91 | const channelId = this.firstStepChannelId.toString() | 92 | const channelId = this.firstStepChannelId.toString() |
92 | 93 | ||
93 | const formData = new FormData() | 94 | const formData = new FormData() |
@@ -95,6 +96,7 @@ export class VideoAddComponent extends FormReactive implements OnInit { | |||
95 | // Put the video "private" -> we wait he validates the second step | 96 | // Put the video "private" -> we wait he validates the second step |
96 | formData.append('privacy', VideoPrivacy.PRIVATE.toString()) | 97 | formData.append('privacy', VideoPrivacy.PRIVATE.toString()) |
97 | formData.append('nsfw', '' + nsfw) | 98 | formData.append('nsfw', '' + nsfw) |
99 | formData.append('commentsEnabled', '' + commentsEnabled) | ||
98 | formData.append('channelId', '' + channelId) | 100 | formData.append('channelId', '' + channelId) |
99 | formData.append('videofile', videofile) | 101 | formData.append('videofile', videofile) |
100 | 102 | ||
diff --git a/client/src/app/videos/+video-watch/comment/video-comments.component.html b/client/src/app/videos/+video-watch/comment/video-comments.component.html index 5c6908150..078900e06 100644 --- a/client/src/app/videos/+video-watch/comment/video-comments.component.html +++ b/client/src/app/videos/+video-watch/comment/video-comments.component.html | |||
@@ -3,35 +3,43 @@ | |||
3 | Comments | 3 | Comments |
4 | </div> | 4 | </div> |
5 | 5 | ||
6 | <my-video-comment-add | 6 | <ng-template [ngIf]="video.commentsEnabled === true"> |
7 | *ngIf="isUserLoggedIn()" | 7 | <my-video-comment-add |
8 | [video]="video" | 8 | *ngIf="isUserLoggedIn()" |
9 | (commentCreated)="onCommentThreadCreated($event)" | 9 | [video]="video" |
10 | ></my-video-comment-add> | 10 | (commentCreated)="onCommentThreadCreated($event)" |
11 | ></my-video-comment-add> | ||
11 | 12 | ||
12 | <div | 13 | <div *ngIf="componentPagination.totalItems === 0 && comments.length === 0">No comments.</div> |
13 | class="comment-threads" | ||
14 | infiniteScroll | ||
15 | [infiniteScrollUpDistance]="1.5" | ||
16 | [infiniteScrollDistance]="0.5" | ||
17 | (scrolled)="onNearOfBottom()" | ||
18 | > | ||
19 | <div *ngFor="let comment of comments"> | ||
20 | <my-video-comment | ||
21 | [comment]="comment" | ||
22 | [video]="video" | ||
23 | [inReplyToCommentId]="inReplyToCommentId" | ||
24 | [commentTree]="threadComments[comment.id]" | ||
25 | (wantedToReply)="onWantedToReply($event)" | ||
26 | (resetReply)="onResetReply()" | ||
27 | ></my-video-comment> | ||
28 | 14 | ||
29 | <div *ngIf="comment.totalReplies !== 0 && !threadComments[comment.id]" (click)="viewReplies(comment)" class="view-replies"> | 15 | <div |
30 | View all {{ comment.totalReplies }} replies | 16 | class="comment-threads" |
17 | infiniteScroll | ||
18 | [infiniteScrollUpDistance]="1.5" | ||
19 | [infiniteScrollDistance]="0.5" | ||
20 | (scrolled)="onNearOfBottom()" | ||
21 | > | ||
22 | <div *ngFor="let comment of comments"> | ||
23 | <my-video-comment | ||
24 | [comment]="comment" | ||
25 | [video]="video" | ||
26 | [inReplyToCommentId]="inReplyToCommentId" | ||
27 | [commentTree]="threadComments[comment.id]" | ||
28 | (wantedToReply)="onWantedToReply($event)" | ||
29 | (resetReply)="onResetReply()" | ||
30 | ></my-video-comment> | ||
31 | 31 | ||
32 | <span *ngIf="!threadLoading[comment.id]" class="glyphicon glyphicon-menu-down"></span> | 32 | <div *ngIf="comment.totalReplies !== 0 && !threadComments[comment.id]" (click)="viewReplies(comment)" class="view-replies"> |
33 | <my-loader class="comment-thread-loading" [loading]="threadLoading[comment.id]"></my-loader> | 33 | View all {{ comment.totalReplies }} replies |
34 | |||
35 | <span *ngIf="!threadLoading[comment.id]" class="glyphicon glyphicon-menu-down"></span> | ||
36 | <my-loader class="comment-thread-loading" [loading]="threadLoading[comment.id]"></my-loader> | ||
37 | </div> | ||
34 | </div> | 38 | </div> |
35 | </div> | 39 | </div> |
40 | </ng-template> | ||
41 | |||
42 | <div *ngIf="video.commentsEnabled === false"> | ||
43 | Comments are disabled. | ||
36 | </div> | 44 | </div> |
37 | </div> | 45 | </div> |
diff --git a/client/src/app/videos/+video-watch/comment/video-comments.component.ts b/client/src/app/videos/+video-watch/comment/video-comments.component.ts index f4dda9089..4d801c970 100644 --- a/client/src/app/videos/+video-watch/comment/video-comments.component.ts +++ b/client/src/app/videos/+video-watch/comment/video-comments.component.ts | |||
@@ -5,6 +5,7 @@ import { AuthService } from '../../../core/auth' | |||
5 | import { ComponentPagination } from '../../../shared/rest/component-pagination.model' | 5 | import { ComponentPagination } from '../../../shared/rest/component-pagination.model' |
6 | import { User } from '../../../shared/users' | 6 | import { User } from '../../../shared/users' |
7 | import { SortField } from '../../../shared/video/sort-field.type' | 7 | import { SortField } from '../../../shared/video/sort-field.type' |
8 | import { VideoDetails } from '../../../shared/video/video-details.model' | ||
8 | import { Video } from '../../../shared/video/video.model' | 9 | import { Video } from '../../../shared/video/video.model' |
9 | import { VideoComment } from './video-comment.model' | 10 | import { VideoComment } from './video-comment.model' |
10 | import { VideoCommentService } from './video-comment.service' | 11 | import { VideoCommentService } from './video-comment.service' |
@@ -15,7 +16,7 @@ import { VideoCommentService } from './video-comment.service' | |||
15 | styleUrls: ['./video-comments.component.scss'] | 16 | styleUrls: ['./video-comments.component.scss'] |
16 | }) | 17 | }) |
17 | export class VideoCommentsComponent implements OnInit { | 18 | export class VideoCommentsComponent implements OnInit { |
18 | @Input() video: Video | 19 | @Input() video: VideoDetails |
19 | @Input() user: User | 20 | @Input() user: User |
20 | 21 | ||
21 | comments: VideoComment[] = [] | 22 | comments: VideoComment[] = [] |
@@ -36,7 +37,9 @@ export class VideoCommentsComponent implements OnInit { | |||
36 | ) {} | 37 | ) {} |
37 | 38 | ||
38 | ngOnInit () { | 39 | ngOnInit () { |
39 | this.loadMoreComments() | 40 | if (this.video.commentsEnabled === true) { |
41 | this.loadMoreComments() | ||
42 | } | ||
40 | } | 43 | } |
41 | 44 | ||
42 | viewReplies (comment: VideoComment) { | 45 | viewReplies (comment: VideoComment) { |