Add categories and languages to about page

This commit is contained in:
Chocobozzz 2019-08-27 10:18:49 +02:00 committed by Chocobozzz
parent a00045a218
commit 4402b54dce
3 changed files with 58 additions and 21 deletions

View File

@ -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>

View File

@ -36,6 +36,7 @@
.block {
margin-bottom: 30px;
font-size: 15px;
}
.short-description .dedicated-to-nsfw {

View File

@ -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()
}
}