@saooti/octopus-sdk 37.0.5 → 37.0.7

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 (263) hide show
  1. package/README.md +2 -2
  2. package/index.html +1 -0
  3. package/index.ts +21 -21
  4. package/package.json +26 -20
  5. package/public/css/fonts/icomoon.eot +0 -0
  6. package/public/css/fonts/icomoon.svg +1 -1
  7. package/public/css/fonts/icomoon.ttf +0 -0
  8. package/public/css/fonts/icomoon.woff +0 -0
  9. package/public/css/fonts/montserrat/Montserrat-Black.ttf +0 -0
  10. package/public/css/fonts/montserrat/Montserrat-BlackItalic.ttf +0 -0
  11. package/public/css/fonts/montserrat/Montserrat-Bold.ttf +0 -0
  12. package/public/css/fonts/montserrat/Montserrat-BoldItalic.ttf +0 -0
  13. package/public/css/fonts/montserrat/Montserrat-ExtraBold.ttf +0 -0
  14. package/public/css/fonts/montserrat/Montserrat-ExtraBoldItalic.ttf +0 -0
  15. package/public/css/fonts/montserrat/Montserrat-ExtraLight.ttf +0 -0
  16. package/public/css/fonts/montserrat/Montserrat-ExtraLightItalic.ttf +0 -0
  17. package/public/css/fonts/montserrat/Montserrat-Italic.ttf +0 -0
  18. package/public/css/fonts/montserrat/Montserrat-Light.ttf +0 -0
  19. package/public/css/fonts/montserrat/Montserrat-LightItalic.ttf +0 -0
  20. package/public/css/fonts/montserrat/Montserrat-Medium.ttf +0 -0
  21. package/public/css/fonts/montserrat/Montserrat-MediumItalic.ttf +0 -0
  22. package/public/css/fonts/montserrat/Montserrat-Regular.ttf +0 -0
  23. package/public/css/fonts/montserrat/Montserrat-SemiBold.ttf +0 -0
  24. package/public/css/fonts/montserrat/Montserrat-SemiBoldItalic.ttf +0 -0
  25. package/public/css/fonts/montserrat/Montserrat-Thin.ttf +0 -0
  26. package/public/css/fonts/montserrat/Montserrat-ThinItalic.ttf +0 -0
  27. package/public/css/fonts/montserrat/style.css +28 -0
  28. package/public/css/fonts/style.css +5 -5
  29. package/src/App.vue +69 -60
  30. package/src/api/classicCrud.ts +12 -12
  31. package/src/api/initialize.ts +1 -1
  32. package/src/assets/bootstrap.scss +9 -0
  33. package/src/assets/general.scss +1 -1
  34. package/src/assets/share.scss +1 -1
  35. package/src/components/display/aggregator/RssSection.vue +3 -3
  36. package/src/components/display/categories/CategoryChooser.vue +73 -60
  37. package/src/components/display/categories/CategoryFilter.vue +134 -90
  38. package/src/components/display/categories/CategoryList.vue +76 -62
  39. package/src/components/display/comments/AddCommentModal.vue +44 -44
  40. package/src/components/display/comments/CommentBasicView.vue +38 -30
  41. package/src/components/display/comments/CommentInput.vue +122 -110
  42. package/src/components/display/comments/CommentItem.vue +144 -102
  43. package/src/components/display/comments/CommentList.vue +117 -85
  44. package/src/components/display/comments/CommentParentInfo.vue +18 -15
  45. package/src/components/display/comments/CommentPlayer.vue +39 -41
  46. package/src/components/display/comments/CommentSection.vue +68 -53
  47. package/src/components/display/edit/EditBox.vue +7 -7
  48. package/src/components/display/edit/EditBoxRadio.vue +3 -4
  49. package/src/components/display/edit/EditCommentBox.vue +34 -36
  50. package/src/components/display/emission/EmissionInlineList.vue +75 -63
  51. package/src/components/display/emission/EmissionItem.vue +47 -35
  52. package/src/components/display/emission/EmissionList.vue +111 -83
  53. package/src/components/display/emission/EmissionPlayerItem.vue +89 -89
  54. package/src/components/display/filter/AdvancedSearch.vue +81 -73
  55. package/src/components/display/filter/CategorySearchFilter.vue +27 -25
  56. package/src/components/display/filter/DateFilter.vue +38 -38
  57. package/src/components/display/filter/MonetizableFilter.vue +16 -14
  58. package/src/components/display/filter/ProductorSearch.vue +55 -47
  59. package/src/components/display/filter/RubriqueChoice.vue +42 -27
  60. package/src/components/display/filter/RubriqueFilter.vue +130 -85
  61. package/src/components/display/filter/SearchOrder.vue +16 -11
  62. package/src/components/display/list/ListPaginate.vue +72 -70
  63. package/src/components/display/list/PaginateParams.vue +29 -30
  64. package/src/components/display/list/PaginateSection.vue +210 -0
  65. package/src/components/display/list/SwiperList.vue +28 -32
  66. package/src/components/display/live/CountDown.vue +12 -14
  67. package/src/components/display/live/LiveHorizontalList.vue +60 -50
  68. package/src/components/display/live/LiveItem.vue +42 -26
  69. package/src/components/display/live/LiveList.vue +92 -65
  70. package/src/components/display/live/RadioCurrently.vue +47 -42
  71. package/src/components/display/live/RadioImage.vue +40 -42
  72. package/src/components/display/live/RadioItem.vue +15 -22
  73. package/src/components/display/live/RadioList.vue +24 -21
  74. package/src/components/display/live/RadioPlanning.vue +105 -68
  75. package/src/components/display/organisation/OrganisationChooser.vue +58 -42
  76. package/src/components/display/organisation/OrganisationChooserLight.vue +27 -19
  77. package/src/components/display/participant/ParticipantItem.vue +89 -76
  78. package/src/components/display/participant/ParticipantList.vue +90 -60
  79. package/src/components/display/playlist/PlaylistItem.vue +32 -35
  80. package/src/components/display/playlist/PlaylistList.vue +70 -52
  81. package/src/components/display/playlist/PodcastList.vue +61 -50
  82. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +47 -38
  83. package/src/components/display/podcasts/AnimatorsItem.vue +17 -15
  84. package/src/components/display/podcasts/ParticipantDescription.vue +21 -22
  85. package/src/components/display/podcasts/PodcastFilterList.vue +28 -26
  86. package/src/components/display/podcasts/PodcastImage.vue +129 -138
  87. package/src/components/display/podcasts/PodcastInlineList.vue +33 -29
  88. package/src/components/display/podcasts/PodcastInlineListClassic.vue +91 -71
  89. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +94 -85
  90. package/src/components/display/podcasts/PodcastItem.vue +96 -90
  91. package/src/components/display/podcasts/PodcastItemInfo.vue +63 -65
  92. package/src/components/display/podcasts/PodcastList.vue +115 -84
  93. package/src/components/display/podcasts/PodcastModuleBox.vue +95 -104
  94. package/src/components/display/podcasts/PodcastPlayBar.vue +45 -32
  95. package/src/components/display/podcasts/PodcastSwiperList.vue +65 -55
  96. package/src/components/display/podcasts/TagList.vue +33 -37
  97. package/src/components/display/rubriques/RubriqueChooser.vue +70 -51
  98. package/src/components/display/rubriques/RubriqueList.vue +117 -89
  99. package/src/components/display/sharing/PlayerParameters.vue +45 -42
  100. package/src/components/display/sharing/QrCode.vue +52 -46
  101. package/src/components/display/sharing/ShareButtons.vue +25 -27
  102. package/src/components/display/sharing/ShareButtonsIntern.vue +182 -155
  103. package/src/components/display/sharing/ShareDistribution.vue +101 -67
  104. package/src/components/display/sharing/SharePlayer.vue +207 -127
  105. package/src/components/display/sharing/SharePlayerColors.vue +15 -15
  106. package/src/components/display/sharing/SharePlayerRadio.vue +62 -39
  107. package/src/components/display/sharing/SharePlayerTypes.vue +93 -55
  108. package/src/components/display/sharing/SubscribeButtons.vue +83 -32
  109. package/src/components/display/studio/RecordingItemButton.vue +3 -3
  110. package/src/components/form/ClassicCheckbox.vue +32 -31
  111. package/src/components/form/ClassicDatePicker.vue +47 -49
  112. package/src/components/form/ClassicInputText.vue +99 -98
  113. package/src/components/form/ClassicLoading.vue +11 -14
  114. package/src/components/form/ClassicMultiselect.vue +125 -126
  115. package/src/components/form/ClassicRadio.vue +15 -18
  116. package/src/components/form/ClassicSearch.vue +17 -23
  117. package/src/components/form/ClassicSelect.vue +35 -27
  118. package/src/components/form/{Wysiwyg.vue → ClassicWysiwyg.vue} +94 -109
  119. package/src/components/misc/AcpmImage.vue +26 -0
  120. package/src/components/misc/ClassicAccordion.vue +69 -0
  121. package/src/components/misc/ClassicNav.vue +117 -0
  122. package/src/components/misc/ClassicPopover.vue +212 -0
  123. package/src/components/misc/{Spinner.vue → ClassicSpinner.vue} +14 -15
  124. package/src/components/misc/ErrorMessage.vue +9 -17
  125. package/src/components/misc/FooterSection.vue +198 -0
  126. package/src/components/misc/HomeDropdown.vue +67 -64
  127. package/src/components/misc/LeftMenu.vue +115 -79
  128. package/src/components/misc/ProgressBar.vue +36 -32
  129. package/src/components/misc/SnackBar.vue +169 -0
  130. package/src/components/misc/TopBar.vue +161 -115
  131. package/src/components/misc/modal/ClassicModal.vue +99 -103
  132. package/src/components/misc/modal/ClipboardModal.vue +21 -23
  133. package/src/components/misc/modal/MessageModal.vue +22 -28
  134. package/src/components/misc/modal/NewsletterModal.vue +139 -113
  135. package/src/components/misc/modal/QrCodeModal.vue +14 -17
  136. package/src/components/misc/modal/ShareModalPlayer.vue +44 -60
  137. package/src/components/misc/player/PlayerCompact.vue +47 -62
  138. package/src/components/misc/player/{Player.vue → PlayerComponent.vue} +54 -46
  139. package/src/components/misc/player/PlayerLarge.vue +66 -62
  140. package/src/components/misc/player/PlayerProgressBar.vue +40 -30
  141. package/src/components/misc/player/PlayerTimeline.vue +32 -36
  142. package/src/components/misc/player/radio/RadioHistory.vue +62 -59
  143. package/src/components/misc/player/radio/RadioProgressBar.vue +44 -35
  144. package/src/components/mixins/cookies.ts +11 -10
  145. package/src/components/mixins/displayMethods.ts +5 -4
  146. package/src/components/mixins/handle403.ts +9 -9
  147. package/src/components/mixins/imageProxy.ts +14 -7
  148. package/src/components/mixins/init.ts +31 -16
  149. package/src/components/mixins/orgaComputed.ts +7 -7
  150. package/src/components/mixins/organisationFilter.ts +36 -22
  151. package/src/components/mixins/player/playerComment.ts +46 -37
  152. package/src/components/mixins/player/playerDisplay.ts +122 -87
  153. package/src/components/mixins/player/playerLive.ts +65 -43
  154. package/src/components/mixins/player/playerLogic.ts +133 -88
  155. package/src/components/mixins/player/playerTranscript.ts +48 -30
  156. package/src/components/mixins/radio/fetchRadioData.ts +40 -23
  157. package/src/components/mixins/selenium.ts +2 -2
  158. package/src/components/mixins/tagOfMixins.ts +11 -11
  159. package/src/components/pages/CategoryPage.vue +43 -0
  160. package/src/components/pages/{Emission.vue → EmissionPage.vue} +98 -67
  161. package/src/components/pages/{Emissions.vue → EmissionsPage.vue} +51 -44
  162. package/src/components/pages/Error403Page.vue +20 -19
  163. package/src/components/pages/HomePage.vue +144 -0
  164. package/src/components/pages/LivesPage.vue +66 -0
  165. package/src/components/pages/PageNotFound.vue +33 -22
  166. package/src/components/pages/{Participant.vue → ParticipantPage.vue} +63 -49
  167. package/src/components/pages/{Participants.vue → ParticipantsPage.vue} +9 -9
  168. package/src/components/pages/PlaylistPage.vue +175 -0
  169. package/src/components/pages/{Playlists.vue → PlaylistsPage.vue} +16 -14
  170. package/src/components/pages/PodcastPage.vue +365 -0
  171. package/src/components/pages/PodcastsPage.vue +152 -0
  172. package/src/components/pages/RadioPage.vue +131 -0
  173. package/src/components/pages/RubriquePage.vue +45 -0
  174. package/src/components/pages/{Search.vue → SearchPage.vue} +19 -19
  175. package/src/helper/dom.ts +1 -1
  176. package/src/helper/duration.ts +10 -4
  177. package/src/helper/useEventListener.ts +7 -8
  178. package/src/i18n.ts +31 -30
  179. package/src/locale/de.ts +263 -257
  180. package/src/locale/educationen.ts +13 -13
  181. package/src/locale/educationfr.ts +1 -1
  182. package/src/locale/en.ts +323 -324
  183. package/src/locale/es.ts +325 -318
  184. package/src/locale/fr.ts +330 -324
  185. package/src/locale/it.ts +332 -328
  186. package/src/locale/messages.ts +9 -9
  187. package/src/locale/sl.ts +315 -319
  188. package/src/main.ts +28 -31
  189. package/src/router/router.ts +218 -198
  190. package/src/shims-tsx.d.ts +1 -1
  191. package/src/shims-vue.d.ts +1 -1
  192. package/src/stores/ApiStore.ts +44 -44
  193. package/src/stores/AuthStore.ts +24 -16
  194. package/src/stores/CommentStore.ts +13 -11
  195. package/src/stores/FilterStore.ts +25 -15
  196. package/src/stores/GeneralStore.ts +15 -15
  197. package/src/stores/ParamSdkStore.ts +179 -137
  198. package/src/stores/PlayerStore.ts +139 -125
  199. package/src/stores/class/adserver/adserverConfig.ts +1 -1
  200. package/src/stores/class/adserver/adserverOtherEmission.ts +9 -9
  201. package/src/stores/class/cartouchier/cartouche.ts +4 -4
  202. package/src/stores/class/cartouchier/cartouchier.ts +2 -2
  203. package/src/stores/class/conference/conference.ts +10 -9
  204. package/src/stores/class/conference/conferenceMessage.ts +2 -2
  205. package/src/stores/class/conference/conferenceParticipant.ts +1 -1
  206. package/src/stores/class/conference/studioCall.ts +6 -6
  207. package/src/stores/class/contract/contractOrganisation.ts +5 -5
  208. package/src/stores/class/ftp/ftpEmission.ts +9 -9
  209. package/src/stores/class/ftp/testFtpEmission.ts +4 -4
  210. package/src/stores/class/general/audioView.ts +19 -19
  211. package/src/stores/class/general/category.ts +1 -1
  212. package/src/stores/class/general/classicSelectType.ts +2 -3
  213. package/src/stores/class/general/customPlayer.ts +8 -8
  214. package/src/stores/class/general/emission.ts +20 -21
  215. package/src/stores/class/general/fetchParam.ts +8 -2
  216. package/src/stores/class/general/initState.ts +31 -31
  217. package/src/stores/class/general/interfacePageable.ts +13 -13
  218. package/src/stores/class/general/ituneCategory.ts +4 -4
  219. package/src/stores/class/general/listReturn.ts +12 -12
  220. package/src/stores/class/general/media.ts +7 -7
  221. package/src/stores/class/general/organisation.ts +9 -10
  222. package/src/stores/class/general/pageable.ts +10 -10
  223. package/src/stores/class/general/participant.ts +7 -7
  224. package/src/stores/class/general/player.ts +30 -28
  225. package/src/stores/class/general/playlist.ts +17 -19
  226. package/src/stores/class/general/podcast.ts +19 -19
  227. package/src/stores/class/general/sortPageable.ts +4 -4
  228. package/src/stores/class/general/soundcastCategory.ts +7 -7
  229. package/src/stores/class/ouestFrance/ofTag.ts +34 -34
  230. package/src/stores/class/ouestFrance/ofTagInfo.ts +9 -9
  231. package/src/stores/class/ouestFrance/ofTagPage.ts +7 -7
  232. package/src/stores/class/ouestFrance/ofTagSeo.ts +7 -7
  233. package/src/stores/class/ouestFrance/ofTagVente.ts +6 -6
  234. package/src/stores/class/ouestFrance/ofTagWithParents.ts +20 -20
  235. package/src/stores/class/radio/canal.ts +4 -4
  236. package/src/stores/class/radio/live.ts +6 -6
  237. package/src/stores/class/radio/mix.ts +16 -16
  238. package/src/stores/class/radio/playlistMedia.ts +7 -7
  239. package/src/stores/class/radio/recurrence.ts +54 -54
  240. package/src/stores/class/rss/rssEmission.ts +13 -13
  241. package/src/stores/class/rss/rssInfo.ts +7 -7
  242. package/src/stores/class/rubrique/rubriquage.ts +2 -2
  243. package/src/stores/class/rubrique/rubrique.ts +1 -1
  244. package/src/stores/class/stat/statArrayIncome.ts +5 -5
  245. package/src/stores/class/stat/statArrayObject.ts +26 -26
  246. package/src/stores/class/stat/statGraph.ts +6 -6
  247. package/src/stores/class/user/person.ts +4 -2
  248. package/src/stores/class/user/profile.ts +4 -2
  249. package/src/stores/class/user/userKeycloak.ts +4 -5
  250. package/src/components/display/list/Paginate.vue +0 -181
  251. package/src/components/misc/Accordion.vue +0 -78
  252. package/src/components/misc/Footer.vue +0 -165
  253. package/src/components/misc/Nav.vue +0 -119
  254. package/src/components/misc/Popover.vue +0 -193
  255. package/src/components/misc/Snackbar.vue +0 -168
  256. package/src/components/pages/Category.vue +0 -41
  257. package/src/components/pages/Home.vue +0 -125
  258. package/src/components/pages/Lives.vue +0 -64
  259. package/src/components/pages/Playlist.vue +0 -164
  260. package/src/components/pages/Podcast.vue +0 -307
  261. package/src/components/pages/Podcasts.vue +0 -146
  262. package/src/components/pages/Radio.vue +0 -122
  263. package/src/components/pages/Rubrique.vue +0 -42
