]>
Commit | Line | Data |
---|---|---|
ab998f7b | 1 | <p-table |
9b4241e3 RK |
2 | [value]="videoAbuses" [lazy]="true" [paginator]="true" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions" |
3 | [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" dataKey="id" [resizableColumns]="true" | |
2bc9bd08 | 4 | [showCurrentPageReport]="true" i18n-currentPageReportTemplate |
45c14ae1 | 5 | currentPageReportTemplate="Showing {{'{first}'}} to {{'{last}'}} of {{'{totalRecords}'}} reports" |
f595d394 | 6 | > |
844db39e RK |
7 | <ng-template pTemplate="caption"> |
8 | <div class="caption"> | |
9 | <div class="ml-auto"> | |
10 | <input | |
11 | type="text" name="table-filter" id="table-filter" i18n-placeholder placeholder="Filter..." | |
12 | (keyup)="onSearch($event)" | |
13 | > | |
14 | </div> | |
15 | </div> | |
16 | </ng-template> | |
17 | ||
ab998f7b | 18 | <ng-template pTemplate="header"> |
2bc9bd08 RK |
19 | <tr> <!-- header --> |
20 | <th style="width: 40px;"></th> | |
9b4241e3 | 21 | <th style="width: 20%;" pResizableColumn i18n>Reporter</th> |
b1d40cff | 22 | <th i18n>Video</th> |
9b4241e3 | 23 | <th style="width:190px;" i18n pSortableColumn="createdAt">Created <p-sortIcon field="createdAt"></p-sortIcon></th> |
f0d4e7eb | 24 | <th i18n pSortableColumn="state" style="width: 80px;">State <p-sortIcon field="state"></p-sortIcon></th> |
af5767ff | 25 | <th style="width: 120px;"></th> |
ab998f7b C |
26 | </tr> |
27 | </ng-template> | |
28 | ||
efc9e845 | 29 | <ng-template pTemplate="body" let-expanded="expanded" let-videoAbuse> |
ab998f7b | 30 | <tr> |
2bc9bd08 RK |
31 | <td class="c-hand" [pRowToggler]="videoAbuse" i18n-ngbTooltip ngbTooltip="More information" placement="top-left" container="body"> |
32 | <span class="expander"> | |
efc9e845 C |
33 | <i [ngClass]="expanded ? 'glyphicon glyphicon-menu-down' : 'glyphicon glyphicon-menu-right'"></i> |
34 | </span> | |
35 | </td> | |
36 | ||
19a3b914 | 37 | <td> |
d6af8146 RK |
38 | <a [href]="videoAbuse.reporterAccount.url" i18n-title title="Open account in a new tab" target="_blank" rel="noopener noreferrer"> |
39 | <div class="chip two-lines"> | |
40 | <img | |
41 | class="avatar" | |
42 | [src]="videoAbuse.reporterAccount.avatar.path" | |
43 | (error)="switchToDefaultAvatar($event)" | |
44 | alt="Avatar" | |
45 | > | |
46 | <div> | |
47 | {{ videoAbuse.reporterAccount.displayName }} | |
48 | <span class="text-muted">{{ createByString(videoAbuse.reporterAccount) }}</span> | |
49 | </div> | |
50 | </div> | |
19a3b914 C |
51 | </a> |
52 | </td> | |
efc9e845 | 53 | |
844db39e | 54 | <td *ngIf="!videoAbuse.video.deleted"> |
aeb1bed9 RK |
55 | <a [href]="getVideoUrl(videoAbuse)" class="video-table-video-link" i18n-title title="Open video in a new tab" target="_blank" rel="noopener noreferrer"> |
56 | <div class="video-table-video"> | |
57 | <div class="video-table-video-image"> | |
5fd4ca00 RK |
58 | <img [src]="videoAbuse.video.thumbnailPath"> |
59 | <span | |
aeb1bed9 | 60 | class="video-table-video-image-label" *ngIf="videoAbuse.count > 1" |
5fd4ca00 RK |
61 | i18n-title title="This video has been reported multiple times." |
62 | >{{ videoAbuse.nth }}/{{ videoAbuse.count }}</span> | |
63 | </div> | |
aeb1bed9 | 64 | <div class="video-table-video-text"> |
86521a67 RK |
65 | <div> |
66 | {{ videoAbuse.video.name }} | |
844db39e | 67 | <span *ngIf="!videoAbuse.video.blacklisted" class="glyphicon glyphicon-new-window"></span> |
86521a67 RK |
68 | <span *ngIf="videoAbuse.video.blacklisted" i18n-title title="Video was blacklisted" class="glyphicon glyphicon-ban-circle"></span> |
69 | </div> | |
70 | <div class="text-muted">by {{ videoAbuse.video.channel?.displayName }} on {{ videoAbuse.video.channel?.host }} </div> | |
71 | </div> | |
72 | </div> | |
19a3b914 | 73 | </a> |
ab998f7b | 74 | </td> |
efc9e845 | 75 | |
844db39e | 76 | <td *ngIf="videoAbuse.video.deleted" class="c-hand" [pRowToggler]="videoAbuse"> |
aeb1bed9 RK |
77 | <div class="video-table-video" i18n-title title="Video was deleted"> |
78 | <div class="video-table-video-image"><span i18n>Deleted</span></div> | |
79 | <div class="video-table-video-text"> | |
844db39e RK |
80 | <div> |
81 | {{ videoAbuse.video.name }} | |
82 | <span class="glyphicon glyphicon-trash"></span> | |
83 | </div> | |
84 | <div class="text-muted">by {{ videoAbuse.video.channel?.displayName }} on {{ videoAbuse.video.channel?.host }} </div> | |
85 | </div> | |
86 | </div> | |
87 | </td> | |
88 | ||
89 | <td class="c-hand" [pRowToggler]="videoAbuse">{{ videoAbuse.createdAt }}</td> | |
9b4241e3 | 90 | |
68d19a0a | 91 | <td class="c-hand video-abuse-states" [pRowToggler]="videoAbuse"> |
f0d4e7eb C |
92 | <span *ngIf="isVideoAbuseAccepted(videoAbuse)" [title]="videoAbuse.state.label" class="glyphicon glyphicon-ok"></span> |
93 | <span *ngIf="isVideoAbuseRejected(videoAbuse)" [title]="videoAbuse.state.label" class="glyphicon glyphicon-remove"></span> | |
5fd4ca00 | 94 | <span *ngIf="videoAbuse.moderationComment" container="body" placement="left auto" [ngbTooltip]="videoAbuse.moderationComment" class="glyphicon glyphicon-comment"></span> |
f0d4e7eb C |
95 | </td> |
96 | ||
efc9e845 | 97 | <td class="action-cell"> |
5fd4ca00 RK |
98 | <my-action-dropdown |
99 | [ngClass]="{ 'show': expanded }" placement="bottom-right auto" container="body" | |
100 | i18n-label label="Actions" [actions]="videoAbuseActions" [entry]="videoAbuse" | |
101 | ></my-action-dropdown> | |
efc9e845 C |
102 | </td> |
103 | </tr> | |
104 | </ng-template> | |
105 | ||
106 | <ng-template pTemplate="rowexpansion" let-videoAbuse> | |
83b5fe9c | 107 | <tr> |
d6af8146 | 108 | <td class="expand-cell" colspan="6"> |
5fd4ca00 RK |
109 | <div class="d-flex moderation-expanded"> |
110 | <!-- report metadata --> | |
d6af8146 RK |
111 | <div class="col-8"> |
112 | <div class="d-flex"> | |
5fd4ca00 RK |
113 | <span class="col-3 moderation-expanded-label" i18n>Reporter</span> |
114 | <span class="col-9 moderation-expanded-text"> | |
115 | <div class="chip"> | |
116 | <img | |
117 | class="avatar" | |
118 | [src]="videoAbuse.reporterAccount.avatar.path" | |
119 | (error)="switchToDefaultAvatar($event)" | |
120 | alt="Avatar" | |
121 | > | |
122 | <div> | |
123 | <span class="text-muted">{{ createByString(videoAbuse.reporterAccount) }}</span> | |
124 | </div> | |
125 | </div> | |
aeb1bed9 | 126 | <a routerLink="/admin/moderation/video-abuses/list" class="ml-auto text-muted video-details-links" i18n> |
5fd4ca00 RK |
127 | {videoAbuse.countReportsForReporter, plural, =1 {1 report} other {{{ videoAbuse.countReportsForReporter }} reports}}<span class="ml-1Â glyphicon glyphicon-flag"></span> |
128 | </a> | |
129 | </span> | |
130 | </div> | |
131 | <div class="d-flex"> | |
132 | <span class="col-3 moderation-expanded-label" i18n>Reportee</span> | |
133 | <span class="col-9 moderation-expanded-text"> | |
134 | <div class="chip"> | |
135 | <img | |
136 | class="avatar" | |
137 | [src]="videoAbuse.video.channel.ownerAccount?.avatar.path" | |
138 | (error)="switchToDefaultAvatar($event)" | |
139 | alt="Avatar" | |
140 | > | |
141 | <div> | |
142 | <span class="text-muted">{{ videoAbuse.video.channel.ownerAccount ? createByString(videoAbuse.video.channel.ownerAccount) : '' }}</span> | |
143 | </div> | |
144 | </div> | |
aeb1bed9 | 145 | <a routerLink="/admin/moderation/video-abuses/list" class="ml-auto text-muted video-details-links" *ngIf="!videoAbuse.video.deleted" i18n> |
5fd4ca00 RK |
146 | {videoAbuse.countReportsForReportee, plural, =1 {1 report} other {{{ videoAbuse.countReportsForReportee }} reports}}<span class="ml-1Â glyphicon glyphicon-flag"></span> |
147 | </a> | |
148 | </span> | |
149 | </div> | |
150 | <div class="d-flex"> | |
151 | <span class="col-3 moderation-expanded-label" i18n>Updated</span> | |
aeb1bed9 | 152 | <time class="col-9 moderation-expanded-text video-details-date-updated">{{ videoAbuse.updatedAt | date: 'medium' }}</time> |
5fd4ca00 RK |
153 | </div> |
154 | ||
155 | <!-- report text --> | |
156 | <div class="mt-3 d-flex"> | |
157 | <span class="col-3 moderation-expanded-label" i18n>Report</span> | |
d6af8146 RK |
158 | <span class="col-9 moderation-expanded-text" [innerHTML]="videoAbuse.reasonHtml"></span> |
159 | </div> | |
160 | <div class="mt-3 d-flex" *ngIf="videoAbuse.moderationComment"> | |
5fd4ca00 | 161 | <span class="col-3 moderation-expanded-label" i18n>Note</span> |
d6af8146 RK |
162 | <span class="col-9 moderation-expanded-text" [innerHTML]="videoAbuse.moderationCommentHtml"></span> |
163 | </div> | |
164 | </div> | |
45c14ae1 | 165 | |
d6af8146 | 166 | <div class="col-4"> |
68d19a0a | 167 | <div class="screenratio"> |
86521a67 | 168 | <div *ngIf="videoAbuse.video.deleted || videoAbuse.video.blacklisted"> |
68d19a0a RK |
169 | <span i18n>The video was {{ videoAbuse.video.deleted ? 'deleted' : 'blacklisted' }}</span> |
170 | </div> | |
86521a67 | 171 | <div *ngIf="!videoAbuse.video.deleted && !videoAbuse.video.blacklisted" [innerHTML]="videoAbuse.embedHtml"></div> |
68d19a0a | 172 | </div> |
d6af8146 | 173 | </div> |
83b5fe9c FA |
174 | </div> |
175 | </td> | |
176 | </tr> | |
ab998f7b C |
177 | </ng-template> |
178 | </p-table> | |
efc9e845 | 179 | |
4707f410 | 180 | <my-moderation-comment-modal #moderationCommentModal (commentUpdated)="onModerationCommentUpdated()"></my-moderation-comment-modal> |