+ <form role="form" (ngSubmit)="formValidated()" [formGroup]="form" [ngClass]="{ 'col-5': isInBigView() }">
+ <div class="form-group" *ngIf="isCreation()">
+ <label i18n for="username">Username</label>
+ <input
+ type="text" id="username" i18n-placeholder placeholder="john" class="form-control"
+ formControlName="username" [ngClass]="{ 'input-error': formErrors['username'] }"
+ >
+ <div *ngIf="formErrors.username" class="form-error">
+ {{ formErrors.username }}
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label i18n for="email">Email</label>
+ <input
+ type="text" id="email" i18n-placeholder placeholder="mail@example.com" class="form-control"
+ formControlName="email" [ngClass]="{ 'input-error': formErrors['email'] }"
+ autocomplete="off"
+ >
+ <div *ngIf="formErrors.email" class="form-error">
+ {{ formErrors.email }}
+ </div>
+ </div>
+
+ <div class="form-group" *ngIf="isCreation()">
+ <label i18n for="password">Password</label>
+ <my-help *ngIf="isPasswordOptional()">
+ <ng-template ptTemplate="customHtml">
+ <ng-container i18n>
+ If you leave the password empty, an email will be sent to the user.
+ </ng-container>
+ </ng-template>
+ </my-help>
+ <input
+ type="password" id="password" autocomplete="new-password" class="form-control"
+ formControlName="password" [ngClass]="{ 'input-error': formErrors['password'] }"
+ >
+ <div *ngIf="formErrors.password" class="form-error">
+ {{ formErrors.password }}
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label i18n for="role">Role</label>
+ <div class="peertube-select-container">
+ <select id="role" formControlName="role" class="form-control">
+ <option *ngFor="let role of roles" [value]="role.value">
+ {{ role.label }}
+ </option>
+ </select>
+ </div>
+
+ <div *ngIf="formErrors.role" class="form-error">
+ {{ formErrors.role }}
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label i18n for="videoQuota">Video quota</label>
+ <div class="peertube-select-container">
+ <select id="videoQuota" formControlName="videoQuota" class="form-control">
+ <option *ngFor="let videoQuotaOption of videoQuotaOptions" [value]="videoQuotaOption.value" [disabled]="videoQuotaOption.disabled">
+ {{ videoQuotaOption.label }}
+ </option>
+ </select>
+ </div>
+
+ <div i18n class="transcoding-information" *ngIf="isTranscodingInformationDisplayed()">
+ Transcoding is enabled. The video quota only takes into account <strong>original</strong> video size. <br />
+ At most, this user could upload ~ {{ computeQuotaWithTranscoding() | bytes: 0 }}.
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label i18n for="videoQuotaDaily">Daily video quota</label>
+ <div class="peertube-select-container">
+ <select id="videoQuotaDaily" formControlName="videoQuotaDaily" class="form-control">
+ <option *ngFor="let videoQuotaDailyOption of videoQuotaDailyOptions" [value]="videoQuotaDailyOption.value" [disabled]="videoQuotaDailyOption.disabled">
+ {{ videoQuotaDailyOption.label }}
+ </option>
+ </select>
+ </div>
+ </div>
+
+ <div class="form-group">
+ <my-peertube-checkbox
+ inputName="byPassAutoBlacklist" formControlName="byPassAutoBlacklist"
+ i18n-labelText labelText="Doesn't need review before a video goes public"
+ ></my-peertube-checkbox>
+ </div>
+
+ <input type="submit" value="{{ getFormButtonTitle() }}" [disabled]="!form.valid">
+ </form>
+
+ <div *ngIf="isInBigView()" class="col-7">
+ <ng-template *ngTemplateOutlet="dashboard"></ng-template>