@saooti/octopus-sdk 40.2.19 → 41.0.0

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 (214) hide show
  1. package/index.ts +2 -1
  2. package/package.json +4 -3
  3. package/src/App.vue +71 -95
  4. package/src/components/composable/player/usePlayerLive.ts +13 -4
  5. package/src/components/composable/player/usePlayerLogic.ts +6 -6
  6. package/src/components/composable/player/usePlayerVast.ts +7 -7
  7. package/src/components/composable/podcasts/usePodcastView.ts +3 -3
  8. package/src/components/composable/route/useAdvancedParamInit.ts +1 -1
  9. package/src/components/composable/route/useRouteUpdateParams.ts +4 -4
  10. package/src/components/composable/route/useSimplePageParam.ts +15 -8
  11. package/src/components/composable/useInit.ts +2 -2
  12. package/src/components/composable/useMetaTitleWatch.ts +2 -2
  13. package/src/components/display/accessibility/AccessibilityModal.vue +56 -68
  14. package/src/components/display/categories/CategoryChooser.vue +144 -145
  15. package/src/components/display/categories/CategoryFilter.vue +172 -198
  16. package/src/components/display/categories/CategoryList.vue +122 -147
  17. package/src/components/display/comments/CommentInput.vue +100 -122
  18. package/src/components/display/comments/CommentList.vue +169 -191
  19. package/src/components/display/comments/CommentName.vue +35 -45
  20. package/src/components/display/comments/CommentParentInfo.vue +28 -34
  21. package/src/components/display/comments/CommentPlayer.vue +38 -50
  22. package/src/components/display/comments/CommentSection.vue +85 -103
  23. package/src/components/display/comments/item/CommentBasicView.vue +48 -61
  24. package/src/components/display/comments/item/CommentItem.vue +104 -115
  25. package/src/components/display/comments/item/CommentMoreActions.vue +174 -189
  26. package/src/components/display/comments/item/CommentMoreActionsAdmin.vue +1 -3
  27. package/src/components/display/comments/like/LikeButton.vue +36 -41
  28. package/src/components/display/comments/like/LikeSection.vue +128 -136
  29. package/src/components/display/comments/modal/CheckIdentityModal.vue +35 -40
  30. package/src/components/display/comments/modal/EditCommentModal.vue +72 -78
  31. package/src/components/display/comments/modal/RecaptchaModal.vue +58 -63
  32. package/src/components/display/comments/modal/ReportAbuseModal.vue +59 -66
  33. package/src/components/display/edit/EditBox.vue +9 -8
  34. package/src/components/display/edit/EditBoxRadio.vue +1 -5
  35. package/src/components/display/emission/EmissionInlineList.vue +82 -97
  36. package/src/components/display/emission/EmissionItem.vue +57 -69
  37. package/src/components/display/emission/EmissionList.vue +189 -218
  38. package/src/components/display/emission/EmissionPlayerItem.vue +47 -64
  39. package/src/components/display/emission/EmissionPresentationItem.vue +44 -54
  40. package/src/components/display/emission/EmissionPresentationList.vue +51 -61
  41. package/src/components/display/filter/AdvancedSearch.vue +151 -176
  42. package/src/components/display/filter/CategorySearchFilter.vue +43 -46
  43. package/src/components/display/filter/DateFilter.vue +76 -91
  44. package/src/components/display/filter/MonetizableFilter.vue +27 -30
  45. package/src/components/display/filter/ProductorSearch.vue +87 -90
  46. package/src/components/display/filter/RubriqueChoice.vue +58 -63
  47. package/src/components/display/filter/RubriqueFilter.vue +154 -169
  48. package/src/components/display/filter/SearchOrder.vue +35 -35
  49. package/src/components/display/list/ListPaginate.vue +72 -93
  50. package/src/components/display/list/PaginateParams.vue +36 -40
  51. package/src/components/display/list/PaginateSection.vue +113 -124
  52. package/src/components/display/list/SwiperList.vue +97 -109
  53. package/src/components/display/live/CountDown.vue +15 -9
  54. package/src/components/display/live/CountdownOctopus.vue +16 -10
  55. package/src/components/display/live/LiveHorizontalList.vue +95 -103
  56. package/src/components/display/live/LiveItem.vue +64 -73
  57. package/src/components/display/live/LiveList.vue +125 -137
  58. package/src/components/display/live/RadioCurrently.vue +66 -73
  59. package/src/components/display/live/RadioImage.vue +39 -50
  60. package/src/components/display/live/RadioItem.vue +9 -14
  61. package/src/components/display/live/RadioList.vue +39 -53
  62. package/src/components/display/live/RadioPlanning.vue +210 -222
  63. package/src/components/display/organisation/OrganisationChooser.vue +116 -122
  64. package/src/components/display/organisation/OrganisationChooserLight.vue +44 -52
  65. package/src/components/display/participant/ParticipantInlineList.vue +42 -58
  66. package/src/components/display/participant/ParticipantItem.vue +66 -74
  67. package/src/components/display/participant/ParticipantList.vue +116 -141
  68. package/src/components/display/playlist/PlaylistItem.vue +33 -46
  69. package/src/components/display/playlist/PlaylistList.vue +115 -144
  70. package/src/components/display/playlist/PodcastList.vue +90 -103
  71. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +58 -70
  72. package/src/components/display/podcastmaker/PodcastmakerHeader.vue +21 -22
  73. package/src/components/display/podcasts/AnimatorsItem.vue +15 -16
  74. package/src/components/display/podcasts/DownloadPodcastButton.vue +21 -29
  75. package/src/components/display/podcasts/ParticipantDescription.vue +22 -24
  76. package/src/components/display/podcasts/PodcastFilterList.vue +62 -56
  77. package/src/components/display/podcasts/PodcastImage.vue +96 -99
  78. package/src/components/display/podcasts/PodcastInlineList.vue +30 -28
  79. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +107 -114
  80. package/src/components/display/podcasts/PodcastIsPlaying.vue +4 -12
  81. package/src/components/display/podcasts/PodcastItem.vue +48 -63
  82. package/src/components/display/podcasts/PodcastItemInfo.vue +19 -35
  83. package/src/components/display/podcasts/PodcastList.vue +182 -206
  84. package/src/components/display/podcasts/PodcastModuleBox.vue +100 -137
  85. package/src/components/display/podcasts/PodcastPlannedSpinner.vue +4 -6
  86. package/src/components/display/podcasts/PodcastPlayBar.vue +50 -61
  87. package/src/components/display/podcasts/PodcastPlayBasicButton.vue +38 -41
  88. package/src/components/display/podcasts/PodcastPlayButton.vue +164 -175
  89. package/src/components/display/podcasts/PodcastRawTranscript.vue +69 -80
  90. package/src/components/display/podcasts/PodcastRubriqueList.vue +35 -38
  91. package/src/components/display/podcasts/PodcastSwiperList.vue +100 -110
  92. package/src/components/display/podcasts/TagList.vue +48 -50
  93. package/src/components/display/podcasts/VideoModuleBox.vue +13 -24
  94. package/src/components/display/rubriques/RubriqueChooser.vue +135 -140
  95. package/src/components/display/rubriques/RubriqueList.vue +140 -160
  96. package/src/components/display/sharing/ChooseEpisodesNumber.vue +34 -33
  97. package/src/components/display/sharing/FormatSwitch.vue +16 -11
  98. package/src/components/display/sharing/PlayerAnonymousModal.vue +24 -27
  99. package/src/components/display/sharing/PlayerCommonParameters.vue +20 -13
  100. package/src/components/display/sharing/PlayerParameters.vue +69 -71
  101. package/src/components/display/sharing/QrCode.vue +55 -67
  102. package/src/components/display/sharing/ShareAnonymous.vue +160 -178
  103. package/src/components/display/sharing/ShareDistribution.vue +103 -117
  104. package/src/components/display/sharing/ShareNewsletter.vue +154 -161
  105. package/src/components/display/sharing/SharePlayer.vue +273 -295
  106. package/src/components/display/sharing/SharePlayerColors.vue +25 -16
  107. package/src/components/display/sharing/SharePlayerRadio.vue +61 -69
  108. package/src/components/display/sharing/SharePlayerTypes.vue +176 -176
  109. package/src/components/display/sharing/ShareSocialsButtons.vue +63 -75
  110. package/src/components/display/sharing/SubscribeButtons.vue +184 -207
  111. package/src/components/display/studio/RecordingItemButton.vue +1 -4
  112. package/src/components/form/ClassicCheckbox.vue +26 -30
  113. package/src/components/form/ClassicContentEditable.vue +37 -33
  114. package/src/components/form/ClassicCopyButton.vue +40 -44
  115. package/src/components/form/ClassicDatePicker.vue +114 -114
  116. package/src/components/form/ClassicEmojiPicker.vue +20 -28
  117. package/src/components/form/ClassicInputText.vue +116 -120
  118. package/src/components/form/ClassicLoading.vue +7 -12
  119. package/src/components/form/ClassicMultiselect.vue +115 -117
  120. package/src/components/form/ClassicRadio.vue +21 -16
  121. package/src/components/form/ClassicRadioLabel.vue +23 -22
  122. package/src/components/form/ClassicSearch.vue +24 -19
  123. package/src/components/form/ClassicSelect.vue +47 -38
  124. package/src/components/form/ClassicWysiwyg.vue +116 -123
  125. package/src/components/icons/AmazonMusicIcon.vue +7 -10
  126. package/src/components/icons/ApplePodcastIcon.vue +7 -11
  127. package/src/components/icons/BlueSkyIcon.vue +8 -11
  128. package/src/components/icons/DeezerIcon.vue +8 -11
  129. package/src/components/icons/EditFtpIcon.vue +8 -11
  130. package/src/components/icons/IHeartIcon.vue +8 -11
  131. package/src/components/icons/PlayVideoIcon.vue +7 -10
  132. package/src/components/icons/PlayerFmIcon.vue +7 -10
  133. package/src/components/icons/PocketCastIcon.vue +8 -11
  134. package/src/components/icons/PodcastAddictIcon.vue +7 -10
  135. package/src/components/icons/RadiolineIcon.vue +8 -11
  136. package/src/components/icons/TuninIcon.vue +8 -11
  137. package/src/components/icons/XIcon.vue +7 -10
  138. package/src/components/misc/AcpmImage.vue +6 -7
  139. package/src/components/misc/ClassicAccordion.vue +26 -31
  140. package/src/components/misc/ClassicLazy.vue +86 -90
  141. package/src/components/misc/ClassicNav.vue +16 -20
  142. package/src/components/misc/ClassicPopover.vue +271 -282
  143. package/src/components/misc/ClassicSpinner.vue +5 -27
  144. package/src/components/misc/ErrorMessage.vue +11 -12
  145. package/src/components/misc/FooterGarSection.vue +33 -41
  146. package/src/components/misc/FooterSection.vue +94 -131
  147. package/src/components/misc/HomeDropdown.vue +83 -105
  148. package/src/components/misc/MobileMenu.vue +101 -111
  149. package/src/components/misc/ProgressBar.vue +53 -62
  150. package/src/components/misc/TopBar.vue +98 -120
  151. package/src/components/misc/TopBarMainContent.vue +114 -133
  152. package/src/components/misc/modal/ClassicModal.vue +40 -33
  153. package/src/components/misc/modal/ClassicModalInBody.vue +34 -28
  154. package/src/components/misc/modal/ClipboardModal.vue +27 -30
  155. package/src/components/misc/modal/ContractPreviewModal.vue +64 -62
  156. package/src/components/misc/modal/MessageModal.vue +50 -47
  157. package/src/components/misc/modal/NewsletterModal.vue +30 -31
  158. package/src/components/misc/modal/QrCodeModal.vue +21 -21
  159. package/src/components/misc/modal/ShareModalPlayer.vue +43 -52
  160. package/src/components/misc/player/PlayerCompact.vue +6 -4
  161. package/src/components/misc/player/PlayerComponent.vue +8 -9
  162. package/src/components/misc/player/PlayerLarge.vue +9 -8
  163. package/src/components/misc/player/ads/AdsProgressBar.vue +8 -11
  164. package/src/components/misc/player/ads/AdsSkipButton.vue +24 -30
  165. package/src/components/misc/player/chaptering/ChapteringModal.vue +44 -54
  166. package/src/components/misc/player/chaptering/PlayerChaptering.vue +50 -62
  167. package/src/components/misc/player/elements/PlayerImage.vue +51 -57
  168. package/src/components/misc/player/elements/PlayerPlayButton.vue +81 -92
  169. package/src/components/misc/player/elements/PlayerSpeedButton.vue +23 -27
  170. package/src/components/misc/player/elements/PlayerTitle.vue +85 -111
  171. package/src/components/misc/player/progressbar/PlayerProgressBar.vue +18 -29
  172. package/src/components/misc/player/progressbar/PodcastProgressBar.vue +45 -56
  173. package/src/components/misc/player/radio/RadioHistory.vue +80 -99
  174. package/src/components/misc/player/radio/RadioProgressBar.vue +43 -54
  175. package/src/components/misc/player/video/PlayerVideo.vue +27 -40
  176. package/src/components/misc/player/video/PlayerVideoDigiteka.vue +32 -37
  177. package/src/components/misc/player/video/PlayerVideoHls.vue +199 -198
  178. package/src/components/misc/player/video/PlayerYoutubeEmbed.vue +10 -12
  179. package/src/components/pages/CategoryPage.vue +28 -33
  180. package/src/components/pages/EmissionPage.vue +113 -132
  181. package/src/components/pages/EmissionsPage.vue +2 -0
  182. package/src/components/pages/Error403Page.vue +21 -20
  183. package/src/components/pages/HomePage.vue +91 -100
  184. package/src/components/pages/LivesPage.vue +35 -37
  185. package/src/components/pages/MapPage.vue +209 -241
  186. package/src/components/pages/PageLogout.vue +8 -11
  187. package/src/components/pages/PageNotFound.vue +9 -5
  188. package/src/components/pages/ParticipantPage.vue +96 -110
  189. package/src/components/pages/ParticipantsPage.vue +3 -0
  190. package/src/components/pages/PlaylistPage.vue +112 -117
  191. package/src/components/pages/PlaylistsPage.vue +9 -2
  192. package/src/components/pages/PodcastPage.vue +224 -238
  193. package/src/components/pages/PodcastsPage.vue +9 -2
  194. package/src/components/pages/RadioPage.vue +56 -70
  195. package/src/components/pages/RubriquePage.vue +7 -3
  196. package/src/components/pages/SearchPage.vue +31 -36
  197. package/src/components/pages/TagPage.vue +11 -9
  198. package/src/components/pages/VideoPage.vue +14 -11
  199. package/src/helper/displayHelper.ts +1 -1
  200. package/src/helper/loadScript.ts +4 -4
  201. package/src/i18n.ts +2 -2
  202. package/src/main.ts +1 -1
  203. package/src/router/router.ts +17 -4
  204. package/src/stores/AuthStore.ts +12 -12
  205. package/src/stores/FilterStore.ts +1 -1
  206. package/src/stores/VastStore.ts +2 -2
  207. package/src/stores/class/general/player.ts +1 -0
  208. package/public/css/fonts/icomoon.eot +0 -0
  209. package/public/css/fonts/icomoon.svg +0 -113
  210. package/public/css/fonts/icomoon.ttf +0 -0
  211. package/public/css/fonts/icomoon.woff +0 -0
  212. package/public/css/fonts/icomoon.woff2 +0 -0
  213. package/public/css/fonts/style.css +0 -352
  214. package/sonarqube-scanner.js +0 -10