@@ -2,7 +2,7 @@
2
2
  <div class="module-box">
3
3
  <div class="d-flex align-items-center mb-3">
4
4
  <h2 class="big-h2 mb-0">
5
- {{ $t('Share') }}
5
+ {{ $t("Share") }}
6
6
  </h2>
7
7
  <span
8
8
  v-if="authenticated"
@@ -11,7 +11,7 @@
11
11
  tabindex="0"
12
12
  class="saooti-help ms-2"
13
13
  />
14
- <Popover
14
+ <ClassicPopover
15
15
  v-if="authenticated"
16
16
  target="popover-share-help"
17
17
  :title="$t('Help')"
@@ -20,44 +20,42 @@
20
20
  :is-fixed="true"
21
21
  />
22
22
  </div>
23
- <div class="d-flex align-items-center justify-content-between">
24
- <ShareButtonsIntern
25
- :podcast="podcast"
26
- :emission="emission"
27
- :playlist="playlist"
28
- :participant-id="participantId"
29
- :organisation-id="organisationId"
30
- />
31
- </div>
23
+ <ShareButtonsIntern
24
+ :podcast="podcast"
25
+ :emission="emission"
26
+ :playlist="playlist"
27
+ :participant-id="participantId"
28
+ :organisation-id="organisationId"
29
+ />
32
30
  </div>
