@saooti/octopus-sdk 36.0.2 → 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 +2 -2
- 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 +6 -1
- package/src/stores/ParamSdkStore.ts +14 -22
- package/src/stores/PlayerStore.ts +11 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
v-if="editRight || activePlaylist"
|
|
4
|
-
class="emission-item-container
|
|
4
|
+
class="emission-item-container"
|
|
5
5
|
>
|
|
6
6
|
<router-link
|
|
7
7
|
:to="{
|
|
@@ -12,14 +12,6 @@
|
|
|
12
12
|
:title="$t('Playlist')"
|
|
13
13
|
class="d-flex flex-grow-1 text-dark"
|
|
14
14
|
>
|
|
15
|
-
<img
|
|
16
|
-
v-lazy="proxyImageUrl(playlist.imageUrl, '260')"
|
|
17
|
-
width="260"
|
|
18
|
-
height="260"
|
|
19
|
-
:title="$t('Playlist name image', {name:name})"
|
|
20
|
-
:alt="$t('Playlist name image', {name:name})"
|
|
21
|
-
class="img-box"
|
|
22
|
-
>
|
|
23
15
|
<div class="emission-item-text">
|
|
24
16
|
<div class="d-flex align-items-center emission-name">
|
|
25
17
|
<span
|
|
@@ -47,11 +39,19 @@
|
|
|
47
39
|
params: { productorId: playlist.organisation.id },
|
|
48
40
|
query: { productor: filterOrgaId },
|
|
49
41
|
}"
|
|
50
|
-
class="
|
|
42
|
+
class="text-primary mt-auto"
|
|
51
43
|
>
|
|
52
44
|
© {{ playlist.organisation.name }}
|
|
53
45
|
</router-link>
|
|
54
46
|
</div>
|
|
47
|
+
<img
|
|
48
|
+
v-lazy="proxyImageUrl(playlist.imageUrl, '330')"
|
|
49
|
+
width="330"
|
|
50
|
+
height="330"
|
|
51
|
+
:title="$t('Playlist name image', {name:name})"
|
|
52
|
+
:alt="$t('Playlist name image', {name:name})"
|
|
53
|
+
class="img-box"
|
|
54
|
+
>
|
|
55
55
|
</router-link>
|
|
56
56
|
</div>
|
|
57
57
|
</template>
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
query: { productor: filterOrgaId },
|
|
11
11
|
}"
|
|
12
12
|
:title="$t('Participant')"
|
|
13
|
-
class="podcast-item-animator text-
|
|
13
|
+
class="podcast-item-animator text-truncate"
|
|
14
14
|
>
|
|
15
15
|
{{ animatorName }}
|
|
16
16
|
</router-link>
|
|
@@ -43,7 +43,6 @@ export default defineComponent({
|
|
|
43
43
|
font-size: 0.55rem;
|
|
44
44
|
font-weight: 300;
|
|
45
45
|
text-transform: capitalize;
|
|
46
|
-
margin: 00.25rem 0.5rem 0;
|
|
47
46
|
}
|
|
48
47
|
}
|
|
49
48
|
</style>
|
|
@@ -4,39 +4,11 @@
|
|
|
4
4
|
class="comma"
|
|
5
5
|
>
|
|
6
6
|
{{ title }}
|
|
7
|
-
<span
|
|
8
|
-
:id="idPopover"
|
|
9
|
-
role="button"
|
|
10
|
-
tabindex="0"
|
|
11
|
-
class="saooti-help m-0"
|
|
12
|
-
:title="title"
|
|
13
|
-
/>
|
|
14
7
|
<span class="mx-1">:</span>
|
|
15
|
-
<Popover
|
|
16
|
-
:title="$t('Animated by')"
|
|
17
|
-
:target="idPopover"
|
|
18
|
-
>
|
|
19
|
-
<div
|
|
20
|
-
v-for="participant in participants"
|
|
21
|
-
:key="'desc-'+participant.participantId"
|
|
22
|
-
class="d-flex flex-column align-items-center"
|
|
23
|
-
>
|
|
24
|
-
<strong><em>{{ getName(participant) }}</em></strong>
|
|
25
|
-
<!-- eslint-disable vue/no-v-html -->
|
|
26
|
-
<div
|
|
27
|
-
v-if="participant.description"
|
|
28
|
-
class="participant-desc html-wysiwyg-content"
|
|
29
|
-
v-html="participant.description"
|
|
30
|
-
/>
|
|
31
|
-
<!-- eslint-enable -->
|
|
32
|
-
<hr>
|
|
33
|
-
</div>
|
|
34
|
-
</Popover>
|
|
35
8
|
<router-link
|
|
36
9
|
v-for="participant in participants"
|
|
37
10
|
:key="participant.participantId"
|
|
38
11
|
:title="$t('Participant')"
|
|
39
|
-
class="fw-bold"
|
|
40
12
|
:to="{
|
|
41
13
|
name: 'participant',
|
|
42
14
|
params: { participantId: participant.participantId },
|
|
@@ -51,7 +23,6 @@
|
|
|
51
23
|
</template>
|
|
52
24
|
|
|
53
25
|
<script lang="ts">
|
|
54
|
-
import Popover from '../../misc/Popover.vue';
|
|
55
26
|
import { Participant } from '@/stores/class/general/participant';
|
|
56
27
|
import { useFilterStore } from '@/stores/FilterStore';
|
|
57
28
|
import { mapState } from 'pinia';
|
|
@@ -60,7 +31,6 @@ export default defineComponent({
|
|
|
60
31
|
name: 'ParticipantDescription',
|
|
61
32
|
|
|
62
33
|
components:{
|
|
63
|
-
Popover
|
|
64
34
|
},
|
|
65
35
|
|
|
66
36
|
props: {
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
class="img-box mb-3 flex-column justify-content-start align-items-start position-relative flex-shrink-0 float-start"
|
|
5
5
|
>
|
|
6
6
|
<img
|
|
7
|
-
v-lazy="proxyImageUrl(podcast.imageUrl,'
|
|
8
|
-
width="
|
|
9
|
-
height="
|
|
7
|
+
v-lazy="proxyImageUrl(podcast.imageUrl,'330')"
|
|
8
|
+
width="330"
|
|
9
|
+
height="330"
|
|
10
10
|
class="img-box"
|
|
11
11
|
:alt="$t('Episode name image', {name:podcast.title})"
|
|
12
12
|
>
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
<div
|
|
45
45
|
v-if="!playingPodcast"
|
|
46
46
|
:title="$t('Play')"
|
|
47
|
-
class="saooti-play
|
|
47
|
+
class="saooti-play"
|
|
48
48
|
/>
|
|
49
49
|
<div
|
|
50
50
|
v-if="!classicPodcastPlay"
|
|
@@ -59,6 +59,7 @@
|
|
|
59
59
|
<span class="paddle2" />
|
|
60
60
|
<span class="paddle3" />
|
|
61
61
|
</div>
|
|
62
|
+
<div class="ms-2">{{durationString}}</div>
|
|
62
63
|
</div>
|
|
63
64
|
<div
|
|
64
65
|
v-else
|
|
@@ -88,6 +89,7 @@
|
|
|
88
89
|
</template>
|
|
89
90
|
|
|
90
91
|
<script lang="ts">
|
|
92
|
+
import DurationHelper from '../../../helper/duration';
|
|
91
93
|
import { state } from '../../../stores/ParamSdkStore';
|
|
92
94
|
import { Podcast } from '@/stores/class/general/podcast';
|
|
93
95
|
import { Conference } from '@/stores/class/conference/conference';
|
|
@@ -233,6 +235,9 @@ export default defineComponent({
|
|
|
233
235
|
clickPlayGoPage():boolean{
|
|
234
236
|
return (state.podcastPage.clickPlayGoPage as boolean);
|
|
235
237
|
},
|
|
238
|
+
durationString(): string {
|
|
239
|
+
return DurationHelper.formatDuration(Math.round(this.podcast.duration/1000));
|
|
240
|
+
},
|
|
236
241
|
},
|
|
237
242
|
watch: {
|
|
238
243
|
arrowDirection(): void {
|
|
@@ -286,6 +291,7 @@ export default defineComponent({
|
|
|
286
291
|
|
|
287
292
|
|
|
288
293
|
<style lang="scss">
|
|
294
|
+
@import '@scss/_variables.scss';
|
|
289
295
|
.octopus-app{
|
|
290
296
|
.live-image-status {
|
|
291
297
|
text-align: center;
|
|
@@ -316,8 +322,7 @@ export default defineComponent({
|
|
|
316
322
|
.podcast-image-play-button{
|
|
317
323
|
position: absolute;
|
|
318
324
|
display: flex;
|
|
319
|
-
|
|
320
|
-
justify-content: center;
|
|
325
|
+
justify-content: flex-end;
|
|
321
326
|
top: 0;
|
|
322
327
|
left: 0;
|
|
323
328
|
right: 0;
|
|
@@ -332,10 +337,11 @@ export default defineComponent({
|
|
|
332
337
|
}
|
|
333
338
|
|
|
334
339
|
.icon-container {
|
|
335
|
-
background:
|
|
336
|
-
border-radius:
|
|
337
|
-
|
|
338
|
-
|
|
340
|
+
background: $primaryColorLessTransparent !important;
|
|
341
|
+
border-radius: 2rem;
|
|
342
|
+
color: white;
|
|
343
|
+
padding: 0.5rem;
|
|
344
|
+
margin: 0.5rem;
|
|
339
345
|
display: flex;
|
|
340
346
|
align-items: center;
|
|
341
347
|
justify-content: center;
|
|
@@ -348,12 +354,12 @@ export default defineComponent({
|
|
|
348
354
|
background: #00000030;
|
|
349
355
|
}
|
|
350
356
|
.saooti-play {
|
|
351
|
-
font-size:
|
|
357
|
+
font-size: 1.2rem;
|
|
352
358
|
position: relative;
|
|
353
|
-
|
|
359
|
+
color: white;
|
|
354
360
|
}
|
|
355
361
|
.big-icon-error {
|
|
356
|
-
font-size:
|
|
362
|
+
font-size: 1rem;
|
|
357
363
|
position: relative;
|
|
358
364
|
}
|
|
359
365
|
}
|
|
@@ -1,21 +1,14 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
|
-
class="
|
|
3
|
+
class="podcast-inline-container"
|
|
4
4
|
>
|
|
5
5
|
<div
|
|
6
6
|
class="d-flex align-items-center"
|
|
7
7
|
:class="podcastId?'mb-4':'mb-2'"
|
|
8
8
|
>
|
|
9
|
-
<h2 class="mb-0">
|
|
9
|
+
<h2 class="mb-0 big-h2">
|
|
10
10
|
{{ title }}
|
|
11
11
|
</h2>
|
|
12
|
-
<router-link
|
|
13
|
-
v-if="isButtonNextTitle"
|
|
14
|
-
class="btn admin-button m-1 fw-bold saooti-right"
|
|
15
|
-
:title="buttonText"
|
|
16
|
-
:to="refTo"
|
|
17
|
-
@click="handleSeeMoreButton"
|
|
18
|
-
/>
|
|
19
12
|
</div>
|
|
20
13
|
<div
|
|
21
14
|
v-if="!podcastId"
|
|
@@ -57,7 +50,7 @@
|
|
|
57
50
|
</div>
|
|
58
51
|
<slot name="list-inline" />
|
|
59
52
|
<router-link
|
|
60
|
-
v-if="
|
|
53
|
+
v-if="buttonText"
|
|
61
54
|
class="btn btn-primary align-self-center width-fit-content m-4"
|
|
62
55
|
:to="refTo"
|
|
63
56
|
@click="handleSeeMoreButton"
|
|
@@ -96,7 +89,6 @@ export default defineComponent({
|
|
|
96
89
|
iabId: { default: undefined, type: Number},
|
|
97
90
|
rubriqueId: { default: () => [], type: Array as ()=> Array<number> },
|
|
98
91
|
noRubriquageId: { default: () => [], type: Array as ()=> Array<number> },
|
|
99
|
-
isButtonNextTitle: {default: false, type:Boolean},
|
|
100
92
|
podcastId: { default: undefined, type: Number},
|
|
101
93
|
},
|
|
102
94
|
emits:['sortChrono','sortPopular', 'displayPrevious', 'displayNext'],
|
|
@@ -175,4 +167,14 @@ export default defineComponent({
|
|
|
175
167
|
},
|
|
176
168
|
},
|
|
177
169
|
})
|
|
178
|
-
</script>
|
|
170
|
+
</script>
|
|
171
|
+
<style lang="scss">
|
|
172
|
+
.octopus-app .podcast-inline-container {
|
|
173
|
+
display: flex;
|
|
174
|
+
flex-direction: column;
|
|
175
|
+
padding: 1rem;
|
|
176
|
+
@media (max-width: 450px) {
|
|
177
|
+
padding: 1rem 0;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
</style>
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
<div
|
|
3
3
|
class="podcast-item-container"
|
|
4
4
|
:class="[
|
|
5
|
-
podcastShadow ? 'shadow-element' : '',
|
|
6
5
|
podcastBorderBottom ? 'border-bottom' : '',
|
|
7
6
|
]"
|
|
8
7
|
:data-pubdate="displayDate"
|
|
@@ -78,9 +77,6 @@ export default defineComponent({
|
|
|
78
77
|
},
|
|
79
78
|
|
|
80
79
|
computed: {
|
|
81
|
-
podcastShadow(): boolean {
|
|
82
|
-
return (state.podcastsPage.podcastShadow as boolean);
|
|
83
|
-
},
|
|
84
80
|
podcastBorderBottom(): boolean {
|
|
85
81
|
return (state.podcastsPage.podcastBorderBottom as boolean);
|
|
86
82
|
},
|
|
@@ -123,30 +119,32 @@ export default defineComponent({
|
|
|
123
119
|
</script>
|
|
124
120
|
|
|
125
121
|
<style lang="scss">
|
|
122
|
+
@import '@scss/_variables.scss';
|
|
126
123
|
.octopus-app{
|
|
127
124
|
.podcast-item-container {
|
|
128
|
-
border-radius:
|
|
125
|
+
border-radius: $octopus-borderradius;
|
|
129
126
|
list-style: none;
|
|
130
127
|
position: relative;
|
|
131
|
-
width:
|
|
132
|
-
height:
|
|
128
|
+
width: $octopus-item-size;
|
|
129
|
+
height: 23.5rem;
|
|
133
130
|
overflow: hidden;
|
|
134
131
|
display: flex;
|
|
135
132
|
flex-direction: column;
|
|
136
133
|
text-align: left;
|
|
137
134
|
background: #fff;
|
|
138
135
|
flex-shrink: 0;
|
|
136
|
+
border: 2px solid #eee;
|
|
139
137
|
|
|
140
138
|
.description-podcast-item {
|
|
141
139
|
padding: 1rem;
|
|
142
140
|
color: #333;
|
|
143
141
|
background-color: rgba(255, 255, 255, 0.92);
|
|
144
|
-
height:
|
|
142
|
+
height: $octopus-item-size;
|
|
145
143
|
overflow: hidden;
|
|
146
144
|
text-overflow: ellipsis;
|
|
147
145
|
font-size: 0.9em;
|
|
148
146
|
position: absolute;
|
|
149
|
-
width:
|
|
147
|
+
width: $octopus-item-size;
|
|
150
148
|
word-break: break-word;
|
|
151
149
|
&.after-podcast-description:after {
|
|
152
150
|
content: '...';
|
|
@@ -164,6 +162,14 @@ export default defineComponent({
|
|
|
164
162
|
@media (max-width: 960px) {
|
|
165
163
|
margin: 0.5rem !important;
|
|
166
164
|
}
|
|
165
|
+
@media (max-width: 450px) {
|
|
166
|
+
width: $octopus-mobile-item-size;
|
|
167
|
+
height: 18.8rem;
|
|
168
|
+
.description-podcast-item{
|
|
169
|
+
height: $octopus-mobile-item-size;
|
|
170
|
+
width: $octopus-mobile-item-size;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
167
173
|
}
|
|
168
174
|
}
|
|
169
175
|
</style>
|
|
@@ -1,19 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="
|
|
3
|
-
|
|
4
|
-
{{ date }}
|
|
5
|
-
</div>
|
|
6
|
-
<div
|
|
7
|
-
v-if="0 !== durationString.length"
|
|
8
|
-
class="h6"
|
|
9
|
-
>
|
|
10
|
-
{{ durationString }}
|
|
11
|
-
</div>
|
|
2
|
+
<div class="text-secondary h6 ms-2">
|
|
3
|
+
{{ date }}
|
|
12
4
|
</div>
|
|
13
|
-
<AnimatorsItem
|
|
14
|
-
v-if="animators && 0!==animators.length"
|
|
15
|
-
:animator="animators[0]"
|
|
16
|
-
/>
|
|
17
5
|
<router-link
|
|
18
6
|
:to="{
|
|
19
7
|
name: 'podcast',
|
|
@@ -29,11 +17,17 @@
|
|
|
29
17
|
:duration="duration"
|
|
30
18
|
class="mx-2"
|
|
31
19
|
/>
|
|
32
|
-
|
|
20
|
+
|
|
21
|
+
<div class="mx-2 d-flex align-items-center justify-content-between mt-2">
|
|
33
22
|
<div
|
|
34
23
|
v-if="isPodcastmaker"
|
|
35
24
|
class="useless-div-for-podcastmaker"
|
|
36
25
|
/>
|
|
26
|
+
<AnimatorsItem
|
|
27
|
+
v-if="animators && 0!==animators.length"
|
|
28
|
+
class="w-0 flex-grow-1"
|
|
29
|
+
:animator="animators[0]"
|
|
30
|
+
/>
|
|
37
31
|
<router-link
|
|
38
32
|
v-if="!isPodcastmaker"
|
|
39
33
|
:to="{
|
|
@@ -43,7 +37,7 @@
|
|
|
43
37
|
}"
|
|
44
38
|
class="text-dark producer-podcast-item"
|
|
45
39
|
>
|
|
46
|
-
{{ '© ' +
|
|
40
|
+
{{ '© ' + orgaNameDisplay }}
|
|
47
41
|
</router-link>
|
|
48
42
|
</div>
|
|
49
43
|
</template>
|
|
@@ -53,8 +47,6 @@ import AnimatorsItem from './AnimatorsItem.vue';
|
|
|
53
47
|
import { state } from '../../../stores/ParamSdkStore';
|
|
54
48
|
import { orgaComputed } from '../../mixins/orgaComputed';
|
|
55
49
|
import dayjs from 'dayjs';
|
|
56
|
-
// @ts-ignore
|
|
57
|
-
import humanizeDuration from 'humanize-duration';
|
|
58
50
|
import PodcastPlayBar from './PodcastPlayBar.vue';
|
|
59
51
|
import { defineComponent } from 'vue'
|
|
60
52
|
import { Participant } from '@/stores/class/general/participant';
|
|
@@ -89,40 +81,12 @@ export default defineComponent({
|
|
|
89
81
|
return (true===this.authenticated && this.myOrganisationId === this.podcastOrganisationId) ||
|
|
90
82
|
true===state.generalParameters.isAdmin
|
|
91
83
|
},
|
|
92
|
-
|
|
93
|
-
if
|
|
94
|
-
|
|
95
|
-
return humanizeDuration(this.duration, {
|
|
96
|
-
language: 'short',
|
|
97
|
-
largest: 1,
|
|
98
|
-
round: true,
|
|
99
|
-
languages: {
|
|
100
|
-
short: {
|
|
101
|
-
y: () => 'years',
|
|
102
|
-
mo: () => 'months',
|
|
103
|
-
w: () => 'weeks',
|
|
104
|
-
d: () => 'days',
|
|
105
|
-
h: () => 'h',
|
|
106
|
-
m: () => 'min',
|
|
107
|
-
s: () => 'sec',
|
|
108
|
-
ms: () => 'ms',
|
|
109
|
-
},
|
|
110
|
-
},
|
|
111
|
-
});
|
|
84
|
+
orgaNameDisplay():string{
|
|
85
|
+
if(this.podcastOrganisationName.length > 30){
|
|
86
|
+
return this.podcastOrganisationName.substring(0, 30) + '...';
|
|
112
87
|
}
|
|
113
|
-
return
|
|
114
|
-
|
|
115
|
-
largest: 2,
|
|
116
|
-
round: true,
|
|
117
|
-
languages: {
|
|
118
|
-
short: {
|
|
119
|
-
m: () => 'min',
|
|
120
|
-
s: () => 'sec',
|
|
121
|
-
ms: () => 'ms',
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
});
|
|
125
|
-
},
|
|
88
|
+
return this.podcastOrganisationName;
|
|
89
|
+
}
|
|
126
90
|
},
|
|
127
91
|
})
|
|
128
92
|
</script>
|
|
@@ -130,12 +94,12 @@ export default defineComponent({
|
|
|
130
94
|
<style lang="scss">
|
|
131
95
|
.octopus-app{
|
|
132
96
|
.title-podcast-item {
|
|
133
|
-
font-weight:
|
|
97
|
+
font-weight: 400;
|
|
134
98
|
margin: 0.25rem 0.5rem 0.5rem;
|
|
135
99
|
overflow: hidden;
|
|
136
100
|
display: -webkit-box;
|
|
137
101
|
flex-grow: 1;
|
|
138
|
-
font-size: 0.
|
|
102
|
+
font-size: 0.9rem;
|
|
139
103
|
-webkit-line-clamp: 3;
|
|
140
104
|
-webkit-box-orient: vertical;
|
|
141
105
|
min-height: 3rem;
|
|
@@ -144,10 +108,9 @@ export default defineComponent({
|
|
|
144
108
|
}
|
|
145
109
|
|
|
146
110
|
.producer-podcast-item {
|
|
147
|
-
margin: 0.2rem 0.5rem 0.5rem;
|
|
148
111
|
font-size: 0.55rem;
|
|
149
112
|
color: #666;
|
|
150
|
-
|
|
113
|
+
flex-shrink: 0;
|
|
151
114
|
}
|
|
152
115
|
}
|
|
153
116
|
</style>
|
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="module-box">
|
|
3
|
-
<div
|
|
4
|
-
class="text-uppercase h4"
|
|
5
|
-
>
|
|
6
|
-
{{ podcast.title }}
|
|
7
|
-
</div>
|
|
8
|
-
<div class="mb-5 mt-3 d-flex">
|
|
3
|
+
<div class="mb-2 d-flex">
|
|
9
4
|
<div class="w-100">
|
|
10
5
|
<PodcastImage
|
|
11
6
|
:class="[
|
|
12
|
-
!isLiveReadyToRecord
|
|
13
|
-
? 'shadow-element'
|
|
14
|
-
: '',
|
|
15
7
|
isLiveReadyToRecord &&
|
|
16
8
|
fetchConference &&
|
|
17
9
|
'null' !== fetchConference &&
|
|
@@ -28,8 +20,7 @@
|
|
|
28
20
|
@playPodcast="playPodcast"
|
|
29
21
|
/>
|
|
30
22
|
<div
|
|
31
|
-
class="d-flex flex-wrap mb-
|
|
32
|
-
:class="isLiveReady ? 'justify-content-between' : ''"
|
|
23
|
+
class="d-flex justify-content-between flex-wrap mb-2"
|
|
33
24
|
>
|
|
34
25
|
<div
|
|
35
26
|
v-if="0 !== date.length"
|
|
@@ -38,7 +29,7 @@
|
|
|
38
29
|
{{ date }}
|
|
39
30
|
</div>
|
|
40
31
|
<div>
|
|
41
|
-
{{
|
|
32
|
+
{{ duration}}
|
|
42
33
|
</div>
|
|
43
34
|
<div
|
|
44
35
|
v-if="isLiveReady"
|
|
@@ -47,6 +38,11 @@
|
|
|
47
38
|
{{ $t('Episode record in live') }}
|
|
48
39
|
</div>
|
|
49
40
|
</div>
|
|
41
|
+
<div
|
|
42
|
+
class="text-uppercase h2 mb-3"
|
|
43
|
+
>
|
|
44
|
+
{{ podcast.title }}
|
|
45
|
+
</div>
|
|
50
46
|
<!-- eslint-disable vue/no-v-html -->
|
|
51
47
|
<div
|
|
52
48
|
class="descriptionText html-wysiwyg-content"
|
|
@@ -54,11 +50,10 @@
|
|
|
54
50
|
/>
|
|
55
51
|
<!-- eslint-enable -->
|
|
56
52
|
<div class="my-3">
|
|
57
|
-
<ParticipantDescription :participants="podcast.animators" />
|
|
58
|
-
<div>
|
|
53
|
+
<ParticipantDescription class="mb-1" :participants="podcast.animators" />
|
|
54
|
+
<div class="mb-1">
|
|
59
55
|
{{ $t('Emission') + ' : ' }}
|
|
60
56
|
<router-link
|
|
61
|
-
class="fw-bold"
|
|
62
57
|
:to="{
|
|
63
58
|
name: 'emission',
|
|
64
59
|
params: { emissionId: podcast.emission.emissionId },
|
|
@@ -70,10 +65,9 @@
|
|
|
70
65
|
{{ podcast.emission.name }}
|
|
71
66
|
</router-link>
|
|
72
67
|
</div>
|
|
73
|
-
<div v-if="!isPodcastmaker">
|
|
68
|
+
<div class="mb-1" v-if="!isPodcastmaker">
|
|
74
69
|
{{ $t('Producted by : ') }}
|
|
75
70
|
<router-link
|
|
76
|
-
class="fw-bold"
|
|
77
71
|
:to="{
|
|
78
72
|
name: 'productor',
|
|
79
73
|
params: { productorId: podcast.organisation.id },
|
|
@@ -85,15 +79,15 @@
|
|
|
85
79
|
{{ podcast.organisation.name }}
|
|
86
80
|
</router-link>
|
|
87
81
|
</div>
|
|
88
|
-
<div v-if="''!==photoCredit">
|
|
82
|
+
<div class="mb-1" v-if="''!==photoCredit">
|
|
89
83
|
{{ $t('Photo credits') + " : "+ photoCredit }}
|
|
90
84
|
</div>
|
|
91
|
-
<div v-if="''!==audioCredit">
|
|
85
|
+
<div class="mb-1" v-if="''!==audioCredit">
|
|
92
86
|
{{ $t('Audio credits') + " : "+ audioCredit }}
|
|
93
87
|
</div>
|
|
94
88
|
<a
|
|
95
89
|
v-if="podcast.article"
|
|
96
|
-
class="btn d-flex align-items-center my-2 width-fit-content"
|
|
90
|
+
class="btn d-flex align-items-center my-2 width-fit-content mb-1"
|
|
97
91
|
:href="podcast.article"
|
|
98
92
|
rel="noopener"
|
|
99
93
|
target="_blank"
|
|
@@ -102,6 +96,7 @@
|
|
|
102
96
|
<div>{{ $t('See associated article') }}</div>
|
|
103
97
|
</a>
|
|
104
98
|
<ParticipantDescription
|
|
99
|
+
class="mb-1"
|
|
105
100
|
:participants="podcast.guests"
|
|
106
101
|
:is-guest="true"
|
|
107
102
|
/>
|
|
@@ -111,7 +106,7 @@
|
|
|
111
106
|
<div v-if="editRight && !isPodcastmaker">
|
|
112
107
|
<div
|
|
113
108
|
v-if="podcast.annotations && 'RSS'===podcast.annotations.SOURCE_KIND"
|
|
114
|
-
class="me-5"
|
|
109
|
+
class="me-5 text-secondary"
|
|
115
110
|
>
|
|
116
111
|
{{ $t('From RSS') }}
|
|
117
112
|
</div>
|
|
@@ -123,6 +118,24 @@
|
|
|
123
118
|
</div>
|
|
124
119
|
</div>
|
|
125
120
|
</div>
|
|
121
|
+
<RecordingItemButton
|
|
122
|
+
v-if="
|
|
123
|
+
!!fetchConference &&
|
|
124
|
+
isLiveReadyToRecord &&
|
|
125
|
+
!isNotRecorded &&
|
|
126
|
+
isOctopusAndAnimator
|
|
127
|
+
"
|
|
128
|
+
:podcast="podcast"
|
|
129
|
+
:live="true"
|
|
130
|
+
:recording="fetchConference"
|
|
131
|
+
@deleteItem="removeDeleted"
|
|
132
|
+
@validatePodcast="$emit('updatePodcast', $event)"
|
|
133
|
+
/>
|
|
134
|
+
<EditBox
|
|
135
|
+
v-else-if="editRight && isEditBox"
|
|
136
|
+
:podcast="podcast"
|
|
137
|
+
@validatePodcast="$emit('updatePodcast', $event)"
|
|
138
|
+
/>
|
|
126
139
|
<TagList
|
|
127
140
|
:tag-list="podcast.tags"
|
|
128
141
|
/>
|
|
@@ -145,6 +158,8 @@ import { Conference } from '@/stores/class/conference/conference';
|
|
|
145
158
|
|
|
146
159
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
147
160
|
const ErrorMessage = defineAsyncComponent(() => import('../../misc/ErrorMessage.vue'));
|
|
161
|
+
const RecordingItemButton = defineAsyncComponent(() => import('@/components/display/studio/RecordingItemButton.vue'));
|
|
162
|
+
const EditBox = defineAsyncComponent(() => import('@/components/display/edit/EditBox.vue'));
|
|
148
163
|
export default defineComponent({
|
|
149
164
|
name: "PodcastModuleBox",
|
|
150
165
|
components: {
|
|
@@ -152,7 +167,9 @@ export default defineComponent({
|
|
|
152
167
|
ParticipantDescription,
|
|
153
168
|
TagList,
|
|
154
169
|
ErrorMessage,
|
|
155
|
-
PodcastPlayBar
|
|
170
|
+
PodcastPlayBar,
|
|
171
|
+
EditBox,
|
|
172
|
+
RecordingItemButton
|
|
156
173
|
},
|
|
157
174
|
|
|
158
175
|
mixins:[displayMethods, orgaComputed],
|
|
@@ -163,7 +180,7 @@ export default defineComponent({
|
|
|
163
180
|
fetchConference: { default: undefined, type: Object as ()=> Conference},
|
|
164
181
|
},
|
|
165
182
|
|
|
166
|
-
emits: ['playPodcast'],
|
|
183
|
+
emits: ['playPodcast', 'updatePodcast'],
|
|
167
184
|
|
|
168
185
|
computed: {
|
|
169
186
|
errorMessage(): string{
|
|
@@ -180,7 +197,7 @@ export default defineComponent({
|
|
|
180
197
|
},
|
|
181
198
|
date(): string {
|
|
182
199
|
if (this.podcast && 1970 !== dayjs(this.podcast.pubDate).year()){
|
|
183
|
-
return dayjs(this.podcast.pubDate).format('D MMMM YYYY
|
|
200
|
+
return dayjs(this.podcast.pubDate).format('D MMMM YYYY');
|
|
184
201
|
}
|
|
185
202
|
return '';
|
|
186
203
|
},
|
|
@@ -235,12 +252,22 @@ export default defineComponent({
|
|
|
235
252
|
},
|
|
236
253
|
audioCredit():string{
|
|
237
254
|
return (this.podcast?.annotations?.audioCredit as string) ?? '';
|
|
238
|
-
}
|
|
255
|
+
},
|
|
256
|
+
isEditBox(): boolean{
|
|
257
|
+
return (state.podcastPage.EditBox as boolean)?? false;
|
|
258
|
+
},
|
|
239
259
|
},
|
|
240
260
|
methods: {
|
|
241
261
|
playPodcast(podcast: Podcast): void {
|
|
242
262
|
this.$emit('playPodcast', podcast);
|
|
243
263
|
},
|
|
264
|
+
removeDeleted(): void {
|
|
265
|
+
if (window.history.length > 1) {
|
|
266
|
+
this.$router.go(-1);
|
|
267
|
+
} else {
|
|
268
|
+
this.$router.push('/');
|
|
269
|
+
}
|
|
270
|
+
},
|
|
244
271
|
},
|
|
245
272
|
})
|
|
246
273
|
</script>
|