diff options
author | Chocobozzz <chocobozzz@cpy.re> | 2021-05-27 15:59:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-27 15:59:55 +0200 |
commit | 2539932e16129992a2c0889b4ff527c265a8e2c7 (patch) | |
tree | fb5048e63e02a2485eb96d27455f43e4b22e8ae0 /client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts | |
parent | eb34ec30e0b57286fc6f85160490d2e973a3b0b1 (diff) | |
download | PeerTube-2539932e16129992a2c0889b4ff527c265a8e2c7.tar.gz PeerTube-2539932e16129992a2c0889b4ff527c265a8e2c7.tar.zst PeerTube-2539932e16129992a2c0889b4ff527c265a8e2c7.zip |
Instance homepage support (#4007)
* Prepare homepage parsers
* Add ability to update instance hompage
* Add ability to set homepage as landing page
* Add homepage preview in admin
* Dynamically update left menu for homepage
* Inject home content in homepage
* Add videos list and channel miniature custom markup
* Remove unused elements in markup service
Diffstat (limited to 'client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts')
-rw-r--r-- | client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts | 48 |
1 files changed, 35 insertions, 13 deletions
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts index 4b35d65fc..dc8334dd0 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts +++ b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts | |||
@@ -1,4 +1,5 @@ | |||
1 | 1 | ||
2 | import omit from 'lodash-es/omit' | ||
2 | import { forkJoin } from 'rxjs' | 3 | import { forkJoin } from 'rxjs' |
3 | import { SelectOptionsItem } from 'src/types/select-options-item.model' | 4 | import { SelectOptionsItem } from 'src/types/select-options-item.model' |
4 | import { Component, OnInit } from '@angular/core' | 5 | import { Component, OnInit } from '@angular/core' |
@@ -24,9 +25,14 @@ import { | |||
24 | } from '@app/shared/form-validators/custom-config-validators' | 25 | } from '@app/shared/form-validators/custom-config-validators' |
25 | import { USER_VIDEO_QUOTA_DAILY_VALIDATOR, USER_VIDEO_QUOTA_VALIDATOR } from '@app/shared/form-validators/user-validators' | 26 | import { USER_VIDEO_QUOTA_DAILY_VALIDATOR, USER_VIDEO_QUOTA_VALIDATOR } from '@app/shared/form-validators/user-validators' |
26 | import { FormReactive, FormValidatorService } from '@app/shared/shared-forms' | 27 | import { FormReactive, FormValidatorService } from '@app/shared/shared-forms' |
27 | import { CustomConfig, ServerConfig } from '@shared/models' | 28 | import { CustomPageService } from '@app/shared/shared-main/custom-page' |
29 | import { CustomConfig, CustomPage, ServerConfig } from '@shared/models' | ||
28 | import { EditConfigurationService } from './edit-configuration.service' | 30 | import { EditConfigurationService } from './edit-configuration.service' |
29 | 31 | ||
32 | type ComponentCustomConfig = CustomConfig & { | ||
33 | instanceCustomHomepage: CustomPage | ||
34 | } | ||
35 | |||
30 | @Component({ | 36 | @Component({ |
31 | selector: 'my-edit-custom-config', | 37 | selector: 'my-edit-custom-config', |
32 | templateUrl: './edit-custom-config.component.html', | 38 | templateUrl: './edit-custom-config.component.html', |
@@ -35,9 +41,11 @@ import { EditConfigurationService } from './edit-configuration.service' | |||
35 | export class EditCustomConfigComponent extends FormReactive implements OnInit { | 41 | export class EditCustomConfigComponent extends FormReactive implements OnInit { |
36 | activeNav: string | 42 | activeNav: string |
37 | 43 | ||
38 | customConfig: CustomConfig | 44 | customConfig: ComponentCustomConfig |
39 | serverConfig: ServerConfig | 45 | serverConfig: ServerConfig |
40 | 46 | ||
47 | homepage: CustomPage | ||
48 | |||
41 | languageItems: SelectOptionsItem[] = [] | 49 | languageItems: SelectOptionsItem[] = [] |
42 | categoryItems: SelectOptionsItem[] = [] | 50 | categoryItems: SelectOptionsItem[] = [] |
43 | 51 | ||
@@ -47,6 +55,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit { | |||
47 | protected formValidatorService: FormValidatorService, | 55 | protected formValidatorService: FormValidatorService, |
48 | private notifier: Notifier, | 56 | private notifier: Notifier, |
49 | private configService: ConfigService, | 57 | private configService: ConfigService, |
58 | private customPage: CustomPageService, | ||
50 | private serverService: ServerService, | 59 | private serverService: ServerService, |
51 | private editConfigurationService: EditConfigurationService | 60 | private editConfigurationService: EditConfigurationService |
52 | ) { | 61 | ) { |
@@ -56,11 +65,9 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit { | |||
56 | ngOnInit () { | 65 | ngOnInit () { |
57 | this.serverConfig = this.serverService.getTmpConfig() | 66 | this.serverConfig = this.serverService.getTmpConfig() |
58 | this.serverService.getConfig() | 67 | this.serverService.getConfig() |
59 | .subscribe(config => { | 68 | .subscribe(config => this.serverConfig = config) |
60 | this.serverConfig = config | ||
61 | }) | ||
62 | 69 | ||
63 | const formGroupData: { [key in keyof CustomConfig ]: any } = { | 70 | const formGroupData: { [key in keyof ComponentCustomConfig ]: any } = { |
64 | instance: { | 71 | instance: { |
65 | name: INSTANCE_NAME_VALIDATOR, | 72 | name: INSTANCE_NAME_VALIDATOR, |
66 | shortDescription: INSTANCE_SHORT_DESCRIPTION_VALIDATOR, | 73 | shortDescription: INSTANCE_SHORT_DESCRIPTION_VALIDATOR, |
@@ -215,6 +222,10 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit { | |||
215 | disableLocalSearch: null, | 222 | disableLocalSearch: null, |
216 | isDefaultSearch: null | 223 | isDefaultSearch: null |
217 | } | 224 | } |
225 | }, | ||
226 | |||
227 | instanceCustomHomepage: { | ||
228 | content: null | ||
218 | } | 229 | } |
219 | } | 230 | } |
220 | 231 | ||
@@ -250,15 +261,23 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit { | |||
250 | } | 261 | } |
251 | 262 | ||
252 | async formValidated () { | 263 | async formValidated () { |
253 | const value: CustomConfig = this.form.getRawValue() | 264 | const value: ComponentCustomConfig = this.form.getRawValue() |
254 | 265 | ||
255 | this.configService.updateCustomConfig(value) | 266 | forkJoin([ |
267 | this.configService.updateCustomConfig(omit(value, 'instanceCustomHomepage')), | ||
268 | this.customPage.updateInstanceHomepage(value.instanceCustomHomepage.content) | ||
269 | ]) | ||
256 | .subscribe( | 270 | .subscribe( |
257 | res => { | 271 | ([ resConfig ]) => { |
258 | this.customConfig = res | 272 | const instanceCustomHomepage = { |
273 | content: value.instanceCustomHomepage.content | ||
274 | } | ||
275 | |||
276 | this.customConfig = { ...resConfig, instanceCustomHomepage } | ||
259 | 277 | ||
260 | // Reload general configuration | 278 | // Reload general configuration |
261 | this.serverService.resetConfig() | 279 | this.serverService.resetConfig() |
280 | .subscribe(config => this.serverConfig = config) | ||
262 | 281 | ||
263 | this.updateForm() | 282 | this.updateForm() |
264 | 283 | ||
@@ -317,9 +336,12 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit { | |||
317 | } | 336 | } |
318 | 337 | ||
319 | private loadConfigAndUpdateForm () { | 338 | private loadConfigAndUpdateForm () { |
320 | this.configService.getCustomConfig() | 339 | forkJoin([ |
321 | .subscribe(config => { | 340 | this.configService.getCustomConfig(), |
322 | this.customConfig = config | 341 | this.customPage.getInstanceHomepage() |
342 | ]) | ||
343 | .subscribe(([ config, homepage ]) => { | ||
344 | this.customConfig = { ...config, instanceCustomHomepage: homepage } | ||
323 | 345 | ||
324 | this.updateForm() | 346 | this.updateForm() |
325 | // Force form validation | 347 | // Force form validation |