33
31
  </template>
34
32
 
35
33
  <script lang="ts">
36
- import { Emission } from '@/stores/class/general/emission';
37
- import { Podcast } from '@/stores/class/general/podcast';
38
- import { state } from '../../../stores/ParamSdkStore';
39
- import displayMethods from '../../mixins/displayMethods';
40
- import Popover from '../../misc/Popover.vue';
41
- import ShareButtonsIntern from './ShareButtonsIntern.vue';
42
- import { defineComponent } from 'vue';
43
- import { Playlist } from '@/stores/class/general/playlist';
34
+ import { Emission } from "@/stores/class/general/emission";
35
+ import { Podcast } from "@/stores/class/general/podcast";
36
+ import { state } from "../../../stores/ParamSdkStore";
37
+ import displayMethods from "../../mixins/displayMethods";
38
+ import ClassicPopover from "../../misc/ClassicPopover.vue";
39
+ import ShareButtonsIntern from "./ShareButtonsIntern.vue";
40
+ import { defineComponent } from "vue";
41
+ import { Playlist } from "@/stores/class/general/playlist";
44
42
  export default defineComponent({
45
43
  components: {
46
44
  ShareButtonsIntern,
47
- Popover,
45
+ ClassicPopover,
48
46
  },
49
47
  mixins: [displayMethods],
50
48
  props: {
51
- podcast: { default: undefined, type: Object as ()=> Podcast},
52
- emission: { default: undefined, type: Object as ()=> Emission},
53
- playlist: { default: undefined, type: Object as ()=>Playlist},
54
- participantId: { default: undefined, type: Number},
55
- organisationId: { default: undefined, type: String},
49
+ podcast: { default: undefined, type: Object as () => Podcast },
50
+ emission: { default: undefined, type: Object as () => Emission },
51
+ playlist: { default: undefined, type: Object as () => Playlist },
52
+ participantId: { default: undefined, type: Number },
53
+ organisationId: { default: undefined, type: String },
56
54
  },
57
55
  computed: {
58
56
  authenticated(): boolean {
59
- return (state.generalParameters.authenticated as boolean);
57
+ return state.generalParameters.authenticated as boolean;
60
58
  },
61
59
  },
62
- })
60
+ });
63
61
  </script>
