]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html
Add ability to choose what policy we have for NSFW videos
[github/Chocobozzz/PeerTube.git] / client / src / app / +admin / config / edit-custom-config / edit-custom-config.component.html
1 <div class="admin-sub-title">Update PeerTube configuration</div>
2
3 <form role="form" [formGroup]="form">
4
5 <div class="inner-form-title">Instance</div>
6
7 <div class="form-group">
8 <label for="instanceName">Name</label>
9 <input
10 type="text" id="instanceName"
11 formControlName="instanceName" [ngClass]="{ 'input-error': formErrors['instanceName'] }"
12 >
13 <div *ngIf="formErrors.instanceName" class="form-error">
14 {{ formErrors.instanceName }}
15 </div>
16 </div>
17
18 <div class="form-group">
19 <label for="instanceShortDescription">Short description</label>
20 <textarea
21 id="instanceShortDescription" formControlName="instanceShortDescription"
22 [ngClass]="{ 'input-error': formErrors['instanceShortDescription'] }"
23 ></textarea>
24 <div *ngIf="formErrors.instanceShortDescription" class="form-error">
25 {{ formErrors.instanceShortDescription }}
26 </div>
27 </div>
28
29 <div class="form-group">
30 <label for="instanceDescription">Description</label><my-help helpType="markdownText"></my-help>
31 <my-markdown-textarea
32 id="instanceDescription" formControlName="instanceDescription" textareaWidth="500px" [previewColumn]="true"
33 [classes]="{ 'input-error': formErrors['instanceDescription'] }"
34 ></my-markdown-textarea>
35 <div *ngIf="formErrors.instanceDescription" class="form-error">
36 {{ formErrors.instanceDescription }}
37 </div>
38 </div>
39
40 <div class="form-group">
41 <label for="instanceTerms">Terms</label><my-help helpType="markdownText"></my-help>
42 <my-markdown-textarea
43 id="instanceTerms" formControlName="instanceTerms" textareaWidth="500px" [previewColumn]="true"
44 [ngClass]="{ 'input-error': formErrors['instanceTerms'] }"
45 ></my-markdown-textarea>
46 <div *ngIf="formErrors.instanceTerms" class="form-error">
47 {{ formErrors.instanceTerms }}
48 </div>
49 </div>
50
51 <div class="form-group">
52 <label for="instanceDefaultClientRoute">Default client route</label>
53 <div class="peertube-select-container">
54 <select id="instanceDefaultClientRoute" formControlName="instanceDefaultClientRoute">
55 <option value="/videos/trending">Videos Trending</option>
56 <option value="/videos/recently-added">Videos Recently Added</option>
57 <option value="/videos/local">Local videos</option>
58 </select>
59 </div>
60 <div *ngIf="formErrors.instanceDefaultClientRoute" class="form-error">
61 {{ formErrors.instanceDefaultClientRoute }}
62 </div>
63 </div>
64
65 <div class="form-group">
66 <label for="instanceDefaultNSFWPolicy">Policy on videos containing sensitive content</label>
67 <my-help helpType="custom" customHtml="With <strong>Do not list</strong> or <strong>Blur thumbnails</strong>, a confirmation will be requested to watch the video."></my-help>
68
69 <div class="peertube-select-container">
70 <select id="instanceDefaultNSFWPolicy" formControlName="instanceDefaultNSFWPolicy">
71 <option value="do_not_list">Do not list</option>
72 <option value="blur">Blur thumbnails</option>
73 <option value="display">Display</option>
74 </select>
75 </div>
76 <div *ngIf="formErrors.instanceDefaultNSFWPolicy" class="form-error">
77 {{ formErrors.instanceDefaultNSFWPolicy }}
78 </div>
79 </div>
80
81 <div class="inner-form-title">Cache</div>
82
83 <div class="form-group">
84 <label for="cachePreviewsSize">Preview cache size</label>
85 <input
86 type="text" id="cachePreviewsSize"
87 formControlName="cachePreviewsSize" [ngClass]="{ 'input-error': formErrors['cachePreviewsSize'] }"
88 >
89 <div *ngIf="formErrors.cachePreviewsSize" class="form-error">
90 {{ formErrors.cachePreviewsSize }}
91 </div>
92 </div>
93
94 <div class="inner-form-title">Signup</div>
95
96 <div class="form-group">
97 <input type="checkbox" id="signupEnabled" formControlName="signupEnabled">
98
99 <label for="signupEnabled"></label>
100 <label for="signupEnabled">Signup enabled</label>
101 </div>
102
103 <div *ngIf="isSignupEnabled()" class="form-group">
104 <label for="signupLimit">Signup limit</label>
105 <input
106 type="text" id="signupLimit"
107 formControlName="signupLimit" [ngClass]="{ 'input-error': formErrors['signupLimit'] }"
108 >
109 <div *ngIf="formErrors.signupLimit" class="form-error">
110 {{ formErrors.signupLimit }}
111 </div>
112 </div>
113
114 <div class="inner-form-title">Administrator</div>
115
116 <div class="form-group">
117 <label for="adminEmail">Admin email</label>
118 <input
119 type="text" id="adminEmail"
120 formControlName="adminEmail" [ngClass]="{ 'input-error': formErrors['adminEmail'] }"
121 >
122 <div *ngIf="formErrors.adminEmail" class="form-error">
123 {{ formErrors.adminEmail }}
124 </div>
125 </div>
126
127 <div class="inner-form-title">Users</div>
128
129 <div class="form-group">
130 <label for="userVideoQuota">User default video quota</label>
131 <div class="peertube-select-container">
132 <select id="userVideoQuota" formControlName="userVideoQuota">
133 <option *ngFor="let videoQuotaOption of videoQuotaOptions" [value]="videoQuotaOption.value">
134 {{ videoQuotaOption.label }}
135 </option>
136 </select>
137 </div>
138 <div *ngIf="formErrors.userVideoQuota" class="form-error">
139 {{ formErrors.userVideoQuota }}
140 </div>
141 </div>
142
143 <div class="inner-form-title">Transcoding</div>
144
145 <div class="form-group">
146 <input type="checkbox" id="transcodingEnabled" formControlName="transcodingEnabled">
147
148 <label for="transcodingEnabled"></label>
149 <label for="transcodingEnabled">Transcoding enabled</label>
150 </div>
151
152 <ng-template [ngIf]="isTranscodingEnabled()">
153
154 <div class="form-group">
155 <label for="transcodingThreads">Transcoding threads</label>
156 <div class="peertube-select-container">
157 <select id="transcodingThreads" formControlName="transcodingThreads">
158 <option *ngFor="let transcodingThreadOption of transcodingThreadOptions" [value]="transcodingThreadOption.value">
159 {{ transcodingThreadOption.label }}
160 </option>
161 </select>
162 </div>
163 <div *ngIf="formErrors.transcodingThreads" class="form-error">
164 {{ formErrors.transcodingThreads }}
165 </div>
166 </div>
167
168 <div class="form-group" *ngFor="let resolution of resolutions">
169 <input
170 type="checkbox" [id]="getResolutionKey(resolution)"
171 [formControlName]="getResolutionKey(resolution)"
172 >
173 <label [for]="getResolutionKey(resolution)"></label>
174 <label [for]="getResolutionKey(resolution)">Resolution {{ resolution }} enabled</label>
175 </div>
176 </ng-template>
177
178 <div class="inner-form-title">Customizations</div>
179
180 <div class="form-group">
181 <label for="customizationJavascript">JavaScript</label>
182 <my-help helpType="custom" customHtml="Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre>"></my-help>
183 <textarea
184 id="customizationJavascript" formControlName="customizationJavascript"
185 [ngClass]="{ 'input-error': formErrors['customizationJavascript'] }"
186 ></textarea>
187 <div *ngIf="formErrors.customizationJavascript" class="form-error">
188 {{ formErrors.customizationJavascript }}
189 </div>
190 </div>
191
192 <div class="form-group">
193 <label for="customizationCSS">CSS</label>
194 <my-help
195 helpType="custom"
196 customHtml="
197 Write directly CSS code. Example:<br />
198 <pre>
199 body {
200 background-color: red;
201 }
202 </pre>
203
204 Prepend with <em>#custom-css</em> to override styles. Example:
205 <pre>
206 #custom-css .logged-in-email {
207 color: red;
208 }
209 </pre>
210 "
211 ></my-help>
212 <textarea
213 id="customizationCSS" formControlName="customizationCSS"
214 [ngClass]="{ 'input-error': formErrors['customizationCSS'] }"
215 ></textarea>
216 <div *ngIf="formErrors.customizationCSS" class="form-error">
217 {{ formErrors.customizationCSS }}
218 </div>
219 </div>
220
221 <input (click)="formValidated()" type="submit" value="Update configuration" [disabled]="!form.valid">
222 </form>