@saooti/octopus-sdk 41.0.17 → 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.
Files changed (32) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/index.ts +4 -0
  3. package/package.json +1 -1
  4. package/src/components/composable/route/types.ts +47 -0
  5. package/src/components/composable/route/useAdvancedParamInit.ts +29 -4
  6. package/src/components/composable/route/useRouteUpdateParams.ts +9 -19
  7. package/src/components/composable/route/useSimplePageParam.ts +6 -4
  8. package/src/components/display/emission/EmissionItem.vue +17 -6
  9. package/src/components/display/emission/EmissionList.vue +13 -1
  10. package/src/components/display/filter/AdvancedSearch.vue +237 -170
  11. package/src/components/display/podcasts/PodcastList.vue +4 -1
  12. package/src/components/display/podcasts/PodcastModuleBox.vue +23 -6
  13. package/src/components/display/podcasts/TagList.vue +2 -2
  14. package/src/components/form/ClassicCheckbox.vue +9 -0
  15. package/src/components/form/ClassicMultiselect.vue +1 -0
  16. package/src/components/form/ClassicTagInput.vue +155 -0
  17. package/src/components/misc/ClassicAlert.vue +9 -1
  18. package/src/components/misc/ClassicHelpButton.vue +3 -0
  19. package/src/components/misc/ClassicImageBanner.vue +33 -0
  20. package/src/components/misc/ErrorMessage.vue +4 -2
  21. package/src/components/pages/EmissionPage.vue +32 -1
  22. package/src/components/pages/EmissionsPage.vue +66 -61
  23. package/src/components/pages/PodcastsPage.vue +71 -66
  24. package/src/locale/de.ts +3 -0
  25. package/src/locale/en.ts +3 -0
  26. package/src/locale/es.ts +3 -0
  27. package/src/locale/fr.ts +3 -0
  28. package/src/locale/it.ts +3 -0
  29. package/src/locale/sl.ts +3 -0
  30. package/src/router/router.ts +4 -0
  31. package/src/stores/class/general/emission.ts +8 -0
  32. 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>
@@ -20,7 +20,7 @@
20
20
  />
21
21
 
22
22
  <!-- Main content -->
23
- <span class="ms-2">
23
+ <span class="ms-2 content">
24
24
  <strong v-if="title">
25
25
  {{ title }}
26
26
  <br>
@@ -62,6 +62,8 @@ const iconComponent = computed(() => {
62
62
  return Alert;
63
63
  } else if (type === 'error') {
64
64
  return CloseCircle;
65
+ } else {
66
+ return null;
65
67
  }
66
68
  });
67
69
  </script>
@@ -76,6 +78,12 @@ const iconComponent = computed(() => {
76
78
  align-items: start !important;
77
79
  }
78
80
 
81
+ .content {
82
+ display: flex;
83
+ flex-direction: column;
84
+ align-self: center;
85
+ }
86
+
79
87
  $types: (
80
88
  'success': hsl(from var(--octopus-primary) h s 45),
81
89
  'info': var(--octopus-primary),
@@ -17,6 +17,7 @@
17
17
  <ClassicPopover
18
18
  :target="computedId"
19
19
  popover-class="help-popover"
20
+ :relative-class="relative ? 'page-element' : ''"
20
21
  >
21
22
  <div class="content">
22
23
  <slot />
@@ -33,6 +34,8 @@ import ClassicPopover from './ClassicPopover.vue';
33
34
 
34
35
  const { colored, small } = defineProps<{
35
36
  colored?: boolean;
37
+ /** Make the popover relative (userful when in page-element) */
38
+ relative?: boolean;
36
39
  /** Make the icon smaller if true *(default: false)* */
37
40
  small?: boolean;
38
41
  }>();
@@ -0,0 +1,33 @@
1
+ <!-- A simple component to display a blur & a banner on an image -->
2
+ <template>
3
+ <div class="blur-with-banner">
4
+ <div class="banner">
5
+ <slot />
6
+ </div>
7
+ </div>
8
+ </template>
9
+
10
+ <script setup>
11
+ </script>
12
+
13
+ <style lang="scss" scoped>
14
+ .blur-with-banner {
15
+ position: absolute;
16
+ inset: 0;
17
+ background-color:var(--octopus-background-transparent);
18
+ // Allow pointer events to go through (allow click on image beneath blur)
19
+ pointer-events: none;
20
+
21
+ .banner {
22
+ text-align: center;
23
+ width: 100%;
24
+ font-size: 0.6rem;
25
+ padding: 0.2rem 0;
26
+ color: white;
27
+ background: black;
28
+ text-transform: uppercase;
29
+ position: absolute;
30
+ top: 0;
31
+ }
32
+ }
33
+ </style>
@@ -3,11 +3,12 @@
3
3
  <div class="d-flex align-items-center bg-warning p-2 rounded my-1">
4
4
  <AlertIcon :title="t('Warning')" class="me-1 text-danger" :size="16" />
5
5
  <div class="text-danger">
6
- {{ message }}
6
+ <slot>{{ message }}</slot>
7
7
  </div>
8
8
  </div>
9
9
  </div>
10
10
  </template>
11
+
11
12
  <script setup lang="ts">
12
13
  import AlertIcon from "vue-material-design-icons/Alert.vue";
13
14
  import { useI18n } from "vue-i18n";
@@ -19,4 +20,5 @@ defineProps({
19
20
 
20
21
  //Composables
21
22
  const { t } = useI18n();
22
- </script>
23
+ </script>
24
+
@@ -25,7 +25,8 @@
25
25
  alt=""
26
26
  :title="t('Emission name image', { name: name })"
27
27
  class="img-box img-box-podcast mb-3 flex-column justify-content-start align-items-start position-relative flex-shrink-0 float-start me-3"
28
- />
28
+ >
29
+
29
30
  <div class="d-flex align-items-center justify-content-between">
30
31
  <h2>{{ name }}</h2>
31
32
  <ShareAnonymous v-if="!editRight" class="d-flex justify-content-end flex-grow-1" :emission="emission" :organisation-id="emission.orga.id"/>
@@ -36,6 +37,17 @@
36
37
  v-html="urlify(description)"
37
38
  />
38
39
  <!-- eslint-enable -->
40
+
41
+ <ErrorMessage v-if="emission.visible === false">
42
+ <div class="d-flex" style="align-items: center">
43
+ <div>{{ t('Emission - Not available for listeners') }}</div>
44
+
45
+ <ClassicHelpButton relative small>
46
+ {{ t('Emission - Not available explanation') }}
47
+ </ClassicHelpButton>
48
+ </div>
49
+ </ErrorMessage>
50
+
39
51
  <div v-if="lastPodcast" class="d-flex align-items-center mt-3">
40
52
  <PodcastPlayButton
41
53
  :podcast="lastPodcast"
@@ -45,6 +57,15 @@
45
57
  {{ t("Listen to the latest episode") }}
46
58
  </div>
47
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
+
48
69
  <SubscribeButtons
49
70
  v-if="isPodcastmaker"
50
71
  class="mt-4"
@@ -116,6 +137,10 @@ import { Podcast } from "@/stores/class/general/podcast";
116
137
  import { useI18n } from "vue-i18n";
117
138
  import { useRoute } from "vue-router";
118
139
  import { useSimplePageParam } from "../composable/route/useSimplePageParam";
140
+
141
+ import ErrorMessage from "../misc/ErrorMessage.vue";
142
+ import ClassicHelpButton from "../misc/ClassicHelpButton.vue";
143
+
119
144
  const ShareAnonymous = defineAsyncComponent(() => import("../display/sharing/ShareAnonymous.vue"));
120
145
  const PodcastFilterList = defineAsyncComponent(
121
146
  () => import("../display/podcasts/PodcastFilterList.vue"),
@@ -144,6 +169,7 @@ const PodcastPlayButton = defineAsyncComponent(
144
169
  const PodcastmakerHeader = defineAsyncComponent(
145
170
  () => import("../display/podcastmaker/PodcastmakerHeader.vue"),
146
171
  );
172
+ const TagList = defineAsyncComponent(() => import("../display/podcasts/TagList.vue"));
147
173
 
148
174
 
149
175
  //Props
@@ -212,6 +238,11 @@ async function getEmissionDetails(): Promise<void> {
212
238
  loaded.value = false;
213
239
  error.value = false;
214
240
  try {
241
+ const reponse = await classicApi.fetchData<Emission>({
242
+ api: 0,
243
+ path: "emission/" + props.emissionId,
244
+ });
245
+ console.log(reponse);
215
246
  emission.value = await classicApi.fetchData<Emission>({
216
247
  api: 0,
217
248
  path: "emission/" + props.emissionId,
@@ -1,40 +1,42 @@
1
1
  <template>
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
- :search-pattern="searchPattern"
18
- :is-emission="true"
19
- :organisation-id="organisationId"
20
- />
21
- <EmissionList
22
- :show-count="true"
23
- :first="paginateFirst"
24
- :size="ps"
25
- :query="searchMinSize"
26
- :organisation-id="organisationId"
27
- :monetisable="monetisable"
28
- :before="toDate"
29
- :after="fromDate"
30
- :sort="sort"
31
- :include-hidden="includeHidden"
32
- :iab-id="iabId"
33
- :rubrique-id="rubriquesFilterArrayIds.rubriqueId"
34
- :rubriquage-id="rubriquesFilterArrayIds.rubriquageId"
35
- :no-rubriquage-id="rubriquesFilterArrayIds.noRubriquageId"
36
- />
37
- </section>
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
- () => import("../display/filter/ProductorSearch.vue"),
48
+ () => import("../display/filter/ProductorSearch.vue"),
47
49
  );
48
50
 
49
51
  //Props
50
52
  const props = defineProps({
51
- pr: { default: 0, type: Number },
52
- ps: { default: 30, type: Number },
53
- routeQuery: { default: "", type: String },
54
- routeMonetisable: { default: "UNDEFINED", type: String },
55
- routeIab: { default: undefined, type: Number },
56
- routeSort: { default: "LAST_PODCAST_DESC", type: String },
57
- routeIncludeHidden: { default: "", type: String },
58
- routeFrom: { default: undefined, type: String },
59
- routeTo: { default: undefined, type: String },
60
- routeOrga: { default: undefined, type: String },
61
- routeRubriques: { default: "", type: String },
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
- organisationId,
67
- searchPattern,
68
- monetisable,
69
- iabId,
70
- sort,
71
- includeHidden,
72
- fromDate,
73
- toDate,
74
- rubriqueFilter,
75
- searchMinSize,
76
- paginateFirst,
77
- rubriquesFilterArrayIds,
78
- isInit
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
- <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
- :search-pattern="searchPattern"
18
- :is-emission="false"
19
- :organisation-id="organisationId"
20
- />
21
- <PodcastList
22
- :show-count="true"
23
- :first="paginateFirst"
24
- :size="ps"
25
- :organisation-id="orgaArray"
26
- :query="searchMinSize"
27
- :monetisable="monetisable"
28
- :before="toDate"
29
- :after="fromDate"
30
- :sort-criteria="sort"
31
- :include-hidden="includeHidden"
32
- :iab-id="iabId"
33
- :rubrique-id="rubriquesFilterArrayIds.rubriqueId"
34
- :rubriquage-id="rubriquesFilterArrayIds.rubriquageId"
35
- :no-rubriquage-id="rubriquesFilterArrayIds.noRubriquageId"
36
- :with-video="withVideo"
37
- :validity="validity"
38
- />
39
- </section>
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
- pr: { default: 0, type: Number },
52
- ps: { default: 30, type: Number },
53
- routeQuery: { default: "", type: String },
54
- routeMonetisable: { default: "UNDEFINED", type: String },
55
- routeIab: { default: undefined, type: Number },
56
- routeSort: { default: "DATE", type: String },
57
- routeIncludeHidden: { default: "", type: String },
58
- routeFrom: { default: undefined, type: String },
59
- routeTo: { default: undefined, type: String },
60
- routeValidity: { default: "", type: String },
61
- routeOnlyVideo: { default: "", type: String },
62
- routeOrga: { default: undefined, type: String },
63
- routeRubriques: { default: "", type: String },
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
- organisationId,
74
- searchPattern,
75
- monetisable,
76
- iabId,
77
- sort,
78
- includeHidden,
79
- fromDate,
80
- toDate,
81
- rubriqueFilter,
82
- searchMinSize,
83
- paginateFirst,
84
- validity,
85
- rubriquesFilterArrayIds,
86
- isInit
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
- onlyVideo.value = "true" === props.routeOnlyVideo;
101
+ onlyVideo.value = "true" === props.routeOnlyVideo;
97
102
  }, {immediate: true});
98
103
 
99
104
  </script>
package/src/locale/de.ts CHANGED
@@ -415,4 +415,7 @@ export default {
415
415
  "Copied!":"Kopiert!",
416
416
  "Color of the QR Code": "Farbe des QR-Codes",
417
417
  "Silent stream":"Stiller Fluss",
418
+ "Emission - Not available for listeners": "Sendung für Hörer nicht sichtbar",
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",
418
421
  }
package/src/locale/en.ts CHANGED
@@ -418,4 +418,7 @@ export default {
418
418
  "Copied!":"Copied!",
419
419
  "Color of the QR Code": "Color of the QR Code",
420
420
  "Silent stream":"Silent stream",
421
+ "Emission - Not available for listeners": "Broadcast not visible to listeners",
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",
421
424
  };
package/src/locale/es.ts CHANGED
@@ -416,4 +416,7 @@ export default {
416
416
  "Copied!":"¡Copiado!",
417
417
  "Color of the QR Code": "Color del código QR",
418
418
  "Silent stream":"Flujo silencioso",
419
+ "Emission - Not available for listeners": "Transmisión no visible para los oyentes",
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",
419
422
  }