@@ -1,149 +1,146 @@
1
1
  <template>
2
- <div class="d-flex flex-column me-2">
3
- <div class="h4 mb-2">
4
- {{ $t('Social networks') }}
2
+ <div class="d-flex align-items-center justify-content-between">
3
+ <div v-if="!isGarStudent" class="d-flex flex-column me-2">
4
+ <div class="h4 mb-2">
5
+ {{ $t("Social networks") }}
6
+ </div>
7
+ <div class="d-flex align-items-center">
8
+ <template v-for="button in arrayShareButtons" :key="button.title">
9
+ <a
10
+ v-if="button.condition"
11
+ rel="noopener"
12
+ target="_blank"
13
+ :href="button.url"
14
+ :class="getClass(button.className)"
15
+ class="me-2"
16
+ :title="button.title"
17
+ >
18
+ <div :class="button.icon" />
19
+ </a>
20
+ </template>
21
+ </div>
5
22
  </div>
6
- <div class="d-flex align-items-center">
7
- <template
8
- v-for="button in arrayShareButtons"
9
- :key="button.title"
10
- >
11
- <a
12
- v-if="button.condition"
13
- rel="noopener"
14
- target="_blank"
15
- :href="button.url"
16
- :class="getClass(button.className)"
17
- class="me-2"
18
- :title="button.title"
19
- >
20
- <div :class="button.icon" />
21
- </a>
22
- </template>
23
- </div>
24
- </div>
25
- <div
26
- v-if="podcast || emission ||playlist"
27
- class="d-flex flex-column me-2"
28
- >
29
- <div class="h4 mb-2">
30
- {{ $t('Newsletter') }}
31
- </div>
32
- <div class="d-flex align-items-center justify-content-center">
33
- <button
34
- :class="getClass()"
35
- class="saooti-newsletter"
36
- :title="$t('Share newsletter')"
37
- @click="newsletter = true"
38
- />
23
+ <div v-if="podcast || emission || playlist" class="d-flex flex-column me-2">
24
+ <div class="h4 mb-2">
25
+ {{ $t("Newsletter") }}
26
+ </div>
27
+ <div class="d-flex align-items-center justify-content-center">
28
+ <button
29
+ :class="getClass()"
30
+ class="saooti-newsletter"
31
+ :title="$t('Share newsletter')"
32
+ @click="newsletter = true"
33
+ />
34
+ </div>
39
35
  </div>
