@saooti/octopus-sdk 36.0.1 → 36.0.3
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/public/css/fonts/icomoon.eot +0 -0
- package/public/css/fonts/icomoon.svg +21 -12
- package/public/css/fonts/icomoon.ttf +0 -0
- package/public/css/fonts/icomoon.woff +0 -0
- package/public/css/fonts/style.css +32 -5
- package/public/img/header-emissions.webp +0 -0
- package/public/img/header-home.webp +0 -0
- package/public/img/header-intervenants.webp +0 -0
- package/public/img/header-playlists.webp +0 -0
- package/public/img/header-podcasts.webp +0 -0
- package/src/assets/bootstrap.scss +26 -12
- package/src/assets/form.scss +2 -2
- package/src/assets/general.scss +16 -26
- package/src/assets/live.scss +0 -18
- package/src/assets/multiselect.scss +15 -25
- package/src/assets/share.scss +47 -12
- package/src/components/display/categories/CategoryChooser.vue +1 -1
- package/src/components/display/categories/CategoryFilter.vue +109 -62
- package/src/components/display/categories/CategoryList.vue +9 -20
- package/src/components/display/emission/EmissionChooser.vue +1 -1
- package/src/components/display/emission/EmissionInlineList.vue +1 -1
- package/src/components/display/emission/EmissionItem.vue +5 -5
- package/src/components/display/emission/EmissionPlayerItem.vue +10 -7
- package/src/components/display/filter/MonetizableFilter.vue +1 -1
- package/src/components/display/filter/ProductorSearch.vue +1 -1
- package/src/components/display/filter/RubriqueChoice.vue +1 -1
- package/src/components/display/list/ListPaginate.vue +14 -25
- package/src/components/display/list/Paginate.vue +71 -104
- package/src/components/display/list/PaginateParams.vue +66 -0
- package/src/components/display/live/CountDown.vue +1 -1
- package/src/components/display/live/LiveItem.vue +0 -7
- package/src/components/display/organisation/OrganisationChooser.vue +1 -1
- package/src/components/display/participant/ParticipantItem.vue +6 -12
- package/src/components/display/participant/ParticipantList.vue +2 -24
- package/src/components/display/playlist/PlaylistItem.vue +10 -10
- package/src/components/display/podcasts/AnimatorsItem.vue +1 -2
- package/src/components/display/podcasts/ParticipantDescription.vue +0 -30
- package/src/components/display/podcasts/PodcastFilterList.vue +1 -1
- package/src/components/display/podcasts/PodcastImage.vue +19 -13
- package/src/components/display/podcasts/PodcastInlineListClassic.vue +1 -1
- package/src/components/display/podcasts/PodcastInlineListTemplate.vue +14 -12
- package/src/components/display/podcasts/PodcastItem.vue +15 -9
- package/src/components/display/podcasts/PodcastItemInfo.vue +18 -55
- package/src/components/display/podcasts/PodcastModuleBox.vue +52 -25
- package/src/components/display/podcasts/PodcastSwiperList.vue +20 -10
- package/src/components/display/podcasts/TagList.vue +7 -2
- package/src/components/display/rubriques/RubriqueChooser.vue +2 -2
- package/src/components/display/rubriques/RubriqueList.vue +11 -19
- package/src/components/display/sharing/PlayerParameters.vue +59 -75
- package/src/components/display/sharing/ShareButtons.vue +20 -37
- package/src/components/display/sharing/ShareButtonsIntern.vue +75 -83
- package/src/components/display/sharing/ShareDistribution.vue +3 -2
- package/src/components/display/sharing/SharePlayer.vue +50 -50
- package/src/components/display/sharing/SharePlayerColors.vue +4 -4
- package/src/components/display/sharing/SharePlayerTypes.vue +25 -27
- package/src/components/display/sharing/SubscribeButtons.vue +2 -2
- package/src/components/form/ClassicCheckbox.vue +1 -1
- package/src/components/form/ClassicSearch.vue +2 -1
- package/src/components/misc/Footer.vue +19 -15
- package/src/components/misc/HomeDropdown.vue +14 -14
- package/src/components/misc/Popover.vue +2 -1
- package/src/components/misc/ProgressBar.vue +1 -1
- package/src/components/misc/TopBar.vue +54 -44
- package/src/components/misc/modal/ClassicModal.vue +5 -7
- package/src/components/misc/modal/NewsletterModal.vue +0 -1
- package/src/components/misc/player/Player.vue +5 -14
- package/src/components/misc/player/PlayerCompact.vue +2 -1
- package/src/components/pages/Emission.vue +64 -62
- package/src/components/pages/Emissions.vue +0 -9
- package/src/components/pages/Participant.vue +13 -15
- package/src/components/pages/Participants.vue +0 -7
- package/src/components/pages/Playlist.vue +43 -37
- package/src/components/pages/Playlists.vue +0 -5
- package/src/components/pages/Podcast.vue +65 -100
- package/src/components/pages/Podcasts.vue +1 -37
- package/src/locale/de.ts +6 -1
- package/src/locale/en.ts +6 -1
- package/src/locale/es.ts +6 -1
- package/src/locale/fr.ts +6 -1
- package/src/locale/it.ts +6 -1
- package/src/locale/sl.ts +6 -1
- package/src/sass/_variables.scss +8 -1
- package/src/stores/ParamSdkStore.ts +14 -22
- package/src/stores/PlayerStore.ts +11 -0
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
:iab-id="iabId"
|
|
11
11
|
:rubrique-id="rubriqueId"
|
|
12
12
|
:no-rubriquage-id="noRubriquageId"
|
|
13
|
-
:is-button-next-title="true"
|
|
14
13
|
@sortChrono="sortChrono"
|
|
15
14
|
@sortPopular="sortPopular"
|
|
16
15
|
>
|
|
@@ -22,7 +21,7 @@
|
|
|
22
21
|
<swiper
|
|
23
22
|
v-if="!loading"
|
|
24
23
|
:slides-per-view="numberItem"
|
|
25
|
-
:space-between="
|
|
24
|
+
:space-between="0"
|
|
26
25
|
:loop="allPodcasts.length>=numberItem"
|
|
27
26
|
:navigation="true"
|
|
28
27
|
:modules="modules"
|
|
@@ -102,7 +101,10 @@ export default defineComponent({
|
|
|
102
101
|
return `${this.emissionId}|${this.organisationId}|${this.filterOrgaId}|${this.iabId}|${this.rubriqueId}|${this.rubriquageId}|${this.query}`;
|
|
103
102
|
},
|
|
104
103
|
sizeItem(): number {
|
|
105
|
-
|
|
104
|
+
if (window.innerWidth <= 450) {
|
|
105
|
+
return 12.5;
|
|
106
|
+
}
|
|
107
|
+
return state.generalParameters.podcastItem ? state.generalParameters.podcastItem: 16.5;
|
|
106
108
|
},
|
|
107
109
|
},
|
|
108
110
|
watch: {
|
|
@@ -133,9 +135,9 @@ export default defineComponent({
|
|
|
133
135
|
methods: {
|
|
134
136
|
handleResize(): void {
|
|
135
137
|
if (!this.$el) return;
|
|
136
|
-
const width = (this.$el as HTMLElement).offsetWidth;
|
|
137
|
-
const sixteen = domHelper.convertRemToPixels(this.sizeItem
|
|
138
|
-
this.numberItem = Math.floor(width / sixteen);
|
|
138
|
+
const width = (this.$el as HTMLElement).offsetWidth - 95;
|
|
139
|
+
const sixteen = domHelper.convertRemToPixels(this.sizeItem+ 0.5);
|
|
140
|
+
this.numberItem = Math.max(1, Math.floor(width / sixteen));
|
|
139
141
|
},
|
|
140
142
|
async fetchNext(): Promise<void> {
|
|
141
143
|
const data = await octopusApi.fetchDataWithParams<{count: number;result:Array<Podcast>;sort: string;}>(0, 'podcast/search',{
|
|
@@ -187,17 +189,25 @@ export default defineComponent({
|
|
|
187
189
|
top: 0;
|
|
188
190
|
bottom: 0;
|
|
189
191
|
margin: 0;
|
|
190
|
-
width: 50px;
|
|
191
192
|
}
|
|
192
193
|
.swiper-button-next{
|
|
193
|
-
background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%,#fafafa 50%, #fafafa 100%);
|
|
194
194
|
right: 0;
|
|
195
195
|
}
|
|
196
196
|
.swiper-button-prev{
|
|
197
|
-
background: linear-gradient(90deg, #fafafa 0%,#fafafa 50%, rgba(255, 255, 255, 0) 100%);
|
|
198
197
|
left: 0;
|
|
199
198
|
}
|
|
200
|
-
|
|
199
|
+
.swiper-slide-active{
|
|
200
|
+
padding-left:27px;
|
|
201
|
+
@media (max-width: 550px) {
|
|
202
|
+
padding-left:0;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
.swiper-slide-next{
|
|
206
|
+
padding-right:27px;
|
|
207
|
+
}
|
|
208
|
+
.swiper-button-lock{
|
|
209
|
+
display: flex;
|
|
210
|
+
}
|
|
201
211
|
.swiper-slide {
|
|
202
212
|
display: flex;
|
|
203
213
|
justify-content: center;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
v-if="undefined !== tagList && 0!==tagList.length"
|
|
4
4
|
class="tag-list-component d-flex align-items-center flex-wrap"
|
|
5
5
|
>
|
|
6
|
-
<div
|
|
6
|
+
<div>
|
|
7
7
|
{{ $t('Podcast tags') + ": " }}
|
|
8
8
|
</div>
|
|
9
9
|
<div
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
<div
|
|
15
15
|
:id="'tag-list-from-podcast-page'+index"
|
|
16
16
|
role="button"
|
|
17
|
+
class="d-flex align-items-center"
|
|
17
18
|
>
|
|
18
19
|
<img
|
|
19
20
|
v-if="isOuestFranceTag(tag)"
|
|
@@ -29,6 +30,8 @@
|
|
|
29
30
|
v-if="isOuestFranceTag(tag)"
|
|
30
31
|
:target="'tag-list-from-podcast-page'+index"
|
|
31
32
|
:content="tag.substring(4,tag.length)"
|
|
33
|
+
relativeClass="page-element"
|
|
34
|
+
:isFixed="true"
|
|
32
35
|
/>
|
|
33
36
|
</div>
|
|
34
37
|
</div>
|
|
@@ -51,6 +54,7 @@ export default defineComponent({
|
|
|
51
54
|
</script>
|
|
52
55
|
|
|
53
56
|
<style lang="scss">
|
|
57
|
+
@import '@scss/_variables.scss';
|
|
54
58
|
.octopus-app{
|
|
55
59
|
.tag-list-component{
|
|
56
60
|
.ouest-france-logo{
|
|
@@ -60,10 +64,11 @@ export default defineComponent({
|
|
|
60
64
|
}
|
|
61
65
|
.tag-list-element {
|
|
62
66
|
display: flex;
|
|
67
|
+
align-items: center;
|
|
63
68
|
margin: 0.4rem;
|
|
64
69
|
padding: 0.2rem;
|
|
65
70
|
border: 1px solid #999;
|
|
66
|
-
border-radius:
|
|
71
|
+
border-radius: $octopus-borderradius;
|
|
67
72
|
}
|
|
68
73
|
}
|
|
69
74
|
}
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
{{ $t('No elements found. Consider changing the search query.') }}
|
|
61
61
|
</template>
|
|
62
62
|
<template #caret>
|
|
63
|
-
<span class="saooti-down octopus-arrow-down
|
|
64
|
-
</template>
|
|
63
|
+
<span class="saooti-down octopus-arrow-down-absolute" />
|
|
64
|
+
</template>
|
|
65
65
|
<template #afterList="">
|
|
66
66
|
<div
|
|
67
67
|
v-if="rubriques.length > rubriqueLimit"
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
v-for="rubrique in rubriqueDisplay"
|
|
27
27
|
:ref="'rubrique' + rubrique.rubriqueId"
|
|
28
28
|
:key="rubrique.rubriqueId"
|
|
29
|
-
class="
|
|
29
|
+
class="btn btn-primary btn-on-dark m-1"
|
|
30
30
|
@click="addFilter(rubrique)"
|
|
31
31
|
>
|
|
32
32
|
{{ rubrique.name }}
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
<button
|
|
36
36
|
v-show="hidenRubriques.length"
|
|
37
37
|
id="rubriques-dropdown"
|
|
38
|
-
class="btn
|
|
38
|
+
class="btn btn-primary btn-on-dark m-1 saooti-more"
|
|
39
39
|
:title="$t('See more')"
|
|
40
40
|
/>
|
|
41
41
|
<Popover
|
|
@@ -175,12 +175,18 @@ export default defineComponent({
|
|
|
175
175
|
if(null === rubriqueList){return}
|
|
176
176
|
rubriqueList.style.justifyContent = 'flex-start';
|
|
177
177
|
this.hidenRubriques.length = 0;
|
|
178
|
+
this.rubriqueDisplay.forEach((element: Rubrique) => {
|
|
179
|
+
const el = (this.$refs['rubrique' + element.rubriqueId] as Array<HTMLElement>)[0];
|
|
180
|
+
if (!el) return;
|
|
181
|
+
if (el.classList.contains('hid')) {
|
|
182
|
+
el.classList.remove('hid');
|
|
183
|
+
}
|
|
184
|
+
});
|
|
178
185
|
this.rubriqueDisplay.forEach((element: Rubrique) => {
|
|
179
186
|
const el = (this.$refs['rubrique' + element.rubriqueId] as Array<HTMLElement>)[0];
|
|
180
187
|
if (!el) return;
|
|
181
188
|
const parent = el.parentElement;
|
|
182
189
|
if (null !== parent && el.offsetLeft + el.clientWidth <= parent.clientWidth - 20) {
|
|
183
|
-
el.classList.remove('hid');
|
|
184
190
|
return;
|
|
185
191
|
}
|
|
186
192
|
this.hidenRubriques.push(element);
|
|
@@ -200,6 +206,7 @@ export default defineComponent({
|
|
|
200
206
|
</script>
|
|
201
207
|
|
|
202
208
|
<style lang="scss">
|
|
209
|
+
@import '@scss/_variables.scss';
|
|
203
210
|
.octopus-app{
|
|
204
211
|
.rubrique-list-container {
|
|
205
212
|
display: flex;
|
|
@@ -211,26 +218,11 @@ export default defineComponent({
|
|
|
211
218
|
padding: 0 4rem;
|
|
212
219
|
select{
|
|
213
220
|
width: auto;
|
|
214
|
-
border-radius:
|
|
221
|
+
border-radius: $octopus-borderradius;
|
|
215
222
|
margin: 0.2rem;
|
|
216
223
|
font-size: 0.6rem;
|
|
217
224
|
padding: 0.5rem;
|
|
218
225
|
}
|
|
219
226
|
}
|
|
220
|
-
.rubrique-item {
|
|
221
|
-
font-size: 0.6rem;
|
|
222
|
-
margin: 0.2rem;
|
|
223
|
-
padding: 0.5rem;
|
|
224
|
-
border-radius: 1.5rem;
|
|
225
|
-
border: 0;
|
|
226
|
-
display: flex;
|
|
227
|
-
align-items: center;
|
|
228
|
-
justify-content: center;
|
|
229
|
-
white-space: nowrap;
|
|
230
|
-
flex-shrink: 0;
|
|
231
|
-
&:hover {
|
|
232
|
-
background: #eee !important;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
227
|
}
|
|
236
228
|
</style>
|
|
@@ -1,95 +1,79 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
id-composer="playerParameters"
|
|
2
|
+
<div class="h4 mb-2 mt-3">{{ $t('player parameters') }}</div>
|
|
3
|
+
<template
|
|
4
|
+
v-if="choseNumberEpisode"
|
|
6
5
|
>
|
|
7
6
|
<div
|
|
8
|
-
v-if="
|
|
9
|
-
class="d-flex
|
|
7
|
+
v-if="displayChoiceAllEpisodes"
|
|
8
|
+
class="d-flex align-items-center flex-wrap mt-1"
|
|
10
9
|
>
|
|
11
|
-
<
|
|
12
|
-
v-
|
|
13
|
-
class="
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class="form-check-input"
|
|
18
|
-
type="radio"
|
|
19
|
-
name="episodeNumbers"
|
|
20
|
-
value="all"
|
|
21
|
-
>
|
|
22
|
-
<span class="flex-shrink-0">{{ $t('Show every episode') }}</span>
|
|
23
|
-
</div>
|
|
24
|
-
<div
|
|
25
|
-
class="d-flex align-items-center flex-wrap"
|
|
26
|
-
:class="displayChoiceAllEpisodes ? '' : 'mt-3'"
|
|
10
|
+
<input
|
|
11
|
+
v-model="episodeNumbers"
|
|
12
|
+
class="form-check-input"
|
|
13
|
+
type="radio"
|
|
14
|
+
name="episodeNumbers"
|
|
15
|
+
value="all"
|
|
27
16
|
>
|
|
28
|
-
|
|
29
|
-
v-if="displayChoiceAllEpisodes"
|
|
30
|
-
v-model="episodeNumbers"
|
|
31
|
-
class="form-check-input"
|
|
32
|
-
type="radio"
|
|
33
|
-
name="episodeNumbers"
|
|
34
|
-
value="number"
|
|
35
|
-
>
|
|
36
|
-
<span class="flex-shrink-0">{{ $t('Show') }}</span>
|
|
37
|
-
<input
|
|
38
|
-
id="number-input"
|
|
39
|
-
v-model="iFrameNumber"
|
|
40
|
-
type="number"
|
|
41
|
-
min="1"
|
|
42
|
-
max="50"
|
|
43
|
-
class="input-share-player text-center m-2"
|
|
44
|
-
>
|
|
45
|
-
<label
|
|
46
|
-
for="number-input"
|
|
47
|
-
:title="$t('Number of player podcasts')"
|
|
48
|
-
/>
|
|
49
|
-
<span class="flex-shrink-0">{{ $t('Last podcasts') }}</span>
|
|
50
|
-
</div>
|
|
51
|
-
<ClassicCheckbox
|
|
52
|
-
v-model:textInit="proceedReading"
|
|
53
|
-
id-checkbox="proceed-reading-checkbox"
|
|
54
|
-
:label="$t('Proceed reading')"
|
|
55
|
-
/>
|
|
56
|
-
<ClassicCheckbox
|
|
57
|
-
v-model:textInit="isVisibleTemp"
|
|
58
|
-
id-checkbox="is-visible-checkbox"
|
|
59
|
-
:label="$t('Podcasts still available')"
|
|
60
|
-
/>
|
|
17
|
+
<span class="flex-shrink-0">{{ $t('Show every episode') }}</span>
|
|
61
18
|
</div>
|
|
62
19
|
<div
|
|
63
|
-
|
|
64
|
-
class="
|
|
65
|
-
>
|
|
66
|
-
<ClassicCheckbox
|
|
67
|
-
v-model:textInit="displayArticle"
|
|
68
|
-
id-checkbox="display-article-checkbox"
|
|
69
|
-
:label="$t('Display associated article')"
|
|
70
|
-
/>
|
|
71
|
-
</div>
|
|
72
|
-
<div
|
|
73
|
-
v-if="displayTranscriptParam"
|
|
74
|
-
class="d-flex flex-column flex-grow-1"
|
|
20
|
+
class="d-flex align-items-center flex-wrap"
|
|
21
|
+
:class="displayChoiceAllEpisodes ? '' : 'mt-3'"
|
|
75
22
|
>
|
|
76
|
-
<
|
|
77
|
-
v-
|
|
78
|
-
|
|
79
|
-
|
|
23
|
+
<input
|
|
24
|
+
v-if="displayChoiceAllEpisodes"
|
|
25
|
+
v-model="episodeNumbers"
|
|
26
|
+
class="form-check-input"
|
|
27
|
+
type="radio"
|
|
28
|
+
name="episodeNumbers"
|
|
29
|
+
value="number"
|
|
30
|
+
>
|
|
31
|
+
<span class="flex-shrink-0">{{ $t('Show') }}</span>
|
|
32
|
+
<input
|
|
33
|
+
id="number-input"
|
|
34
|
+
v-model="iFrameNumber"
|
|
35
|
+
type="number"
|
|
36
|
+
min="1"
|
|
37
|
+
max="50"
|
|
38
|
+
class="input-share-player text-center m-2"
|
|
39
|
+
>
|
|
40
|
+
<label
|
|
41
|
+
for="number-input"
|
|
42
|
+
:title="$t('Number of player podcasts')"
|
|
80
43
|
/>
|
|
44
|
+
<span class="flex-shrink-0">{{ $t('Last podcasts') }}</span>
|
|
81
45
|
</div>
|
|
82
|
-
|
|
46
|
+
<ClassicCheckbox
|
|
47
|
+
v-model:textInit="proceedReading"
|
|
48
|
+
id-checkbox="proceed-reading-checkbox"
|
|
49
|
+
:label="$t('Proceed reading')"
|
|
50
|
+
/>
|
|
51
|
+
<ClassicCheckbox
|
|
52
|
+
v-model:textInit="isVisibleTemp"
|
|
53
|
+
id-checkbox="is-visible-checkbox"
|
|
54
|
+
:label="$t('Podcasts still available')"
|
|
55
|
+
/>
|
|
56
|
+
</template>
|
|
57
|
+
<ClassicCheckbox
|
|
58
|
+
v-if="displayArticleParam"
|
|
59
|
+
v-model:textInit="displayArticle"
|
|
60
|
+
id-checkbox="display-article-checkbox"
|
|
61
|
+
:label="$t('Display associated article')"
|
|
62
|
+
/>
|
|
63
|
+
<ClassicCheckbox
|
|
64
|
+
v-if="displayTranscriptParam"
|
|
65
|
+
v-model:textInit="displayTranscript"
|
|
66
|
+
id-checkbox="display-transcript-checkbox"
|
|
67
|
+
:label="$t('If the transcript is available, show it')"
|
|
68
|
+
/>
|
|
83
69
|
</template>
|
|
84
70
|
|
|
85
71
|
<script lang="ts">
|
|
86
72
|
import ClassicCheckbox from '../../form/ClassicCheckbox.vue';
|
|
87
|
-
import Accordion from '../../misc/Accordion.vue';
|
|
88
73
|
import { defineComponent } from 'vue'
|
|
89
74
|
export default defineComponent({
|
|
90
75
|
components:{
|
|
91
|
-
ClassicCheckbox
|
|
92
|
-
Accordion
|
|
76
|
+
ClassicCheckbox
|
|
93
77
|
},
|
|
94
78
|
props: {
|
|
95
79
|
isVisible: { default: false, type: Boolean},
|
|
@@ -1,40 +1,24 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="module-box
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
/>
|
|
23
|
-
</div>
|
|
24
|
-
<div class="d-flex align-items-center">
|
|
25
|
-
<ShareButtonsIntern
|
|
26
|
-
:podcast="podcast"
|
|
27
|
-
:emission="emission"
|
|
28
|
-
:playlist="playlist"
|
|
29
|
-
:participant-id="participantId"
|
|
30
|
-
:organisation-id="organisationId"
|
|
31
|
-
/>
|
|
32
|
-
</div>
|
|
33
|
-
</template>
|
|
34
|
-
<div
|
|
35
|
-
v-else
|
|
36
|
-
class="d-flex-row"
|
|
37
|
-
>
|
|
2
|
+
<div class="module-box">
|
|
3
|
+
<div class="d-flex align-items-center mb-3">
|
|
4
|
+
<h2 class="big-h2 mb-0">{{ $t('Share') }}</h2>
|
|
5
|
+
<span
|
|
6
|
+
v-if="authenticated"
|
|
7
|
+
id="popover-share-help"
|
|
8
|
+
role="button"
|
|
9
|
+
tabindex="0"
|
|
10
|
+
class="saooti-help ms-2"
|
|
11
|
+
/>
|
|
12
|
+
<Popover
|
|
13
|
+
v-if="authenticated"
|
|
14
|
+
target="popover-share-help"
|
|
15
|
+
:title="$t('Help')"
|
|
16
|
+
:content="$t('Share this page without edit and share blocks')"
|
|
17
|
+
relativeClass="page-element"
|
|
18
|
+
:isFixed="true"
|
|
19
|
+
/>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="d-flex align-items-center justify-content-between">
|
|
38
22
|
<ShareButtonsIntern
|
|
39
23
|
:podcast="podcast"
|
|
40
24
|
:emission="emission"
|
|
@@ -67,7 +51,6 @@ export default defineComponent({
|
|
|
67
51
|
playlist: { default: undefined, type: Object as ()=>Playlist},
|
|
68
52
|
participantId: { default: undefined, type: Number},
|
|
69
53
|
organisationId: { default: undefined, type: String},
|
|
70
|
-
isVertical: { default: false, type: Boolean},
|
|
71
54
|
},
|
|
72
55
|
computed: {
|
|
73
56
|
authenticated(): boolean {
|
|
@@ -1,61 +1,78 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
class="
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
</
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
>
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
<div class="
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
</
|
|
2
|
+
<div class="d-flex flex-column me-2">
|
|
3
|
+
<div class="h4 mb-2">{{$t('Social networks')}}</div>
|
|
4
|
+
<div class="d-flex align-items-center">
|
|
5
|
+
<template
|
|
6
|
+
v-for="button in arrayShareButtons"
|
|
7
|
+
:key="button.title"
|
|
8
|
+
>
|
|
9
|
+
<a
|
|
10
|
+
v-if="button.condition"
|
|
11
|
+
rel="noopener"
|
|
12
|
+
target="_blank"
|
|
13
|
+
:href="button.url"
|
|
14
|
+
:class="getClass(button.className)"
|
|
15
|
+
class="me-2"
|
|
16
|
+
:title="button.title"
|
|
17
|
+
>
|
|
18
|
+
<div :class="button.icon" />
|
|
19
|
+
</a>
|
|
20
|
+
</template>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
<div class="d-flex flex-column me-2">
|
|
24
|
+
<div class="h4 mb-2">{{$t('Newsletter')}}</div>
|
|
25
|
+
<div class="d-flex align-items-center justify-content-center">
|
|
26
|
+
<button
|
|
27
|
+
v-if="podcast || emission ||playlist"
|
|
28
|
+
:class="getClass()"
|
|
29
|
+
class="saooti-newsletter"
|
|
30
|
+
:title="$t('Share newsletter')"
|
|
31
|
+
@click="newsletter = true"
|
|
32
|
+
/>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<div class="d-flex flex-column me-2">
|
|
37
|
+
<div class="h4 mb-2">{{$t('QR Code')}}</div>
|
|
38
|
+
<div class="d-flex align-items-center justify-content-center">
|
|
39
|
+
<button
|
|
40
|
+
:class="getClass()"
|
|
41
|
+
:title="$t('Share QR Code')"
|
|
42
|
+
@click="qrCode = true"
|
|
43
|
+
class="saooti-qrcode"
|
|
44
|
+
/>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
<div class="d-flex flex-column me-2">
|
|
49
|
+
<div class="h4 mb-2">{{$t('Copy this page URL')}}</div>
|
|
50
|
+
<div class="d-flex align-items-center justify-content-center">
|
|
51
|
+
<button
|
|
52
|
+
:class="getClass()"
|
|
53
|
+
class="saooti-link"
|
|
54
|
+
:title="$t('Copy this page URL')"
|
|
55
|
+
@click="onCopyCode(urlPage,afterCopy)"
|
|
56
|
+
/>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<div class="d-flex flex-column me-2" v-if="''!==rssUrl && displayRss">
|
|
61
|
+
<div class="h4 mb-2">{{$t('Rss feed')}}</div>
|
|
62
|
+
<div class="d-flex align-items-center justify-content-center">
|
|
63
|
+
<a
|
|
64
|
+
rel="noopener"
|
|
65
|
+
target="_blank"
|
|
66
|
+
class="saooti-rss"
|
|
67
|
+
:class="getClass()"
|
|
68
|
+
:href="rssUrl"
|
|
69
|
+
:title="titleRssButton"
|
|
70
|
+
@click.prevent="openPopup()"
|
|
71
|
+
/>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
|
|
59
76
|
<ClipboardModal
|
|
60
77
|
v-if="dataRSSSave"
|
|
61
78
|
:link="rssUrl"
|
|
@@ -140,12 +157,6 @@ export default defineComponent({
|
|
|
140
157
|
{ title: 'Whatsapp', icon:'saooti-Whatsapp', className:'btn-whatsapp', url :`whatsapp://send?text=${this.urlPage}`, condition: window.matchMedia('(hover: none)').matches}
|
|
141
158
|
]
|
|
142
159
|
},
|
|
143
|
-
isDownloadButton(): boolean{
|
|
144
|
-
return this.isDownloadButtonParam && undefined!==this.podcast && (!this.podcast.tags || !this.podcast.tags.includes('copyright'));
|
|
145
|
-
},
|
|
146
|
-
isDownloadButtonParam(): boolean {
|
|
147
|
-
return (state.podcastPage.downloadButton as boolean);
|
|
148
|
-
},
|
|
149
160
|
urlPage(): string{
|
|
150
161
|
return window.location.href;
|
|
151
162
|
},
|
|
@@ -179,9 +190,7 @@ export default defineComponent({
|
|
|
179
190
|
|
|
180
191
|
methods: {
|
|
181
192
|
getClass(className='btn-rss'): string{
|
|
182
|
-
|
|
183
|
-
returnString+= this.isVertical ? '' : ' mx-2';
|
|
184
|
-
return returnString;
|
|
193
|
+
return `btn ${className} share-btn mb-2 text-dark`;
|
|
185
194
|
},
|
|
186
195
|
openPopup(): void {
|
|
187
196
|
this.dataRSSSave = !this.dataRSSSave;
|
|
@@ -189,23 +198,6 @@ export default defineComponent({
|
|
|
189
198
|
afterCopy(): void{
|
|
190
199
|
(this.$refs.snackbar as InstanceType<typeof Snackbar>).open(this.$t('Link in clipboard'));
|
|
191
200
|
},
|
|
192
|
-
onDownload(urlToDownload: string, nameOfDownload: string): void{
|
|
193
|
-
const xhr = new XMLHttpRequest();
|
|
194
|
-
xhr.open('GET', urlToDownload, true);
|
|
195
|
-
xhr.responseType = 'blob';
|
|
196
|
-
xhr.onload = function() {
|
|
197
|
-
const urlCreator = window.URL || window.webkitURL;
|
|
198
|
-
const imageUrl = urlCreator.createObjectURL(this.response);
|
|
199
|
-
const tag = document.createElement('a');
|
|
200
|
-
tag.href = imageUrl;
|
|
201
|
-
tag.target = '_blank';
|
|
202
|
-
tag.download = nameOfDownload.replace(/ /g, '_');
|
|
203
|
-
document.body.appendChild(tag);
|
|
204
|
-
tag.click();
|
|
205
|
-
document.body.removeChild(tag);
|
|
206
|
-
};
|
|
207
|
-
xhr.send();
|
|
208
|
-
},
|
|
209
201
|
},
|
|
210
202
|
})
|
|
211
203
|
</script>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="module-box">
|
|
3
|
-
<
|
|
3
|
+
<h2 class="big-h2 mb-3">{{ $t('Distribute') }}</h2>
|
|
4
4
|
<div class="sharing-distribution-container">
|
|
5
5
|
{{ $t('Rss feed:') }}
|
|
6
6
|
<div class="text-primary hide-small-screen text-break">
|
|
@@ -101,10 +101,11 @@ export default defineComponent({
|
|
|
101
101
|
</script>
|
|
102
102
|
|
|
103
103
|
<style lang="scss">
|
|
104
|
+
@import '@scss/_variables.scss';
|
|
104
105
|
.octopus-app{
|
|
105
106
|
.sharing-distribution-container {
|
|
106
107
|
border: 0.05rem solid #dee2e6;
|
|
107
|
-
border-radius:
|
|
108
|
+
border-radius: $octopus-borderradius;
|
|
108
109
|
padding: 0.4rem;
|
|
109
110
|
margin: 0.2rem 1rem 0.2rem 0;
|
|
110
111
|
display: flex;
|