@saooti/octopus-sdk 41.0.18 → 41.0.19
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/CHANGELOG.md +13 -1
- package/index.ts +4 -0
- package/package.json +1 -1
- package/src/components/composable/route/types.ts +47 -0
- package/src/components/composable/route/useAdvancedParamInit.ts +29 -4
- package/src/components/composable/route/useRouteUpdateParams.ts +9 -19
- package/src/components/composable/route/useSimplePageParam.ts +6 -4
- package/src/components/display/emission/EmissionList.vue +6 -2
- package/src/components/display/filter/AdvancedSearch.vue +237 -170
- package/src/components/display/podcasts/PodcastList.vue +4 -1
- package/src/components/display/podcasts/PodcastModuleBox.vue +23 -6
- package/src/components/display/podcasts/TagList.vue +2 -2
- package/src/components/form/ClassicMultiselect.vue +1 -0
- package/src/components/form/ClassicTagInput.vue +155 -0
- package/src/components/pages/EmissionPage.vue +15 -0
- package/src/components/pages/EmissionsPage.vue +66 -61
- package/src/components/pages/PodcastsPage.vue +71 -66
- package/src/locale/de.ts +1 -0
- package/src/locale/en.ts +1 -0
- package/src/locale/es.ts +1 -0
- package/src/locale/fr.ts +2 -1
- package/src/locale/it.ts +1 -0
- package/src/locale/sl.ts +1 -0
- package/src/router/router.ts +4 -0
- package/src/stores/class/general/emission.ts +2 -0
- package/src/stores/class/general/podcast.ts +2 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
class="d-flex flex-wrap border align-items-center rounded px-2"
|
|
4
|
+
>
|
|
5
|
+
<div
|
|
6
|
+
v-for="(tag, index) in tags"
|
|
7
|
+
:key="tag"
|
|
8
|
+
class="vs__selected p-0 my-0 mx-1"
|
|
9
|
+
:class="getClass(tag)"
|
|
10
|
+
>
|
|
11
|
+
<!--<button
|
|
12
|
+
v-if="index !== tagToEdit"-->
|
|
13
|
+
<button
|
|
14
|
+
:id="'display-input-tag-' + index"
|
|
15
|
+
class="btn-transparent d-flex align-items"
|
|
16
|
+
@click="startEditTag(index, tag)"
|
|
17
|
+
>
|
|
18
|
+
<!--<img
|
|
19
|
+
v-if="isOuestFranceTag(tag)"
|
|
20
|
+
width="20"
|
|
21
|
+
height="20"
|
|
22
|
+
class="ouest-france-logo"
|
|
23
|
+
title="Ouest France Logo"
|
|
24
|
+
aria-hidden="true"
|
|
25
|
+
alt=""
|
|
26
|
+
src="/img/ouest_france_logo.svg"
|
|
27
|
+
>-->
|
|
28
|
+
<span>{{ tag }}</span>
|
|
29
|
+
</button>
|
|
30
|
+
<!--<input
|
|
31
|
+
v-else
|
|
32
|
+
:id="'form-input-tag-' + index"
|
|
33
|
+
v-model="tagToEditTempValue"
|
|
34
|
+
:title="$t('Edit')"
|
|
35
|
+
@blur="finishEditTag(index)"
|
|
36
|
+
@keydown.enter="finishEditTag(index)"
|
|
37
|
+
>-->
|
|
38
|
+
|
|
39
|
+
<button class="btn-transparent" @click="removeTag(index)">
|
|
40
|
+
<CloseIcon />
|
|
41
|
+
</button>
|
|
42
|
+
</div>
|
|
43
|
+
<input
|
|
44
|
+
v-if="editing"
|
|
45
|
+
:id="'form-input-tag'"
|
|
46
|
+
v-model="tagToEditTempValue"
|
|
47
|
+
:title="$t('Edit')"
|
|
48
|
+
@blur="finishEditTag"
|
|
49
|
+
@keydown.enter="finishEditTag"
|
|
50
|
+
>
|
|
51
|
+
<button
|
|
52
|
+
class="btn btn-add-tag m-1"
|
|
53
|
+
:title="$t('Add a tag')"
|
|
54
|
+
@click="createNewTag"
|
|
55
|
+
/>
|
|
56
|
+
</div>
|
|
57
|
+
</template>
|
|
58
|
+
|
|
59
|
+
<script setup lang="ts">
|
|
60
|
+
import { ref } from 'vue';
|
|
61
|
+
|
|
62
|
+
import CloseIcon from "vue-material-design-icons/Close.vue";
|
|
63
|
+
|
|
64
|
+
const { tags, tagClass } = defineProps<{
|
|
65
|
+
/** Currently selected tags */
|
|
66
|
+
tags: string[];
|
|
67
|
+
/** The class to apply to the tags */
|
|
68
|
+
tagClass?: string|string[]|((tag: string) => string|string[]);
|
|
69
|
+
}>();
|
|
70
|
+
|
|
71
|
+
const emit = defineEmits<{
|
|
72
|
+
/** Update tags */
|
|
73
|
+
(e: 'update:tags', tags: string[]): void
|
|
74
|
+
}>();
|
|
75
|
+
|
|
76
|
+
//const tagToEdit: Ref<number | undefined> = ref(undefined);
|
|
77
|
+
const editing = ref(false);
|
|
78
|
+
const tagToEditTempValue = ref("");
|
|
79
|
+
|
|
80
|
+
function getClass(tag: string): string|string[]|undefined {
|
|
81
|
+
if (typeof tagClass === 'function') {
|
|
82
|
+
return tagClass(tag);
|
|
83
|
+
} else {
|
|
84
|
+
return tagClass;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function removeTag(index: number): void {
|
|
89
|
+
const newTags = [...tags];
|
|
90
|
+
newTags.splice(index, 1);
|
|
91
|
+
console.log(index, newTags);
|
|
92
|
+
emit('update:tags', newTags);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function startEditTag(index: number, tag: string): void {
|
|
96
|
+
//tagToEditTempValue.value = tags[index];
|
|
97
|
+
//tagToEdit.value = index;
|
|
98
|
+
// editing.value = true;
|
|
99
|
+
/*nextTick(() => {
|
|
100
|
+
document.getElementById("form-input-tag-" + index)?.focus();
|
|
101
|
+
});*/
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function finishEditTag(/*index: number*/): void {
|
|
105
|
+
/*if (index !== tagToEdit.value) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
tagToEdit.value = undefined;
|
|
109
|
+
|
|
110
|
+
if (tagToEditTempValue.value.length) {
|
|
111
|
+
const newTags = [...tags];
|
|
112
|
+
newTags.splice(
|
|
113
|
+
index,
|
|
114
|
+
1,
|
|
115
|
+
...tagToEditTempValue.value.split(","),
|
|
116
|
+
);
|
|
117
|
+
emit('update:tags', newTags);
|
|
118
|
+
} else {
|
|
119
|
+
const newTags = [...tags];
|
|
120
|
+
newTags.splice(index, 1);
|
|
121
|
+
emit('update:tags', newTags);
|
|
122
|
+
}*/
|
|
123
|
+
|
|
124
|
+
if (tagToEditTempValue.value === '') {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const newTags = [...tags, tagToEditTempValue.value];
|
|
129
|
+
tagToEditTempValue.value = '';
|
|
130
|
+
editing.value = false;
|
|
131
|
+
emit('update:tags', newTags);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function createNewTag(): void {
|
|
135
|
+
/*const newTags = [...tags, ''];
|
|
136
|
+
emit('update:tags', newTags);
|
|
137
|
+
startEditTag(tags.length - 1, '');*/
|
|
138
|
+
editing.value = true;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
</script>
|
|
142
|
+
|
|
143
|
+
<style scoped lang="scss">
|
|
144
|
+
.btn-add-tag {
|
|
145
|
+
padding: 4px;
|
|
146
|
+
line-height: 1;
|
|
147
|
+
|
|
148
|
+
&::after {
|
|
149
|
+
content: "+";
|
|
150
|
+
color: var(--octopus-primary);
|
|
151
|
+
font-size: 14px;
|
|
152
|
+
font-weight: bold;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
</style>
|
|
@@ -57,6 +57,15 @@
|
|
|
57
57
|
{{ t("Listen to the latest episode") }}
|
|
58
58
|
</div>
|
|
59
59
|
</div>
|
|
60
|
+
|
|
61
|
+
<!-- Tag list -->
|
|
62
|
+
<TagList
|
|
63
|
+
v-if="undefined !== emission.tags && 0 !== emission.tags.length"
|
|
64
|
+
:tag-list="emission.tags"
|
|
65
|
+
:orga-id="authOrgaId"
|
|
66
|
+
:emission-annotations="emission.annotations"
|
|
67
|
+
/>
|
|
68
|
+
|
|
60
69
|
<SubscribeButtons
|
|
61
70
|
v-if="isPodcastmaker"
|
|
62
71
|
class="mt-4"
|
|
@@ -160,6 +169,7 @@ const PodcastPlayButton = defineAsyncComponent(
|
|
|
160
169
|
const PodcastmakerHeader = defineAsyncComponent(
|
|
161
170
|
() => import("../display/podcastmaker/PodcastmakerHeader.vue"),
|
|
162
171
|
);
|
|
172
|
+
const TagList = defineAsyncComponent(() => import("../display/podcasts/TagList.vue"));
|
|
163
173
|
|
|
164
174
|
|
|
165
175
|
//Props
|
|
@@ -228,6 +238,11 @@ async function getEmissionDetails(): Promise<void> {
|
|
|
228
238
|
loaded.value = false;
|
|
229
239
|
error.value = false;
|
|
230
240
|
try {
|
|
241
|
+
const reponse = await classicApi.fetchData<Emission>({
|
|
242
|
+
api: 0,
|
|
243
|
+
path: "emission/" + props.emissionId,
|
|
244
|
+
});
|
|
245
|
+
console.log(reponse);
|
|
231
246
|
emission.value = await classicApi.fetchData<Emission>({
|
|
232
247
|
api: 0,
|
|
233
248
|
path: "emission/" + props.emissionId,
|
|
@@ -1,40 +1,42 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
2
|
+
<section v-if="isInit" class="page-box">
|
|
3
|
+
<slot name="new-emission" />
|
|
4
|
+
<ProductorSearch
|
|
5
|
+
v-model:organisation-id="organisationId"
|
|
6
|
+
v-model:search-pattern="searchPattern"
|
|
7
|
+
type="emission"
|
|
8
|
+
/>
|
|
9
|
+
<AdvancedSearch
|
|
10
|
+
v-model:monetisable="monetisable"
|
|
11
|
+
v-model:iab-id="iabId"
|
|
12
|
+
v-model:sort="sort"
|
|
13
|
+
v-model:include-hidden="includeHidden"
|
|
14
|
+
v-model:from-date="fromDate"
|
|
15
|
+
v-model:to-date="toDate"
|
|
16
|
+
v-model:rubrique-filter="rubriqueFilter"
|
|
17
|
+
v-model:beneficiaries="beneficiaries"
|
|
18
|
+
:search-pattern="searchPattern"
|
|
19
|
+
:is-emission="true"
|
|
20
|
+
:organisation-id="organisationId"
|
|
21
|
+
/>
|
|
22
|
+
<EmissionList
|
|
23
|
+
:show-count="true"
|
|
24
|
+
:first="paginateFirst"
|
|
25
|
+
:size="ps"
|
|
26
|
+
:query="searchMinSize"
|
|
27
|
+
:organisation-id="organisationId"
|
|
28
|
+
:monetisable="monetisable"
|
|
29
|
+
:before="toDate"
|
|
30
|
+
:after="fromDate"
|
|
31
|
+
:sort="sort"
|
|
32
|
+
:include-hidden="includeHidden"
|
|
33
|
+
:iab-id="iabId"
|
|
34
|
+
:rubrique-id="rubriquesFilterArrayIds.rubriqueId"
|
|
35
|
+
:rubriquage-id="rubriquesFilterArrayIds.rubriquageId"
|
|
36
|
+
:no-rubriquage-id="rubriquesFilterArrayIds.noRubriquageId"
|
|
37
|
+
:beneficiaries="beneficiaries"
|
|
38
|
+
/>
|
|
39
|
+
</section>
|
|
38
40
|
</template>
|
|
39
41
|
|
|
40
42
|
<script setup lang="ts">
|
|
@@ -43,38 +45,41 @@ import AdvancedSearch from "../display/filter/AdvancedSearch.vue";
|
|
|
43
45
|
import {useAdvancedParamInit} from "../composable/route/useAdvancedParamInit";
|
|
44
46
|
import { defineAsyncComponent } from "vue";
|
|
45
47
|
const ProductorSearch = defineAsyncComponent(
|
|
46
|
-
|
|
48
|
+
() => import("../display/filter/ProductorSearch.vue"),
|
|
47
49
|
);
|
|
48
50
|
|
|
49
51
|
//Props
|
|
50
52
|
const props = defineProps({
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
53
|
+
pr: { default: 0, type: Number },
|
|
54
|
+
ps: { default: 30, type: Number },
|
|
55
|
+
routeQuery: { default: "", type: String },
|
|
56
|
+
routeMonetisable: { default: "UNDEFINED", type: String },
|
|
57
|
+
routeIab: { default: undefined, type: Number },
|
|
58
|
+
routeSort: { default: "LAST_PODCAST_DESC", type: String },
|
|
59
|
+
routeIncludeHidden: { default: "", type: String },
|
|
60
|
+
routeFrom: { default: undefined, type: String },
|
|
61
|
+
routeTo: { default: undefined, type: String },
|
|
62
|
+
routeOrga: { default: undefined, type: String },
|
|
63
|
+
routeRubriques: { default: "", type: String },
|
|
64
|
+
/** The filter on beneficiaries defined on the route props */
|
|
65
|
+
routeBeneficiaries: { default: null, type: Array as () => Array<string> }
|
|
62
66
|
});
|
|
63
67
|
|
|
64
68
|
//Composables
|
|
65
69
|
const {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
70
|
+
organisationId,
|
|
71
|
+
searchPattern,
|
|
72
|
+
monetisable,
|
|
73
|
+
iabId,
|
|
74
|
+
sort,
|
|
75
|
+
includeHidden,
|
|
76
|
+
fromDate,
|
|
77
|
+
toDate,
|
|
78
|
+
rubriqueFilter,
|
|
79
|
+
searchMinSize,
|
|
80
|
+
paginateFirst,
|
|
81
|
+
rubriquesFilterArrayIds,
|
|
82
|
+
isInit,
|
|
83
|
+
beneficiaries
|
|
79
84
|
} = useAdvancedParamInit(props, true);
|
|
80
85
|
</script>
|
|
@@ -1,42 +1,44 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
2
|
+
<section v-if="isInit" class="page-box">
|
|
3
|
+
<ProductorSearch
|
|
4
|
+
v-model:organisation-id="organisationId"
|
|
5
|
+
v-model:search-pattern="searchPattern"
|
|
6
|
+
/>
|
|
7
|
+
<AdvancedSearch
|
|
8
|
+
v-model:only-video="onlyVideo"
|
|
9
|
+
v-model:monetisable="monetisable"
|
|
10
|
+
v-model:iab-id="iabId"
|
|
11
|
+
v-model:sort="sort"
|
|
12
|
+
v-model:include-hidden="includeHidden"
|
|
13
|
+
v-model:from-date="fromDate"
|
|
14
|
+
v-model:to-date="toDate"
|
|
15
|
+
v-model:validity="validity"
|
|
16
|
+
v-model:rubrique-filter="rubriqueFilter"
|
|
17
|
+
v-model:beneficiaries="beneficiaries"
|
|
18
|
+
:search-pattern="searchPattern"
|
|
19
|
+
:is-emission="false"
|
|
20
|
+
:organisation-id="organisationId"
|
|
21
|
+
/>
|
|
22
|
+
<PodcastList
|
|
23
|
+
:show-count="true"
|
|
24
|
+
:first="paginateFirst"
|
|
25
|
+
:size="ps"
|
|
26
|
+
:organisation-id="orgaArray"
|
|
27
|
+
:query="searchMinSize"
|
|
28
|
+
:monetisable="monetisable"
|
|
29
|
+
:before="toDate"
|
|
30
|
+
:after="fromDate"
|
|
31
|
+
:sort-criteria="sort"
|
|
32
|
+
:include-hidden="includeHidden"
|
|
33
|
+
:iab-id="iabId"
|
|
34
|
+
:rubrique-id="rubriquesFilterArrayIds.rubriqueId"
|
|
35
|
+
:rubriquage-id="rubriquesFilterArrayIds.rubriquageId"
|
|
36
|
+
:no-rubriquage-id="rubriquesFilterArrayIds.noRubriquageId"
|
|
37
|
+
:beneficiaries="beneficiaries"
|
|
38
|
+
:with-video="withVideo"
|
|
39
|
+
:validity="validity"
|
|
40
|
+
/>
|
|
41
|
+
</section>
|
|
40
42
|
</template>
|
|
41
43
|
|
|
42
44
|
<script setup lang="ts">
|
|
@@ -48,19 +50,21 @@ import { computed, ref, watch } from "vue";
|
|
|
48
50
|
|
|
49
51
|
//Props
|
|
50
52
|
const props = defineProps({
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
53
|
+
pr: { default: 0, type: Number },
|
|
54
|
+
ps: { default: 30, type: Number },
|
|
55
|
+
routeQuery: { default: "", type: String },
|
|
56
|
+
routeMonetisable: { default: "UNDEFINED", type: String },
|
|
57
|
+
routeIab: { default: undefined, type: Number },
|
|
58
|
+
routeSort: { default: "DATE", type: String },
|
|
59
|
+
routeIncludeHidden: { default: "", type: String },
|
|
60
|
+
routeFrom: { default: undefined, type: String },
|
|
61
|
+
routeTo: { default: undefined, type: String },
|
|
62
|
+
routeValidity: { default: "", type: String },
|
|
63
|
+
routeOnlyVideo: { default: "", type: String },
|
|
64
|
+
routeOrga: { default: undefined, type: String },
|
|
65
|
+
routeRubriques: { default: "", type: String },
|
|
66
|
+
/** The filter on beneficiaries defined on the route props */
|
|
67
|
+
routeBeneficiaries: { default: null, type: Array as () => Array<string> }
|
|
64
68
|
});
|
|
65
69
|
|
|
66
70
|
|
|
@@ -70,20 +74,21 @@ const onlyVideo = ref(false);
|
|
|
70
74
|
|
|
71
75
|
//Composables
|
|
72
76
|
const {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
77
|
+
organisationId,
|
|
78
|
+
searchPattern,
|
|
79
|
+
monetisable,
|
|
80
|
+
iabId,
|
|
81
|
+
sort,
|
|
82
|
+
includeHidden,
|
|
83
|
+
fromDate,
|
|
84
|
+
toDate,
|
|
85
|
+
rubriqueFilter,
|
|
86
|
+
searchMinSize,
|
|
87
|
+
paginateFirst,
|
|
88
|
+
validity,
|
|
89
|
+
rubriquesFilterArrayIds,
|
|
90
|
+
isInit,
|
|
91
|
+
beneficiaries
|
|
87
92
|
} = useAdvancedParamInit(props, false);
|
|
88
93
|
|
|
89
94
|
//Computed
|
|
@@ -93,7 +98,7 @@ const withVideo = computed(() => false === onlyVideo.value ? undefined : true);
|
|
|
93
98
|
|
|
94
99
|
//Watch
|
|
95
100
|
watch(() => props.routeOnlyVideo, () =>{
|
|
96
|
-
|
|
101
|
+
onlyVideo.value = "true" === props.routeOnlyVideo;
|
|
97
102
|
}, {immediate: true});
|
|
98
103
|
|
|
99
104
|
</script>
|
package/src/locale/de.ts
CHANGED
|
@@ -417,4 +417,5 @@ export default {
|
|
|
417
417
|
"Silent stream":"Stiller Fluss",
|
|
418
418
|
"Emission - Not available for listeners": "Sendung für Hörer nicht sichtbar",
|
|
419
419
|
"Emission - Not available explanation": "Diese Sendung ist für Hörer nicht sichtbar, da sie so konfiguriert wurde, dass ihre Episoden nicht veröffentlicht werden. Diese Konfiguration ist in den erweiterten Einstellungen der Show verfügbar.",
|
|
420
|
+
"Filters - Beneficiaries": "Nach Referenzen der Rechteinhaber",
|
|
420
421
|
}
|
package/src/locale/en.ts
CHANGED
|
@@ -420,4 +420,5 @@ export default {
|
|
|
420
420
|
"Silent stream":"Silent stream",
|
|
421
421
|
"Emission - Not available for listeners": "Broadcast not visible to listeners",
|
|
422
422
|
"Emission - Not available explanation": "This show is not visible to listeners because it has been configured so that its episodes are not published. This configuration is available in the advanced settings of the show.",
|
|
423
|
+
"Filters - Beneficiaries": "By rights holder references",
|
|
423
424
|
};
|
package/src/locale/es.ts
CHANGED
|
@@ -418,4 +418,5 @@ export default {
|
|
|
418
418
|
"Silent stream":"Flujo silencioso",
|
|
419
419
|
"Emission - Not available for listeners": "Transmisión no visible para los oyentes",
|
|
420
420
|
"Emission - Not available explanation": "Este programa no es visible para los oyentes porque ha sido configurado para que sus episodios no se publiquen. Esta configuración está disponible en la configuración avanzada del programa.",
|
|
421
|
+
"Filters - Beneficiaries": "Por referencias de titulares de derechos",
|
|
421
422
|
}
|
package/src/locale/fr.ts
CHANGED
|
@@ -426,5 +426,6 @@ export default {
|
|
|
426
426
|
"Color of the QR Code": "Couleur du Qr Code",
|
|
427
427
|
"Silent stream":"Flux silencieux",
|
|
428
428
|
"Emission - Not available for listeners": "Émission non visible pour les auditeurs",
|
|
429
|
-
"Emission - Not available explanation": "Cette émission n'est pas visible pour les auditeurs car elle a été configurée pour que ses épisodes ne soient pas publiés. Cette configuration est disponible dans les paramètres avancés de l'émission."
|
|
429
|
+
"Emission - Not available explanation": "Cette émission n'est pas visible pour les auditeurs car elle a été configurée pour que ses épisodes ne soient pas publiés. Cette configuration est disponible dans les paramètres avancés de l'émission.",
|
|
430
|
+
"Filters - Beneficiaries": "Par références ayants-droit"
|
|
430
431
|
};
|
package/src/locale/it.ts
CHANGED
|
@@ -414,4 +414,5 @@ export default{
|
|
|
414
414
|
"Silent stream":"Flusso silenzioso",
|
|
415
415
|
"Emission - Not available for listeners": "Trasmissione non visibile agli ascoltatori",
|
|
416
416
|
"Emission - Not available explanation": "Questo programma non è visibile agli ascoltatori perché è stato configurato in modo che i suoi episodi non vengano pubblicati. Questa configurazione è disponibile nelle impostazioni avanzate dello spettacolo.",
|
|
417
|
+
"Filters - Beneficiaries": "Per riferimenti del titolare dei diritti",
|
|
417
418
|
};
|
package/src/locale/sl.ts
CHANGED
|
@@ -409,4 +409,5 @@ export default {
|
|
|
409
409
|
"Silent stream":"Tihi tok",
|
|
410
410
|
"Emission - Not available for listeners": "Oddaja ni vidna poslušalcem",
|
|
411
411
|
"Emission - Not available explanation": "Ta oddaja ni vidna poslušalcem, ker je bila konfigurirana tako, da njene epizode niso objavljene. Ta konfiguracija je na voljo v naprednih nastavitvah oddaje.",
|
|
412
|
+
"Filters - Beneficiaries": "Po referencah imetnikov pravic",
|
|
412
413
|
}
|
package/src/router/router.ts
CHANGED
|
@@ -9,6 +9,8 @@ import { AuthStore } from "../stores/AuthStore";
|
|
|
9
9
|
import fetchHelper from "@/helper/fetchHelper";
|
|
10
10
|
import { setupRouter } from "./utils";
|
|
11
11
|
|
|
12
|
+
import { ROUTE_PARAMS } from "../components/composable/route/useRouteUpdateParams";
|
|
13
|
+
|
|
12
14
|
/*--------------------------------------------------------------------------
|
|
13
15
|
Composants publics
|
|
14
16
|
--------------------------------------------------------------------------*/
|
|
@@ -96,6 +98,7 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
96
98
|
routeOnlyVideo:route.query.v ?? "",
|
|
97
99
|
routeOrga:route.query.o,
|
|
98
100
|
routeRubriques :route.query.r ?? route.query.rubriquesId,
|
|
101
|
+
routeBeneficiaries: route.query[ROUTE_PARAMS.Beneficiaries],
|
|
99
102
|
}),
|
|
100
103
|
meta:{
|
|
101
104
|
title: "Podcasts",
|
|
@@ -117,6 +120,7 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
117
120
|
routeTo: route.query.to,
|
|
118
121
|
routeOrga:route.query.o,
|
|
119
122
|
routeRubriques :route.query.r ?? route.query.rubriquesId,
|
|
123
|
+
routeBeneficiaries: route.query[ROUTE_PARAMS.Beneficiaries],
|
|
120
124
|
}),
|
|
121
125
|
meta:{
|
|
122
126
|
title: "Emissions",
|
|
@@ -37,7 +37,9 @@ export interface Podcast {
|
|
|
37
37
|
rssEpisode?:string;
|
|
38
38
|
score?: number;
|
|
39
39
|
size?: number;
|
|
40
|
+
/** An optional list of tags */
|
|
40
41
|
tags?: Array<string>;
|
|
42
|
+
/** An optional list of tags for OuestFrance */
|
|
41
43
|
ofTags?: Array<string>;
|
|
42
44
|
title: string;
|
|
43
45
|
weekDownloadCount?: number;
|