40
- </div>
41
36
 
42
- <div class="d-flex flex-column me-2">
43
- <div class="h4 mb-2">
44
- {{ $t('QR Code') }}
45
- </div>
46
- <div class="d-flex align-items-center justify-content-center">
47
- <button
48
- :class="getClass()"
49
- :title="$t('Share QR Code')"
50
- class="saooti-qrcode"
51
- @click="qrCode = true"
52
- />
37
+ <div class="d-flex flex-column me-2">
38
+ <div class="h4 mb-2">
39
+ {{ $t("QR Code") }}
40
+ </div>
41
+ <div class="d-flex align-items-center justify-content-center">
42
+ <button
43
+ :class="getClass()"
44
+ :title="$t('Share QR Code')"
45
+ class="saooti-qrcode"
46
+ @click="qrCode = true"
47
+ />
48
+ </div>
53
49
  </div>
54
- </div>
55
50
 
56
- <div class="d-flex flex-column me-2">
57
- <div class="h4 mb-2">
58
- {{ $t('Copy this page URL') }}
59
- </div>
60
- <div class="d-flex align-items-center justify-content-center">
61
- <button
62
- :class="getClass()"
63
- class="saooti-link"
64
- :title="$t('Copy this page URL')"
65
- @click="onCopyCode(urlPage,afterCopy)"
66
- />
51
+ <div class="d-flex flex-column me-2">
52
+ <div class="h4 mb-2">
53
+ {{ $t("Copy this page URL") }}
54
+ </div>
55
+ <div class="d-flex align-items-center justify-content-center">
56
+ <button
57
+ :class="getClass()"
58
+ class="saooti-link"
59
+ :title="$t('Copy this page URL')"
60
+ @click="onCopyCode(urlPage, afterCopy)"
61
+ />
62
+ </div>
67
63
  </div>
