Add contributors in about peertube page

pull/2131/head
Chocobozzz 2019-09-05 15:39:52 +02:00
parent 5819e694ba
commit 1eb23e12f7
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
12 changed files with 208 additions and 89 deletions

View File

@ -1,4 +1,4 @@
# Code
# Code contributors
* [Chocobozzz](https://github.com/Chocobozzz)
* [rigelk](https://github.com/rigelk)
@ -8,10 +8,12 @@
* [Jorropo](https://github.com/Jorropo)
* [buoyantair](https://github.com/buoyantair)
* [bnjbvr](https://github.com/bnjbvr)
* [frankstrater](https://github.com/frankstrater)
* [jankeromnes](https://github.com/jankeromnes)
* [lucas-dclrcq](https://github.com/lucas-dclrcq)
* [DavidLibeau](https://github.com/DavidLibeau)
* [JohnXLivingston](https://github.com/JohnXLivingston)
* [DavidLibeau](https://github.com/DavidLibeau)
* [fflorent](https://github.com/fflorent)
* [kaiyou](https://github.com/kaiyou)
* [ldidry](https://github.com/ldidry)
* [McFlat](https://github.com/McFlat)
@ -21,25 +23,25 @@
* [NassimBounouas](https://github.com/NassimBounouas)
* [thomaskuntzz](https://github.com/thomaskuntzz)
* [rezonant](https://github.com/rezonant)
* [Wirebrass](https://github.com/Wirebrass)
* [clementbrizard](https://github.com/clementbrizard)
* [LecygneNoir](https://github.com/LecygneNoir)
* [okhin](https://github.com/okhin)
* [daftaupe](https://github.com/daftaupe)
* [tcitworld](https://github.com/tcitworld)
* [fflorent](https://github.com/fflorent)
* [dedesite](https://github.com/dedesite)
* [Nautigsam](https://github.com/Nautigsam)
* [scanlime](https://github.com/scanlime)
* [am97](https://github.com/am97)
* [dadall](https://github.com/dadall)
* [jonathanraes](https://github.com/jonathanraes)
* [Wirebrass](https://github.com/Wirebrass)
* [yohanboniface](https://github.com/yohanboniface)
* [anoadragon453](https://github.com/anoadragon453)
* [auberanger](https://github.com/auberanger)
* [darnuria](https://github.com/darnuria)
* [rhaamo](https://github.com/rhaamo)
* [mrflos](https://github.com/mrflos)
* [Yetangitu](https://github.com/Yetangitu)
* [jocelynj](https://github.com/jocelynj)
* [lucaspontoexe](https://github.com/lucaspontoexe)
* [flyingrub](https://github.com/flyingrub)
@ -57,6 +59,7 @@
* [Anton-Latukha](https://github.com/Anton-Latukha)
* [noplanman](https://github.com/noplanman)
* [austinheap](https://github.com/austinheap)
* [BO41](https://github.com/BO41)
* [benabbottnz](https://github.com/benabbottnz)
* [ewft](https://github.com/ewft)
* [bradsk88](https://github.com/bradsk88)
@ -67,7 +70,6 @@
* [ebrehault](https://github.com/ebrehault)
* [DatBewar](https://github.com/DatBewar)
* [ReK2Fernandez](https://github.com/ReK2Fernandez)
* [Yetangitu](https://github.com/Yetangitu)
* [grizio](https://github.com/grizio)
* [Glandos](https://github.com/Glandos)
* [lanodan](https://github.com/lanodan)
@ -80,6 +82,7 @@
* [pichouk](https://github.com/pichouk)
* [LeoMouyna](https://github.com/LeoMouyna)
* [LiPeK](https://github.com/LiPeK)
* [Findus23](https://github.com/Findus23)
* [zapashcanon](https://github.com/zapashcanon)
* [mart-e](https://github.com/mart-e)
* [0mp](https://github.com/0mp)
@ -95,6 +98,7 @@
* [quentinDupont](https://github.com/quentinDupont)
* [Quenty31](https://github.com/Quenty31)
* [sundowndev](https://github.com/sundowndev)
* [robinkooli](https://github.com/robinkooli)
* [sesn](https://github.com/sesn)
* [ALSai](https://github.com/ALSai)
* [Simounet](https://github.com/Simounet)
@ -103,14 +107,13 @@
* [FrozenDroid](https://github.com/FrozenDroid)
* [fallen](https://github.com/fallen)
* [melongbob](https://github.com/melongbob)
* [Zig-03](https://github.com/Zig-03)
* [anmol26s](https://github.com/anmol26s)
* [imbsky](https://github.com/imbsky)
* [ctlaltdefeat](https://github.com/ctlaltdefeat)
* [jomo](https://github.com/jomo)
* [libertysoft3](https://github.com/libertysoft3)
* [lsde](https://github.com/lsde)
* [memoryboxes](https://github.com/memoryboxes)
* [brain-zhang](https://github.com/brain-zhang)
* [norrist](https://github.com/norrist)
* [osauzet](https://github.com/osauzet)
* [SansPseudoFix](https://github.com/SansPseudoFix)
@ -121,7 +124,7 @@
* [ewasion](https://github.com/ewasion)
# Translations
# Translation contributors
* [abdhessuk](https://trad.framasoft.org/zanata/profile/view/abdhessuk)
* [abidin24](https://trad.framasoft.org/zanata/profile/view/abidin24)
@ -196,6 +199,7 @@
* [abidin24](https://trad.framasoft.org/zanata/profile/view/abidin24)
* [aditoo](https://trad.framasoft.org/zanata/profile/view/aditoo)
* [alidemirtas](https://trad.framasoft.org/zanata/profile/view/alidemirtas)
* [anastasia](https://trad.framasoft.org/zanata/profile/view/anastasia)
* [ariasuni](https://trad.framasoft.org/zanata/profile/view/ariasuni)
* [autom](https://trad.framasoft.org/zanata/profile/view/autom)
* [balaji](https://trad.framasoft.org/zanata/profile/view/balaji)
@ -203,13 +207,16 @@
* [bristow](https://trad.framasoft.org/zanata/profile/view/bristow)
* [butterflyoffire](https://trad.framasoft.org/zanata/profile/view/butterflyoffire)
* [c0dr](https://trad.framasoft.org/zanata/profile/view/c0dr)
* [canony](https://trad.framasoft.org/zanata/profile/view/canony)
* [cat](https://trad.framasoft.org/zanata/profile/view/cat)
* [chocobozzz](https://trad.framasoft.org/zanata/profile/view/chocobozzz)
* [clerie](https://trad.framasoft.org/zanata/profile/view/clerie)
* [curupira](https://trad.framasoft.org/zanata/profile/view/curupira)
* [dhsets](https://trad.framasoft.org/zanata/profile/view/dhsets)
* [dibek](https://trad.framasoft.org/zanata/profile/view/dibek)
* [digitalkiller](https://trad.framasoft.org/zanata/profile/view/digitalkiller)
* [dwsage](https://trad.framasoft.org/zanata/profile/view/dwsage)
* [fkohrt](https://trad.framasoft.org/zanata/profile/view/fkohrt)
* [flauta](https://trad.framasoft.org/zanata/profile/view/flauta)
* [frankstrater](https://trad.framasoft.org/zanata/profile/view/frankstrater)
* [gillux](https://trad.framasoft.org/zanata/profile/view/gillux)
@ -220,17 +227,25 @@
* [jhertel](https://trad.framasoft.org/zanata/profile/view/jhertel)
* [joss2lyon](https://trad.framasoft.org/zanata/profile/view/joss2lyon)
* [kekkotranslates](https://trad.framasoft.org/zanata/profile/view/kekkotranslates)
* [kingu](https://trad.framasoft.org/zanata/profile/view/kingu)
* [kittybecca](https://trad.framasoft.org/zanata/profile/view/kittybecca)
* [kousha](https://trad.framasoft.org/zanata/profile/view/kousha)
* [krkk](https://trad.framasoft.org/zanata/profile/view/krkk)
* [lapor](https://trad.framasoft.org/zanata/profile/view/lapor)
* [laufor](https://trad.framasoft.org/zanata/profile/view/laufor)
* [leeroyepold48](https://trad.framasoft.org/zanata/profile/view/leeroyepold48)
* [lstamellos](https://trad.framasoft.org/zanata/profile/view/lstamellos)
* [mablr](https://trad.framasoft.org/zanata/profile/view/mablr)
* [marcinmalecki](https://trad.framasoft.org/zanata/profile/view/marcinmalecki)
* [matograine](https://trad.framasoft.org/zanata/profile/view/matograine)
* [mayana](https://trad.framasoft.org/zanata/profile/view/mayana)
* [mikeorlov](https://trad.framasoft.org/zanata/profile/view/mikeorlov)
* [nin](https://trad.framasoft.org/zanata/profile/view/nin)
* [noncommutativegeo](https://trad.framasoft.org/zanata/profile/view/noncommutativegeo)
* [norbipeti](https://trad.framasoft.org/zanata/profile/view/norbipeti)
* [nvivant](https://trad.framasoft.org/zanata/profile/view/nvivant)
* [osoitz](https://trad.framasoft.org/zanata/profile/view/osoitz)
* [ppnplus](https://trad.framasoft.org/zanata/profile/view/ppnplus)
* [predatorix](https://trad.framasoft.org/zanata/profile/view/predatorix)
* [quentin](https://trad.framasoft.org/zanata/profile/view/quentin)
* [quentind](https://trad.framasoft.org/zanata/profile/view/quentind)
@ -238,11 +253,14 @@
* [robin](https://trad.framasoft.org/zanata/profile/view/robin)
* [rond](https://trad.framasoft.org/zanata/profile/view/rond)
* [s8321414](https://trad.framasoft.org/zanata/profile/view/s8321414)
* [sato_ss](https://trad.framasoft.org/zanata/profile/view/sato_ss)
* [secreet](https://trad.framasoft.org/zanata/profile/view/secreet)
* [sercom_kc](https://trad.framasoft.org/zanata/profile/view/sercom_kc)
* [severo](https://trad.framasoft.org/zanata/profile/view/severo)
* [silkevicious](https://trad.framasoft.org/zanata/profile/view/silkevicious)
* [sporiff](https://trad.framasoft.org/zanata/profile/view/sporiff)
* [tekuteku](https://trad.framasoft.org/zanata/profile/view/tekuteku)
* [thecatjustmeow](https://trad.framasoft.org/zanata/profile/view/thecatjustmeow)
* [tirifto](https://trad.framasoft.org/zanata/profile/view/tirifto)
* [tmota](https://trad.framasoft.org/zanata/profile/view/tmota)
* [tuxayo](https://trad.framasoft.org/zanata/profile/view/tuxayo)

View File

@ -22,7 +22,7 @@ Be part of a network of multiple small federated, interoperable video hosting pr
<p align="center">
<a href="https://framasoft.org">
<img width="150px" src="http://lutim.cpy.re/Prd3ci7G.png" alt="Framasoft logo"/>
<img width="150px" src="https://lutim.cpy.re/FeRgHH8r.png" alt="Framasoft logo"/>
</a>
</p>

View File

@ -4,7 +4,7 @@
<div class="about-instance-title">
<div i18n class="title">About {{ instanceName }} instance</div>
<div *ngIf="isContactFormEnabled" (click)="openContactModal()" i18n role="button" class="contact-admin">Contact administrator</div>
<div i18n *ngIf="isContactFormEnabled" (click)="openContactModal()" role="button" class="contact-admin">Contact administrator</div>
</div>
<div class="block instance-badges">
@ -16,10 +16,10 @@
<div class="short-description">
<div class="block short-description">{{ shortDescription }}</div>
<div *ngIf="isNSFW" class="block dedicated-to-nsfw">This instance is dedicated to sensitive/NSFW content.</div>
<div i18n *ngIf="isNSFW" class="block dedicated-to-nsfw">This instance is dedicated to sensitive/NSFW content.</div>
</div>
<div class="middle-title" *ngIf="html.administrator || maintenanceLifetime || businessModel">
<div i18n class="middle-title" *ngIf="html.administrator || maintenanceLifetime || businessModel">
Administrators & sustainability
</div>
@ -47,7 +47,7 @@
<p>{{ businessModel }}</p>
</div>
<div class="middle-title" *ngIf="html.description">
<div i18n class="middle-title" *ngIf="html.description">
Information
</div>
@ -57,7 +57,7 @@
<div [innerHTML]="html.description"></div>
</div>
<div class="middle-title" *ngIf="html.moderationInformation || html.codeOfConduct || html.terms">
<div i18n class="middle-title" *ngIf="html.moderationInformation || html.codeOfConduct || html.terms">
Moderation
</div>
@ -79,7 +79,7 @@
<div [innerHTML]="html.terms"></div>
</div>
<div class="middle-title" *ngIf="html.hardwareInformation">
<div i18n class="middle-title" *ngIf="html.hardwareInformation">
Other information
</div>
@ -91,7 +91,7 @@
</div>
<div class="col-md-12 col-xl-6">
<label>Features found on this instance</label>
<label i18n>Features found on this instance</label>
<my-instance-features-table></my-instance-features-table>
</div>
</div>

View File

@ -0,0 +1,13 @@
<h3 i18n class="section-title">Who made this software?</h3>
<p align="center">
<strong>Developed with &#10084; by <a target="_blank" rel="noopener noreferrer" href="https://framasoft.org">Framasoft</a></strong>
</p>
<p align="center">
<a target="_blank" rel="noopener noreferrer" href="https://framasoft.org">
<img width="150px" src="/client/assets/images/framasoft.png" alt="Framasoft logo"/>
</a>
</p>
<div [innerHTML]="creditsHtml"></div>

View File

@ -0,0 +1,15 @@
@import '_variables';
@import '_mixins';
/deep/ h1 {
font-size: 1rem;
}
/deep/ ul {
padding: 0;
li {
display: inline-block;
margin-right: 10px;
}
}

View File

@ -0,0 +1,19 @@
import { Component, OnInit } from '@angular/core'
import { MarkdownService } from '@app/shared/renderer'
@Component({
selector: 'my-about-peertube-contributors',
templateUrl: './about-peertube-contributors.component.html',
styleUrls: [ './about-peertube-contributors.component.scss' ]
})
export class AboutPeertubeContributorsComponent implements OnInit {
creditsHtml: string
private markdown = require('raw-loader!../../../../../CREDITS.md')
constructor (private markdownService: MarkdownService) { }
async ngOnInit () {
this.creditsHtml = await this.markdownService.completeMarkdownToHTML(this.markdown)
}
}

View File

@ -14,7 +14,10 @@
</p>
</div>
<div id="p2p-privacy">
<div class="privacy-contributors">
<my-about-peertube-contributors></my-about-peertube-contributors>
<div class="p2p-privacy">
<h3 i18n class="section-title">P2P & Privacy</h3>
<p i18n>
@ -95,3 +98,5 @@
<li i18n>An automatic video redundancy program: we wouldn't know if the IP downloaded the video on purpose or if it was the automatized program</li>
</ul>
</div>
</div>

View File

@ -2,12 +2,12 @@
@import '_mixins';
.about-peertube-title {
font-size: 25px;
font-weight: bold;
font-size: 20px;
font-weight: $font-semibold;
margin-bottom: 15px;
}
.section-title {
/deep/ .section-title {
font-weight: $font-semibold;
font-size: 20px;
margin-bottom: 5px;
@ -17,6 +17,41 @@
margin-bottom: 30px;
}
.description,
.p2p-privacy,
my-about-peertube-contributors {
/deep/ {
p, li {
font-size: 15px;
}
}
}
.p2p-privacy-title {
margin-top: 15px;
}
.privacy-contributors {
display: flex;
flex-direction: row;
> div,
> my-about-peertube-contributors {
flex-basis: 100%;
display: block;
}
.p2p-privacy {
h6 {
font-size: 20px;
}
}
my-about-peertube-contributors {
margin: 0 40px 40px 0;
}
@media screen and (max-width: $small-view) {
flex-direction: column;
}
}

View File

@ -1,5 +1,4 @@
import { NgModule } from '@angular/core'
import { AboutRoutingModule } from './about-routing.module'
import { AboutComponent } from './about.component'
import { SharedModule } from '../shared'
@ -7,6 +6,7 @@ import { AboutInstanceComponent } from '@app/+about/about-instance/about-instanc
import { AboutPeertubeComponent } from '@app/+about/about-peertube/about-peertube.component'
import { ContactAdminModalComponent } from '@app/+about/about-instance/contact-admin-modal.component'
import { AboutFollowsComponent } from '@app/+about/about-follows/about-follows.component'
import { AboutPeertubeContributorsComponent } from '@app/+about/about-peertube/about-peertube-contributors.component'
@NgModule({
imports: [
@ -19,6 +19,7 @@ import { AboutFollowsComponent } from '@app/+about/about-follows/about-follows.c
AboutInstanceComponent,
AboutPeertubeComponent,
AboutFollowsComponent,
AboutPeertubeContributorsComponent,
ContactAdminModalComponent
],

View File

@ -13,9 +13,11 @@ export class MarkdownService {
'list'
]
static ENHANCED_RULES = MarkdownService.TEXT_RULES.concat([ 'image' ])
static COMPLETE_RULES = MarkdownService.ENHANCED_RULES.concat([ 'block', 'inline', 'heading', 'html_inline', 'html_block', 'paragraph' ])
private textMarkdownIt: MarkdownIt
private enhancedMarkdownIt: MarkdownIt
private completeMarkdownIt: MarkdownIt
async textMarkdownToHTML (markdown: string) {
if (!markdown) return ''
@ -39,11 +41,22 @@ export class MarkdownService {
return this.avoidTruncatedTags(html)
}
private async createMarkdownIt (rules: string[]) {
// FIXME: import('..') returns a struct module, containing a "default" field corresponding to our sanitizeHtml function
async completeMarkdownToHTML (markdown: string) {
if (!markdown) return ''
if (!this.completeMarkdownIt) {
this.completeMarkdownIt = await this.createMarkdownIt(MarkdownService.COMPLETE_RULES, true)
}
const html = this.completeMarkdownIt.render(markdown)
return this.avoidTruncatedTags(html)
}
private async createMarkdownIt (rules: string[], html = false) {
// FIXME: import('...') returns a struct module, containing a "default" field corresponding to our sanitizeHtml function
const MarkdownItClass: typeof import ('markdown-it') = (await import('markdown-it') as any).default
const markdownIt = new MarkdownItClass('zero', { linkify: true, breaks: true })
const markdownIt = new MarkdownItClass('zero', { linkify: true, breaks: true, html })
for (const rule of rules) {
markdownIt.enable(rule)

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -13,7 +13,7 @@ async function run () {
{
const contributors = await fetchGithub('https://api.github.com/repos/chocobozzz/peertube/contributors')
console.log('# Code\n')
console.log('# Code contributors\n')
for (const contributor of contributors) {
const contributorUrl = contributor.url.replace('api.github.com/users', 'github.com')
console.log(` * [${contributor.login}](${contributorUrl})`)
@ -27,7 +27,7 @@ async function run () {
const translators = await fetchZanata(zanataUsername, zanataToken)
console.log('\n\n# Translations\n')
console.log('\n\n# Translation contributors\n')
for (const translator of translators) {
console.log(` * [${translator.username}](https://trad.framasoft.org/zanata/profile/view/${translator.username})`)
}