@saooti/octopus-sdk 38.3.7 → 38.3.9
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/package.json +1 -1
- package/src/assets/share.scss +22 -0
- package/src/components/display/playlist/PlaylistItem.vue +4 -13
- package/src/components/display/sharing/SharePlayer.vue +1 -1
- package/src/components/display/sharing/SharePlayerRadio.vue +3 -2
- package/src/components/misc/FooterSection.vue +3 -9
- package/src/components/misc/HomeDropdown.vue +47 -44
- package/src/components/misc/TopBar.vue +6 -1
- package/src/components/misc/modal/NewsletterModal.vue +22 -12
- package/src/components/pages/PodcastPage.vue +26 -16
- package/src/locale/de.ts +1 -2
- package/src/locale/en.ts +1 -1
- package/src/locale/es.ts +1 -2
- package/src/locale/fr.ts +1 -1
- package/src/locale/it.ts +1 -1
- package/src/locale/sl.ts +1 -1
package/package.json
CHANGED
package/src/assets/share.scss
CHANGED
|
@@ -1,4 +1,25 @@
|
|
|
1
1
|
.octopus-app{
|
|
2
|
+
.sticker-empty-ressource{
|
|
3
|
+
position: absolute;
|
|
4
|
+
top: 5px;
|
|
5
|
+
right: 5px;
|
|
6
|
+
align-self: center;
|
|
7
|
+
background: $blue-octopus;
|
|
8
|
+
padding: 0.5rem;
|
|
9
|
+
transition: all 0.5s ease;
|
|
10
|
+
color: white;
|
|
11
|
+
font-size: 0.6rem;
|
|
12
|
+
font-weight: bold;
|
|
13
|
+
letter-spacing: 1px;
|
|
14
|
+
box-shadow: 10px 10px 34px -15px hsla(0, 0%, 0%, 0.4);
|
|
15
|
+
border-radius: 255px 15px 225px 15px/15px 225px 15px 255px;
|
|
16
|
+
border: solid 2px #41403e;
|
|
17
|
+
cursor: auto;
|
|
18
|
+
&:hover {
|
|
19
|
+
box-shadow: 2px 8px 4px -6px hsla(0, 0%, 0%, 0.3);
|
|
20
|
+
background: $octopus-primary-color;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
2
23
|
.category-filter-no-filter {
|
|
3
24
|
position: absolute;
|
|
4
25
|
top: 0;
|
|
@@ -146,6 +167,7 @@
|
|
|
146
167
|
}
|
|
147
168
|
|
|
148
169
|
.emission-item-container{
|
|
170
|
+
position: relative;
|
|
149
171
|
list-style: none;
|
|
150
172
|
background: #fff;
|
|
151
173
|
border-radius: $octopus-borderradius;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
2
|
+
<div class="emission-item-container">
|
|
3
3
|
<router-link
|
|
4
4
|
:to="{
|
|
5
5
|
name: 'playlist',
|
|
@@ -10,12 +10,10 @@
|
|
|
10
10
|
class="d-flex flex-grow-1 text-dark"
|
|
11
11
|
>
|
|
12
12
|
<div class="emission-item-text">
|
|
13
|
+
<div v-if="!activePlaylist" class="sticker-empty-ressource">
|
|
14
|
+
{{ $t("Empty playlist") }}
|
|
15
|
+
</div>
|
|
13
16
|
<div class="d-flex align-items-center emission-name">
|
|
14
|
-
<span
|
|
15
|
-
v-if="!activePlaylist && !isPodcastmaker"
|
|
16
|
-
:title="$t('Playlist have not podcasts')"
|
|
17
|
-
class="saooti-warning text-danger me-1"
|
|
18
|
-
/>
|
|
19
17
|
{{ name }}
|
|
20
18
|
</div>
|
|
21
19
|
<div
|
|
@@ -84,13 +82,6 @@ export default defineComponent({
|
|
|
84
82
|
organisationId(): string | undefined {
|
|
85
83
|
return state.generalParameters.organisationId;
|
|
86
84
|
},
|
|
87
|
-
editRight(): boolean {
|
|
88
|
-
return (
|
|
89
|
-
(true === state.generalParameters.isPlaylist &&
|
|
90
|
-
this.organisationId === this.playlist.organisation?.id) ||
|
|
91
|
-
(state.generalParameters.isAdmin as boolean)
|
|
92
|
-
);
|
|
93
|
-
},
|
|
94
85
|
activePlaylist(): boolean {
|
|
95
86
|
return 0 !== Object.keys(this.playlist.samplingViews ?? []).length;
|
|
96
87
|
},
|
|
@@ -303,7 +303,7 @@ export default defineComponent({
|
|
|
303
303
|
if (this.isLiveReadyToRecord) {
|
|
304
304
|
this.iFrameModel = "large";
|
|
305
305
|
}
|
|
306
|
-
if("true"===this.podcast?.annotations?.["fromTTS"]){
|
|
306
|
+
if ("true" === this.podcast?.annotations?.["fromTTS"]) {
|
|
307
307
|
this.displayTranscript = false;
|
|
308
308
|
}
|
|
309
309
|
},
|
|
@@ -70,8 +70,9 @@ export default defineComponent({
|
|
|
70
70
|
computed: {
|
|
71
71
|
...mapState(useAuthStore, ["authOrganisation"]),
|
|
72
72
|
iFrameSrc(): string {
|
|
73
|
-
return `${state.podcastPage.MiniplayerUri}miniplayer/radio/${
|
|
74
|
-
?.id
|
|
73
|
+
return `${state.podcastPage.MiniplayerUri}miniplayer/radio/${
|
|
74
|
+
this.canal?.id
|
|
75
|
+
}?distributorId=${this.organisationId}&color=${this.color.substring(
|
|
75
76
|
1,
|
|
76
77
|
)}&theme=${this.theme.substring(1)}`;
|
|
77
78
|
},
|
|
@@ -187,15 +187,9 @@ export default defineComponent({
|
|
|
187
187
|
this.platformEducation,
|
|
188
188
|
);
|
|
189
189
|
octopusApi
|
|
190
|
-
.fetchDataWithParams<
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
state.octopusApi.organisationId
|
|
194
|
-
? "/" + state.octopusApi.organisationId
|
|
195
|
-
: ""
|
|
196
|
-
}`,
|
|
197
|
-
{ lang: this.$i18n.locale },
|
|
198
|
-
)
|
|
190
|
+
.fetchDataWithParams<
|
|
191
|
+
Array<Category>
|
|
192
|
+
>(0, `iab/list${state.octopusApi.organisationId ? "/" + state.octopusApi.organisationId : ""}`, { lang: this.$i18n.locale })
|
|
199
193
|
.then((data: Array<Category>) => {
|
|
200
194
|
this.storedUpdateCategories(data);
|
|
201
195
|
if (this.filterIab) {
|
|
@@ -19,57 +19,60 @@
|
|
|
19
19
|
:title="$t('User menu')"
|
|
20
20
|
/>
|
|
21
21
|
<teleport to=".octopus-app" :disabled="scrolled">
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<router-link
|
|
33
|
-
v-if="!isPodcastmaker"
|
|
34
|
-
class="octopus-dropdown-item"
|
|
35
|
-
to="/main/pub/create"
|
|
36
|
-
>
|
|
37
|
-
{{ $t("Create an account") }}
|
|
38
|
-
</router-link>
|
|
39
|
-
</template>
|
|
40
|
-
<template v-else>
|
|
41
|
-
<template v-for="routerBack in routerBackoffice" :key="routerBack.path">
|
|
22
|
+
<ClassicPopover
|
|
23
|
+
target="home-dropdown"
|
|
24
|
+
:only-click="true"
|
|
25
|
+
:is-fixed="true"
|
|
26
|
+
:left-pos="true"
|
|
27
|
+
>
|
|
28
|
+
<template v-if="!isAuthenticated">
|
|
29
|
+
<a class="octopus-dropdown-item" href="/sso/login" realLink="true">
|
|
30
|
+
{{ $t("Login") }}
|
|
31
|
+
</a>
|
|
42
32
|
<router-link
|
|
43
|
-
v-if="!isPodcastmaker
|
|
44
|
-
|
|
45
|
-
|
|
33
|
+
v-if="!isPodcastmaker"
|
|
34
|
+
class="octopus-dropdown-item"
|
|
35
|
+
to="/main/pub/create"
|
|
46
36
|
>
|
|
47
|
-
{{
|
|
37
|
+
{{ $t("Create an account") }}
|
|
48
38
|
</router-link>
|
|
49
39
|
</template>
|
|
50
|
-
<template v-
|
|
51
|
-
<
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
40
|
+
<template v-else>
|
|
41
|
+
<template
|
|
42
|
+
v-for="routerBack in routerBackoffice"
|
|
43
|
+
:key="routerBack.path"
|
|
44
|
+
>
|
|
45
|
+
<router-link
|
|
46
|
+
v-if="!isPodcastmaker && routerBack.condition"
|
|
47
|
+
:class="routerBack.class"
|
|
48
|
+
:to="routerBack.path"
|
|
59
49
|
>
|
|
60
|
-
{{
|
|
61
|
-
</
|
|
50
|
+
{{ routerBack.title }}
|
|
51
|
+
</router-link>
|
|
62
52
|
</template>
|
|
53
|
+
<template v-if="helpLinks.length">
|
|
54
|
+
<hr />
|
|
55
|
+
<template v-for="helpLink in helpLinks" :key="helpLink.title">
|
|
56
|
+
<a
|
|
57
|
+
:href="helpLink.href"
|
|
58
|
+
class="octopus-dropdown-item"
|
|
59
|
+
rel="noopener"
|
|
60
|
+
target="_blank"
|
|
61
|
+
realLink="true"
|
|
62
|
+
>
|
|
63
|
+
{{ helpLink.title }}
|
|
64
|
+
</a>
|
|
65
|
+
</template>
|
|
66
|
+
</template>
|
|
67
|
+
<hr />
|
|
68
|
+
<a class="octopus-dropdown-item c-hand" @click="logoutFunction">
|
|
69
|
+
{{ $t("Logout") }}
|
|
70
|
+
</a>
|
|
63
71
|
</template>
|
|
64
|
-
<
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
</template>
|
|
69
|
-
<router-link class="octopus-dropdown-item" to="/main/pub/contact">
|
|
70
|
-
{{ $t("Contact") }}
|
|
71
|
-
</router-link>
|
|
72
|
-
</ClassicPopover>
|
|
72
|
+
<router-link class="octopus-dropdown-item" to="/main/pub/contact">
|
|
73
|
+
{{ $t("Contact") }}
|
|
74
|
+
</router-link>
|
|
75
|
+
</ClassicPopover>
|
|
73
76
|
</teleport>
|
|
74
77
|
</div>
|
|
75
78
|
</template>
|
|
@@ -60,7 +60,12 @@ export default defineComponent({
|
|
|
60
60
|
computed: {
|
|
61
61
|
...mapState(useGeneralStore, ["contentToDisplay"]),
|
|
62
62
|
isContentToDisplay(): boolean {
|
|
63
|
-
return
|
|
63
|
+
return (
|
|
64
|
+
"podcast" === this.$route.name ||
|
|
65
|
+
"emission" === this.$route.name ||
|
|
66
|
+
"playlist" === this.$route.name ||
|
|
67
|
+
"radio" === this.$route.name
|
|
68
|
+
);
|
|
64
69
|
},
|
|
65
70
|
backgroundDisplay(): string {
|
|
66
71
|
if (!this.contentToDisplay) {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<h4 class="mb-3">
|
|
13
13
|
{{ $t("Configure your Newsletter tile") }}
|
|
14
14
|
</h4>
|
|
15
|
-
<div
|
|
15
|
+
<div
|
|
16
16
|
v-for="colors in arrayColors"
|
|
17
17
|
:key="colors.mainText"
|
|
18
18
|
class="d-flex align-items-center mb-3"
|
|
@@ -28,11 +28,13 @@
|
|
|
28
28
|
/>
|
|
29
29
|
<div class="d-flex flex-column">
|
|
30
30
|
<div class="fw-bold">{{ colors.mainText }}</div>
|
|
31
|
-
<div v-if="colors.secondText" class="descriptionText">
|
|
31
|
+
<div v-if="colors.secondText" class="descriptionText">
|
|
32
|
+
{{ colors.secondText }}
|
|
33
|
+
</div>
|
|
32
34
|
</div>
|
|
33
35
|
</div>
|
|
34
36
|
</div>
|
|
35
|
-
|
|
37
|
+
<!-- eslint-disable vue/no-v-html -->
|
|
36
38
|
<div v-html="newsletterHtml" />
|
|
37
39
|
<!-- eslint-enable -->
|
|
38
40
|
</div>
|
|
@@ -40,7 +42,7 @@
|
|
|
40
42
|
class="btn flex-grow-1 mt-3 fw-bold"
|
|
41
43
|
@click="onCopyCode(newsletterHtml, afterCopy)"
|
|
42
44
|
>
|
|
43
|
-
<span class="saooti-copy me-2"/>
|
|
45
|
+
<span class="saooti-copy me-2" />
|
|
44
46
|
{{ $t("Copy and embed the HTML code into your email tool") }}
|
|
45
47
|
</button>
|
|
46
48
|
<SnackBar ref="snackbar" position="bottom-left" />
|
|
@@ -91,9 +93,14 @@ export default defineComponent({
|
|
|
91
93
|
data() {
|
|
92
94
|
return {
|
|
93
95
|
arrayColors: [
|
|
94
|
-
{
|
|
95
|
-
|
|
96
|
-
|
|
96
|
+
{
|
|
97
|
+
color: "#40a372",
|
|
98
|
+
mainText: this.$t("Choose main color"),
|
|
99
|
+
secondText: this.$t("Newsletter elements"),
|
|
100
|
+
},
|
|
101
|
+
{ color: "#000000", mainText: this.$t("Choose text color") },
|
|
102
|
+
{ color: "#FFFFFF", mainText: this.$t("Choose background color") },
|
|
103
|
+
],
|
|
97
104
|
shareUrl: window.location.href,
|
|
98
105
|
};
|
|
99
106
|
},
|
|
@@ -106,7 +113,7 @@ export default defineComponent({
|
|
|
106
113
|
imageUrl: `${this.podcast.imageUrl}" alt="${this.$t(
|
|
107
114
|
"Podcast image",
|
|
108
115
|
)}`,
|
|
109
|
-
title:this.podcast.title,
|
|
116
|
+
title: this.podcast.title,
|
|
110
117
|
description: this.podcast.description ?? "",
|
|
111
118
|
shareText: this.$t("Listen this episode"),
|
|
112
119
|
emissionHtml: `<tr><td style="padding:5px 0;">
|
|
@@ -206,11 +213,14 @@ export default defineComponent({
|
|
|
206
213
|
"" !== this.authOrganisation.id
|
|
207
214
|
? this.authOrganisation.id
|
|
208
215
|
: state.generalParameters.organisationId;
|
|
209
|
-
if(!orgaId ||orgaId?.length){
|
|
216
|
+
if (!orgaId || orgaId?.length) {
|
|
210
217
|
return;
|
|
211
218
|
}
|
|
212
219
|
const attributes = await this.getOrgaAttributes(orgaId ?? "");
|
|
213
|
-
if (
|
|
220
|
+
if (
|
|
221
|
+
Object.hasOwn(attributes, "podcastmakerUrl") &&
|
|
222
|
+
(attributes.podcastmakerUrl as string | undefined | null)?.length
|
|
223
|
+
) {
|
|
214
224
|
this.shareUrl =
|
|
215
225
|
attributes.podcastmakerUrl +
|
|
216
226
|
window.location.pathname +
|
|
@@ -234,9 +244,9 @@ export default defineComponent({
|
|
|
234
244
|
<style lang="scss">
|
|
235
245
|
.octopus-app {
|
|
236
246
|
#newsletter-modal {
|
|
237
|
-
.octopus-modal-body{
|
|
247
|
+
.octopus-modal-body {
|
|
238
248
|
overflow-x: inherit;
|
|
239
|
-
@media (max-width: 500px){
|
|
249
|
+
@media (max-width: 500px) {
|
|
240
250
|
overflow-x: auto;
|
|
241
251
|
}
|
|
242
252
|
}
|
|
@@ -44,22 +44,24 @@
|
|
|
44
44
|
:podcast="podcast"
|
|
45
45
|
:organisation-id="podcast.organisation.id"
|
|
46
46
|
/>
|
|
47
|
-
<
|
|
48
|
-
<
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
<
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
47
|
+
<template v-if="!hideSuggestions">
|
|
48
|
+
<ClassicLazy :min-height="550">
|
|
49
|
+
<PodcastInlineList
|
|
50
|
+
class="mt-4"
|
|
51
|
+
:podcast-id="podcastId"
|
|
52
|
+
:title="$t('Suggested listening')"
|
|
53
|
+
/>
|
|
54
|
+
</ClassicLazy>
|
|
55
|
+
<ClassicLazy v-for="c in categories" :key="c.id" :min-height="550">
|
|
56
|
+
<PodcastInlineList
|
|
57
|
+
class="mt-4"
|
|
58
|
+
:iab-id="c.id"
|
|
59
|
+
:href="'/main/pub/category/' + c.id"
|
|
60
|
+
:title="$t('More episodes of this category : ', { name: c.name })"
|
|
61
|
+
:button-text="$t('All podcast button', { name: c.name })"
|
|
62
|
+
/>
|
|
63
|
+
</ClassicLazy>
|
|
64
|
+
</template>
|
|
63
65
|
</div>
|
|
64
66
|
</template>
|
|
65
67
|
<ClassicLoading
|
|
@@ -144,6 +146,14 @@ export default defineComponent({
|
|
|
144
146
|
|
|
145
147
|
computed: {
|
|
146
148
|
...mapState(useGeneralStore, ["storedCategories"]),
|
|
149
|
+
hideSuggestions(): boolean {
|
|
150
|
+
return (
|
|
151
|
+
"true" ===
|
|
152
|
+
(this.podcast?.emission?.annotations?.["HIDE_SUGGESTIONS"] as
|
|
153
|
+
| string
|
|
154
|
+
| undefined)
|
|
155
|
+
);
|
|
156
|
+
},
|
|
147
157
|
isComments(): boolean {
|
|
148
158
|
if (!this.podcast) return true;
|
|
149
159
|
let podcastComment = "INHERIT";
|
package/src/locale/de.ts
CHANGED
|
@@ -223,8 +223,7 @@ export default {
|
|
|
223
223
|
"All playlists": "Alle Wiedergabelisten",
|
|
224
224
|
"Look for playlist name": "Wiedergabeliste nach Titel suchen",
|
|
225
225
|
"Number playlists": "{NB} Wiedergabelisten",
|
|
226
|
-
"
|
|
227
|
-
"In der Wiedergabeliste gibt es keinen Podcast.",
|
|
226
|
+
"Empty playlist":"Leere Playlist",
|
|
228
227
|
"Playlist doesn't exist": "Gesuchte Wiedergabeliste nicht gefunden",
|
|
229
228
|
"Playlist name image": "Wiedergabeliste {name}",
|
|
230
229
|
"Create playlist": "Wiedergabeliste erstellen",
|
package/src/locale/en.ts
CHANGED
|
@@ -220,7 +220,7 @@ export default {
|
|
|
220
220
|
"All playlists": "All playlists",
|
|
221
221
|
"Look for playlist name": "Look for playlist by title",
|
|
222
222
|
"Number playlists": "{nb} playlists",
|
|
223
|
-
"
|
|
223
|
+
"Empty playlist": "Empty playlist",
|
|
224
224
|
"Playlist doesn't exist": "The playlist requested doesn't exist",
|
|
225
225
|
"Playlist name image": "Playlist title {name}",
|
|
226
226
|
"Create playlist": "Create playlist",
|
package/src/locale/es.ts
CHANGED
|
@@ -224,8 +224,7 @@ export default {
|
|
|
224
224
|
"All playlists": "Todas las listas de reproducción",
|
|
225
225
|
"Look for playlist name": "Buscar lista de reproducción por título",
|
|
226
226
|
"Number playlists": "{nb} listas de reproducción",
|
|
227
|
-
"
|
|
228
|
-
"Esta lista de reproducción no contiene pódcast",
|
|
227
|
+
"Empty playlist":"Lista de reproducción vacía",
|
|
229
228
|
"Playlist doesn't exist": "La lista de reproducción solicitada no existe",
|
|
230
229
|
"Playlist name image": "Título de la lista de reproducción {name}",
|
|
231
230
|
"Create playlist": "Crear lista de reproducción",
|
package/src/locale/fr.ts
CHANGED
|
@@ -224,7 +224,7 @@ export default {
|
|
|
224
224
|
"All playlists": "Toutes les playlists",
|
|
225
225
|
"Look for playlist name": "Rechercher une playlist par titre",
|
|
226
226
|
"Number playlists": "{nb} playlists",
|
|
227
|
-
"
|
|
227
|
+
"Empty playlist": "Playlist vide",
|
|
228
228
|
"Playlist doesn't exist": "La playlist demandée n'existe pas",
|
|
229
229
|
"Playlist name image": "Image de la playlist {name}",
|
|
230
230
|
"Create playlist": "Créer une playlist",
|
package/src/locale/it.ts
CHANGED
|
@@ -219,7 +219,7 @@ export default{
|
|
|
219
219
|
'All playlists': 'Tutte le playlist',
|
|
220
220
|
'Look for playlist name': 'Ricerca playlist per titolo',
|
|
221
221
|
'Number playlists': '{nb} playlist',
|
|
222
|
-
'
|
|
222
|
+
'Empty playlist': "Playlist vuota",
|
|
223
223
|
"Playlist doesn't exist": "La playlist richiesta non esiste",
|
|
224
224
|
'Playlist name image': 'Titolo playlist {name}',
|
|
225
225
|
'Create playlist': 'Crea playlist',
|
package/src/locale/sl.ts
CHANGED
|
@@ -218,7 +218,7 @@ export default {
|
|
|
218
218
|
"All playlists": "Vsi seznami predvajanja",
|
|
219
219
|
"Look for playlist name": "Poišči seznam predvajanja po naslovu",
|
|
220
220
|
"Number playlists": "{nb} seznamov predvajanja?",
|
|
221
|
-
"
|
|
221
|
+
"Empty playlist": "Prazen seznam predvajanja",
|
|
222
222
|
"Playlist doesn't exist": "Zahtevani seznam predvajanja ne obstaja",
|
|
223
223
|
"Playlist name image": "Naslov seznama predvajanja {name}",
|
|
224
224
|
"Create playlist": "Ustvari seznam predvajanja",
|