@saooti/octopus-sdk 31.0.7 → 31.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/index.ts +5 -2
- package/package.json +3 -2
- package/src/App.vue +7 -12
- package/src/assets/general.scss +1 -0
- package/src/components/display/emission/EmissionItem.vue +3 -3
- package/src/components/display/emission/EmissionPlayerItem.vue +4 -4
- package/src/components/display/organisation/OrganisationChooser.vue +2 -2
- package/src/components/display/participant/ParticipantItem.vue +3 -3
- package/src/components/display/participant/ParticipantList.vue +1 -1
- package/src/components/display/playlist/PlaylistItem.vue +3 -6
- package/src/components/display/playlist/PlaylistList.vue +1 -1
- package/src/components/display/playlist/PodcastList.vue +1 -1
- package/src/components/display/podcasts/AnimatorsItem.vue +1 -2
- package/src/components/display/podcasts/PodcastImage.vue +4 -1
- package/src/components/display/podcasts/PodcastItem.vue +15 -173
- package/src/components/display/podcasts/PodcastItemInfo.vue +170 -0
- package/src/components/display/podcasts/PodcastList.vue +35 -34
- package/src/components/display/podcasts/PodcastPlayBar.vue +6 -6
- package/src/components/display/sharing/SharePlayerTypes.vue +1 -1
- package/src/components/form/ClassicSelect.vue +68 -0
- package/src/components/misc/Footer.vue +28 -11
- package/src/components/misc/PlayerButtons.vue +1 -1
- package/src/components/mixins/organisationFilter.ts +21 -14
- package/src/components/pages/Emission.vue +1 -1
- package/src/components/pages/Participant.vue +3 -5
- package/src/components/pages/Playlist.vue +1 -1
- package/src/locale/de.ts +6 -6
- package/src/locale/en.ts +18 -18
- package/src/locale/es.ts +2 -2
- package/src/locale/fr.ts +1 -1
- package/src/locale/it.ts +1 -1
- package/src/locale/sl.ts +2 -2
- package/src/main.ts +14 -0
- package/src/store/paramStore.ts +7 -7
|
@@ -4,38 +4,39 @@
|
|
|
4
4
|
:loading-text="loading?$t('Loading podcasts ...'):undefined"
|
|
5
5
|
:error-text="loaded && !podcasts.length?$t(`No podcast match your query`):undefined"
|
|
6
6
|
/>
|
|
7
|
-
<
|
|
8
|
-
v-if="showCount && loaded && podcasts.length > 1"
|
|
9
|
-
class="text-secondary mb-2"
|
|
10
|
-
>
|
|
11
|
-
{{ $t('Number podcasts', { nb: totalCount }) + sortText }}
|
|
12
|
-
</div>
|
|
13
|
-
<ul
|
|
14
|
-
v-show="loaded"
|
|
15
|
-
class="podcast-list"
|
|
16
|
-
>
|
|
17
|
-
<PodcastItem
|
|
18
|
-
v-for="p in podcasts"
|
|
19
|
-
:key="p.podcastId"
|
|
20
|
-
:podcast="p"
|
|
21
|
-
/>
|
|
22
|
-
</ul>
|
|
23
|
-
<button
|
|
24
|
-
v-show="!allFetched && loaded"
|
|
25
|
-
class="btn"
|
|
26
|
-
:class="buttonPlus ? 'btn-link align-self-center width-fit-content m-4' : 'btn-more'"
|
|
27
|
-
:disabled="inFetching"
|
|
28
|
-
:title="$t('See more')"
|
|
29
|
-
@click="displayMore"
|
|
30
|
-
>
|
|
31
|
-
<template v-if="buttonPlus">
|
|
32
|
-
{{ $t('See more') }}
|
|
33
|
-
</template>
|
|
7
|
+
<template v-if="loaded">
|
|
34
8
|
<div
|
|
35
|
-
|
|
36
|
-
class="
|
|
37
|
-
|
|
38
|
-
|
|
9
|
+
v-if="showCount && podcasts.length > 1"
|
|
10
|
+
class="text-secondary mb-2"
|
|
11
|
+
>
|
|
12
|
+
{{ $t('Number podcasts', { nb: totalCount }) + sortText }}
|
|
13
|
+
</div>
|
|
14
|
+
<ul
|
|
15
|
+
class="podcast-list"
|
|
16
|
+
>
|
|
17
|
+
<PodcastItem
|
|
18
|
+
v-for="p in podcasts"
|
|
19
|
+
:key="p.podcastId"
|
|
20
|
+
:podcast="p"
|
|
21
|
+
/>
|
|
22
|
+
</ul>
|
|
23
|
+
<button
|
|
24
|
+
v-show="!allFetched"
|
|
25
|
+
class="btn"
|
|
26
|
+
:class="buttonPlus ? 'btn-link align-self-center width-fit-content m-4' : 'btn-more'"
|
|
27
|
+
:disabled="inFetching"
|
|
28
|
+
:title="$t('See more')"
|
|
29
|
+
@click="displayMore"
|
|
30
|
+
>
|
|
31
|
+
<template v-if="buttonPlus">
|
|
32
|
+
{{ $t('See more') }}
|
|
33
|
+
</template>
|
|
34
|
+
<div
|
|
35
|
+
:class="buttonPlus?'ms-1':''"
|
|
36
|
+
class="saooti-more"
|
|
37
|
+
/>
|
|
38
|
+
</button>
|
|
39
|
+
</template>
|
|
39
40
|
</div>
|
|
40
41
|
</template>
|
|
41
42
|
|
|
@@ -93,7 +94,7 @@ export default defineComponent({
|
|
|
93
94
|
inFetching: false as boolean,
|
|
94
95
|
};
|
|
95
96
|
},
|
|
96
|
-
|
|
97
|
+
|
|
97
98
|
computed: {
|
|
98
99
|
allFetched(): boolean {
|
|
99
100
|
return this.dfirst >= this.totalCount;
|
|
@@ -144,8 +145,8 @@ export default defineComponent({
|
|
|
144
145
|
},
|
|
145
146
|
},
|
|
146
147
|
|
|
147
|
-
created() {
|
|
148
|
-
this.fetchContent(true);
|
|
148
|
+
async created() {
|
|
149
|
+
await this.fetchContent(true);
|
|
149
150
|
},
|
|
150
151
|
methods: {
|
|
151
152
|
async fetchContent(reset: boolean): Promise<void> {
|
|
@@ -32,7 +32,6 @@
|
|
|
32
32
|
</template>
|
|
33
33
|
|
|
34
34
|
<script lang="ts">
|
|
35
|
-
import { Podcast } from '@/store/class/general/podcast';
|
|
36
35
|
import DurationHelper from '../../../helper/duration';
|
|
37
36
|
import { displayMethods } from '../../mixins/functions';
|
|
38
37
|
import { state } from '../../../store/paramStore';
|
|
@@ -41,21 +40,22 @@ export default defineComponent({
|
|
|
41
40
|
name: 'PodcastPlayBar',
|
|
42
41
|
mixins: [displayMethods],
|
|
43
42
|
props: {
|
|
44
|
-
|
|
43
|
+
podcastId: { default: undefined, type: Number},
|
|
44
|
+
duration: { default: 0, type: Number},
|
|
45
45
|
},
|
|
46
46
|
computed: {
|
|
47
47
|
isProgressBar(): boolean{
|
|
48
48
|
return (state.emissionsPage.progressBar as boolean);
|
|
49
49
|
},
|
|
50
50
|
percentProgress(): number{
|
|
51
|
-
if(!this.$store.state.player.podcast || this.
|
|
51
|
+
if(!this.$store.state.player.podcast || this.podcastId !== this.$store.state.player.podcast.podcastId){
|
|
52
52
|
return 0;
|
|
53
53
|
}
|
|
54
54
|
if(!this.$store.state.player.elapsed){return 0;}
|
|
55
55
|
return this.$store.state.player.elapsed * 100;
|
|
56
56
|
},
|
|
57
57
|
playedTime(): string{
|
|
58
|
-
if(this.$store.state.player.podcast && this.
|
|
58
|
+
if(this.$store.state.player.podcast && this.podcastId === this.$store.state.player.podcast.podcastId){
|
|
59
59
|
if (this.$store.state.player.elapsed && this.$store.state.player.elapsed > 0 && this.$store.state.player.total && this.$store.state.player.total > 0) {
|
|
60
60
|
return DurationHelper.formatDuration(
|
|
61
61
|
Math.round(this.$store.state.player.elapsed * this.$store.state.player.total)
|
|
@@ -65,12 +65,12 @@ export default defineComponent({
|
|
|
65
65
|
return '00:00';
|
|
66
66
|
},
|
|
67
67
|
totalTime(): string {
|
|
68
|
-
return DurationHelper.formatDuration(Math.round(this.
|
|
68
|
+
return DurationHelper.formatDuration(Math.round(this.duration/1000));
|
|
69
69
|
},
|
|
70
70
|
},
|
|
71
71
|
methods: {
|
|
72
72
|
seekTo(event: MouseEvent): void {
|
|
73
|
-
if(!this.$store.state.player.podcast || this.
|
|
73
|
+
if(!this.$store.state.player.podcast || this.podcastId !== this.$store.state.player.podcast.podcastId){return;}
|
|
74
74
|
const rect = (event.currentTarget as Element).getBoundingClientRect();
|
|
75
75
|
const barWidth = (event.currentTarget as Element).clientWidth;
|
|
76
76
|
const x = event.clientX - rect.left;
|
|
@@ -99,7 +99,7 @@ export default defineComponent({
|
|
|
99
99
|
}
|
|
100
100
|
this.customPlayers = this.customPlayers.concat(playersContent);
|
|
101
101
|
if(trySelect && this.customPlayers[0] && this.customPlayers[0].selected){
|
|
102
|
-
this.$emit('update:iFrameModel',this.customPlayers[0].customId);
|
|
102
|
+
this.$emit('update:iFrameModel',this.customPlayers[0].customId.toString());
|
|
103
103
|
return false;
|
|
104
104
|
}
|
|
105
105
|
return true;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="classic-select">
|
|
3
|
+
<label
|
|
4
|
+
:for="idSelect"
|
|
5
|
+
class="form-label mt-2"
|
|
6
|
+
:class="displayLabel?'':'d-none'"
|
|
7
|
+
>{{ label }}</label>
|
|
8
|
+
<select
|
|
9
|
+
:id="idSelect"
|
|
10
|
+
v-model="textValue"
|
|
11
|
+
:disabled="isDisabled"
|
|
12
|
+
class="c-hand"
|
|
13
|
+
>
|
|
14
|
+
<option
|
|
15
|
+
v-for="option in options"
|
|
16
|
+
:key="option.title"
|
|
17
|
+
:value="option.value"
|
|
18
|
+
>
|
|
19
|
+
{{ option.title }}
|
|
20
|
+
</option>
|
|
21
|
+
</select>
|
|
22
|
+
</div>
|
|
23
|
+
</template>
|
|
24
|
+
<script lang="ts">
|
|
25
|
+
import { defineComponent } from 'vue';
|
|
26
|
+
export default defineComponent({
|
|
27
|
+
name: 'ClassicSelect',
|
|
28
|
+
|
|
29
|
+
props: {
|
|
30
|
+
idSelect: { default: '', type: String },
|
|
31
|
+
label: { default: '', type: String },
|
|
32
|
+
displayLabel:{default: true, type: Boolean},
|
|
33
|
+
isDisabled: { default: false, type: Boolean },
|
|
34
|
+
options: { default: ()=>[], type: Array as () => Array<{title: string, value: string|undefined}> },
|
|
35
|
+
textInit: { default: undefined, type: String },
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
emits: ['update:textInit'],
|
|
39
|
+
|
|
40
|
+
data() {
|
|
41
|
+
return {
|
|
42
|
+
textValue: undefined as string|undefined,
|
|
43
|
+
};
|
|
44
|
+
},
|
|
45
|
+
watch: {
|
|
46
|
+
textValue(){
|
|
47
|
+
if(this.textInit !== this.textValue){
|
|
48
|
+
this.$emit('update:textInit', this.textValue)
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
textInit(){
|
|
52
|
+
if(this.textInit !== this.textValue){
|
|
53
|
+
this.textValue =this.textInit;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
mounted(){
|
|
58
|
+
this.textValue = this.textInit;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
</script>
|
|
62
|
+
<style lang="scss">
|
|
63
|
+
.octopus-app{
|
|
64
|
+
.classic-select select{
|
|
65
|
+
width: inherit;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
</style>
|
|
@@ -92,12 +92,18 @@
|
|
|
92
92
|
$t('Used libraries')
|
|
93
93
|
}}
|
|
94
94
|
</router-link>
|
|
95
|
-
<
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
$t('Change locale')
|
|
100
|
-
|
|
95
|
+
<ClassicSelect
|
|
96
|
+
v-model:textInit="language"
|
|
97
|
+
:display-label="false"
|
|
98
|
+
id-select="language-chooser-select"
|
|
99
|
+
:label="$t('Change locale')"
|
|
100
|
+
:options="[{title:'Deutsch', value:'de'},
|
|
101
|
+
{title:'English', value:'en'},
|
|
102
|
+
{title:'Español', value:'es'},
|
|
103
|
+
{title:'Français', value:'fr'},
|
|
104
|
+
{title:'Italiano', value:'it'},
|
|
105
|
+
{title:'Slovenščina', value:'sl'}]"
|
|
106
|
+
/>
|
|
101
107
|
</div>
|
|
102
108
|
</div>
|
|
103
109
|
<hr class="show-phone">
|
|
@@ -136,6 +142,7 @@
|
|
|
136
142
|
</template>
|
|
137
143
|
|
|
138
144
|
<script lang="ts">
|
|
145
|
+
import ClassicSelect from '../form/ClassicSelect.vue';
|
|
139
146
|
import Player from './Player.vue';
|
|
140
147
|
import { state } from '../../store/paramStore';
|
|
141
148
|
import octopusApi from '@saooti/octopus-api';
|
|
@@ -147,8 +154,16 @@ export default defineComponent({
|
|
|
147
154
|
name: 'Footer',
|
|
148
155
|
components: {
|
|
149
156
|
Player,
|
|
157
|
+
ClassicSelect
|
|
158
|
+
},
|
|
159
|
+
|
|
160
|
+
data() {
|
|
161
|
+
return {
|
|
162
|
+
language: this.$i18n.locale as string,
|
|
163
|
+
};
|
|
150
164
|
},
|
|
151
165
|
|
|
166
|
+
|
|
152
167
|
computed: {
|
|
153
168
|
isPodcastmaker(): boolean {
|
|
154
169
|
return (state.generalParameters.podcastmaker as boolean);
|
|
@@ -167,6 +182,12 @@ export default defineComponent({
|
|
|
167
182
|
},
|
|
168
183
|
},
|
|
169
184
|
|
|
185
|
+
watch:{
|
|
186
|
+
language(){
|
|
187
|
+
this.changeLanguage();
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
|
|
170
191
|
methods: {
|
|
171
192
|
showBlackBorder(hide: boolean): void {
|
|
172
193
|
const footerElement = document.getElementById('footer');
|
|
@@ -178,11 +199,7 @@ export default defineComponent({
|
|
|
178
199
|
}
|
|
179
200
|
},
|
|
180
201
|
changeLanguage(): void{
|
|
181
|
-
|
|
182
|
-
this.$i18n.locale= "en";
|
|
183
|
-
}else{
|
|
184
|
-
this.$i18n.locale= "fr";
|
|
185
|
-
}
|
|
202
|
+
this.$i18n.locale= this.language;
|
|
186
203
|
moment.locale(this.$i18n.locale);
|
|
187
204
|
octopusApi.fetchCategories({ lang: this.$i18n.locale }).then((data: Array<Category>) => {
|
|
188
205
|
this.$store.commit('categoriesSet', data);
|
|
@@ -1,24 +1,31 @@
|
|
|
1
1
|
|
|
2
|
+
import { handle403 } from '../mixins/handle403';
|
|
2
3
|
import { Rubriquage } from "@/store/class/rubrique/rubriquage";
|
|
3
4
|
import octopusApi from '@saooti/octopus-api';
|
|
4
5
|
import { defineComponent } from 'vue'
|
|
6
|
+
import { AxiosError } from 'axios';
|
|
5
7
|
export const orgaFilter = defineComponent({
|
|
8
|
+
mixins: [handle403],
|
|
6
9
|
methods: {
|
|
7
10
|
async selectOrganisation(organisationId: string): Promise<void> {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
11
|
+
try {
|
|
12
|
+
const response = await octopusApi.fetchOrganisation(organisationId);
|
|
13
|
+
const data = await octopusApi.fetchTopics(organisationId, {
|
|
14
|
+
sort:'HOMEPAGEORDER',
|
|
15
|
+
homePageOrder: true
|
|
16
|
+
});
|
|
17
|
+
const isLive = await octopusApi.liveEnabledOrganisation(organisationId);
|
|
18
|
+
this.$store.commit('filterOrga', {
|
|
19
|
+
orgaId: organisationId,
|
|
20
|
+
imgUrl: response.imageUrl,
|
|
21
|
+
rubriquageArray: data.filter((element: Rubriquage)=>{
|
|
22
|
+
return element.rubriques.length;
|
|
23
|
+
}),
|
|
24
|
+
isLive: isLive
|
|
25
|
+
});
|
|
26
|
+
} catch (error) {
|
|
27
|
+
this.handle403((error as AxiosError));
|
|
28
|
+
}
|
|
22
29
|
},
|
|
23
30
|
},
|
|
24
31
|
});
|
|
@@ -14,12 +14,10 @@
|
|
|
14
14
|
<div
|
|
15
15
|
class="d-flex flex-column align-items-center mb-3"
|
|
16
16
|
>
|
|
17
|
-
<
|
|
17
|
+
<img
|
|
18
|
+
v-lazy="participant.imageUrl"
|
|
18
19
|
class="img-box-circle mb-3"
|
|
19
|
-
|
|
20
|
-
'background-image': 'url(\'' + participant.imageUrl + '\')',
|
|
21
|
-
}"
|
|
22
|
-
/>
|
|
20
|
+
>
|
|
23
21
|
<h2 class="text-capitalize">
|
|
24
22
|
{{ name }}
|
|
25
23
|
</h2>
|
package/src/locale/de.ts
CHANGED
|
@@ -41,7 +41,7 @@ export default{
|
|
|
41
41
|
Cancel: "Abbrechen",
|
|
42
42
|
'Most popular': "Beliebteste",
|
|
43
43
|
'Last added': "Neueste",
|
|
44
|
-
'All podcast button': 'Alle Podcasts von "{
|
|
44
|
+
'All podcast button': 'Alle Podcasts von "{name}"',
|
|
45
45
|
'Podcast search': "Podcasts durchsuchen",
|
|
46
46
|
'No podcast match your query':
|
|
47
47
|
"Kein Podcast entspricht Ihrer Suchanfrage.",
|
|
@@ -70,7 +70,7 @@ export default{
|
|
|
70
70
|
'Episode name image': "Bild zur Folge {name}",
|
|
71
71
|
'More episodes of this emission': "Mehr Folgen aus dieser Reihe",
|
|
72
72
|
'More episodes of this category : {name}': "Mehr Folgen aus dieser Kategorie: {name}",
|
|
73
|
-
'All podcast
|
|
73
|
+
'All podcast emission button': "Alle Folgen dieser Reihe",
|
|
74
74
|
Duration: "Dauer: {duration}",
|
|
75
75
|
Animator: "Autor",
|
|
76
76
|
'No category filter': "Keine Kategorie",
|
|
@@ -240,9 +240,9 @@ export default{
|
|
|
240
240
|
'All live emission button': "Alle Live-Übertragungen der Reihe",
|
|
241
241
|
'player parameters': "Player-Einstellungen",
|
|
242
242
|
'Start at': "Beginnt um",
|
|
243
|
-
'sort by score': "
|
|
244
|
-
'sort by alphabetical': "
|
|
245
|
-
'sort by date': "
|
|
243
|
+
'sort by score': "nach Relevanz",
|
|
244
|
+
'sort by alphabetical': "in alphabetischer Reihenfolge",
|
|
245
|
+
'sort by date': "nach Datum",
|
|
246
246
|
'Be the first to react': "Ersten Kommentar hinterlassen",
|
|
247
247
|
"Podcast's comments": "Kommentare zum Podcast",
|
|
248
248
|
'()': '({nb})',
|
|
@@ -282,7 +282,7 @@ export default{
|
|
|
282
282
|
'Display my podcasts to validate': "Meine noch nicht validierten Podcasts anzeigen",
|
|
283
283
|
'Podcast not validated': "Nicht validierter Podcast",
|
|
284
284
|
'Podcast to validate': "Podcast noch nicht validiert",
|
|
285
|
-
'Change locale': "
|
|
285
|
+
'Change locale': "Ändere die Sprache",
|
|
286
286
|
'Refresh': "Aktualisieren",
|
|
287
287
|
'See associated article':"Artikel lesen",
|
|
288
288
|
"Display associated article":"Zugehörigen Artikel anzeigen",
|
package/src/locale/en.ts
CHANGED
|
@@ -41,7 +41,7 @@ export default{
|
|
|
41
41
|
Cancel: 'Cancel',
|
|
42
42
|
'Most popular': 'Most popular',
|
|
43
43
|
'Last added': 'Last added',
|
|
44
|
-
'All podcast button': 'All the podcasts
|
|
44
|
+
'All podcast button': 'All the podcasts from "{name}"',
|
|
45
45
|
'Podcast search': 'Search in the podcasts',
|
|
46
46
|
'No podcast match your query':
|
|
47
47
|
'No podcast matches your query',
|
|
@@ -51,26 +51,26 @@ export default{
|
|
|
51
51
|
'All productors': 'All producers',
|
|
52
52
|
'All emissions': 'All series',
|
|
53
53
|
'Filter by keyword : ': 'Filter by keyword : ',
|
|
54
|
-
'Look for participant name': 'Search for speaker by name',
|
|
55
|
-
'Look for productor name': 'Search for
|
|
56
|
-
'Look for emission name': 'Search for
|
|
57
|
-
'Look for podcast name': 'Search for podcast by title',
|
|
54
|
+
'Look for participant name': 'Search for a speaker by name',
|
|
55
|
+
'Look for productor name': 'Search for a producer by title',
|
|
56
|
+
'Look for emission name': 'Search for a series by title',
|
|
57
|
+
'Look for podcast name': 'Search for a podcast by title',
|
|
58
58
|
'Type string to filter by organisation': 'Filter by organization',
|
|
59
|
-
'Type string to filter by emission': 'Filter by
|
|
59
|
+
'Type string to filter by emission': 'Filter by series',
|
|
60
60
|
'Type string to filter by podcast': 'Filter by podcast',
|
|
61
61
|
'No organisation filter': 'No organization filter',
|
|
62
|
-
'No emission filter': 'No
|
|
62
|
+
'No emission filter': 'No series filter',
|
|
63
63
|
'No podcast filter': 'No podcast filter',
|
|
64
64
|
'Loading participants ...': 'Loading speakers...',
|
|
65
65
|
'Loading productors ...': 'Loading Producers...',
|
|
66
66
|
'Loading emissions ...': 'Loading series...',
|
|
67
|
-
'Emission name image': "Image for the
|
|
67
|
+
'Emission name image': "Image for the series {name}",
|
|
68
68
|
'Loading content ...': 'Loading content...',
|
|
69
69
|
Episode: 'Episode',
|
|
70
70
|
'Episode name image': "Episode {name} image",
|
|
71
|
-
'More episodes of this emission': "More episodes
|
|
72
|
-
'More episodes of this category : {name}': "More episodes
|
|
73
|
-
'All podcast
|
|
71
|
+
'More episodes of this emission': "More episodes from this series",
|
|
72
|
+
'More episodes of this category : {name}': "More episodes from this category : {name}",
|
|
73
|
+
'All podcast emission button': "All podcast from this series",
|
|
74
74
|
Duration: 'Duration : {duration}',
|
|
75
75
|
Animator: 'Host',
|
|
76
76
|
'No category filter': 'No category filter',
|
|
@@ -113,15 +113,15 @@ export default{
|
|
|
113
113
|
'Search results': 'Search results for "{query}"',
|
|
114
114
|
'Search - no results': 'Search - no results for "{query}"',
|
|
115
115
|
Downloading: 'Downloading',
|
|
116
|
-
'Subscribe to this emission': "Subscribe to this
|
|
116
|
+
'Subscribe to this emission': "Subscribe to this series",
|
|
117
117
|
'Subscribe to this participant': "Subscribe to this speakers",
|
|
118
|
-
'Emission have not podcasts': "This
|
|
118
|
+
'Emission have not podcasts': "This series does not have any podcasts",
|
|
119
119
|
'Participant have not podcasts':
|
|
120
120
|
'Speaker is not associated to any podcasts',
|
|
121
121
|
'Default version': 'Default version',
|
|
122
122
|
'Large version': 'Large version',
|
|
123
123
|
'Emission version': 'Serie version',
|
|
124
|
-
'Large emission version': 'Large
|
|
124
|
+
'Large emission version': 'Large series version',
|
|
125
125
|
'Large suggestion version': 'Large suggestion version',
|
|
126
126
|
'Embed link': 'Embed miniplayer',
|
|
127
127
|
'Embedly link': 'Player link',
|
|
@@ -184,7 +184,7 @@ export default{
|
|
|
184
184
|
"Share this page without edit and share blocks",
|
|
185
185
|
'Podcast in cancelled status': 'Podcast has a cancelled status',
|
|
186
186
|
'Show every episode': 'Show every episode',
|
|
187
|
-
'Subscribe emission': "Subscribe to the
|
|
187
|
+
'Subscribe emission': "Subscribe to the series",
|
|
188
188
|
'Rss feed parameters': 'RSS Feed settings',
|
|
189
189
|
'Not share episodes before':
|
|
190
190
|
'Do not share episodes before',
|
|
@@ -206,7 +206,7 @@ export default{
|
|
|
206
206
|
Configuration: 'Configuration',
|
|
207
207
|
'HTML Code': 'HTML Code',
|
|
208
208
|
'Listen this episode': 'Listen to this episode',
|
|
209
|
-
'Display emission name': "Display the
|
|
209
|
+
'Display emission name': "Display the series title",
|
|
210
210
|
'Display participants list': 'Display the speakers list',
|
|
211
211
|
'Choose main color': 'Choose the main color',
|
|
212
212
|
'Octopus is ACPM Podcast accredited': 'Octopus is ACPM accredited',
|
|
@@ -237,7 +237,7 @@ export default{
|
|
|
237
237
|
'Podcasts in the playlist': 'All the Podcasts in the playlist',
|
|
238
238
|
'No podcasts in the playlist': "No podcasts in the playlist",
|
|
239
239
|
'Start in a while': 'Starts any minute',
|
|
240
|
-
'All live emission button': "All lives in the
|
|
240
|
+
'All live emission button': "All lives in the series",
|
|
241
241
|
'player parameters': 'Setting of player',
|
|
242
242
|
'Start at': 'Start at',
|
|
243
243
|
'sort by score': 'by relevancy score',
|
|
@@ -282,7 +282,7 @@ export default{
|
|
|
282
282
|
'Display my podcasts to validate': 'Display my podcasts to validate',
|
|
283
283
|
'Podcast not validated': "Podcast not validated",
|
|
284
284
|
'Podcast to validate': 'Podcast to validate',
|
|
285
|
-
'Change locale': '
|
|
285
|
+
'Change locale': 'Change the language',
|
|
286
286
|
'Refresh': 'Refresh',
|
|
287
287
|
'See associated article':"Read the article",
|
|
288
288
|
"Display associated article":"Display associated article",
|
package/src/locale/es.ts
CHANGED
|
@@ -70,7 +70,7 @@ export default{
|
|
|
70
70
|
'Episode name image': "Imagen del episodio {name}",
|
|
71
71
|
'More episodes of this emission': "Más episodios de este programa",
|
|
72
72
|
'More episodes of this category : {name}': "Más episodios de esta categoría: {name}",
|
|
73
|
-
'All podcast
|
|
73
|
+
'All podcast emission button': "Todos los episodios del programa",
|
|
74
74
|
Duration: 'Duración: {duration}',
|
|
75
75
|
Animator: 'Presentador/a',
|
|
76
76
|
'No category filter': 'Sin filtro de categoría',
|
|
@@ -282,7 +282,7 @@ export default{
|
|
|
282
282
|
'Display my podcasts to validate': 'Mostrar mis pódcast pendientes de validación',
|
|
283
283
|
'Podcast not validated': "Pódcast no validado",
|
|
284
284
|
'Podcast to validate': 'Pódcast pendiente de validación',
|
|
285
|
-
'Change locale': '
|
|
285
|
+
'Change locale': 'Cambiar el idioma',
|
|
286
286
|
'Refresh': 'Volver a cargar',
|
|
287
287
|
'See associated article':"Leer el artículo",
|
|
288
288
|
"Display associated article":"Mostrar el artículo asociado",
|
package/src/locale/fr.ts
CHANGED
|
@@ -282,7 +282,7 @@ export default{
|
|
|
282
282
|
'Display my podcasts to validate': 'Afficher mes épisodes à valider',
|
|
283
283
|
'Podcast not validated': "L'épisode n'est pas validé",
|
|
284
284
|
'Podcast to validate': 'Épisode à valider',
|
|
285
|
-
'Change locale': '
|
|
285
|
+
'Change locale': 'Changer la langue',
|
|
286
286
|
'Refresh': 'Rafraichir',
|
|
287
287
|
'See associated article':"Lire l'article",
|
|
288
288
|
"Display associated article":"Afficher l'article associé",
|
package/src/locale/it.ts
CHANGED
|
@@ -278,7 +278,7 @@ export default{
|
|
|
278
278
|
'Display my podcasts to validate': 'Mostra i miei podcast da validare',
|
|
279
279
|
'Podcast not validated': "Podcast non validato",
|
|
280
280
|
'Podcast to validate': 'Podcast da validare',
|
|
281
|
-
'Change locale': '
|
|
281
|
+
'Change locale': 'Cambia la lingua',
|
|
282
282
|
'Refresh': 'Aggiorna',
|
|
283
283
|
'See associated article':"Leggi l'articolo",
|
|
284
284
|
"Display associated article":"Mostra articolo associato",
|
package/src/locale/sl.ts
CHANGED
|
@@ -70,7 +70,7 @@ export default{
|
|
|
70
70
|
'Episode name image': "Slika epizode {name}",
|
|
71
71
|
'More episodes of this emission': "Več oddaj iz tega niza",
|
|
72
72
|
'More episodes of this category : ': 'Več oddaj iz te kategorije", {name}',
|
|
73
|
-
'All podcast emission
|
|
73
|
+
'All podcast emission button': "Vsi podkasti iz tega sklopa",
|
|
74
74
|
Duration: 'Trajanje: {duration}',
|
|
75
75
|
Animator: 'Napovedovalec',
|
|
76
76
|
'No category filter': 'Brez filtra za kategorijo',
|
|
@@ -282,7 +282,7 @@ export default{
|
|
|
282
282
|
'Display my podcasts to validate': 'Prikaži moje podkaste za potrditev',
|
|
283
283
|
'Podcast not validated': "Podkasti niso potrjeni",
|
|
284
284
|
'Podcast to validate': 'Podkasti, ki jih je treba potrditi',
|
|
285
|
-
'Change locale': '
|
|
285
|
+
'Change locale': 'Spremenite jezik',
|
|
286
286
|
'Refresh': 'Osveži',
|
|
287
287
|
'See associated article':"Read the article",
|
|
288
288
|
"Display associated article": "Prikaži povezan vir",
|
package/src/main.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createApp } from 'vue';
|
|
2
2
|
import { VueReCaptcha } from 'vue-recaptcha-v3';
|
|
3
|
+
import VueLazyLoad from 'vue3-lazyload';
|
|
3
4
|
import App from './App.vue';
|
|
4
5
|
import { createI18n, VueMessageType } from 'vue-i18n';
|
|
5
6
|
import I18nResources from './locale/messages';
|
|
@@ -19,12 +20,24 @@ const navigatorLang = navigator.language /* || navigator.userLanguage */;
|
|
|
19
20
|
let language = 'fr';
|
|
20
21
|
if(navigatorLang.includes('en')){
|
|
21
22
|
language = 'en';
|
|
23
|
+
}else if(navigatorLang.includes('it')){
|
|
24
|
+
language = 'it';
|
|
25
|
+
}else if(navigatorLang.includes('sl')){
|
|
26
|
+
language = 'sl';
|
|
27
|
+
}else if(navigatorLang.includes('es')){
|
|
28
|
+
language = 'es';
|
|
29
|
+
}else if(navigatorLang.includes('de')){
|
|
30
|
+
language = 'de';
|
|
22
31
|
}
|
|
23
32
|
let messages: {[key: string]: LocaleMessage<VueMessageType>} = I18nResources;
|
|
24
33
|
if (store.state.general.education) {
|
|
25
34
|
messages = {
|
|
26
35
|
fr: { ...I18nResources.fr, ...I18nResources.educationfr },
|
|
27
36
|
en: { ...I18nResources.en, ...I18nResources.educationen },
|
|
37
|
+
it: I18nResources.it,
|
|
38
|
+
sl: I18nResources.it,
|
|
39
|
+
es: I18nResources.es,
|
|
40
|
+
de: I18nResources.de,
|
|
28
41
|
};
|
|
29
42
|
}
|
|
30
43
|
const i18n = createI18n({
|
|
@@ -54,5 +67,6 @@ createApp(App)
|
|
|
54
67
|
.use(i18n)
|
|
55
68
|
.use(store)
|
|
56
69
|
.use(router)
|
|
70
|
+
.use(VueLazyLoad)
|
|
57
71
|
.use(VueReCaptcha, { siteKey: '6LfyP_4ZAAAAAPODj8nov2LvosIwcX0GYeBSungh' })
|
|
58
72
|
.mount('#app');
|
package/src/store/paramStore.ts
CHANGED
|
@@ -12,7 +12,7 @@ const state:paramStore = {
|
|
|
12
12
|
isPlaylist: false,
|
|
13
13
|
isProduction: true,
|
|
14
14
|
isContribution: true,
|
|
15
|
-
ApiUri: 'https://api.
|
|
15
|
+
ApiUri: 'https://api.dev2.saooti.org/',
|
|
16
16
|
podcastmaker: false,
|
|
17
17
|
buttonPlus: true,
|
|
18
18
|
allCategories: [],
|
|
@@ -26,10 +26,10 @@ const state:paramStore = {
|
|
|
26
26
|
SharePlayer: true,
|
|
27
27
|
ShareButtons: true,
|
|
28
28
|
ShareDistribution: true,
|
|
29
|
-
MiniplayerUri: 'https://playerbeta.
|
|
29
|
+
MiniplayerUri: 'https://playerbeta.dev2.saooti.org/',
|
|
30
30
|
ouestFranceStyle: false,
|
|
31
31
|
downloadButton: false,
|
|
32
|
-
hlsUri: 'https://hls.
|
|
32
|
+
hlsUri: 'https://hls.dev2.saooti.org/',
|
|
33
33
|
mainRubrique: 0,
|
|
34
34
|
resourceUrl: undefined
|
|
35
35
|
},
|
|
@@ -85,10 +85,10 @@ const state:paramStore = {
|
|
|
85
85
|
userName: '',
|
|
86
86
|
},
|
|
87
87
|
octopusApi: {
|
|
88
|
-
url: 'http://api.
|
|
89
|
-
commentsUrl: 'http://comments.
|
|
90
|
-
studioUrl: 'http://studio.
|
|
91
|
-
playerUrl: 'https://playerbeta.
|
|
88
|
+
url: 'http://api.dev2.saooti.org/',
|
|
89
|
+
commentsUrl: 'http://comments.dev2.saooti.org/',
|
|
90
|
+
studioUrl: 'http://studio.dev2.saooti.org/',
|
|
91
|
+
playerUrl: 'https://playerbeta.dev2.saooti.org/',
|
|
92
92
|
organisationId: undefined,
|
|
93
93
|
rubriqueIdFilter: undefined,
|
|
94
94
|
},
|