68
- </div>
69
64
 
70
- <div
71
- v-if="''!==rssUrl && displayRss"
72
- class="d-flex flex-column me-2"
73
- >
74
- <div class="h4 mb-2">
75
- {{ $t('Rss feed') }}
76
- </div>
77
- <div class="d-flex align-items-center justify-content-center">
78
- <a
79
- rel="noopener"
80
- target="_blank"
81
- class="saooti-rss"
82
- :class="getClass()"
83
- :href="rssUrl"
84
- :title="titleRssButton"
85
- @click.prevent="openPopup()"
86
- />
65
+ <div v-if="'' !== rssUrl && displayRss" class="d-flex flex-column me-2">
66
+ <div class="h4 mb-2">
67
+ {{ $t("Rss feed") }}
68
+ </div>
69
+ <div class="d-flex align-items-center justify-content-center">
70
+ <a
71
+ rel="noopener"
72
+ target="_blank"
73
+ class="saooti-rss"
74
+ :class="getClass()"
75
+ :href="rssUrl"
76
+ :title="titleRssButton"
77
+ @click.prevent="openPopup()"
78
+ />
79
+ </div>
87
80
  </div>
81
+
82
+ <ClipboardModal
83
+ v-if="dataRSSSave"
84
+ :link="rssUrl"
85
+ :emission="emission"
86
+ @close="dataRSSSave = false"
87
+ @copy="afterCopy"
88
+ />
89
+ <NewsletterModal
90
+ v-if="newsletter"
91
+ :closable="true"
92
+ :podcast="podcast"
93
+ :emission="emission"
94
+ :playlist="playlist"
95
+ @close="newsletter = false"
96
+ />
97
+ <QrCodeModal
98
+ v-if="qrCode"
99
+ :closable="true"
100
+ :url-page="urlPage"
101
+ @close="qrCode = false"
102
+ />
103
+ <SnackBar ref="snackbar" position="bottom-left" />
88
104
  </div>