@@ -1,27 +1,27 @@
1
1
  <template>
2
2
  <section class="page-box">
3
- <template v-if="!filterOrgaId && !organisationId && !isPodcastmaker">
3
+ <template v-if="!filterStore.filterOrgaId && !organisationId && !state.generalParameters.podcastmaker">
4
4
  <div class="align-self-start fw-bold mb-2">
5
- {{ $t("Please chose a productor") }}
5
+ {{ t("Please chose a productor") }}
6
6
  </div>
7
7
  <OrganisationChooser
8
- :defaultanswer="$t('Please chose a productor')"
8
+ :defaultanswer="t('Please chose a productor')"
9
9
  @selected="onOrganisationSelected"
10
10
  />
11
11
  </template>
12
- <template v-if="filterOrgaId || organisationId">
12
+ <template v-if="filterStore.filterOrgaId || organisationId">
13
13
  <LiveList :organisation-id="organisationId" />
14
14
  <RadioList v-if="!notRadios" :organisation-id="organisationId" />
15
15
  </template>
16
16
  </section>
17
17
  </template>
18
18
 
19
- <script lang="ts">
19
+ <script setup lang="ts">
20
20
  import { state } from "../../stores/ParamSdkStore";
21
21
  import { Organisation } from "@/stores/class/general/organisation";
