Add categories and languages to about page
This commit is contained in:
parent
a00045a218
commit
4402b54dce
|
@ -8,9 +8,25 @@
|
|||
</div>
|
||||
|
||||
<div class="short-description">
|
||||
<div>{{ shortDescription }}</div>
|
||||
<div class="block short-description">{{ shortDescription }}</div>
|
||||
|
||||
<div *ngIf="isNSFW" class="dedicated-to-nsfw">This instance is dedicated to sensitive/NSFW content.</div>
|
||||
<div *ngIf="isNSFW" class="block dedicated-to-nsfw">This instance is dedicated to sensitive/NSFW content.</div>
|
||||
|
||||
<div class="block">
|
||||
<div class="section-title" *ngIf="languages.length !== 0">Main instance languages</div>
|
||||
|
||||
<ul>
|
||||
<li *ngFor="let language of languages">{{ language }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="block">
|
||||
<div class="section-title" *ngIf="categories.length !== 0">Main instance categories</div>
|
||||
|
||||
<ul>
|
||||
<li *ngFor="let category of categories">{{ category }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="middle-title" *ngIf="html.administrator || maintenanceLifetime || businessModel">
|
||||
|
@ -18,19 +34,19 @@
|
|||
</div>
|
||||
|
||||
<div class="block administrator" *ngIf="html.administrator">
|
||||
<div i18n class="section-title">Instance administrators</div>
|
||||
<div i18n class="section-title">Who are we?</div>
|
||||
|
||||
<div [innerHTML]="html.administrator"></div>
|
||||
</div>
|
||||
|
||||
<div class="block maintenance-lifetime" *ngIf="maintenanceLifetime">
|
||||
<div i18n class="section-title">Maintenance lifetime</div>
|
||||
<div i18n class="section-title">How long do we plan to maintain this instance?</div>
|
||||
|
||||
<p>{{ maintenanceLifetime }}</p>
|
||||
</div>
|
||||
|
||||
<div class="block business-model" *ngIf="businessModel">
|
||||
<div i18n class="section-title">Business model</div>
|
||||
<div i18n class="section-title">How will we pay this instance?</div>
|
||||
|
||||
<p>{{ businessModel }}</p>
|
||||
</div>
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
|
||||
.block {
|
||||
margin-bottom: 30px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.short-description .dedicated-to-nsfw {
|
||||
|
|
|
@ -4,6 +4,9 @@ import { I18n } from '@ngx-translate/i18n-polyfill'
|
|||
import { ContactAdminModalComponent } from '@app/+about/about-instance/contact-admin-modal.component'
|
||||
import { InstanceService } from '@app/shared/instance/instance.service'
|
||||
import { MarkdownService } from '@app/shared/renderer'
|
||||
import { forkJoin } from 'rxjs'
|
||||
import { first } from 'rxjs/operators'
|
||||
import { peertubeTranslate } from '@shared/models'
|
||||
|
||||
@Component({
|
||||
selector: 'my-about-instance',
|
||||
|
@ -27,7 +30,7 @@ export class AboutInstanceComponent implements OnInit {
|
|||
businessModel = ''
|
||||
|
||||
languages: string[] = []
|
||||
categories: number[] = []
|
||||
categories: string[] = []
|
||||
|
||||
constructor (
|
||||
private notifier: Notifier,
|
||||
|
@ -50,28 +53,45 @@ export class AboutInstanceComponent implements OnInit {
|
|||
}
|
||||
|
||||
ngOnInit () {
|
||||
this.instanceService.getAbout()
|
||||
.subscribe(
|
||||
async res => {
|
||||
this.shortDescription = res.instance.shortDescription
|
||||
forkJoin([
|
||||
this.instanceService.getAbout(),
|
||||
this.serverService.localeObservable.pipe(first()),
|
||||
this.serverService.videoLanguagesLoaded.pipe(first()),
|
||||
this.serverService.videoCategoriesLoaded.pipe(first())
|
||||
]).subscribe(
|
||||
async ([ res, translations ]) => {
|
||||
this.shortDescription = res.instance.shortDescription
|
||||
|
||||
this.maintenanceLifetime = res.instance.maintenanceLifetime
|
||||
this.businessModel = res.instance.businessModel
|
||||
this.maintenanceLifetime = res.instance.maintenanceLifetime
|
||||
this.businessModel = res.instance.businessModel
|
||||
|
||||
for (const key of [ 'description', 'terms', 'codeOfConduct', 'moderationInformation', 'administrator' ]) {
|
||||
this.html[key] = await this.markdownService.textMarkdownToHTML(res.instance[key])
|
||||
}
|
||||
for (const key of [ 'description', 'terms', 'codeOfConduct', 'moderationInformation', 'administrator' ]) {
|
||||
this.html[ key ] = await this.markdownService.textMarkdownToHTML(res.instance[ key ])
|
||||
}
|
||||
|
||||
this.languages = res.instance.languages
|
||||
this.categories = res.instance.categories
|
||||
},
|
||||
const languagesArray = this.serverService.getVideoLanguages()
|
||||
const categoriesArray = this.serverService.getVideoCategories()
|
||||
|
||||
() => this.notifier.error(this.i18n('Cannot get about information from server'))
|
||||
)
|
||||
this.languages = res.instance.languages
|
||||
.map(l => {
|
||||
const languageObj = languagesArray.find(la => la.id === l)
|
||||
|
||||
return peertubeTranslate(languageObj.label, translations)
|
||||
})
|
||||
|
||||
this.categories = res.instance.categories
|
||||
.map(c => {
|
||||
const categoryObj = categoriesArray.find(ca => ca.id === c)
|
||||
|
||||
return peertubeTranslate(categoryObj.label, translations)
|
||||
})
|
||||
},
|
||||
|
||||
() => this.notifier.error(this.i18n('Cannot get about information from server'))
|
||||
)
|
||||
}
|
||||
|
||||
openContactModal () {
|
||||
return this.contactAdminModal.show()
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue