Newsletter template and various improvements
1
.gitignore
vendored
|
@ -3,3 +3,4 @@ public/
|
||||||
.zanata-cache/etag-cache.xml
|
.zanata-cache/etag-cache.xml
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
/zanata.xml
|
/zanata.xml
|
||||||
|
pnpm-lock.yaml
|
||||||
|
|
|
@ -1,13 +1,21 @@
|
||||||
image: framasoft/vuefs:latest
|
image: framasoft/vuefs:latest
|
||||||
stages:
|
stages:
|
||||||
|
- test
|
||||||
- deploy
|
- deploy
|
||||||
|
|
||||||
|
test:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- npm install -g yaml-lint
|
||||||
|
- for f in $(find ./app/ -name "*.yml" -type f);do yamllint $f;done;
|
||||||
|
|
||||||
pages:
|
pages:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
script:
|
script:
|
||||||
- npm install
|
- npm install
|
||||||
- npm run preview
|
- npm run preview
|
||||||
- mv -f public/$CI_PROJECT_NAME/* public
|
- mv -f public/$CI_PROJECT_NAME/* public
|
||||||
|
- find public -type f -iregex '.*\.\(htm\|html\|txt\|text\|js\|css\)$' -execdir gzip -f --keep {} \;
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- public
|
- public
|
||||||
|
@ -38,14 +46,17 @@ production:
|
||||||
- $DEPLOYEMENT_HOST
|
- $DEPLOYEMENT_HOST
|
||||||
|
|
||||||
# Push new translations strings to https://trad.framasoft.org
|
# Push new translations strings to https://trad.framasoft.org
|
||||||
#trads:
|
trads:
|
||||||
# stage: deploy
|
stage: deploy
|
||||||
# image: framasoft/push-trad:latest
|
image: framasoft/push-trad:latest
|
||||||
# script:
|
script:
|
||||||
# - sed -e "s@<project-version>.*</project-version>@<project-version>$CI_COMMIT_REF_SLUG</project-version>@" -i zanata/zanata.xml
|
- sed -e "s@<project-version>.*</project-version>@<project-version>$CI_COMMIT_REF_SLUG</project-version>@" -i zanata/zanata.xml
|
||||||
# - sed -e "s@<project>.*</project>@<project>join-peertube</project>@" -i zanata/zanata.xml
|
- sed -e "s@<project>.*</project>@<project>join-peertube</project>@" -i zanata/zanata.xml
|
||||||
# - cp zanata/zanata.xml zanata.xml
|
- cp -n zanata/zanata.xml zanata.xml
|
||||||
# - if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then mkdir -p ${HOME}/.config; echo -e "${ZANATA_CONFIG_FRAMABOT}" > ${HOME}/.config/zanata.ini; fi
|
- mkdir -p ${HOME}/.config; echo -e "${ZANATA_CONFIG_FRAMABOT}" > ${HOME}/.config/zanata.ini;
|
||||||
# - if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then make push-locales; fi
|
- make push-locales;
|
||||||
# only:
|
only:
|
||||||
# - master
|
refs:
|
||||||
|
- master
|
||||||
|
variables:
|
||||||
|
- $ZANATA_CONFIG_FRAMABOT
|
||||||
|
|
1
.npmrc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
puppeteer_skip_chromium_download=true
|
6
Makefile
|
@ -8,8 +8,8 @@ prepare-locales:
|
||||||
rm -f zanata/yml/*.yml zanata/po/*.po zanata/po/*.pot zanata/po/*.err
|
rm -f zanata/yml/*.yml zanata/po/*.po zanata/po/*.pot zanata/po/*.err
|
||||||
|
|
||||||
clean-locales: backup-locales prepare-locales
|
clean-locales: backup-locales prepare-locales
|
||||||
zanata/scripts/yml2po.sh
|
zanata/scripts/selfyml2po.sh
|
||||||
zanata/scripts/po2yml.sh
|
zanata/scripts/selfpo2yml.sh
|
||||||
|
|
||||||
po:
|
po:
|
||||||
zanata/scripts/yml2po.sh
|
zanata/scripts/yml2po.sh
|
||||||
|
@ -21,7 +21,7 @@ push-locales: po
|
||||||
zanata-cli -q -B push --push-type both
|
zanata-cli -q -B push --push-type both
|
||||||
|
|
||||||
pull-locales: prepare-locales
|
pull-locales: prepare-locales
|
||||||
cp -n zanata/zanata.xml zanata.xml
|
cp zanata/zanata.xml zanata.xml
|
||||||
sed -e 's@<project></project>@<project>join-peertube</project>@' -i zanata.xml
|
sed -e 's@<project></project>@<project>join-peertube</project>@' -i zanata.xml
|
||||||
zanata-cli -q -B pull --pull-type both --min-doc-percent 75
|
zanata-cli -q -B pull --pull-type both --min-doc-percent 75
|
||||||
make yml
|
make yml
|
||||||
|
|
16
app/App.vue
|
@ -2,8 +2,22 @@
|
||||||
<div id="app">
|
<div id="app">
|
||||||
<vue-headful
|
<vue-headful
|
||||||
:title="$t('meta.title')"
|
:title="$t('meta.title')"
|
||||||
|
:description="$t('meta.description')"
|
||||||
:html="{ body: {id: $route.meta.id } }"
|
:html="{ body: {id: $route.meta.id } }"
|
||||||
:lang="$route.meta.lang"
|
:lang="$route.meta.lang"
|
||||||
|
:head="{
|
||||||
|
'link[rel^=shortcut]': {href: `${$root['/']}icons/favicon.png`},
|
||||||
|
'link[rel=apple-touch-icon]': {href: `${$root['/']}icons/apple-touch-icon.png`},
|
||||||
|
|
||||||
|
'meta[property^=og][property$=title]': {content: `${$t('meta.title')}`},
|
||||||
|
'meta[property^=og][property$=image]': {content: `${$root.baseurl}icons/apple-touch-icon.png`},
|
||||||
|
'meta[property^=og][property$=url]': {content: $root.baseurl},
|
||||||
|
'meta[property^=og][property$=description]': {content: `${$t('meta.description')}`},
|
||||||
|
|
||||||
|
'meta[name^=twitter][name$=title]': {content: `${$t('meta.title')}`},
|
||||||
|
'meta[name^=twitter][name$=image]': {content: `${$root.baseurl}icons/apple-touch-icon.png`},
|
||||||
|
'meta[name^=twitter][name$=description]': {content: `${$t('meta.description')}`},
|
||||||
|
}"
|
||||||
/>
|
/>
|
||||||
<header-component></header-component>
|
<header-component></header-component>
|
||||||
<router-view></router-view>
|
<router-view></router-view>
|
||||||
|
@ -16,6 +30,6 @@ export default {
|
||||||
name: 'app',
|
name: 'app',
|
||||||
components: {
|
components: {
|
||||||
HeaderComponent,
|
HeaderComponent,
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
10
app/assets/fonts/ptsans_caption.scss
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
@font-face {
|
||||||
|
font-family: 'PTSansCaption';
|
||||||
|
src: url('../fonts/ptsans_caption/PTC55F-webfont.eot');
|
||||||
|
src: url('../fonts/ptsans_caption/PTC55F-webfont.eot?#iefix') format('embedded-opentype'),
|
||||||
|
url('../fonts/ptsans_caption/PTC55F-webfont.woff') format('woff'),
|
||||||
|
url('../fonts/ptsans_caption/PTC55F-webfont.ttf') format('truetype'),
|
||||||
|
url('../fonts/ptsans_caption/PTC55F-webfont.svg#RobotoRegular') format('svg');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
Before Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 398 KiB |
Before Width: | Height: | Size: 399 KiB |
BIN
app/assets/img/en/account-creation.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
app/assets/img/en/channel.png
Normal file
After Width: | Height: | Size: 125 KiB |
BIN
app/assets/img/en/share-popup.png
Normal file
After Width: | Height: | Size: 6.6 KiB |
BIN
app/assets/img/fr/account-creation.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
app/assets/img/fr/channel.png
Normal file
After Width: | Height: | Size: 126 KiB |
BIN
app/assets/img/fr/share-popup.png
Normal file
After Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 21 KiB |
2
app/assets/scss/bootstrap.scss
vendored
|
@ -33,7 +33,7 @@
|
||||||
// @import "../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/pagination";
|
// @import "../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/pagination";
|
||||||
// @import "../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/pager";
|
// @import "../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/pager";
|
||||||
// @import "../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/labels";
|
// @import "../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/labels";
|
||||||
// @import "../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/badges";
|
@import "../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/badges";
|
||||||
// @import "../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/jumbotron";
|
// @import "../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/jumbotron";
|
||||||
// @import "../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/thumbnails";
|
// @import "../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/thumbnails";
|
||||||
@import "../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/alerts";
|
@import "../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/alerts";
|
||||||
|
|
|
@ -63,6 +63,18 @@ main .intro .col-md-6 {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
figure {
|
||||||
|
border: 10px solid rgb(255, 243, 234);
|
||||||
|
}
|
||||||
|
|
||||||
|
figcaption {
|
||||||
|
display: block;
|
||||||
|
background: rgb(255, 243, 234);
|
||||||
|
text-align: center;
|
||||||
|
font-size: 12px;
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
/* Sections background */
|
/* Sections background */
|
||||||
body {
|
body {
|
||||||
background: #211F20 url('../img/network.png') bottom center repeat-y;
|
background: #211F20 url('../img/network.png') bottom center repeat-y;
|
||||||
|
|
|
@ -1,40 +1,57 @@
|
||||||
<template>
|
<template>
|
||||||
<main>
|
<main>
|
||||||
<vue-headful
|
<vue-headful
|
||||||
:title="$t('meta.title') + ' - ' + $t('hof.title')"
|
:title="$t('meta.title') + ' - ' + $t('hof.title')"
|
||||||
/>
|
/>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<section class="col-lg-8 faq">
|
<section class="col-lg-8 faq">
|
||||||
<h1>{{ $t('news.title') }}</h1>
|
<h1>{{ $t('news.title') }}</h1>
|
||||||
<span>{{ $t('news.subtitle') }}</span>
|
<span>{{ $t('news.subtitle') }}</span>
|
||||||
<div v-for="(bloc, key) in $t('news.blocs')" :id="key">
|
<div v-for="key in Object.keys($t('news.blocs'))" :key="key"
|
||||||
<a :href="`#${key}`"><h2>{{ bloc.title }}</h2></a>
|
:id="key" class="article">
|
||||||
<p class="small">
|
<!-- <img class="img-fluid" :src="`${$root['/']}img/news/${key}.jpg`" alt=""> -->
|
||||||
<i aria-hidden="true" class="fa fa-calendar"></i>
|
<div class="content-wrapper">
|
||||||
<time v-if="bloc.date" :datetime="bloc.date.data">{{ bloc.date.text }}</time>
|
<h3>
|
||||||
</p>
|
<a :href="`#${key}`" v-html="$t(`news.blocs.${key}.title`)"></a>
|
||||||
<p v-for="p in bloc.text" v-html="p"></p>
|
</h3>
|
||||||
<hr />
|
<p class="text-muted small">
|
||||||
</div>
|
<i class="fa fa-calendar" aria-hidden="true"></i>
|
||||||
</section>
|
<time :datetime="`20${key}`">{{ $t(`news.blocs.${key}.date`) }}</time>
|
||||||
<aside class="col-lg-4">
|
</p>
|
||||||
<div class="sticky-top">
|
<v-text :section="`news.blocs.${key}.text`" />
|
||||||
<div class="bloc">
|
<hr />
|
||||||
<nav>
|
</div>
|
||||||
<h3>{{ $t('news.latest-articles') }}</h3>
|
|
||||||
<ul>
|
|
||||||
<li v-for="(bloc, key) in $t('news.blocs')">
|
|
||||||
<a :href="`#${key}`">{{ bloc.title }}</a>
|
|
||||||
<time v-if="bloc.date" :datetime="bloc.date.data" class="text-muted small">
|
|
||||||
{{ bloc.date.text }}
|
|
||||||
</time>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</aside>
|
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</section>
|
||||||
|
<aside class="col-lg-4">
|
||||||
|
<div class="sticky-top">
|
||||||
|
<div class="bloc">
|
||||||
|
<nav>
|
||||||
|
<h3>{{ $t('news.latest-articles') }}</h3>
|
||||||
|
<ul>
|
||||||
|
<li v-for="key in Object.keys($t('news.blocs'))" :key="key">
|
||||||
|
<a :href="`#${key}`" v-html="$t(`news.blocs.${key}.title`)"></a>
|
||||||
|
<time v-if="$t(`news.blocs.${key}.date`)"
|
||||||
|
:datetime="`20${key}`"
|
||||||
|
class="text-muted small">
|
||||||
|
{{ $t(`news.blocs.${key}.date`) }}
|
||||||
|
</time>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import VText from '../partials/V-Text.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
VText,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -19,8 +19,9 @@
|
||||||
<ul class="nav navbar-nav navbar-right">
|
<ul class="nav navbar-nav navbar-right">
|
||||||
<li>
|
<li>
|
||||||
<router-link
|
<router-link
|
||||||
:to="'/' + $t('lang') + '/news'"
|
:to="'/' + $t('lang') + '/news'">
|
||||||
v-html="$t('menu.news')">
|
<span v-html="$t('menu.news')"></span>
|
||||||
|
<span class="badge" v-text="Object.keys($t('news.blocs')).length"></span>
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
@ -50,7 +51,7 @@
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<router-link
|
<router-link
|
||||||
:to="'/' + $t('lang') + '/hall-of-fame'"
|
:to="'/' + $t('lang') + '/hall-of-fame'"
|
||||||
v-html="$t('menu.hall-of-fame')">
|
v-html="$t('menu.hall-of-fame')">
|
||||||
</router-link>
|
</router-link>
|
||||||
|
|
|
@ -9,13 +9,14 @@
|
||||||
<span class="caret"></span>
|
<span class="caret"></span>
|
||||||
</btn>
|
</btn>
|
||||||
<template slot="dropdown">
|
<template slot="dropdown">
|
||||||
<li v-for="lang in locales.avalaible"
|
<li v-for="lang in locales.available"
|
||||||
|
:key="lang"
|
||||||
@click="changeLanguage(lang)">
|
@click="changeLanguage(lang)">
|
||||||
<router-link :to="'/' + lang + '/' + ($route.path.split('/')[2] || '')">
|
<router-link :to="`/${lang}/${($route.path.split('/')[2] || '')}`">
|
||||||
{{ locales[lang] }}
|
{{ locales[lang] }}
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li role="separator" class="divider" v-if="$root.meta.i18n"></li>
|
<li v-if="$root.meta.i18n" role="separator" class="divider"></li>
|
||||||
<li v-if="$root.meta.i18n">
|
<li v-if="$root.meta.i18n">
|
||||||
<a :href="$root.meta.i18n">
|
<a :href="$root.meta.i18n">
|
||||||
<i class="fa fa-fw fa-plus" aria-hidden="true"></i>
|
<i class="fa fa-fw fa-plus" aria-hidden="true"></i>
|
||||||
|
|
86
app/components/partials/V-Text.vue
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
<template>
|
||||||
|
<article>
|
||||||
|
<div v-for="tag in sectionElements()" :key="tag">
|
||||||
|
<div class="alert alert-info"
|
||||||
|
v-if="/^alert/.test(tag)"
|
||||||
|
v-html="$t(`${section}.${tag}`)">
|
||||||
|
</div>
|
||||||
|
<h2
|
||||||
|
v-if="/^h2/.test(tag)" :id="id(tag)"
|
||||||
|
v-html="$t(`${section}.${tag}`)">
|
||||||
|
</h2>
|
||||||
|
<h3
|
||||||
|
v-if="/^h3/.test(tag)" :id="id(tag)"
|
||||||
|
v-html="$t(`${section}.${tag}`)">
|
||||||
|
</h3>
|
||||||
|
<h4
|
||||||
|
v-if="/^h4/.test(tag)" :id="id(tag)"
|
||||||
|
v-html="$t(`${section}.${tag}`)">
|
||||||
|
</h4>
|
||||||
|
<h5
|
||||||
|
v-if="/^h5/.test(tag)"
|
||||||
|
v-html="$t(`${section}.${tag}`)">
|
||||||
|
</h5>
|
||||||
|
<h6
|
||||||
|
v-if="/^h6/.test(tag)"
|
||||||
|
v-html="$t(`${section}.${tag}`)">
|
||||||
|
</h6>
|
||||||
|
<ul v-if="/^ul/.test(tag)">
|
||||||
|
<li
|
||||||
|
v-for="li in tagIndexes(tag)"
|
||||||
|
:key="li"
|
||||||
|
v-html="$t(`${section}.${tag}[${li}]`)">
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ol v-if="/^ol/.test(tag)">
|
||||||
|
<li
|
||||||
|
v-for="li in tagIndexes(tag)"
|
||||||
|
:key="li"
|
||||||
|
v-html="$t(`${section}.${tag}[${li}]`)">
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
<p
|
||||||
|
v-for="p in pIndexes(tag)"
|
||||||
|
:key="p"
|
||||||
|
v-html="$t(`${section}.${tag}[${p}]`)">
|
||||||
|
</p>
|
||||||
|
<blockquote
|
||||||
|
v-for="bq in bqIndexes(tag)"
|
||||||
|
:key="bq"
|
||||||
|
v-html="$t(`${section}.${tag}[${bq}]`)">
|
||||||
|
</blockquote>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
section: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
sectionElements() {
|
||||||
|
return Object.keys(this.$t(this.section));
|
||||||
|
},
|
||||||
|
tagIndexes(tag) {
|
||||||
|
return Object.keys(this.$t(`${this.section}.${tag}`));
|
||||||
|
},
|
||||||
|
pIndexes(tag) {
|
||||||
|
return this.tagIndexes(tag).filter(i => /^p/.test(tag));
|
||||||
|
},
|
||||||
|
bqIndexes(tag) {
|
||||||
|
return this.tagIndexes(tag).filter(i => /^blockquote/.test(tag));
|
||||||
|
},
|
||||||
|
id(tag) {
|
||||||
|
let id = `${this.section.replace('.', '-')}-${tag}`;
|
||||||
|
if (tag.split('-')[1] !== undefined) {
|
||||||
|
id = tag.split('-')[1];
|
||||||
|
}
|
||||||
|
return id;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
241
app/data.yml
|
@ -1,241 +0,0 @@
|
||||||
meta:
|
|
||||||
title: Join PeerTube
|
|
||||||
author: Framasoft
|
|
||||||
canonical: https://joinpeertube.org
|
|
||||||
i18n: https://trad.framasoft.org/project/view/join-peertube/master
|
|
||||||
|
|
||||||
txt:
|
|
||||||
# soft: text from color.soft
|
|
||||||
|
|
||||||
html:
|
|
||||||
# soft: <a href="link.soft">color.soft</a>
|
|
||||||
|
|
||||||
color:
|
|
||||||
soft: <b class="violet">Frama</b><b class="orange">soft</b>
|
|
||||||
cuo: <b class="violet">Contributopia</b>
|
|
||||||
evl: <b class="violet" lang="fr">EnVente</b><b class="jaune" lang="fr">Libre</b>
|
|
||||||
|
|
||||||
agenda: <b class="violet">Fram</b><b class="vert">agenda</b>
|
|
||||||
bag: <b class="violet">Frama</b><b class="vert">bag</b>
|
|
||||||
bee: <b class="violet">Frama</b><b class="vert" lang="en">bee</b>
|
|
||||||
bin: <b class="violet">Frama</b><b class="vert" lang="en">bin</b>
|
|
||||||
blog: <b class="violet">Frama</b><b class="rouge">blog</b>
|
|
||||||
board: <b class="violet">Frama</b><b class="vert" lang="en">board</b>
|
|
||||||
book: <b class="violet">Frama</b><b class="rouge" lang="en">book</b>
|
|
||||||
bookin: <b class="violet">Frama</b><b class="rouge" lang="en">bookin</b>
|
|
||||||
calc: <b class="violet">Frama</b><b class="vert">calc</b>
|
|
||||||
carte: <b class="violet">Frama</b><b class="vert">carte</b>
|
|
||||||
cloud: <b class="violet">Frama</b><b class="vert" lang="en">cloud</b>
|
|
||||||
colibri: <b class="violet">Frama</b><b class="jaune" lang="fr">colibri</b>
|
|
||||||
date: <b class="violet">Frama</b><b class="vert">date</b>
|
|
||||||
docs: <b class="violet">Frama</b><b class="jaune">docs</b>
|
|
||||||
drive: <b class="violet">Frama</b><b class="vert" lang="en">drive</b>
|
|
||||||
drop: <b class="violet">Frama</b><b class="vert">drop</b>
|
|
||||||
dvd: <b class="violet">Frama</b><b class="bleu"><abbr>dvd</abbr></b>
|
|
||||||
forms: <b class="violet">Frama</b><b class="vert">forms</b>
|
|
||||||
games: <b class="violet">Frama</b><b class="vert" lang="en">games</b>
|
|
||||||
git: <b class="violet">Frama</b><b class="vert" lang="en">git</b>
|
|
||||||
key: <b class="violet">Frama</b><b class="bleu" lang="en">key</b>
|
|
||||||
lab: <b class="violet">Frama</b><b class="jaune">lab</b>
|
|
||||||
lang: <b class="violet">Frama</b><b class="rouge" lang="en">lang</b>
|
|
||||||
libre: <b class="violet">Frama</b><b class="bleu" lang="fr">libre</b>
|
|
||||||
link: <b class="violet">Frama</b><b class="vert" lang="en">link</b>
|
|
||||||
listes: <b class="violet">Frama</b><b class="vert" lang="fr">listes</b>
|
|
||||||
maestro: <b class="violet">Fra</b><b class="vert" lang="it">maestro</b>
|
|
||||||
memo: <b class="violet">Fra</b><b class="vert" lang="fr">memo</b>
|
|
||||||
mindmap: <b class="violet">Fra</b><b class="vert" lang="en">mindmap</b>
|
|
||||||
minetest: <b class="violet">Fra</b><b class="vert" lang="en">minetest</b>
|
|
||||||
my: <b class="violet" lang="en">My</b><b class="vert">Frama</b>
|
|
||||||
news: <b class="violet">Frama</b><b class="vert" lang="en">news</b>
|
|
||||||
notes: <b class="violet">Frama</b><b class="vert">notes</b>
|
|
||||||
pack: <b class="violet">Frama</b><b class="bleu">pack</b>
|
|
||||||
pad: <b class="violet">Frama</b><b class="vert">pad</b>
|
|
||||||
piaf: <b class="violet">Frama</b><b class="vert">piaf</b>
|
|
||||||
pic: <b class="violet">Frama</b><b class="vert">pic</b>
|
|
||||||
site: <b class="violet">Frama</b><b class="vert">site</b>
|
|
||||||
slides: <b class="violet">Frama</b><b class="vert" lang="en">slides</b>
|
|
||||||
sphere: <b class="violet">Frama</b><b class="vert" lang="fr">sphère</b>
|
|
||||||
team: <b class="violet">Frama</b><b class="vert" lang="en">team</b>
|
|
||||||
talk: <b class="violet">Frama</b><b class="vert" lang="en">talk</b>
|
|
||||||
tube: <b class="violet">Frama</b><b class="rouge">tube</b>
|
|
||||||
vectoriel: <b class="violet">Frama</b><b class="vert" lang="fr">vectoriel</b>
|
|
||||||
vox: <b class="violet">Frama</b><b class="vert">vox</b>
|
|
||||||
wiki: <b class="violet">Frama</b><b class="vert">wiki</b>
|
|
||||||
zic: <b class="violet">Frama</b><b class="rouge">zic</b>
|
|
||||||
|
|
||||||
huitre: <b class="violet" lang="fr">Huit</b><b class="vert">re</b>
|
|
||||||
tontonroger: <b class="violet" lang="fr">Tonton</b> <b class="vert">Roger</b>
|
|
||||||
trouvons: <b class="violet" lang="fr">Trouvons</b><b class="vert">.org</b>
|
|
||||||
|
|
||||||
link:
|
|
||||||
gitPT: https://github.com/Chocobozzz/PeerTube
|
|
||||||
instancesPT: https://instances.joinpeertube.org
|
|
||||||
docsPT: https://docs.joinpeertube.org
|
|
||||||
mastodon: https://joinmastodon.org
|
|
||||||
activitypub: https://activitypub.rocks
|
|
||||||
tosdr: https://tosdr.org/#youtube
|
|
||||||
|
|
||||||
soft: https://framasoft.org
|
|
||||||
dio: https://degooglisons-internet.org
|
|
||||||
cuo: https://contributopia.org
|
|
||||||
soutenir: https://soutenir.framasoft.org
|
|
||||||
contact: https://contact.framasoft.org
|
|
||||||
newsletter: https://contact.framasoft.org/newsletter
|
|
||||||
participer: https://participer.framasoft.org
|
|
||||||
evl: https://enventelibre.org
|
|
||||||
wikifs: https://wiki.framasoft.org
|
|
||||||
press: https://wiki.framasoft.org/speakabout
|
|
||||||
|
|
||||||
agenda: https://framagenda.org
|
|
||||||
bag: https://framabag.org
|
|
||||||
bee: https://framabee.org
|
|
||||||
bin: https://framabin.org
|
|
||||||
blog: https://framablog.org
|
|
||||||
board: https://framaboard.org
|
|
||||||
book: https://framabook.org
|
|
||||||
bookin: https://framabookin.org
|
|
||||||
calc: https://framacalc.org
|
|
||||||
carte: https://framacarte.org
|
|
||||||
cloud: https://framacloud.org
|
|
||||||
colibri: https://framacolibri.org
|
|
||||||
date: https://framadate.org
|
|
||||||
docs: https://docs.framasoft.org
|
|
||||||
drive: https://framadrive.org
|
|
||||||
drop: https://framadrop.org
|
|
||||||
dvd: https://framadvd.org
|
|
||||||
forms: https://framaforms.org
|
|
||||||
games: https://framagames.org
|
|
||||||
git: https://framagit.org
|
|
||||||
key: https://framakey.org
|
|
||||||
lab: https://framalab.org
|
|
||||||
lang: https://participer.framasoft.org/traduction-rejoignez-framalang/
|
|
||||||
libre: https://framalibre.org
|
|
||||||
link: https://frama.link
|
|
||||||
listes: https://framalistes.org
|
|
||||||
maestro: https://framaestro.org
|
|
||||||
memo: https://framemo.org
|
|
||||||
mindmap: https://framindmap.org
|
|
||||||
minetest: https://framinetest.org
|
|
||||||
my: https://my.framasoft.org
|
|
||||||
news: https://framanews.org
|
|
||||||
notes: https://framanotes.org
|
|
||||||
pack: https://framapack.org
|
|
||||||
pad: https://framapad.org
|
|
||||||
piaf: https://framapiaf.org
|
|
||||||
pic: https://framapic.org
|
|
||||||
site: https://frama.site
|
|
||||||
slides: https://framaslides.org
|
|
||||||
sphere: https://framasphere.org
|
|
||||||
talk: https://framatalk.org
|
|
||||||
team: https://framateam.org
|
|
||||||
tube: https://framatube.org
|
|
||||||
vectoriel: https://framavectoriel.org
|
|
||||||
vox: https://framavox.org
|
|
||||||
wiki: https://frama.wiki
|
|
||||||
zic: https://framazic.org
|
|
||||||
|
|
||||||
huitre: https://huit.re
|
|
||||||
tontonroger: https://tontonroger.org
|
|
||||||
trouvons: https://trouvons.org
|
|
||||||
|
|
||||||
icon:
|
|
||||||
dio: fa-shield
|
|
||||||
cuo: fa-shield
|
|
||||||
soutenir: fa-heart
|
|
||||||
contact: fa-envelop
|
|
||||||
participer: fa-paw
|
|
||||||
evl: fa-shopping-cart
|
|
||||||
|
|
||||||
agenda: fa-calendar
|
|
||||||
bag: fa-briefcase
|
|
||||||
bee: fa-search
|
|
||||||
bin: fa-paste
|
|
||||||
blog: fa-pencil
|
|
||||||
board: fa-dashboard
|
|
||||||
book: fa-book
|
|
||||||
bookin: fa-coffee
|
|
||||||
calc: fa-th
|
|
||||||
carte: fa-map
|
|
||||||
colibri: fa-comment
|
|
||||||
date: fa-calendar-check-o
|
|
||||||
docs: fa-graduation-cap
|
|
||||||
drive: fa-cloud-upload
|
|
||||||
drop: fa-send
|
|
||||||
dvd: fa-play-circle-o
|
|
||||||
forms: fa-list-ul
|
|
||||||
games: fa-gamepad
|
|
||||||
git: fa-git
|
|
||||||
key: fa-usb
|
|
||||||
lab: fa-flask
|
|
||||||
lang: fa-language
|
|
||||||
libre: fa-linux
|
|
||||||
link: fa-link
|
|
||||||
listes: fa-group
|
|
||||||
maestro: fa-magic
|
|
||||||
memo: fa-object-group
|
|
||||||
mindmap: fa-sitemap
|
|
||||||
minetest: fa-cube
|
|
||||||
my: fa-star
|
|
||||||
news: fa-newspaper-o
|
|
||||||
notes: fa-sticky-note
|
|
||||||
pack: fa-download
|
|
||||||
pad: fa-align-left
|
|
||||||
piaf: fa-mastodon
|
|
||||||
pic: fa-photo
|
|
||||||
site: fa-globe
|
|
||||||
slides: fa-pie-chart
|
|
||||||
sphere: fa-diaspora
|
|
||||||
talk: fa-video-camera
|
|
||||||
team: fa-comments-o
|
|
||||||
tube: fa-film
|
|
||||||
vectoriel: fa-paint-brush
|
|
||||||
vox: fa-bullhorn
|
|
||||||
wiki: fa-puzzle-piece
|
|
||||||
zic: fa-music
|
|
||||||
|
|
||||||
huitre: fa-link
|
|
||||||
tontonroger: fa-search
|
|
||||||
trouvons: fa-search
|
|
||||||
|
|
||||||
license:
|
|
||||||
lal: <a href="http://artlibre.org">Art Libre</a>
|
|
||||||
cc0: <a href="https://creativecommons.org/publicdomain/zero/1.0">Creative Commons 0</a>
|
|
||||||
ccby3: <a href="https://creativecommons.org/licenses/by/3.0"><span lang="en">Creative Commons By</span> 3.0</a>
|
|
||||||
ccby4: <a href="https://creativecommons.org/licenses/by/4.0"><span lang="en">Creative Commons By</span> 4.0</a>
|
|
||||||
ccbysa3: <a href="https://creativecommons.org/licenses/by-sa/3.0"><span lang="en">Creative Commons By</span>-<abbr>SA</abbr> 3.0</a>
|
|
||||||
ccbysa4: <a href="https://creativecommons.org/licenses/by-sa/4.0"><span lang="en">Creative Commons By</span>-<abbr>SA</abbr> 4.0</a>
|
|
||||||
ccbysa2fr: <a href="https://creativecommons.org/licenses/by-sa/2.0/fr"><span lang="en">Creative Commons By</span>-<abbr>SA</abbr> 2.0</a>
|
|
||||||
ccbysa3fr: <a href="https://creativecommons.org/licenses/by-sa/3.0/fr"><span lang="en">Creative Commons By</span>-<abbr>SA</abbr> 3.0</a>
|
|
||||||
ccbysa4fr: <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr"><span lang="en">Creative Commons By</span>-<abbr>SA</abbr> 4.0</a>
|
|
||||||
gpl2: <a href="https://www.gnu.org/licenses/gpl-2.0.html">GNU <abbr lang="en" title="General Public License">GPL</abbr> v2</a>
|
|
||||||
gpl3: <a href="https://www.gnu.org/licenses/gpl-3.0.txt">GNU <abbr lang="en" title="General Public License">GPL</abbr> v3</a>
|
|
||||||
gnufdl: <a href="https://www.gnu.org/copyleft/fdl.html">GNU <abbr lang="en" title="Free Documentation License">FDL</abbr></a>
|
|
||||||
agpl3: <a href="https://www.gnu.org/licenses/agpl-3.0.html">GNU <abbr lang="en" title="Affero General Public License">AGPL</abbr> v3</a>
|
|
||||||
apache2: <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache 2.0</a>
|
|
||||||
cecillb: <a href="http://www.cecill.info/licences.fr.html">CeCILL-B</a>
|
|
||||||
|
|
||||||
people:
|
|
||||||
aka: Alexis Kauffmann
|
|
||||||
ben: Benjamin Jean
|
|
||||||
christophe: Christophe Masutti
|
|
||||||
cyrille: Cyrille Largillier
|
|
||||||
dorme: Geoffrey Dorme
|
|
||||||
fat115: fat115
|
|
||||||
fla: Flaburgan
|
|
||||||
fred: Fredéric Urbain
|
|
||||||
gab: Gabriel Dejeante
|
|
||||||
gee: Simon « Gee » Giraudot
|
|
||||||
jo: JosephK
|
|
||||||
kinou: Christelle Thomas
|
|
||||||
lam: Lamessen
|
|
||||||
lldemars: L.L. de Mars
|
|
||||||
luc: Luc Didry
|
|
||||||
martin: Martin Gubri
|
|
||||||
sandra: peupleLà (Sandra Guigonis)
|
|
||||||
simonl: Simon Leblanc
|
|
||||||
pouhiou: Pouhiou
|
|
||||||
pyg: Pierre-Yves Gosset
|
|
||||||
tcit: Thomas Citharel
|
|
||||||
|
|
||||||
emoji:
|
|
||||||
wink: 😉
|
|
70
app/data/commons/color.yml
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
soft: <b class="violet">Frama</b><b class="orange">soft</b>
|
||||||
|
cuo: <b class="violet">Contributopia</b>
|
||||||
|
wikifs: <b class="violet">Frama</b><b class="jaune">wiki</b>
|
||||||
|
|
||||||
|
agenda: <b class="violet">Fram</b><b class="vert">agenda</b>
|
||||||
|
bag: <b class="violet">Frama</b><b class="vert">bag</b>
|
||||||
|
bee: <b class="violet">Frama</b><b class="vert" lang="en">bee</b>
|
||||||
|
bin: <b class="violet">Frama</b><b class="vert" lang="en">bin</b>
|
||||||
|
blog: <b class="violet">Frama</b><b class="rouge">blog</b>
|
||||||
|
board: <b class="violet">Frama</b><b class="vert" lang="en">board</b>
|
||||||
|
book: <b class="violet">Frama</b><b class="rouge" lang="en">book</b>
|
||||||
|
bookin: <b class="violet">Frama</b><b class="rouge" lang="en">bookin</b>
|
||||||
|
calc: <b class="violet">Frama</b><b class="vert">calc</b>
|
||||||
|
carte: <b class="violet">Frama</b><b class="vert">carte</b>
|
||||||
|
clic: <b class="violet">Frama</b><b class="vert">clic</b>
|
||||||
|
cloud: <b class="violet">Frama</b><b class="vert" lang="en">cloud</b>
|
||||||
|
colibri: <b class="violet">Frama</b><b class="jaune" lang="fr">colibri</b>
|
||||||
|
date: <b class="violet">Frama</b><b class="vert">date</b>
|
||||||
|
docs: <b class="violet">Frama</b><b class="jaune">docs</b>
|
||||||
|
drive: <b class="violet">Frama</b><b class="vert" lang="en">drive</b>
|
||||||
|
drop: <b class="violet">Frama</b><b class="vert">drop</b>
|
||||||
|
dvd: <b class="violet">Frama</b><b class="bleu"><abbr>dvd</abbr></b>
|
||||||
|
forms: <b class="violet">Frama</b><b class="vert">forms</b>
|
||||||
|
games: <b class="violet">Frama</b><b class="rouge" lang="en">games</b>
|
||||||
|
git: <b class="violet">Frama</b><b class="vert" lang="en">git</b>
|
||||||
|
key: <b class="violet">Frama</b><b class="bleu" lang="en">key</b>
|
||||||
|
lab: <b class="violet">Frama</b><b class="jaune">lab</b>
|
||||||
|
lang: <b class="violet">Frama</b><b class="rouge" lang="en">lang</b>
|
||||||
|
libre: <b class="violet">Frama</b><b class="bleu" lang="fr">libre</b>
|
||||||
|
link: <b class="violet">Frama</b><b class="vert" lang="en">link</b>
|
||||||
|
listes: <b class="violet">Frama</b><b class="vert" lang="fr">listes</b>
|
||||||
|
maestro: <b class="violet">Fra</b><b class="vert" lang="it">maestro</b>
|
||||||
|
memo: <b class="violet">Fra</b><b class="vert" lang="fr">memo</b>
|
||||||
|
mindmap: <b class="violet">Fra</b><b class="vert" lang="en">mindmap</b>
|
||||||
|
minetest: <b class="violet">Fra</b><b class="rouge" lang="en">minetest</b>
|
||||||
|
my: <b class="violet" lang="en">My</b><b class="vert">Frama</b>
|
||||||
|
news: <b class="violet">Frama</b><b class="vert" lang="en">news</b>
|
||||||
|
notes: <b class="violet">Frama</b><b class="vert">notes</b>
|
||||||
|
pack: <b class="violet">Frama</b><b class="bleu">pack</b>
|
||||||
|
pad: <b class="violet">Frama</b><b class="vert">pad</b>
|
||||||
|
petitions: <b class="violet">Frama</b><b class="vert">petitions</b>
|
||||||
|
piaf: <b class="violet">Frama</b><b class="vert">piaf</b>
|
||||||
|
pic: <b class="violet">Frama</b><b class="vert">pic</b>
|
||||||
|
site: <b class="violet">Frama</b><b class="vert">site</b>
|
||||||
|
slides: <b class="violet">Frama</b><b class="vert" lang="en">slides</b>
|
||||||
|
sphere: <b class="violet">Frama</b><b class="vert" lang="fr">sphère</b>
|
||||||
|
story: <b class="violet">Frama</b><b class="vert">story</b>
|
||||||
|
team: <b class="violet">Frama</b><b class="vert" lang="en">team</b>
|
||||||
|
talk: <b class="violet">Frama</b><b class="vert" lang="en">talk</b>
|
||||||
|
tube: <b class="violet">Frama</b><b class="rouge">tube</b>
|
||||||
|
vectoriel: <b class="violet">Frama</b><b class="vert" lang="fr">vectoriel</b>
|
||||||
|
vox: <b class="violet">Frama</b><b class="vert">vox</b>
|
||||||
|
wiki: <b class="violet">Frama</b><b class="vert">wiki</b>
|
||||||
|
zic: <b class="violet">Frama</b><b class="rouge">zic</b>
|
||||||
|
|
||||||
|
huitre: <b class="violet" lang="fr">Huit</b><b class="vert">re</b>
|
||||||
|
tontonroger: <b class="violet" lang="fr">Tonton</b> <b class="vert">Roger</b>
|
||||||
|
trouvons: <b class="violet" lang="fr">Trouvons</b><b class="vert">.org</b>
|
||||||
|
|
||||||
|
clibre: CLibre.eu
|
||||||
|
evl: <b class="violet" lang="fr">EnVente</b><b class="jaune" lang="fr">Libre</b>
|
||||||
|
planet: Planet-libre
|
||||||
|
ptilouk: Ptilouk
|
||||||
|
start: <b class="violet">Frama</b><b class="bleu">start</b>
|
||||||
|
vvl: Veni Vidi Libri
|
||||||
|
|
||||||
|
diaspora: Diaspora
|
||||||
|
mastodon: Mastodon
|
||||||
|
twitter: Twitter
|
||||||
|
facebook: Facebook
|
204
app/data/commons/country.yml
Normal file
|
@ -0,0 +1,204 @@
|
||||||
|
ZA: Afrique du Sud
|
||||||
|
AL: Albanie
|
||||||
|
DZ: Algérie
|
||||||
|
DE: Allemagne
|
||||||
|
AD: Andorre
|
||||||
|
AO: Angola
|
||||||
|
AI: Anguilla
|
||||||
|
AG: Antigua-et-Barbuda
|
||||||
|
AN: Antilles néerlandaises
|
||||||
|
SA: Arabie saoudite
|
||||||
|
AR: Argentine
|
||||||
|
AM: Arménie
|
||||||
|
AW: Aruba
|
||||||
|
AU: Australie
|
||||||
|
AT: Autriche
|
||||||
|
AZ: Azerbaïdjan
|
||||||
|
BS: Bahamas
|
||||||
|
BH: Bahreïn
|
||||||
|
BB: Barbade
|
||||||
|
BE: Belgique
|
||||||
|
BZ: Belize
|
||||||
|
BJ: Bénin
|
||||||
|
BM: Bermudes
|
||||||
|
BT: Bhoutan
|
||||||
|
BY: Biélorussie
|
||||||
|
BO: Bolivie
|
||||||
|
BA: Bosnie-Herzégovine
|
||||||
|
BW: Botswana
|
||||||
|
BR: Brésil
|
||||||
|
BN: Brunéi Darussalam
|
||||||
|
BG: Bulgarie
|
||||||
|
BF: Burkina Faso
|
||||||
|
BI: Burundi
|
||||||
|
KH: Cambodge
|
||||||
|
CM: Cameroun
|
||||||
|
CA: Canada
|
||||||
|
CV: Cap-Vert
|
||||||
|
CL: Chili
|
||||||
|
C2: Chine
|
||||||
|
CN: Chine
|
||||||
|
CY: Chypre
|
||||||
|
CO: Colombie
|
||||||
|
KM: Comores
|
||||||
|
CG: Congo-Brazzaville
|
||||||
|
CD: Congo-Kinshasa
|
||||||
|
KR: Corée du Sud
|
||||||
|
CR: Costa Rica
|
||||||
|
CI: Côte d’Ivoire
|
||||||
|
HR: Croatie
|
||||||
|
DK: Danemark
|
||||||
|
DJ: Djibouti
|
||||||
|
DM: Dominique
|
||||||
|
EG: Égypte
|
||||||
|
SV: El Salvador
|
||||||
|
AE: Émirats arabes unis
|
||||||
|
EC: Équateur
|
||||||
|
ER: Érythrée
|
||||||
|
ES: Espagne
|
||||||
|
EE: Estonie
|
||||||
|
VA: État de la Cité du Vatican
|
||||||
|
FM: États fédérés de Micronésie
|
||||||
|
US: États-Unis
|
||||||
|
ET: Éthiopie
|
||||||
|
FJ: Fidji
|
||||||
|
FI: Finlande
|
||||||
|
FR: France
|
||||||
|
GA: Gabon
|
||||||
|
GM: Gambie
|
||||||
|
GE: Géorgie
|
||||||
|
GI: Gibraltar
|
||||||
|
GR: Grèce
|
||||||
|
GD: Grenade
|
||||||
|
GL: Groenland
|
||||||
|
GP: Guadeloupe
|
||||||
|
GT: Guatemala
|
||||||
|
GN: Guinée
|
||||||
|
GW: Guinée-Bissau
|
||||||
|
GY: Guyana
|
||||||
|
GF: Guyane française
|
||||||
|
HN: Honduras
|
||||||
|
HU: Hongrie
|
||||||
|
NF: Île Norfolk
|
||||||
|
KY: Îles Caïmans
|
||||||
|
CK: Îles Cook
|
||||||
|
FO: Îles Féroé
|
||||||
|
FK: Îles Malouines
|
||||||
|
MH: Îles Marshall
|
||||||
|
PN: Îles Pitcairn
|
||||||
|
SB: Îles Salomon
|
||||||
|
TC: Îles Turques-et-Caïques
|
||||||
|
VG: Îles Vierges britanniques
|
||||||
|
IN: Inde
|
||||||
|
ID: Indonésie
|
||||||
|
IE: Irlande
|
||||||
|
IS: Islande
|
||||||
|
IL: Israël
|
||||||
|
IT: Italie
|
||||||
|
JM: Jamaïque
|
||||||
|
JP: Japon
|
||||||
|
JO: Jordanie
|
||||||
|
KZ: Kazakhstan
|
||||||
|
KE: Kenya
|
||||||
|
KG: Kirghizistan
|
||||||
|
KI: Kiribati
|
||||||
|
KW: Koweït
|
||||||
|
RE: La Réunion
|
||||||
|
LA: Laos
|
||||||
|
LS: Lesotho
|
||||||
|
LV: Lettonie
|
||||||
|
LI: Liechtenstein
|
||||||
|
LT: Lituanie
|
||||||
|
LU: Luxembourg
|
||||||
|
MK: Macédoine
|
||||||
|
MG: Madagascar
|
||||||
|
MY: Malaisie
|
||||||
|
MW: Malawi
|
||||||
|
MV: Maldives
|
||||||
|
ML: Mali
|
||||||
|
MT: Malte
|
||||||
|
MA: Maroc
|
||||||
|
MQ: Martinique
|
||||||
|
MU: Maurice
|
||||||
|
MR: Mauritanie
|
||||||
|
YT: Mayotte
|
||||||
|
MX: Mexique
|
||||||
|
MD: Moldavie
|
||||||
|
MC: Monaco
|
||||||
|
MN: Mongolie
|
||||||
|
ME: Monténégro
|
||||||
|
MS: Montserrat
|
||||||
|
MZ: Mozambique
|
||||||
|
NA: Namibie
|
||||||
|
NR: Nauru
|
||||||
|
NP: Népal
|
||||||
|
NI: Nicaragua
|
||||||
|
NE: Niger
|
||||||
|
NG: Nigéria
|
||||||
|
NU: Niue
|
||||||
|
NO: Norvège
|
||||||
|
NC: Nouvelle-Calédonie
|
||||||
|
NZ: Nouvelle-Zélande
|
||||||
|
OM: Oman
|
||||||
|
UG: Ouganda
|
||||||
|
PW: Palaos
|
||||||
|
PA: Panama
|
||||||
|
PG: Papouasie-Nouvelle-Guinée
|
||||||
|
PY: Paraguay
|
||||||
|
NL: Pays-Bas
|
||||||
|
PE: Pérou
|
||||||
|
PH: Philippines
|
||||||
|
PL: Pologne
|
||||||
|
PF: Polynésie française
|
||||||
|
PT: Portugal
|
||||||
|
QA: Qatar
|
||||||
|
HK: R.A.S. chinoise de Hong Kong
|
||||||
|
DO: République dominicaine
|
||||||
|
CZ: République tchèque
|
||||||
|
RO: Roumanie
|
||||||
|
GB: Royaume-Uni
|
||||||
|
RU: Russie
|
||||||
|
RW: Rwanda
|
||||||
|
KN: Saint-Christophe-et-Niévès
|
||||||
|
SM: Saint-Marin
|
||||||
|
PM: Saint-Pierre-et-Miquelon
|
||||||
|
VC: Saint-Vincent-et-les-Grenadines
|
||||||
|
SH: Sainte-Hélène
|
||||||
|
LC: Sainte-Lucie
|
||||||
|
WS: Samoa
|
||||||
|
ST: Sao Tomé-et-Principe
|
||||||
|
SN: Sénégal
|
||||||
|
RS: Serbie
|
||||||
|
SC: Seychelles
|
||||||
|
SL: Sierra Leone
|
||||||
|
SG: Singapour
|
||||||
|
SK: Slovaquie
|
||||||
|
SI: Slovénie
|
||||||
|
SO: Somalie
|
||||||
|
LK: Sri Lanka
|
||||||
|
SE: Suède
|
||||||
|
CH: Suisse
|
||||||
|
SR: Suriname
|
||||||
|
SJ: Svalbard et Jan Mayen
|
||||||
|
SZ: Swaziland
|
||||||
|
TJ: Tadjikistan
|
||||||
|
TW: Taïwan
|
||||||
|
TZ: Tanzanie
|
||||||
|
TD: Tchad
|
||||||
|
TH: Thaïlande
|
||||||
|
TG: Togo
|
||||||
|
TO: Tonga
|
||||||
|
TT: Trinité-et-Tobago
|
||||||
|
TN: Tunisie
|
||||||
|
TM: Turkménistan
|
||||||
|
TR: Turquie
|
||||||
|
TV: Tuvalu
|
||||||
|
UA: Ukraine
|
||||||
|
UY: Uruguay
|
||||||
|
VU: Vanuatu
|
||||||
|
VE: Venezuela
|
||||||
|
VN: Vietnam
|
||||||
|
WF: Wallis-et-Futuna
|
||||||
|
YE: Yémen
|
||||||
|
ZM: Zambie
|
||||||
|
ZW: Zimbabwe
|
84
app/data/commons/doc.yml
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
agenda:
|
||||||
|
- fr/agenda
|
||||||
|
bag:
|
||||||
|
- fr/wallabag
|
||||||
|
bee:
|
||||||
|
- fr/searx
|
||||||
|
bin:
|
||||||
|
- fr/privatebin
|
||||||
|
board:
|
||||||
|
- fr/kanboard
|
||||||
|
calc:
|
||||||
|
- fr/ethercalc
|
||||||
|
carte:
|
||||||
|
- fr/umap
|
||||||
|
clic:
|
||||||
|
- fr/dolomon
|
||||||
|
- en/dolomon
|
||||||
|
date:
|
||||||
|
- fr/framadate
|
||||||
|
- en/framadate
|
||||||
|
drive:
|
||||||
|
- fr/nextcloud
|
||||||
|
drop:
|
||||||
|
- fr/lufi
|
||||||
|
- en/lufi
|
||||||
|
forms:
|
||||||
|
- fr/framaforms
|
||||||
|
git:
|
||||||
|
- fr/gitlab
|
||||||
|
key:
|
||||||
|
- fr/framakey
|
||||||
|
libre:
|
||||||
|
- fr/framalibre
|
||||||
|
link:
|
||||||
|
- fr/lstu
|
||||||
|
- en/lstu
|
||||||
|
listes:
|
||||||
|
- fr/sympa
|
||||||
|
maestro:
|
||||||
|
- fr/framaestro
|
||||||
|
memo:
|
||||||
|
- fr/scrumblr
|
||||||
|
mindmap:
|
||||||
|
- fr/wisemapping
|
||||||
|
my:
|
||||||
|
- fr/shaarli
|
||||||
|
news:
|
||||||
|
- fr/ttrss
|
||||||
|
notes:
|
||||||
|
- fr/turtl
|
||||||
|
pack:
|
||||||
|
- fr/framapack
|
||||||
|
piaf:
|
||||||
|
- fr/mastodon
|
||||||
|
- en/mastodon
|
||||||
|
pic:
|
||||||
|
- fr/lutim
|
||||||
|
- en/lutim
|
||||||
|
site:
|
||||||
|
- fr/framasite
|
||||||
|
site-noemie:
|
||||||
|
- fr/noemiecms
|
||||||
|
site-grav:
|
||||||
|
- fr/grav
|
||||||
|
slides:
|
||||||
|
- fr/strut
|
||||||
|
sphere:
|
||||||
|
- fr/diaspora
|
||||||
|
- en/diaspora
|
||||||
|
talk:
|
||||||
|
- fr/jitsimeet
|
||||||
|
- en/jitsimeet
|
||||||
|
team:
|
||||||
|
- fr/mattermost
|
||||||
|
- en/mattermost
|
||||||
|
vox:
|
||||||
|
- fr/loomio
|
||||||
|
- en/loomio
|
||||||
|
wiki:
|
||||||
|
- fr/dokuwiki
|
||||||
|
|
||||||
|
huitre:
|
||||||
|
- fr/lstu
|
||||||
|
- en/lstu
|
6
app/data/commons/emoji.yml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
wink: 😉
|
||||||
|
hug: 🤗
|
||||||
|
speaking-head: 🗣
|
||||||
|
keyboard: ⌨️
|
||||||
|
bulb: 💡
|
||||||
|
woman-technologist: 👩💻
|
53
app/data/commons/git.yml
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
cuo: https://framagit.org/framasoft/contributopia
|
||||||
|
contributopia: https://framagit.org/framasoft/contributopia
|
||||||
|
dio: https://framagit.org/framasoft/degooglisons
|
||||||
|
degooglisons-internet: https://framagit.org/framasoft/degooglisons
|
||||||
|
|
||||||
|
peertube: https://github.com/Chocobozzz/PeerTube
|
||||||
|
joinpeertube: https://framagit.org/framasoft/peertube/joinpeertube
|
||||||
|
mobilizon: https://framagit.org/framasoft/mobilizon/
|
||||||
|
joinmobilizon: https://framagit.org/framasoft/joinmobilizon/joinmobilizon
|
||||||
|
|
||||||
|
agenda: https://framagit.org/framasoft/framagenda
|
||||||
|
bag: https://framagit.org/framasoft/framabag
|
||||||
|
bin: https://framagit.org/framasoft/framabin
|
||||||
|
board: https://framagit.org/framasoft/framaboard
|
||||||
|
bookin: https://framagit.org/framasoft/framabookin
|
||||||
|
calc: https://framagit.org/framasoft/framacalc
|
||||||
|
carte: https://framagit.org/framasoft/framacarte
|
||||||
|
clic: https://framagit.org/framasoft/framaclic
|
||||||
|
cloud: https://framagit.org/framasoft/framacloud
|
||||||
|
contact: https://framagit.org/framasoft/contact
|
||||||
|
date: https://framagit.org/framasoft/framadate
|
||||||
|
docs: https://framagit.org/framasoft/docs
|
||||||
|
drive: https://framagit.org/framasoft/framadrive
|
||||||
|
drop: https://framagit.org/framasoft/framadrop
|
||||||
|
forms: https://framagit.org/framasoft/framaforms
|
||||||
|
games: https://framagit.org/framasoft/framagames
|
||||||
|
libre: https://framagit.org/framasoft/framalibre
|
||||||
|
link: https://framagit.org/framasoft/framalink
|
||||||
|
maestro: https://framagit.org/framasoft/framaestro
|
||||||
|
memo: https://framagit.org/framasoft/framemo
|
||||||
|
mindmap: https://framagit.org/framasoft/framindmap
|
||||||
|
minetest: https://framagit.org/framasoft/framinetest
|
||||||
|
my: https://framagit.org/framasoft/myframa
|
||||||
|
news: https://framagit.org/framasoft/framanews
|
||||||
|
notes: https://framagit.org/framasoft/framanotes
|
||||||
|
pack: https://framagit.org/framasoft/framapack
|
||||||
|
pad: https://framagit.org/framasoft/framapad
|
||||||
|
participer: https://framagit.org/framasoft/participer
|
||||||
|
petitions: https://framagit.org/framasoft/framapetitions
|
||||||
|
piaf: https://framagit.org/framasoft/framapiaf
|
||||||
|
pic: https://framagit.org/framasoft/framapic
|
||||||
|
site: https://framagit.org/framasoft/Framasite-
|
||||||
|
slides: https://framagit.org/framasoft/framaslides
|
||||||
|
soft: https://framagit.org/framasoft/accueil
|
||||||
|
sphere: https://framagit.org/framasoft/framasphere
|
||||||
|
start: https://framagit.org/framasoft/framastart
|
||||||
|
story: https://framagit.org/framasoft/pickweaver
|
||||||
|
talk: https://framagit.org/framasoft/framatalk
|
||||||
|
vectoriel: https://framagit.org/framasoft/framavectoriel
|
||||||
|
vox: https://framagit.org/framasoft/framavox
|
||||||
|
wiki: https://framagit.org/framasoft/Framasite-/framasite-doku
|
||||||
|
|
||||||
|
huitre: https://framagit.org/framasoft/framalink
|
89
app/data/commons/icon.yml
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
cuo: fa-shield
|
||||||
|
dio: fa-shield
|
||||||
|
|
||||||
|
aide: fa-map-signs
|
||||||
|
asso: fa-home
|
||||||
|
benevalo: fa-trophy
|
||||||
|
cgu: fa-legal
|
||||||
|
moderation: fa-handshake-o
|
||||||
|
charte: fa-heart
|
||||||
|
contact: fa-envelope
|
||||||
|
credits: fa-creative-commons
|
||||||
|
doc: fa-graduation-cap
|
||||||
|
faq: fa-question-circle
|
||||||
|
legals: fa-university
|
||||||
|
partenaires: fa-group
|
||||||
|
participer: fa-paw
|
||||||
|
stats: fa-line-chart
|
||||||
|
status: fa-heartbeat
|
||||||
|
soutenir: fa-heart
|
||||||
|
wikifs: fa-puzzle-piece
|
||||||
|
|
||||||
|
agenda: fa-calendar
|
||||||
|
bag: fa-briefcase
|
||||||
|
bee: fa-search
|
||||||
|
bin: fa-paste
|
||||||
|
blog: fa-pencil
|
||||||
|
board: fa-dashboard
|
||||||
|
book: fa-book
|
||||||
|
bookin: fa-coffee
|
||||||
|
calc: fa-th
|
||||||
|
carte: fa-map
|
||||||
|
clic: fa-hand-pointer-o
|
||||||
|
colibri: fa-comment
|
||||||
|
date: fa-calendar-check-o
|
||||||
|
docs: fa-graduation-cap
|
||||||
|
drive: fa-cloud-upload
|
||||||
|
drop: fa-send
|
||||||
|
dvd: fa-play-circle-o
|
||||||
|
forms: fa-list-ul
|
||||||
|
games: fa-gamepad
|
||||||
|
git: fa-git
|
||||||
|
key: fa-usb
|
||||||
|
lab: fa-flask
|
||||||
|
lang: fa-language
|
||||||
|
libre: fa-linux
|
||||||
|
link: fa-link
|
||||||
|
listes: fa-group
|
||||||
|
maestro: fa-magic
|
||||||
|
memo: fa-object-group
|
||||||
|
mindmap: fa-sitemap
|
||||||
|
minetest: fa-cube
|
||||||
|
my: fa-star
|
||||||
|
news: fa-newspaper-o
|
||||||
|
notes: fa-sticky-note
|
||||||
|
pack: fa-download
|
||||||
|
pad: fa-align-left
|
||||||
|
petitions: fa-balance-scale
|
||||||
|
piaf: fa-mastodon
|
||||||
|
pic: fa-photo
|
||||||
|
site: fa-globe
|
||||||
|
slides: fa-pie-chart
|
||||||
|
sphere: fa-diaspora
|
||||||
|
story: fa-thumb-tack
|
||||||
|
talk: fa-video-camera
|
||||||
|
team: fa-comments-o
|
||||||
|
tube: fa-film
|
||||||
|
vectoriel: fa-paint-brush
|
||||||
|
vox: fa-bullhorn
|
||||||
|
wiki: fa-puzzle-piece
|
||||||
|
zic: fa-music
|
||||||
|
|
||||||
|
huitre: fa-link
|
||||||
|
tontonroger: fa-search
|
||||||
|
trouvons: fa-search
|
||||||
|
|
||||||
|
clibre: fa-leaf
|
||||||
|
evl: fa-shopping-cart
|
||||||
|
planet: fa-globe
|
||||||
|
ptilouk: fa-picture-o
|
||||||
|
start: fa-rocket
|
||||||
|
vvl: fa-legal
|
||||||
|
|
||||||
|
diaspora: fa-diaspora
|
||||||
|
mastodon: fa-mastodon
|
||||||
|
twitter: fa-twitter
|
||||||
|
facebook: fa-facebook
|
||||||
|
newsletter: fa-envelope-o
|
||||||
|
rss: fa-rss
|
||||||
|
wikipedia: fa-wikipedia-w
|
16
app/data/commons/license.yml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
lal: <a href="http://artlibre.org">Art Libre</a>
|
||||||
|
cc0: <a href="https://creativecommons.org/publicdomain/zero/1.0">Creative Commons 0</a>
|
||||||
|
ccby3: <a href="https://creativecommons.org/licenses/by/3.0"><span lang="en">Creative Commons By</span> 3.0</a>
|
||||||
|
ccby4: <a href="https://creativecommons.org/licenses/by/4.0"><span lang="en">Creative Commons By</span> 4.0</a>
|
||||||
|
ccbysa3: <a href="https://creativecommons.org/licenses/by-sa/3.0"><span lang="en">Creative Commons By</span>-<abbr>SA</abbr> 3.0</a>
|
||||||
|
ccbysa4: <a href="https://creativecommons.org/licenses/by-sa/4.0"><span lang="en">Creative Commons By</span>-<abbr>SA</abbr> 4.0</a>
|
||||||
|
ccbysa2fr: <a href="https://creativecommons.org/licenses/by-sa/2.0/fr"><span lang="en">Creative Commons By</span>-<abbr>SA</abbr> 2.0</a>
|
||||||
|
ccbysa3fr: <a href="https://creativecommons.org/licenses/by-sa/3.0/fr"><span lang="en">Creative Commons By</span>-<abbr>SA</abbr> 3.0</a>
|
||||||
|
ccbysa4fr: <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr"><span lang="en">Creative Commons By</span>-<abbr>SA</abbr> 4.0</a>
|
||||||
|
gpl2: <a href="https://www.gnu.org/licenses/gpl-2.0.html">GNU <abbr lang="en" title="General Public License">GPL</abbr> v2</a>
|
||||||
|
gpl3: <a href="https://www.gnu.org/licenses/gpl-3.0.txt">GNU <abbr lang="en" title="General Public License">GPL</abbr> v3</a>
|
||||||
|
gnufdl: <a href="https://www.gnu.org/copyleft/fdl.html">GNU <abbr lang="en" title="Free Documentation License">FDL</abbr></a>
|
||||||
|
agpl3: <a href="https://www.gnu.org/licenses/agpl-3.0.html">GNU <abbr lang="en" title="Affero General Public License">AGPL</abbr> v3</a>
|
||||||
|
apache2: <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache 2.0</a>
|
||||||
|
cecillb: <a href="http://www.cecill.info/licences.fr.html">CeCILL-B</a>
|
||||||
|
mit: <a href="https://opensource.org/licenses/mit-license.php"><abbr lang="en">MIT</abbr></a>
|
91
app/data/commons/link.yml
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
soft: https://framasoft.org
|
||||||
|
dio: https://degooglisons-internet.org
|
||||||
|
diolist: https://degooglisons-internet.org/list
|
||||||
|
cuo: https://contributopia.org
|
||||||
|
benevalo: https://soutenir.framasoft.org/benevolat
|
||||||
|
soutenir: https://soutenir.framasoft.org
|
||||||
|
contact: https://contact.framasoft.org
|
||||||
|
newsletter: https://contact.framasoft.org/newsletter
|
||||||
|
participer: https://participer.framasoft.org
|
||||||
|
wikifs: https://wiki.framasoft.org
|
||||||
|
press: https://wiki.framasoft.org/speakabout
|
||||||
|
status: https://status.framasoft.org
|
||||||
|
|
||||||
|
joinmobilizon: https://joinmobilizon.org
|
||||||
|
joinpeertube: https://joinpeertube.org
|
||||||
|
|
||||||
|
agenda: https://framagenda.org
|
||||||
|
bag: https://framabag.org
|
||||||
|
bee: https://framabee.org
|
||||||
|
bin: https://framabin.org
|
||||||
|
blog: https://framablog.org
|
||||||
|
board: https://framaboard.org
|
||||||
|
book: https://framabook.org
|
||||||
|
bookin: https://framabookin.org
|
||||||
|
calc: https://framacalc.org
|
||||||
|
carte: https://framacarte.org
|
||||||
|
clic: https://framaclic.org
|
||||||
|
cloud: https://framacloud.org
|
||||||
|
colibri: https://framacolibri.org
|
||||||
|
date: https://framadate.org
|
||||||
|
docs: https://docs.framasoft.org
|
||||||
|
drive: https://framadrive.org
|
||||||
|
drop: https://framadrop.org
|
||||||
|
dvd: https://framadvd.org
|
||||||
|
forms: https://framaforms.org
|
||||||
|
games: https://framagames.org
|
||||||
|
git: https://framagit.org
|
||||||
|
key: https://framakey.org
|
||||||
|
lab: https://framalab.org
|
||||||
|
lang: https://participer.framasoft.org/fr/framalang/
|
||||||
|
libre: https://framalibre.org
|
||||||
|
link: https://frama.link
|
||||||
|
listes: https://framalistes.org
|
||||||
|
maestro: https://framaestro.org
|
||||||
|
memo: https://framemo.org
|
||||||
|
mindmap: https://framindmap.org
|
||||||
|
minetest: https://framinetest.org
|
||||||
|
my: https://my.framasoft.org
|
||||||
|
news: https://framanews.org
|
||||||
|
notes: https://framanotes.org
|
||||||
|
pack: https://framapack.org
|
||||||
|
pad: https://framapad.org
|
||||||
|
petitions: https://framapetitions.org
|
||||||
|
piaf: https://framapiaf.org
|
||||||
|
pic: https://framapic.org
|
||||||
|
site: https://frama.site
|
||||||
|
slides: https://framaslides.org
|
||||||
|
sphere: https://framasphere.org
|
||||||
|
story: https://framastory.org
|
||||||
|
talk: https://framatalk.org
|
||||||
|
team: https://framateam.org
|
||||||
|
tube: https://framatube.org
|
||||||
|
vectoriel: https://framavectoriel.org
|
||||||
|
vox: https://framavox.org
|
||||||
|
wiki: https://frama.wiki
|
||||||
|
zic: https://framazic.org
|
||||||
|
|
||||||
|
huitre: https://huit.re
|
||||||
|
tontonroger: https://tontonroger.org
|
||||||
|
trouvons: https://trouvons.org
|
||||||
|
|
||||||
|
clibre: http://clibre.eu
|
||||||
|
evl: https://enventelibre.org/40-framasoft
|
||||||
|
planet: http://planet-libre.org
|
||||||
|
ptilouk: http://ptilouk.net
|
||||||
|
start: http://framastart.org
|
||||||
|
vvl: http://vvlibri.org
|
||||||
|
|
||||||
|
diaspora: https://framasphere.org/u/framasoft
|
||||||
|
mastodon: https://framapiaf.org/@Framasoft
|
||||||
|
twitter: https://twitter.com/framasoft
|
||||||
|
facebook: https://www.facebook.com/framasoft
|
||||||
|
rss: https://rss.framasoft.org
|
||||||
|
wikipedia: https://fr.wikipedia.org/wiki/Framasoft
|
||||||
|
|
||||||
|
gitPT: https://github.com/Chocobozzz/PeerTube
|
||||||
|
instancesPT: https://instances.joinpeertube.org
|
||||||
|
docsPT: https://docs.joinpeertube.org
|
||||||
|
mastodon: https://joinmastodon.org
|
||||||
|
activitypub: https://activitypub.rocks
|
||||||
|
tosdr: https://tosdr.org/#youtube
|
21
app/data/commons/people.yml
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
aka: Alexis Kauffmann
|
||||||
|
ben: Benjamin Jean
|
||||||
|
christophe: Christophe Masutti
|
||||||
|
cyrille: Cyrille Largillier
|
||||||
|
dorme: Geoffrey Dorme
|
||||||
|
fat115: fat115
|
||||||
|
fla: Flaburgan
|
||||||
|
fred: Fredéric Urbain
|
||||||
|
gab: Gabriel Dejeante
|
||||||
|
gee: Simon « Gee » Giraudot
|
||||||
|
jo: JosephK
|
||||||
|
kinou: Christelle Thomas
|
||||||
|
lam: Lamessen
|
||||||
|
lldemars: L.L. de Mars
|
||||||
|
luc: Luc Didry
|
||||||
|
martin: Martin Gubri
|
||||||
|
sandra: peupleLà (Sandra Guigonis)
|
||||||
|
simonl: Simon Leblanc
|
||||||
|
pouhiou: Pouhiou
|
||||||
|
pyg: Pierre-Yves Gosset
|
||||||
|
tcit: Thomas Citharel
|
39
app/data/commons/soft.yml
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
agenda: Nextcloud
|
||||||
|
bag: Wallabag
|
||||||
|
bee: Searx
|
||||||
|
bin: PrivateBin
|
||||||
|
board: Kanboard
|
||||||
|
bookin: BicBucStriim
|
||||||
|
calc: Ethercalc
|
||||||
|
carte: uMap
|
||||||
|
clic: Dolomon
|
||||||
|
drive: Nextcloud
|
||||||
|
drop: Lufi
|
||||||
|
forms: Webform
|
||||||
|
games: —
|
||||||
|
git: Gitlab
|
||||||
|
link: LSTU
|
||||||
|
listes: Sympa
|
||||||
|
memo: Scrumblr
|
||||||
|
mindmap: Wisemapping
|
||||||
|
minetest: Minetest
|
||||||
|
my: Shaarli
|
||||||
|
news: TT-RSS
|
||||||
|
notes: Turtl
|
||||||
|
pad: Etherpad
|
||||||
|
piaf: Mastodon
|
||||||
|
pic: Lutim
|
||||||
|
site: Grav / PrettyNoemie
|
||||||
|
slides: Strut
|
||||||
|
sphere: Diaspora
|
||||||
|
story: PickWeaver
|
||||||
|
talk: Jitsi Meet
|
||||||
|
team: Mattermost
|
||||||
|
tube: PeerTube
|
||||||
|
vectoriel: SVG-Edit
|
||||||
|
vox: Loomio
|
||||||
|
wiki: Dokuwiki
|
||||||
|
|
||||||
|
huitre: LSTU
|
||||||
|
tontonroger: Searx
|
||||||
|
trouvons: Searx
|
39
app/data/commons/src.yml
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
agenda: https://github.com/nextcloud
|
||||||
|
bag: https://github.com/wallabag
|
||||||
|
bee: https://github.com/asciimoo/searx
|
||||||
|
bin: https://github.com/PrivateBin/PrivateBin
|
||||||
|
board: https://github.com/kanboard/kanboard
|
||||||
|
bookin: https://github.com/rvolz/BicBucStriim
|
||||||
|
calc: https://github.com/audreyt/ethercalc
|
||||||
|
carte: https://github.com/umap-project
|
||||||
|
clic: https://framagit.org/luc/dolomon
|
||||||
|
drive: https://github.com/nextcloud
|
||||||
|
drop: https://framagit.org/luc/lufi
|
||||||
|
forms: https://www.drupal.org/project/webform
|
||||||
|
git: https://about.gitlab.com/contributing/
|
||||||
|
link: https://framagit.org/luc/lstu
|
||||||
|
listes: https://www.sympa.org
|
||||||
|
memo: https://github.com/aliasaria/scrumblr
|
||||||
|
mindmap: https://bitbucket.org/wisemapping/wisemapping-open-source
|
||||||
|
minetest: https://github.com/minetest
|
||||||
|
my: https://github.com/shaarli/Shaarli
|
||||||
|
news: https://tt-rss.org/gitlab/fox/tt-rss/wikis/home
|
||||||
|
notes: https://github.com/turtl
|
||||||
|
pad: https://github.com/ether/etherpad-lite
|
||||||
|
petitions: https://www.drupal.org/project/webform
|
||||||
|
piaf: https://github.com/tootsuite/mastodon
|
||||||
|
pic: https://framagit.org/luc/lutim
|
||||||
|
site: https://github.com/getgrav/grav
|
||||||
|
slides: https://github.com/tantaman/Strut
|
||||||
|
sphere: https://github.com/diaspora
|
||||||
|
story: https://framagit.org/framasoft/pickweaver
|
||||||
|
talk: https://github.com/jitsi/jitsi-meet
|
||||||
|
team: https://github.com/mattermost
|
||||||
|
tube: https://github.com/Chocobozzz/PeerTube
|
||||||
|
vectoriel: https://github.com/SVG-Edit/svgedit
|
||||||
|
vox: https://github.com/loomio
|
||||||
|
wiki: https://github.com/splitbrain/dokuwiki
|
||||||
|
|
||||||
|
huitre: https://framagit.org/luc/lstu
|
||||||
|
tontonroger: https://github.com/asciimoo/searx
|
||||||
|
trouvons: https://github.com/asciimoo/searx
|
41
app/data/commons/status.yml
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
agenda: 24
|
||||||
|
bag: 13
|
||||||
|
bee: 5
|
||||||
|
bin: 9
|
||||||
|
blog: 3
|
||||||
|
board: 17
|
||||||
|
book: 10
|
||||||
|
calc: 16
|
||||||
|
carte: 33
|
||||||
|
clic: 36
|
||||||
|
colibri: 30
|
||||||
|
date: 4
|
||||||
|
drive: 15
|
||||||
|
drop: 31
|
||||||
|
forms: 22
|
||||||
|
git: 6
|
||||||
|
key: 18
|
||||||
|
link: 8
|
||||||
|
listes: 20
|
||||||
|
maestro: 28
|
||||||
|
memo: 25
|
||||||
|
mindmap: 14
|
||||||
|
minetest: 26
|
||||||
|
my: 29
|
||||||
|
news: 12
|
||||||
|
notes: 21
|
||||||
|
pad: 1
|
||||||
|
piaf: 32
|
||||||
|
pic: 7
|
||||||
|
site: 34
|
||||||
|
slides: 27
|
||||||
|
sphere: 2
|
||||||
|
story: 35
|
||||||
|
talk: 23
|
||||||
|
team: 6
|
||||||
|
vox: 19
|
||||||
|
wiki: 34
|
||||||
|
|
||||||
|
huitre: 8
|
||||||
|
tontonroger: 5
|
||||||
|
trouvons: 5
|
6
app/data/locales/ca.yml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
nav:
|
||||||
|
langChange: Canvia de llengua
|
||||||
|
lang: Llengua
|
||||||
|
translate: Tradueix
|
||||||
|
txt:
|
||||||
|
search: Cerca
|
7
app/data/locales/de.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
nav:
|
||||||
|
langChange: Sprache ändern
|
||||||
|
lang: Sprache
|
||||||
|
translate: Übersetzen
|
||||||
|
txt:
|
||||||
|
search: Durchsuchen
|
||||||
|
backTop: Zurück zum Anfang
|
23
app/data/locales/en.yml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
nav:
|
||||||
|
langChange: Change language
|
||||||
|
lang: Language
|
||||||
|
translate: Translate
|
||||||
|
carousel:
|
||||||
|
play: Play
|
||||||
|
pause: Pause
|
||||||
|
prev: Previous slide
|
||||||
|
next: Next slide
|
||||||
|
goto: Goto slide
|
||||||
|
indicator: Select a slide to display
|
||||||
|
txt:
|
||||||
|
dio: De-google-ify Internet
|
||||||
|
newWindow: new window
|
||||||
|
close: Close
|
||||||
|
nevershow: Do not display anymore
|
||||||
|
source: Source
|
||||||
|
contactUs: Contact us
|
||||||
|
site: Site
|
||||||
|
search: Search
|
||||||
|
backTop: Back to top
|
||||||
|
color:
|
||||||
|
dio: <b class="violet">De-google-ify</b> <b class="orange">Internet</b>
|
7
app/data/locales/es.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
nav:
|
||||||
|
langChange: Cambia el idioma
|
||||||
|
lang: Idioma
|
||||||
|
translate: Traducir
|
||||||
|
txt:
|
||||||
|
search: Buscar
|
||||||
|
backTop: Volver al comienzo de página
|
23
app/data/locales/fr.yml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
nav:
|
||||||
|
langChange: Changer la langue
|
||||||
|
lang: Langue
|
||||||
|
translate: Traduire
|
||||||
|
carousel:
|
||||||
|
play: Lecture
|
||||||
|
pause: Pause
|
||||||
|
prev: Diapo précédente
|
||||||
|
next: Diapo suivante
|
||||||
|
goto: Aller à la diapo
|
||||||
|
indicator: Sélectionner une diapo à afficher
|
||||||
|
txt:
|
||||||
|
dio: Dégooglisons Internet
|
||||||
|
newWindow: nouvelle fenêtre
|
||||||
|
close: Fermer
|
||||||
|
nevershow: Ne plus afficher
|
||||||
|
source: Source
|
||||||
|
contactUs: Contactez-nous
|
||||||
|
site: Site
|
||||||
|
search: Rechercher
|
||||||
|
backTop: Retour en haut
|
||||||
|
color:
|
||||||
|
dio: <b class="violet">Dégooglisons</b> <b class="orange">Internet</b>
|
14
app/data/locales/it.yml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
nav:
|
||||||
|
langChange: Cambia lingua
|
||||||
|
lang: Lingua
|
||||||
|
translate: Tradurre
|
||||||
|
carousel:
|
||||||
|
play: Riproduci
|
||||||
|
pause: Pausa
|
||||||
|
prev: Slide precedente
|
||||||
|
next: Slide seguente
|
||||||
|
txt:
|
||||||
|
dio: De-googl-izzare internet
|
||||||
|
search: Cerca
|
||||||
|
color:
|
||||||
|
dio: <b class="violet">De-googl-izzare</b> <b class="orange">internet</b>
|
11
app/data/project.tpl.yml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
meta:
|
||||||
|
title: Framasoft
|
||||||
|
author: Framasoft
|
||||||
|
canonical: https://framasoft.org
|
||||||
|
# i18n: http://trad.framasoft.org/iteration/view/<project_name>/master
|
||||||
|
|
||||||
|
txt:
|
||||||
|
# soft: text from color.soft (but you can reassign it here)
|
||||||
|
|
||||||
|
html:
|
||||||
|
# soft: <a href="link.soft">color.soft</a>
|
17
app/data/project.yml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
meta:
|
||||||
|
title: Join PeerTube
|
||||||
|
author: Framasoft
|
||||||
|
canonical: https://joinpeertube.org
|
||||||
|
i18n: https://trad.framasoft.org/project/view/join-peertube/master
|
||||||
|
|
||||||
|
hlink:
|
||||||
|
contact: <a href="https://contact.framasoft.org">https://contact.framasoft.org</a>
|
||||||
|
soutenir: <a href="https://soutenir.framasoft.org">https://soutenir.framasoft.org</a>
|
||||||
|
|
||||||
|
video:
|
||||||
|
rss: https://framatube.org/videos/watch/f57da309-6b92-4fe0-9267-ff8188cc050c
|
||||||
|
torrent: https://framatube.org/videos/watch/dcad56d9-9fe6-45bc-96aa-3d778f6804c1
|
||||||
|
yt-import: https://framatube.org/videos/watch/59d306c0-fc5b-493a-956a-43785693346b
|
||||||
|
subtitle: https://framatube.org/videos/watch/edd7a468-08d5-4877-b62b-61c5f3f83ceb
|
||||||
|
search: https://framatube.org/videos/watch/60c4bea4-6bb2-4fce-8d9f-8a522575419d
|
||||||
|
subscription: https://framatube.org/videos/watch/8968dbe1-a387-433b-a20f-37fe9f3ca8d5
|
175
app/index.js
|
@ -5,49 +5,104 @@ import VueI18n from 'vue-i18n';
|
||||||
import vueHeadful from 'vue-headful';
|
import vueHeadful from 'vue-headful';
|
||||||
|
|
||||||
import App from './App.vue';
|
import App from './App.vue';
|
||||||
import Home from './components/pages/Home.vue';
|
|
||||||
|
|
||||||
import './assets/scss/bootstrap.scss';
|
import './assets/scss/bootstrap.scss';
|
||||||
import '../node_modules/fork-awesome/css/fork-awesome.css';
|
import '../node_modules/fork-awesome/css/fork-awesome.css';
|
||||||
import './assets/scss/main.scss';
|
import './assets/scss/main.scss';
|
||||||
|
|
||||||
|
import text from './plugins/text';
|
||||||
|
import is from './plugins/is';
|
||||||
|
import cookie from './plugins/cookie';
|
||||||
|
import merge from './plugins/merge';
|
||||||
|
|
||||||
Vue.use(VueRouter);
|
Vue.use(VueRouter);
|
||||||
Vue.use(VueI18n);
|
Vue.use(VueI18n);
|
||||||
Vue.component('vue-headful', vueHeadful);
|
Vue.component('vue-headful', vueHeadful);
|
||||||
|
|
||||||
|
Vue.use(text);
|
||||||
|
Vue.use(is);
|
||||||
|
Vue.use(cookie);
|
||||||
|
Vue.use(merge);
|
||||||
|
|
||||||
const defaultLocale = 'fr';
|
const defaultLocale = 'fr';
|
||||||
const locales = [];
|
const locales = {};
|
||||||
const pages = [];
|
const pages = [];
|
||||||
|
const commons = [];
|
||||||
|
|
||||||
// Import locales list
|
// Import locales list
|
||||||
let req = require.context('./locales/', false, /\.yml$/);
|
// in locales/[lg]/[file].yml
|
||||||
|
let req = require.context('./locales/', true, /\.\/.*\/.*\.yml$/);
|
||||||
req.keys().forEach((key) => {
|
req.keys().forEach((key) => {
|
||||||
locales.push(key.replace(/\.\/(.*)\.yml/, '$1'));
|
const lg = key.split('/')[1];
|
||||||
|
const file = key.split('/')[2].replace(/\.yml/, '');
|
||||||
|
if (locales[lg] === undefined) {
|
||||||
|
locales[lg] = [];
|
||||||
|
}
|
||||||
|
if (!locales[lg].includes(file)) {
|
||||||
|
locales[lg].push(file);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// Flag if data/locales/[lg].yml is available
|
||||||
|
req = require.context('./data/locales/', false, /\.yml$/);
|
||||||
|
req.keys().forEach((key) => {
|
||||||
|
const lg = key.replace(/\.\/(.*)\.yml/, '$1');
|
||||||
|
if (Array.isArray(locales[lg])) {
|
||||||
|
locales[lg].push('data');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
// Import pages list
|
// Import pages list
|
||||||
req = require.context('./components/pages', false, /\.vue$/);
|
req = require.context('./components/pages', false, /\.vue$/);
|
||||||
req.keys().forEach((key) => {
|
req.keys().forEach((key) => {
|
||||||
pages.push(key.replace(/\.\/(.*)\.vue/, '$1'));
|
pages.push(key.replace(/\.\/(.*)\.vue/, '$1'));
|
||||||
});
|
});
|
||||||
|
// Import commons data list
|
||||||
|
req = require.context('./data/commons/', false, /\.yml$/);
|
||||||
|
req.keys().forEach((key) => {
|
||||||
|
commons.push(key.replace(/\.\/(.*)\.yml/, '$1'));
|
||||||
|
});
|
||||||
|
|
||||||
const lang = window.location.href
|
const lang = window.location.href
|
||||||
.split('/')[(process.env.BASE_URL === '' || (window.location.href.match(/\//g)).length === 3) ? 3 : 4]
|
.split('/')[(process.env.BASE_URL === '' || (window.location.href.match(/\//g)).length === 3) ? 3 : 4]
|
||||||
.substr(0, 2)
|
.substr(0, 2)
|
||||||
.toLowerCase() || defaultLocale;
|
.toLowerCase() || '';
|
||||||
document.getElementsByTagName('html')[0].setAttribute('lang', lang);
|
document.getElementsByTagName('html')[0].setAttribute('lang', lang);
|
||||||
const userLang = navigator.languages
|
const userLang = navigator.languages
|
||||||
|| [navigator.language || navigator.userLanguage];
|
|| [navigator.language || navigator.userLanguage];
|
||||||
let defaultRouteLang = '';
|
let defaultRouteLang = '';
|
||||||
|
|
||||||
const messages = {};
|
const messages = {};
|
||||||
messages.locales = require('./lang.yml'); // eslint-disable-line
|
const numberFormats = {};
|
||||||
messages.locales.avalaible = Object.keys(messages.locales).filter(n => locales.indexOf(n) > -1);
|
messages.locales = require('./data/lang.yml'); // eslint-disable-line
|
||||||
|
messages.locales.available = Object
|
||||||
|
.keys(messages.locales)
|
||||||
|
.filter(n => Object.keys(locales).indexOf(n) > -1);
|
||||||
|
|
||||||
// Data import
|
// Data import
|
||||||
let data = {};
|
const data = {};
|
||||||
data = require('./data.yml'); // eslint-disable-line
|
let project = {};
|
||||||
data['/'] = `/${process.env.BASE_URL.replace(/(.+)/, '$1/')}`;
|
const scripts = document.getElementsByTagName('script');
|
||||||
data.hash = window.location.hash.replace('#', '');
|
for (let i = 0; i < commons.length; i += 1) {
|
||||||
|
data[commons[i]] = require(`./data/commons/${commons[i]}.yml`); // eslint-disable-line
|
||||||
|
}
|
||||||
|
project = require('./data/project.yml'); // eslint-disable-line
|
||||||
|
Object.assign(data, project);
|
||||||
|
|
||||||
|
Object.assign(data, {
|
||||||
|
host: window.location.host,
|
||||||
|
url: window.location.href,
|
||||||
|
'/': `/${process.env.BASE_URL.replace(/(.+)/, '$1/')}`,
|
||||||
|
inframe: window.top.location !== window.self.document.location,
|
||||||
|
hash: window.location.hash.replace('#', ''),
|
||||||
|
});
|
||||||
|
data.self = new URL(scripts[scripts.length - 1].src, data.url).href;
|
||||||
|
if (process.env.NODE_ENV === 'production'
|
||||||
|
&& data.meta.canonical !== undefined
|
||||||
|
&& /^http/.test(data.meta.canonical)) {
|
||||||
|
data.baseurl = data.meta.canonical;
|
||||||
|
} else {
|
||||||
|
data.baseurl = `${data.self.split('/').slice(0, -1).join('/')}/`;
|
||||||
|
}
|
||||||
|
|
||||||
data.txt = data.txt || {};
|
data.txt = data.txt || {};
|
||||||
data.html = data.html || {};
|
data.html = data.html || {};
|
||||||
Object.keys(data.color).forEach((k) => {
|
Object.keys(data.color).forEach((k) => {
|
||||||
|
@ -57,7 +112,6 @@ Object.keys(data.color).forEach((k) => {
|
||||||
data.txt[k] = tmp.textContent || tmp.innerText;
|
data.txt[k] = tmp.textContent || tmp.innerText;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.keys(data.link).forEach((k) => {
|
Object.keys(data.link).forEach((k) => {
|
||||||
if (data.html[k] === undefined) {
|
if (data.html[k] === undefined) {
|
||||||
if (data.color[k] !== undefined) {
|
if (data.color[k] !== undefined) {
|
||||||
|
@ -68,58 +122,85 @@ Object.keys(data.link).forEach((k) => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const routes = [
|
const routes = [];
|
||||||
{ path: '/', component: Home, meta: { id: 'home', lang: defaultLocale } },
|
Object.keys(locales).forEach((k) => {
|
||||||
];
|
messages[k] = {};
|
||||||
|
numberFormats[k] = {};
|
||||||
for (let i = 0; i < locales.length; i += 1) {
|
|
||||||
messages[locales[i]] = {};
|
|
||||||
// Locales import
|
// Locales import
|
||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
import(/* webpackChunkName: "lang-[request]" */`./locales/${locales[i]}.yml`).then((locale) => {
|
for (let i = 0; i < commons.length; i += 1) {
|
||||||
messages[locales[i]] = locale;
|
messages[k] = require(`./data/commons/${commons[i]}.yml`); // eslint-disable-line
|
||||||
messages[locales[i]].data = data;
|
}
|
||||||
messages[locales[i]].lang = locales[i];
|
messages[k] = require(`./locales/${k}/main.yml`); // eslint-disable-line
|
||||||
}).catch((err) => {
|
for (let i = 0; i < locales[k].length; i += 1) {
|
||||||
console.error(err);
|
const file = locales[k][i];
|
||||||
});
|
if (!/main|data/.test(file)) {
|
||||||
|
messages[k][file] = require(`./locales/${k}/${file}.yml`); // eslint-disable-line
|
||||||
|
}
|
||||||
|
if (/data/.test(file)) {
|
||||||
|
const dataLocale = require(`./data/locales/${k}.yml`);
|
||||||
|
Object.keys(dataLocale).forEach((l) => {
|
||||||
|
if (messages[k][l] === undefined) {
|
||||||
|
messages[k][l] = dataLocale[l];
|
||||||
|
} else {
|
||||||
|
Object.assign(messages[k][l], dataLocale[l]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
messages[k].data = data;
|
||||||
|
messages[k].lang = k;
|
||||||
|
numberFormats[k].eur = {
|
||||||
|
style: 'currency',
|
||||||
|
currency: 'EUR',
|
||||||
|
maximumFractionDigits: 0,
|
||||||
|
minimumFractionDigits: 0,
|
||||||
|
};
|
||||||
/* eslint-enable */
|
/* eslint-enable */
|
||||||
|
|
||||||
// Localized routes
|
// Localized routes
|
||||||
for (let j = 0; j < pages.length; j += 1) {
|
for (let j = 0; j < pages.length; j += 1) {
|
||||||
const component = require(`./components/pages/${pages[j]}.vue`); // eslint-disable-line
|
const component = require(`./components/pages/${pages[j]}.vue`); // eslint-disable-line
|
||||||
routes.push({
|
routes.push({
|
||||||
path: `/${locales[i]}${pages[j].toLowerCase().replace(/^/, '/').replace('/home', '')}`,
|
path: `/${k}${pages[j].toLowerCase().replace(/^/, '/').replace('/home', '')}`,
|
||||||
|
component: component.default,
|
||||||
|
meta: { id: pages[j].toLowerCase(), lang: k },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// define defaultRouteLang
|
||||||
|
for (let j = 0; j < userLang.length; j += 1) { // check if user locales
|
||||||
|
const lg = userLang[j].substring(0, 2).toLowerCase();
|
||||||
|
if (defaultRouteLang === '' && Object.keys(locales).includes(lg)) { // matches with app locales
|
||||||
|
defaultRouteLang = lg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Redirections
|
||||||
|
for (let i = 0; i < pages.length; i += 1) {
|
||||||
|
if (!window.vuefsPrerender) {
|
||||||
|
routes.push({
|
||||||
|
path: `/${pages[i].toLowerCase().replace('home', '')}`,
|
||||||
|
redirect: `/${defaultRouteLang}/${pages[i].toLowerCase().replace('home', '')}`,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// Component needed for SEO
|
||||||
|
const component = require(`./components/pages/${pages[i]}.vue`); // eslint-disable-line
|
||||||
|
routes.push({
|
||||||
|
path: `/${pages[i].toLowerCase().replace('home', '')}`,
|
||||||
component: component.default,
|
component: component.default,
|
||||||
meta: { id: pages[j].toLowerCase(), lang: locales[i] },
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// define defaultRouteLang
|
|
||||||
for (let j = 0; j < userLang.length; j += 1) { // check if user locales
|
|
||||||
for (let i = 0; i < locales.length; i += 1) { // matches with app locales
|
|
||||||
if (defaultRouteLang === '' && userLang[j].substring(0, 2).toLowerCase() === locales[i]) {
|
|
||||||
defaultRouteLang = locales[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Home redirection
|
|
||||||
const currentURL = window.location.href.replace(/\/+$/, '');
|
|
||||||
if ((currentURL.split('/')[3] === undefined || currentURL.split('/')[3] === process.env.BASE_URL)
|
|
||||||
&& (currentURL.split('/')[4] === undefined)) {
|
|
||||||
if (defaultRouteLang === '') {
|
|
||||||
defaultRouteLang = defaultLocale;
|
|
||||||
}
|
|
||||||
window.location.href = `${currentURL}/${defaultRouteLang}/`;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create VueI18n instance with options
|
// Create VueI18n instance with options
|
||||||
const i18n = new VueI18n({
|
const i18n = new VueI18n({
|
||||||
locale: lang,
|
locale: lang === '' ? defaultRouteLang : lang,
|
||||||
fallbackLocale: defaultLocale,
|
fallbackLocale: defaultLocale,
|
||||||
messages,
|
messages,
|
||||||
|
numberFormats,
|
||||||
silentTranslationWarn: true,
|
silentTranslationWarn: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
meta:
|
meta:
|
||||||
title: '@:home.title ! #JoinPeerTube'
|
title: '@:home.title ! #JoinPeerTube'
|
||||||
nav:
|
|
||||||
langChange: Change the language
|
|
||||||
lang: Language
|
|
||||||
translate: Translate
|
|
||||||
menu:
|
menu:
|
||||||
faq: F.A.Q.
|
faq: F.A.Q.
|
||||||
help: Support
|
help: Support
|
||||||
|
@ -22,7 +18,7 @@ home:
|
||||||
getting-started: Get started
|
getting-started: Get started
|
||||||
how-it-works: How it works
|
how-it-works: How it works
|
||||||
banner:
|
banner:
|
||||||
subtitle: We're talking about our progress these last months and what's coming
|
subtitle: We’re talking about our progress these last months and what’s coming
|
||||||
next.
|
next.
|
||||||
button: Support
|
button: Support
|
||||||
install: Install PeerTube
|
install: Install PeerTube
|
||||||
|
@ -103,7 +99,7 @@ home:
|
||||||
consisting of the local username (@chocobozzz) and the domain name of the
|
consisting of the local username (@chocobozzz) and the domain name of the
|
||||||
server it is on (framatube.org).
|
server it is on (framatube.org).
|
||||||
- The administrators of a PeerTube instance can follow each other. When your
|
- The administrators of a PeerTube instance can follow each other. When your
|
||||||
PeerTube instance follows another PeerTube instance, you receive the videos'
|
PeerTube instance follows another PeerTube instance, you receive the videos’
|
||||||
preview information from this instance. This way, you can display the videos
|
preview information from this instance. This way, you can display the videos
|
||||||
available on your instance and on the instances you decided to follow. So
|
available on your instance and on the instances you decided to follow. So
|
||||||
you keep control of the videos displayed on your PeerTube instance!
|
you keep control of the videos displayed on your PeerTube instance!
|
||||||
|
@ -133,7 +129,7 @@ faq:
|
||||||
title: What is PeerTube?
|
title: What is PeerTube?
|
||||||
text:
|
text:
|
||||||
- PeerTube is software that you install on a web server. It allows you to create
|
- PeerTube is software that you install on a web server. It allows you to create
|
||||||
a video hosting website, so create your "homemade YouTube".
|
a video hosting website, so create your “homemade YouTube”.
|
||||||
- The difference to YouTube is that it’s not intended to create a huge platform
|
- The difference to YouTube is that it’s not intended to create a huge platform
|
||||||
centralizing videos from the whole world on a single server farm (which is
|
centralizing videos from the whole world on a single server farm (which is
|
||||||
horribly expensive).
|
horribly expensive).
|
||||||
|
@ -177,7 +173,7 @@ faq:
|
||||||
- If the hosting provider Knitting-PeerTube becomes friends with Kittens-Tube
|
- If the hosting provider Knitting-PeerTube becomes friends with Kittens-Tube
|
||||||
and Framatube, it will display the videos of others on its site, thus diluting
|
and Framatube, it will display the videos of others on its site, thus diluting
|
||||||
hosting costs while remaining practical and complete for Internet users.
|
hosting costs while remaining practical and complete for Internet users.
|
||||||
- 'PeerTube’s federation protocol will be fluid (everyone can choose their "friends"
|
- 'PeerTube’s federation protocol will be fluid (everyone can choose their “friends”
|
||||||
hosts), and based on <a href="@:data.link.activitypub">ActivityPub</a>: this
|
hosts), and based on <a href="@:data.link.activitypub">ActivityPub</a>: this
|
||||||
will open the possibility to connect with tools like Mastodon or MediaGoblin.'
|
will open the possibility to connect with tools like Mastodon or MediaGoblin.'
|
||||||
p2p:
|
p2p:
|
||||||
|
@ -191,14 +187,14 @@ faq:
|
||||||
bits of files, which relieves the server.
|
bits of files, which relieves the server.
|
||||||
- 'There is nothing to do: your web browser does it automatically. If you are
|
- 'There is nothing to do: your web browser does it automatically. If you are
|
||||||
on a mobile phone or if your network does not allow it (router, firewall,
|
on a mobile phone or if your network does not allow it (router, firewall,
|
||||||
etc.), this function is disabled and switches back to an "old-style" video
|
etc.), this function is disabled and switches back to an “old-style” video
|
||||||
broadcast @:data.emoji.wink</>.'
|
broadcast @:data.emoji.wink</>.'
|
||||||
admin:
|
admin:
|
||||||
title: For those who know how to administer a server, PeerTube is…
|
title: For those who know how to administer a server, PeerTube is…
|
||||||
text:
|
text:
|
||||||
- '<strong>It’s software you install on your server</strong> to create a website
|
- '<strong>It’s software you install on your server</strong> to create a website
|
||||||
where videos are hosted and broadcast… Basically: you create your own "homemade
|
where videos are hosted and broadcast… Basically: you create your own “homemade
|
||||||
YouTube"!'
|
YouTube”!'
|
||||||
- There already exists free/libre software that enables you to do this. But
|
- There already exists free/libre software that enables you to do this. But
|
||||||
with PeerTube, you can link your instance (your video website) to Zaïd’s PeerTube
|
with PeerTube, you can link your instance (your video website) to Zaïd’s PeerTube
|
||||||
instance (where he hosts videos of the lectures for his people’s university),
|
instance (where he hosts videos of the lectures for his people’s university),
|
||||||
|
@ -222,7 +218,7 @@ faq:
|
||||||
title: For those who wants to upload their videos, PeerTube allows…
|
title: For those who wants to upload their videos, PeerTube allows…
|
||||||
text:
|
text:
|
||||||
- 'It allows you to choose a hoster that fits you. YouTube’s excesses are a
|
- 'It allows you to choose a hoster that fits you. YouTube’s excesses are a
|
||||||
good exemple: its hoster, Google/Alphabet, can impose its "Robocopyright"
|
good exemple: its hoster, Google/Alphabet, can impose its “Robocopyright”
|
||||||
(the ContentID system) or its tools to index, recommend and spotlight videos;
|
(the ContentID system) or its tools to index, recommend and spotlight videos;
|
||||||
and those tools seem as unfair as they are obscure. Even though, it already
|
and those tools seem as unfair as they are obscure. Even though, it already
|
||||||
forces you <a href="@:data.link.tosdr">to give it extended copyrights on your
|
forces you <a href="@:data.link.tosdr">to give it extended copyrights on your
|
||||||
|
@ -311,7 +307,7 @@ faq:
|
||||||
- OrderedDict([('There are none, not at the moment', 'PeerTube is a tool that
|
- OrderedDict([('There are none, not at the moment', 'PeerTube is a tool that
|
||||||
we wanted neutral in terms of remuneration.')])
|
we wanted neutral in terms of remuneration.')])
|
||||||
- 'For now, the solution proposed to people who upload videos is to use the
|
- 'For now, the solution proposed to people who upload videos is to use the
|
||||||
"support" button under the video. This button displays a frame in which people
|
“support” button under the video. This button displays a frame in which people
|
||||||
who upload videos can display text, images, and links freely. For example,
|
who upload videos can display text, images, and links freely. For example,
|
||||||
it’s possible to put a link to Patreon, Tipeee, Paypal, Liberapay (or any
|
it’s possible to put a link to Patreon, Tipeee, Paypal, Liberapay (or any
|
||||||
other solution) there. Other examples: put a postal address if you’d like
|
other solution) there. Other examples: put a postal address if you’d like
|
||||||
|
@ -333,7 +329,7 @@ faq:
|
||||||
- There’s a complete <a href="@:data.link.instancesPT">list of instances here</a>,
|
- There’s a complete <a href="@:data.link.instancesPT">list of instances here</a>,
|
||||||
and a list of those that are <a href="./#register">open to registration
|
and a list of those that are <a href="./#register">open to registration
|
||||||
here</a>.
|
here</a>.
|
||||||
- Then, we recommend you go to the instances, read their "about" page to discover
|
- Then, we recommend you go to the instances, read their “about” page to discover
|
||||||
their terms of use (disk space limit per user, content policy, etc.).
|
their terms of use (disk space limit per user, content policy, etc.).
|
||||||
- It’s best to contact and talk directly with hosting providers, to understand
|
- It’s best to contact and talk directly with hosting providers, to understand
|
||||||
their business model, vision, etc. Because only you can determine what makes
|
their business model, vision, etc. Because only you can determine what makes
|
||||||
|
@ -345,20 +341,20 @@ faq:
|
||||||
and indexing ~16000 videos, only ~200 videos are tagged as NSFW (i. e. the
|
and indexing ~16000 videos, only ~200 videos are tagged as NSFW (i. e. the
|
||||||
content is sensitive, which could be something else than pornography). Therefore,
|
content is sensitive, which could be something else than pornography). Therefore,
|
||||||
they represent only ~1% of all the videos.
|
they represent only ~1% of all the videos.
|
||||||
- "Moreover, each administrator decides with which instances he wants to federate:\
|
- 'Moreover, each administrator decides with which instances he wants to federate:
|
||||||
\ he has the full control of the content he wants to display on his instance.\
|
he has the full control of the content he wants to display on his instance.
|
||||||
\ It's up to him to choose the policy regarding this kind of videos. He can\
|
It’s up to him to choose the policy regarding this kind of videos. He can
|
||||||
\ decide to: <ul><li>Display them</li><li>Blur the title and thumbnail</li><li>Hide\
|
decide to: <ul><li>Display them</li><li>Blur the title and thumbnail</li><li>Hide
|
||||||
\ them</li></ul>"
|
them</li></ul>'
|
||||||
- By default, this configuration is set to "Hide them". If some administrators
|
- By default, this configuration is set to “Hide them”. If some administrators
|
||||||
decide to display them with a blur filter for example, it's <strong>their</strong>
|
decide to display them with a blur filter for example, it’s <strong>their</strong>
|
||||||
choice.
|
choice.
|
||||||
- Finally, any user can override this configuration, and decides if he want
|
- Finally, any user can override this configuration, and decides if he want
|
||||||
to display, blur or hide these videos for himself.
|
to display, blur or hide these videos for himself.
|
||||||
- "PeerTube is just a software: it's not Framasoft (non-profit that develops\
|
- 'PeerTube is just a software: it’s not Framasoft (non-profit that develops
|
||||||
\ PeerTube) that's responsible for the content published on some instances."
|
PeerTube) that’s responsible for the content published on some instances.'
|
||||||
- "It's up to everyone to be responsible: parents, visitors, uploaders, PeerTube\
|
- 'It’s up to everyone to be responsible: parents, visitors, uploaders, PeerTube
|
||||||
\ administrators to respect the law and avoid any problematic situations."
|
administrators to respect the law and avoid any problematic situations.'
|
||||||
forum: Discuss on our forum
|
forum: Discuss on our forum
|
||||||
tech:
|
tech:
|
||||||
install:
|
install:
|
||||||
|
@ -375,19 +371,19 @@ faq:
|
||||||
title: PeerTube v1.0 does not seem to me to contain all the tools necessary
|
title: PeerTube v1.0 does not seem to me to contain all the tools necessary
|
||||||
for a good management of my instance.
|
for a good management of my instance.
|
||||||
text:
|
text:
|
||||||
- '<blockquote>"It’s outrageous and unconscious: you’re releasing PeerTube’s
|
- '<blockquote>“It’s outrageous and unconscious: you’re releasing PeerTube’s
|
||||||
version 1 when it doesn’t contain the necessary tools to effectively manage
|
version 1 when it doesn’t contain the necessary tools to effectively manage
|
||||||
videos claimed by rights holders, or to effectively manage the issue of online
|
videos claimed by rights holders, or to effectively manage the issue of online
|
||||||
harassment in comments, or to effectively manage monetization through advertising,
|
harassment in comments, or to effectively manage monetization through advertising,
|
||||||
or to (insert here your request to PeerTube). It will never work! What do
|
or to (insert here your request to PeerTube). It will never work! What do
|
||||||
you intend to do about it?"</blockquote>'
|
you intend to do about it?”</blockquote>'
|
||||||
- You’re right. PeerTube 1.0 is not the perfect tool, far from it. And we never
|
- You’re right. PeerTube 1.0 is not the perfect tool, far from it. And we never
|
||||||
promised that this version 1.0 would be a tool that would include all the
|
promised that this version 1.0 would be a tool that would include all the
|
||||||
features corresponding to all cases.
|
features corresponding to all cases.
|
||||||
- PeerTube 1.0 is the realization of the commitment we made in October 2017
|
- PeerTube 1.0 is the realization of the commitment we made in October 2017
|
||||||
to take PeerTube from an alpha version (personal project and proof of concept
|
to take PeerTube from an alpha version (personal project and proof of concept
|
||||||
that a federated video platform could work) to a 1.0 version in October 2018
|
that a federated video platform could work) to a 1.0 version in October 2018
|
||||||
(which does not mean "final version", but "version considered stable and distributable").
|
(which does not mean “final version”, but “version considered stable and distributable”).
|
||||||
- Remember that PeerTube has only one (almost) full time developer and a small
|
- Remember that PeerTube has only one (almost) full time developer and a small
|
||||||
handful of very involved volunteers. It is not a product developed by a start-up
|
handful of very involved volunteers. It is not a product developed by a start-up
|
||||||
with a full time team (dev, design, UX, marketing, support, etc.) and significant
|
with a full time team (dev, design, UX, marketing, support, etc.) and significant
|
||||||
|
@ -395,7 +391,7 @@ faq:
|
||||||
will continue over the months and, we hope, in the years to come.
|
will continue over the months and, we hope, in the years to come.
|
||||||
- 'We are well aware of the shortcomings of PeerTube 1.0, especially in the
|
- 'We are well aware of the shortcomings of PeerTube 1.0, especially in the
|
||||||
moderation tools area (videos, comments, etc.). And we intend to work on these
|
moderation tools area (videos, comments, etc.). And we intend to work on these
|
||||||
weaknesses. '
|
weaknesses.'
|
||||||
- 'We have chosen to do so as follows: on the one hand we will work primarily
|
- 'We have chosen to do so as follows: on the one hand we will work primarily
|
||||||
in the coming months to improve these tools within PeerTube itself (in the
|
in the coming months to improve these tools within PeerTube itself (in the
|
||||||
<i>core</i> of the software). On the other hand, we will also focus, in parallel,
|
<i>core</i> of the software). On the other hand, we will also focus, in parallel,
|
||||||
|
@ -441,7 +437,7 @@ faq:
|
||||||
scale streaming of large files.
|
scale streaming of large files.
|
||||||
- After discussing it on our forum, we feel that d.tube is not free or open
|
- After discussing it on our forum, we feel that d.tube is not free or open
|
||||||
source, because publishing only compiled code hinders freedom of modification.
|
source, because publishing only compiled code hinders freedom of modification.
|
||||||
- D.tube is based on Steem for "remuneration", it is a choice, but Steem is
|
- D.tube is based on Steem for “remuneration”, it is a choice, but Steem is
|
||||||
<a href="https://en.wikipedia.org/wiki/Steemit#Criticism">widely criticized</a>
|
<a href="https://en.wikipedia.org/wiki/Steemit#Criticism">widely criticized</a>
|
||||||
as <a href="https://steemit.com/steemit/@docdelux/30-days-of-steemit-here-is-my-criticism">highly
|
as <a href="https://steemit.com/steemit/@docdelux/30-days-of-steemit-here-is-my-criticism">highly
|
||||||
centralized</a>, and suspiciously <a href="https://steemit.com/steemit/@thecryptonews/psa-constructive-criticism-the-ugly-truth-behind-steemit">resembles
|
centralized</a>, and suspiciously <a href="https://steemit.com/steemit/@thecryptonews/psa-constructive-criticism-the-ugly-truth-behind-steemit">resembles
|
||||||
|
@ -456,280 +452,3 @@ hof:
|
||||||
donators: Financial Contributors
|
donators: Financial Contributors
|
||||||
dev: Contributors
|
dev: Contributors
|
||||||
contrib: Contribute to the code
|
contrib: Contribute to the code
|
||||||
news:
|
|
||||||
title: What's up on PeerTube
|
|
||||||
subtitle: Discover the tool's latest improvements
|
|
||||||
latest-articles: Latest articles
|
|
||||||
blocs:
|
|
||||||
newsletter25-09-2019:
|
|
||||||
title: PeerTube 1.4 is out!
|
|
||||||
date:
|
|
||||||
text: September 25, 2019
|
|
||||||
data: '2019-09-25'
|
|
||||||
text:
|
|
||||||
p1: Hi everybody,
|
|
||||||
p2: Peertube 1.4 just came out! Here’s a quick overview of what’s new...
|
|
||||||
h4a: Plug-in system
|
|
||||||
p3:
|
|
||||||
- 'Since PeerTube’s launch, we have been aware that every administrator and user wishes to see the software fulfill their needs. As Framasoft cannot and will not develop every feature that could be hoped for, we have from the start of the project planned on creating a plug-in system.'
|
|
||||||
- 'We are pleased to announce that the foundation stones of this system have been laid in this 1.4 release! It might be very basic for now, but we plan on improving it bit by bit in Peertube’s future releases.'
|
|
||||||
- 'Now, this system allows each administrator to <b>create specific plug-ins</b> depending on their needs. They may install extensions created by other people on their instance as well. For example, it is now possible to install community created graphical themes to change the instance visual interface.'
|
|
||||||
h4b: A better interface
|
|
||||||
p4:
|
|
||||||
- 'We strive to improve PeerTube’s interface by collecting users’ opinions so that we know what is causing them trouble (in terms of understanding and usability for example). Even though this is a time-consuming undertaking, this new release already offers you a few modifications.'
|
|
||||||
- 'First of all, we realized that most people who discover PeerTube have a hard time understanding <b>the difference between a channel and an account</b>. Indeed, on others video broadcasting services (such as YouTube) these two things are pretty much the same.'
|
|
||||||
- 'However, on PeerTube each account is linked to one or multiple channels that can be named as the users sees fit. You also have to create at least one channel when creating an account. Once the channels have been created, users can upload videos to each channel to organize their contents (for example, you could have a channel about cooking and another one about biking).'
|
|
||||||
- <a href="@:data.link.joinpeertube/img/channel-en.png" target="_blank">
|
|
||||||
<img src="@:data.link.joinpeertube/img/channel-en.png" alt="" />
|
|
||||||
</a>
|
|
||||||
<figure>
|
|
||||||
<img src="@:data.link.joinpeertube/img/channel-en.png" alt="">
|
|
||||||
<figcaption>2 channels on Framasoft's account on Framatube instance</figcaption>
|
|
||||||
</figure>
|
|
||||||
- 'In order to make this channel idea more understandable, we have changed the sign-up form, which from now on consists of two steps:'
|
|
||||||
ul:
|
|
||||||
- 'Step 1: account creation (choosing your username, password, email, etc.)'
|
|
||||||
- 'Step 2: choosing your default channel name via a new form'
|
|
||||||
- <a href="@:data.link.joinpeertube/img/account-creation-en.png" target="_blank">
|
|
||||||
<img src="@:data.link.joinpeertube/img/account-creation-en.png" alt="" />
|
|
||||||
</a>
|
|
||||||
<figure>
|
|
||||||
<img src="@:data.link.joinpeertube/img/account-creation-en.png" alt="" />
|
|
||||||
<figcaption>the new sign-up form in 2 steps</figcaption>
|
|
||||||
</figure>
|
|
||||||
- 'We also aimed to differentiate a channel homepage from that of an account. These two pages used to list videos, whereas now the account homepage lists all the channel linked to the account by showing under each channel name the thumbnail from the last videos uploaded on it.'
|
|
||||||
- 'Another unclear element was the <b>video sharing pop-up</b>. We have improved it, and it is now possible to share or embed a video by making it start and/or finish at a precise moment (time-code feature), to decide which subtitles will appear by default, and to loop the video. These new options will surely be greatly enjoyed.'
|
|
||||||
- <a href="@:data.link.joinpeertube/img/share-popup-en.png" target="_blank">
|
|
||||||
<img src="@:data.link.joinpeertube/img/share-popup-en.png" alt="" />
|
|
||||||
</a>
|
|
||||||
<figure>
|
|
||||||
<img src="@:data.link.joinpeertube/img/share-popup-en.png" alt="">
|
|
||||||
<figcaption>customization options when video sharing</figcaption>
|
|
||||||
</figure>
|
|
||||||
h4c: More features
|
|
||||||
p5:
|
|
||||||
- 'Our wonderful community of translators is once again to thank for their work, after they enriched PeerTube with <b>3 new languages</b>: Finnish, Greek and Scottish Gaelic, making PeerTube now available in 22 languages.'
|
|
||||||
- 'We also added a new feature allowing you to <b>upload an audio file</b> directly to PeerTube: the software will automatically create a video from the audio file. This much awaited for feature should make life easier for music makers :)'
|
|
||||||
p6: 'This new release includes many other improvements. You can see the complete list on <a href="https://github.com/Chocobozzz/PeerTube/releases/tag/v1.4.0">https://github.com/Chocobozzz/PeerTube/releases/tag/v1.4.0</a>.'
|
|
||||||
p7: 'Thanks to all PeerTube contributors!'
|
|
||||||
p8: 'Framasoft'
|
|
||||||
newsletter05-06-2019:
|
|
||||||
title: PeerTube 1.3 is out!
|
|
||||||
date:
|
|
||||||
text: June 5, 2019
|
|
||||||
data: '2019-06-05'
|
|
||||||
text:
|
|
||||||
p1: Hello!
|
|
||||||
p2: We've just released PeerTube 1.3 and it brings a lot of new features.
|
|
||||||
p3: "The most important of these new features is <strong>the playlist system</strong>.\
|
|
||||||
\ This feature allows any user to create a playlist in which it's possible\
|
|
||||||
\ to add videos and reorder them. Videos added to a playlist can be viewed\
|
|
||||||
\ entirely or partially: the creator of the playlist can decide when the\
|
|
||||||
\ video playback starts and/or ends (timecode system). This system is really\
|
|
||||||
\ useful to create all kinds of zappings or educational contents by selecting\
|
|
||||||
\ extracts from videos which interest you. In addition, a \"Watch Later\"\
|
|
||||||
\ playlist is created by default for each user. Thus, you can save videos\
|
|
||||||
\ in this playlist when you don't have time to watch them immediately."
|
|
||||||
p4: 'Another feature of this 1.3 version has been entirely developed by an
|
|
||||||
external contributor: <a href="https://github.com/joshmorel">Josh Morel</a>
|
|
||||||
who add <strong>a quarantine system</strong> for videos on PeerTube. If
|
|
||||||
the administrator of an instance enables this feature, any new video uploaded
|
|
||||||
on his instance will automatically be hidden until a moderator approves
|
|
||||||
it.'
|
|
||||||
p5: 'PeerTube translation community have done a huge job. <strong>3 new languages</strong>
|
|
||||||
are now available: Japanese, Dutch and European Portuguese (PeerTube already
|
|
||||||
support Brazilian Portuguese). Amazing! PeerTube is now available in 19
|
|
||||||
languages!'
|
|
||||||
p6: Now, administrators can <strong>manage more finely how other instances
|
|
||||||
subscribe to their own instance</strong>. The administrator can decide whether
|
|
||||||
or not to approve the subscription of another instance to its own. It is
|
|
||||||
also possible to activate automatic rejection for any new subscription to
|
|
||||||
its instance. Finally, a notification is created as soon as the administrator's
|
|
||||||
instance receives a new subscription. These features help administrators
|
|
||||||
control on which instances their content is displayed.
|
|
||||||
p7: We're also redesigning the <strong>PeerTube video player</strong> to offer
|
|
||||||
better video playback and to correct a few bugs. With this new player, resolution
|
|
||||||
changes should be smoother and the bandwidth management is optimized with
|
|
||||||
a more efficient buffering system. Version 1.3 of PeerTube also adds ability
|
|
||||||
for administrators to enable this new experimental player so we can get
|
|
||||||
feedback on it. We hope to use this new player by default in the future.
|
|
||||||
p8: Finally, we have made some adjustments to the <strong>user interface</strong>
|
|
||||||
so it easier and nicer to use. For instance, video thumbnails are becoming
|
|
||||||
bigger so that they're more highlighted. Users now have a quick access to
|
|
||||||
their library from the menu that includes their playlists, videos, video
|
|
||||||
watching history and their subscriptions.
|
|
||||||
p9: Many other improvements have been made in this new version. You can see
|
|
||||||
the complete list on <a href="https://github.com/Chocobozzz/PeerTube/releases/tag/v1.3.0">https://github.com/Chocobozzz/PeerTube/releases/tag/v1.3.0</a>.
|
|
||||||
p10: Thanks to all PeerTube contributors!
|
|
||||||
p11: Framasoft.
|
|
||||||
newsletter26-02-2019:
|
|
||||||
title: 'PeerTube: retrospective, new features and more to come!'
|
|
||||||
date:
|
|
||||||
text: February 26, 2019
|
|
||||||
data: '2019-02-26'
|
|
||||||
text:
|
|
||||||
p1: Since version 1.0 has been released last November, we went on improving
|
|
||||||
PeerTube, day after day. These improvements on PeerTube go well beyond the
|
|
||||||
objectives fixed during the crowdfunding. They have been funded by the <a
|
|
||||||
href="https://framasoft.org/en/">Framasoft non-profit</a>, which develops
|
|
||||||
the software (and lives only through <a href="https://soutenir.framasoft.org/en/">your
|
|
||||||
donations</a>).
|
|
||||||
p2: 'Here is a small retrospective of the end of 2018/beginning of 2019:'
|
|
||||||
p3: In December 2018, we released version 1.1 which contained some moderation
|
|
||||||
tools requested by instance administrators.<br> We also took the opportunity
|
|
||||||
to add a watched videos history feature and the automatic resuming of video
|
|
||||||
playback.
|
|
||||||
p4: "In January, we released version 1.2 that supports 3 new languages: Russian,\
|
|
||||||
\ Polish and Italian. Thanks to PeerTube's community of translators, PeerTube\
|
|
||||||
\ is now translated into 16 different languages!"
|
|
||||||
p5: This version also includes a notification system that allows users to
|
|
||||||
be informed (on the web interface or through email) when their video is
|
|
||||||
commented, when someone mention them, when one of their subscriptions has
|
|
||||||
published a new video, etc.
|
|
||||||
p6: 'In the meantime, the PeerTube federation has grown: today, more than
|
|
||||||
300 instances broadcast more than 70,000 videos, with nearly 2 million cumulated
|
|
||||||
views. We remind you that the only official website we maintain around PeerTube
|
|
||||||
is <a href="https://joinpeertube.org/en">https://joinpeertube.org/en</a>
|
|
||||||
and that we bear no responsibility on any other site that may be published.'
|
|
||||||
p7: As you can see, we have gone far beyond what the crowdfunding has funded.
|
|
||||||
And we will continue!<br> For 2019, we plan to add a plugin and theme management
|
|
||||||
system (even though basic at first), playlist management, support for audio
|
|
||||||
files upload and many other features.
|
|
||||||
p8: 'If you also to contribute to the growing of PeerTube, you can participate
|
|
||||||
in its funding here: <a href="https://soutenir.framasoft.org/en">https://soutenir.framasoft.org/en</a>'
|
|
||||||
p9: 'If you have any questions, feel free to use our forum: <a href="https://framacolibri.org/c/peertube">https://framacolibri.org/c/peertube</a>'
|
|
||||||
p10: Thank you and with our best regards,
|
|
||||||
p11: Framasoft
|
|
||||||
newsletter16-10-2018:
|
|
||||||
title: 'PeerTube crowdfunding newsletter #4'
|
|
||||||
date:
|
|
||||||
text: October 16, 2018
|
|
||||||
data: '2018-10-16'
|
|
||||||
text:
|
|
||||||
p1: Hello everyone!
|
|
||||||
p2: We are now in mid-October! As promised, we have just released the first
|
|
||||||
stable version of PeerTube.
|
|
||||||
p3: 'It implements all stretch goals we planned in our crowdfunding: <ul><li>Localization
|
|
||||||
support (as we write these lines, PeerTube is already available in 13 different
|
|
||||||
languages!)</li> <li>Subtitles support</li> <li>Ability to import videos
|
|
||||||
through an URL (YouTube, Vimeo, Dailymotion and many others!)</li> <li>Ability
|
|
||||||
to import a video through a torrent file or a magnet URI</li> <li>RSS feeds,
|
|
||||||
allowing you to track new videos published in all federated PeerTube instances,
|
|
||||||
in a specific PeerTube instance or in a video channel you like. You can
|
|
||||||
also subscribe to comment feeds!</li> <li>A more relevant search, with the
|
|
||||||
ability to set advanced filters (duration, category, tags...)</li> <li>Subscriptions
|
|
||||||
throughout the federation: you can follow your favorite video channels and
|
|
||||||
see all the videos on a dedicated page</li> <li>Redundancy system: a PeerTube
|
|
||||||
instance can help sharing some videos from another instance</li> </ul>'
|
|
||||||
p4: ' We know that feature descriptions are not very amusing, so we have published
|
|
||||||
a few demonstration videos: <ul> <li><a href="https://framatube.org/videos/watch/f57da309-6b92-4fe0-9267-ff8188cc050c">RSS
|
|
||||||
Feeds</a></li> <li><a href="https://framatube.org/videos/watch/dcad56d9-9fe6-45bc-96aa-3d778f6804c1">Torrent
|
|
||||||
import</a></li> <li><a href="https://framatube.org/videos/watch/59d306c0-fc5b-493a-956a-43785693346b">YouTube
|
|
||||||
video import</a></li> <li><a href="https://framatube.org/videos/watch/edd7a468-08d5-4877-b62b-61c5f3f83ceb">Adding
|
|
||||||
subtitles</a></li> <li><a href="https://framatube.org/videos/watch/60c4bea4-6bb2-4fce-8d9f-8a522575419d">Advanced
|
|
||||||
search</a></li> <li><a href="https://framatube.org/videos/watch/8968dbe1-a387-433b-a20f-37fe9f3ca8d5">Video
|
|
||||||
channel subscriptions</a></li> </ul>'
|
|
||||||
p5: "This is the last newsletter regarding the PeerTube crowdfunding. We would\
|
|
||||||
\ like to thank you one more time, for allowing us to greatly improve PeerTube,\
|
|
||||||
\ and therefore to promote a more decentralized web. But the journey does\
|
|
||||||
\ not end here: we will continue to work on the software, and there is still\
|
|
||||||
\ a lot to do to fully free up video streaming. But before anything, we'll\
|
|
||||||
\ take a few days off ;)"
|
|
||||||
p6: We remind you that you can ask questions on <a href="https://framacolibri.org/c/qualite/peertube">the
|
|
||||||
PeerTube forum</a>. You can also contact us directly on <a href="https://contact.framasoft.org">
|
|
||||||
https://contact.framasoft.org</a>.
|
|
||||||
p7: Cheers,<br>Framasoft
|
|
||||||
newsletter12-09-2018:
|
|
||||||
title: 'PeerTube crowdfunding newsletter #3'
|
|
||||||
date:
|
|
||||||
text: September 12, 2018
|
|
||||||
data: '2018-09-12'
|
|
||||||
text:
|
|
||||||
p1: Hello everyone!
|
|
||||||
p2: A month before the version 1 of PeerTube, we would like to share some
|
|
||||||
(good!) news with you.
|
|
||||||
p3: We just released PeerTube <em>beta 12</em>, that allows to subscribe to
|
|
||||||
video channels, whether they are on your instance or even on remote instances.
|
|
||||||
This way, you can browse videos of your subscribed channels in a dedicated
|
|
||||||
page. Moreover, if your PeerTube administrator allows it, you can search
|
|
||||||
a channel or a video directly by typing their web address in the PeerTube
|
|
||||||
search bar.
|
|
||||||
p4: It was not included in the crowdfunding, but we created an "Overview"
|
|
||||||
page, that displays videos of some categories/tags/channels picked randomly,
|
|
||||||
to show the diversity of the videos uploaded on PeerTube. You can see <a
|
|
||||||
href="https://peertube3.cpy.re/videos/overview">a demonstration here</a>.
|
|
||||||
p5: You can read the complete <em>beta 12</em> changelog <a href="https://github.com/Chocobozzz/PeerTube/blob/develop/CHANGELOG.md#v100-beta12">here</a>.
|
|
||||||
p6: "Regarding the crowdfunding, most of the rewards are ready: <a href=\"\
|
|
||||||
https://github.com/Chocobozzz/PeerTube\">the PeerTube README</a> and <a\
|
|
||||||
\ href=\"https://joinpeertube.org/fr/hall-of-fame/\">the JoinPeerTube Hall\
|
|
||||||
\ of Fame</a> show off the names of the persons who have chosen the corresponding\
|
|
||||||
\ rewards. We will soon be able to send the personalized thank-you digital\
|
|
||||||
\ arts to people that gave 80€ (~93 USD) and more (and it's so beautiful\
|
|
||||||
\ that we are looking forward to it!)"
|
|
||||||
p7: The last feature we have to implement is the videos redundancy between
|
|
||||||
instances, which will further increase resilience on instance overload.
|
|
||||||
If all goes well, we should finish it in about two weeks (end of september).
|
|
||||||
p8: We remind you that you can track the progress of the work directly <a
|
|
||||||
href="https://github.com/Chocobozzz/PeerTube"> on the git repository</a>,
|
|
||||||
and be part of the discussions/bug reports/feature requests in the "Issues"
|
|
||||||
tab.
|
|
||||||
p9: Moreover, you can ask questions on <a href="https://framacolibri.org/c/qualite/peertube">the
|
|
||||||
PeerTube forum</a>. You can also contact us directly on <a href="https://contact.framasoft.org">https://contact.framasoft.org.</a>
|
|
||||||
p10: Cheers,<br>Framasoft
|
|
||||||
newsletter20-08-2018:
|
|
||||||
title: 'PeerTube crowdfunding newsletter #2'
|
|
||||||
date:
|
|
||||||
text: August 20, 2018
|
|
||||||
data: '2018-08-20'
|
|
||||||
text:
|
|
||||||
p1: Hello everyone!
|
|
||||||
p2: The development of the crowdfunding features is going well.
|
|
||||||
p3: As a reminder, in the first newsletter (July 23rd, 2018), we announced
|
|
||||||
that the localization system and RSS feeds were implemented, and that we
|
|
||||||
were making progress on the subtitles support and the advanced search.
|
|
||||||
p4: These four features are all implemented, and can already be used on instances
|
|
||||||
updated to version <em>v1.0.0-beta.10</em> (for example <a href="https://framatube.org">https://framatube.org</a>).
|
|
||||||
Regarding the subtitles support, you can test them on the <a href="https://framatube.org/videos/watch/217eefeb-883d-45be-b7fc-a788ad8507d3">
|
|
||||||
the "What is PeerTube"</a> video.
|
|
||||||
p5: We are currently finishing the video import system, from a URL (YouTube,
|
|
||||||
Vimeo etc) or a torrent file. This feature should be available in a few
|
|
||||||
days, when we will release a new version (<em>v1.0.0-beta.11</em>).<br>
|
|
||||||
The import system will complete the first crowdfunding goal. The next feature
|
|
||||||
we will be working on will be the user subscriptions.
|
|
||||||
p6: We remind you that you can track the progress of the work directly <a
|
|
||||||
href="https://github.com/Chocobozzz/PeerTube"> on the git repository</a>,
|
|
||||||
and be part of the discussions/bug reports/feature requests in the "Issues"
|
|
||||||
tab.
|
|
||||||
p7: Moreover, you can ask questions on <a href="https://framacolibri.org/c/qualite/peertube">the
|
|
||||||
PeerTube forum</a>. You can also contact us directly on <a href="https://contact.framasoft.org">https://contact.framasoft.org.</a>
|
|
||||||
p8: Cheers,<br>Framasoft
|
|
||||||
newsletter23-07-2018:
|
|
||||||
title: 'PeerTube crowdfunding newsletter #1'
|
|
||||||
date:
|
|
||||||
text: July 23, 2018
|
|
||||||
data: '2018-07-23'
|
|
||||||
text:
|
|
||||||
p1: Hello everyone!
|
|
||||||
p2: First of all, thank you again for contributing to PeerTube! ❤️
|
|
||||||
p3: "During the crowdfunding campaign, we continued to work on the localization\
|
|
||||||
\ system. And we are happy to announce it's finally completed: it will be\
|
|
||||||
\ available in the next beta (<em>beta 10</em>) of PeerTube. As of this\
|
|
||||||
\ writing, the web interface is already available in english, french, basque,\
|
|
||||||
\ catalan, czech and esperanto (huge thank you to <a href=\"https://github.com/Chocobozzz/PeerTube/blob/develop/CREDITS.md#translations\"\
|
|
||||||
> all of the translators</a>). If you too want to help translating PeerTube,\
|
|
||||||
\ do not hesitate to check out <a href=\"https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/translation.md\"\
|
|
||||||
>the documentation</a>!"
|
|
||||||
p4: Regarding the RSS feeds feature, it was already implemented by <a href="https://github.com/rigelk">Rigelk</a>
|
|
||||||
and you can already use it in the <em>beta 9</em>. You can, for example,
|
|
||||||
get <a href="https://framatube.org/feeds/videos.xml?sort=-publishedAt&filter=local">
|
|
||||||
the feed of the last local videos uploaded in a particular instance</a>.
|
|
||||||
p5: Subtitles support is well under way, and we should have a first version
|
|
||||||
available soon. When this work is finished, we will develop the advanced
|
|
||||||
search.
|
|
||||||
p6: We remind you that you can track the progress of the work directly <a
|
|
||||||
href="https://github.com/Chocobozzz/PeerTube"> on the git repository</a>,
|
|
||||||
and be part of the discussions/bug reports/feature requests in the "Issues"
|
|
||||||
tab.
|
|
||||||
p7: Moreover, you can ask questions on <a href="https://framacolibri.org/c/qualite/peertube">the
|
|
||||||
PeerTube forum</a>. You can also contact us directly on <a href="https://contact.framasoft.org">https://contact.framasoft.org.</a>
|
|
||||||
p8: Cheers,<br>Framasoft
|
|
269
app/locales/en/news.yml
Normal file
|
@ -0,0 +1,269 @@
|
||||||
|
title: What’s up on PeerTube
|
||||||
|
subtitle: Discover the tool’s latest improvements
|
||||||
|
latest-articles: Latest articles
|
||||||
|
blocs:
|
||||||
|
19-09-25:
|
||||||
|
title: PeerTube 1.4 is out!
|
||||||
|
date: September 25, 2019
|
||||||
|
text:
|
||||||
|
p1:
|
||||||
|
- Hi everybody,
|
||||||
|
- Peertube 1.4 just came out! Here’s a quick overview of what’s new…
|
||||||
|
h4a: Plug-in system
|
||||||
|
p2:
|
||||||
|
- 'Since PeerTube’s launch, we have been aware that every administrator and user wishes to see the software fulfill their needs. As Framasoft cannot and will not develop every feature that could be hoped for, we have from the start of the project planned on creating a plug-in system.'
|
||||||
|
- 'We are pleased to announce that the foundation stones of this system have been laid in this 1.4 release! It might be very basic for now, but we plan on improving it bit by bit in Peertube’s future releases.'
|
||||||
|
- 'Now, this system allows each administrator to <b>create specific plug-ins</b> depending on their needs. They may install extensions created by other people on their instance as well. For example, it is now possible to install community created graphical themes to change the instance visual interface.'
|
||||||
|
h4b: A better interface
|
||||||
|
p3:
|
||||||
|
- 'We strive to improve PeerTube’s interface by collecting users’ opinions so that we know what is causing them trouble (in terms of understanding and usability for example). Even though this is a time-consuming undertaking, this new release already offers you a few modifications.'
|
||||||
|
- 'First of all, we realized that most people who discover PeerTube have a hard time understanding <b>the difference between a channel and an account</b>. Indeed, on others video broadcasting services (such as YouTube) these two things are pretty much the same.'
|
||||||
|
- 'However, on PeerTube each account is linked to one or multiple channels that can be named as the users sees fit. You also have to create at least one channel when creating an account. Once the channels have been created, users can upload videos to each channel to organize their contents (for example, you could have a channel about cooking and another one about biking).'
|
||||||
|
- <figure>
|
||||||
|
<img src="@:data.baseurl/img/@:lang/channel.png" alt="">
|
||||||
|
<figcaption>2 channels on Framasoft’s account on Framatube instance</figcaption>
|
||||||
|
</figure>
|
||||||
|
- 'In order to make this channel idea more understandable, we have changed the sign-up form, which from now on consists of two steps:'
|
||||||
|
ul:
|
||||||
|
- 'Step 1: account creation (choosing your username, password, email, etc.)'
|
||||||
|
- 'Step 2: choosing your default channel name via a new form'
|
||||||
|
p-img-signup:
|
||||||
|
- <figure>
|
||||||
|
<img src="@:data.baseurl/img/@:lang/account-creation.png" alt="" />
|
||||||
|
<figcaption>the new sign-up form in 2 steps</figcaption>
|
||||||
|
</figure>'
|
||||||
|
ul2:
|
||||||
|
- 'We also aimed to differentiate a channel homepage from that of an account. These two pages used to list videos, whereas now the account homepage lists all the channel linked to the account by showing under each channel name the thumbnail from the last videos uploaded on it.'
|
||||||
|
- 'Another unclear element was the <b>video sharing pop-up</b>. We have improved it, and it is now possible to share or embed a video by making it start and/or finish at a precise moment (time-code feature), to decide which subtitles will appear by default, and to loop the video. These new options will surely be greatly enjoyed.'
|
||||||
|
p-img-share:
|
||||||
|
- <figure>
|
||||||
|
<img src="@:data.baseurl/img/@:lang/share-popup.png" alt="">
|
||||||
|
<figcaption>customization options when video sharing</figcaption>
|
||||||
|
</figure>
|
||||||
|
h4c: More features
|
||||||
|
p4:
|
||||||
|
- 'Our wonderful community of translators is once again to thank for their work, after they enriched PeerTube with <b>3 new languages</b>: Finnish, Greek and Scottish Gaelic, making PeerTube now available in 22 languages.'
|
||||||
|
- 'We also added a new feature allowing you to <b>upload an audio file</b> directly to PeerTube: the software will automatically create a video from the audio file. This much awaited for feature should make life easier for music makers :)'
|
||||||
|
- 'This new release includes many other improvements. You can see the complete list on <a href="@:data.link.gitPT/releases/tag/v1.4.0">@:data.link.gitPT/releases/tag/v1.4.0</a>.'
|
||||||
|
- 'Thanks to all PeerTube contributors!<br>Framasoft'
|
||||||
|
19-06-05:
|
||||||
|
title: PeerTube 1.3 is out!
|
||||||
|
date: June 5, 2019
|
||||||
|
text:
|
||||||
|
p:
|
||||||
|
- Hello!
|
||||||
|
- We’ve just released PeerTube 1.3 and it brings a lot of new features.
|
||||||
|
- 'The most important of these new features is <strong>the playlist system</strong>.
|
||||||
|
This feature allows any user to create a playlist in which it’s possible
|
||||||
|
to add videos and reorder them. Videos added to a playlist can be viewed
|
||||||
|
entirely or partially: the creator of the playlist can decide when the
|
||||||
|
video playback starts and/or ends (timecode system). This system is really
|
||||||
|
useful to create all kinds of zappings or educational contents by selecting
|
||||||
|
extracts from videos which interest you. In addition, a “Watch Later”
|
||||||
|
playlist is created by default for each user. Thus, you can save videos
|
||||||
|
in this playlist when you don’t have time to watch them immediately.'
|
||||||
|
- 'Another feature of this 1.3 version has been entirely developed by an
|
||||||
|
external contributor: <a href="https://github.com/joshmorel">Josh Morel</a>
|
||||||
|
who add <strong>a quarantine system</strong> for videos on PeerTube. If
|
||||||
|
the administrator of an instance enables this feature, any new video uploaded
|
||||||
|
on his instance will automatically be hidden until a moderator approves
|
||||||
|
it.'
|
||||||
|
- 'PeerTube translation community have done a huge job. <strong>3 new languages</strong>
|
||||||
|
are now available: Japanese, Dutch and European Portuguese (PeerTube already
|
||||||
|
support Brazilian Portuguese). Amazing! PeerTube is now available in 19
|
||||||
|
languages!'
|
||||||
|
- Now, administrators can <strong>manage more finely how other instances
|
||||||
|
subscribe to their own instance</strong>. The administrator can decide whether
|
||||||
|
or not to approve the subscription of another instance to its own. It is
|
||||||
|
also possible to activate automatic rejection for any new subscription to
|
||||||
|
its instance. Finally, a notification is created as soon as the administrator’s
|
||||||
|
instance receives a new subscription. These features help administrators
|
||||||
|
control on which instances their content is displayed.
|
||||||
|
- We’re also redesigning the <strong>PeerTube video player</strong> to offer
|
||||||
|
better video playback and to correct a few bugs. With this new player, resolution
|
||||||
|
changes should be smoother and the bandwidth management is optimized with
|
||||||
|
a more efficient buffering system. Version 1.3 of PeerTube also adds ability
|
||||||
|
for administrators to enable this new experimental player so we can get
|
||||||
|
feedback on it. We hope to use this new player by default in the future.
|
||||||
|
- Finally, we have made some adjustments to the <strong>user interface</strong>
|
||||||
|
so it easier and nicer to use. For instance, video thumbnails are becoming
|
||||||
|
bigger so that they’re more highlighted. Users now have a quick access to
|
||||||
|
their library from the menu that includes their playlists, videos, video
|
||||||
|
watching history and their subscriptions.
|
||||||
|
- Many other improvements have been made in this new version. You can see
|
||||||
|
the complete list on <a href="@:data.link.gitPT/releases/tag/v1.3.0">@:data.link.gitPT/releases/tag/v1.3.0</a>.
|
||||||
|
- Thanks to all PeerTube contributors!<br>Framasoft.
|
||||||
|
19-02-26:
|
||||||
|
title: 'PeerTube: retrospective, new features and more to come!'
|
||||||
|
date: February 26, 2019
|
||||||
|
text:
|
||||||
|
p:
|
||||||
|
- Since version 1.0 has been released last November, we went on improving
|
||||||
|
PeerTube, day after day. These improvements on PeerTube go well beyond the
|
||||||
|
objectives fixed during the crowdfunding. They have been funded by the <a
|
||||||
|
href="@:data.link.soft">Framasoft non-profit</a>, which develops
|
||||||
|
the software (and lives only through <a href="@:data.link.soutenir">your
|
||||||
|
donations</a>).
|
||||||
|
- 'Here is a small retrospective of the end of 2018/beginning of 2019:'
|
||||||
|
- In December 2018, we released version 1.1 which contained some moderation
|
||||||
|
tools requested by instance administrators.<br> We also took the opportunity
|
||||||
|
to add a watched videos history feature and the automatic resuming of video
|
||||||
|
playback.
|
||||||
|
- 'In January, we released version 1.2 that supports 3 new languages: Russian,
|
||||||
|
Polish and Italian. Thanks to PeerTube’s community of translators, PeerTube
|
||||||
|
is now translated into 16 different languages!'
|
||||||
|
- This version also includes a notification system that allows users to
|
||||||
|
be informed (on the web interface or through email) when their video is
|
||||||
|
commented, when someone mention them, when one of their subscriptions has
|
||||||
|
published a new video, etc.
|
||||||
|
- 'In the meantime, the PeerTube federation has grown: today, more than
|
||||||
|
300 instances broadcast more than 70,000 videos, with nearly 2 million cumulated
|
||||||
|
views. We remind you that the only official website we maintain around PeerTube
|
||||||
|
is <a href="@:data.baseurl">@:data.baseurl</a>
|
||||||
|
and that we bear no responsibility on any other site that may be published.'
|
||||||
|
- As you can see, we have gone far beyond what the crowdfunding has funded.
|
||||||
|
And we will continue!<br> For 2019, we plan to add a plugin and theme management
|
||||||
|
system (even though basic at first), playlist management, support for audio
|
||||||
|
files upload and many other features.
|
||||||
|
- 'If you also to contribute to the growing of PeerTube, you can participate
|
||||||
|
in its funding here: @:data.html.soutenir'
|
||||||
|
- 'If you have any questions, feel free to use <a href="@:link.forumPT">our forum</a>.'
|
||||||
|
- Thank you and with our best regards,<br>Framasoft
|
||||||
|
18-10-16:
|
||||||
|
title: 'PeerTube crowdfunding newsletter #4'
|
||||||
|
date: October 16, 2018
|
||||||
|
text:
|
||||||
|
p1:
|
||||||
|
- Hello everyone!
|
||||||
|
- We are now in mid-October! As promised, we have just released the first
|
||||||
|
stable version of PeerTube.
|
||||||
|
- 'It implements all stretch goals we planned in our crowdfunding:'
|
||||||
|
ul1:
|
||||||
|
- Localization support (as we write these lines, PeerTube is already available in 13 different
|
||||||
|
languages!)
|
||||||
|
- Subtitles support
|
||||||
|
- Ability to import videos
|
||||||
|
through an URL (YouTube, Vimeo, Dailymotion and many others!)
|
||||||
|
- Ability
|
||||||
|
to import a video through a torrent file or a magnet URI
|
||||||
|
- RSS feeds,
|
||||||
|
allowing you to track new videos published in all federated PeerTube instances,
|
||||||
|
in a specific PeerTube instance or in a video channel you like. You can
|
||||||
|
also subscribe to comment feeds!
|
||||||
|
- A more relevant search, with the
|
||||||
|
ability to set advanced filters (duration, category, tags…)
|
||||||
|
- 'Subscriptions throughout the federation: you can follow your favorite video channels and
|
||||||
|
see all the videos on a dedicated page'
|
||||||
|
- 'Redundancy system: a PeerTube
|
||||||
|
instance can help sharing some videos from another instance'
|
||||||
|
p2:
|
||||||
|
- ' We know that feature descriptions are not very amusing, so we have published
|
||||||
|
a few demonstration videos:'
|
||||||
|
ul2:
|
||||||
|
- <a href="@:data.video.rss">RSS Feeds</a>
|
||||||
|
- <a href="@:data.video.torrent">Torrent import</a>
|
||||||
|
- <a href="@:data.video.yt-import">YouTube video import</a>
|
||||||
|
- <a href="@:data.video.subtitle">Adding subtitles</a>
|
||||||
|
- <a href="@:data.video.search">Advanced search</a>
|
||||||
|
- <a href="@:data.video.subscription">Video channel subscriptions</a>
|
||||||
|
p3:
|
||||||
|
- 'This is the last newsletter regarding the PeerTube crowdfunding. We would
|
||||||
|
like to thank you one more time, for allowing us to greatly improve PeerTube,
|
||||||
|
and therefore to promote a more decentralized web. But the journey does
|
||||||
|
not end here: we will continue to work on the software, and there is still
|
||||||
|
a lot to do to fully free up video streaming. But before anything, we’ll
|
||||||
|
take a few days off ;)'
|
||||||
|
- We remind you that you can ask questions on <a href="@:link.forumPT">the
|
||||||
|
PeerTube forum</a>. You can also contact us directly on @:data.hlink.contact</>.
|
||||||
|
- Cheers,<br>Framasoft
|
||||||
|
18-09-12:
|
||||||
|
title: 'PeerTube crowdfunding newsletter #3'
|
||||||
|
date: September 12, 2018
|
||||||
|
text:
|
||||||
|
p:
|
||||||
|
- Hello everyone!
|
||||||
|
- A month before the version 1 of PeerTube, we would like to share some
|
||||||
|
(good!) news with you.
|
||||||
|
- We just released PeerTube <em>beta 12</em>, that allows to subscribe to
|
||||||
|
video channels, whether they are on your instance or even on remote instances.
|
||||||
|
This way, you can browse videos of your subscribed channels in a dedicated
|
||||||
|
page. Moreover, if your PeerTube administrator allows it, you can search
|
||||||
|
a channel or a video directly by typing their web address in the PeerTube
|
||||||
|
search bar.
|
||||||
|
- It was not included in the crowdfunding, but we created an “Overview”
|
||||||
|
page, that displays videos of some categories/tags/channels picked randomly,
|
||||||
|
to show the diversity of the videos uploaded on PeerTube. You can see <a
|
||||||
|
href="https://peertube3.cpy.re/videos/overview">a demonstration here</a>.
|
||||||
|
- You can read the complete <em>beta 12</em> changelog <a href="@:data.link.gitPT/blob/develop/CHANGELOG.md#v100-beta12">here</a>.
|
||||||
|
- 'Regarding the crowdfunding, most of the rewards are ready: <a href="
|
||||||
|
@:data.link.gitPT">the PeerTube README</a> and <a
|
||||||
|
href="@:data.baseurl/hall-of-fame">the JoinPeerTube Hall
|
||||||
|
of Fame</a> show off the names of the persons who have chosen the corresponding
|
||||||
|
rewards. We will soon be able to send the personalized thank-you digital
|
||||||
|
arts to people that gave 80€ (~93 USD) and more (and it’s so beautiful
|
||||||
|
that we are looking forward to it!)'
|
||||||
|
- The last feature we have to implement is the videos redundancy between
|
||||||
|
instances, which will further increase resilience on instance overload.
|
||||||
|
If all goes well, we should finish it in about two weeks (end of september).
|
||||||
|
- We remind you that you can track the progress of the work directly <a
|
||||||
|
href="@:data.link.gitPT"> on the git repository</a>,
|
||||||
|
and be part of the discussions/bug reports/feature requests in the “Issues”
|
||||||
|
tab.
|
||||||
|
- Moreover, you can ask questions on <a href="@:link.forumPT">the
|
||||||
|
PeerTube forum</a>. You can also contact us directly on @:data.hlink.contact</>.
|
||||||
|
- Cheers,<br>Framasoft
|
||||||
|
18-08-20:
|
||||||
|
title: 'PeerTube crowdfunding newsletter #2'
|
||||||
|
date: August 20, 2018
|
||||||
|
text:
|
||||||
|
p:
|
||||||
|
- Hello everyone!
|
||||||
|
- The development of the crowdfunding features is going well.
|
||||||
|
- As a reminder, in the first newsletter (July 23rd, 2018), we announced
|
||||||
|
that the localization system and RSS feeds were implemented, and that we
|
||||||
|
were making progress on the subtitles support and the advanced search.
|
||||||
|
- These four features are all implemented, and can already be used on instances
|
||||||
|
updated to version <em>v1.0.0-beta.10</em> (for example @:data.html.tube).
|
||||||
|
Regarding the subtitles support, you can test them on the <a href="https://framatube.org/videos/watch/217eefeb-883d-45be-b7fc-a788ad8507d3">
|
||||||
|
the “What is PeerTube”</a> video.
|
||||||
|
- We are currently finishing the video import system, from a URL (YouTube,
|
||||||
|
Vimeo etc) or a torrent file. This feature should be available in a few
|
||||||
|
days, when we will release a new version (<em>v1.0.0-beta.11</em>).<br>
|
||||||
|
The import system will complete the first crowdfunding goal. The next feature
|
||||||
|
we will be working on will be the user subscriptions.
|
||||||
|
- We remind you that you can track the progress of the work directly <a
|
||||||
|
href="@:data.link.gitPT"> on the git repository</a>,
|
||||||
|
and be part of the discussions/bug reports/feature requests in the “Issues”
|
||||||
|
tab.
|
||||||
|
- Moreover, you can ask questions on <a href="@:link.forumPT">the
|
||||||
|
PeerTube forum</a>. You can also contact us directly on @:data.hlink.contact</>.
|
||||||
|
- Cheers,<br>Framasoft
|
||||||
|
18-07-23:
|
||||||
|
title: 'PeerTube crowdfunding newsletter #1'
|
||||||
|
date: July 23, 2018
|
||||||
|
text:
|
||||||
|
p:
|
||||||
|
- Hello everyone!
|
||||||
|
- First of all, thank you again for contributing to PeerTube! ❤️
|
||||||
|
- 'During the crowdfunding campaign, we continued to work on the localization
|
||||||
|
system. And we are happy to announce it’s finally completed: it will be
|
||||||
|
available in the next beta (<em>beta 10</em>) of PeerTube. As of this
|
||||||
|
writing, the web interface is already available in english, french, basque,
|
||||||
|
catalan, czech and esperanto (huge thank you to <a href="@:data.link.gitPT/blob/develop/CREDITS.md#translations"
|
||||||
|
> all of the translators</a>). If you too want to help translating PeerTube,
|
||||||
|
do not hesitate to check out <a href="@:data.link.gitPT/blob/develop/support/doc/translation.md"
|
||||||
|
>the documentation</a>!'
|
||||||
|
- Regarding the RSS feeds feature, it was already implemented by <a href="https://github.com/rigelk">Rigelk</a>
|
||||||
|
and you can already use it in the <em>beta 9</em>. You can, for example,
|
||||||
|
get <a href="https://framatube.org/feeds/videos.xml?sort=-publishedAt&filter=local">
|
||||||
|
the feed of the last local videos uploaded in a particular instance</a>.
|
||||||
|
- Subtitles support is well under way, and we should have a first version
|
||||||
|
available soon. When this work is finished, we will develop the advanced
|
||||||
|
search.
|
||||||
|
- We remind you that you can track the progress of the work directly <a
|
||||||
|
href="@:data.link.gitPT"> on the git repository</a>,
|
||||||
|
and be part of the discussions/bug reports/feature requests in the "Issues"
|
||||||
|
tab.
|
||||||
|
- Moreover, you can ask questions on <a href="https://framacolibri.org/c/qualite/peertube">the
|
||||||
|
PeerTube forum</a>. You can also contact us directly on @:data.hlink.contact</>.
|
||||||
|
- Cheers,<br>Framasoft
|
|
@ -492,315 +492,4 @@ hof:
|
||||||
donators: Donateurs
|
donators: Donateurs
|
||||||
dev: Contributeurs
|
dev: Contributeurs
|
||||||
contrib: Contribuer au code
|
contrib: Contribuer au code
|
||||||
news:
|
|
||||||
title: Quoi de neuf sur PeerTube ?
|
|
||||||
subtitle: Découvrez les dernières améliorations de l’outil
|
|
||||||
latest-articles: Derniers articles
|
|
||||||
blocs:
|
|
||||||
newsletter25-09-2019:
|
|
||||||
title: La version 1.4 de PeerTube vient tout juste de sortir !
|
|
||||||
date:
|
|
||||||
text: 25 Septembre 2019
|
|
||||||
data: '2019-09-25'
|
|
||||||
text:
|
|
||||||
p1: Bonjour à toutes et à tous,
|
|
||||||
p2: La dernière version de PeerTube est sortie ! Petit tour d’horizon de ce qu’elle apporte...
|
|
||||||
h4a: Un système de plugins
|
|
||||||
p3:
|
|
||||||
- 'Depuis le lancement de PeerTube, nous sommes conscient⋅es que chaque administrateur⋅ice et utilisateur⋅ice de PeerTube souhaite que le logiciel soit le plus adapté à ses besoins. Parce que Framasoft ne peut et ne souhaite pas développer toutes les fonctionnalités souhaitées par les un⋅es et les autres, nous avons, dès l’origine du projet, prévu la création d’un système de plugins.'
|
|
||||||
- 'Nous avons donc le plaisir de vous annoncer que les premières pierres de ce système ont été posées dans cette version 1.4 ! Celui-ci est pour l’instant très basique mais nous prévoyons de l’améliorer petit à petit dans les futures versions de PeerTube.'
|
|
||||||
- 'Avec ce système, chaque administrateur⋅ice peut dorénavant <b>créer des plugins spécifiques</b> en fonction de ses besoins. Mais iel peut aussi installer des extensions créées par d’autres personnes sur son instance. Par exemple, il est possible d’installer des thèmes graphiques créés par la communauté pour changer l’interface visuelle d’une instance.'
|
|
||||||
h4b: Des améliorations de l’interface
|
|
||||||
p4:
|
|
||||||
- 'Nous essayons continuellement d’améliorer l’interface de PeerTube en récoltant les avis des utilisateur⋅ices afin de savoir ce qui leur pose des problèmes (de compréhension ou d’utilisabilité par exemple). C’est un chantier qui prend du temps, mais cette nouvelle version vous propose déjà quelques modifications.'
|
|
||||||
- 'Tout d’abord, nous avons constaté que la plupart des personnes qui découvrent PeerTube ont du mal à comprendre <b>la différence entre une chaîne et un compte</b>. En effet, sur les autres services de diffusion de vidéos (YouTube par exemple) ces deux éléments sont globalement les mêmes.'
|
|
||||||
- 'Or sur PeerTube, chaque compte possède une ou plusieurs chaînes que l’on peut nommer comme on le souhaite. Il y a d’ailleurs une obligation de créer au minimum une chaîne lors de la création d’un compte. Une fois les chaînes créées, les utilisateur⋅ices peuvent <i>uploader</i> des vidéos sur chacune d’entre elles afin d’organiser leurs contenus (on peut donc avoir une chaîne où on diffuse des vidéos de cuisine et une autre où parle de vélo par exemple).'
|
|
||||||
- <a href="@:data.link.joinpeertube/img/channel.png" target="_blank">
|
|
||||||
<img src="@:data.link.joinpeertube/img/channel.png" alt="" />
|
|
||||||
</a>
|
|
||||||
<figure>
|
|
||||||
<img src="@:data.link.joinpeertube/img/channel.png" alt="">
|
|
||||||
<figcaption>Sur le compte Framasoft de l’instance Framatube, 2 chaînes sont accessibles</figcaption>
|
|
||||||
</figure>
|
|
||||||
- 'Pour rendre plus compréhensible ce concept de chaîne, nous avons modifié le formulaire d’inscription en y proposant dorénavant 2 étapes :'
|
|
||||||
ul:
|
|
||||||
- 'À l’étape 1, on crée son compte (on spécifie son nom d’utilisateur⋅ice, son mot de passe, son email, etc.)'
|
|
||||||
- 'À l’étape 2, on spécifie le nom de sa chaîne par défaut via un nouveau formulaire'
|
|
||||||
- <a href="@:data.link.joinpeertube/img/account-creation.png" target="_blank">
|
|
||||||
<img src="@:data.link.joinpeertube/img/account-creation.png" alt="" />
|
|
||||||
</a>
|
|
||||||
<figure>
|
|
||||||
<img src="@:data.link.joinpeertube/img/account-creation.png" alt="" />
|
|
||||||
<figcaption>les 2 étapes du nouveau formulaire d’inscription</figcaption>
|
|
||||||
</figure>
|
|
||||||
- 'Nous avons aussi essayé de différencier la page d’accueil d’une chaîne de celle d’un compte. Avant, ces deux pages listaient des vidéos alors que maintenant la page d’accueil du compte liste toutes les chaînes de celui-ci en présentant sous chaque nom de chaîne les miniatures des dernières vidéos <i>uploadées</i>.'
|
|
||||||
- 'Un autre élément peu clair était <b>la fenêtre (pop-up) qui s’ouvrait lorsqu’on souhaitait partager une vidéo</b>. Nous l’avons améliorée et il est ainsi possible de partager ou d’intégrer une vidéo en la faisant commencer et/ou terminer à un moment précis (système de time-code), de spécifier des sous-titres par défaut ou de jouer la vidéo en boucle. Ces nouvelles options devraient être très appréciées.'
|
|
||||||
- <a href="@:data.link.joinpeertube/img/share-popup.png" target="_blank">
|
|
||||||
<img src="@:data.link.joinpeertube/img/share-popup.png" alt="" />
|
|
||||||
</a>
|
|
||||||
<figure>
|
|
||||||
<img src="@:data.link.joinpeertube/img/share-popup.png" alt="">
|
|
||||||
<figcaption>options de personnalisation lors du partage d’une vidéo</figcaption>
|
|
||||||
</figure>
|
|
||||||
h4c: Et aussi
|
|
||||||
p5:
|
|
||||||
- 'Toujours grâce à notre formidable communauté de traducteur⋅ices, cette nouvelle version de PeerTube se voit augmentée de <b>3 nouvelles langues</b> : le finlandais, le grec et le gaélique écossais. PeerTube est donc dorénavant accessible en 22 langues.'
|
|
||||||
- 'Nous avons ajouté la possibilité d’<b><i>uploader</i> un fichier audio</b> directement sur PeerTube : le logiciel s’occupe de créer automatiquement une vidéo à partir du fichier audio. Cette fonctionnalité demandée depuis longtemps devrait faciliter la vie des créatrices et créateurs de musique :)'
|
|
||||||
- Beaucoup d’autres améliorations ont été apportées dans cette nouvelle version. Vous pouvez voir la liste complète (en anglais) sur <a href="https://github.com/Chocobozzz/PeerTube/releases/tag/v1.4.0">https://github.com/Chocobozzz/PeerTube/releases/tag/v1.4.0</a>.
|
|
||||||
p6: Merci à tou⋅tes les contributeur⋅ices de PeerTube !
|
|
||||||
p7: Framasoft
|
|
||||||
newsletter05-06-2019:
|
|
||||||
title: PeerTube 1.3 est là !
|
|
||||||
date:
|
|
||||||
text: 5 Juin 2019
|
|
||||||
data: '2019-06-05'
|
|
||||||
text:
|
|
||||||
p1: Bonjour à toutes et à tous,
|
|
||||||
p2: Nous venons tout juste de sortir la version 1.3 de PeerTube qui apporte
|
|
||||||
tout un tas de nouveautés.
|
|
||||||
p3: "La plus importante de ces nouveautés est <strong>le système de listes\
|
|
||||||
\ de lecture</strong> (ou playlists). Cette fonctionnalité permet à n’importe\
|
|
||||||
\ quel⋅le utilisateur⋅ice de créer une liste de lecture, puis d’y ajouter\
|
|
||||||
\ des vidéos et de les ordonner. Les vidéos ajoutées au sein d’une liste\
|
|
||||||
\ de lecture peuvent être visionnées dans leur intégralité ou en partie\
|
|
||||||
\ : le créateur de la liste de lecture peut décider à quel moment de la\
|
|
||||||
\ vidéo le visionnage commence et/ou se termine. Ce système est vraiment\
|
|
||||||
\ pratique pour créer des sortes de zappings ou du contenu pédagogique en\
|
|
||||||
\ sélectionnant les extraits des vidéos qui vous intéressent. De plus, une\
|
|
||||||
\ liste de lecture \"À regarder plus tard\" est créée par défaut pour chaque\
|
|
||||||
\ utilisateur⋅ice leur permettant d’enregistrer dans cette liste de lecture\
|
|
||||||
\ les vidéos qu'ielles n'ont pas le temps de regarder immédiatement."
|
|
||||||
p4: "Une autre des fonctionnalités de cette version 1.3 a été entièrement\
|
|
||||||
\ développée par un contributeur externe : <a href=\"https://github.com/joshmorel\"\
|
|
||||||
>Josh Morel</a>. Cela permet d'ajouter à PeerTube un <strong>système de\
|
|
||||||
\ quarantaine pour les vidéos</strong>. Si l’administrateur de l'instance\
|
|
||||||
\ active cette fonctionnalité, toute nouvelle vidéo téléversée sur son instance\
|
|
||||||
\ sera automatiquement rendue non-visible en attendant qu’un modérateur\
|
|
||||||
\ l'approuve ou non."
|
|
||||||
p5: 'Les traducteurs de PeerTube ont aussi fait un énorme travail car <strong>3
|
|
||||||
nouvelles langues</strong> sont désormais disponibles : le japonais, le
|
|
||||||
néerlandais et le portugais européen (l’interface supportait déjà le portugais
|
|
||||||
brésilien). A ce jour, PeerTube est donc disponible en 19 langues !'
|
|
||||||
p6: "Les administrateurs peuvent maintenant <strong>gérer plus finement les\
|
|
||||||
\ autres instances s’abonnant à leur instance</strong> : un administrateur\
|
|
||||||
\ peut décider d'approuver ou non l'abonnement d'une autre instance à la\
|
|
||||||
\ sienne. Il est aussi possible d'activer le refus automatique tout nouvel\
|
|
||||||
\ abonnement à son instance. Enfin, une notification est créée dès que son\
|
|
||||||
\ instance reçoit un nouvel abonnement. Ces fonctionnalités permettent à\
|
|
||||||
\ chaque administrateur de maîtriser plus facilement la diffusion des contenus\
|
|
||||||
\ mis en ligne sur leur instance."
|
|
||||||
p7: Nous sommes aussi en train de retravailler le <strong>lecteur vidéo de
|
|
||||||
PeerTube</strong> afin que la lecture des vidéos soit plus rapide et comporte
|
|
||||||
moins de bugs. Ce nouveau lecteur vidéo permet aussi de rendre plus lisses
|
|
||||||
les changements de définition. Enfin, la gestion de la bande passante est
|
|
||||||
optimisée via un système de mise en mémoire tampon plus performant. Cette
|
|
||||||
version 1.3 de PeerTube permet à l'administrateur d'activer ce nouveau lecteur
|
|
||||||
vidéo expérimental afin pour nous de récolter des retours dessus. Nous espérons
|
|
||||||
dans l’avenir utiliser ce nouveau lecteur vidéo par défaut.
|
|
||||||
p8: Enfin, nous avons fait quelques ajustements au niveau de <strong>l’interface
|
|
||||||
utilisateur⋅ice</strong>, pour qu’elle soit plus agréable/efficace à utiliser.
|
|
||||||
Par exemple, les miniatures ont changé de taille pour être davantage mises
|
|
||||||
en valeur. Les utilisateur⋅ices peuvent désormais accéder rapidement à partir
|
|
||||||
du menu à leur bibliothèque qui comprend leur listes de lecture, leurs vidéos,
|
|
||||||
leur historique de visionnage et leurs abonnements.
|
|
||||||
p9: Beaucoup d'autres améliorations ont été apportées dans cette nouvelle
|
|
||||||
version. Vous pouvez voir la liste complète (en anglais) sur <a href="https://github.com/Chocobozzz/PeerTube/releases/tag/v1.3.0">https://github.com/Chocobozzz/PeerTube/releases/tag/v1.3.0</a>.
|
|
||||||
p10: Merci à tous les contributeurs de PeerTube !
|
|
||||||
p11: Framasoft
|
|
||||||
newsletter26-02-2019:
|
|
||||||
title: "PeerTube : rétrospective et nouvelles fonctionnalités : l'actu de février\
|
|
||||||
\ 2019"
|
|
||||||
date:
|
|
||||||
text: 26 Février 2019
|
|
||||||
data: '2019-02-26'
|
|
||||||
text:
|
|
||||||
p1: Depuis la version 1.0 sortie en novembre dernier, nous avons continué
|
|
||||||
d'<b>améliorer PeerTube jour après jour</b>. Ces avancées de PeerTube, bien
|
|
||||||
au delà des objectifs du crowdfunding, ont été financées par <a href="https://framasoft.org">l'association
|
|
||||||
Framasoft</a>, qui développe le logiciel (et ne vit que par <a href="https://soutenir.framasoft.org">vos
|
|
||||||
dons</a>).
|
|
||||||
p2: <b>Voici une petite rétrospective de la fin d'année 2018/début d'année
|
|
||||||
2019 :</b>
|
|
||||||
p3: En décembre 2018, nous avons sorti la version 1.1 qui contenait certains
|
|
||||||
outils de modération demandés par les administrateurs d'instances.<br> Nous
|
|
||||||
en avons aussi profité pour ajouter une fonctionnalité d'historique de visionnage
|
|
||||||
et de reprise automatique de la lecture des vidéos.
|
|
||||||
p4: "En janvier, nous avons sorti la version 1.2 permettant, grâce à la communauté\
|
|
||||||
\ de traducteurs et traductrices de PeerTube, de proposer 3 nouvelles langues\
|
|
||||||
\ : le russe, le polonais et l'italien. PeerTube est donc désormais traduit\
|
|
||||||
\ en 16 langues différentes !"
|
|
||||||
p5: Cette version comprend aussi un système de notifications permettant aux
|
|
||||||
utilisatrices et utilisateurs de savoir (via l'interface web ou par email)
|
|
||||||
lorsque leur vidéo est commentée, lorsque quelqu'un les mentionne, lorsqu'un
|
|
||||||
de leur abonnement a publié une nouvelle vidéo, etc.
|
|
||||||
p6: "Par ailleurs, la fédération PeerTube s'est développée : aujourd'hui,\
|
|
||||||
\ c'est plus de 300 instances qui diffusent plus de 70 000 vidéos, avec\
|
|
||||||
\ près de 2 millions de vues cumulées. Nous vous rappelons au passage que\
|
|
||||||
\ le seul site officiel que nous maintenons autour de PeerTube est <a href=\"\
|
|
||||||
https://joinpeertube.org\">https://joinpeertube.org</a> et que nous n'avons\
|
|
||||||
\ aucune responsabilité autour de tout autre site qui pourrait voir le jour."
|
|
||||||
p7: Comme vous pouvez le constater, nous sommes allés bien au delà de ce que
|
|
||||||
le crowdfunding avait financé. Et nous allons continuer !<br> Car il est
|
|
||||||
prévu pour l'année 2019 d'ajouter un système de plugins et de thèmes (peu
|
|
||||||
évolué dans un premier temps), une gestion des playlists, la prise en charge
|
|
||||||
de fichiers audio à l'upload et bien d'autres fonctionnalités.
|
|
||||||
p8: "Si vous aussi vous voulez contribuer au développement de PeerTube, n'hésitez\
|
|
||||||
\ pas à participer à son financement : <a href=\"https://soutenir.framasoft.org\"\
|
|
||||||
>https://soutenir.framasoft.org</a>"
|
|
||||||
p9: 'Si vous avez la moindre question, vous pouvez utiliser le forum : <a
|
|
||||||
href="https://framacolibri.org/c/peertube">https://framacolibri.org/c/peertube</a>'
|
|
||||||
p10: Merci et bon début d'année,
|
|
||||||
p11: Framasoft
|
|
||||||
newsletter16-10-2018:
|
|
||||||
title: Newsletter du crowdfunding de PeerTube n°4
|
|
||||||
date:
|
|
||||||
text: 16 Octobre 2018
|
|
||||||
data: '2018-10-16'
|
|
||||||
text:
|
|
||||||
p1: Bonjour à toutes et à tous,
|
|
||||||
p2: Nous voici mi-octobre ! Et comme promis, nous venons de sortir la première
|
|
||||||
version stable de PeerTube.
|
|
||||||
p3: "Elle contient tous les buts que nous avions fixé dans notre crowdfunding:\
|
|
||||||
\ <ul><li>Le support de l'internationalisation (à l'heure où nous écrivons\
|
|
||||||
\ ces lignes, PeerTube est déjà disponible en plus de 13 langues !)</li>\
|
|
||||||
\ <li>Le support des sous-titres</li> <li>La possibilité d'importer des\
|
|
||||||
\ vidéos via une URL (YouTube, Dailymotion, Vimeo et bien d'autres !)</li>\
|
|
||||||
\ <li>La possibilité d'importer une vidéo via un fichier torrent ou un lien\
|
|
||||||
\ Magnet</li> <li>La mise à disposition de flux RSS, vous permettant de\
|
|
||||||
\ suivre les nouvelles vidéos mises en ligne sur l'ensemble des instances\
|
|
||||||
\ PeerTube, sur une instance en particulière ou par une chaîne que appréciez.\
|
|
||||||
\ Vous pouvez aussi vous abonner au flux des commentaires d'une vidéo spécifique</li>\
|
|
||||||
\ <li>La recherche, beaucoup plus pertinente qu'avant et acceptant de nombreux\
|
|
||||||
\ filtres avancés (durée, catégorie, tags...)</li> <li>Les abonnements à\
|
|
||||||
\ travers la fédération, vous laissant la possibilité de suivre vos chaînes\
|
|
||||||
\ vidéos préférées afin de retrouver l'ensemble de leurs vidéos dans un\
|
|
||||||
\ onglet dédié</li> <li>La redondance entre instances PeerTube, où des instances\
|
|
||||||
\ peuvent aider à partager certaines vidéos d'autres instances</li> </ul>"
|
|
||||||
p4: "Nous savons que les descriptions de fonctionnalités ne sont pas toujours\
|
|
||||||
\ très fun, et c'est pour ça que nous vous avons préparé de courtes vidéos\
|
|
||||||
\ de démonstration: <ul> <li><a href=\"https://framatube.org/videos/watch/f57da309-6b92-4fe0-9267-ff8188cc050c\"\
|
|
||||||
>Flux RSS</a></li> <li><a href=\"https://framatube.org/videos/watch/dcad56d9-9fe6-45bc-96aa-3d778f6804c1\"\
|
|
||||||
>Import de torrent</a></li> <li><a href=\"https://framatube.org/videos/watch/59d306c0-fc5b-493a-956a-43785693346b\"\
|
|
||||||
>Import d'une vidéo YouTube</a></li> <li><a href=\"https://framatube.org/videos/watch/edd7a468-08d5-4877-b62b-61c5f3f83ceb\"\
|
|
||||||
>Ajout de sous-titres</a></li> <li><a href=\"https://framatube.org/videos/watch/60c4bea4-6bb2-4fce-8d9f-8a522575419d\"\
|
|
||||||
>Recherche avancée</a></li> <li><a href=\"https://framatube.org/videos/watch/8968dbe1-a387-433b-a20f-37fe9f3ca8d5\"\
|
|
||||||
>Abonnements à des chaînes</a></li> </ul>"
|
|
||||||
p5: "Il s'agit donc de la dernière newsletter concernant le crowdfunding de\
|
|
||||||
\ PeerTube. Nous aimerions donc vous remercier une dernière fois, pour nous\
|
|
||||||
\ avoir permis de grandement améliorer PeerTube afin de promouvoir un web\
|
|
||||||
\ plus décentralisé.<br> Mais l'aventure n'est pas terminée: nous continuerons\
|
|
||||||
\ à améliorer le logiciel, et il reste encore beaucoup à faire pour pleinement\
|
|
||||||
\ libérer le streaming vidéo. Mais avant, nous allons prendre quelques jours\
|
|
||||||
\ de congé ;)"
|
|
||||||
p6: N'oubliez pas que si vous avez des questions <a href="https://framacolibri.org/c/qualite/peertube">le
|
|
||||||
forum Framacolibri</a> est à votre disposition. Vous pouvez également nous
|
|
||||||
contacter directement sur <a href="https://contact.framasoft.org">https://contact.framasoft.org</a>.
|
|
||||||
p7: Librement,<br>Framasoft
|
|
||||||
newsletter12-09-2018:
|
|
||||||
title: Newsletter du crowdfunding de PeerTube n°3
|
|
||||||
date:
|
|
||||||
text: 12 Septembre 2018
|
|
||||||
data: '2018-09-12'
|
|
||||||
text:
|
|
||||||
p1: Bonjour à toutes et à tous,
|
|
||||||
p2: Nous sommes maintenant à un mois de la sortie de la version 1 de PeerTube
|
|
||||||
! Nous souhaitons donc vous partager quelques (bonnes !) nouvelles.
|
|
||||||
p3: Nous venons de sortir la <em>beta 12</em> de PeerTube, qui ajoute la possibilité
|
|
||||||
de s'abonner à des chaînes vidéos, qu'elles soient sur votre instance ou
|
|
||||||
même sur des instances distantes.<br> De cette manière, vous pouvez parcourir
|
|
||||||
les vidéos de vos abonnements dans une page dédiée. De plus, si l'administrateur
|
|
||||||
de votre instance PeerTube le permet, vous avez la possibilité de voir une
|
|
||||||
chaîne ou une vidéo distante en tapant son adresse dans la barre de recherche
|
|
||||||
de PeerTube.
|
|
||||||
p4: Ce n'était pas inclus dans le crowdfunding, mais nous avons aussi créé
|
|
||||||
une nouvelle page "Overview", qui affiche aléatoirement les vidéos de certaines
|
|
||||||
catégories, tags ou chaînes, dans le but de montrer la diversité des vidéos
|
|
||||||
hébergées. Vous pouvez voir ici <a href="https://peertube3.cpy.re/videos/overview">une
|
|
||||||
démonstration de cette fonctionnalité</a>.
|
|
||||||
p5: Vous pouvez lire le changelog complet de la <em>beta 12</em> (en anglais)
|
|
||||||
<a href="https://github.com/Chocobozzz/PeerTube/blob/develop/CHANGELOG.md#v100-beta12">ici</a>.
|
|
||||||
p6: "Concernant le crowdfunding, la plupart des récompenses sont prêtes :\
|
|
||||||
\ <a href=\"https://github.com/Chocobozzz/PeerTube\">le fichier README de\
|
|
||||||
\ PeerTube</a> et <a href=\"https://joinpeertube.org/fr/hall-of-fame/\"\
|
|
||||||
>le Hall of Fame du site JoinPeertube</a> affichent fièrement les noms des\
|
|
||||||
\ personnes ayant choisi les récompenses correspondantes. Nous allons bientôt\
|
|
||||||
\ pouvoir envoyer les illustrations numériques personnalisées à celles et\
|
|
||||||
\ ceux qui ont donné 80 € et plus (et c'est tellement beau qu'il nous tarde\
|
|
||||||
\ !)."
|
|
||||||
p7: La dernière fonctionnalité qu'il nous reste à implémenter concerne la
|
|
||||||
redondance des vidéos entre instances, qui permettra encore d'augmenter
|
|
||||||
la résilience en cas de surcharge d'une instance. Si tout se passe bien,
|
|
||||||
nous devrions la terminer dans environ deux semaines (fin septembre).
|
|
||||||
p8: Nous vous rappelons que vous pouvez suivre l'avancée des travaux directement
|
|
||||||
en consultant <a href="https://github.com/Chocobozzz/PeerTube">le dépôt
|
|
||||||
Git</a>, et même participer aux discussions/signalement de bugs/propositions
|
|
||||||
d'améliorations dans l'onglet "Issues".
|
|
||||||
p9: Si vous avez des questions <a href="https://framacolibri.org/c/qualite/peertube">un
|
|
||||||
forum</a> est à votre disposition. Vous pouvez également nous contacter
|
|
||||||
directement sur <a href="https://contact.framasoft.org">https://contact.framasoft.org.</a>
|
|
||||||
p10: Librement,<br>Framasoft
|
|
||||||
newsletter20-08-2018:
|
|
||||||
title: Newsletter du crowdfunding de PeerTube n°2
|
|
||||||
date:
|
|
||||||
text: 20 Août 2018
|
|
||||||
data: '2018-08-20'
|
|
||||||
text:
|
|
||||||
p1: Bonjour à toutes et à tous,
|
|
||||||
p2: Le développement des fonctionnalités du crowdfunding poursuit son chemin
|
|
||||||
sans problème particulier.
|
|
||||||
p3: Pour rappel, dans la première newsletter datée du 23 juillet 2018, nous
|
|
||||||
vous annoncions que le système d'internationalisation et l'implémentation
|
|
||||||
des flux RSS étaient terminés, et que nous avancions sur le support des
|
|
||||||
sous-titres puis la recherche avancée.
|
|
||||||
p4: Ces quatre fonctionnalités sont toutes implémentées, et peuvent être directement
|
|
||||||
testées sur les instances mises à jour en <em>v1.0.0-beta.10</em> (par exemple
|
|
||||||
<a href="https://framatube.org">https://framatube.org</a>). En ce qui concerne
|
|
||||||
les sous-titres, vous pouvez les activer sur <a href="https://framatube.org/videos/watch/217eefeb-883d-45be-b7fc-a788ad8507d3">la
|
|
||||||
vidéo de présentation de PeerTube</a>.
|
|
||||||
p5: Nous sommes actuellement en train de finir le système d'import de vidéos
|
|
||||||
via une URL (YouTube, Vimeo, Dailymotion etc) ou un fichier torrent. Cette
|
|
||||||
fonctionnalité devrait être disponible dans quelques jours, lorsque nous
|
|
||||||
sortirons une nouvelle version de PeerTube (<em>v1.0.0-beta.11</em>). L'import
|
|
||||||
des vidéos clôturera donc notre premier palier. La prochaine fonctionnalité
|
|
||||||
sur laquelle nous allons travailler sera le système d'abonnements entre
|
|
||||||
utilisateurs.
|
|
||||||
p6: Nous vous rappelons que vous pouvez suivre l'avancée des travaux directement
|
|
||||||
en consultant <a href="https://github.com/Chocobozzz/PeerTube">le dépôt
|
|
||||||
Git</a>, et même participer aux discussions/signalement de bugs/propositions
|
|
||||||
d'améliorations dans l'onglet "Issues".
|
|
||||||
p7: Si vous avez des questions <a href="https://framacolibri.org/c/qualite/peertube">un
|
|
||||||
forum</a> est à votre disposition. Vous pouvez également nous contacter
|
|
||||||
directement sur <a href="https://contact.framasoft.org">https://contact.framasoft.org.</a>
|
|
||||||
p8: Librement,<br>Framasoft
|
|
||||||
newsletter23-07-2018:
|
|
||||||
title: Newsletter du crowdfunding de PeerTube n°1
|
|
||||||
date:
|
|
||||||
text: 23 Juillet 2018
|
|
||||||
data: '2018-07-23'
|
|
||||||
text:
|
|
||||||
p1: Bonjour à toutes et à tous,
|
|
||||||
p2: Tout d'abord, un grand merci pour avoir contribué à notre campagne. ❤️
|
|
||||||
p3: "Pendant le crowdfunding, nous avons continué d'avancer sur le système\
|
|
||||||
\ d'internationalisation. Et nous avons le plaisir d'annoncer qu'il est\
|
|
||||||
\ enfin terminé: il sera disponible lors de la prochaine version beta de\
|
|
||||||
\ PeerTube (<em>beta 10</em>).<br> À l'heure où nous écrivons ces lignes,\
|
|
||||||
\ l'interface est disponible en anglais, français, basque, catalan, tchèque\
|
|
||||||
\ et en esperanto (un énorme merci <a href=\"https://github.com/Chocobozzz/PeerTube/blob/develop/CREDITS.md#translations\"\
|
|
||||||
> aux traducteurs</a>). Si vous aussi vous voulez aider à la traduction\
|
|
||||||
\ de PeerTube, n'hésitez pas à jeter <a href=\"https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/translation.md\"\
|
|
||||||
>un coup d'oeil à la documentation</a> !"
|
|
||||||
p4: En ce qui concerne les flux RSS, ils ont été implémentés par <a href="https://github.com/rigelk">Rigelk</a>
|
|
||||||
et sont d'ores et déjà utilisables avec la <em>beta 9</em>. Vous pouvez,
|
|
||||||
par exemple, avoir <a href="https://framatube.org/feeds/videos.xml?sort=-publishedAt&filter=local">
|
|
||||||
le flux des dernières vidéos locales ajoutées sur une instance</a>.
|
|
||||||
p5: Le support des sous-titres avance bien et nous devrions avoir une première
|
|
||||||
version de prête sous peu. Une fois ce chantier terminé, nous passerons
|
|
||||||
à l'implémentation de la recherche avancée.
|
|
||||||
p6: Nous vous rappelons que vous pouvez suivre l'avancée des travaux directement
|
|
||||||
en consultant <a href="https://github.com/Chocobozzz/PeerTube">le dépôt
|
|
||||||
Git</a>, et même participer aux discussions/signalement de bugs/propositions
|
|
||||||
d'améliorations dans l'onglet "Issues".
|
|
||||||
p7: Si vous avez des questions <a href="https://framacolibri.org/c/qualite/peertube">un
|
|
||||||
forum</a> est à votre disposition. Vous pouvez également nous contacter
|
|
||||||
directement sur <a href="https://contact.framasoft.org">https://contact.framasoft.org.</a>
|
|
||||||
p8: Librement,<br>Framasoft
|
|
305
app/locales/fr/news.yml
Normal file
|
@ -0,0 +1,305 @@
|
||||||
|
title: Quoi de neuf sur PeerTube ?
|
||||||
|
subtitle: Découvrez les dernières améliorations de l’outil
|
||||||
|
latest-articles: Derniers articles
|
||||||
|
blocs:
|
||||||
|
19-09-25:
|
||||||
|
title: La version 1.4 de PeerTube vient tout juste de sortir !
|
||||||
|
date: 25 Septembre 2019
|
||||||
|
text:
|
||||||
|
p1:
|
||||||
|
- Bonjour à toutes et à tous,
|
||||||
|
- La dernière version de PeerTube est sortie ! Petit tour d’horizon de ce qu’elle apporte…
|
||||||
|
h4a: Un système de plugins
|
||||||
|
p3:
|
||||||
|
- 'Depuis le lancement de PeerTube, nous sommes conscient⋅es que chaque administrateur⋅ice et utilisateur⋅ice de PeerTube souhaite que le logiciel soit le plus adapté à ses besoins. Parce que Framasoft ne peut et ne souhaite pas développer toutes les fonctionnalités souhaitées par les un⋅es et les autres, nous avons, dès l’origine du projet, prévu la création d’un système de plugins.'
|
||||||
|
- 'Nous avons donc le plaisir de vous annoncer que les premières pierres de ce système ont été posées dans cette version 1.4 ! Celui-ci est pour l’instant très basique mais nous prévoyons de l’améliorer petit à petit dans les futures versions de PeerTube.'
|
||||||
|
- 'Avec ce système, chaque administrateur⋅ice peut dorénavant <b>créer des plugins spécifiques</b> en fonction de ses besoins. Mais iel peut aussi installer des extensions créées par d’autres personnes sur son instance. Par exemple, il est possible d’installer des thèmes graphiques créés par la communauté pour changer l’interface visuelle d’une instance.'
|
||||||
|
h4b: Des améliorations de l’interface
|
||||||
|
p4:
|
||||||
|
- 'Nous essayons continuellement d’améliorer l’interface de PeerTube en récoltant les avis des utilisateur⋅ices afin de savoir ce qui leur pose des problèmes (de compréhension ou d’utilisabilité par exemple). C’est un chantier qui prend du temps, mais cette nouvelle version vous propose déjà quelques modifications.'
|
||||||
|
- 'Tout d’abord, nous avons constaté que la plupart des personnes qui découvrent PeerTube ont du mal à comprendre <b>la différence entre une chaîne et un compte</b>. En effet, sur les autres services de diffusion de vidéos (YouTube par exemple) ces deux éléments sont globalement les mêmes.'
|
||||||
|
- 'Or sur PeerTube, chaque compte possède une ou plusieurs chaînes que l’on peut nommer comme on le souhaite. Il y a d’ailleurs une obligation de créer au minimum une chaîne lors de la création d’un compte. Une fois les chaînes créées, les utilisateur⋅ices peuvent <i>uploader</i> des vidéos sur chacune d’entre elles afin d’organiser leurs contenus (on peut donc avoir une chaîne où on diffuse des vidéos de cuisine et une autre où parle de vélo par exemple).'
|
||||||
|
- <figure>
|
||||||
|
<img src="@:data.baseurl/img/@:lang/channel.png" alt="">
|
||||||
|
<figcaption>Sur le compte Framasoft de l’instance Framatube, 2 chaînes sont accessibles</figcaption>
|
||||||
|
</figure>
|
||||||
|
- 'Pour rendre plus compréhensible ce concept de chaîne, nous avons modifié le formulaire d’inscription en y proposant dorénavant 2 étapes :'
|
||||||
|
ul:
|
||||||
|
- 'À l’étape 1, on crée son compte (on spécifie son nom d’utilisateur⋅ice, son mot de passe, son email, etc.)'
|
||||||
|
- 'À l’étape 2, on spécifie le nom de sa chaîne par défaut via un nouveau formulaire'
|
||||||
|
p-img-sign:
|
||||||
|
- <figure>
|
||||||
|
<img src="@:data.baseurl/img/@:lang/account-creation.png" alt="" />
|
||||||
|
<figcaption>Les 2 étapes du nouveau formulaire d’inscription</figcaption>
|
||||||
|
</figure>
|
||||||
|
ul2:
|
||||||
|
- 'Nous avons aussi essayé de différencier la page d’accueil d’une chaîne de celle d’un compte. Avant, ces deux pages listaient des vidéos alors que maintenant la page d’accueil du compte liste toutes les chaînes de celui-ci en présentant sous chaque nom de chaîne les miniatures des dernières vidéos <i>uploadées</i>.'
|
||||||
|
- 'Un autre élément peu clair était <b>la fenêtre (pop-up) qui s’ouvrait lorsqu’on souhaitait partager une vidéo</b>. Nous l’avons améliorée et il est ainsi possible de partager ou d’intégrer une vidéo en la faisant commencer et/ou terminer à un moment précis (système de time-code), de spécifier des sous-titres par défaut ou de jouer la vidéo en boucle. Ces nouvelles options devraient être très appréciées.'
|
||||||
|
p-img-share:
|
||||||
|
- <figure>
|
||||||
|
<img src="@:data.baseurl/img/@:lang/share-popup.png" alt="">
|
||||||
|
<figcaption>options de personnalisation lors du partage d’une vidéo</figcaption>
|
||||||
|
</figure>
|
||||||
|
h4c: Et aussi
|
||||||
|
p5:
|
||||||
|
- 'Toujours grâce à notre formidable communauté de traducteur⋅ices, cette nouvelle version de PeerTube se voit augmentée de <b>3 nouvelles langues</b> : le finlandais, le grec et le gaélique écossais. PeerTube est donc dorénavant accessible en 22 langues.'
|
||||||
|
- 'Nous avons ajouté la possibilité d’<b><i>uploader</i> un fichier audio</b> directement sur PeerTube : le logiciel s’occupe de créer automatiquement une vidéo à partir du fichier audio. Cette fonctionnalité demandée depuis longtemps devrait faciliter la vie des créatrices et créateurs de musique :)'
|
||||||
|
- Beaucoup d’autres améliorations ont été apportées dans cette nouvelle version. Vous pouvez voir la liste complète (en anglais) sur <a href="@:data.link.gitPT/releases/tag/v1.4.0">@:data.link.gitPT/releases/tag/v1.4.0</a>.
|
||||||
|
- Merci à tou⋅tes les contributeur⋅ices de PeerTube !<br>Framasoft
|
||||||
|
19-06-05:
|
||||||
|
title: PeerTube 1.3 est là !
|
||||||
|
date: 5 Juin 2019
|
||||||
|
text:
|
||||||
|
p:
|
||||||
|
- Bonjour à toutes et à tous,
|
||||||
|
- Nous venons tout juste de sortir la version 1.3 de PeerTube qui apporte
|
||||||
|
tout un tas de nouveautés.
|
||||||
|
- 'La plus importante de ces nouveautés est <strong>le système de listes
|
||||||
|
de lecture</strong> (ou playlists). Cette fonctionnalité permet à n’importe
|
||||||
|
quel⋅le utilisateur⋅ice de créer une liste de lecture, puis d’y ajouter
|
||||||
|
des vidéos et de les ordonner. Les vidéos ajoutées au sein d’une liste
|
||||||
|
de lecture peuvent être visionnées dans leur intégralité ou en partie :
|
||||||
|
le créateur de la liste de lecture peut décider à quel moment de la
|
||||||
|
vidéo le visionnage commence et/ou se termine. Ce système est vraiment
|
||||||
|
pratique pour créer des sortes de zappings ou du contenu pédagogique en
|
||||||
|
sélectionnant les extraits des vidéos qui vous intéressent. De plus, une
|
||||||
|
liste de lecture "À regarder plus tard" est créée par défaut pour chaque
|
||||||
|
utilisateur⋅ice leur permettant d’enregistrer dans cette liste de lecture
|
||||||
|
les vidéos qu’ielles n’ont pas le temps de regarder immédiatement.'
|
||||||
|
- 'Une autre des fonctionnalités de cette version 1.3 a été entièrement
|
||||||
|
développée par un contributeur externe :
|
||||||
|
<a href="https://github.com/joshmorel">Josh Morel</a>.
|
||||||
|
Cela permet d’ajouter à PeerTube un <strong>système de
|
||||||
|
quarantaine pour les vidéos</strong>. Si l’administrateur de l’instance
|
||||||
|
active cette fonctionnalité, toute nouvelle vidéo téléversée sur son instance
|
||||||
|
sera automatiquement rendue non-visible en attendant qu’un modérateur
|
||||||
|
l’approuve ou non.'
|
||||||
|
- 'Les traducteurs de PeerTube ont aussi fait un énorme travail car <strong>3
|
||||||
|
nouvelles langues</strong> sont désormais disponibles : le japonais, le
|
||||||
|
néerlandais et le portugais européen (l’interface supportait déjà le portugais
|
||||||
|
brésilien). A ce jour, PeerTube est donc disponible en 19 langues !'
|
||||||
|
- 'Les administrateurs peuvent maintenant <strong>gérer plus finement les
|
||||||
|
autres instances s’abonnant à leur instance</strong> : un administrateur
|
||||||
|
peut décider d’approuver ou non l’abonnement d’une autre instance à la
|
||||||
|
sienne. Il est aussi possible d’activer le refus automatique tout nouvel
|
||||||
|
abonnement à son instance. Enfin, une notification est créée dès que son
|
||||||
|
instance reçoit un nouvel abonnement. Ces fonctionnalités permettent à
|
||||||
|
chaque administrateur de maîtriser plus facilement la diffusion des contenus
|
||||||
|
mis en ligne sur leur instance.'
|
||||||
|
- Nous sommes aussi en train de retravailler le <strong>lecteur vidéo de
|
||||||
|
PeerTube</strong> afin que la lecture des vidéos soit plus rapide et comporte
|
||||||
|
moins de bugs. Ce nouveau lecteur vidéo permet aussi de rendre plus lisses
|
||||||
|
les changements de définition. Enfin, la gestion de la bande passante est
|
||||||
|
optimisée via un système de mise en mémoire tampon plus performant. Cette
|
||||||
|
version 1.3 de PeerTube permet à l’administrateur d’activer ce nouveau lecteur
|
||||||
|
vidéo expérimental afin pour nous de récolter des retours dessus. Nous espérons
|
||||||
|
dans l’avenir utiliser ce nouveau lecteur vidéo par défaut.
|
||||||
|
- Enfin, nous avons fait quelques ajustements au niveau de <strong>l’interface
|
||||||
|
utilisateur⋅ice</strong>, pour qu’elle soit plus agréable/efficace à utiliser.
|
||||||
|
Par exemple, les miniatures ont changé de taille pour être davantage mises
|
||||||
|
en valeur. Les utilisateur⋅ices peuvent désormais accéder rapidement à partir
|
||||||
|
du menu à leur bibliothèque qui comprend leur listes de lecture, leurs vidéos,
|
||||||
|
leur historique de visionnage et leurs abonnements.
|
||||||
|
- Beaucoup d’autres améliorations ont été apportées dans cette nouvelle
|
||||||
|
version. Vous pouvez voir la liste complète (en anglais) sur
|
||||||
|
<a href="@:data.link.gitPT/releases/tag/v1.3.0">
|
||||||
|
@:data.link.gitPT/releases/tag/v1.3.0</a>.
|
||||||
|
- Merci à tous les contributeurs de PeerTube !<br>Framasoft
|
||||||
|
19-02-26:
|
||||||
|
title: 'PeerTube : rétrospective et nouvelles fonctionnalités : l’actu de février
|
||||||
|
2019'
|
||||||
|
date: 26 Février 2019
|
||||||
|
text:
|
||||||
|
p:
|
||||||
|
- Depuis la version 1.0 sortie en novembre dernier, nous avons continué
|
||||||
|
d’<b>améliorer PeerTube jour après jour</b>. Ces avancées de PeerTube, bien
|
||||||
|
au delà des objectifs du crowdfunding, ont été financées par <a href="@:data.link.soft">l’association
|
||||||
|
Framasoft</a>, qui développe le logiciel (et ne vit que par <a href="@:data.link.soutenir">vos
|
||||||
|
dons</a>).
|
||||||
|
- <b>Voici une petite rétrospective de la fin d’année 2018/début d’année
|
||||||
|
2019 :</b>
|
||||||
|
- En décembre 2018, nous avons sorti la version 1.1 qui contenait certains
|
||||||
|
outils de modération demandés par les administrateurs d’instances.<br> Nous
|
||||||
|
en avons aussi profité pour ajouter une fonctionnalité d’historique de visionnage
|
||||||
|
et de reprise automatique de la lecture des vidéos.
|
||||||
|
- 'En janvier, nous avons sorti la version 1.2 permettant, grâce à la communauté
|
||||||
|
de traducteurs et traductrices de PeerTube, de proposer 3 nouvelles langues :
|
||||||
|
le russe, le polonais et l’italien. PeerTube est donc désormais traduit
|
||||||
|
en 16 langues différentes !'
|
||||||
|
- Cette version comprend aussi un système de notifications permettant aux
|
||||||
|
utilisatrices et utilisateurs de savoir (via l’interface web ou par email)
|
||||||
|
lorsque leur vidéo est commentée, lorsque quelqu’un les mentionne, lorsqu’un
|
||||||
|
de leur abonnement a publié une nouvelle vidéo, etc.
|
||||||
|
- 'Par ailleurs, la fédération PeerTube s’est développée : aujourd’hui,
|
||||||
|
c’est plus de 300 instances qui diffusent plus de 70 000 vidéos, avec
|
||||||
|
près de 2 millions de vues cumulées. Nous vous rappelons au passage que
|
||||||
|
le seul site officiel que nous maintenons autour de PeerTube est <a href="
|
||||||
|
@:data.baseurl">@:data.baseurl</a> et que nous n’avons
|
||||||
|
aucune responsabilité autour de tout autre site qui pourrait voir le jour.'
|
||||||
|
- Comme vous pouvez le constater, nous sommes allés bien au delà de ce que
|
||||||
|
le crowdfunding avait financé. Et nous allons continuer !<br> Car il est
|
||||||
|
prévu pour l’année 2019 d’ajouter un système de plugins et de thèmes (peu
|
||||||
|
évolué dans un premier temps), une gestion des playlists, la prise en charge
|
||||||
|
de fichiers audio à l’upload et bien d’autres fonctionnalités.
|
||||||
|
- 'Si vous aussi vous voulez contribuer au développement de PeerTube, n’hésitez
|
||||||
|
pas à participer à son financement : @:data.html.soutenir'
|
||||||
|
- 'Si vous avez la moindre question, vous pouvez utiliser <a
|
||||||
|
href="@:link.forumPT">le forum</a>.'
|
||||||
|
- Merci et bon début d’année,<br>Framasoft
|
||||||
|
18-10-16:
|
||||||
|
title: Newsletter du crowdfunding de PeerTube n°4
|
||||||
|
date: 16 Octobre 2018
|
||||||
|
text:
|
||||||
|
p1:
|
||||||
|
- Bonjour à toutes et à tous,
|
||||||
|
- Nous voici mi-octobre ! Et comme promis, nous venons de sortir la première
|
||||||
|
version stable de PeerTube.
|
||||||
|
- 'Elle contient tous les buts que nous avions fixé dans notre crowdfunding :'
|
||||||
|
ul1:
|
||||||
|
- Le support de l’internationalisation (à l’heure où nous écrivons
|
||||||
|
ces lignes, PeerTube est déjà disponible en plus de 13 langues !)
|
||||||
|
- Le support des sous-titres
|
||||||
|
- La possibilité d’importer des
|
||||||
|
vidéos via une URL (YouTube, Dailymotion, Vimeo et bien d’autres !)
|
||||||
|
- La possibilité d’importer une vidéo via un fichier torrent ou un lien
|
||||||
|
Magnet
|
||||||
|
- La mise à disposition de flux RSS, vous permettant de
|
||||||
|
suivre les nouvelles vidéos mises en ligne sur l’ensemble des instances
|
||||||
|
PeerTube, sur une instance en particulière ou par une chaîne que appréciez.
|
||||||
|
Vous pouvez aussi vous abonner au flux des commentaires d’une vidéo spécifique
|
||||||
|
- La recherche, beaucoup plus pertinente qu’avant et acceptant de nombreux
|
||||||
|
filtres avancés (durée, catégorie, tags…)
|
||||||
|
- Les abonnements à
|
||||||
|
travers la fédération, vous laissant la possibilité de suivre vos chaînes
|
||||||
|
vidéos préférées afin de retrouver l’ensemble de leurs vidéos dans un
|
||||||
|
onglet dédié
|
||||||
|
- La redondance entre instances PeerTube, où des instances
|
||||||
|
peuvent aider à partager certaines vidéos d’autres instances
|
||||||
|
p2:
|
||||||
|
- 'Nous savons que les descriptions de fonctionnalités ne sont pas toujours
|
||||||
|
très fun, et c’est pour ça que nous vous avons préparé de courtes vidéos
|
||||||
|
de démonstration:'
|
||||||
|
ul2:
|
||||||
|
- <a href="@:data.video.rss">Flux RSS</a>
|
||||||
|
- <a href="@:data.video.torrent">Import de torrent</a>
|
||||||
|
- <a href="@:data.video.yt-import">Import d’une vidéo YouTube</a>
|
||||||
|
- <a href="@:data.video.subtitle">Ajout de sous-titres</a>
|
||||||
|
- <a href="@:data.video.search">Recherche avancée</a>
|
||||||
|
- <a href="@:data.video.subscription">Abonnements à des chaînes</a>
|
||||||
|
p3:
|
||||||
|
- 'Il s’agit donc de la dernière newsletter concernant le crowdfunding de
|
||||||
|
PeerTube. Nous aimerions donc vous remercier une dernière fois, pour nous
|
||||||
|
avoir permis de grandement améliorer PeerTube afin de promouvoir un web
|
||||||
|
plus décentralisé.<br> Mais l’aventure n’est pas terminée: nous continuerons
|
||||||
|
à améliorer le logiciel, et il reste encore beaucoup à faire pour pleinement
|
||||||
|
libérer le streaming vidéo. Mais avant, nous allons prendre quelques jours
|
||||||
|
de congé ;)'
|
||||||
|
- N’oubliez pas que si vous avez des questions <a href="@:link.forumPT">le
|
||||||
|
forum Framacolibri</a> est à votre disposition. Vous pouvez également nous
|
||||||
|
contacter directement sur @:data.hlink.contact</>.
|
||||||
|
- Librement,<br>Framasoft
|
||||||
|
18-09-12:
|
||||||
|
title: Newsletter du crowdfunding de PeerTube n°3
|
||||||
|
date: 12 Septembre 2018
|
||||||
|
text:
|
||||||
|
p:
|
||||||
|
- Bonjour à toutes et à tous,
|
||||||
|
- Nous sommes maintenant à un mois de la sortie de la version 1 de PeerTube !
|
||||||
|
Nous souhaitons donc vous partager quelques (bonnes !) nouvelles.
|
||||||
|
- Nous venons de sortir la <em>beta 12</em> de PeerTube, qui ajoute la possibilité
|
||||||
|
de s’abonner à des chaînes vidéos, qu’elles soient sur votre instance ou
|
||||||
|
même sur des instances distantes.<br> De cette manière, vous pouvez parcourir
|
||||||
|
les vidéos de vos abonnements dans une page dédiée. De plus, si l’administrateur
|
||||||
|
de votre instance PeerTube le permet, vous avez la possibilité de voir une
|
||||||
|
chaîne ou une vidéo distante en tapant son adresse dans la barre de recherche
|
||||||
|
de PeerTube.
|
||||||
|
- Ce n’était pas inclus dans le crowdfunding, mais nous avons aussi créé
|
||||||
|
une nouvelle page "Overview", qui affiche aléatoirement les vidéos de certaines
|
||||||
|
catégories, tags ou chaînes, dans le but de montrer la diversité des vidéos
|
||||||
|
hébergées. Vous pouvez voir ici <a href="https://peertube3.cpy.re/videos/overview">une
|
||||||
|
démonstration de cette fonctionnalité</a>.
|
||||||
|
- Vous pouvez lire le changelog complet de la <em>beta 12</em> (en anglais)
|
||||||
|
<a href="@:data.link.gitPT/blob/develop/CHANGELOG.md#v100-beta12">ici</a>.
|
||||||
|
- 'Concernant le crowdfunding, la plupart des récompenses sont prêtes :
|
||||||
|
<a href="@:data.link.gitPT">le fichier README de
|
||||||
|
PeerTube</a> et <a href="@:data.baseurl/hall-of-fame"
|
||||||
|
>le Hall of Fame du site JoinPeertube</a> affichent fièrement les noms des
|
||||||
|
personnes ayant choisi les récompenses correspondantes. Nous allons bientôt
|
||||||
|
pouvoir envoyer les illustrations numériques personnalisées à celles et
|
||||||
|
ceux qui ont donné 80 € et plus (et c’est tellement beau qu’il nous tarde
|
||||||
|
!).'
|
||||||
|
- La dernière fonctionnalité qu’il nous reste à implémenter concerne la
|
||||||
|
redondance des vidéos entre instances, qui permettra encore d’augmenter
|
||||||
|
la résilience en cas de surcharge d’une instance. Si tout se passe bien,
|
||||||
|
nous devrions la terminer dans environ deux semaines (fin septembre).
|
||||||
|
- Nous vous rappelons que vous pouvez suivre l’avancée des travaux directement
|
||||||
|
en consultant <a href="@:data.link.gitPT">le dépôt
|
||||||
|
Git</a>, et même participer aux discussions/signalement de bugs/propositions
|
||||||
|
d’améliorations dans l’onglet « Issues ».
|
||||||
|
- Si vous avez des questions <a href="@:link.forumPT">un
|
||||||
|
forum</a> est à votre disposition. Vous pouvez également nous contacter
|
||||||
|
directement sur @:data.hlink.contact</>.
|
||||||
|
- Librement,<br>Framasoft
|
||||||
|
18-08-20:
|
||||||
|
title: Newsletter du crowdfunding de PeerTube n°2
|
||||||
|
date: 20 Août 2018
|
||||||
|
text:
|
||||||
|
p:
|
||||||
|
- Bonjour à toutes et à tous,
|
||||||
|
- Le développement des fonctionnalités du crowdfunding poursuit son chemin
|
||||||
|
sans problème particulier.
|
||||||
|
- Pour rappel, dans la première newsletter datée du 23 juillet 2018, nous
|
||||||
|
vous annoncions que le système d’internationalisation et l’implémentation
|
||||||
|
des flux RSS étaient terminés, et que nous avancions sur le support des
|
||||||
|
sous-titres puis la recherche avancée.
|
||||||
|
- Ces quatre fonctionnalités sont toutes implémentées, et peuvent être directement
|
||||||
|
testées sur les instances mises à jour en <em>v1.0.0-beta.10</em> (par exemple
|
||||||
|
@:data.html.tube). En ce qui concerne
|
||||||
|
les sous-titres, vous pouvez les activer sur <a href="https://framatube.org/videos/watch/217eefeb-883d-45be-b7fc-a788ad8507d3">la
|
||||||
|
vidéo de présentation de PeerTube</a>.
|
||||||
|
- Nous sommes actuellement en train de finir le système d’import de vidéos
|
||||||
|
via une URL (YouTube, Vimeo, Dailymotion etc) ou un fichier torrent. Cette
|
||||||
|
fonctionnalité devrait être disponible dans quelques jours, lorsque nous
|
||||||
|
sortirons une nouvelle version de PeerTube (<em>v1.0.0-beta.11</em>). L’import
|
||||||
|
des vidéos clôturera donc notre premier palier. La prochaine fonctionnalité
|
||||||
|
sur laquelle nous allons travailler sera le système d’abonnements entre
|
||||||
|
utilisateurs.
|
||||||
|
- Nous vous rappelons que vous pouvez suivre l’avancée des travaux directement
|
||||||
|
en consultant <a href="@:data.link.gitPT">le dépôt
|
||||||
|
Git</a>, et même participer aux discussions/signalement de bugs/propositions
|
||||||
|
d’améliorations dans l’onglet « Issues ».
|
||||||
|
- Si vous avez des questions <a href="@:link.forumPT">un
|
||||||
|
forum</a> est à votre disposition. Vous pouvez également nous contacter
|
||||||
|
directement sur @:data.hlink.contact</>.
|
||||||
|
- Librement,<br>Framasoft
|
||||||
|
18-07-23:
|
||||||
|
title: Newsletter du crowdfunding de PeerTube n°1
|
||||||
|
date: 23 Juillet 2018
|
||||||
|
text:
|
||||||
|
p:
|
||||||
|
- Bonjour à toutes et à tous,
|
||||||
|
- Tout d’abord, un grand merci pour avoir contribué à notre campagne. ❤️
|
||||||
|
- 'Pendant le crowdfunding, nous avons continué d’avancer sur le système
|
||||||
|
d’internationalisation. Et nous avons le plaisir d’annoncer qu’il est
|
||||||
|
enfin terminé: il sera disponible lors de la prochaine version beta de
|
||||||
|
PeerTube (<em>beta 10</em>).<br> À l’heure où nous écrivons ces lignes,
|
||||||
|
l’interface est disponible en anglais, français, basque, catalan, tchèque
|
||||||
|
et en esperanto (un énorme merci <a href="@:data.link.gitPT/blob/develop/CREDITS.md#translations"
|
||||||
|
> aux traducteurs</a>). Si vous aussi vous voulez aider à la traduction
|
||||||
|
de PeerTube, n’hésitez pas à jeter <a href="@:data.link.gitPT/blob/develop/support/doc/translation.md"
|
||||||
|
>un coup d’oeil à la documentation</a> !'
|
||||||
|
- En ce qui concerne les flux RSS, ils ont été implémentés par <a href="https://github.com/rigelk">Rigelk</a>
|
||||||
|
et sont d’ores et déjà utilisables avec la <em>beta 9</em>. Vous pouvez,
|
||||||
|
par exemple, avoir <a href="https://framatube.org/feeds/videos.xml?sort=-publishedAt&filter=local">
|
||||||
|
le flux des dernières vidéos locales ajoutées sur une instance</a>.
|
||||||
|
- Le support des sous-titres avance bien et nous devrions avoir une première
|
||||||
|
version de prête sous peu. Une fois ce chantier terminé, nous passerons
|
||||||
|
à l’implémentation de la recherche avancée.
|
||||||
|
- Nous vous rappelons que vous pouvez suivre l’avancée des travaux directement
|
||||||
|
en consultant <a href="@:data.link.gitPT">le dépôt
|
||||||
|
Git</a>, et même participer aux discussions/signalement de bugs/propositions
|
||||||
|
d’améliorations dans l’onglet « Issues ».
|
||||||
|
- Si vous avez des questions <a href="@:link.forumPT">un
|
||||||
|
forum</a> est à votre disposition. Vous pouvez également nous contacter
|
||||||
|
directement sur @:data.hlink.contact</>.
|
||||||
|
- Librement,<br>Framasoft
|
21
app/plugins/cookie.js
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
export default {
|
||||||
|
install(Vue) {
|
||||||
|
Object.defineProperty(Vue.prototype, 'cookie', {
|
||||||
|
value: (action, name, value, time) => {
|
||||||
|
if (action === 'w') {
|
||||||
|
const t = typeof time !== 'undefined' ? time : 31536000000; // 365 * 24 * 60 * 60 * 1000
|
||||||
|
const today = new Date();
|
||||||
|
const expires = new Date();
|
||||||
|
expires.setTime(today.getTime() + t);
|
||||||
|
document.cookie = [name, '=', encodeURIComponent(value), ';expires=', expires.toGMTString()].join('');
|
||||||
|
} else {
|
||||||
|
const oRegex = new RegExp(['(?:; )?', name, '=([^;]*);?'].join(''));
|
||||||
|
if (oRegex.test(document.cookie)) {
|
||||||
|
return decodeURIComponent(RegExp.$1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
18
app/plugins/is.js
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
export default {
|
||||||
|
install(Vue) {
|
||||||
|
Object.defineProperty(Vue.prototype, 'is', {
|
||||||
|
value: {
|
||||||
|
email(emailAddress) { // RegEx from https://emailregex.com/
|
||||||
|
const pattern = new RegExp(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);
|
||||||
|
return !!pattern.test(emailAddress);
|
||||||
|
},
|
||||||
|
before(date) {
|
||||||
|
return new Date(new Date().toDateString()) < new Date(date);
|
||||||
|
},
|
||||||
|
after(date) {
|
||||||
|
return new Date(new Date().toDateString()) > new Date(date);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
37
app/plugins/merge.js
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
export default {
|
||||||
|
install(Vue) {
|
||||||
|
Object.defineProperty(Vue.prototype, 'merge', {
|
||||||
|
value: (a, b) => {
|
||||||
|
function MergeRecursive(o1, o2) {
|
||||||
|
const o3 = o1;
|
||||||
|
Object.keys(o2).forEach((p) => {
|
||||||
|
try {
|
||||||
|
if (o2[p].constructor === Object) {
|
||||||
|
o3[p] = MergeRecursive(o3[p], o2[p]);
|
||||||
|
} else if (o2[p].constructor === Array) {
|
||||||
|
for (let i = 0; i < o2[p].length; i += 1) {
|
||||||
|
o3[p][i] = o2[p][i];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
o3[p] = o2[p];
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
o3[p] = o2[p];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return o3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Merge Arrays
|
||||||
|
if (a.constructor === Array && b.constructor === Array) {
|
||||||
|
return [...new Set([].concat(...[a, b]))];
|
||||||
|
}
|
||||||
|
// Merge Objects
|
||||||
|
const o1 = Object.assign({}, a);
|
||||||
|
const o2 = Object.assign({}, b);
|
||||||
|
MergeRecursive(o1, o2);
|
||||||
|
return o1;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
137
app/plugins/text.js
Normal file
|
@ -0,0 +1,137 @@
|
||||||
|
export default {
|
||||||
|
install(Vue) {
|
||||||
|
Object.defineProperty(Vue.prototype, 'text', {
|
||||||
|
value: (html, options) => { // eslint-disable-line
|
||||||
|
let text = '';
|
||||||
|
const tmp = new DOMParser().parseFromString(html, 'text/html');
|
||||||
|
text = tmp.body.textContent || '';
|
||||||
|
if (options) {
|
||||||
|
if (/latin/.test(options)) {
|
||||||
|
// <rm diacritics>
|
||||||
|
// Source http://stackoverflow.com/a/18391901
|
||||||
|
const defaultDiacriticsRemovalMap = [
|
||||||
|
{ base: 'A', letters: '\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F' },
|
||||||
|
{ base: 'AA', letters: '\uA732' },
|
||||||
|
{ base: 'AE', letters: '\u00C6\u01FC\u01E2' },
|
||||||
|
{ base: 'AO', letters: '\uA734' },
|
||||||
|
{ base: 'AU', letters: '\uA736' },
|
||||||
|
{ base: 'AV', letters: '\uA738\uA73A' },
|
||||||
|
{ base: 'AY', letters: '\uA73C' },
|
||||||
|
{ base: 'B', letters: '\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181' },
|
||||||
|
{ base: 'C', letters: '\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E' },
|
||||||
|
{ base: 'D', letters: '\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779' },
|
||||||
|
{ base: 'DZ', letters: '\u01F1\u01C4' },
|
||||||
|
{ base: 'Dz', letters: '\u01F2\u01C5' },
|
||||||
|
{ base: 'E', letters: '\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E' },
|
||||||
|
{ base: 'F', letters: '\u0046\u24BB\uFF26\u1E1E\u0191\uA77B' },
|
||||||
|
{ base: 'G', letters: '\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E' },
|
||||||
|
{ base: 'H', letters: '\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D' },
|
||||||
|
{ base: 'I', letters: '\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197' },
|
||||||
|
{ base: 'J', letters: '\u004A\u24BF\uFF2A\u0134\u0248' },
|
||||||
|
{ base: 'K', letters: '\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2' },
|
||||||
|
{ base: 'L', letters: '\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780' },
|
||||||
|
{ base: 'LJ', letters: '\u01C7' },
|
||||||
|
{ base: 'Lj', letters: '\u01C8' },
|
||||||
|
{ base: 'M', letters: '\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C' },
|
||||||
|
{ base: 'N', letters: '\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4' },
|
||||||
|
{ base: 'NJ', letters: '\u01CA' },
|
||||||
|
{ base: 'Nj', letters: '\u01CB' },
|
||||||
|
{ base: 'O', letters: '\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C' },
|
||||||
|
{ base: 'OI', letters: '\u01A2' },
|
||||||
|
{ base: 'OO', letters: '\uA74E' },
|
||||||
|
{ base: 'OU', letters: '\u0222' },
|
||||||
|
{ base: 'OE', letters: '\u008C\u0152' },
|
||||||
|
{ base: 'oe', letters: '\u009C\u0153' },
|
||||||
|
{ base: 'P', letters: '\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754' },
|
||||||
|
{ base: 'Q', letters: '\u0051\u24C6\uFF31\uA756\uA758\u024A' },
|
||||||
|
{ base: 'R', letters: '\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782' },
|
||||||
|
{ base: 'S', letters: '\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784' },
|
||||||
|
{ base: 'T', letters: '\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786' },
|
||||||
|
{ base: 'TZ', letters: '\uA728' },
|
||||||
|
{ base: 'U', letters: '\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244' },
|
||||||
|
{ base: 'V', letters: '\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245' },
|
||||||
|
{ base: 'VY', letters: '\uA760' },
|
||||||
|
{ base: 'W', letters: '\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72' },
|
||||||
|
{ base: 'X', letters: '\u0058\u24CD\uFF38\u1E8A\u1E8C' },
|
||||||
|
{ base: 'Y', letters: '\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE' },
|
||||||
|
{ base: 'Z', letters: '\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762' },
|
||||||
|
{ base: 'a', letters: '\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250' },
|
||||||
|
{ base: 'aa', letters: '\uA733' },
|
||||||
|
{ base: 'ae', letters: '\u00E6\u01FD\u01E3' },
|
||||||
|
{ base: 'ao', letters: '\uA735' },
|
||||||
|
{ base: 'au', letters: '\uA737' },
|
||||||
|
{ base: 'av', letters: '\uA739\uA73B' },
|
||||||
|
{ base: 'ay', letters: '\uA73D' },
|
||||||
|
{ base: 'b', letters: '\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253' },
|
||||||
|
{ base: 'c', letters: '\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184' },
|
||||||
|
{ base: 'd', letters: '\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A' },
|
||||||
|
{ base: 'dz', letters: '\u01F3\u01C6' },
|
||||||
|
{ base: 'e', letters: '\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD' },
|
||||||
|
{ base: 'f', letters: '\u0066\u24D5\uFF46\u1E1F\u0192\uA77C' },
|
||||||
|
{ base: 'g', letters: '\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F' },
|
||||||
|
{ base: 'h', letters: '\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265' },
|
||||||
|
{ base: 'hv', letters: '\u0195' },
|
||||||
|
{ base: 'i', letters: '\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131' },
|
||||||
|
{ base: 'j', letters: '\u006A\u24D9\uFF4A\u0135\u01F0\u0249' },
|
||||||
|
{ base: 'k', letters: '\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3' },
|
||||||
|
{ base: 'l', letters: '\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747' },
|
||||||
|
{ base: 'lj', letters: '\u01C9' },
|
||||||
|
{ base: 'm', letters: '\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F' },
|
||||||
|
{ base: 'n', letters: '\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5' },
|
||||||
|
{ base: 'nj', letters: '\u01CC' },
|
||||||
|
{ base: 'o', letters: '\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275' },
|
||||||
|
{ base: 'oi', letters: '\u01A3' },
|
||||||
|
{ base: 'ou', letters: '\u0223' },
|
||||||
|
{ base: 'oo', letters: '\uA74F' },
|
||||||
|
{ base: 'p', letters: '\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755' },
|
||||||
|
{ base: 'q', letters: '\u0071\u24E0\uFF51\u024B\uA757\uA759' },
|
||||||
|
{ base: 'r', letters: '\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783' },
|
||||||
|
{ base: 's', letters: '\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B' },
|
||||||
|
{ base: 't', letters: '\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787' },
|
||||||
|
{ base: 'tz', letters: '\uA729' },
|
||||||
|
{ base: 'u', letters: '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289' },
|
||||||
|
{ base: 'v', letters: '\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C' },
|
||||||
|
{ base: 'vy', letters: '\uA761' },
|
||||||
|
{ base: 'w', letters: '\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73' },
|
||||||
|
{ base: 'x', letters: '\u0078\u24E7\uFF58\u1E8B\u1E8D' },
|
||||||
|
{ base: 'y', letters: '\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF' },
|
||||||
|
{ base: 'z', letters: '\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763' },
|
||||||
|
];
|
||||||
|
|
||||||
|
const diacriticsMap = {};
|
||||||
|
for (let i = 0; i < defaultDiacriticsRemovalMap.length; i += 1) {
|
||||||
|
const letters = defaultDiacriticsRemovalMap[i].letters; // eslint-disable-line
|
||||||
|
for (let j = 0; j < letters.length; j += 1) {
|
||||||
|
diacriticsMap[letters[j]] = defaultDiacriticsRemovalMap[i].base;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
text = text.replace(/[^\u0000-\u007E]/g, function(a) { return diacriticsMap[a] || a; }); // eslint-disable-line
|
||||||
|
}
|
||||||
|
if (/sanitize/.test(options)) {
|
||||||
|
text = text.toLowerCase()
|
||||||
|
.replace(/@:[.a-z]+ /g, '') // remove vue-i18n var
|
||||||
|
.replace(/[ '’]/g, '-')
|
||||||
|
.replace(/[^a-zA-Z0-9-_.]/g, '');
|
||||||
|
}
|
||||||
|
if (/noframa/.test(options)) {
|
||||||
|
text = text.replace('framand', 'and')
|
||||||
|
.replace('framage', 'age')
|
||||||
|
.replace('framae', 'mae')
|
||||||
|
.replace('framin', 'min')
|
||||||
|
.replace('frame', 'me')
|
||||||
|
.replace('frama', '')
|
||||||
|
.replace('.', '')
|
||||||
|
.replace('my', 'myframa');
|
||||||
|
}
|
||||||
|
if (html === 'random') {
|
||||||
|
const length = Number.isInteger(options) ? options : 10;
|
||||||
|
text = [...Array(length)].map(() => Math.random().toString(36)[3]).join('')
|
||||||
|
.replace(/(.|$)/g, c => c[!Math.round(Math.random()) ? 'toString' : 'toUpperCase']());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return text;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
16
index.html
|
@ -4,9 +4,21 @@
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title></title>
|
<title></title>
|
||||||
|
<meta name="description"/>
|
||||||
|
|
||||||
<link rel="shortcut icon" href="/icons/favicon.png">
|
<link rel="shortcut icon" href="" />
|
||||||
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
|
<link rel="apple-touch-icon" href="" />
|
||||||
|
|
||||||
|
<meta property="og:type" content="article">
|
||||||
|
<meta property="og:title" content="">
|
||||||
|
<meta property="og:image" content="">
|
||||||
|
<meta property="og:url" content="">
|
||||||
|
<meta property="og:description" content="">
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
|
<meta name="twitter:description" content="">
|
||||||
|
<meta name="twitter:title" content="">
|
||||||
|
<meta name="twitter:image" content="">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
|
11559
package-lock.json
generated
71
package.json
|
@ -12,50 +12,53 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^0.18.0",
|
"axios": "^0.18.0",
|
||||||
"bootstrap-sass": "^3.3.7",
|
"bootstrap-sass": "^3.4.1",
|
||||||
"fork-awesome": "^1.1.5",
|
"fork-awesome": "^1.1.7",
|
||||||
"uiv": "^0.28.0",
|
"uiv": "^0.28.0",
|
||||||
"vue": "^2.5.16",
|
"vue": "^2.6.10",
|
||||||
"vue-headful": "^2.0.1",
|
"vue-headful": "^2.0.1",
|
||||||
"vue-i18n": "^8.4.0",
|
"vue-i18n": "^8.14.0",
|
||||||
"vue-matomo": "^0.3.2",
|
"vue-matomo": "^0.3.2",
|
||||||
"vue-router": "^3.0.2"
|
"vue-router": "^3.1.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.2.0",
|
"@babel/core": "^7.5.5",
|
||||||
"@babel/plugin-proposal-object-rest-spread": "^7.2.0",
|
"@babel/plugin-proposal-object-rest-spread": "^7.5.5",
|
||||||
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
|
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
|
||||||
"@babel/preset-env": "^7.2.0",
|
"@babel/preset-env": "^7.5.5",
|
||||||
"autoprefixer": "^9.4.2",
|
"@prerenderer/renderer-jsdom": "^0.2.0",
|
||||||
"babel-eslint": "^10.0.1",
|
"autoprefixer": "^9.6.1",
|
||||||
"babel-loader": "^8.0.4",
|
"babel-eslint": "^10.0.3",
|
||||||
"copy-webpack-plugin": "^4.6.0",
|
"babel-loader": "^8.0.6",
|
||||||
"cross-env": "^5.2.0",
|
"copy-webpack-plugin": "^5.0.4",
|
||||||
"css-hot-loader": "^1.4.2",
|
"cross-env": "^5.2.1",
|
||||||
"css-loader": "^1.0.1",
|
"css-hot-loader": "^1.4.4",
|
||||||
"eslint": "^5.9.0",
|
"css-loader": "^2.1.1",
|
||||||
"eslint-config-airbnb-base": "^13.1.0",
|
"eslint": "^5.16.0",
|
||||||
"eslint-loader": "^2.1.1",
|
"eslint-config-airbnb-base": "^13.2.0",
|
||||||
|
"eslint-loader": "^2.2.1",
|
||||||
"eslint-plugin-filenames": "^1.3.2",
|
"eslint-plugin-filenames": "^1.3.2",
|
||||||
"eslint-plugin-html": "^5.0.0",
|
"eslint-plugin-html": "^5.0.5",
|
||||||
"eslint-plugin-import": "^2.14.0",
|
"eslint-plugin-import": "^2.18.2",
|
||||||
"eslint-plugin-promise": "^4.0.1",
|
"eslint-plugin-promise": "^4.2.1",
|
||||||
"eslint-plugin-vue": "^5.0.0",
|
"eslint-plugin-vue": "^5.2.3",
|
||||||
"file-loader": "^2.0.0",
|
"file-loader": "^3.0.1",
|
||||||
"html-webpack-plugin": "^3.2.0",
|
"html-webpack-plugin": "^4.0.0-beta.8",
|
||||||
"mini-css-extract-plugin": "^0.4.5",
|
"mini-css-extract-plugin": "^0.6.0",
|
||||||
"node-sass": "^4.10.0",
|
"node-sass": "^4.12.0",
|
||||||
"optimize-css-assets-webpack-plugin": "^5.0.1",
|
"optimize-css-assets-webpack-plugin": "^5.0.3",
|
||||||
"postcss-loader": "^3.0.0",
|
"postcss-loader": "^3.0.0",
|
||||||
|
"preload-webpack-plugin": "^3.0.0-beta.4",
|
||||||
"prerender-spa-plugin": "^3.4.0",
|
"prerender-spa-plugin": "^3.4.0",
|
||||||
"sass-loader": "^7.1.0",
|
"sass-loader": "^7.3.1",
|
||||||
"style-loader": "^0.23.1",
|
"style-loader": "^0.23.1",
|
||||||
"terser-webpack-plugin": "^1.1.0",
|
"terser-webpack-plugin": "^1.4.1",
|
||||||
"vue-loader": "^15.4.2",
|
"vue-loader": "^15.7.1",
|
||||||
"vue-template-compiler": "^2.5.16",
|
"vue-template-compiler": "^2.6.10",
|
||||||
"webpack": "^4.27.1",
|
"webpack": "^4.39.3",
|
||||||
"webpack-cli": "^3.1.2",
|
"webpack-cli": "^3.3.7",
|
||||||
"webpack-dev-server": "^3.1.10",
|
"webpack-dev-server": "^3.8.0",
|
||||||
|
"webpack-subresource-integrity": "^1.3.3",
|
||||||
"yaml-import-loader": "^1.3.6"
|
"yaml-import-loader": "^1.3.6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,28 +1,33 @@
|
||||||
|
/* eslint-disable import/newline-after-import */
|
||||||
|
/* eslint-disable filenames/match-regex */
|
||||||
|
/* eslint-disable import/no-commonjs */
|
||||||
const webpack = require('webpack');
|
const webpack = require('webpack');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
||||||
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
||||||
const PrerenderSPAPlugin = require('prerender-spa-plugin');
|
const PrerenderSPAPlugin = require('prerender-spa-plugin');
|
||||||
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;
|
const Renderer = require('@prerenderer/renderer-jsdom');
|
||||||
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
||||||
const TerserPlugin = require('terser-webpack-plugin');
|
const TerserPlugin = require('terser-webpack-plugin');
|
||||||
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
|
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
|
||||||
const VueLoaderPlugin = require('vue-loader/lib/plugin');
|
const VueLoaderPlugin = require('vue-loader/lib/plugin');
|
||||||
|
const PreloadWebpackPlugin = require('preload-webpack-plugin');
|
||||||
|
|
||||||
let root = (process.env.NODE_ENV === 'preview') ? `/${process.env.INIT_CWD.match(/([^\/]*)\/*$/)[1]}/` : '/';
|
let root = (process.env.NODE_ENV === 'preview') ? `/${process.env.INIT_CWD.match(/([^/]*)\/*$/)[1]}/` : '/';
|
||||||
for (let i = 0; i < process.argv.length; i += 1) {
|
for (let i = 0; i < process.argv.length; i += 1) {
|
||||||
if (process.argv[i].indexOf('--root=') > -1) {
|
if (process.argv[i].indexOf('--root=') > -1) {
|
||||||
root = `/${process.argv[i].split('=')[1]}/`;
|
root = `/${process.argv[i].split('=')[1]}/`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let config = {
|
const config = {
|
||||||
entry: './app/index.js',
|
entry: './app/index.js',
|
||||||
output: {
|
output: {
|
||||||
path: path.resolve(__dirname, `public${root}`),
|
path: path.resolve(__dirname, `public${root}`),
|
||||||
publicPath: root,
|
publicPath: root,
|
||||||
filename: 'app.js',
|
filename: '[name].[hash].bundle.js',
|
||||||
|
// chunkFilename: '[name].bundle.js',
|
||||||
},
|
},
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
|
@ -83,14 +88,14 @@ let config = {
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
alias: {
|
||||||
'vue$': 'vue/dist/vue.esm.js',
|
vue$: 'vue/dist/vue.esm.js',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
new VueLoaderPlugin(),
|
new VueLoaderPlugin(),
|
||||||
new MiniCssExtractPlugin({
|
new MiniCssExtractPlugin({
|
||||||
filename: '[name].css',
|
filename: process.env.NODE_ENV !== 'production' ? '[name].css' : '[name].[hash].css',
|
||||||
chunkFilename: '[id].css',
|
chunkFilename: process.env.NODE_ENV !== 'production' ? '[id].css' : '[id].[hash].css',
|
||||||
}),
|
}),
|
||||||
new webpack.HotModuleReplacementPlugin(),
|
new webpack.HotModuleReplacementPlugin(),
|
||||||
new CopyWebpackPlugin([
|
new CopyWebpackPlugin([
|
||||||
|
@ -98,6 +103,18 @@ let config = {
|
||||||
{ from: path.resolve(__dirname, './app/assets/icons'), to: 'icons' },
|
{ from: path.resolve(__dirname, './app/assets/icons'), to: 'icons' },
|
||||||
{ from: path.resolve(__dirname, './app/assets/img'), to: 'img' },
|
{ from: path.resolve(__dirname, './app/assets/img'), to: 'img' },
|
||||||
]),
|
]),
|
||||||
|
new PreloadWebpackPlugin({
|
||||||
|
rel: 'preload',
|
||||||
|
as(entry) {
|
||||||
|
if (/\.css$/.test(entry)) return 'style';
|
||||||
|
if (/\.woff$/.test(entry)) return 'font';
|
||||||
|
if (/\.png$/.test(entry)) return 'image';
|
||||||
|
if (/\.jpg$/.test(entry)) return 'image';
|
||||||
|
return 'script';
|
||||||
|
},
|
||||||
|
fileBlacklist: [/\.map/, /\.svg/, /\.woff/, /\.eot/, /\.woff2/, /\.ttf/, /\.png/, /\.gif/, /\.mp4/],
|
||||||
|
include: 'allAssets',
|
||||||
|
}),
|
||||||
],
|
],
|
||||||
devServer: {
|
devServer: {
|
||||||
contentBase: path.resolve(__dirname, './public'),
|
contentBase: path.resolve(__dirname, './public'),
|
||||||
|
@ -114,37 +131,36 @@ module.exports = config;
|
||||||
|
|
||||||
const locales = [];
|
const locales = [];
|
||||||
// Import locales list
|
// Import locales list
|
||||||
fs.readdirSync('./app/locales').forEach(file => {
|
fs.readdirSync('./app/locales')
|
||||||
locales.push(file.replace(/(.*)\.yml/, '$1'));
|
.forEach(file => locales.push(file));
|
||||||
});
|
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'development') {
|
if (process.env.NODE_ENV === 'development') {
|
||||||
module.exports.plugins = (module.exports.plugins || []).concat([
|
module.exports.plugins = (module.exports.plugins || [])
|
||||||
new webpack.DefinePlugin({
|
.concat([
|
||||||
'process.env': {
|
new webpack.DefinePlugin({
|
||||||
NODE_ENV: '"development"',
|
'process.env': {
|
||||||
BASE_URL: '""',
|
NODE_ENV: '"development"',
|
||||||
},
|
BASE_URL: '""',
|
||||||
}),
|
},
|
||||||
new HtmlWebpackPlugin({
|
}),
|
||||||
title: 'DEVELOPMENT prerender-spa-plugin',
|
new HtmlWebpackPlugin({
|
||||||
template: 'index.html',
|
title: 'DEVELOPMENT prerender-spa-plugin',
|
||||||
filename: 'index.html',
|
template: 'index.html',
|
||||||
}),
|
filename: 'index.html',
|
||||||
]);
|
}),
|
||||||
|
]);
|
||||||
} else { // NODE_ENV === 'production|preview'
|
} else { // NODE_ENV === 'production|preview'
|
||||||
const routes = [root];
|
const routes = [];
|
||||||
const pages = [];
|
const pages = [];
|
||||||
// Import pages list
|
// Import pages list
|
||||||
fs.readdirSync('./app/components/pages').forEach(file => {
|
fs.readdirSync('./app/components/pages')
|
||||||
pages.push(file.replace(/(.*)\.vue/, '$1'));
|
.forEach(file => pages.push(file.replace(/(.*)\.vue/, '$1')));
|
||||||
});
|
|
||||||
// Localized routes
|
for (let j = 0; j < pages.length; j += 1) {
|
||||||
for (let i = 0; i < locales.length; i += 1) {
|
routes.push(`${root}${pages[j].toLowerCase().replace('home', '')}`);
|
||||||
for (let j = 0; j < pages.length; j += 1) {
|
// Localized routes
|
||||||
routes.push(
|
for (let i = 0; i < locales.length; i += 1) {
|
||||||
`${root}${locales[i]}${pages[j].toLowerCase().replace(/^/, '/').replace('/home', '')}`
|
routes.push(`${root}${locales[i]}${pages[j].toLowerCase().replace(/^/, '/').replace('/home', '')}`);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,6 +174,9 @@ if (process.env.NODE_ENV === 'development') {
|
||||||
}),
|
}),
|
||||||
new OptimizeCSSAssetsPlugin({}),
|
new OptimizeCSSAssetsPlugin({}),
|
||||||
],
|
],
|
||||||
|
splitChunks: {
|
||||||
|
chunks: 'all',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
module.exports.plugins.push(
|
module.exports.plugins.push(
|
||||||
new webpack.DefinePlugin({
|
new webpack.DefinePlugin({
|
||||||
|
@ -182,6 +201,14 @@ if (process.env.NODE_ENV === 'development') {
|
||||||
inject: {
|
inject: {
|
||||||
prerender: true,
|
prerender: true,
|
||||||
},
|
},
|
||||||
|
postProcess(renderedRoute) {
|
||||||
|
// eslint-disable-next-line no-param-reassign
|
||||||
|
renderedRoute.html = renderedRoute.html
|
||||||
|
.replace(/<script (.*?)>/g, '<script $1 defer>')
|
||||||
|
.replace('id="app"', 'id="app" data-server-rendered="true"');
|
||||||
|
|
||||||
|
return renderedRoute;
|
||||||
|
},
|
||||||
}),
|
}),
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
@ -189,21 +216,21 @@ if (process.env.NODE_ENV === 'development') {
|
||||||
|
|
||||||
// Create ./public/img/lg/* symlinks only if images need translation
|
// Create ./public/img/lg/* symlinks only if images need translation
|
||||||
if (fs.existsSync('./app/assets/img/fr')) {
|
if (fs.existsSync('./app/assets/img/fr')) {
|
||||||
if (!fs.existsSync('./public')){ fs.mkdirSync('./public'); }
|
if (!fs.existsSync('./public')) { fs.mkdirSync('./public'); }
|
||||||
if (!fs.existsSync(`./public${root}`)){ fs.mkdirSync(`./public${root}`); }
|
if (!fs.existsSync(`./public${root}`)) { fs.mkdirSync(`./public${root}`); }
|
||||||
if (!fs.existsSync(`./public${root}img`)){ fs.mkdirSync(`./public${root}img`); }
|
if (!fs.existsSync(`./public${root}img`)) { fs.mkdirSync(`./public${root}img`); }
|
||||||
for (let i = 0; i < locales.length; i += 1) {
|
for (let i = 0; i < locales.length; i += 1) {
|
||||||
if (!fs.existsSync(`./public${root}img/${locales[i]}`)){
|
if (!fs.existsSync(`./public${root}img/${locales[i]}`)) {
|
||||||
fs.mkdirSync(`./public${root}img/${locales[i]}`);
|
fs.mkdirSync(`./public${root}img/${locales[i]}`);
|
||||||
}
|
}
|
||||||
fs.readdirSync('./app/assets/img/fr').forEach(file => {
|
fs.readdirSync('./app/assets/img/fr').forEach((file) => {
|
||||||
if (!fs.existsSync(`./app/assets/img/${locales[i]}/${file}`)) {
|
if (!fs.existsSync(`./app/assets/img/${locales[i]}/${file}`)) {
|
||||||
const symlinkOrigin = (process.env.NODE_ENV === 'development')
|
const symlinkOrigin = (process.env.NODE_ENV === 'development')
|
||||||
? `../../../app/assets/img/fr/${file}` // [dev] relative to assets
|
? `../../../app/assets/img/fr/${file}` // [dev] relative to assets
|
||||||
: `../fr/${file}` // [prod] relative to public
|
: `../fr/${file}`; // [prod] relative to public
|
||||||
fs.symlink(symlinkOrigin, `./public${root}img/${locales[i]}/${file}`,
|
fs.symlink(symlinkOrigin,
|
||||||
function (err) { console.log(err); } // eslint-disable-line
|
`./public${root}img/${locales[i]}/${file}`,
|
||||||
);
|
(err) => { console.log(err) }); // eslint-disable-line
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
7
zanata/scripts/selfpo2yml.sh
Executable file
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/bash
|
||||||
|
for i in zanata/po/*.po
|
||||||
|
do
|
||||||
|
j=$(echo $i | cut -d '.' -f 1 | cut -d '/' -f 3)
|
||||||
|
po2yaml -i $i --progress none -t zanata/backup/$j.yml -o zanata/yml/$j.yml
|
||||||
|
done
|
||||||
|
cp zanata/yml/*.yml app/locales/
|
16
zanata/scripts/selfyml2po.sh
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/bash
|
||||||
|
cp app/locales/*.yml zanata/yml/
|
||||||
|
yaml2po -P --progress=none -i zanata/yml/en.yml -o zanata/po/${PWD##*/}.pot
|
||||||
|
for i in app/locales/*.yml
|
||||||
|
do
|
||||||
|
j=$(echo $i | cut -d '.' -f 1 | cut -d '/' -f 3)
|
||||||
|
yaml2po --progress=none -t zanata/yml/$j.yml -i zanata/yml/$j.yml -o zanata/po/$j.po
|
||||||
|
|
||||||
|
# Rename empty (almost) .po
|
||||||
|
tail -n +2 zanata/po/$j.po > zanata/po/tmp.1
|
||||||
|
tail -n +2 zanata/po/${PWD##*/}.pot > zanata/po/tmp.2
|
||||||
|
if((`stat -c%s "zanata/po/tmp.1"` <= `stat -c%s "zanata/po/tmp.2"`));then
|
||||||
|
mv zanata/po/$j.po zanata/po/$j.err
|
||||||
|
fi
|
||||||
|
rm zanata/po/tmp.1 zanata/po/tmp.2
|
||||||
|
done
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<config xmlns="http://zanata.org/namespace/config/">
|
<config xmlns="http://zanata.org/namespace/config/">
|
||||||
<url>https://trad.framasoft.org/</url>
|
<url>https://trad.framasoft.org/</url>
|
||||||
<project>join-peertube</project>
|
<project></project>
|
||||||
<project-version>master</project-version>
|
<project-version>master</project-version>
|
||||||
<project-type>gettext</project-type>
|
<project-type>gettext</project-type>
|
||||||
<src-dir>zanata/po</src-dir>
|
<src-dir>zanata/po</src-dir>
|
||||||
|
|