22
- import { defineComponent, defineAsyncComponent } from "vue";
22
+ import { defineAsyncComponent, onMounted } from "vue";
23
23
  import { useFilterStore } from "../../stores/FilterStore";
24
- import { mapState } from "pinia";
24
+ import { useI18n } from "vue-i18n";
25
25
  const LiveList = defineAsyncComponent(
26
26
  () => import("../display/live/LiveList.vue"),
27
27
  );
@@ -31,37 +31,35 @@ const RadioList = defineAsyncComponent(
31
31
  const OrganisationChooser = defineAsyncComponent(
32
32
  () => import("../display/organisation/OrganisationChooser.vue"),
33
33
  );
34
- export default defineComponent({
35
- components: {
36
- LiveList,
37
- RadioList,
38
- OrganisationChooser,
39
- },
40
- props: {
41
- organisationId: { default: undefined, type: String },
42
- productor: { default: undefined, type: String },
43
- notRadios: { default: false, type: Boolean },
44
- },
45
- emits: ["update:organisationId"],
46
34
 
47
- computed: {
48
- ...mapState(useFilterStore, ["filterOrgaId"]),
49
35
 
50
- isPodcastmaker(): boolean {
51
- return state.generalParameters.podcastmaker as boolean;
52
- },
53
- },
54
- created() {
55
- if (this.productor) {
56
- this.$emit("update:organisationId", this.productor);
57
- } else if (this.filterOrgaId) {
58
- this.$emit("update:organisationId", this.filterOrgaId);
59
- }
60
- },
61
- methods: {
62
- onOrganisationSelected(organisation: Organisation | undefined): void {
63
- this.$emit("update:organisationId", organisation?.id);
64
- },
65
- },
36
+ //Props
37
+ const props = defineProps({
38
+ organisationId: { default: undefined, type: String },
39
+ productor: { default: undefined, type: String },
40
+ notRadios: { default: false, type: Boolean },
66
41
  });
42
+
43
+
44
+ //Emits
45
+ const emit = defineEmits(["update:organisationId"]);
46
+
47
+
48
+ //Composables
49
+ const { t } = useI18n();
50
+ const filterStore = useFilterStore();
51
+
52
+
53
+ onMounted(() => {
54
+ if (props.productor) {
55
+ emit("update:organisationId", props.productor);
56
+ } else if (filterStore.filterOrgaId) {
57
+ emit("update:organisationId", filterStore.filterOrgaId);
58
+ }
59
+ })
60
+
61
+ //Methods
62
+ function onOrganisationSelected(organisation: Organisation | undefined): void {
63
+ emit("update:organisationId", organisation?.id);
64
+ }
67
65
  </script>
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <section class="page-box map-page">
3
- <component :is="titleTag">{{ $t("Site map") }}</component>
4
- <nav :aria-label="$t('Site menu')" class="d-flex flex-column align-items-center">
3
+ <component :is="titleTag">{{ t("Site map") }}</component>
4
+ <nav :aria-label="t('Site menu')" class="d-flex flex-column align-items-center">
5
5
  <ul class="my-1">
6
6
  <template v-for="linkItem in siteMap" :key="linkItem.id">
7
7
  <li v-if="linkItem.condition" :id="linkItem.id" class="my-1">
@@ -24,14 +24,13 @@
24
24
  </section>
25
25
  </template>
26
26
 
27
- <script lang="ts">
28
- import { mapState } from "pinia";
27
+ <script setup lang="ts">
29
28
  import { useAuthStore } from "../../stores/AuthStore";
30
29
  import { useFilterStore } from "../../stores/FilterStore";
31
30
  import { useGeneralStore } from "../../stores/GeneralStore";
32
31
  import { state } from "../../stores/ParamSdkStore";
33
- import { defineComponent } from "vue";
34
- import { Organisation } from "@/stores/class/general/organisation";
32
+ import { computed, onMounted, ref } from "vue";
33
+ import { useI18n } from "vue-i18n";
35
34
  interface LinkMapSite {
36
35
  id: string;
37
36
  title: string;
@@ -44,276 +43,245 @@ interface LinkMapSite {
44
43
  condition: boolean;
45
44
  }>;
46
45
  }
47
- export default defineComponent({
48
- props: {
49
- externLinks: { default: () => [], type: Array as () => Array<LinkMapSite> },
46
+
47
+
48
+ //Props
49
+ const props = defineProps({
50
+ externLinks: { default: () => [], type: Array as () => Array<LinkMapSite> },
50
51
  titleTag: { default: "h1", type: String },
51
- },
52
+ });
53
+
54
+ //Data
55
+ const studioAuthorized = ref(true);
56
+ const radioAuthorized = ref(true);
57
+
52
58
 
53
- data() {
54
- return {
55
- studioAuthorized: true as boolean,
56
- radioAuthorized: true as boolean,
57
- };
59
+ //Composables
60
+ const { t } = useI18n();
61
+ const authStore = useAuthStore();
62
+ const filterStore = useFilterStore();
63
+ const generalStore = useGeneralStore();
64
+
65
+
66
+ //Computed
67
+ const isAuthenticated = computed(() =>undefined !== authStore.authProfile?.userId);
68
+ const isStudioAuth = computed(() =>(authStore.isRoleLive || authStore.isRoleContribution) && studioAuthorized.value);
69
+ const isPodcastmaker = computed(() =>state.generalParameters.podcastmaker);
70
+ const organisationsAvailable = computed(() =>authStore.authProfile?.organisations ?? []);
71
+ const siteMap = computed(() =>[
72
+ ...contentSection.value,
73
+ ...props.externLinks,
74
+ ...userLinks.value,
75
+ ...adminSection.value,
76
+ ...footerLinks.value,
77
+ ]);
78
+ const contentSection = computed(() =>[
79
+ {
80
+ title: t("Home"),
81
+ id: "link-page-home",
82
+ href: "/main/pub/home",
83
+ condition: true,
58
84
  },
59
- computed: {
60
- ...mapState(useGeneralStore, ["platformEducation"]),
61
- ...mapState(useFilterStore, ["filterOrgaId"]),
62
- ...mapState(useAuthStore, [
63
- "authProfile",
64
- "authOrgaId",
65
- "authOrganisation",
66
- "isRoleAdmin",
67
- "isRoleAnimator",
68
- "isRoleUsers",
69
- "isRoleLive",
70
- "isRoleContribution",
71
- "isRoleComments",
72
- "isRoleEditor",
73
- "isRoleAnalytics",
74
- "isRoleAdvertising",
75
- "isRoleOrganisation",
76
- "isRoleRadio",
77
- "isGarRole",
78
- ]),
79
- isAuthenticated(): boolean {
80
- return undefined !== this.authProfile?.userId;
81
- },
82
- isStudioAuth(): boolean {
83
- return (
84
- (this.isRoleLive || this.isRoleContribution) && this.studioAuthorized
85
- );
86
- },
87
- isPodcastmaker(): boolean {
88
- return state.generalParameters.podcastmaker as boolean;
85
+ {
86
+ title: isPodcastmaker.value? t("Live"): t("Radio & Live"),
87
+ id: "link-page-lives",
88
+ href: "/main/pub/lives",
89
+ condition: true,
90
+ },
91
+ {
92
+ title: t("Podcasts"),
93
+ id: "link-page-podcasts",
94
+ href: "/main/pub/podcasts",
95
+ condition: true,
96
+ },
97
+ {
98
+ title: t("Emissions"),
99
+ id: "link-page-emissions",
100
+ href: "/main/pub/emissions",
101
+ condition: true,
102
+ },
103
+ {
104
+ title: t("Speakers"),
105
+ id: "link-page-participants",
106
+ href: "/main/pub/participants",
107
+ condition: true,
108
+ },
109
+ {
110
+ title: t("Playlists"),
111
+ id: "link-page-playlists",
112
+ href: "/main/pub/playlists",
113
+ condition: true,
114
+ },
115
+ {
116
+ title: t("Productors"),
117
+ id: "link-page-productors",
118
+ href: "/main/pub/productors",
119
+ condition:!isPodcastmaker.value && (!filterStore.filterOrgaId || generalStore.platformEducation),
120
+ },
121
+ ]);
122
+ const userLinks = computed(() =>[
123
+ {
124
+ title: t("Edit my profile"),
125
+ href: "/main/priv/edit/profile",
126
+ id: "link-page-profile",
127
+ condition: !isPodcastmaker.value && isAuthenticated.value,
128
+ },
129
+ {
130
+ title: t("Edit my organisation"),
131
+ href: "/main/priv/edit/organisation",
132
+ id: "link-page-organisation",
133
+ condition:
134
+ !isPodcastmaker.value &&
135
+ isAuthenticated.value &&
136
+ (authStore.isRoleOrganisation || 1 < organisationsAvailable.value.length),
137
+ },
138
+ ]);
139
+ const footerLinks = computed(() =>{
140
+ if (isPodcastmaker.value || authStore.isGarRole) {
141
+ return [];
142
+ }
143
+ return [
144
+ {
145
+ title: t("Contact"),
146
+ href: "/main/pub/contact",
147
+ id: "link-page-contact",
148
+ condition: true,
89
149
  },
90
- organisationsAvailable(): Array<Organisation> {
91
- return this.authProfile?.organisations ?? [];
150
+ {
151
+ title: t("Term of use"),
152
+ href: "/main/pub/cgu",
153
+ id: "link-page-cgu",
154
+ condition: true,
92
155
  },
93
- siteMap() {
94
- return [
95
- ...this.contentSection,
96
- ...this.externLinks,
97
- ...this.userLinks,
98
- ...this.adminSection,
99
- ...this.footerLinks,
100
- ];
156
+ {
157
+ title: t("Used libraries"),
158
+ href: "/main/pub/libraries",
159
+ id: "link-page-libraries",
160
+ condition: true,
101
161
  },
102
- contentSection() {
103
- return [
162
+ ];
163
+ });
164
+ const adminSection = computed(() =>{
165
+ if (isPodcastmaker.value) {
166
+ return [];
167
+ }
168
+ return [
169
+ {
170
+ title: t("Welcome in the Backoffice"),
171
+ href: "/main/priv/backoffice",
172
+ id: "link-page-backoffice",
173
+ condition: isAuthenticated.value,
174
+ links: [
104
175
  {
105
- title: this.$t("Home"),
106
- id: "link-page-home",
107
- href: "/main/pub/home",
108
- condition: true,
176
+ title: t("Upload"),
177
+ href: "/main/priv/upload",
178
+ id: "link-page-upload",
179
+ condition: authStore.isRoleContribution,
109
180
  },
110
181
  {
111
- title: this.isPodcastmaker
112
- ? this.$t("Live")
113
- : this.$t("Radio & Live"),
114
- id: "link-page-lives",
115
- href: "/main/pub/lives",
116
- condition: true,
182
+ title: t("Media library"),
183
+ href: "/main/priv/media",
184
+ id: "link-page-media",
185
+ condition: isStudioAuth.value,
186
+ },
187
+ {
188
+ title: t("Studio"),
189
+ href: "/main/priv/records",
190
+ id: "link-page-records",
191
+ condition: isStudioAuth.value,
192
+ },
193
+ {
194
+ title: t("Radio planning"),
195
+ href: "/main/priv/radio/",
196
+ id: "link-page-radio",
197
+ condition: authStore.isRoleRadio && radioAuthorized.value,
117
198
  },
118
199
  {
119
- title: this.$t("Podcasts"),
120
- id: "link-page-podcasts",
200
+ title: t("Edit / Delete episodes"),
121
201
  href: "/main/pub/podcasts",
202
+ id: "link-page-edit-podcast",
122
203
  condition: true,
123
204
  },
124
205
  {
125
- title: this.$t("Emissions"),
126
- id: "link-page-emissions",
127
- href: "/main/pub/emissions",
128
- condition: true,
206
+ title: t("Handle my players"),
207
+ href: "/main/priv/players",
208
+ id: "link-page-players",
209
+ condition: authStore.isRoleEditor,
129
210
  },
130
211
  {
131
- title: this.$t("Speakers"),
132
- id: "link-page-participants",
133
- href: "/main/pub/participants",
134
- condition: true,
212
+ title: t("Monetization"),
213
+ href: "/main/priv/edit/adserv",
214
+ id: "link-page-adserv",
215
+ condition: authStore.isRoleAdvertising && !generalStore.platformEducation,
135
216
  },
136
217
  {
137
- title: this.$t("Playlists"),
138
- id: "link-page-playlists",
139
- href: "/main/pub/playlists",
140
- condition: true,
218
+ title: t("Handle FTP"),
219
+ href: "/main/priv/edit/ftp",
220
+ id: "link-page-ftp",
221
+ condition: authStore.isRoleEditor,
141
222
  },
142
223
  {
143
- title: this.$t("Productors"),
144
- id: "link-page-productors",
145
- href: "/main/pub/productors",
146
- condition:
147
- !this.isPodcastmaker && (!this.filterOrgaId || this.platformEducation),
224
+ title: t("Topics and rubrics"),
225
+ href: "/main/priv/edit/rubrics",
226
+ id: "link-page-rubrics",
227
+ condition: authStore.isRoleEditor,
148
228
  },
149
- ];
150
- },
151
- userLinks() {
152
- return [
153
229
  {
154
- title: this.$t("Edit my profile"),
155
- href: "/main/priv/edit/profile",
156
- id: "link-page-profile",
157
- condition: !this.isPodcastmaker && this.isAuthenticated,
230
+ title: t("Handle RSS"),
231
+ href: "/main/priv/edit/rss",
232
+ id: "link-page-rss",
233
+ condition: authStore.isRoleEditor,
158
234
  },
159
235
  {
160
- title: this.$t("Edit my organisation"),
161
- href: "/main/priv/edit/organisation",
162
- id: "link-page-organisation",
163
- condition:
164
- !this.isPodcastmaker &&
165
- this.isAuthenticated &&
166
- (this.isRoleOrganisation || 1 < this.organisationsAvailable.length),
236
+ title: t("Handle my participants"),
237
+ href: "/main/priv/participants/handle",
238
+ id: "link-page-edit-participants",
239
+ condition: authStore.isRoleEditor,
167
240
  },
168
- ];
169
- },
170
- footerLinks() {
171
- if (this.isPodcastmaker || this.isGarRole) {
172
- return [];
173
- }
174
- return [
175
241
  {
176
- title: this.$t("Contact"),
177
- href: "/main/pub/contact",
178
- id: "link-page-contact",
179
- condition: true,
242
+ title: t("Handle comments"),
243
+ href: "/main/priv/comments",
244
+ id: "link-page-comments",
245
+ condition: authStore.isRoleComments,
180
246
  },
181
247
  {
182
- title: this.$t("Term of use"),
183
- href: "/main/pub/cgu",
184
- id: "link-page-cgu",
185
- condition: true,
248
+ title: t("See my statistics"),
249
+ href: "/main/priv/show/stats",
250
+ id: "link-page-stats",
251
+ condition: authStore.isRoleAnalytics,
252
+ },
253
+ {
254
+ title: t("Organisations management"),
255
+ href: "/main/priv/edit/contract",
256
+ id: "link-page-contract",
257
+ condition: authStore.isRoleAdmin,
186
258
  },
187
259
  {
188
- title: this.$t("Used libraries"),
189
- href: "/main/pub/libraries",
190
- id: "link-page-libraries",
260
+ title: t("My account"),
261
+ href: "/main/priv/account",
262
+ id: "link-page-account",
191
263
  condition: true,
192
264
  },
193
- ];
194
- },
195
- adminSection() {
196
- if (this.isPodcastmaker) {
197
- return [];
198
- }
199
- return [
200
265
  {
201
- title: this.$t("Welcome in the Backoffice"),
202
- href: "/main/priv/backoffice",
203
- id: "link-page-backoffice",
204
- condition: this.isAuthenticated,
205
- links: [
206
- {
207
- title: this.$t("Upload"),
208
- href: "/main/priv/upload",
209
- id: "link-page-upload",
210
- condition: this.isRoleContribution,
211
- },
212
- {
213
- title: this.$t("Media library"),
214
- href: "/main/priv/media",
215
- id: "link-page-media",
216
- condition: this.isStudioAuth,
217
- },
218
- {
219
- title: this.$t("Studio"),
220
- href: "/main/priv/records",
221
- id: "link-page-records",
222
- condition: this.isStudioAuth,
223
- },
224
- {
225
- title: this.$t("Radio planning"),
226
- href: "/main/priv/radio/",
227
- id: "link-page-radio",
228
- condition: this.isRoleRadio && this.radioAuthorized,
229
- },
230
- {
231
- title: this.$t("Edit / Delete episodes"),
232
- href: "/main/pub/podcasts",
233
- id: "link-page-edit-podcast",
234
- condition: true,
235
- },
236
- {
237
- title: this.$t("Handle my players"),
238
- href: "/main/priv/players",
239
- id: "link-page-players",
240
- condition: this.isRoleEditor,
241
- },
242
- {
243
- title: this.$t("Monetization"),
244
- href: "/main/priv/edit/adserv",
245
- id: "link-page-adserv",
246
- condition: this.isRoleAdvertising && !this.platformEducation,
247
- },
248
- {
249
- title: this.$t("Handle FTP"),
250
- href: "/main/priv/edit/ftp",
251
- id: "link-page-ftp",
252
- condition: this.isRoleEditor,
253
- },
254
- {
255
- title: this.$t("Topics and rubrics"),
256
- href: "/main/priv/edit/rubrics",
257
- id: "link-page-rubrics",
258
- condition: this.isRoleEditor,
259
- },
260
- {
261
- title: this.$t("Handle RSS"),
262
- href: "/main/priv/edit/rss",
263
- id: "link-page-rss",
264
- condition: this.isRoleEditor,
265
- },
266
- {
267
- title: this.$t("Handle my participants"),
268
- href: "/main/priv/participants/handle",
269
- id: "link-page-edit-participants",
270
- condition: this.isRoleEditor,
271
- },
272
- {
273
- title: this.$t("Handle comments"),
274
- href: "/main/priv/comments",
275
- id: "link-page-comments",
276
- condition: this.isRoleComments,
277
- },
278
- {
279
- title: this.$t("See my statistics"),
280
- href: "/main/priv/show/stats",
281
- id: "link-page-stats",
282
- condition: this.isRoleAnalytics,
283
- },
284
- {
285
- title: this.$t("Organisations management"),
286
- href: "/main/priv/edit/contract",
287
- id: "link-page-contract",
288
- condition: this.isRoleAdmin,
289
- },
290
- {
291
- title: this.$t("My account"),
292
- href: "/main/priv/account",
293
- id: "link-page-account",
294
- condition: true,
295
- },
296
- {
297
- title: this.$t("Handle my users"),
298
- href: "/main/priv/user/handle",
299
- id: "link-page-users",
300
- condition: this.isRoleUsers,
301
- },
302
- ],
266
+ title: t("Handle my users"),
267
+ href: "/main/priv/user/handle",
268
+ id: "link-page-users",
269
+ condition: authStore.isRoleUsers,
303
270
  },
304
- ];
305
- },
306
- },
307
- created() {
308
- this.studioAuthorized = this.checkOrgaAttribute("studio.active");
309
- this.radioAuthorized = this.checkOrgaAttribute("radio.active");
310
- },
311
- methods: {
312
- checkOrgaAttribute(attribute: string): boolean {
313
- return (
314
- "true" == this.authOrganisation.attributes?.[attribute]?.toString()
315
- );
271
+ ],
316
272
  },
317
- },
273
+ ];
318
274
  });
275
+
276
+
277
+ onMounted(() => {
278
+ studioAuthorized.value = checkOrgaAttribute("studio.active");
279
+ radioAuthorized.value = checkOrgaAttribute("radio.active");
280
+ })
281
+
282
+
283
+ //Methods
284
+ function checkOrgaAttribute(attribute: string): boolean {
285
+ return "true" == authStore.authOrganisation.attributes?.[attribute]?.toString();
286
+ }
319
287
  </script>
@@ -3,22 +3,19 @@
3
3
  class="page-box page-box-absolute page-logout"
4
4
  >
5
5
  <div class="logout-section">
6
- <h1 class="mb-3">{{ $t("Logout") }}</h1>
6
+ <h1 class="mb-3">{{ t("Logout") }}</h1>
7
7
  <div class="loader"></div>
8
8
  </div>
9
9
  </section>
10
10
  </template>
11
11
 
12
- <script lang="ts">
13
- import { useFilterStore } from "../../stores/FilterStore";
14
- import { mapState } from "pinia";
15
- import { defineComponent } from "vue";
16
- export default defineComponent({
17
- name: "PageNotFound",
18
- computed: {
19
- ...mapState(useFilterStore, ["filterIab"]),
20
- },
21
- });
12
+ <script setup lang="ts">
13
+ import { useI18n } from "vue-i18n";
14
+
15
+
16
+ //Composables
17
+ const { t } = useI18n();
18
+
22
19
  </script>
23
20
  <style lang="scss">
24
21
  .octopus-app .page-logout {
@@ -4,20 +4,20 @@
4
4
  :style="backgroundStyle"
5
5
  >
6
6
  <div class="position-absolute module-box">
7
- <h1>{{ $t("Oops") }}</h1>
8
- <h2>{{ $t("The page you are looking for cannot be found") }}</h2>
7
+ <h1>{{ t("Oops") }}</h1>
8
+ <h2>{{ t("The page you are looking for cannot be found") }}</h2>
9
9
  <router-link
10
10
  class="btn btn-primary"
11
11
  :to="{
12
12
  name: 'home',
13
13
  query: {
14
14
  iabId: filterStore.filterIab?.id,
15
- rubriquesId: rubriqueQueryParam,
15
+ rubriquesId: rubriqueQueryParam.value,
16
16
  productor: filterStore.filterOrgaId
17
17
  },
18
18
  }"
19
19
  >
20
- {{ $t("Back to home") }}
20
+ {{ t("Back to home") }}
21
21
  </router-link>
22
22
  </div>
23
23
  </section>
@@ -27,11 +27,15 @@
27
27
  import { useRubriquesFilterComputed } from "../composable/route/useRubriquesFilterComputed";
28
28
  import { useFilterStore } from "../../stores/FilterStore";
29
29
  import { computed } from "vue";
30
+ import { useI18n } from "vue-i18n";
30
31
 
32
+ //Composables
31
33
  const { rubriqueQueryParam } = useRubriquesFilterComputed();
32
-
33
34
  const filterStore = useFilterStore();
35
+ const { t } = useI18n();
36
+
34
37
 
38
+ //Computed
35
39
  const backgroundStyle = computed(() => "background-image: url('/img/404.svg');");
36
40
 
37
41
  </script>