- <ng-template pTemplate="body" let-user>
- <tr>
- <td>{{ user.username }}</td>
- <td>{{ user.email }}</td>
- <td>{{ user.videoQuota }}</td>
+ <ng-template pTemplate="body" let-expanded="expanded" let-user>
+
+ <tr [pSelectableRow]="user" [ngClass]="{ banned: user.blocked }">
+ <td>
+ <p-tableCheckbox [value]="user"></p-tableCheckbox>
+ </td>
+
+ <td class="expand-cell">
+ <span *ngIf="user.blockedReason" class="expander" [pRowToggler]="user">
+ <i [ngClass]="expanded ? 'glyphicon glyphicon-menu-down' : 'glyphicon glyphicon-menu-right'"></i>
+ </span>
+ </td>
+
+ <td>
+ <a i18n-title title="Open account in a new tab" target="_blank" rel="noopener noreferrer" [routerLink]="[ '/accounts/' + user.username ]">
+ <div class="chip two-lines">
+ <img
+ class="avatar"
+ [src]="user?.account?.avatar?.path"
+ (error)="switchToDefaultAvatar($event)"
+ alt="Avatar"
+ >
+ <div>
+ {{ user.account.displayName }}
+ <span class="text-muted">{{ user.username }}</span>
+ </div>
+ </div>
+ <span i18n *ngIf="user.blocked" class="banned-info">(banned)</span>
+ </a>
+ </td>
+
+ <td *ngIf="!requiresEmailVerification || user.blocked; else emailWithVerificationStatus" [title]="user.email">{{ user.email }}</td>
+
+ <ng-template #emailWithVerificationStatus>
+ <td *ngIf="user.emailVerified === false; else emailVerifiedNotFalse" i18n-title title="User's email must be verified to login">
+ <em>? {{ user.email }}</em>
+ </td>
+ <ng-template #emailVerifiedNotFalse>
+ <td i18n-title title="User's email is verified / User can login without email verification">
+ ✓ {{ user.email }}
+ </td>
+ </ng-template>
+ </ng-template>
+
+ <td>{{ user.videoQuotaUsed }} / {{ user.videoQuota }}</td>