diff options
Diffstat (limited to 'client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html')
-rw-r--r-- | client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html | 480 |
1 files changed, 253 insertions, 227 deletions
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html index e2cbd35ca..52eb00d93 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html +++ b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html | |||
@@ -7,161 +7,169 @@ | |||
7 | 7 | ||
8 | <div i18n class="inner-form-title">Instance</div> | 8 | <div i18n class="inner-form-title">Instance</div> |
9 | 9 | ||
10 | <div class="form-group"> | 10 | <ng-container formGroupName="instance"> |
11 | <label i18n for="instanceName">Name</label> | 11 | <div class="form-group"> |
12 | <input | 12 | <label i18n for="instanceName">Name</label> |
13 | type="text" id="instanceName" | 13 | <input |
14 | formControlName="instanceName" [ngClass]="{ 'input-error': formErrors['instanceName'] }" | 14 | type="text" id="instanceName" |
15 | > | 15 | formControlName="name" [ngClass]="{ 'input-error': formErrors.instance.name }" |
16 | <div *ngIf="formErrors.instanceName" class="form-error"> | 16 | > |
17 | {{ formErrors.instanceName }} | 17 | <div *ngIf="formErrors.instance.name" class="form-error">{{ formErrors.instance.name }}</div> |
18 | </div> | 18 | </div> |
19 | </div> | ||
20 | 19 | ||
21 | <div class="form-group"> | 20 | <div class="form-group"> |
22 | <label i18n for="instanceShortDescription">Short description</label> | 21 | <label i18n for="instanceShortDescription">Short description</label> |
23 | <textarea | 22 | <textarea |
24 | id="instanceShortDescription" formControlName="instanceShortDescription" | 23 | id="instanceShortDescription" formControlName="shortDescription" |
25 | [ngClass]="{ 'input-error': formErrors['instanceShortDescription'] }" | 24 | [ngClass]="{ 'input-error': formErrors['instance.shortDescription'] }" |
26 | ></textarea> | 25 | ></textarea> |
27 | <div *ngIf="formErrors.instanceShortDescription" class="form-error"> | 26 | <div *ngIf="formErrors.instance.shortDescription" class="form-error">{{ formErrors.instance.shortDescription }}</div> |
28 | {{ formErrors.instanceShortDescription }} | ||
29 | </div> | 27 | </div> |
30 | </div> | ||
31 | 28 | ||
32 | <div class="form-group"> | 29 | <div class="form-group"> |
33 | <label i18n for="instanceDescription">Description</label><my-help helpType="markdownText"></my-help> | 30 | <label i18n for="instanceDescription">Description</label><my-help helpType="markdownText"></my-help> |
34 | <my-markdown-textarea | 31 | <my-markdown-textarea |
35 | id="instanceDescription" formControlName="instanceDescription" textareaWidth="500px" [previewColumn]="true" | 32 | id="instanceDescription" formControlName="description" textareaWidth="500px" [previewColumn]="true" |
36 | [classes]="{ 'input-error': formErrors['instanceDescription'] }" | 33 | [classes]="{ 'input-error': formErrors['instance.description'] }" |
37 | ></my-markdown-textarea> | 34 | ></my-markdown-textarea> |
38 | <div *ngIf="formErrors.instanceDescription" class="form-error"> | 35 | <div *ngIf="formErrors.instance.description" class="form-error">{{ formErrors.instance.description }}</div> |
39 | {{ formErrors.instanceDescription }} | ||
40 | </div> | 36 | </div> |
41 | </div> | ||
42 | 37 | ||
43 | <div class="form-group"> | 38 | <div class="form-group"> |
44 | <label i18n for="instanceTerms">Terms</label><my-help helpType="markdownText"></my-help> | 39 | <label i18n for="instanceTerms">Terms</label><my-help helpType="markdownText"></my-help> |
45 | <my-markdown-textarea | 40 | <my-markdown-textarea |
46 | id="instanceTerms" formControlName="instanceTerms" textareaWidth="500px" [previewColumn]="true" | 41 | id="instanceTerms" formControlName="terms" textareaWidth="500px" [previewColumn]="true" |
47 | [ngClass]="{ 'input-error': formErrors['instanceTerms'] }" | 42 | [ngClass]="{ 'input-error': formErrors['instance.terms'] }" |
48 | ></my-markdown-textarea> | 43 | ></my-markdown-textarea> |
49 | <div *ngIf="formErrors.instanceTerms" class="form-error"> | 44 | <div *ngIf="formErrors.instance.terms" class="form-error">{{ formErrors.instance.terms }}</div> |
50 | {{ formErrors.instanceTerms }} | ||
51 | </div> | 45 | </div> |
52 | </div> | ||
53 | 46 | ||
54 | <div class="form-group"> | 47 | <div class="form-group"> |
55 | <label i18n for="instanceDefaultClientRoute">Default client route</label> | 48 | <label i18n for="instanceDefaultClientRoute">Default client route</label> |
56 | <div class="peertube-select-container"> | 49 | <div class="peertube-select-container"> |
57 | <select id="instanceDefaultClientRoute" formControlName="instanceDefaultClientRoute"> | 50 | <select id="instanceDefaultClientRoute" formControlName="defaultClientRoute"> |
58 | <option i18n value="/videos/overview">Videos Overview</option> | 51 | <option i18n value="/videos/overview">Videos Overview</option> |
59 | <option i18n value="/videos/trending">Videos Trending</option> | 52 | <option i18n value="/videos/trending">Videos Trending</option> |
60 | <option i18n value="/videos/recently-added">Videos Recently Added</option> | 53 | <option i18n value="/videos/recently-added">Videos Recently Added</option> |
61 | <option i18n value="/videos/local">Local videos</option> | 54 | <option i18n value="/videos/local">Local videos</option> |
62 | </select> | 55 | </select> |
56 | </div> | ||
57 | <div *ngIf="formErrors.instance.defaultClientRoute" class="form-error">{{ formErrors.instance.defaultClientRoute }}</div> | ||
63 | </div> | 58 | </div> |
64 | <div *ngIf="formErrors.instanceDefaultClientRoute" class="form-error"> | 59 | |
65 | {{ formErrors.instanceDefaultClientRoute }} | 60 | <div class="form-group"> |
61 | <label i18n for="instanceDefaultNSFWPolicy">Policy on videos containing sensitive content</label> | ||
62 | <my-help | ||
63 | helpType="custom" i18n-customHtml | ||
64 | customHtml="With <strong>Do not list</strong> or <strong>Blur thumbnails</strong>, a confirmation will be requested to watch the video." | ||
65 | ></my-help> | ||
66 | |||
67 | <div class="peertube-select-container"> | ||
68 | <select id="instanceDefaultNSFWPolicy" formControlName="defaultNSFWPolicy"> | ||
69 | <option i18n value="do_not_list">Do not list</option> | ||
70 | <option i18n value="blur">Blur thumbnails</option> | ||
71 | <option i18n value="display">Display</option> | ||
72 | </select> | ||
73 | </div> | ||
74 | <div *ngIf="formErrors.instance.defaultNSFWPolicy" class="form-error">{{ formErrors.instance.defaultNSFWPolicy }}</div> | ||
66 | </div> | 75 | </div> |
67 | </div> | 76 | </ng-container> |
68 | 77 | ||
69 | <div class="form-group"> | 78 | <div i18n class="inner-form-title">Signup</div> |
70 | <label i18n for="instanceDefaultNSFWPolicy">Policy on videos containing sensitive content</label> | ||
71 | <my-help | ||
72 | helpType="custom" i18n-customHtml | ||
73 | customHtml="With <strong>Do not list</strong> or <strong>Blur thumbnails</strong>, a confirmation will be requested to watch the video." | ||
74 | ></my-help> | ||
75 | 79 | ||
76 | <div class="peertube-select-container"> | 80 | <ng-container formGroupName="signup"> |
77 | <select id="instanceDefaultNSFWPolicy" formControlName="instanceDefaultNSFWPolicy"> | 81 | <div class="form-group"> |
78 | <option i18n value="do_not_list">Do not list</option> | 82 | <my-peertube-checkbox |
79 | <option i18n value="blur">Blur thumbnails</option> | 83 | inputName="signupEnabled" formControlName="enabled" |
80 | <option i18n value="display">Display</option> | 84 | i18n-labelText labelText="Signup enabled" |
81 | </select> | 85 | ></my-peertube-checkbox> |
82 | </div> | 86 | </div> |
83 | <div *ngIf="formErrors.instanceDefaultNSFWPolicy" class="form-error"> | 87 | |
84 | {{ formErrors.instanceDefaultNSFWPolicy }} | 88 | <div class="form-group"> |
89 | <my-peertube-checkbox *ngIf="isSignupEnabled()" | ||
90 | inputName="signupRequiresEmailVerification" formControlName="requiresEmailVerification" | ||
91 | i18n-labelText labelText="Signup requires email verification" | ||
92 | ></my-peertube-checkbox> | ||
85 | </div> | 93 | </div> |
86 | </div> | ||
87 | 94 | ||
88 | <div i18n class="inner-form-title">Signup</div> | 95 | <div *ngIf="isSignupEnabled()" class="form-group"> |
96 | <label i18n for="signupLimit">Signup limit</label> | ||
97 | <input | ||
98 | type="text" id="signupLimit" | ||
99 | formControlName="limit" [ngClass]="{ 'input-error': formErrors['signup.limit'] }" | ||
100 | > | ||
101 | <div *ngIf="formErrors.signup.limit" class="form-error">{{ formErrors.signup.limit }}</div> | ||
102 | </div> | ||
103 | </ng-container> | ||
89 | 104 | ||
90 | <my-peertube-checkbox | 105 | <div i18n class="inner-form-title">Users</div> |
91 | inputName="signupEnabled" formControlName="signupEnabled" | ||
92 | i18n-labelText labelText="Signup enabled" | ||
93 | ></my-peertube-checkbox> | ||
94 | 106 | ||
95 | <my-peertube-checkbox *ngIf="isSignupEnabled()" | 107 | <ng-container formGroupName="user"> |
96 | inputName="signupRequiresEmailVerification" formControlName="signupRequiresEmailVerification" | 108 | <div class="form-group"> |
97 | i18n-labelText labelText="Signup requires email verification" | 109 | <label i18n for="userVideoQuota">User default video quota</label> |
98 | ></my-peertube-checkbox> | 110 | <div class="peertube-select-container"> |
111 | <select id="userVideoQuota" formControlName="videoQuota"> | ||
112 | <option *ngFor="let videoQuotaOption of videoQuotaOptions" [value]="videoQuotaOption.value"> | ||
113 | {{ videoQuotaOption.label }} | ||
114 | </option> | ||
115 | </select> | ||
116 | </div> | ||
117 | <div *ngIf="formErrors.user.videoQuota" class="form-error">{{ formErrors.user.videoQuota }}</div> | ||
118 | </div> | ||
99 | 119 | ||
100 | <div *ngIf="isSignupEnabled()" class="form-group"> | 120 | <div class="form-group"> |
101 | <label i18n for="signupLimit">Signup limit</label> | 121 | <label i18n for="userVideoQuotaDaily">User default daily upload limit</label> |
102 | <input | 122 | <div class="peertube-select-container"> |
103 | type="text" id="signupLimit" | 123 | <select id="userVideoQuotaDaily" formControlName="videoQuotaDaily"> |
104 | formControlName="signupLimit" [ngClass]="{ 'input-error': formErrors['signupLimit'] }" | 124 | <option *ngFor="let videoQuotaDailyOption of videoQuotaDailyOptions" [value]="videoQuotaDailyOption.value"> |
105 | > | 125 | {{ videoQuotaDailyOption.label }} |
106 | <div *ngIf="formErrors.signupLimit" class="form-error"> | 126 | </option> |
107 | {{ formErrors.signupLimit }} | 127 | </select> |
128 | </div> | ||
129 | <div *ngIf="formErrors.user.videoQuotaDaily" class="form-error">{{ formErrors.user.videoQuotaDaily }}</div> | ||
108 | </div> | 130 | </div> |
109 | </div> | 131 | </ng-container> |
110 | 132 | ||
111 | <div i18n class="inner-form-title">Import</div> | 133 | <div i18n class="inner-form-title">Import</div> |
112 | 134 | ||
113 | <my-peertube-checkbox | 135 | <ng-container formGroupName="import"> |
114 | inputName="importVideosHttpEnabled" formControlName="importVideosHttpEnabled" | 136 | <ng-container formGroupName="videos"> |
115 | i18n-labelText labelText="Video import with HTTP enabled" | ||
116 | ></my-peertube-checkbox> | ||
117 | 137 | ||
118 | <my-peertube-checkbox | 138 | <div class="form-group" formGroupName="http"> |
119 | inputName="importVideosTorrentEnabled" formControlName="importVideosTorrentEnabled" | 139 | <my-peertube-checkbox |
120 | i18n-labelText labelText="Video import with a torrent file or a magnet URI enabled" | 140 | inputName="importVideosHttpEnabled" formControlName="enabled" |
121 | ></my-peertube-checkbox> | 141 | i18n-labelText labelText="Video import with HTTP URL (i.e. YouTube) enabled" |
142 | ></my-peertube-checkbox> | ||
143 | </div> | ||
144 | |||
145 | <div class="form-group" formGroupName="torrent"> | ||
146 | <my-peertube-checkbox | ||
147 | inputName="importVideosTorrentEnabled" formControlName="enabled" | ||
148 | i18n-labelText labelText="Video import with a torrent file or a magnet URI enabled" | ||
149 | ></my-peertube-checkbox> | ||
150 | </div> | ||
151 | |||
152 | </ng-container> | ||
153 | </ng-container> | ||
122 | 154 | ||
123 | <div i18n class="inner-form-title">Administrator</div> | 155 | <div i18n class="inner-form-title">Administrator</div> |
124 | 156 | ||
125 | <div class="form-group"> | 157 | <div class="form-group" formGroupName="admin"> |
126 | <label i18n for="adminEmail">Admin email</label> | 158 | <label i18n for="adminEmail">Admin email</label> |
127 | <input | 159 | <input |
128 | type="text" id="adminEmail" | 160 | type="text" id="adminEmail" |
129 | formControlName="adminEmail" [ngClass]="{ 'input-error': formErrors['adminEmail'] }" | 161 | formControlName="email" [ngClass]="{ 'input-error': formErrors['admin.email'] }" |
130 | > | 162 | > |
131 | <div *ngIf="formErrors.adminEmail" class="form-error"> | 163 | <div *ngIf="formErrors.admin.email" class="form-error">{{ formErrors.admin.email }}</div> |
132 | {{ formErrors.adminEmail }} | ||
133 | </div> | ||
134 | </div> | 164 | </div> |
135 | 165 | ||
136 | <div i18n class="inner-form-title">Users</div> | 166 | <div class="form-group" formGroupName="contactForm"> |
137 | 167 | <my-peertube-checkbox | |
138 | <div class="form-group"> | 168 | inputName="enableContactForm" formControlName="enabled" |
139 | <label i18n for="userVideoQuota">User default video quota</label> | 169 | i18n-labelText labelText="Enable contact form" |
140 | <div class="peertube-select-container"> | 170 | ></my-peertube-checkbox> |
141 | <select id="userVideoQuota" formControlName="userVideoQuota"> | ||
142 | <option *ngFor="let videoQuotaOption of videoQuotaOptions" [value]="videoQuotaOption.value"> | ||
143 | {{ videoQuotaOption.label }} | ||
144 | </option> | ||
145 | </select> | ||
146 | </div> | ||
147 | <div *ngIf="formErrors.userVideoQuota" class="form-error"> | ||
148 | {{ formErrors.userVideoQuota }} | ||
149 | </div> | ||
150 | </div> | 171 | </div> |
151 | 172 | ||
152 | <div class="form-group"> | ||
153 | <label i18n for="userVideoQuotaDaily">User default daily upload limit</label> | ||
154 | <div class="peertube-select-container"> | ||
155 | <select id="userVideoQuotaDaily" formControlName="userVideoQuotaDaily"> | ||
156 | <option *ngFor="let videoQuotaDailyOption of videoQuotaDailyOptions" [value]="videoQuotaDailyOption.value"> | ||
157 | {{ videoQuotaDailyOption.label }} | ||
158 | </option> | ||
159 | </select> | ||
160 | </div> | ||
161 | <div *ngIf="formErrors.userVideoQuotaDaily" class="form-error"> | ||
162 | {{ formErrors.userVideoQuotaDaily }} | ||
163 | </div> | ||
164 | </div> | ||
165 | </ng-template> | 173 | </ng-template> |
166 | </ngb-tab> | 174 | </ngb-tab> |
167 | 175 | ||
@@ -169,28 +177,35 @@ | |||
169 | <ng-template ngbTabContent> | 177 | <ng-template ngbTabContent> |
170 | <div i18n class="inner-form-title">Twitter</div> | 178 | <div i18n class="inner-form-title">Twitter</div> |
171 | 179 | ||
172 | <div class="form-group"> | 180 | <ng-container formGroupName="services"> |
173 | <label i18n for="signupLimit">Your Twitter username</label> | 181 | <ng-container formGroupName="twitter"> |
174 | <my-help | 182 | |
175 | helpType="custom" i18n-customHtml | 183 | <div class="form-group"> |
176 | customHtml="Indicates the Twitter account for the website or platform on which the content was published." | 184 | <label i18n for="signupLimit">Your Twitter username</label> |
177 | ></my-help> | 185 | <my-help |
178 | <input | 186 | helpType="custom" i18n-customHtml |
179 | type="text" id="servicesTwitterUsername" | 187 | customHtml="Indicates the Twitter account for the website or platform on which the content was published." |
180 | formControlName="servicesTwitterUsername" [ngClass]="{ 'input-error': formErrors['servicesTwitterUsername'] }" | 188 | ></my-help> |
181 | > | 189 | <input |
182 | <div *ngIf="formErrors.servicesTwitterUsername" class="form-error"> | 190 | type="text" id="servicesTwitterUsername" |
183 | {{ formErrors.servicesTwitterUsername }} | 191 | formControlName="username" [ngClass]="{ 'input-error': formErrors['services.twitter.username'] }" |
184 | </div> | 192 | > |
185 | </div> | 193 | <div *ngIf="formErrors.services.twitter.username" class="form-error">{{ formErrors.services.twitter.username }}</div> |
194 | </div> | ||
195 | |||
196 | <div class="form-group"> | ||
197 | <my-peertube-checkbox | ||
198 | inputName="servicesTwitterWhitelisted" formControlName="whitelisted" | ||
199 | i18n-labelText labelText="Instance whitelisted by Twitter" | ||
200 | i18n-helpHtml helpHtml="If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.<br /> | ||
201 | If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> | ||
202 | Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted." | ||
203 | ></my-peertube-checkbox> | ||
204 | </div> | ||
205 | |||
206 | </ng-container> | ||
207 | </ng-container> | ||
186 | 208 | ||
187 | <my-peertube-checkbox | ||
188 | inputName="servicesTwitterWhitelisted" formControlName="servicesTwitterWhitelisted" | ||
189 | i18n-labelText labelText="Instance whitelisted by Twitter" | ||
190 | i18n-helpHtml helpHtml="If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.<br /> | ||
191 | If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> | ||
192 | Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted." | ||
193 | ></my-peertube-checkbox> | ||
194 | </ng-template> | 209 | </ng-template> |
195 | </ngb-tab> | 210 | </ngb-tab> |
196 | 211 | ||
@@ -199,36 +214,48 @@ | |||
199 | 214 | ||
200 | <div i18n class="inner-form-title">Transcoding</div> | 215 | <div i18n class="inner-form-title">Transcoding</div> |
201 | 216 | ||
202 | <my-peertube-checkbox | 217 | <ng-container formGroupName="transcoding"> |
203 | inputName="transcodingEnabled" formControlName="transcodingEnabled" | 218 | <div class="form-group"> |
204 | i18n-labelText labelText="Transcoding enabled" | 219 | <my-peertube-checkbox |
205 | i18n-helpHtml helpHtml="If you disable transcoding, many videos from your users will not work!" | 220 | inputName="transcodingEnabled" formControlName="enabled" |
206 | ></my-peertube-checkbox> | 221 | i18n-labelText labelText="Transcoding enabled" |
222 | i18n-helpHtml helpHtml="If you disable transcoding, many videos from your users will not work!" | ||
223 | ></my-peertube-checkbox> | ||
224 | </div> | ||
207 | 225 | ||
208 | <ng-template [ngIf]="isTranscodingEnabled()"> | 226 | <ng-container *ngIf="isTranscodingEnabled()"> |
209 | 227 | ||
210 | <div class="form-group"> | 228 | <div class="form-group"> |
211 | <label i18n for="transcodingThreads">Transcoding threads</label> | 229 | <my-peertube-checkbox |
212 | <div class="peertube-select-container"> | 230 | inputName="transcodingAllowAdditionalExtensions" formControlName="allowAdditionalExtensions" |
213 | <select id="transcodingThreads" formControlName="transcodingThreads"> | 231 | i18n-labelText labelText="Allow additional extensions" |
214 | <option *ngFor="let transcodingThreadOption of transcodingThreadOptions" [value]="transcodingThreadOption.value"> | 232 | i18n-helpHtml helpHtml="Allow your users to upload .mkv, .mov, .avi, .flv videos" |
215 | {{ transcodingThreadOption.label }} | 233 | ></my-peertube-checkbox> |
216 | </option> | ||
217 | </select> | ||
218 | </div> | 234 | </div> |
219 | <div *ngIf="formErrors.transcodingThreads" class="form-error"> | 235 | |
220 | {{ formErrors.transcodingThreads }} | 236 | <div class="form-group"> |
237 | <label i18n for="transcodingThreads">Transcoding threads</label> | ||
238 | <div class="peertube-select-container"> | ||
239 | <select id="transcodingThreads" formControlName="threads"> | ||
240 | <option *ngFor="let transcodingThreadOption of transcodingThreadOptions" [value]="transcodingThreadOption.value"> | ||
241 | {{ transcodingThreadOption.label }} | ||
242 | </option> | ||
243 | </select> | ||
244 | </div> | ||
245 | <div *ngIf="formErrors.transcoding.threads" class="form-error">{{ formErrors.transcoding.threads }}</div> | ||
221 | </div> | 246 | </div> |
222 | </div> | ||
223 | 247 | ||
224 | <div class="form-group" *ngFor="let resolution of resolutions"> | 248 | <ng-container formGroupName="resolutions"> |
225 | <my-peertube-checkbox | 249 | <div class="form-group" *ngFor="let resolution of resolutions"> |
226 | [inputName]="getResolutionKey(resolution)" [formControlName]="getResolutionKey(resolution)" | 250 | <my-peertube-checkbox |
227 | i18n-labelText labelText="Resolution {{resolution}} enabled" | 251 | [inputName]="getResolutionKey(resolution)" [formControlName]="resolution" |
228 | ></my-peertube-checkbox> | 252 | i18n-labelText labelText="Resolution {{resolution}} enabled" |
253 | ></my-peertube-checkbox> | ||
254 | </div> | ||
255 | </ng-container> | ||
229 | 256 | ||
230 | </div> | 257 | </ng-container> |
231 | </ng-template> | 258 | </ng-container> |
232 | 259 | ||
233 | <div i18n class="inner-form-title"> | 260 | <div i18n class="inner-form-title"> |
234 | Cache | 261 | Cache |
@@ -239,74 +266,73 @@ | |||
239 | ></my-help> | 266 | ></my-help> |
240 | </div> | 267 | </div> |
241 | 268 | ||
242 | <div class="form-group"> | 269 | <ng-container formGroupName="cache"> |
243 | <label i18n for="cachePreviewsSize">Previews cache size</label> | 270 | <div class="form-group" formGroupName="previews"> |
244 | <input | 271 | <label i18n for="cachePreviewsSize">Previews cache size</label> |
245 | type="text" id="cachePreviewsSize" | 272 | <input |
246 | formControlName="cachePreviewsSize" [ngClass]="{ 'input-error': formErrors['cachePreviewsSize'] }" | 273 | type="text" id="cachePreviewsSize" |
247 | > | 274 | formControlName="size" [ngClass]="{ 'input-error': formErrors['cache.previews.size'] }" |
248 | <div *ngIf="formErrors.cachePreviewsSize" class="form-error"> | 275 | > |
249 | {{ formErrors.cachePreviewsSize }} | 276 | <div *ngIf="formErrors.cache.previews.size" class="form-error">{{ formErrors.cache.previews.size }}</div> |
250 | </div> | 277 | </div> |
251 | </div> | ||
252 | 278 | ||
253 | <div class="form-group"> | 279 | <div class="form-group" formGroupName="captions"> |
254 | <label i18n for="cachePreviewsSize">Video captions cache size</label> | 280 | <label i18n for="cacheCaptionsSize">Video captions cache size</label> |
255 | <input | 281 | <input |
256 | type="text" id="cacheCaptionsSize" | 282 | type="text" id="cacheCaptionsSize" |
257 | formControlName="cacheCaptionsSize" [ngClass]="{ 'input-error': formErrors['cacheCaptionsSize'] }" | 283 | formControlName="size" [ngClass]="{ 'input-error': formErrors['cache.captions.size'] }" |
258 | > | 284 | > |
259 | <div *ngIf="formErrors.cacheCaptionsSize" class="form-error"> | 285 | <div *ngIf="formErrors.cache.captions.size" class="form-error">{{ formErrors.cache.captions.size }}</div> |
260 | {{ formErrors.cacheCaptionsSize }} | ||
261 | </div> | 286 | </div> |
262 | </div> | 287 | </ng-container> |
263 | 288 | ||
264 | <div i18n class="inner-form-title">Customizations</div> | 289 | <div i18n class="inner-form-title">Customizations</div> |
265 | 290 | ||
266 | <div class="form-group"> | 291 | <ng-container formGroupName="instance"> |
267 | <label i18n for="customizationJavascript">JavaScript</label> | 292 | <ng-container formGroupName="customizations"> |
268 | <my-help | 293 | <div class="form-group"> |
269 | helpType="custom" i18n-customHtml | 294 | <label i18n for="customizationJavascript">JavaScript</label> |
270 | customHtml="Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre>" | 295 | <my-help |
271 | ></my-help> | 296 | helpType="custom" i18n-customHtml |
272 | <textarea | 297 | customHtml="Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre>" |
273 | id="customizationJavascript" formControlName="customizationJavascript" | 298 | ></my-help> |
274 | [ngClass]="{ 'input-error': formErrors['customizationJavascript'] }" | 299 | <textarea |
275 | ></textarea> | 300 | id="customizationJavascript" formControlName="javascript" |
276 | <div *ngIf="formErrors.customizationJavascript" class="form-error"> | 301 | [ngClass]="{ 'input-error': formErrors['instance.customizations.javascript'] }" |
277 | {{ formErrors.customizationJavascript }} | 302 | ></textarea> |
278 | </div> | 303 | <div *ngIf="formErrors.instance.customizations.javascript" class="form-error">{{ formErrors.instance.customizations.javascript }}</div> |
279 | </div> | 304 | </div> |
305 | |||
306 | <div class="form-group"> | ||
307 | <label for="customizationCSS">CSS</label> | ||
308 | <my-help | ||
309 | helpType="custom" | ||
310 | i18n-customHtml | ||
311 | customHtml=" | ||
312 | Write directly CSS code. Example:<br /> | ||
313 | <pre> | ||
314 | body {{ '{' }} | ||
315 | background-color: red; | ||
316 | {{ '}' }} | ||
317 | </pre> | ||
318 | |||
319 | Prepend with <em>#custom-css</em> to override styles. Example: | ||
320 | <pre> | ||
321 | #custom-css .logged-in-email {{ '{' }} | ||
322 | color: red; | ||
323 | {{ '}' }} | ||
324 | </pre> | ||
325 | " | ||
326 | ></my-help> | ||
327 | <textarea | ||
328 | id="customizationCSS" formControlName="css" | ||
329 | [ngClass]="{ 'input-error': formErrors['instance.customizations.css'] }" | ||
330 | ></textarea> | ||
331 | <div *ngIf="formErrors.instance.customizations.css" class="form-error">{{ formErrors.instance.customizations.css }}</div> | ||
332 | </div> | ||
333 | </ng-container> | ||
334 | </ng-container> | ||
280 | 335 | ||
281 | <div class="form-group"> | ||
282 | <label for="customizationCSS">CSS</label> | ||
283 | <my-help | ||
284 | helpType="custom" | ||
285 | i18n-customHtml | ||
286 | customHtml=" | ||
287 | Write directly CSS code. Example:<br /> | ||
288 | <pre> | ||
289 | body {{ '{' }} | ||
290 | background-color: red; | ||
291 | {{ '}' }} | ||
292 | </pre> | ||
293 | |||
294 | Prepend with <em>#custom-css</em> to override styles. Example: | ||
295 | <pre> | ||
296 | #custom-css .logged-in-email {{ '{' }} | ||
297 | color: red; | ||
298 | {{ '}' }} | ||
299 | </pre> | ||
300 | " | ||
301 | ></my-help> | ||
302 | <textarea | ||
303 | id="customizationCSS" formControlName="customizationCSS" | ||
304 | [ngClass]="{ 'input-error': formErrors['customizationCSS'] }" | ||
305 | ></textarea> | ||
306 | <div *ngIf="formErrors.customizationCSS" class="form-error"> | ||
307 | {{ formErrors.customizationCSS }} | ||
308 | </div> | ||
309 | </div> | ||
310 | </ng-template> | 336 | </ng-template> |
311 | </ngb-tab> | 337 | </ngb-tab> |
312 | </ngb-tabset> | 338 | </ngb-tabset> |