89
-
90
-
91
- <ClipboardModal
92
- v-if="dataRSSSave"
93
- :link="rssUrl"
94
- :emission="emission"
95
- @close="dataRSSSave = false"
96
- @copy="afterCopy"
97
- />
98
- <NewsletterModal
99
- v-if="newsletter"
100
- :closable="true"
101
- :podcast="podcast"
102
- :emission="emission"
103
- :playlist="playlist"
104
- @close="newsletter = false"
105
- />
106
- <QrCodeModal
107
- v-if="qrCode"
108
- :closable="true"
109
- :url-page="urlPage"
110
- @close="qrCode = false"
111
- />
112
- <Snackbar
113
- ref="snackbar"
114
- position="bottom-left"
115
- />
116
105
  </template>
117
106
 
118
107
  <script lang="ts">
119
- import octopusApi from '@saooti/octopus-api';
120
- import { Emission } from '@/stores/class/general/emission';
121
- import { Podcast } from '@/stores/class/general/podcast';
122
- import { state } from '../../../stores/ParamSdkStore';
123
- import Snackbar from '../../misc/Snackbar.vue';
124
- import displayMethods from '../../mixins/displayMethods';
125
- import { defineComponent, defineAsyncComponent } from 'vue';
126
- import { Playlist } from '@/stores/class/general/playlist';
127
- const ClipboardModal = defineAsyncComponent(() => import('../../misc/modal/ClipboardModal.vue'));
128
- const NewsletterModal = defineAsyncComponent(() => import('../../misc/modal/NewsletterModal.vue'));
129
- const QrCodeModal = defineAsyncComponent(() => import('../../misc/modal/QrCodeModal.vue'));
108
+ import { useAuthStore } from "@/stores/AuthStore";
109
+ import { mapState } from "pinia";
110
+ import octopusApi from "@saooti/octopus-api";
111
+ import { Emission } from "@/stores/class/general/emission";
112
+ import { Podcast } from "@/stores/class/general/podcast";
113
+ import { state } from "../../../stores/ParamSdkStore";
114
+ import SnackBar from "../../misc/SnackBar.vue";
115
+ import displayMethods from "../../mixins/displayMethods";
116
+ import { defineComponent, defineAsyncComponent } from "vue";
117
+ import { Playlist } from "@/stores/class/general/playlist";
118
+ const ClipboardModal = defineAsyncComponent(
119
+ () => import("../../misc/modal/ClipboardModal.vue"),
120
+ );
121
+ const NewsletterModal = defineAsyncComponent(
122
+ () => import("../../misc/modal/NewsletterModal.vue"),
123
+ );
124
+ const QrCodeModal = defineAsyncComponent(
125
+ () => import("../../misc/modal/QrCodeModal.vue"),
126
+ );
130
127
  export default defineComponent({
131
128
  components: {
132
129
  ClipboardModal,
133
130
  NewsletterModal,
134
131
  QrCodeModal,
135
- Snackbar,
132
+ SnackBar,
136
133
  },
137
134
 
138
135
  mixins: [displayMethods],
139
136
 
140
137
  props: {
141
- podcast: { default: undefined, type: Object as ()=> Podcast},
142
- emission: { default: undefined, type: Object as ()=> Emission},
143
- playlist: { default: undefined, type: Object as ()=>Playlist},
144
- participantId: { default: undefined, type: Number},
145
- organisationId: { default: undefined, type: String},
146
- isVertical: { default: false, type: Boolean},
138
+ podcast: { default: undefined, type: Object as () => Podcast },
139
+ emission: { default: undefined, type: Object as () => Emission },
140
+ playlist: { default: undefined, type: Object as () => Playlist },
141
+ participantId: { default: undefined, type: Number },
142
+ organisationId: { default: undefined, type: String },
143
+ isVertical: { default: false, type: Boolean },
147
144
  },
148
145
 
149
146
  data() {
@@ -155,64 +152,94 @@ export default defineComponent({
155
152
  };
156
153
  },
157
154
  computed: {
158
- titleRssButton(): string{
159
- if(this.participantId){
160
- return this.$t('Subscribe to this participant');
155
+ ...mapState(useAuthStore, ["isGarStudent"]),
156
+ titleRssButton(): string {
157
+ if (this.participantId) {
158
+ return this.$t("Subscribe to this participant");
161
159
  }
162
- if(this.emission){
163
- return this.$t('Subscribe to this emission');
160
+ if (this.emission) {
161
+ return this.$t("Subscribe to this emission");
164
162
  }
165
- return this.$t('Subscribe to this RSS feed');
163
+ return this.$t("Subscribe to this RSS feed");
166
164
  },
167
- arrayShareButtons(){
165
+ arrayShareButtons() {
168
166
  return [
169
- { title: 'Facebook', icon:'saooti-facebook', className:'btn-facebook', url :`https://www.facebook.com/sharer/sharer.php?u=${this.urlPage}`, condition: true},
170
- { title: 'Twitter', icon:'saooti-twitter', className:'btn-twitter', url :`https://twitter.com/intent/tweet?text=${this.urlPage}`, condition: true},
171
- { title: 'Linkedin', icon:'saooti-linkedin', className:'btn-linkedin', url :`https://www.linkedin.com/sharing/share-offsite/?url=${this.urlPage}`, condition: true},
172
- { title: 'Whatsapp', icon:'saooti-Whatsapp', className:'btn-whatsapp', url :`whatsapp://send?text=${this.urlPage}`, condition: window.matchMedia('(hover: none)').matches}
173
- ]
167
+ {
168
+ title: "Facebook",
169
+ icon: "saooti-facebook",
170
+ className: "btn-facebook",
171
+ url: `https://www.facebook.com/sharer/sharer.php?u=${this.urlPage}`,
172
+ condition: true,
173
+ },
174
+ {
175
+ title: "Twitter",
176
+ icon: "saooti-twitter",
177
+ className: "btn-twitter",
178
+ url: `https://twitter.com/intent/tweet?text=${this.urlPage}`,
179
+ condition: true,
180
+ },
181
+ {
182
+ title: "Linkedin",
183
+ icon: "saooti-linkedin",
184
+ className: "btn-linkedin",
185
+ url: `https://www.linkedin.com/sharing/share-offsite/?url=${this.urlPage}`,
186
+ condition: true,
187
+ },
188
+ {
189
+ title: "Whatsapp",
190
+ icon: "saooti-Whatsapp",
191
+ className: "btn-whatsapp",
192
+ url: `whatsapp://send?text=${this.urlPage}`,
193
+ condition: window.matchMedia("(hover: none)").matches,
194
+ },
195
+ ];
174
196
  },
175
- urlPage(): string{
197
+ urlPage(): string {
176
198
  return window.location.href;
177
199
  },
178
200
  authenticated(): boolean {
179
- return (state.generalParameters.authenticated as boolean);
201
+ return state.generalParameters.authenticated as boolean;
180
202
  },
181
203
  rssUrl(): string {
182
- let api = state.generalParameters.ApiUri+ 'rss/';
183
- if (this.emission){
184
- return api +'emission/' + this.emission.emissionId + '.rss';
204
+ let api = state.generalParameters.ApiUri + "rss/";
205
+ if (this.emission) {
206
+ return api + "emission/" + this.emission.emissionId + ".rss";
185
207
  }
186
- if (this.participantId){
187
- return api +'participant/' + this.participantId + '.rss';
208
+ if (this.participantId) {
209
+ return api + "participant/" + this.participantId + ".rss";
188
210
  }
189
- if (this.organisationId){
190
- return api +'productor/' + this.organisationId + '.rss';
211
+ if (this.organisationId) {
212
+ return api + "productor/" + this.organisationId + ".rss";
191
213
  }
192
- if(this.playlist){
193
- return api +'playlist/' + this.playlist.playlistId + '.rss';
214
+ if (this.playlist) {
215
+ return api + "playlist/" + this.playlist.playlistId + ".rss";
194
216
  }
195
- return '';
217
+ return "";
196
218
  },
197
219
  },
198
- async created(){
199
- if(this.organisationId || this.participantId){
200
- this.displayRss = await octopusApi.fetchDataPublic<boolean>(0,`rss/participants/allowed/${this.organisationId}`);
201
- }else{
220
+ async created() {
221
+ if (this.organisationId || this.participantId) {
222
+ this.displayRss = await octopusApi.fetchDataPublic<boolean>(
223
+ 0,
224
+ `rss/participants/allowed/${this.organisationId}`,
225
+ );
226
+ } else {
202
227
  this.displayRss = true;
203
228
  }
204
229
  },
205
230
 
206
231
  methods: {
207
- getClass(className='btn-rss'): string{
232
+ getClass(className = "btn-rss"): string {
208
233
  return `btn ${className} share-btn mb-2 text-dark`;
209
234
  },
210
235
  openPopup(): void {
211
236
  this.dataRSSSave = !this.dataRSSSave;
212
237
  },
213
- afterCopy(): void{
214
- (this.$refs.snackbar as InstanceType<typeof Snackbar>).open(this.$t('Link in clipboard'));
238
+ afterCopy(): void {
239
+ (this.$refs.snackbar as InstanceType<typeof SnackBar>).open(
240
+ this.$t("Link in clipboard"),
241
+ );
215
242
  },
216
243
  },
217
- })
244
+ });
218
245
  </script>