@saooti/octopus-sdk 30.0.4 → 30.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/index.ts +13 -2
- package/package.json +1 -1
- package/src/App.vue +4 -4
- package/src/api/comments.ts +1 -1
- package/src/assets/bootstrap-diff.scss +2 -1
- package/src/assets/form.scss +7 -15
- package/src/assets/general.scss +14 -20
- package/src/assets/multiselect.scss +2 -2
- package/src/assets/share.scss +1 -12
- package/src/components/display/categories/CategoryChooser.vue +1 -1
- package/src/components/display/categories/CategoryFilter.vue +4 -4
- package/src/components/display/categories/CategoryList.vue +1 -1
- package/src/components/display/comments/CommentInput.vue +3 -3
- package/src/components/display/comments/CommentItem.vue +4 -3
- package/src/components/display/comments/CommentList.vue +4 -4
- package/src/components/display/comments/CommentParentInfo.vue +1 -1
- package/src/components/display/comments/CommentPlayer.vue +2 -2
- package/src/components/display/comments/CommentSection.vue +3 -3
- package/src/components/display/edit/EditBox.vue +1 -1
- package/src/components/display/edit/EditCommentBox.vue +1 -1
- package/src/components/display/emission/EmissionChooser.vue +2 -2
- package/src/components/display/emission/EmissionInlineList.vue +3 -3
- package/src/components/display/emission/EmissionItem.vue +3 -3
- package/src/components/display/emission/EmissionList.vue +4 -4
- package/src/components/display/emission/EmissionPlayerItem.vue +3 -3
- package/src/components/display/filter/AdvancedSearch.vue +40 -106
- package/src/components/display/filter/CategoryFilter.vue +10 -14
- package/src/components/display/filter/MonetizableFilter.vue +1 -1
- package/src/components/display/filter/ProductorSearch.vue +21 -40
- package/src/components/display/filter/RubriqueChoice.vue +4 -4
- package/src/components/display/filter/RubriqueFilter.vue +10 -14
- package/src/components/display/live/LiveHorizontalList.vue +1 -1
- package/src/components/display/live/LiveItem.vue +2 -2
- package/src/components/display/live/LiveList.vue +1 -1
- package/src/components/display/organisation/OrganisationChooser.vue +1 -1
- package/src/components/display/organisation/OrganisationChooserLight.vue +9 -3
- package/src/components/display/participant/ParticipantItem.vue +1 -1
- package/src/components/display/participant/ParticipantList.vue +1 -1
- package/src/components/display/playlist/PlaylistItem.vue +2 -2
- package/src/components/display/playlist/PlaylistList.vue +1 -1
- package/src/components/display/playlist/PodcastList.vue +10 -21
- package/src/components/display/podcasts/AnimatorsItem.vue +1 -1
- package/src/components/display/podcasts/ParticipantDescription.vue +2 -1
- package/src/components/display/podcasts/PodcastFilterList.vue +11 -20
- package/src/components/display/podcasts/PodcastImage.vue +3 -3
- package/src/components/display/podcasts/PodcastInlineList.vue +3 -3
- package/src/components/display/podcasts/PodcastItem.vue +3 -3
- package/src/components/display/podcasts/PodcastList.vue +2 -2
- package/src/components/display/podcasts/PodcastModuleBox.vue +2 -2
- package/src/components/display/rubriques/RubriqueChooser.vue +1 -1
- package/src/components/display/rubriques/RubriqueList.vue +4 -4
- package/src/components/display/sharing/PlayerParameters.vue +31 -103
- package/src/components/display/sharing/ShareButtons.vue +3 -3
- package/src/components/display/sharing/ShareDistribution.vue +1 -1
- package/src/components/display/sharing/SharePlayer.vue +35 -51
- package/src/components/display/sharing/SharePlayerColors.vue +2 -2
- package/src/components/display/sharing/SharePlayerTypes.vue +5 -5
- package/src/components/display/sharing/SubscribeButtons.vue +2 -2
- package/src/components/form/ClassicCheckbox.vue +61 -0
- package/src/components/form/ClassicLoading.vue +28 -0
- package/src/components/form/ClassicRadio.vue +61 -0
- package/src/components/form/ClassicSearch.vue +82 -0
- package/src/components/misc/ErrorMessage.vue +1 -1
- package/src/components/misc/Footer.vue +28 -37
- package/src/components/misc/HomeDropdown.vue +44 -93
- package/src/components/misc/LeftMenu.vue +111 -144
- package/src/components/misc/Player.vue +16 -30
- package/src/components/misc/PlayerButtons.vue +16 -39
- package/src/components/misc/PlayerClockAndTimeline.vue +1 -1
- package/src/components/misc/PlayerProgressBar.vue +16 -51
- package/src/components/misc/Popover.vue +8 -2
- package/src/components/misc/TopBar.vue +142 -224
- package/src/components/misc/modal/ClipboardModal.vue +1 -1
- package/src/components/misc/modal/NewsletterModal.vue +15 -29
- package/src/components/misc/modal/QrCodeModal.vue +2 -2
- package/src/components/misc/modal/ShareModalPlayer.vue +1 -1
- package/src/components/mixins/init.ts +1 -1
- package/src/components/mixins/organisationFilter.ts +1 -1
- package/src/components/pages/Category.vue +4 -9
- package/src/components/pages/Emission.vue +13 -25
- package/src/components/pages/Emissions.vue +10 -19
- package/src/components/pages/Home.vue +5 -7
- package/src/components/pages/Lives.vue +3 -5
- package/src/components/pages/Participant.vue +19 -27
- package/src/components/pages/Participants.vue +7 -15
- package/src/components/pages/Playlist.vue +17 -30
- package/src/components/pages/Playlists.vue +1 -11
- package/src/components/pages/Podcast.vue +20 -34
- package/src/components/pages/Podcasts.vue +12 -26
- package/src/components/pages/Search.vue +26 -64
- package/src/store/class/{adserverConfig.ts → adserver/adserverConfig.ts} +0 -0
- package/src/store/class/adserver/adserverOtherEmission.ts +13 -0
- package/src/store/class/{adserverTiming.ts → adserver/adserverTiming.ts} +0 -0
- package/src/store/class/cartouchier/cartouche.ts +15 -0
- package/src/store/class/cartouchier/cartouchier.ts +9 -0
- package/src/store/class/conference/conference.ts +35 -0
- package/src/store/class/conference/conferenceMessage.ts +10 -0
- package/src/store/class/conference/conferenceParticipant.ts +18 -0
- package/src/store/class/conference/pad.ts +15 -0
- package/src/store/class/conference/studioCall.ts +7 -0
- package/src/store/class/contract/contract.ts +7 -0
- package/src/store/class/contract/contractOrganisation.ts +7 -0
- package/src/store/class/ftp/ftpEmission.ts +41 -0
- package/src/store/class/ftp/ftpParam.ts +12 -0
- package/src/store/class/ftp/testFtpEmission.ts +5 -0
- package/src/store/class/general/audioView.ts +21 -0
- package/src/store/class/{category.ts → general/category.ts} +1 -1
- package/src/store/class/general/comment.ts +16 -0
- package/src/store/class/general/customPlayer.ts +8 -0
- package/src/store/class/{emission.ts → general/emission.ts} +2 -2
- package/src/store/class/general/fetchParam.ts +33 -0
- package/src/store/class/general/initState.ts +25 -0
- package/src/store/class/general/ituneCategory.ts +5 -0
- package/src/store/class/general/media.ts +14 -0
- package/src/store/class/general/organisation.ts +19 -0
- package/src/store/class/general/pageable.ts +13 -0
- package/src/store/class/{participant.ts → general/participant.ts} +0 -0
- package/src/store/class/{player.ts → general/player.ts} +0 -0
- package/src/store/class/{playlist.ts → general/playlist.ts} +2 -2
- package/src/store/class/{podcast.ts → general/podcast.ts} +2 -1
- package/src/store/class/general/sortPageable.ts +5 -0
- package/src/store/class/general/soundcastCategory.ts +8 -0
- package/src/store/class/ouestFrance/ofTag.ts +36 -0
- package/src/store/class/ouestFrance/ofTagInfo.ts +9 -0
- package/src/store/class/ouestFrance/ofTagPage.ts +7 -0
- package/src/store/class/ouestFrance/ofTagSeo.ts +7 -0
- package/src/store/class/ouestFrance/ofTagVente.ts +6 -0
- package/src/store/class/ouestFrance/ofTagWithParents.ts +26 -0
- package/src/store/class/rss/aggregator.ts +28 -0
- package/src/store/class/rss/rssEmission.ts +14 -0
- package/src/store/class/rss/rssInfo.ts +8 -0
- package/src/store/class/{rubriquage.ts → rubrique/rubriquage.ts} +0 -0
- package/src/store/class/rubrique/rubriquageFilter.ts +6 -0
- package/src/store/class/rubrique/rubrique.ts +8 -0
- package/src/store/class/stat/statArrayIncome.ts +6 -0
- package/src/store/class/stat/statArrayObject.ts +34 -0
- package/src/store/class/stat/statGraph.ts +7 -0
- package/src/store/class/{person.ts → user/person.ts} +2 -2
- package/src/store/class/user/profile.ts +12 -0
- package/src/store/class/user/userKeycloak.ts +24 -0
- package/src/store/paramStore.ts +1 -1
- package/src/store/typeAppStore.ts +10 -10
- package/src/store/class/comment.ts +0 -16
- package/src/store/class/conference.ts +0 -31
- package/src/store/class/customPlayer.ts +0 -8
- package/src/store/class/fetchParam.ts +0 -33
- package/src/store/class/media.ts +0 -14
- package/src/store/class/organisation.ts +0 -19
- package/src/store/class/rubriquageFilter.ts +0 -6
- package/src/store/class/rubrique.ts +0 -9
|
@@ -9,29 +9,19 @@
|
|
|
9
9
|
<div class="d-flex align-items-center flex-wrap">
|
|
10
10
|
<div
|
|
11
11
|
v-if="categoryFilter"
|
|
12
|
-
class="d-flex align-items-center flex-grow categories-filter"
|
|
12
|
+
class="d-flex align-items-center flex-grow-1 categories-filter"
|
|
13
13
|
>
|
|
14
14
|
<CategoryChooser
|
|
15
15
|
:defaultanswer="$t('No category filter')"
|
|
16
16
|
@selected="onCategorySelected"
|
|
17
17
|
/>
|
|
18
18
|
</div>
|
|
19
|
-
<
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
<input
|
|
26
|
-
id="search"
|
|
27
|
-
v-model="searchPattern"
|
|
28
|
-
:placeholder="$t('Search')"
|
|
29
|
-
class="filter-search-input input-no-outline flex-grow"
|
|
30
|
-
>
|
|
31
|
-
<div
|
|
32
|
-
class="saooti-search-bounty filter-list-search-icon search-icon-container"
|
|
33
|
-
/>
|
|
34
|
-
</div>
|
|
19
|
+
<ClassicSearch
|
|
20
|
+
v-model:textInit="searchPattern"
|
|
21
|
+
class="small-flex-grow"
|
|
22
|
+
id-checkbox="podcast-filter-search"
|
|
23
|
+
:label="$t('Search')"
|
|
24
|
+
/>
|
|
35
25
|
</div>
|
|
36
26
|
<PodcastList
|
|
37
27
|
:first="first"
|
|
@@ -49,16 +39,17 @@
|
|
|
49
39
|
</template>
|
|
50
40
|
|
|
51
41
|
<script lang="ts">
|
|
52
|
-
|
|
42
|
+
import ClassicSearch from '../../form/ClassicSearch.vue';
|
|
53
43
|
import PodcastList from './PodcastList.vue';
|
|
54
|
-
import { Category } from '@/store/class/category';
|
|
44
|
+
import { Category } from '@/store/class/general/category';
|
|
55
45
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
56
|
-
import { Podcast } from '@/store/class/podcast';
|
|
46
|
+
import { Podcast } from '@/store/class/general/podcast';
|
|
57
47
|
const CategoryChooser = defineAsyncComponent(() => import('../categories/CategoryChooser.vue'));
|
|
58
48
|
export default defineComponent({
|
|
59
49
|
components: {
|
|
60
50
|
CategoryChooser,
|
|
61
51
|
PodcastList,
|
|
52
|
+
ClassicSearch
|
|
62
53
|
},
|
|
63
54
|
props: {
|
|
64
55
|
participantId: { default: undefined, type: Number},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
v-if="podcast"
|
|
4
|
-
class="img-box d-flex flex-column justify-content-start align-items-start position-relative justify rounded-lg flex-shrink float-start"
|
|
4
|
+
class="img-box d-flex flex-column justify-content-start align-items-start position-relative justify rounded-lg flex-shrink-0 float-start"
|
|
5
5
|
:style="{ 'background-image': 'url(\'' + podcast.imageUrl + '\')' }"
|
|
6
6
|
>
|
|
7
7
|
<template v-if="isPodcastmaker">
|
|
@@ -96,8 +96,8 @@
|
|
|
96
96
|
import { mapState } from 'vuex';
|
|
97
97
|
import { state } from '../../../store/paramStore';
|
|
98
98
|
import {StoreState} from '@/store/typeAppStore';
|
|
99
|
-
import { Podcast } from '@/store/class/podcast';
|
|
100
|
-
import { Conference } from '@/store/class/conference';
|
|
99
|
+
import { Podcast } from '@/store/class/general/podcast';
|
|
100
|
+
import { Conference } from '@/store/class/conference/conference';
|
|
101
101
|
import { defineComponent } from 'vue'
|
|
102
102
|
export default defineComponent({
|
|
103
103
|
name: 'PodcastImage',
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
<PodcastItem
|
|
63
63
|
v-for="p in podcasts"
|
|
64
64
|
:key="p.podcastId"
|
|
65
|
-
class="flex-shrink item-phone-margin"
|
|
65
|
+
class="flex-shrink-0 item-phone-margin"
|
|
66
66
|
:podcast="p"
|
|
67
67
|
:class="[alignLeft ? 'me-3' : '']"
|
|
68
68
|
/>
|
|
@@ -88,8 +88,8 @@ import PodcastItem from './PodcastItem.vue';
|
|
|
88
88
|
|
|
89
89
|
const PHONE_WIDTH = 960;
|
|
90
90
|
|
|
91
|
-
import { Podcast } from '@/store/class/podcast';
|
|
92
|
-
import { RubriquageFilter } from '@/store/class/rubriquageFilter';
|
|
91
|
+
import { Podcast } from '@/store/class/general/podcast';
|
|
92
|
+
import { RubriquageFilter } from '@/store/class/rubrique/rubriquageFilter';
|
|
93
93
|
import { defineComponent } from 'vue'
|
|
94
94
|
import { RouteLocationRaw } from 'vue-router';
|
|
95
95
|
export default defineComponent({
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
params: { podcastId: podcast.podcastId },
|
|
55
55
|
query: { productor: $store.state.filter.organisationId },
|
|
56
56
|
}"
|
|
57
|
-
class="text-dark d-flex flex-column flex-grow"
|
|
57
|
+
class="text-dark d-flex flex-column flex-grow-1"
|
|
58
58
|
>
|
|
59
59
|
<div class="title-podcast-item">
|
|
60
60
|
{{ title }}
|
|
@@ -89,8 +89,8 @@ import moment from 'moment';
|
|
|
89
89
|
// @ts-ignore
|
|
90
90
|
import humanizeDuration from 'humanize-duration';
|
|
91
91
|
|
|
92
|
-
import { Podcast } from '@/store/class/podcast';
|
|
93
|
-
import { Category } from '@/store/class/category';
|
|
92
|
+
import { Podcast } from '@/store/class/general/podcast';
|
|
93
|
+
import { Category } from '@/store/class/general/category';
|
|
94
94
|
import { defineComponent } from 'vue'
|
|
95
95
|
export default defineComponent({
|
|
96
96
|
name: 'PodcastItem',
|
|
@@ -49,9 +49,9 @@ import octopusApi from '@saooti/octopus-api';
|
|
|
49
49
|
import PodcastItem from './PodcastItem.vue';
|
|
50
50
|
import { state } from '../../../store/paramStore';
|
|
51
51
|
|
|
52
|
-
import { Podcast } from '@/store/class/podcast';
|
|
52
|
+
import { Podcast } from '@/store/class/general/podcast';
|
|
53
53
|
import { defineComponent } from 'vue'
|
|
54
|
-
import { FetchParam } from '@/store/class/fetchParam';
|
|
54
|
+
import { FetchParam } from '@/store/class/general/fetchParam';
|
|
55
55
|
export default defineComponent({
|
|
56
56
|
name: 'PodcastList',
|
|
57
57
|
|
|
@@ -160,8 +160,8 @@ import moment from 'moment';
|
|
|
160
160
|
// @ts-ignore
|
|
161
161
|
import humanizeDuration from 'humanize-duration';
|
|
162
162
|
import { displayMethods } from '../../mixins/functions';
|
|
163
|
-
import { Podcast } from '@/store/class/podcast';
|
|
164
|
-
import { Conference } from '@/store/class/conference';
|
|
163
|
+
import { Podcast } from '@/store/class/general/podcast';
|
|
164
|
+
import { Conference } from '@/store/class/conference/conference';
|
|
165
165
|
|
|
166
166
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
167
167
|
const ShareButtons = defineAsyncComponent(() => import('../sharing/ShareButtons.vue'));
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
import { selenium } from '../../mixins/functions';
|
|
71
71
|
//@ts-ignore
|
|
72
72
|
import VueMultiselect from 'vue-multiselect';
|
|
73
|
-
import { Rubrique } from '@/store/class/rubrique';
|
|
73
|
+
import { Rubrique } from '@/store/class/rubrique/rubrique';
|
|
74
74
|
const getDefaultRubrique = (defaultName: string) => {
|
|
75
75
|
if ('' === defaultName){
|
|
76
76
|
return undefined;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
>
|
|
7
7
|
<select
|
|
8
8
|
v-model="rubriquage"
|
|
9
|
-
class="
|
|
9
|
+
class="c-hand mb-0"
|
|
10
10
|
@change="onRubriquageSelected"
|
|
11
11
|
>
|
|
12
12
|
<option
|
|
@@ -54,9 +54,9 @@
|
|
|
54
54
|
</template>
|
|
55
55
|
|
|
56
56
|
<script lang="ts">
|
|
57
|
-
import { Rubrique } from '@/store/class/rubrique';
|
|
58
|
-
import { Rubriquage } from '@/store/class/rubriquage';
|
|
59
|
-
import { RubriquageFilter } from '@/store/class/rubriquageFilter';
|
|
57
|
+
import { Rubrique } from '@/store/class/rubrique/rubrique';
|
|
58
|
+
import { Rubriquage } from '@/store/class/rubrique/rubriquage';
|
|
59
|
+
import { RubriquageFilter } from '@/store/class/rubrique/rubriquageFilter';
|
|
60
60
|
import { defineComponent } from 'vue'
|
|
61
61
|
export default defineComponent({
|
|
62
62
|
name: 'RubriqueList',
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
|
-
v-if="!playlist"
|
|
4
3
|
id="accordionParameters"
|
|
5
4
|
class="accordion player-parameters mt-3"
|
|
6
5
|
>
|
|
@@ -28,13 +27,11 @@
|
|
|
28
27
|
>
|
|
29
28
|
<div class="accordion-body">
|
|
30
29
|
<div
|
|
31
|
-
v-if="
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
class="d-flex flex-column flex-grow"
|
|
30
|
+
v-if="choseNumberEpisode"
|
|
31
|
+
class="d-flex flex-column flex-grow-1"
|
|
35
32
|
>
|
|
36
33
|
<div
|
|
37
|
-
v-if="
|
|
34
|
+
v-if="displayChoiceAllEpisodes"
|
|
38
35
|
class="d-flex align-items-center w-100 flex-wrap mt-1"
|
|
39
36
|
>
|
|
40
37
|
<input
|
|
@@ -44,21 +41,21 @@
|
|
|
44
41
|
name="episodeNumbers"
|
|
45
42
|
value="all"
|
|
46
43
|
>
|
|
47
|
-
<span class="flex-shrink">{{ $t('Show every episode') }}</span>
|
|
44
|
+
<span class="flex-shrink-0">{{ $t('Show every episode') }}</span>
|
|
48
45
|
</div>
|
|
49
46
|
<div
|
|
50
47
|
class="d-flex align-items-center flex-wrap"
|
|
51
|
-
:class="
|
|
48
|
+
:class="displayChoiceAllEpisodes ? '' : 'mt-3'"
|
|
52
49
|
>
|
|
53
50
|
<input
|
|
54
|
-
v-if="
|
|
51
|
+
v-if="displayChoiceAllEpisodes"
|
|
55
52
|
v-model="episodeNumbers"
|
|
56
53
|
class="form-check-input"
|
|
57
54
|
type="radio"
|
|
58
55
|
name="episodeNumbers"
|
|
59
56
|
value="number"
|
|
60
57
|
>
|
|
61
|
-
<span class="flex-shrink">{{ $t('Show') }}</span>
|
|
58
|
+
<span class="flex-shrink-0">{{ $t('Show') }}</span>
|
|
62
59
|
<input
|
|
63
60
|
id="number-input"
|
|
64
61
|
v-model="iFrameNumber"
|
|
@@ -72,76 +69,29 @@
|
|
|
72
69
|
class="d-inline"
|
|
73
70
|
:aria-label="$t('Number of player podcasts')"
|
|
74
71
|
/>
|
|
75
|
-
<span class="flex-shrink">{{ $t('Last podcasts') }}</span>
|
|
76
|
-
</div>
|
|
77
|
-
<div>
|
|
78
|
-
<input
|
|
79
|
-
id="proceedCheck"
|
|
80
|
-
v-model="proceedReading"
|
|
81
|
-
type="checkbox"
|
|
82
|
-
class="form-check-input"
|
|
83
|
-
>
|
|
84
|
-
<label
|
|
85
|
-
class="form-check-label"
|
|
86
|
-
for="proceedCheck"
|
|
87
|
-
>{{
|
|
88
|
-
$t('Proceed reading')
|
|
89
|
-
}}</label>
|
|
90
|
-
</div>
|
|
91
|
-
<div>
|
|
92
|
-
<input
|
|
93
|
-
id="isVisibleCheckbox"
|
|
94
|
-
v-model="isVisibleTemp"
|
|
95
|
-
type="checkbox"
|
|
96
|
-
class="form-check-input"
|
|
97
|
-
>
|
|
98
|
-
<label
|
|
99
|
-
class="form-check-label me-2"
|
|
100
|
-
for="isVisibleCheckbox"
|
|
101
|
-
>{{ $t('Podcasts still available') }}</label>
|
|
72
|
+
<span class="flex-shrink-0">{{ $t('Last podcasts') }}</span>
|
|
102
73
|
</div>
|
|
74
|
+
<ClassicCheckbox
|
|
75
|
+
v-model:textInit="proceedReading"
|
|
76
|
+
id-checkbox="proceed-reading-checkbox"
|
|
77
|
+
:label="$t('Proceed reading')"
|
|
78
|
+
/>
|
|
79
|
+
<ClassicCheckbox
|
|
80
|
+
v-model:textInit="isVisibleTemp"
|
|
81
|
+
id-checkbox="is-visible-checkbox"
|
|
82
|
+
:label="$t('Podcasts still available')"
|
|
83
|
+
/>
|
|
103
84
|
</div>
|
|
104
85
|
<div
|
|
105
86
|
v-else
|
|
106
|
-
class="d-flex flex-column flex-grow"
|
|
87
|
+
class="d-flex flex-column flex-grow-1"
|
|
107
88
|
>
|
|
108
|
-
<
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
class="form-check-input"
|
|
114
|
-
>
|
|
115
|
-
<label
|
|
116
|
-
class="form-check-label"
|
|
117
|
-
for="proceedCheck"
|
|
118
|
-
>{{
|
|
119
|
-
$t('Display associated article')
|
|
120
|
-
}}</label>
|
|
121
|
-
</div>
|
|
89
|
+
<ClassicCheckbox
|
|
90
|
+
v-model:textInit="displayArticle"
|
|
91
|
+
id-checkbox="display-article-checkbox"
|
|
92
|
+
:label="$t('Display associated article')"
|
|
93
|
+
/>
|
|
122
94
|
</div>
|
|
123
|
-
<!-- <div class="d-flex align-items-center flex-wrap" v-if="podcast && iFrameModel !== 'emission'">
|
|
124
|
-
<div>
|
|
125
|
-
<input type="checkbox" class="form-check-input" id="startTime" v-model="startTime">
|
|
126
|
-
<label class="form-check-label me-2" for="startTime">{{$t('Start at')}}</label>
|
|
127
|
-
</div>
|
|
128
|
-
<input
|
|
129
|
-
ref="minutesRef"
|
|
130
|
-
type="number"
|
|
131
|
-
:value="minutes"
|
|
132
|
-
min="0"
|
|
133
|
-
class="input-share-player input-no-outline"
|
|
134
|
-
@change="onDurationChange"/>
|
|
135
|
-
<div class="me-1 ms-1">:</div>
|
|
136
|
-
<input
|
|
137
|
-
ref="secondesRef"
|
|
138
|
-
type="number"
|
|
139
|
-
:value="secondes"
|
|
140
|
-
min="0"
|
|
141
|
-
max="59"
|
|
142
|
-
class="input-share-player input-no-outline"
|
|
143
|
-
@change="onDurationChange"/>
|
|
144
|
-
</div> -->
|
|
145
95
|
</div>
|
|
146
96
|
</div>
|
|
147
97
|
</div>
|
|
@@ -149,26 +99,24 @@
|
|
|
149
99
|
</template>
|
|
150
100
|
|
|
151
101
|
<script lang="ts">
|
|
152
|
-
import
|
|
153
|
-
import { Podcast } from '@/store/class/podcast';
|
|
102
|
+
import ClassicCheckbox from '../../form/ClassicCheckbox.vue';
|
|
154
103
|
import { defineComponent } from 'vue'
|
|
155
104
|
export default defineComponent({
|
|
105
|
+
components:{
|
|
106
|
+
ClassicCheckbox,
|
|
107
|
+
},
|
|
156
108
|
props: {
|
|
157
|
-
podcast: { default: undefined, type: Object as ()=> Podcast},
|
|
158
|
-
playlist: { default: undefined, type: Object as ()=> Playlist},
|
|
159
|
-
iFrameModel: { default: undefined, type: String},
|
|
160
109
|
isVisible: { default: false, type: Boolean},
|
|
110
|
+
choseNumberEpisode: {default: false, type: Boolean},
|
|
111
|
+
displayChoiceAllEpisodes: {default: false, type: Boolean}
|
|
161
112
|
},
|
|
162
|
-
emits: ['
|
|
113
|
+
emits: ['episodeNumbers', 'proceedReading', 'isVisible', 'iFrameNumber', 'displayArticle'],
|
|
163
114
|
|
|
164
115
|
data() {
|
|
165
116
|
return {
|
|
166
117
|
proceedReading: true as boolean,
|
|
167
118
|
episodeNumbers: 'number' as string,
|
|
168
119
|
iFrameNumberPriv: '3' as string,
|
|
169
|
-
minutes: 0 as number,
|
|
170
|
-
secondes: 0 as number,
|
|
171
|
-
startTime: true as boolean,
|
|
172
120
|
isVisibleTemp: this.isVisible as boolean,
|
|
173
121
|
displayArticle: true as boolean,
|
|
174
122
|
};
|
|
@@ -185,15 +133,6 @@ export default defineComponent({
|
|
|
185
133
|
}
|
|
186
134
|
},
|
|
187
135
|
},
|
|
188
|
-
isEmission(): boolean {
|
|
189
|
-
return 'emission' === this.iFrameModel;
|
|
190
|
-
},
|
|
191
|
-
isLargeEmission(): boolean {
|
|
192
|
-
return 'largeEmission' === this.iFrameModel;
|
|
193
|
-
},
|
|
194
|
-
isLargeSuggestion(): boolean {
|
|
195
|
-
return 'largeSuggestion' === this.iFrameModel;
|
|
196
|
-
},
|
|
197
136
|
},
|
|
198
137
|
watch: {
|
|
199
138
|
episodeNumbers(): void {
|
|
@@ -215,17 +154,6 @@ export default defineComponent({
|
|
|
215
154
|
this.$emit('displayArticle', this.displayArticle);
|
|
216
155
|
}
|
|
217
156
|
},
|
|
218
|
-
methods: {
|
|
219
|
-
/* onDurationChange(): void {
|
|
220
|
-
if (this.startTime) {
|
|
221
|
-
const minutes = parseInt((this.$refs.minutesRef as any).value, 10);
|
|
222
|
-
const secondes = parseInt((this.$refs.secondesRef as any).value, 10);
|
|
223
|
-
this.$emit('startTime', minutes * 60 + secondes);
|
|
224
|
-
} else {
|
|
225
|
-
this.$emit('startTime', 0);
|
|
226
|
-
}
|
|
227
|
-
}, */
|
|
228
|
-
},
|
|
229
157
|
})
|
|
230
158
|
</script>
|
|
231
159
|
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
v-if="authenticated"
|
|
15
15
|
id="popover-share-help"
|
|
16
16
|
role="button"
|
|
17
|
+
tabindex="-1"
|
|
17
18
|
class="saooti-help ml-2"
|
|
18
19
|
:aria-label="$t('Help')"
|
|
19
20
|
/>
|
|
20
21
|
<Popover
|
|
21
22
|
v-if="authenticated"
|
|
22
23
|
target="popover-share-help"
|
|
23
|
-
triggers="hover"
|
|
24
24
|
placement="right"
|
|
25
25
|
>
|
|
26
26
|
{{ $t('Share this page without edit and share blocks') }}
|
|
@@ -247,8 +247,8 @@
|
|
|
247
247
|
</template>
|
|
248
248
|
|
|
249
249
|
<script lang="ts">
|
|
250
|
-
import { Emission } from '@/store/class/emission';
|
|
251
|
-
import { Podcast } from '@/store/class/podcast';
|
|
250
|
+
import { Emission } from '@/store/class/general/emission';
|
|
251
|
+
import { Podcast } from '@/store/class/general/podcast';
|
|
252
252
|
import { state } from '../../../store/paramStore';
|
|
253
253
|
import Snackbar from '../../misc/Snackbar.vue';
|
|
254
254
|
import { displayMethods } from '../../mixins/functions';
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
import octopusApi from '@saooti/octopus-api';
|
|
114
114
|
import Snackbar from '../../misc/Snackbar.vue';
|
|
115
115
|
import { displayMethods } from '../../mixins/functions';
|
|
116
|
-
import { Emission } from '@/store/class/emission';
|
|
116
|
+
import { Emission } from '@/store/class/general/emission';
|
|
117
117
|
|
|
118
118
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
119
119
|
import SnackbarVue from '../../misc/Snackbar.vue';
|
|
@@ -40,36 +40,23 @@
|
|
|
40
40
|
v-model:color="color"
|
|
41
41
|
v-model:theme="theme"
|
|
42
42
|
/>
|
|
43
|
-
<
|
|
43
|
+
<ClassicCheckbox
|
|
44
44
|
v-if="isPodcastNotVisible || playlist"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
id="isVisibleCheckbox"
|
|
50
|
-
v-model="isVisible"
|
|
51
|
-
type="checkbox"
|
|
52
|
-
class="form-check-input"
|
|
53
|
-
>
|
|
54
|
-
<label
|
|
55
|
-
class="form-check-label me-2"
|
|
56
|
-
for="isVisibleCheckbox"
|
|
57
|
-
>{{ titleStillAvailable }}</label>
|
|
58
|
-
</div>
|
|
59
|
-
</div>
|
|
45
|
+
v-model:textInit="isVisible"
|
|
46
|
+
id-checkbox="is-visible-checkbox"
|
|
47
|
+
:label="titleStillAvailable"
|
|
48
|
+
/>
|
|
60
49
|
</div>
|
|
61
50
|
<PlayerParameters
|
|
62
51
|
v-if="isPlayerParameter"
|
|
63
|
-
:podcast="podcast"
|
|
64
|
-
:playlist="playlist"
|
|
65
|
-
:i-frame-model="iFrameModel"
|
|
66
52
|
:is-visible="isVisible"
|
|
53
|
+
:chose-number-episode="displayChoiceAllEpisodes|| isLargeSuggestion"
|
|
54
|
+
:display-choice-all-episodes="displayChoiceAllEpisodes"
|
|
67
55
|
@displayArticle="updateDisplayArticle"
|
|
68
56
|
@episodeNumbers="updateEpisodeNumber"
|
|
69
57
|
@proceedReading="updateProceedReading"
|
|
70
58
|
@isVisible="updateIsVisible"
|
|
71
59
|
@iFrameNumber="updateIframeNumber"
|
|
72
|
-
@startTime="updateStartTime"
|
|
73
60
|
/>
|
|
74
61
|
</template>
|
|
75
62
|
<div v-else-if="exclusive && authenticated">
|
|
@@ -92,21 +79,23 @@
|
|
|
92
79
|
<script lang="ts">
|
|
93
80
|
import { state } from '../../../store/paramStore';
|
|
94
81
|
import octopusApi from '@saooti/octopus-api';
|
|
95
|
-
import { Podcast } from '@/store/class/podcast';
|
|
96
|
-
import { Emission } from '@/store/class/emission';
|
|
97
|
-
import { Playlist } from '@/store/class/playlist';
|
|
98
|
-
import { CustomPlayer } from '@/store/class/customPlayer';
|
|
82
|
+
import { Podcast } from '@/store/class/general/podcast';
|
|
83
|
+
import { Emission } from '@/store/class/general/emission';
|
|
84
|
+
import { Playlist } from '@/store/class/general/playlist';
|
|
85
|
+
import { CustomPlayer } from '@/store/class/general/customPlayer';
|
|
99
86
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
100
87
|
const ShareModalPlayer = defineAsyncComponent(() => import('../../misc/modal/ShareModalPlayer.vue'));
|
|
101
88
|
const PlayerParameters = defineAsyncComponent(() => import('./PlayerParameters.vue'));
|
|
102
89
|
const SharePlayerTypes = defineAsyncComponent(() => import('./SharePlayerTypes.vue'));
|
|
103
90
|
const SharePlayerColors = defineAsyncComponent(() => import('./SharePlayerColors.vue'));
|
|
91
|
+
const ClassicCheckbox = defineAsyncComponent(() => import('../../form/ClassicCheckbox.vue'));
|
|
104
92
|
export default defineComponent({
|
|
105
93
|
components: {
|
|
106
94
|
ShareModalPlayer,
|
|
107
95
|
SharePlayerColors,
|
|
108
96
|
PlayerParameters,
|
|
109
|
-
SharePlayerTypes
|
|
97
|
+
SharePlayerTypes,
|
|
98
|
+
ClassicCheckbox
|
|
110
99
|
},
|
|
111
100
|
|
|
112
101
|
props: {
|
|
@@ -128,7 +117,6 @@ export default defineComponent({
|
|
|
128
117
|
proceedReading: true as boolean,
|
|
129
118
|
episodeNumbers: 'number' as string,
|
|
130
119
|
iFrameNumber: '3' as string,
|
|
131
|
-
startTime: 0 as number,
|
|
132
120
|
isVisible: false as boolean,
|
|
133
121
|
displayArticle: true as boolean,
|
|
134
122
|
customPlayers: [] as Array<CustomPlayer>,
|
|
@@ -137,6 +125,9 @@ export default defineComponent({
|
|
|
137
125
|
},
|
|
138
126
|
|
|
139
127
|
computed: {
|
|
128
|
+
displayChoiceAllEpisodes():boolean{
|
|
129
|
+
return !this.podcast || this.isEmission || this.isLargeEmission;
|
|
130
|
+
},
|
|
140
131
|
miniplayerBaseUrl(): string{
|
|
141
132
|
return (state.podcastPage.MiniplayerUri as string);
|
|
142
133
|
},
|
|
@@ -144,7 +135,7 @@ export default defineComponent({
|
|
|
144
135
|
return 'emission' === this.iFrameModel;
|
|
145
136
|
},
|
|
146
137
|
isLargeEmission(): boolean {
|
|
147
|
-
return '
|
|
138
|
+
return 'emissionLarge' === this.iFrameModel;
|
|
148
139
|
},
|
|
149
140
|
isLargeSuggestion(): boolean {
|
|
150
141
|
return 'largeSuggestion' === this.iFrameModel;
|
|
@@ -181,10 +172,7 @@ export default defineComponent({
|
|
|
181
172
|
iFrameSrc(): string {
|
|
182
173
|
const url = [''];
|
|
183
174
|
let iFrameNumber = '/' + this.iFrameNumber;
|
|
184
|
-
if (
|
|
185
|
-
(!this.podcast || this.isEmission || this.isLargeEmission) &&
|
|
186
|
-
'all' === this.episodeNumbers
|
|
187
|
-
) {
|
|
175
|
+
if (this.displayChoiceAllEpisodes && 'all' === this.episodeNumbers) {
|
|
188
176
|
iFrameNumber = '/0';
|
|
189
177
|
}
|
|
190
178
|
if (!this.podcast && !this.playlist && this.emission) {
|
|
@@ -245,7 +233,6 @@ export default defineComponent({
|
|
|
245
233
|
if(!this.displayArticle){
|
|
246
234
|
url.push('&article=false');
|
|
247
235
|
}
|
|
248
|
-
url.push('&time=' + this.startTime);
|
|
249
236
|
if (this.isVisible) {
|
|
250
237
|
url.push('&key=' + window.btoa(this.dataTitle.toString()));
|
|
251
238
|
}
|
|
@@ -259,38 +246,38 @@ export default defineComponent({
|
|
|
259
246
|
case 'large':
|
|
260
247
|
if (this.podcast) return '180px';
|
|
261
248
|
if ('number' === this.episodeNumbers) {
|
|
262
|
-
switch (this.iFrameNumber) {
|
|
249
|
+
switch (this.iFrameNumber.toString()) {
|
|
263
250
|
case '1':
|
|
264
|
-
return '
|
|
251
|
+
return '270px';
|
|
265
252
|
case '2':
|
|
266
|
-
return '
|
|
253
|
+
return '320px';
|
|
267
254
|
case '3':
|
|
268
|
-
return '
|
|
255
|
+
return '360px';
|
|
269
256
|
case '4':
|
|
270
|
-
return '
|
|
257
|
+
return '420px';
|
|
271
258
|
case '5':
|
|
272
|
-
return '
|
|
259
|
+
return '420px';
|
|
273
260
|
default:
|
|
274
|
-
return '
|
|
261
|
+
return '420px';
|
|
275
262
|
}
|
|
276
263
|
}
|
|
277
264
|
return '435px';
|
|
278
|
-
case '
|
|
265
|
+
case 'emissionLarge':
|
|
279
266
|
case 'largeSuggestion':
|
|
280
267
|
if ('number' !== this.episodeNumbers) return '510px';
|
|
281
|
-
switch (this.iFrameNumber) {
|
|
268
|
+
switch (this.iFrameNumber.toString()) {
|
|
282
269
|
case '1':
|
|
283
|
-
return '260px';
|
|
284
|
-
case '2':
|
|
285
270
|
return '315px';
|
|
286
|
-
case '
|
|
271
|
+
case '2':
|
|
287
272
|
return '365px';
|
|
288
|
-
case '
|
|
273
|
+
case '3':
|
|
289
274
|
return '420px';
|
|
275
|
+
case '4':
|
|
276
|
+
return '470px';
|
|
290
277
|
case '5':
|
|
291
|
-
return '
|
|
278
|
+
return '470px';
|
|
292
279
|
default:
|
|
293
|
-
return '
|
|
280
|
+
return '470px';
|
|
294
281
|
}
|
|
295
282
|
case 'emission':
|
|
296
283
|
return '530px';
|
|
@@ -316,7 +303,7 @@ export default defineComponent({
|
|
|
316
303
|
return 0;
|
|
317
304
|
},
|
|
318
305
|
isPlayerParameter(): boolean{
|
|
319
|
-
return !this.podcast || (this.podcast.article && 0 !== this.podcast.article.length) || this.isEmission || this.isLargeEmission || this.isLargeSuggestion;
|
|
306
|
+
return (!this.podcast || (this.podcast.article && 0 !== this.podcast.article.length) || this.isEmission || this.isLargeEmission || this.isLargeSuggestion) && !this.playlist;
|
|
320
307
|
}
|
|
321
308
|
},
|
|
322
309
|
async created() {
|
|
@@ -365,9 +352,6 @@ export default defineComponent({
|
|
|
365
352
|
updateIframeNumber(value: string): void {
|
|
366
353
|
this.iFrameNumber = value;
|
|
367
354
|
},
|
|
368
|
-
updateStartTime(value: number): void {
|
|
369
|
-
this.startTime = value;
|
|
370
|
-
},
|
|
371
355
|
updateIsVisible(value: boolean): void {
|
|
372
356
|
this.isVisible = value;
|
|
373
357
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="d-flex justify-content-around mt-3 flex-grow w-100">
|
|
3
|
-
<div class="d-flex flex-column align-items-center flex-shrink me-3">
|
|
2
|
+
<div class="d-flex justify-content-around mt-3 flex-grow-1 w-100">
|
|
3
|
+
<div class="d-flex flex-column align-items-center flex-shrink-0 me-3">
|
|
4
4
|
<div class="fw-600">
|
|
5
5
|
{{ $t('Choose color') }}
|
|
6
6
|
</div>
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
</option>
|
|
35
35
|
<option
|
|
36
36
|
v-if="podcast && podcast.podcastId"
|
|
37
|
-
value="
|
|
37
|
+
value="emissionLarge"
|
|
38
38
|
>
|
|
39
39
|
{{ $t('Large emission version') }}
|
|
40
40
|
</option>
|
|
@@ -49,11 +49,11 @@
|
|
|
49
49
|
</template>
|
|
50
50
|
|
|
51
51
|
<script lang="ts">
|
|
52
|
-
import { Podcast } from '@/store/class/podcast';
|
|
53
|
-
import { CustomPlayer } from '@/store/class/customPlayer';
|
|
52
|
+
import { Podcast } from '@/store/class/general/podcast';
|
|
53
|
+
import { CustomPlayer } from '@/store/class/general/customPlayer';
|
|
54
54
|
import { defineComponent } from 'vue';
|
|
55
|
-
import { Emission } from '@/store/class/emission';
|
|
56
|
-
import { Playlist } from '@/store/class/playlist';
|
|
55
|
+
import { Emission } from '@/store/class/general/emission';
|
|
56
|
+
import { Playlist } from '@/store/class/general/playlist';
|
|
57
57
|
export default defineComponent({
|
|
58
58
|
props: {
|
|
59
59
|
podcast: { default: undefined, type: Object as ()=> Podcast},
|