@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.
Files changed (35) hide show
  1. package/README.md +6 -4
  2. package/index.ts +5 -2
  3. package/package.json +3 -2
  4. package/src/App.vue +7 -12
  5. package/src/assets/general.scss +1 -0
  6. package/src/components/display/emission/EmissionItem.vue +3 -3
  7. package/src/components/display/emission/EmissionPlayerItem.vue +4 -4
  8. package/src/components/display/organisation/OrganisationChooser.vue +2 -2
  9. package/src/components/display/participant/ParticipantItem.vue +3 -3
  10. package/src/components/display/participant/ParticipantList.vue +1 -1
  11. package/src/components/display/playlist/PlaylistItem.vue +3 -6
  12. package/src/components/display/playlist/PlaylistList.vue +1 -1
  13. package/src/components/display/playlist/PodcastList.vue +1 -1
  14. package/src/components/display/podcasts/AnimatorsItem.vue +1 -2
  15. package/src/components/display/podcasts/PodcastImage.vue +4 -1
  16. package/src/components/display/podcasts/PodcastItem.vue +15 -173
  17. package/src/components/display/podcasts/PodcastItemInfo.vue +170 -0
  18. package/src/components/display/podcasts/PodcastList.vue +35 -34
  19. package/src/components/display/podcasts/PodcastPlayBar.vue +6 -6
  20. package/src/components/display/sharing/SharePlayerTypes.vue +1 -1
  21. package/src/components/form/ClassicSelect.vue +68 -0
  22. package/src/components/misc/Footer.vue +28 -11
  23. package/src/components/misc/PlayerButtons.vue +1 -1
  24. package/src/components/mixins/organisationFilter.ts +21 -14
  25. package/src/components/pages/Emission.vue +1 -1
  26. package/src/components/pages/Participant.vue +3 -5
  27. package/src/components/pages/Playlist.vue +1 -1
  28. package/src/locale/de.ts +6 -6
  29. package/src/locale/en.ts +18 -18
  30. package/src/locale/es.ts +2 -2
  31. package/src/locale/fr.ts +1 -1
  32. package/src/locale/it.ts +1 -1
  33. package/src/locale/sl.ts +2 -2
  34. package/src/main.ts +14 -0
  35. 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
- <div
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
- :class="buttonPlus?'ms-1':''"
36
- class="saooti-more"
37
- />
38
- </button>
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
- podcast: { default: ()=>({}), type: Object as ()=>Podcast },
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.podcast.podcastId !== this.$store.state.player.podcast.podcastId){
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.podcast.podcastId === this.$store.state.player.podcast.podcastId){
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.podcast.duration/1000));
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.podcast.podcastId !== this.$store.state.player.podcast.podcastId){return;}
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
- <a
96
- class="link-hover c-hand"
97
- @click="changeLanguage"
98
- >{{
99
- $t('Change locale')
100
- }}</a>
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
- if('fr'===this.$i18n.locale){
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);
@@ -4,7 +4,7 @@
4
4
  :to="podcastShareUrl"
5
5
  >
6
6
  <img
7
- :src="podcastImage"
7
+ v-lazy="podcastImage"
8
8
  :alt="$t('Podcast image')"
9
9
  class="player-image"
10
10
  >
@@ -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
- const response = await octopusApi.fetchOrganisation(organisationId);
9
- const data = await octopusApi.fetchTopics(organisationId, {
10
- sort:'HOMEPAGEORDER',
11
- homePageOrder: true
12
- });
13
- const isLive = await octopusApi.liveEnabledOrganisation(organisationId);
14
- this.$store.commit('filterOrga', {
15
- orgaId: organisationId,
16
- imgUrl: response.imageUrl,
17
- rubriquageArray: data.filter((element: Rubriquage)=>{
18
- return element.rubriques.length;
19
- }),
20
- isLive: isLive
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
  });
@@ -26,7 +26,7 @@
26
26
  <div class="mb-5 mt-3 descriptionText">
27
27
  <img
28
28
  v-if="!isOuestFrance"
29
- :src="imageUrl"
29
+ v-lazy="imageUrl"
30
30
  :alt="$t('Emission name image', { name: name })"
31
31
  class="img-box shadow-element float-start me-3 mb-3"
32
32
  >
@@ -14,12 +14,10 @@
14
14
  <div
15
15
  class="d-flex flex-column align-items-center mb-3"
16
16
  >
17
- <div
17
+ <img
18
+ v-lazy="participant.imageUrl"
18
19
  class="img-box-circle mb-3"
19
- :style="{
20
- 'background-image': 'url(\'' + participant.imageUrl + '\')',
21
- }"
22
- />
20
+ >
23
21
  <h2 class="text-capitalize">
24
22
  {{ name }}
25
23
  </h2>
@@ -15,7 +15,7 @@
15
15
  <h2>{{ name }}</h2>
16
16
  <div class="mb-5 mt-3 descriptionText">
17
17
  <img
18
- :src="imageUrl"
18
+ v-lazy="imageUrl"
19
19
  :alt="$t('Playlist name image', { name: name })"
20
20
  class="img-box shadow-element float-start me-3 mb-3"
21
21
  >
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 "{Name}"',
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 serie button': "Alle Folgen dieser Reihe",
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': "Nach Relevanz",
244
- 'sort by alphabetical': "In alphabetischer Reihenfolge",
245
- 'sort by date': "Nach Datum",
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': "Französisch",
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 of "{name}"',
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 Producer by title',
56
- 'Look for emission name': 'Search for serie by title',
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 serie',
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 serie filter',
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 serie {name}",
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 of this serie",
72
- 'More episodes of this category : {name}': "More episodes of this category : {name}",
73
- 'All podcast serie button': "All podcast serie button",
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 serie",
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 serie does not have any podcasts",
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 serie version',
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 serie",
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 serie title",
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 serie",
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': 'En français',
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 serie button': "Todos los episodios del programa",
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': 'En français',
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': 'In english',
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': 'In francese',
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 buttonn': "Vsi podkasti iz tega sklopa",
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': 'FR',
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');
@@ -12,7 +12,7 @@ const state:paramStore = {
12
12
  isPlaylist: false,
13
13
  isProduction: true,
14
14
  isContribution: true,
15
- ApiUri: 'https://api.staging.saooti.org/',
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.staging.saooti.org/',
29
+ MiniplayerUri: 'https://playerbeta.dev2.saooti.org/',
30
30
  ouestFranceStyle: false,
31
31
  downloadButton: false,
32
- hlsUri: 'https://hls.staging.saooti.org/',
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.staging.saooti.org/',
89
- commentsUrl: 'http://comments.staging.saooti.org/',
90
- studioUrl: 'http://studio.staging.saooti.org/',
91
- playerUrl: 'https://playerbeta.staging.saooti.org/',
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
  },