diff options
Diffstat (limited to 'client/src/app/+admin/moderation/registration-list/registration-list.component.html')
-rw-r--r-- | client/src/app/+admin/moderation/registration-list/registration-list.component.html | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/client/src/app/+admin/moderation/registration-list/registration-list.component.html b/client/src/app/+admin/moderation/registration-list/registration-list.component.html new file mode 100644 index 000000000..4f9d06acc --- /dev/null +++ b/client/src/app/+admin/moderation/registration-list/registration-list.component.html | |||
@@ -0,0 +1,120 @@ | |||
1 | <h1> | ||
2 | <my-global-icon iconName="user" aria-hidden="true"></my-global-icon> | ||
3 | <ng-container i18n>Registration requests</ng-container> | ||
4 | </h1> | ||
5 | |||
6 | <p-table | ||
7 | [value]="registrations" [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [first]="pagination.start" | ||
8 | [rowsPerPageOptions]="rowsPerPageOptions" [sortField]="sort.field" [sortOrder]="sort.order" dataKey="id" | ||
9 | [lazy]="true" (onLazyLoad)="loadLazy($event)" [lazyLoadOnInit]="false" | ||
10 | [showCurrentPageReport]="true" i18n-currentPageReportTemplate | ||
11 | currentPageReportTemplate="Showing {{'{first}'}} to {{'{last}'}} of {{'{totalRecords}'}} registrations" | ||
12 | [expandedRowKeys]="expandedRows" | ||
13 | > | ||
14 | <ng-template pTemplate="caption"> | ||
15 | <div class="caption"> | ||
16 | <div class="ms-auto"> | ||
17 | <my-advanced-input-filter (search)="onSearch($event)"></my-advanced-input-filter> | ||
18 | </div> | ||
19 | </div> | ||
20 | </ng-template> | ||
21 | |||
22 | <ng-template pTemplate="header"> | ||
23 | <tr> <!-- header --> | ||
24 | <th style="width: 40px;"></th> | ||
25 | <th style="width: 150px;"></th> | ||
26 | <th i18n>Account</th> | ||
27 | <th i18n>Email</th> | ||
28 | <th i18n>Channel</th> | ||
29 | <th i18n>Registration reason</th> | ||
30 | <th i18n pSortableColumn="state" style="width: 80px;">State <p-sortIcon field="state"></p-sortIcon></th> | ||
31 | <th i18n>Moderation response</th> | ||
32 | <th style="width: 150px;" i18n pSortableColumn="createdAt">Requested on <p-sortIcon field="createdAt"></p-sortIcon></th> | ||
33 | </tr> | ||
34 | </ng-template> | ||
35 | |||
36 | <ng-template pTemplate="body" let-expanded="expanded" let-registration> | ||
37 | <tr> | ||
38 | <td class="expand-cell" [pRowToggler]="registration"> | ||
39 | <my-table-expander-icon [expanded]="expanded"></my-table-expander-icon> | ||
40 | </td> | ||
41 | |||
42 | <td class="action-cell"> | ||
43 | <my-action-dropdown | ||
44 | [ngClass]="{ 'show': expanded }" placement="bottom-right top-right left auto" container="body" | ||
45 | i18n-label label="Actions" [actions]="registrationActions" [entry]="registration" | ||
46 | ></my-action-dropdown> | ||
47 | </td> | ||
48 | |||
49 | <td> | ||
50 | <div class="chip two-lines"> | ||
51 | <div> | ||
52 | <span>{{ registration.username }}</span> | ||
53 | <span class="muted">{{ registration.accountDisplayName }}</span> | ||
54 | </div> | ||
55 | </div> | ||
56 | </td> | ||
57 | |||
58 | <td> | ||
59 | <my-user-email-info [entry]="registration" [requiresEmailVerification]="requiresEmailVerification"></my-user-email-info> | ||
60 | </td> | ||
61 | |||
62 | <td> | ||
63 | <div class="chip two-lines"> | ||
64 | <div> | ||
65 | <span>{{ registration.channelHandle }}</span> | ||
66 | <span class="muted">{{ registration.channelDisplayName }}</span> | ||
67 | </div> | ||
68 | </div> | ||
69 | </td> | ||
70 | |||
71 | <td container="body" placement="left auto" [ngbTooltip]="registration.registrationReason"> | ||
72 | {{ registration.registrationReason }} | ||
73 | </td> | ||
74 | |||
75 | <td class="c-hand abuse-states" [pRowToggler]="registration"> | ||
76 | <my-global-icon *ngIf="isRegistrationAccepted(registration)" [title]="registration.state.label" iconName="tick"></my-global-icon> | ||
77 | <my-global-icon *ngIf="isRegistrationRejected(registration)" [title]="registration.state.label" iconName="cross"></my-global-icon> | ||
78 | </td> | ||
79 | |||
80 | <td container="body" placement="left auto" [ngbTooltip]="registration.moderationResponse"> | ||
81 | {{ registration.moderationResponse }} | ||
82 | </td> | ||
83 | |||
84 | <td class="c-hand" [pRowToggler]="registration">{{ registration.createdAt | date: 'short' }}</td> | ||
85 | </tr> | ||
86 | </ng-template> | ||
87 | |||
88 | <ng-template pTemplate="rowexpansion" let-registration> | ||
89 | <tr> | ||
90 | <td colspan="9"> | ||
91 | <div class="moderation-expanded"> | ||
92 | <div class="left"> | ||
93 | <div class="d-flex"> | ||
94 | <span class="moderation-expanded-label" i18n>Registration reason:</span> | ||
95 | <span class="moderation-expanded-text" [innerHTML]="registration.registrationReasonHTML"></span> | ||
96 | </div> | ||
97 | |||
98 | <div *ngIf="registration.moderationResponse"> | ||
99 | <span class="moderation-expanded-label" i18n>Moderation response:</span> | ||
100 | <span class="moderation-expanded-text" [innerHTML]="registration.moderationResponseHTML"></span> | ||
101 | </div> | ||
102 | </div> | ||
103 | </div> | ||
104 | </td> | ||
105 | </tr> | ||
106 | </ng-template> | ||
107 | |||
108 | <ng-template pTemplate="emptymessage"> | ||
109 | <tr> | ||
110 | <td colspan="9"> | ||
111 | <div class="no-results"> | ||
112 | <ng-container *ngIf="search" i18n>No registrations found matching current filters.</ng-container> | ||
113 | <ng-container *ngIf="!search" i18n>No registrations found.</ng-container> | ||
114 | </div> | ||
115 | </td> | ||
116 | </tr> | ||
117 | </ng-template> | ||
118 | </p-table> | ||
119 | |||
120 | <my-process-registration-modal #processRegistrationModal (registrationProcessed)="onRegistrationProcessed()"></my-process-registration-modal> | ||